Exemplo n.º 1
0
 private void OnAdvertisementPacketReceived(object sender, BLEAdvertisementPacketArgs e)
 {
     if (_invokeAction != null)
     {
         _invokeAction(() => { ReceivedAdvertisement(e.Data); });
     }
     else
     {
         ReceivedAdvertisement(e.Data);
     }
 }
Exemplo n.º 2
0
        public override void DiscoveredPeripheral(CBCentralManager central, CBPeripheral peripheral, NSDictionary advertisementData, NSNumber RSSI)
        {
            Debug.WriteLine($"Cocoa peripheral {peripheral}");
            Debug.WriteLine($"Cocoa advertisementData {advertisementData}");
            Debug.WriteLine($"Cocoa RSSI {RSSI}");

            var bLEAdvertisementPacket = new BLEAdvertisementPacket()
            {
                Advertisement = new BLEAdvertisement()
                {
                    LocalName        = peripheral.Name,
                    ServiceUuids     = new List <Guid>(),
                    DataSections     = new List <BLEAdvertisementDataSection>(),
                    ManufacturerData = new List <BLEManufacturerData>()
                },
                AdvertisementType      = BLEAdvertisementType.ScanResponse,
                BluetoothAddress       = (ulong)peripheral.Identifier.GetHashCode(),
                RawSignalStrengthInDBm = RSSI.Int16Value,
                Timestamp = DateTimeOffset.Now
            };

            //https://developer.apple.com/documentation/corebluetooth/cbadvertisementdataserviceuuidskey
            //if (advertisementData.ContainsKey(CBAdvertisement.DataServiceUUIDsKey))
            //{
            //    bLEAdvertisementPacket.Advertisement.ServiceUuids.Add(
            //        item: new BLEManufacturerData(packetType: BLEPacketType.UUID16List,
            //                                      data: (advertisementData[CBAdvertisement.DataServiceUUIDsKey])));
            //}

            //https://developer.apple.com/documentation/corebluetooth/cbadvertisementdataservicedatakey
            //if (advertisementData.ContainsKey(CBAdvertisement.DataServiceDataKey))
            //{
            //    bLEAdvertisementPacket.Advertisement.DataSections.Add(
            //        item: new BLEManufacturerData(packetType: BLEPacketType.ServiceData,
            //                                      data: advertisementData[CBAdvertisement.DataServiceDataKey]));
            //}

            //https://developer.apple.com/documentation/corebluetooth/cbadvertisementdatamanufacturerdatakey
            if (advertisementData.ContainsKey(CBAdvertisement.DataManufacturerDataKey))
            {
                bLEAdvertisementPacket.Advertisement.ManufacturerData.Add(
                    item: new BLEManufacturerData(packetType: BLEPacketType.ManufacturerData,
                                                  data: (advertisementData[CBAdvertisement.DataManufacturerDataKey]
                                                         as NSData).ToArray()));
            }

            // Missing CBAdvertisement.DataTxPowerLevelKey

            var bLEAdvertisementPacketArgs = new BLEAdvertisementPacketArgs(data: bLEAdvertisementPacket);

            OnAdvertisementPacketReceived?.Invoke(this, bLEAdvertisementPacketArgs);
        }
Exemplo n.º 3
0
 private void ScanCallback_OnAdvertisementPacketReceived(object sender, BLEAdvertisementPacketArgs e)
 {
     AdvertisementPacketReceived?.Invoke(this, e);
 }