Пример #1
0
        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);
                        }
                    }
                }
            }
        }
Пример #2
0
        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;
            }
        }