-/*
+/*
* Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
*
* Licensed under the Apache License, Version 2.0 (the License);
{
_adapterLeScanResultChangedCallback = (int result, ref BluetoothLeScanDataStruct scanData, IntPtr userData) =>
{
- Log.Info(Globals.LogTag, "Inside scan callback " );
+ Log.Info(Globals.LogTag, "Inside Le scan callback " );
BluetoothLeScanData scanDataInfo = new BluetoothLeScanData();
scanDataInfo = BluetoothUtils.ConvertStructToLeScanData(scanData, scanDataInfo);
scanDataStruct.RemoteAddress = scanData.RemoteAddress;
scanDataStruct.AddressType = scanData.AddressType;
scanDataStruct.Rssi = scanData.Rssi;
- scanDataStruct.AdvDataLength = scanData.AdvDataLength;
- scanDataStruct.AdvData = Marshal.AllocHGlobal(scanData.AdvDataLength);
- Marshal.Copy (scanData.AdvData, 0, scanDataStruct.AdvData, scanData.AdvDataLength);
+ if (scanData.AdvDataLength > 0)
+ {
+ scanDataStruct.AdvDataLength = scanData.AdvDataLength;
+ scanDataStruct.AdvData = Marshal.AllocHGlobal(scanData.AdvDataLength);
+ Marshal.Copy(scanData.AdvData, 0, scanDataStruct.AdvData, scanData.AdvDataLength);
+ }
- scanDataStruct.ScanDataLength = scanData.ScanDataLength;
- scanDataStruct.ScanData = Marshal.AllocHGlobal(scanData.ScanDataLength);
- Marshal.Copy (scanData.ScanData, 0, scanDataStruct.ScanData, scanData.ScanDataLength);
+ if (scanData.ScanDataLength > 0)
+ {
+ scanDataStruct.ScanDataLength = scanData.ScanDataLength;
+ scanDataStruct.ScanData = Marshal.AllocHGlobal(scanData.ScanDataLength);
+ Marshal.Copy(scanData.ScanData, 0, scanDataStruct.ScanData, scanData.ScanDataLength);
+ }
int ret = Interop.Bluetooth.GetScanResultServiceUuid(ref scanDataStruct, packetType,
ref uuidListArray, ref count);
if (ret != (int)BluetoothError.None)
{
Log.Info(Globals.LogTag, "Failed to service uuids list- " + (BluetoothError)ret);
- BluetoothErrorFactory.ThrowBluetoothException(ret);
}
Log.Info(Globals.LogTag, "count of uuids : " + count);
int ret = Interop.Bluetooth.GetLeScanResultDeviceName(ref scanDataStruct, packetType, out deviceName);
if (ret != (int)BluetoothError.None) {
Log.Error(Globals.LogTag, "Failed to get Device name- " + (BluetoothError)ret);
- BluetoothErrorFactory.ThrowBluetoothException(ret);
}
Log.Info (Globals.LogTag, "Device name " + deviceName);
return deviceName;
int ret = Interop.Bluetooth.GetScanResultTxPowerLevel(ref scanDataStruct, packetType, out powerLevel);
if (ret != (int)BluetoothError.None) {
Log.Error(Globals.LogTag, "Failed to get tx power level- " + (BluetoothError)ret);
- BluetoothErrorFactory.ThrowBluetoothException(ret);
}
Log.Info (Globals.LogTag, "TxPowerLevel is --- " + powerLevel);
return powerLevel;
int ret = Interop.Bluetooth.GetScaResultSvcSolicitationUuids(ref scanDataStruct, packetType, out uuidListArray, out count);
if (ret != (int)BluetoothError.None) {
Log.Error(Globals.LogTag, "Failed to get service solicitation uuids " + (BluetoothError)ret);
- BluetoothErrorFactory.ThrowBluetoothException(ret);
}
IntPtr[] uuidList = new IntPtr[count];
if(ret != (int)BluetoothError.None)
{
Log.Error(Globals.LogTag, "Failed to get Service Data List, Error - " + (BluetoothError)ret);
- BluetoothErrorFactory.ThrowBluetoothException(ret);
}
BluetoothLeServiceDataStruct[] serviceArray = new BluetoothLeServiceDataStruct[_serviceListCount];
int ret = Interop.Bluetooth.GetScanResultAppearance(ref scanDataStruct, packetType, out appearance);
if (ret != (int)BluetoothError.None) {
Log.Error(Globals.LogTag, "Failed to get Appearance value- " + (BluetoothError)ret);
- BluetoothErrorFactory.ThrowBluetoothException(ret);
}
return appearance;
}
if (ret != (int)BluetoothError.None)
{
Log.Error(Globals.LogTag, "Failed to get Manufacturer data - " + (BluetoothError)ret);
- BluetoothErrorFactory.ThrowBluetoothException(ret);
}
Marshal.Copy (manufData, data.Data, 0, data.DataLength);
-/*
+/*
* Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
*
* Licensed under the Apache License, Version 2.0 (the License);
scanData.AddressType = structScanData.AddressType;
scanData.Rssi = structScanData.Rssi;
- scanData.AdvDataLength = structScanData.AdvDataLength;
- scanData.AdvData = new byte[scanData.AdvDataLength];
- Marshal.Copy (structScanData.AdvData, scanData.AdvData, 0, scanData.AdvDataLength);
-
- scanData.ScanDataLength = structScanData.ScanDataLength;
- scanData.ScanData = new byte[scanData.ScanDataLength];
- Marshal.Copy (structScanData.ScanData, scanData.ScanData, 0, scanData.ScanDataLength);
+ if (structScanData.AdvDataLength > 0)
+ {
+ scanData.AdvDataLength = structScanData.AdvDataLength;
+ scanData.AdvData = new byte[scanData.AdvDataLength];
+ Marshal.Copy (structScanData.AdvData, scanData.AdvData, 0, scanData.AdvDataLength);
+ }
+ if (structScanData.ScanDataLength > 0)
+ {
+ scanData.ScanDataLength = structScanData.ScanDataLength;
+ scanData.ScanData = new byte[scanData.ScanDataLength];
+ Marshal.Copy (structScanData.ScanData, scanData.ScanData, 0, scanData.ScanDataLength);
+ }
return scanData;
}
scanDataStruct.AddressType = scanData.AddressType;
scanDataStruct.Rssi = scanData.Rssi;
- scanDataStruct.AdvDataLength = scanData.AdvDataLength;
- scanDataStruct.AdvData = Marshal.AllocHGlobal (scanData.AdvDataLength);
- Marshal.Copy (scanData.AdvData, 0, scanDataStruct.AdvData, scanData.AdvDataLength);
+ if (scanData.AdvDataLength > 0)
+ {
+ scanDataStruct.AdvDataLength = scanData.AdvDataLength;
+ scanDataStruct.AdvData = Marshal.AllocHGlobal(scanData.AdvDataLength);
+ Marshal.Copy (scanData.AdvData, 0, scanDataStruct.AdvData, scanData.AdvDataLength);
+ }
- scanDataStruct.ScanDataLength = scanData.ScanDataLength;
- scanDataStruct.ScanData = Marshal.AllocHGlobal (scanData.ScanDataLength);
- Marshal.Copy (scanData.ScanData, 0, scanDataStruct.ScanData, scanData.ScanDataLength);
+ if (scanData.ScanDataLength > 0)
+ {
+ scanDataStruct.ScanDataLength = scanData.ScanDataLength;
+ scanDataStruct.ScanData = Marshal.AllocHGlobal(scanData.ScanDataLength);
+ Marshal.Copy (scanData.ScanData, 0, scanDataStruct.ScanData, scanData.ScanDataLength);
+ }
return scanDataStruct;
}