android - plugin - ionic ble write



Android Bluetooth Low Energy Verbindungsanforderung nicht gesendet? (0)

Wir versuchen, die Verbindung zu einem Peripheriegerät zu trennen. Mit einem Bluetooth-Sniffer wird jedoch kein LL_TERMINATE_IND Paket LL_TERMINATE_IND . Stattdessen scheint das Telefon weiterhin Empty PDU für weitere 20 Sekunden an das Peripheriegerät zu senden.

Wir verwenden das folgende Cordova BLE-Plugin: https://github.com/don/cordova-plugin-blecentral

Die Trennmethode ist hier: https://github.com/don/cordova-plugin-ble-central#/L74

Wir haben auch versucht, eine explizite gatt.disconnect() vor gatt.close() wie unten gatt.close() , aber es schien keinen Unterschied zu machen:

public void disconnect() {
    connectCallback = null;
    connected = false;
    if (gatt != null) {
        gatt.disconnect();
        gatt.close();
        gatt = null;
    }
}

Hier ist das relevante adb Protokoll. Es gibt einen Fehler im AdB-Protokoll "Kontext nicht gefunden", der verwandt sein könnte? Dies scheint jedoch direkt nach onDisconnected () zu sein.

04-15 16:25:34.931 24199 24199 I chromium: [INFO:CONSOLE(79263)] "ble:store       > Handle dispatch DOOR_DISCONNECT", source: file:///android_asset/www/js/bundle.js (79263)
04-15 16:25:34.931 24199 24199 I chromium: [INFO:CONSOLE(79263)] "ble:connecting  > § 20", source: file:///android_asset/www/js/bundle.js (79263)
04-15 16:25:34.932 24199 24274 D BluetoothGatt: close()
04-15 16:25:34.932 24199 24274 D BluetoothGatt: unregisterApp() - mClientIf=5
04-15 16:25:34.933  1886  9721 D BtGatt.GattService: unregisterClient() - clientIf=5
04-15 16:25:34.934  1886  2019 W bt_btif : bta_gattc_conn_cback() - cif=3 connected=0 conn_id=3 reason=0x0016
04-15 16:25:34.934  1886  2019 W bt_btif : bta_gattc_conn_cback() - cif=4 connected=0 conn_id=4 reason=0x0016
04-15 16:25:34.934  1886  2019 W bt_btif : bta_gattc_conn_cback() - cif=5 connected=0 conn_id=5 reason=0x0016
04-15 16:25:34.944  1886  1924 D BtGatt.GattService: onDisconnected() - clientIf=5, connId=5, address=00:A0:00:00:00:14
04-15 16:25:34.944  1886  1924 E BtGatt.ContextMap: Context not found for ID 5
04-15 16:25:34.948 24199 24199 I chromium: [INFO:CONSOLE(79270)] "ble:connecting  > _disconnectFromDoor success", source: file:///android_asset/www/js/bundle.js (79270)
04-15 16:25:34.952 24199 24199 I chromium: [INFO:CONSOLE(79263)] "ble:store       > Handle dispatch DOOR_DISCONNECT_SUCCESS", source: file:///android_asset/www/js/bundle.js (79263)

Und hier sieht das Bluetooth-Sniffing aus (mit viel mehr davon):

Es besteht die Möglichkeit, dass das Peripheriegerät an diesem Punkt eingeschlafen ist (dies geschieht aus Gründen der Akkulaufzeit). Das würde für mich einen Sinn ergeben, warum das Telefon immer nur Empty PDU sendet, aber sollten wir die Disconnection-Anfrage immer noch über den Äther hören?





bluetooth