Центральный - Периферийный / Клиент - Серверная архитектура, связь BLE Tizen Носимый с iOS не работает - PullRequest
0 голосов
/ 17 октября 2019

Мое требование - создать приложение, которое может передавать данные / текст из Tizen Wearable в приложение iOS. Чтобы выполнить это требование, я создал коммуникационную архитектуру BLE, то есть центральную периферию. Итак, проблема здесь такова:

  1. iOS Central - периферийное устройство Tizen: в этом периферийном устройстве Tizen зарегистрируйте сервис для адаптера и объявите тот же сервис для сканирования. Я получил рекламируемую услугу на центральной станции, но зарегистрированная служба не была получена на центральной стороне, когда я сканировал услуги. Вот некоторый код:
var adapter2 = tizen.bluetooth.getDefaultAdapter();

var CHAT_SERVICE_UUID = "5BCE9431-6C75-32AB-AFE0-2EC108A30860";



function chatServiceSuccessCb(recordHandler)

{

  console.log("Chat service registration succeeds!");

  chatServiceHandler = recordHandler;

}



function publishChatService()

{

  adapter2.registerRFCOMMServiceByUUID(CHAT_SERVICE_UUID, "Chat service", chatServiceSuccessCb,

      function(e)

      {

        console.log("Could not register service record, Error: " + e.message);

      });

}



publishChatService();



var adapter = tizen.bluetooth.getLEAdapter();

var advertiseData = new tizen.BluetoothLEAdvertiseData({

    includeName: true,

    uuids: [CHAT_SERVICE_UUID]

});

var connectable = true;

adapter.startAdvertise(advertiseData, 'ADVERTISE', function onstate(state) {

    console.log('Advertising configured: ' + state);

}, function(error) {

    console.log('startAdvertise() failed: ' + error.message);

}, 'LOW_LATENCY', connectable);
Периферия iOS - Tizen Central: На этот раз я создал периферию на iOS, создал тот же сервис, рекламировал сервис. Я получил рекламируемые данные на стороне Tizen. Я подключаюсь к удаленному устройству, прослушиватель соединения успешно вызван. Теперь, когда я пытаюсь подключиться к услуге, я получаю исключение, т.е. исключение, не связанное с устройством.

В коде remoteDevice.getService (remoteDevice.uuids [0]) создайте исключение, в то время как remoteDevice.addConnectStateChangeListener (onConnectionStateChange);эти слушатели никогда не звонят.

Вот некоторый код:

function connectFail(error) {

    console.log('Failed to connect to device: ' + error.message);

}



function connectSuccess() {

    console.log('Connected to device');

    var serviceUUIDs = remoteDevice.uuids;

    console.log('total number of services found here are: ' + serviceUUIDs.length);

    service = remoteDevice.getService(remoteDevice.uuids[0]);

    console.log('flag next step 1');

}



function onerror(e)

{

  console.log("Error occurred: " + e.message);

}



function onDeviceFound(device)

{

  console.log("Found new device: " + device.name);

  var onConnectionStateChange =

  {

    onconnected: function(device)

    {

            heartrateVal.innerHTML = 'connected';

      console.log("Device " + device.name + " connected");

    },

    ondisconnected: function(device)

    {

      console.log("Device " + device.name + " disconnected");

      device.removeConnectStateChangeListener(listenerID);

    }

  };



  if (device.name === "aBcD")

  {

    remoteDevice = device

    console.log("Found required device: " + device.name);

    listenerID = remoteDevice.addConnectStateChangeListener(onConnectionStateChange);

    remoteDevice.connect(connectSuccess, connectFail);

    adapter.stopScan();

  }

}



var adapter = tizen.bluetooth.getLEAdapter();

var listenerID = null;

adapter.startScan(onDeviceFound, onerror);

Я протестировал свое приложение iOS с другим приложением для iOS, а также с Android-приложением, которое работает нормально. Но с тизен я сталкиваюсь с этими проблемами. Я не уверен, что есть какие-либо проблемы в Tizen SDK или Tizen BLE, которые работают не так, как iOS и Android.

Примечание. Весь вышеупомянутый код взят из примеров Tizen и спецификаций API. Вот несколько ссылок:

https://developer.tizen.org/dev-guide/2.3.1/org.tizen.sampledescriptions/html/mobile_w/bluetoothchat_mw.htm

https://developer.tizen.org/development/guides/web-application/connectivity-and-wireless/bluetooth

Заранее спасибо.

1 Ответ

0 голосов
/ 23 октября 2019

Для вашего сценария нет. 1: Tizen Bluetooth API не обеспечивает поддержку API сервера GATT. Вы использовали API для RFCOMM (сокет) API - registerRFCOMMServiceByUUID, который не является частью стандарта с низким энергопотреблением. Это причина, почему ваш первый сценарий не работает. Для функций сервера GATT вы можете использовать собственный API

Для сценария №. 2: я попытался воспроизвести этот сценарий с часами S4 и телефоном Android, и обратный вызов соединения (и слушатель) работал как ожидалось. Пожалуйста, уточните, какие устройства вы используете, тогда воспроизведение будет проще.

...