//---- internal List <ServiceRecord> DoSdpQueryWithConnect( BluetoothAddress addr, Guid svcClass, bool rfcommOnly) { var svcUuid = new Structs.uuid_t(svcClass); //:TestUuids(); // Connect byte[] target = BluezUtils.FromBluetoothAddress(addr); Console.WriteLine("Gonna sdp_connect (SafeHandle)..."); NativeMethods.SdpSessionSafeHandle session = NativeMethods.sdp_connect(StackConsts.BDADDR_ANY, target, StackConsts.SdpConnectFlags.SDP_RETRY_IF_BUSY); if (session.IsInvalid) { //BluezUtils.Throw((BluezError)(-1), "sdp_connect"); const int WSASERVICE_NOT_FOUND = 10108; throw new SocketException(WSASERVICE_NOT_FOUND); } try { // Query return(DoSdpQuery(session, svcUuid, rfcommOnly)); } finally { session.Close(); } }
//---- 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); }