public override void OnScanResult(ScanCallbackType callbackType, ScanResult result) { base.OnScanResult(callbackType, result); /* Might want to transition to parsing the API21+ ScanResult, but sort of a pain for now * List<AdvertisementRecord> records = new List<AdvertisementRecord>(); * records.Add(new AdvertisementRecord(AdvertisementRecordType.Flags, BitConverter.GetBytes(result.ScanRecord.AdvertiseFlags))); * if (!string.IsNullOrEmpty(result.ScanRecord.DeviceName)) * { * records.Add(new AdvertisementRecord(AdvertisementRecordType.CompleteLocalName, Encoding.UTF8.GetBytes(result.ScanRecord.DeviceName))); * } * for (int i = 0; i < result.ScanRecord.ManufacturerSpecificData.Size(); i++) * { * int key = result.ScanRecord.ManufacturerSpecificData.KeyAt(i); * var arr = result.ScanRecord.GetManufacturerSpecificData(key); * byte[] data = new byte[arr.Length + 2]; * BitConverter.GetBytes((ushort)key).CopyTo(data,0); * arr.CopyTo(data, 2); * records.Add(new AdvertisementRecord(AdvertisementRecordType.ManufacturerSpecificData, data)); * } * * foreach(var uuid in result.ScanRecord.ServiceUuids) * { * records.Add(new AdvertisementRecord(AdvertisementRecordType.UuidsIncomplete128Bit, uuid.Uuid.)); * } * * foreach(var key in result.ScanRecord.ServiceData.Keys) * { * records.Add(new AdvertisementRecord(AdvertisementRecordType.ServiceData, result.ScanRecord.ServiceData)); * }*/ var device = new Device(_adapter, result.Device, null, result.Rssi, result.ScanRecord.GetBytes()); //Device device; //if (result.ScanRecord.ManufacturerSpecificData.Size() > 0) //{ // int key = result.ScanRecord.ManufacturerSpecificData.KeyAt(0); // byte[] mdata = result.ScanRecord.GetManufacturerSpecificData(key); // byte[] mdataWithKey = new byte[mdata.Length + 2]; // BitConverter.GetBytes((ushort)key).CopyTo(mdataWithKey, 0); // mdata.CopyTo(mdataWithKey, 2); // device = new Device(result.Device, null, null, result.Rssi, mdataWithKey); //} //else //{ // device = new Device(result.Device, null, null, result.Rssi, new byte[0]); //} _adapter.HandleDiscoveredDevice(device); }
public void OnLeScan(BluetoothDevice bleDevice, int rssi, byte[] scanRecord) { Trace.Message("Adapter.LeScanCallback: " + bleDevice.Name); _adapter.HandleDiscoveredDevice(new Device(_adapter, bleDevice, null, rssi, scanRecord)); }