/// <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);
        }
示例#2
0
        //----------
        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);
            }
        }
示例#3
0
        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);
        }
示例#5
0
        //-------------


        //-------------

        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);
        }
示例#8
0
        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;
 }