private static void UpdateNotification() { if (!s_isInitialized) { return; } int deviceNum = DllInterface.GetConnectDeviceNum(); for (int i = 0; i < deviceNum; ++i) { ulong addr = DllInterface.GetConnectDeviceAddr(i); string identifier = DeviceAddressDatabase.GetAddressStr(addr); int num = DllInterface.GetDeviceNotificateNum(addr); //Debug.Log("UpdateNotification " + identifier + "::" +num + " " + i + "/" + deviceNum ); for (int j = 0; j < num; ++j) { var data = DllInterface.GetDeviceNotificateData(addr, j); var serviceHandle = DllInterface.GetDeviceNotificateServiceUuid(addr, j); var charastricHandle = DllInterface.GetDeviceNotificateCharastricsUuid(addr, j); string serviceUUID = UuidDatabase.GetUuidStr(serviceHandle); string characteristicUUID = UuidDatabase.GetUuidStr(charastricHandle); var key = new BleCharastericsKeyInfo(identifier, serviceUUID, characteristicUUID); BleNotifyData bleNotifyData; if (s_notifyEvents.TryGetValue(key, out bleNotifyData)) { if (bleNotifyData.notifiedCharacteristicAction != null) { bleNotifyData.notifiedCharacteristicAction(serviceUUID, characteristicUUID, data); } } } } }
private static void UpdateDeviceConnectEvents() { if (!s_isInitialized) { return; } s_allreadyCallServiceBuffer.Clear(); // update connect Event int deviceNum = DllInterface.GetConnectDeviceNum(); //Debug.Log("UpdateDeviceConnectEvents " + deviceNum); for (int i = 0; i < deviceNum; ++i) { var addr = DllInterface.GetConnectDeviceAddr(i); string identifier = DeviceAddressDatabase.GetAddressStr(addr); BleDiscoverEvents bleDiscoverEvents; if (!s_deviceDiscoverEvents.TryGetValue(identifier, out bleDiscoverEvents)) { continue; } if (bleDiscoverEvents.callDiscoverEvent) { continue; } if (bleDiscoverEvents.connectedAct != null) { bleDiscoverEvents.connectedAct(identifier); } var deviceHandle = DllInterface.GetConnectDevicePtr(i); int chNum = DllInterface.GetDeviceCharastricsNum(deviceHandle); for (int j = 0; j < chNum; ++j) { var serviceHandle = DllInterface.GetDeviceCharastricServiceUuid(deviceHandle, j); var charaHandle = DllInterface.GetDeviceCharastricUuid(deviceHandle, j); var serviceUuidStr = UuidDatabase.GetUuidStr(serviceHandle); var charaUuidStr = UuidDatabase.GetUuidStr(charaHandle); if (!s_allreadyCallServiceBuffer.Contains(serviceUuidStr)) { if (bleDiscoverEvents.discoveredServiceAct != null) { bleDiscoverEvents.discoveredServiceAct(identifier, serviceUuidStr); } s_allreadyCallServiceBuffer.Add(serviceUuidStr); } if (bleDiscoverEvents.discoveredCharacteristicAct != null) { bleDiscoverEvents.discoveredCharacteristicAct(identifier, serviceUuidStr, charaUuidStr); } } bleDiscoverEvents.callDiscoverEvent = true; } }