//---- internal static ClassOfDevice ToClassOfDevice(byte[] p) { uint codI = (uint)p[0] + 256 * ((uint)p[1] + 256 * (uint)p[2]); var cod = new ClassOfDevice(codI); return(cod); }
//---- // Use factory method to create. private BluezDeviceInfo(BluezFactory fcty, BluetoothAddress addr) { Debug.Assert(fcty != null, "ArgNull"); _fcty = fcty; Debug.Assert(addr != null, "ArgNull"); _addr = addr; _cod = new ClassOfDevice(0); }
ClassOfDevice GetClassOfDevice() { if (_cod == 0) { _cod = ClassOfDeviceHelper.ToClassOfDevice(_device.BluetoothClass); } return(_cod); }
public void Ctor2_NoSc() { var cod = new ClassOfDevice(DeviceClass.CellPhone, ServiceClass.None); Assert.AreEqual(DeviceClass.CellPhone, cod.Device, "D"); Assert.AreEqual(ServiceClass.None, cod.Service, "S"); // Assert.AreEqual(DeviceClass.Phone, cod.MajorDevice, "MD"); }
static StuffRadio Create_Radio_A(Params p) { var stuff = new StuffRadio(); //. const uint StackId = 1; var addrBytes = new byte[] { 0xA4, 0x24, 0x4C, 0x98, 0x24, 0x08 }; var ExpectedAddress = BluetoothAddress.Parse("08:24:98:4C:24:A4"); var nameBytes = new byte[] { (byte)'A', (byte)'b', (byte)'c', 0 }; var ExpectedName = "Abc"; var codStruct = (uint)0x20104; var ExpectedCod = new ClassOfDevice(0x20104); // BluetopiaTesting.InitMockery(stuff, StackId); Expect.Once.On(stuff.MockedApi).Method("GAP_Query_Local_BD_ADDR") .With(StackId, new byte[6]) .Will( FillArrayIndexedParameterAction.Fill(1, addrBytes, true), Return.Value(BluetopiaError.OK)); Expect.Once.On(stuff.MockedApi).Method("GAP_Query_Local_Device_Name") .With(StackId, 248, new byte[248]) .Will( FillArrayIndexedParameterAction.Fill(2, nameBytes, false), Return.Value(BluetopiaError.OK)); Expect.Once.On(stuff.MockedApi).Method("GAP_Query_Class_Of_Device") .With(StackId, Is.Out) .Will( new SetIndexedParameterAction(1, codStruct), Return.Value(BluetopiaError.OK)); if (p.AccessesVersionsOrManufacturer) { Expect.Once.On(stuff.MockedApi).Method("HCI_Read_Local_Version_Information") .With(StackId, Is.Out, Is.Out, Is.Out, Is.Out, Is.Out, Is.Out) .Will( new SetIndexedParameterAction(1, (StackConsts.HCI_ERROR_CODE) 0), new SetIndexedParameterAction(2, (HciVersion)0), new SetIndexedParameterAction(3, (UInt16)0), new SetIndexedParameterAction(4, (LmpVersion)0), new SetIndexedParameterAction(5, Manufacturer.Zeevo), new SetIndexedParameterAction(6, (UInt16)0), Return.Value(BluetopiaError.OK)); } //-- BluetopiaTesting.HackAllowShutdownCall(stuff.MockedApi); BluetopiaFactory fcty = new BluetopiaFactory(stuff.MockedApi); IBluetoothRadio r = stuff.Radio = fcty.DoGetPrimaryRadio(); Assert.AreEqual(Manufacturer.StonestreetOne, r.SoftwareManufacturer, "SoftwareManufacturer"); Assert.AreEqual(ExpectedAddress, r.LocalAddress, "LocalAddress"); Assert.AreEqual(ExpectedName, r.Name, "Name"); Assert.AreEqual(ExpectedCod, r.ClassOfDevice, "ClassOfDevice"); // return(stuff); }
internal BluesoleilRadio(BluesoleilFactory fcty) { _fcty = fcty; _fcty.SdkInit(); BtSdkError retAddr, ret; byte[] bd_addr = new byte[StackConsts.BTSDK_BDADDR_LEN]; ret = retAddr = _fcty.Api.Btsdk_GetLocalDeviceAddress(bd_addr); BluesoleilUtils.Assert(retAddr, "Btsdk_GetLocalDeviceAddress"); if (ret == BtSdkError.OK) { _addr = BluesoleilUtils.ToBluetoothAddress(bd_addr); } else { _addr = BluetoothAddress.None; } // byte[] arr = new byte[500]; UInt16 len = checked ((UInt16)arr.Length); ret = _fcty.Api.Btsdk_GetLocalName(arr, ref len); if (retAddr == BtSdkError.OK) { BluesoleilUtils.Assert(ret, "Btsdk_GetLocalName"); } if (ret == BtSdkError.OK) { _name = BluesoleilUtils.FromNameString(arr, len); } else { _name = string.Empty; } // uint cod; ret = _fcty.Api.Btsdk_GetLocalDeviceClass(out cod); //BluesoleilUtils.CheckAndThrow(ret); if (retAddr == BtSdkError.OK) { Debug.Assert(ret == BtSdkError.OK, "Btsdk_GetLocalDeviceClass ret: " + ret); } _cod = new ClassOfDevice(cod); // _lmp = new Structs.BtSdkLocalLMPInfoStru(HciVersion.Unknown); ret = _fcty.Api.Btsdk_GetLocalLMPInfo(ref _lmp); if (retAddr == BtSdkError.OK) { BluesoleilUtils.Assert(ret, "Btsdk_GetLocalLMPInfo"); } }
internal BluetopiaRadio(BluetopiaFactory factory) { _fcty = factory; byte[] bd_addr = new byte[StackConsts.BD_ADDR_SIZE]; var ret = _fcty.Api.GAP_Query_Local_BD_ADDR(_fcty.StackId, bd_addr); BluetopiaUtils.CheckAndThrow(ret, "GAP_Query_Local_BD_ADDR"); _addr = BluetopiaUtils.ToBluetoothAddress(bd_addr); // ReadName(); // uint cod; ret = _fcty.Api.GAP_Query_Class_Of_Device(_fcty.StackId, out cod); BluetopiaUtils.CheckAndThrow(ret, "GAP_Query_Class_Of_Device"); _cod = new ClassOfDevice(cod); }
void GetInfo(ref BluetoothAddress addr) { BtSdkError ret; var props = new Structs.BtSdkRemoteDevicePropertyStru(); ret = _factory.Api.Btsdk_GetRemoteDeviceProperty(_hDev, out props); BluesoleilUtils.CheckAndThrow(ret, "Btsdk_GetRemoteDeviceProperty"); // if ((props.mask & Structs.BtSdkRemoteDevicePropertyStru.Mask.Handle) != 0) { Debug.Assert(_hDev == props.dev_hdl, "hDev"); } else { Debug.Fail("Handle unknown?!?"); } if ((props.mask & Structs.BtSdkRemoteDevicePropertyStru.Mask.Address) != 0) { addr = BluesoleilUtils.ToBluetoothAddress(props.bd_addr); } if ((props.mask & Structs.BtSdkRemoteDevicePropertyStru.Mask.Class) != 0) { _cod = new ClassOfDevice(props.dev_class); } if ((props.mask & Structs.BtSdkRemoteDevicePropertyStru.Mask.Name) != 0) { Debug.Assert(props.name.Length == StackConsts.BTSDK_DEVNAME_LEN, "props.name.Length: " + props.name.Length + ", BTSDK_DEVNAME_LEN: " + StackConsts.BTSDK_DEVNAME_LEN); string name = BluesoleilUtils.FromNameString(props.name); _cachedName = name; } if ((props.mask & Structs.BtSdkRemoteDevicePropertyStru.Mask.LmpInfo) != 0) { var fs = (LmpFeatures)BitConverter.ToInt64(props.lmp_info.lmp_feature, 0); var v = new RadioVersions(props.lmp_info.lmp_version, props.lmp_info.lmp_subversion, fs, props.lmp_info.manuf_name); _versions = v; } //props. }
private BluesoleilDeviceInfo(UInt32 hDev, BluesoleilFactory factory) { if (factory == null) { throw new ArgumentNullException("factory"); } _factory = factory; BtSdkError ret; _hDev = hDev; // byte[] bd_addr = new byte[StackConsts.BTSDK_BDADDR_LEN]; ret = factory.Api.Btsdk_GetRemoteDeviceAddress(_hDev, bd_addr); BluesoleilUtils.CheckAndThrow(ret, "Btsdk_GetRemoteDeviceAddress"); if (ret != BtSdkError.OK) // Not known/present(?). { return; } _addr = BluesoleilUtils.ToBluetoothAddress(bd_addr); // uint cod; ret = factory.Api.Btsdk_GetRemoteDeviceClass(_hDev, out cod); if (ret != BtSdkError.OK) // Not known/present(?). { return; } _cod = new ClassOfDevice(cod); // ret = _factory.Api.Btsdk_IsDevicePaired(_hDev, out _paired); Debug.Assert(ret == BtSdkError.OK, "Btsdk_IsDevicePaired ret: " + ret); // _connected = _factory.Api.Btsdk_IsDeviceConnected(_hDev); // GetInfo(ref _addr); }