Exemple #1
0
        //----
        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);
        }
Exemple #2
0
 //----
 // 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);
 }
Exemple #3
0
        ClassOfDevice GetClassOfDevice()
        {
            if (_cod == 0)
            {
                _cod = ClassOfDeviceHelper.ToClassOfDevice(_device.BluetoothClass);
            }

            return(_cod);
        }
Exemple #4
0
        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);
        }
Exemple #6
0
        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");
            }
        }
Exemple #7
0
        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);
        }