private void OnAdvertisementPacketReceived(object sender, BLEAdvertisementPacketArgs e) { if (_invokeAction != null) { _invokeAction(() => { ReceivedAdvertisement(e.Data); }); } else { ReceivedAdvertisement(e.Data); } }
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); }
private void ScanCallback_OnAdvertisementPacketReceived(object sender, BLEAdvertisementPacketArgs e) { AdvertisementPacketReceived?.Invoke(this, e); }