/// <summary> /// Used when loading a stack stored/remembered/maybe-paired device. /// </summary> internal static WidcommBluetoothDeviceInfo CreateFromStoredRemoteDeviceInfo(REM_DEV_INFO rdi, WidcommBluetoothFactoryBase factory) { WidcommBluetoothDeviceInfo bdi = new WidcommBluetoothDeviceInfo(rdi, factory); bdi.m_remembered = true; return(bdi); }
//---------- public List_IBluetoothDeviceInfo GetKnownRemoteDeviceEntries() { List <REM_DEV_INFO> list = new List <REM_DEV_INFO>(); REM_DEV_INFO info = new REM_DEV_INFO(); int cb = System.Runtime.InteropServices.Marshal.SizeOf(typeof(REM_DEV_INFO)); IntPtr pBuf = System.Runtime.InteropServices.Marshal.AllocHGlobal(cb); try { REM_DEV_INFO_RETURN_CODE ret = m_btIf.GetRemoteDeviceInfo(ref info, pBuf, cb); Utils.MiscUtils.Trace_WriteLine("GRDI: ret: {0}=0x{0:X}", ret); while (ret == REM_DEV_INFO_RETURN_CODE.SUCCESS) { list.Add(info); // COPY it into the list ret = m_btIf.GetNextRemoteDeviceInfo(ref info, pBuf, cb); Utils.MiscUtils.Trace_WriteLine("GnRDI: ret: {0}=0x{0:X}", ret); }//while if (ret != REM_DEV_INFO_RETURN_CODE.EOF) { throw WidcommSocketExceptions.Create(ret, "Get[Next]RemoteDeviceInfo"); } // List_IBluetoothDeviceInfo bdiList = new List_IBluetoothDeviceInfo(list.Count); foreach (REM_DEV_INFO cur in list) { IBluetoothDeviceInfo bdi = WidcommBluetoothDeviceInfo.CreateFromStoredRemoteDeviceInfo(cur, m_factory); bdiList.Add(bdi); } return(bdiList); } finally { System.Runtime.InteropServices.Marshal.FreeHGlobal(pBuf); } }
public REM_DEV_INFO_RETURN_CODE GetNextRemoteDeviceInfo(ref REM_DEV_INFO remDevInfo, IntPtr p_rem_dev_info, int cb) { Utils.MiscUtils.Trace_WriteLine("enter GetNextRemoteDeviceInfo, pBuf=0x{0:X}", p_rem_dev_info.ToInt64()); REM_DEV_INFO_RETURN_CODE ret = NativeMethods.BtIf_GetNextRemoteDeviceInfo(m_pBtIf, p_rem_dev_info, cb); Utils.MiscUtils.Trace_WriteLine("exit GetNextRemoteDeviceInfo"); remDevInfo = (REM_DEV_INFO)Marshal.PtrToStructure(p_rem_dev_info, typeof(REM_DEV_INFO)); return(ret); }
//-------- internal static WidcommBluetoothDeviceInfo CreateFromGivenAddressNoLookup(BluetoothAddress address, WidcommBluetoothFactoryBase factory) { REM_DEV_INFO rdi = new REM_DEV_INFO(); rdi.bda = WidcommUtils.FromBluetoothAddress(address); WidcommBluetoothDeviceInfo bdi = new WidcommBluetoothDeviceInfo(rdi, factory); return(bdi); }
//------------- //------------- public REM_DEV_INFO_RETURN_CODE GetRemoteDeviceInfo(ref REM_DEV_INFO remDevInfo, IntPtr p_rem_dev_info, int cb) { #if NETCF // Not supported on my test device return(REM_DEV_INFO_RETURN_CODE.ERROR); #else Utils.MiscUtils.Trace_WriteLine("enter GetRemoteDeviceInfo, pBuf=0x{0:X}", p_rem_dev_info.ToInt64()); REM_DEV_INFO_RETURN_CODE ret = NativeMethods.BtIf_GetRemoteDeviceInfo(m_pBtIf, p_rem_dev_info, cb); Utils.MiscUtils.Trace_WriteLine("exit GetRemoteDeviceInfo"); remDevInfo = (REM_DEV_INFO)Marshal.PtrToStructure(p_rem_dev_info, typeof(REM_DEV_INFO)); return(ret); #endif }
/// <summary> /// Used when a device is discovered during Inquiry. /// </summary> /// - /// <remarks> /// <para>When the result of Inquiry and get-stack-stored-devices are merged, /// the remembered/authenticated flags may get set then (with <see cref="M:SetAuthenticated"/>). /// </para> /// </remarks> internal static WidcommBluetoothDeviceInfo CreateFromHandleDeviceResponded(byte[] bdAddr, byte[] deviceName, byte[] devClass, bool connected, WidcommBluetoothFactoryBase factory) { REM_DEV_INFO rdi = new REM_DEV_INFO(); rdi.bda = bdAddr; rdi.bd_name = deviceName; rdi.b_connected = connected; rdi.dev_class = devClass; WidcommBluetoothDeviceInfo bdi = new WidcommBluetoothDeviceInfo(rdi, factory); //bdi.m_inquiryTime = DateTime.UtcNow; return(bdi); }
internal static WidcommBluetoothDeviceInfo CreateFromGivenAddress(BluetoothAddress address, WidcommBluetoothFactoryBase factory) { REM_DEV_INFO rdi = new REM_DEV_INFO(); rdi.bda = WidcommUtils.FromBluetoothAddress(address); WidcommBluetoothDeviceInfo bdi = factory.GetWidcommBtInterface() .ReadDeviceFromRegistryAndCheckAndSetIfPaired(address, factory); if (bdi == null) { bdi = CreateFromGivenAddressNoLookup(address, factory); } return(bdi); }
private static WidcommBluetoothDeviceInfo CreateFromStoredRemoteDeviceInfo( BluetoothAddress devAddress, byte[] devName, byte[] devClass, WidcommBluetoothFactoryBase factory) { REM_DEV_INFO rdi = new REM_DEV_INFO(); rdi.bda = WidcommUtils.FromBluetoothAddress(devAddress); rdi.bd_name = devName; rdi.dev_class = devClass; // rdi.b_connected = ... // rdi.b_paired = ... WidcommBluetoothDeviceInfo bdi = WidcommBluetoothDeviceInfo.CreateFromStoredRemoteDeviceInfo(rdi, factory); string nameStr = bdi.DeviceName; Debug.Assert(nameStr.Length == 0 || nameStr[nameStr.Length - 1] != 0, "null terminator!!"); int idxDbg; Debug.Assert((idxDbg = nameStr.IndexOf((char)0)) == -1, "null terminator!! at: " + idxDbg); return(bdi); }
public REM_DEV_INFO_RETURN_CODE GetNextRemoteDeviceInfo(ref REM_DEV_INFO remDevInfo, IntPtr p_rem_dev_info, int cb) { return(_child.GetNextRemoteDeviceInfo(ref remDevInfo, p_rem_dev_info, cb)); }
private WidcommBluetoothDeviceInfo(REM_DEV_INFO remDevInfo, WidcommBluetoothFactoryBase factory) { m_factory = factory; m_remDevInfo = remDevInfo; }