Как я могу получить доступ к массиву периферийных устройств и RSSI из моего пакета Swift Dependency к другому проекту - PullRequest
0 голосов
/ 07 ноября 2019

Я создал свой собственный менеджер пакетов Swift, который имеет функциональные возможности Corebluetooth, и у меня есть другой проект, который вызывает менеджер пакетов Swift для любых функций corebluetooth.

У меня есть несколько вопросов, которые перечислены ниже:

  1. Есть ли способ получить доступ к имени периферии и RSSI из моего проекта с помощью зависимости пакета Swift?

  2. Как заполнить список периферийных устройств? устройства с RSSI в моем проекте с использованием swiftUI?

Код для пакета BLE приведен ниже, и я только что вставил инициализаторы проекта

Инициализаторы:

public var RSSIs = [NSNumber]() // initialized variable named RSSIs and array is created
public var peripherals_list = [String]() // initialized peripherals as an array
public var peripheralListAny = [CBPeripheral]()

Код для CentralManager DidUpdateState

    /*
     Invoked when the central manager’s state is updated.
     The Central Manager starts to scan for peripheral if Bluetooth is activated.
     */

    public func centralManagerDidUpdateState(_ central: CBCentralManager) {

        print("state: \(self.getStateString())")
        guard central.state  == .poweredOn else {
            self.showStateAlert = false
            print("Bluetooth Enabled")
            return
        }
        self.startContinuousScan() // When Bluetooth is on the startScan function is called
    }

     /*
     Starts single scanning for BLE devices with product UUID
     */

    func startSingleScan() {
        print("Now Scanning...")
        self.centralManager?.scanForPeripherals(
            withServices: self.productId , options: [
                CBCentralManagerScanOptionAllowDuplicatesKey: false])
    }
    /*
     Starts a continuous scan with the timer intervals of 5 seconds
     and calls single scan and it repeats
     */

    func startContinuousScan() {
        Timer.scheduledTimer(withTimeInterval: 2, repeats: true) {_ in
            self.startSingleScan() //Starts scanning for peripherals
        }
    }

Код для CentralManager didDiscover периферийные устройства:

public func centralManager(_ central: CBCentralManager, didDiscover peripheral: CBPeripheral, advertisementData: [String : Any], rssi RSSI: NSNumber) -> (peripheralName: [String], RssiValues: [NSNumber]) {

        self.peripheralListAny = [peripheral]
        print ("PeripheralListANY: \(peripheralListAny)")
        print("******************************************")
        self.RSSIs.append(RSSI) // RSSI values are appended in the array
        print("RSSI: \(RSSIs)")
        print("******************************************")
        self.peripherals_list.append(peripheral.name!) // peripherals list is got from CB peripheral and is appended in an array
        print("Peripheral List \(peripherals_list)")
        print("******************************************")
        print("Peripheral Print: \(peripheral)")
        print("Print Peripheral's Name: \(peripheral.name!)")
        return (peripherals_list,RSSIs)
    }

Инициализаторы для ListView

@EnvironmentObject var ble: BLE
@State var peripheralsList = [] // initialized peripherals as an array
@State var rssiValues = []
...