Существует ли гарантированный порядок при написании характеристик для периферийных устройств?

#ios #swift #bluetooth-lowenergy #core-bluetooth

#iOS #swift #bluetooth-низкое энергопотребление #ядро-bluetooth

Вопрос:

Я пытаюсь понять, есть ли какой-либо порядок в том, как пакеты BLE отправляются с устройства iOS с использованием CoreBluetooth на подключенные периферийные устройства.

У меня есть два периферийных устройства, подключенных к устройству iOS, и они могут успешно выполнять запись в характеристику на обоих периферийных устройствах. Эта характеристика приводит к тому, что сигнал на периферийных устройствах становится высоким или низким.

Я включаю характеристики упорядоченным образом (A, затем B), а затем отключаю их в том же порядке.

 toggleState(peripheral: primary, stateChar: g1StateChar, state: true)
toggleState(peripheral: secondary, stateChar: g2StateChar, state: true)
sleep(1)
toggleState(peripheral: primary, stateChar: g1StateChar, state: false)
toggleState(peripheral: secondary, stateChar: g2StateChar, state: false)

func toggleState(peripheral: CBPeripheral, stateChar: CBCharacteristic, state: Bool) {

    var devState = "S"

    //S for Stop, A for Active
    if(state){
        devState = "S"
    } else {
        devState = "A"
    }

    let newState = Data(devState.utf8)
    //Transmit new State of System

    peripheral.writeValue(newState, for: stateChar, type: CBCharacteristicWriteType.withResponse)
}
  

Что я ожидаю увидеть, так это сигнал, связанный с максимумом A, за которым следует сигнал, связанный с B, разделенный примерно 7,5 мс, поскольку периферийные устройства запрограммированы на использование интервала подключения в 7,5 мс.

На самом деле наблюдается то, что во многих случаях имеет место описанное выше, но в других случаях сигнал B сначала становится высоким, а через 22 мс — повышенным.