Esempio n. 1
0
        void InitRadios()
        {
            if (_radioPrimary != null)
            {
                return;
            }
            //
            int idPrimary = NativeMethods.hci_get_route(IntPtr.Zero);
            /////////////////////////////// BluezUtils.CheckAndThrow((BluezError)idPrimary, "hci_get_route");
            var dd = NativeMethods.hci_open_dev(idPrimary);

            Console.WriteLine("InitRadios idPrimary: {0}, dd: {1}", idPrimary, dd);
            _radioPrimary = new BluezRadio(this, dd);
            //
            int maxToTry = 10;
            var list     = new List <IBluetoothRadio>();

            for (int curId = 0; curId < maxToTry; ++curId)
            {
                var curDd = NativeMethods.hci_open_dev(curId);
                var ret   = (BluezError)curDd;
                if (BluezUtils.IsSuccess(ret))
                {
                    Console.WriteLine("InitRadios curDd: {0}", curDd);
                    var curR = new BluezRadio(this, curDd);
                    list.Add(curR);
                }
            }
            _radioList = list;
            Debug.Assert(_radioList.Count >= 1);
        }
Esempio n. 2
0
        //----
        internal BluezRadio(BluezFactory fcty, int dd)
        {
            _dd = dd;
            Debug.Assert(fcty != null, "ArgNull");
            _fcty = fcty;
            BluezError ret;
            var        bdaddr = BluezUtils.FromBluetoothAddress(BluetoothAddress.None);

            ret = NativeMethods.hci_read_bd_addr(_dd, bdaddr, _fcty.StackTimeout);
            //TODO BluezUtils.CheckAndThrow(ret, "hci_read_bd_addr");
            BluezUtils.Assert(ret, "hci_read_bd_addr");
            if (BluezUtils.IsSuccess(ret))
            {
                _addr = BluezUtils.ToBluetoothAddress(bdaddr);
                Console.WriteLine("Radio SUCCESS, addr: " + _addr);
            }
            else
            {
                // NEVER used EXCEPT in the debugger if we skip the CheckandThrow above.
                _addr = BluetoothAddress.None;
                Console.WriteLine("Radio FAIL, addr: " + _addr);
            }
            _nameTmp = new byte[250];
            //
            // First find _objectPath. In the future we'll be passed this.
            var ax = _fcty.BluezDbus.FindAdapter(_addr, out _objectPath);

            Debug.Assert(_objectPath != null, "BluezRadio..ctor NOT _objectPath!=null");
            //--
            // Set Adapter.
            _adapter = GetAdapter(_objectPath);
            Console.WriteLine("Got adapter at .ctor.3.");
            //
            var    prop   = GetProperties();
            string addrDt = (string)prop[PropertyName.Address];
            var    addrD  = BluetoothAddress.Parse(addrDt);

            Utils.MiscUtils.AssertEquals(addrD, _addr);
            Console.WriteLine("Check DONE Radio..ctor. " + addrD + " vs " + _addr);
        }
Esempio n. 3
0
        //--
        void ReadVersions()
        {
            if (_doneVersions)
            {
                return;
            }
            var vers = new Structs.hci_version(HciVersion.Unknown);
            var ret  = NativeMethods.hci_read_local_version(_dd, ref vers, _fcty.StackTimeout);

            BluezUtils.Assert(ret, "hci_read_local_version");
            if (BluezUtils.IsSuccess(ret))
            {
                _versions = vers;
            }
            _doneVersions = true; // Always set, as unlikely to work second time if failed first time.
            //
            var arr = new byte[8];

            ret = NativeMethods.hci_read_local_features(_dd, arr, _fcty.StackTimeout);
            if (BluezUtils.IsSuccess(ret))
            {
                _lmpFeatures = (LmpFeatures)BitConverter.ToInt64(arr, 0);
            }
        }