bmw-advanced-tools/app/EDIABAS/Bin/InTheHand.Net.Personal.xml

15795 lines
820 KiB
XML
Raw Permalink Normal View History

2021-09-18 17:45:57 +02:00
<?xml version="1.0"?>
<doc>
<assembly>
<name>InTheHand.Net.Personal</name>
</assembly>
<members>
<member name="T:InTheHand.Net.Bluetooth.AttributeIds.DeviceIdProfileAttributeId">
<summary>
Service Attribute IDs defined by the Device Identification Profile specification.
</summary>
-
<remarks>
<para>&#x201C;This document specifies a method by which Bluetooth devices may
provide information that may be used by peer Bluetooth devices to
find representative icons or load associated support software. This
information is published as Bluetooth SDP records, and optionally in
an Extended Inquiry Response.&#x201D;
</para>
<para>Used in records with Service Class ID:
<see cref="F:InTheHand.Net.Bluetooth.BluetoothService.PnPInformation"/>.
</para>
<para>As well as the attributes defined here, use of some of the universal
attributes is recommended, they are:
<see cref="F:InTheHand.Net.Bluetooth.AttributeIds.UniversalAttributeId.ClientExecutableUrl"/>,
<see cref="F:InTheHand.Net.Bluetooth.AttributeIds.UniversalAttributeId.ServiceDescription"/>,
and <see cref="F:InTheHand.Net.Bluetooth.AttributeIds.UniversalAttributeId.DocumentationUrl"/>.
</para>
</remarks>
</member>
<member name="F:InTheHand.Net.Bluetooth.AttributeIds.DeviceIdProfileAttributeId.SpecificationId">
<summary>
SpecificationId [0x0200]
</summary>
<remarks>The version of the Bluetooth Device ID Profile Specification
supported by the device.
e.g. version 1.3 will be value 0x0103. [<c>UInt16</c>]</remarks>
</member>
<member name="F:InTheHand.Net.Bluetooth.AttributeIds.DeviceIdProfileAttributeId.VendorId">
<summary>
VendorId [0x0201]
</summary>
<remarks>
<para>The id assigned by the organisation in <see cref="F:InTheHand.Net.Bluetooth.AttributeIds.DeviceIdProfileAttributeId.VendorIdSource" />. [<c>UInt16</c>]
</para>
<para>&#x201C;The value <c>FFFF</c> is reserved as the default id when
no Device ID Service Record is present in the device.&#x201D;
</para>
</remarks>
</member>
<member name="F:InTheHand.Net.Bluetooth.AttributeIds.DeviceIdProfileAttributeId.ProductId">
<summary>
ProductId [0x0202]
</summary>
<remarks>Distinguishes between different products made by the same vendor. [<c>UInt16</c>]</remarks>
</member>
<member name="F:InTheHand.Net.Bluetooth.AttributeIds.DeviceIdProfileAttributeId.Version">
<summary>
Version [0x0203]
</summary>
<remarks>The version of the product. [<c>UInt16</c>]</remarks>
</member>
<member name="F:InTheHand.Net.Bluetooth.AttributeIds.DeviceIdProfileAttributeId.PrimaryRecord">
<summary>
PrimaryRecord [0x0204]
</summary>
<remarks>If multiple Device ID records are present this indicates the one &#x2019;primary&#x201A; record. [<c>Boolean</c>]</remarks>
</member>
<member name="F:InTheHand.Net.Bluetooth.AttributeIds.DeviceIdProfileAttributeId.VendorIdSource">
<summary>
VendorIdSource [0x0205]
</summary>
<remarks>Designates which organisation assigned the Vendor ID value. [<c>UInt16</c>]
<list type="table">
<listheader><term>Value</term><term>Assigning Organisation</term></listheader>
<item><term>1</term><term>Bluetooth SIG</term></item>
<item><term>2</term><term>USB Implementors Forum</term></item>
<item><term>0, 3-FFFF</term><term>reserved</term></item>
</list>
</remarks>
</member>
<member name="T:InTheHand.Net.Bluetooth.AttributeIds.HidProfileAttributeId">
<summary>
Service Attribute IDs defined by the Human Interface Device (HID) Profile specification.
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.AttributeIds.HidProfileAttributeId.DeviceReleaseNumber">
<summary>
HIDDeviceReleaseNumber
</summary>
<remarks><para>[<c>16-bit unsigned integer</c>]</para>
<para>
&#x201C;A numeric expression identifying the device release number in Binary-Coded
Decimal. This is a vendor-assigned field, which defines the version of
the product identified by the Bluetooth Device Identification [13] VendorID
and ProductID attributes. This attribute is intended to differentiate
between versions of products with identical VendorIDs and ProductIDs.
The value of the field is 0xJJMN for version JJ.M.N (JJ major version
number, M minor version number, N sub-minor version number). &#x2026;&#x201D;
</para>
</remarks>
</member>
<member name="F:InTheHand.Net.Bluetooth.AttributeIds.HidProfileAttributeId.ParserVersion">
<summary>
HIDParserVersion
</summary>
<remarks><para>[<c>16-bit unsigned integer</c>]</para>
<para>
&#x201C;Each version of a profile is assigned a 16-bit unsigned integer version
number of the base HID Specification [4] that the device was designed to. The value
of the field is 0xJJMN for version JJ.M.N &#x2026;&#x201D;
</para>
</remarks>
</member>
<member name="F:InTheHand.Net.Bluetooth.AttributeIds.HidProfileAttributeId.DeviceSubclass">
<summary>
HIDDeviceSubclass
</summary>
<remarks><para>[<c>8-bit unsigned integer</c>]</para>
<para>
&#x201C;The HIDDeviceSubclass attribute is an 8-bit integer, which
identifies the type of device (keyboard, mouse, joystick, gamepad,
remote control, sensing device, etc.). Keyboards and mice are required
to support boot mode operation. In boot mode, a device presents a fixed
report, thus negating the requirement for a HID parser.
<para></para>The Attribute value is identical to the low-order 8 bits
of the Class of Device/Service (CoD) field in the FHS packet, where
bits 7-2 contain the 6 bit Minor Device Class value (defined in Section
1.2 of the Bluetooth Assigned Numbers document [8]) and bits 1-0 are
set to zero. &#x2026;&#x201D;
</para>
</remarks>
</member>
<member name="F:InTheHand.Net.Bluetooth.AttributeIds.HidProfileAttributeId.CountryCode">
<summary>
HIDCountryCode
</summary>
<remarks><para>[<c>8-bit unsigned integer</c>]</para>
<para>
&#x201C;The HIDCountryCode attribute is an 8-bit integer, which identifies
which country the hardware is localized for. Most hardware is not localized
and thus this value would be zero (0).&#x2026;
</para><para>The valid country codes are listed in the HID Specification
[4].&#x201D;
</para>
</remarks>
</member>
<member name="F:InTheHand.Net.Bluetooth.AttributeIds.HidProfileAttributeId.VirtualCable">
<summary>
HIDVirtualCable
</summary>
<remarks><para>[<c>8-bit Boolean</c>]</para>
<para>
&#x201C;The HIDVirtualCable attribute is a boolean value, which indicates
whether the device supports virtual connections as described in Section
Virtual Cables and Connection Re-Establishment. Devices that have this
attribute True indicate that the device supports 1:1 bonding with a host,
and the device expects to automatically reconnect if the connection is
dropped for any unknown reason.&#x201D;
</para>
</remarks>
</member>
<member name="F:InTheHand.Net.Bluetooth.AttributeIds.HidProfileAttributeId.ReconnectInitiate">
<summary>
HIDReconnectInitiate
</summary>
<remarks><para>[<c>8-bit Boolean</c>]</para>
<para>
&#x201C;The HIDReconnectInitiate attribute is a boolean value, which
indicates whether the device initiates the reconnection process or
expects the host to. &#x2026;&#x201D;
</para>
</remarks>
</member>
<member name="F:InTheHand.Net.Bluetooth.AttributeIds.HidProfileAttributeId.DescriptorList">
<summary>
HIDDescriptorList
</summary>
<remarks><para>[<c>Data element sequence</c>]</para>
<para>
&#x201C;The HIDDescriptorList Data Element Sequence performs the function of the
HID Descriptor that is defined in Section 6.2 of the HID Specification [4]. The
HIDDescriptorList identifies the descriptors associated with the device. &#x2026;
</para><para>The HIDDescriptorList is a Data Element Sequence that consists of
one or more HIDDescriptors. A HIDDescriptor is a data element sequence containing,
minimally, a pair of elements. For compatibility with future versions of the HID
profile, addition elements found in a HIDDescriptor shall be ignored. &#x2026;
&#x201D;
</para>
</remarks>
</member>
<member name="F:InTheHand.Net.Bluetooth.AttributeIds.HidProfileAttributeId.LangIdBaseList">
<summary>
HIDLANGIDBaseList
</summary>
<remarks><para>[<c>Data element sequence</c>]</para>
<para>
&#x201C;The HIDLANGIDBaseList is a Data Element Sequence that consists of one or
more HIDLANGIDBases. A HIDLANGIDBase is a data element sequence containing, minimally,
two elements for each of the languages used in the service record: a language identifier
(LANGID) and a base attribute ID. For compatibility with future versions of the
HID profile, additional elements found in a HIDLANGIDBase shall be ignored.
</para><para>The first element, called the HIDLANGID, contains an identifier representing
the natural language ID. The language is encoded according to the “Universal Serial
Bus Language Identifiers (LANGIDs)” Specification [9].
</para><para>The second element, called the HIDLanguageBase, contains an attribute
ID that serves as the base attribute ID for the natural language in the service
record. Different service records within a server may use different base attribute
ID values for the same language. &#x2026;&#x201D;
</para>
</remarks>
</member>
<member name="F:InTheHand.Net.Bluetooth.AttributeIds.HidProfileAttributeId.SdpDisable">
<summary>
HIDSDPDisable
</summary>
<remarks><para>[<c>8-bit Boolean</c>]</para>
<para>
&#x201C;The HIDSDPDisable attribute is a boolean value, which indicates whether
connection to the SDP channel and Control or Interrupt channels are mutually exclusive.
&#x2026;&#x201D;
</para>
</remarks>
</member>
<member name="F:InTheHand.Net.Bluetooth.AttributeIds.HidProfileAttributeId.BatteryPower">
<summary>
HIDBatteryPower
</summary>
<remarks><para>[<c>8-bit Boolean</c>]</para>
<para>
&#x201C;The HIDBatteryPower attribute is a boolean value, which indicates whether
the device is battery powered (and requires careful power management) or has some
other source of power that requires minimal management. &#x2026;&#x201D;
</para>
</remarks>
</member>
<member name="F:InTheHand.Net.Bluetooth.AttributeIds.HidProfileAttributeId.RemoteWake">
<summary>
HIDRemoteWake
</summary>
<remarks><para>[<c>8-bit Boolean</c>]</para>
<para>
&#x201C;The HIDRemoteWake attribute is a boolean value, which indicates whether
the device considers itself remote wake up-capable. When a system enters a suspend
(or standby) state, this flag shall be used to determine whether the host includes
this device in the set of devices that can wake it up. A mouse or keyboard are
typical examples of Remote Wake up devices.&#x201D;
</para>
</remarks>
</member>
<member name="F:InTheHand.Net.Bluetooth.AttributeIds.HidProfileAttributeId.BootDevice">
<summary>
HIDBootDevice
</summary>
<remarks><para>[<c>8-bit Boolean</c>]</para>
<para>
&#x201C;HIDBootDevice is an 8-bit Boolean value that when True indicates whether
the device supports boot protocol mode and by inference the Set_Protocol and Get_Protocol
commands. &#x2026;&#x201D;
</para>
</remarks>
</member>
<member name="F:InTheHand.Net.Bluetooth.AttributeIds.HidProfileAttributeId.SupervisionTimeout">
<summary>
HIDSupervisionTimeout
</summary>
<remarks><para>[<c>16-bit unsigned integer</c>]</para>
<para>
&#x201C;The HIDSupervisionTimeout is a 16-bit value which indicates the device
vendors recommended baseband Link Supervision Timeout value in slots. &#x2026;&#x201D;
</para>
</remarks>
</member>
<member name="F:InTheHand.Net.Bluetooth.AttributeIds.HidProfileAttributeId.NormallyConnectable">
<summary>
HIDNormallyConnectable
</summary>
<remarks><para>[<c>8-bit Boolean</c>]</para>
<para>
&#x201C;HIDNormallyConnectable is an optional Boolean attribute that specifies
whether a HID is normally in Page Scan mode (when no connection is active) or not.
&#x2026;&#x201D;
</para>
</remarks>
</member>
<member name="F:InTheHand.Net.Bluetooth.AttributeIds.HidProfileAttributeId.ProfileVersion">
<summary>
HIDProfileVersion
</summary>
<remarks><para>[<c>16-bit unsigned integer</c>]</para>
<para>
&#x201C;Each device designed to this specification shall include a 16-bit unsigned
integer version number of the Bluetooth HID Specification (this document) that
the device was designed to. The value of the field is 0xJJMN for version JJ.M.N
(JJ major version number, M minor version number, N sub-minor version number);
&#x2026;&#x201D;
</para>
</remarks>
</member>
<member name="T:InTheHand.Net.Bluetooth.AttributeIds.UniversalAttributeId">
<summary>
Defines the ids for the &#x201C;universal attributes&#x201D;, those
&#x201C;whose definitions are common to all service records.&#x201D;
</summary>
<remarks>
<para>&#x201C;
Universal attributes are those service attributes whose definitions are common
to all service records. Note that this does not mean that every service record
must contain values for all of these service attributes. However, if a service
record has a service attribute with an attribute ID allocated to a universal
attribute, the attribute value must conform to the universal attributes definition.
</para><para>&#x201C;
Only two attributes are required to exist in every service record instance. They
are the ServiceRecordHandle (attribute ID 0x0000) and the ServiceClassIDList
(attribute ID 0x0001). All other service attributes are optional within a service
record.
&#x201D;</para>
<para>&#x201C;Attribute IDs in the range of 0x000D-0x01FF are reserved.&#x201D;</para>
</remarks>
</member>
<member name="F:InTheHand.Net.Bluetooth.AttributeIds.UniversalAttributeId.ServiceRecordHandle">
<summary>
A service record handle is a 32-bit number that uniquely identifies each service
record within an SDP server.
[0x0000]
</summary>
<remarks>
<para>[<c>32-bit unsigned integer</c>]</para>
</remarks>
</member>
<member name="F:InTheHand.Net.Bluetooth.AttributeIds.UniversalAttributeId.ServiceClassIdList">
<summary>
The ServiceClassIDList attribute consists of a data element sequence in which
each data element is a UUID representing the service classes that a given service
record conforms to.
[0x0001]
</summary>
<remarks>
<para>[<c>Data Element Sequence</c>]</para>
<para>&#x201C;The ServiceClassIDList attribute consists of a data element sequence in which
each data element is a UUID representing the service classes that a given service
record conforms to. The UUIDs are listed in order from the most specific
class to the most general class. The ServiceClassIDList must contain at least
one service class UUID.&#x201D;</para>
</remarks>
</member>
<member name="F:InTheHand.Net.Bluetooth.AttributeIds.UniversalAttributeId.ServiceRecordState">
<summary>
The ServiceRecordState is a 32-bit integer that is used to facilitate caching of
ServiceAttributes.
[0x0002]
</summary>
<remarks>
<para>[<c>32-bit unsigned integer</c>]</para>
<para>&#x201C;
The ServiceRecordState is a 32-bit integer that is used to facilitate caching of
ServiceAttributes. If this attribute is contained in a service record, its value is
guaranteed to change when any other attribute value is added to, deleted from
or changed within the service record. This permits a client to check the value of
this single attribute. If its value has not changed since it was last checked, the
client knows that no other attribute values within the service record have
changed.
&#x201D;</para>
</remarks>
</member>
<member name="F:InTheHand.Net.Bluetooth.AttributeIds.UniversalAttributeId.ServiceId">
<summary>
The ServiceID is a UUID that universally and uniquely identifies the service
instance described by the service record.
[0x0003]
</summary>
<remarks>
<para>[<c>UUID</c>]</para>
<para>&#x201C;
The ServiceID is a UUID that universally and uniquely identifies the service
instance described by the service record. This service attribute is particularly
useful if the same service is described by service records in more than one
SDP server.
&#x201D;</para>
</remarks>
</member>
<member name="F:InTheHand.Net.Bluetooth.AttributeIds.UniversalAttributeId.ProtocolDescriptorList">
<summary>
The ProtocolDescriptorList attribute describes one or more protocol stacks that
may be used to gain access to the service described by the service record.
[0x0004]
</summary>
<remarks>
<para>[<c>Data Element Sequence</c> or <c>Data Element Alternative</c>]</para>
<para>&#x201C;
The ProtocolDescriptorList attribute describes one or more protocol stacks that
may be used to gain access to the service described by the service record.
</para><para>&#x201C;
If the ProtocolDescriptorList describes a single stack, it takes the form of a data
element sequence in which each element of the sequence is a protocol
descriptor. Each protocol descriptor is, in turn, a data element sequence whose
first element is a UUID identifying the protocol and whose successive elements
are protocol-specific parameters. Potential protocol-specific parameters are a
protocol version number and a connection-port number. The protocol descriptors
are listed in order from the lowest layer protocol to the highest layer protocol
used to gain access to the service.
</para><para>&#x201C;
If it is possible for more than one kind of protocol stack to be used to gain
access to the service, the ProtocolDescriptorList takes the form of a data element
alternative where each member is a data element sequence as described
in the previous paragraph.
</para><para>&#x201C;
Protocol Descriptors
</para><para>&#x201C;
A protocol descriptor identifies a communications protocol and provides protocol-
specific parameters. A protocol descriptor is represented as a data element
sequence. The first data element in the sequence must be the UUID that identifies
the protocol. Additional data elements optionally provide protocol-specific
information, such as the L2CAP protocol/service multiplexer (PSM) and the
RFCOMM server channel number (CN) shown below.
</para><para>&#x201C;
ProtocolDescriptorList Examples
</para><para>&#x201C;
These examples are intended to be illustrative. The parameter formats for each
protocol are not defined within this specification.
</para><para>&#x201C;
In the first two examples, it is assumed that a single RFCOMM instance exists
on top of the L2CAP layer. In this case, the L2CAP protocol specific information
(PSM) points to the single instance of RFCOMM. In the last example, two different
and independent RFCOMM instances are available on top of the L2CAP
layer. In this case, the L2CAP protocol specific information (PSM) points to a
distinct identifier that distinguishes each of the RFCOMM instances. According
to the L2CAP specification, this identifier takes values in the range
0x1000-0xFFFF.
</para><para>&#x201C;
IrDA-like printer
</para><para>&#x201C;
( ( L2CAP, PSM=RFCOMM ), ( RFCOMM, CN=1 ), ( PostscriptStream ) )
</para><para>&#x201C;
IP Network Printing
</para><para>&#x201C;
( ( L2CAP, PSM=RFCOMM ), ( RFCOMM, CN=2 ), ( PPP ), ( IP ), ( TCP ),
( IPP ) )
</para><para>&#x201C;
Synchronization Protocol Descriptor Example
</para><para>&#x201C;
( ( L2CAP, PSM=0x1001 ), ( RFCOMM, CN=1 ), ( Obex ), ( vCal ) )
</para><para>&#x201C;
( ( L2CAP, PSM=0x1002 ), ( RFCOMM, CN=1 ), ( Obex ),
</para><para>&#x201C;
( otherSynchronisationApplication ) )
&#x201D;</para>
</remarks>
</member>
<member name="F:InTheHand.Net.Bluetooth.AttributeIds.UniversalAttributeId.BrowseGroupList">
<summary>
The BrowseGroupList attribute consists of a data element sequence in which
each element is a UUID that represents a browse group to which the service
record belongs.
[0x0005]
</summary>
<remarks>
<para>[<c>Data Element Sequence</c>]</para>
<para>&#x201C;
The BrowseGroupList attribute consists of a data element sequence in which
each element is a UUID that represents a browse group to which the service
record belongs. The top-level browse group ID, called PublicBrowseRoot and
representing the root of the browsing hierarchy, has the value
00001002-0000-1000-8000-00805F9B34FB
(UUID16: 0x1002) from the Bluetooth Assigned
Numbers document.
&#x201D;</para>
</remarks>
</member>
<member name="F:InTheHand.Net.Bluetooth.AttributeIds.UniversalAttributeId.LanguageBaseAttributeIdList">
<summary>
In order to support human-readable attributes for multiple natural languages in
a single service record, a base attribute ID is assigned for each of the natural
languages used in a service record. The human-readable universal attributes
are then defined with an attribute ID offset from each of these base values,
rather than with an absolute attribute ID.
[0x0006]
</summary>
<remarks>
<para>[<c>Data Element Sequence</c>]</para>
<para>&#x201C;
In order to support human-readable attributes for multiple natural languages in
a single service record, a base attribute ID is assigned for each of the natural
languages used in a service record. The human-readable universal attributes
are then defined with an attribute ID offset from each of these base values,
rather than with an absolute attribute ID.
</para><para>&#x201C;
The LanguageBaseAttributeIDList attribute is a list in which each member contains
a language identifier, a character encoding identifier, and a base attribute
ID for each of the natural languages used in the service record. The Language-
BaseAttributeIDList attribute consists of a data element sequence in which
each element is a 16-bit unsigned integer. The elements are grouped as triplets
(threes).
</para><para>&#x201C;
The first element of each triplet contains an identifier representing the natural
language. The language is encoded according to ISO 639:1988 (E/F): “Code
for the representation of names of languages”.
</para><para>&#x201C;
The second element of each triplet contains an identifier that specifies a character
encoding used for the language. Values for character encoding can be
found in IANA's database1, and have the values that are referred to as MIBEnum
values. The recommended character encoding is UTF-8.
</para><para>&#x201C;
The third element of each triplet contains an attribute ID that serves as the
base attribute ID for the natural language in the service record. Different service
records within a server may use different base attribute ID values for the
same language.
</para><para>&#x201C;
To facilitate the retrieval of human-readable universal attributes in a principal
language, the base attribute ID value for the primary language supported by a
service record must be 0x0100. Also, if a LanguageBaseAttributeIDList
attribute is contained in a service record, the base attribute ID value contained
in its first element must be 0x0100.
</para>
</remarks>
</member>
<member name="F:InTheHand.Net.Bluetooth.AttributeIds.UniversalAttributeId.ServiceInfoTimeToLive">
<summary>
The ServiceTimeToLive attribute is a 32-bit integer that contains the number of
seconds for which the information in a service record is expected to remain
valid and unchanged.
[0x0007]
</summary>
<remarks>
<para>[<c>32-bit unsigned integer</c>]</para>
<para>&#x201C;
The ServiceTimeToLive attribute is a 32-bit integer that contains the number of
seconds for which the information in a service record is expected to remain
valid and unchanged. This time interval is measured from the time that the
attribute value is retrieved from the SDP server. This value does not imply a
guarantee that the service record will remain available or unchanged. It is
simply a hint that a client may use to determine a suitable polling interval to revalidate
the service record contents.
&#x201D;</para>
</remarks>
</member>
<member name="F:InTheHand.Net.Bluetooth.AttributeIds.UniversalAttributeId.ServiceAvailability">
<summary>
The ServiceAvailability attribute is an 8-bit unsigned integer that represents the
relative ability of the service to accept additional clients.
[0x0008]
</summary>
<remarks>
<para>[<c>8-bit unsigned integer</c>]</para>
<para>&#x201C;
The ServiceAvailability attribute is an 8-bit unsigned integer that represents the
relative ability of the service to accept additional clients. A value of 0xFF indicates
that the service is not currently in use and is thus fully available, while a
value of 0x00 means that the service is not accepting new clients. For services
that support multiple simultaneous clients, intermediate values indicate the relative
availability of the service on a linear scale.
&#x201D;</para><para>&#x201C;
For example, a service that can accept up to 3 clients should provide ServiceAvailability
values of 0xFF, 0xAA, 0x55, and 0x00 when 0, 1, 2, and 3 clients, respectively,
are utilizing the service. The value 0xAA is approximately (2/3) * 0xFF and
represents 2/3 availability, while the value 0x55 is approximately (1/3)*0xFF and
represents 1/3 availability. Note that the availability value may be approximated as
&#x201D;</para><para>&#x201C;
<c>( 1 - ( current_number_of_clients / maximum_number_of_clients ) ) * 0xFF</c>
&#x201D;</para><para>&#x201C;
When the maximum number of clients is large, this formula must be modified to
ensure that ServiceAvailability values of 0x00 and 0xFF are reserved for their
defined meanings of unavailability and full availability, respectively.
&#x201D;</para><para>&#x201C;
Note that the maximum number of clients a service can support may vary
according to the resources utilized by the service's current clients.
&#x201D;</para><para>&#x201C;
A non-zero value for ServiceAvailability does not guarantee that the service will
be available for use. It should be treated as a hint or an approximation of availability
status.
&#x201D;</para>
</remarks>
</member>
<member name="F:InTheHand.Net.Bluetooth.AttributeIds.UniversalAttributeId.BluetoothProfileDescriptorList">
<summary>
The BluetoothProfileDescriptorList attribute consists of a data element
sequence in which each element is a profile descriptor that contains information
about a Bluetooth profile to which the service represented by this service
record conforms.
[0x0009]
</summary>
<remarks>
<para>[<c>Data Element Sequence</c>]</para>
<para>&#x201C;
The BluetoothProfileDescriptorList attribute consists of a data element
sequence in which each element is a profile descriptor that contains information
about a Bluetooth profile to which the service represented by this service
record conforms. Each profile descriptor is a data element sequence whose
first element is the UUID assigned to the profile and whose second element is
a 16-bit profile version number.
&#x201D;</para><para>&#x201C;
Each version of a profile is assigned a 16-bit unsigned integer profile version
number, which consists of two 8-bit fields. The higher-order 8 bits contain the
major version number field and the lower-order 8 bits contain the minor version
number field. The initial version of each profile has a major version of 1 and a
minor version of 0. When upward compatible changes are made to the profile,
the minor version number will be incremented. If incompatible changes are
made to the profile, the major version number will be incremented.
&#x201D;</para>
</remarks>
</member>
<member name="F:InTheHand.Net.Bluetooth.AttributeIds.UniversalAttributeId.DocumentationUrl">
<summary>
This attribute is a URL which points to documentation on the service described
by a service record.
[0x000A]
</summary>
<remarks>
<para>[<c>URL</c>]</para>
</remarks>
</member>
<member name="F:InTheHand.Net.Bluetooth.AttributeIds.UniversalAttributeId.ClientExecutableUrl">
<summary>
This attribute contains a URL that refers to the location of an application that
may be used to utilize the service described by the service record.
[0x000B]
</summary>
<remarks>
<para>[<c>URL</c>]</para>
<para>&#x201C;
This attribute contains a URL that refers to the location of an application that
may be used to utilize the service described by the service record. Since different
operating environments require different executable formats, a mechanism
has been defined to allow this single attribute to be used to locate an executable
that is appropriate for the client devices operating environment. In the
attribute value URL, the first byte with the value 0x2A (ASCII character *) is to
be replaced by the client application with a string representing the desired
operating environment before the URL is to be used.
&#x201D;</para><para>&#x201C;
The list of standardized strings representing operating environments is contained
in the Bluetooth Assigned Numbers document.
&#x201D;</para><para>&#x201C;
For example, assume that the value of the ClientExecutableURL attribute is
http://my.fake/public/*/client.exe. On a device capable of executing SH3 WindowsCE
files, this URL would be changed to http://my.fake/public/sh3-
microsoft-wince/client.exe. On a device capable of executing Windows 98 binaries,
this URL would be changed to http://my.fake/public/i86-microsoft-win98/
client.exe.
&#x201D;</para>
</remarks>
</member>
<member name="F:InTheHand.Net.Bluetooth.AttributeIds.UniversalAttributeId.IconUrl">
<summary>
This attribute contains a URL that refers to the location of an icon that may be
used to represent the service described by the service record.
[0x000C]
</summary>
<remarks>
<para>[<c>URL</c>]</para>
<para>&#x201C;
This attribute contains a URL that refers to the location of an icon that may be
used to represent the service described by the service record. Since different
hardware devices require different icon formats, a mechanism has been
defined to allow this single attribute to be used to locate an icon that is appropriate
for the client device. In the attribute value URL, the first byte with the
value 0x2A (ASCII character *) is to be replaced by the client application with
a string representing the desired icon format before the URL is to be used.
&#x201D;</para><para>&#x201C;
The list of standardized strings representing icon formats is contained in the
Bluetooth Assigned Numbers document.
&#x201D;</para><para>&#x201C;
For example, assume that the value of the IconURL attribute is http://my.fake/
public/icons/*. On a device that prefers 24 x 24 icons with 256 colors, this URL
would be changed to http://my.fake/public/icons/24x24x8.png. On a device that
prefers 10 x 10 monochrome icons, this URL would be changed to http://
my.fake/public/icons/10x10x1.png.
&#x201D;</para>
</remarks>
</member>
<member name="F:InTheHand.Net.Bluetooth.AttributeIds.UniversalAttributeId.ServiceName">
<summary>
The ServiceName attribute is a string containing the name of the service represented
by a service record.
[0x0000 + LangBaseAttrId]
</summary>
<remarks>
<para>[<c>String</c>]</para>
<para>&#x201C;
The ServiceName attribute is a string containing the name of the service represented
by a service record. It should be brief and suitable for display with an
Icon representing the service. The offset 0x0000 must be added to the attribute
ID base (contained in the LanguageBaseAttributeIDList attribute) in order to
compute the attribute ID for this attribute.
&#x201D;</para>
</remarks>
</member>
<member name="F:InTheHand.Net.Bluetooth.AttributeIds.UniversalAttributeId.ServiceDescription">
<summary>
This attribute is a string containing a brief description of the service.
[0x0001 + LangBaseAttrId]
</summary>
<remarks>
<para>[<c>String</c>]</para>
<para>&#x201C;
This attribute is a string containing a brief description of the service. It should
be less than 200 characters in length. The offset 0x0001 must be added to the
attribute ID base (contained in the LanguageBaseAttributeIDList attribute) in
order to compute the attribute ID for this attribute.
&#x201D;</para>
</remarks>
</member>
<member name="F:InTheHand.Net.Bluetooth.AttributeIds.UniversalAttributeId.ProviderName">
<summary>
This attribute is a string containing the name of the person or organization providing
the service.
[0x0002 + LangBaseAttrId]
</summary>
<remarks>
<para>[<c>String</c>]</para>
<para>&#x201C;
This attribute is a string containing the name of the person or organization providing
the service. The offset 0x0002 must be added to the attribute ID base
(contained in the LanguageBaseAttributeIDList attribute) in order to compute
the attribute ID for this attribute.
&#x201D;</para>
</remarks>
</member>
<member name="F:InTheHand.Net.Bluetooth.AttributeIds.UniversalAttributeId.AdditionalProtocolDescriptorLists">
<summary>
The AdditionalProtocolDescriptorLists attribute supports services that
require more channels in addition to the service described in the ProtocolDescriptorList
attribute. It contains a sequence of ProtocolDescriptorList-elements.
[0x000D]
</summary>
<remarks>
<para>[<c>Data Element Sequence</c> or <c>Data Element Alternative</c>]</para>
<para>Defined in Bluetooth version 2.1, SDP section 5.1.6.</para>
<para>&#x201C;The AdditionalProtocolDescriptorLists attribute contains
a sequence of ProtocolDescriptorList-elements. Each element having the
same format as the <see cref="F:InTheHand.Net.Bluetooth.AttributeIds.UniversalAttributeId.ProtocolDescriptorList"/>
described in section 5.1.5. The ordering of the elements is
significant and should be specified and fixed in Profiles that make use of this
attribute.</para>
<para>&#x201D;The AdditionalProtocolDescriptorLists attribute supports services that require
more channels in addition to the service described in Section 5.1.5 . If the AdditionalProtocolDescriptorLists
attribute is included in a service record, the ProtocolDescriptorList
attribute must be included.&#x201D;
</para>
</remarks>
</member>
<member name="T:InTheHand.Net.Bluetooth.AttributeIds.ServiceDiscoveryServerAttributeId">
<summary>
This service class describes service records that contain attributes of service
discovery server itself.
</summary>
<remarks>
<para>&#x201C;
This service class describes service records that contain attributes of service
discovery server itself. The attributes listed in this section are only valid if the
ServiceClassIDList attribute contains the
ServiceDiscoveryServerServiceClassID. Note that all of the universal attributes
may be included in service records of the ServiceDiscoveryServer class.
&#x201D;</para>
<para>&#x201C;Attribute IDs in the range of 0x0202-0x02FF are reserved.&#x201D;</para>
</remarks>
</member>
<member name="F:InTheHand.Net.Bluetooth.AttributeIds.ServiceDiscoveryServerAttributeId.VersionNumberList">
<summary>
The VersionNumberList is a data element sequence in which each element of
the sequence is a version number supported by the SDP server.
</summary>
<remarks>
<para>[<c>Data Element Sequence</c>]</para>
<para>&#x201C;
The VersionNumberList is a data element sequence in which each element of
the sequence is a version number supported by the SDP server.
&#x201D;</para><para>&#x201C;
A version number is a 16-bit unsigned integer consisting of two fields. The
higher-order 8 bits contain the major version number field and the low-order 8
bits contain the minor version number field. The initial version of SDP has a
major version of 1 and a minor version of 0. When upward compatible changes
are made to the protocol, the minor version number will be incremented. If
incompatible changes are made to SDP, the major version number will be
incremented. This guarantees that if a client and a server support a common
major version number, they can communicate if each uses only features of the
specification with a minor version number that is supported by both client and
server.
&#x201D;</para>
</remarks>
</member>
<member name="F:InTheHand.Net.Bluetooth.AttributeIds.ServiceDiscoveryServerAttributeId.ServiceDatabaseState">
<summary>
The ServiceDatabaseState is a 32-bit integer that is used to facilitate caching
of service records.
</summary>
<remarks>
<para>[<c>32-bit unsigned integer</c>]</para>
<para>&#x201C;
The ServiceDatabaseState is a 32-bit integer that is used to facilitate caching
of service records. If this attribute exists, its value is guaranteed to change
when any of the other service records are added to or deleted from the server's
database. If this value has not changed since the last time a client queried its
value, the client knows that a) none of the other service records maintained by
the SDP server have been added or deleted; and b) any service record handles
acquired from the server are still valid. A client should query this attribute's
value when a connection to the server is established, prior to using any service
record handles acquired during a previous connection.
&#x201D;</para><para>&#x201C;
Note that the ServiceDatabaseState attribute does not change when existing
service records are modified, including the addition, removal, or modification of
service attributes. A service record's ServiceRecordState attribute indicates
when that service record is modified.
&#x201D;</para>
</remarks>
</member>
<member name="T:InTheHand.Net.Bluetooth.AttributeIds.BrowseGroupDescriptorAttributeId">
<summary>
This service class describes the ServiceRecord provided for each BrowseGroupDescriptor
service offered on a Bluetooth device.
</summary>
<remarks>
<para>&#x201C;
This service class describes the ServiceRecord provided for each BrowseGroupDescriptor
service offered on a Bluetooth device. The attributes listed in
this section are only valid if the ServiceClassIDList attribute contains the BrowseGroupDescriptorServiceClassID.
Note that all of the universal attributes may
be included in service records of the BrowseGroupDescriptor class.
&#x201D;</para>
<para>&#x201C;Attribute IDs in the range of 0x0201-0x02FF are reserved.&#x201D;</para>
</remarks>
</member>
<member name="F:InTheHand.Net.Bluetooth.AttributeIds.BrowseGroupDescriptorAttributeId.GroupId">
<summary>
This attribute contains a UUID that can be used to locate services that are
members of the browse group that this service record describes.
</summary>
<remarks>
<para>[<c>UUID</c>]</para>
</remarks>
</member>
<member name="T:InTheHand.Net.Bluetooth.AttributeIds.ObexAttributeId">
<summary>
Service Attribute IDs defined by the OBEX related specifications,
i.e. Object Push and Synchronization Profiles specifications.
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.AttributeIds.ObexAttributeId.GoepL2capPsm">
<summary>
GOEP L2Cap PSM
</summary>
<remarks>
New in GOEP v2.0 but not numbered there.
New in OPP v1.2, FTP v1.2, and BIP v1.1.
<para>[<c>UInt16</c>]</para>
</remarks>
</member>
<member name="F:InTheHand.Net.Bluetooth.AttributeIds.ObexAttributeId.SupportedDataStoresList">
<summary>
Supported Data Stores List (Synchronization Profile)
</summary>
<remarks>
Synchronization Profile &#x2014;
<see cref="F:InTheHand.Net.Bluetooth.BluetoothService.IrMCSync"/>
service class.
<para>[<c>Data Element Sequence of UInt8</c>]</para>
<list type="table">
Values
<listheader><term>Value</term><description>Meaning</description></listheader>
<item><term>0x01</term><description>Phonebook</description></item>
<item><term>0x03</term><description>Calendar</description></item>
<item><term>0x05</term><description>Notes</description></item>
<item><term>0x06</term><description>Message</description></item>
</list>
</remarks>
</member>
<member name="F:InTheHand.Net.Bluetooth.AttributeIds.ObexAttributeId.SupportedFormatsList">
<summary>
Supported Formats List (Object Push Profile)
</summary>
<remarks>
Object Push Profile &#x2014;
<see cref="F:InTheHand.Net.Bluetooth.BluetoothService.ObexObjectPush"/>
service class.
<para>[<c>Data Element Sequence of UInt8</c>]</para>
<list type="table">
Values
<listheader><term>Value</term><description>Meaning</description></listheader>
<item><term>0x01</term><description>vCard 2.1</description></item>
<item><term>0x02</term><description>vCard 3.0</description></item>
<item><term>0x03</term><description>vCard 2.1</description></item>
<item><term>0x04</term><description>vCal 1.0</description></item>
<item><term>0x05</term><description>vNote</description></item>
<item><term>0x06</term><description>vMessage</description></item>
<item><term>0xFF</term><description>any type of object</description></item>
</list>
</remarks>
</member>
<member name="F:InTheHand.Net.Bluetooth.AttributeIds.ObexAttributeId.SupportedCapabilities">
<summary>
Supported Capabilities (BIP)
</summary>
<remarks>
Basic Imaging Profile &#x2014;
<see cref="F:InTheHand.Net.Bluetooth.BluetoothService.Imaging"/>,
<see cref="F:InTheHand.Net.Bluetooth.BluetoothService.ImagingResponder"/>,
<see cref="F:InTheHand.Net.Bluetooth.BluetoothService.ImagingAutomaticArchive"/>,
<see cref="F:InTheHand.Net.Bluetooth.BluetoothService.ImagingReferenceObjects"/>
service classes.
<para>[<c>UInt8</c>]</para>
<list type="table">
Values
<listheader><term>Value</term><description>Meaning</description></listheader>
<item><term>Bit 0</term><description>Generic imaging</description></item>
<item><term>Bit 1</term><description>Capturing</description></item>
<item><term>Bit 2</term><description>Printing</description></item>
<item><term>Bit 3</term><description>Displaying</description></item>
<item><term>Bit 4..7</term><description>Reserved</description></item>
</list>
</remarks>
</member>
<member name="F:InTheHand.Net.Bluetooth.AttributeIds.ObexAttributeId.SupportedFeatures">
<summary>
Supported Features (BIP)
</summary>
<remarks>
Basic Imaging Profile &#x2014;
<see cref="F:InTheHand.Net.Bluetooth.BluetoothService.Imaging"/>,
<see cref="F:InTheHand.Net.Bluetooth.BluetoothService.ImagingResponder"/>,
<see cref="F:InTheHand.Net.Bluetooth.BluetoothService.ImagingAutomaticArchive"/>,
<see cref="F:InTheHand.Net.Bluetooth.BluetoothService.ImagingReferenceObjects"/>
service classes.
<para>[<c>UInt16</c>]</para>
<list type="table">
Values
<listheader><term>Value</term><description>Meaning</description></listheader>
<item><term>Bit 0</term><description>ImagePush</description></item>
<item><term>Bit 1</term><description>ImagePush-Store</description></item>
<item><term>Bit 2</term><description>ImagePush-Print</description></item>
<item><term>Bit 3</term><description>ImagePush-Display</description></item>
<item><term>Bit 4</term><description>ImagePull</description></item>
<item><term>Bit 5</term><description>AdvancedImagePrinting</description></item>
<item><term>Bit 6</term><description>AutomaticArchive</description></item>
<item><term>Bit 7</term><description>RemoteCamera</description></item>
<item><term>Bit 8</term><description>RemoteDisplay</description></item>
<item><term>Bit 9..15</term><description>Reserved</description></item>
</list>
</remarks>
</member>
<member name="F:InTheHand.Net.Bluetooth.AttributeIds.ObexAttributeId.SupportedFunctions">
<summary>
Supported Functions (BIP)
</summary>
<remarks>
Basic Imaging Profile &#x2014;
<see cref="F:InTheHand.Net.Bluetooth.BluetoothService.Imaging"/>,
<see cref="F:InTheHand.Net.Bluetooth.BluetoothService.ImagingResponder"/>,
<see cref="F:InTheHand.Net.Bluetooth.BluetoothService.ImagingAutomaticArchive"/>,
<see cref="F:InTheHand.Net.Bluetooth.BluetoothService.ImagingReferenceObjects"/>
service classes.
<para>[<c>UInt32</c>]</para>
<list type="table">
Values
<listheader><term>Value</term><description>Meaning</description></listheader>
<item><term>Bit 0</term><description>GetCapabilities</description></item>
<item><term>Bit 1</term><description>PutImage</description></item>
<item><term>Bit 2</term><description>PutLinkedAttachment</description></item>
<item><term>Bit 3</term><description>PutLinkedThumbnail</description></item>
<item><term>Bit 4</term><description>RemoteDisplay</description></item>
<item><term>Bit 5</term><description>GetImagesList</description></item>
<item><term>Bit 6</term><description>GetImageProperties</description></item>
<item><term>Bit 7</term><description>GetImage</description></item>
<item><term>Bit 8</term><description>GetLinkedThumbnail</description></item>
<item><term>Bit 9</term><description>GetLinkedAttachment</description></item>
<item><term>Bit 10</term><description>DeleteImage</description></item>
<item><term>Bit 11</term><description>StartPrint</description></item>
<item><term>Bit 12</term><description>Reserved</description></item>
<item><term>Bit 13</term><description>StartArchive</description></item>
<item><term>Bit 14</term><description>GetMonitoringImage</description></item>
<item><term>Bit 16</term><description>GetStatus</description></item>
<item><term>Bit 15, 17..31</term><description>Reserved</description></item>
</list>
</remarks>
</member>
<member name="F:InTheHand.Net.Bluetooth.AttributeIds.ObexAttributeId.TotalImagingDataCapacity">
<summary>
Total Imaging Data Capacity (BIP)
</summary>
<remarks>
Basic Imaging Profile &#x2014;
<see cref="F:InTheHand.Net.Bluetooth.BluetoothService.Imaging"/>,
<see cref="F:InTheHand.Net.Bluetooth.BluetoothService.ImagingResponder"/>,
<see cref="F:InTheHand.Net.Bluetooth.BluetoothService.ImagingAutomaticArchive"/>,
<see cref="F:InTheHand.Net.Bluetooth.BluetoothService.ImagingReferenceObjects"/>
service classes.
<para>[<c>UInt64</c>]</para>
</remarks>
</member>
<member name="T:InTheHand.Net.Bluetooth.AttributeIds.BasicPrintingProfileAttributeId">
<summary>
Service Attribute IDs defined by the Basic Printing Profile specification.
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.AttributeIds.BasicPrintingProfileAttributeId.DocumentFormatsSupported">
<summary>
Document Formats Supported
</summary>
<remarks>[<c>String</c>]</remarks>
</member>
<member name="F:InTheHand.Net.Bluetooth.AttributeIds.BasicPrintingProfileAttributeId.CharacterRepertoiresSupported">
<summary>
Character Repertoires Supported
</summary>
<remarks>[<c>UInt128</c>]</remarks>
</member>
<member name="F:InTheHand.Net.Bluetooth.AttributeIds.BasicPrintingProfileAttributeId.XhtmlPrintImageFormatsSupported">
<summary>
XHTML-Print Image Formats Supported
</summary>
<remarks>[<c>String</c>]</remarks>
</member>
<member name="F:InTheHand.Net.Bluetooth.AttributeIds.BasicPrintingProfileAttributeId.ColorSupported">
<summary>
Color Supported
</summary>
<remarks>[<c>Boolean</c>]</remarks>
</member>
<member name="F:InTheHand.Net.Bluetooth.AttributeIds.BasicPrintingProfileAttributeId.Model1284Id">
<summary>
1284ID
</summary>
<remarks>[<c>String</c>]</remarks>
</member>
<member name="F:InTheHand.Net.Bluetooth.AttributeIds.BasicPrintingProfileAttributeId.PrinterName">
<summary>
Printer Name
</summary>
<remarks>[<c>String</c>]</remarks>
</member>
<member name="F:InTheHand.Net.Bluetooth.AttributeIds.BasicPrintingProfileAttributeId.PrinterLocation">
<summary>
Printer Location
</summary>
<remarks>[<c>String</c>]</remarks>
</member>
<member name="F:InTheHand.Net.Bluetooth.AttributeIds.BasicPrintingProfileAttributeId.DuplexSupported">
<summary>
Duplex Supported
</summary>
<remarks>[<c>Boolean</c>]</remarks>
</member>
<member name="F:InTheHand.Net.Bluetooth.AttributeIds.BasicPrintingProfileAttributeId.MediaTypesSupported">
<summary>
Media Types Supported
</summary>
<remarks>[<c>String</c>]</remarks>
</member>
<member name="F:InTheHand.Net.Bluetooth.AttributeIds.BasicPrintingProfileAttributeId.MaxMediaWidth">
<summary>
MaxMediaWidth
</summary>
<remarks>[<c>UInt16</c>]</remarks>
</member>
<member name="F:InTheHand.Net.Bluetooth.AttributeIds.BasicPrintingProfileAttributeId.MaxMediaLength">
<summary>
MaxMediaLength
</summary>
<remarks>[<c>UInt16</c>]</remarks>
</member>
<member name="F:InTheHand.Net.Bluetooth.AttributeIds.BasicPrintingProfileAttributeId.EnhancedLayoutSupported">
<summary>
Enhanced Layout Supported
</summary>
<remarks>[<c>Boolean</c>]</remarks>
</member>
<member name="F:InTheHand.Net.Bluetooth.AttributeIds.BasicPrintingProfileAttributeId.RuiFormatsSupported">
<summary>
RUI Formats Supported
</summary>
<remarks>[<c>String</c>]</remarks>
</member>
<member name="F:InTheHand.Net.Bluetooth.AttributeIds.BasicPrintingProfileAttributeId.ReferencePrintingRuiSupported">
<summary>
Reference Printing RUI Supported
</summary>
<remarks>[<c>Boolean</c>]</remarks>
</member>
<member name="F:InTheHand.Net.Bluetooth.AttributeIds.BasicPrintingProfileAttributeId.DirectPrintingRuiSupported">
<summary>
Direct Printing RUI Supported
</summary>
<remarks>[<c>Boolean</c>]</remarks>
</member>
<member name="F:InTheHand.Net.Bluetooth.AttributeIds.BasicPrintingProfileAttributeId.ReferencePrintingTopUrl">
<summary>
Reference Printing Top URL
</summary>
<remarks>[<c>URL</c>]</remarks>
</member>
<member name="F:InTheHand.Net.Bluetooth.AttributeIds.BasicPrintingProfileAttributeId.DirectPrintingTopUrl">
<summary>
Direct Printing Top URL
</summary>
<remarks>[<c>URL</c>]</remarks>
</member>
<member name="F:InTheHand.Net.Bluetooth.AttributeIds.BasicPrintingProfileAttributeId.PrinterAdminRuiTopUrl">
<summary>
Printer Admin RUI Top URL
</summary>
<remarks>[<c>URL</c>]</remarks>
</member>
<member name="F:InTheHand.Net.Bluetooth.AttributeIds.BasicPrintingProfileAttributeId.DeviceName">
<summary>
Device Name
</summary>
<remarks>[<c>String</c>]</remarks>
</member>
<member name="T:InTheHand.Net.Bluetooth.AttributeIds.PersonalAreaNetworkingProfileAttributeId">
<summary>
Service Attribute IDs defined by the Personal Area Networking Profile specification.
</summary>PersonalAreaNetworkingProfile
</member>
<member name="F:InTheHand.Net.Bluetooth.AttributeIds.PersonalAreaNetworkingProfileAttributeId.SecurityDescription">
<summary>
Security Description
</summary>
<remarks>&#x201C;Security Description&#x201D; [<c>UInt16</c>]</remarks>
</member>
<member name="F:InTheHand.Net.Bluetooth.AttributeIds.PersonalAreaNetworkingProfileAttributeId.NetAccessType">
<summary>
NetAccessType
</summary>
<remarks>&#x201C;Type of Network Access Available&#x201D; [<c>UInt16</c>]</remarks>
</member>
<member name="F:InTheHand.Net.Bluetooth.AttributeIds.PersonalAreaNetworkingProfileAttributeId.MaxNetAccessRate">
<summary>
MaxNetAccessRate
</summary>
<remarks>&#x201C;Maximum possible Network Access Data Rate&#x201D; [<c>UInt32</c>]</remarks>
</member>
<member name="F:InTheHand.Net.Bluetooth.AttributeIds.PersonalAreaNetworkingProfileAttributeId.IPv4Subnet">
<summary>
IPv4Subnet
</summary>
<remarks>[<c>String</c>]</remarks>
</member>
<member name="F:InTheHand.Net.Bluetooth.AttributeIds.PersonalAreaNetworkingProfileAttributeId.IPv6Subnet">
<summary>
IPv6Subnet
</summary>
<remarks>[<c>String</c>]</remarks>
</member>
<member name="T:InTheHand.Net.Bluetooth.AttributeIds.HeadsetProfileAttributeId">
<summary>
Service Attribute IDs defined by the Headset Profile specification.
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.AttributeIds.HeadsetProfileAttributeId.RemoteAudioVolumeControl">
<summary>
Remote audio volume control
</summary>
<remarks>[<c>Boolean</c>]</remarks>
</member>
<member name="T:InTheHand.Net.Bluetooth.AttributeIds.HandsFreeProfileAttributeId">
<summary>
Service Attribute IDs defined by the Hand-Free Profile specification.
</summary>HandFreeProfile
</member>
<member name="F:InTheHand.Net.Bluetooth.AttributeIds.HandsFreeProfileAttributeId.Network">
<summary>
Network
</summary>
<remarks>
<para>&#x201C;The "Network" attribute states, if the AG has the capability
to reject incoming calls[4]. This attribute is not encoded as a data element
sequence; it is simply an 8-bit unsigned integer. The information given
in the “Network” attribute shall be the same as the information given
in Bit 5 of the unsolicited result code +BRSF (see Section 4.24.3). An
attribute value of 0x00 is translated to a bit value of 0; an attribute
value of 0x01 is translated to a bit value of 1.&#x201D;
</para>
[<c>UInt8</c>]
</remarks>
</member>
<member name="F:InTheHand.Net.Bluetooth.AttributeIds.HandsFreeProfileAttributeId.SupportedFeatures">
<summary>
SupportedFeatures
</summary>
<remarks>
<para>&#x201C;The attribute &#x201C;SupportedFeatures&#x201D; states the features
supported in each device. &#x2026;
The set of features supported in each case is bit-wise defined in this
attribute on a yes/no basis. The mapping between the features and their
corresponding bits within the attribute is listed below in for the HF
and in for the AG. &#x2026;
<code lang="none">
Bit Feature Default in HF
(0=LSB)
0 EC and/or NR function (yes/no, 1 = yes, 0 = no) 0
1 Call waiting and three way calling(yes/no, 1 = yes, 0 = no) 0
2 CLI presentation capability (yes/no, 1 = yes, 0 = no) 0
3 Voice recognition activation (yes/no, 1= yes, 0 = no) 0
4 Remote volume control (yes/no, 1 = yes, 0 = no) 0
</code>
<para>Table 5.2 “SupportedFeatures” attribute bit mapping for the HF</para>
<code lang="none">
Bit Feature Default in AG
(0=LSB)
0 Three-way calling (yes/no, 1 = yes, 0 = no) 1
1 EC and/or NR function (yes/no, 1 = yes, 0 = no) 0
2 Voice recognition function (yes/no, 1 = yes, 0 = no) 0
3 In-band ring tone capability (yes/no, 1 = yes, 0 = no) 1
4 Attach a phone number to a voice tag (yes/no, 1 = yes, 0 = no) 0
</code>
Table 5.4 “SupportedFeatures” attribute bit mapping for the AG&#x201D;
</para>
[<c>UInt16</c>]</remarks>
</member>
<member name="T:InTheHand.Net.Bluetooth.AttributeIds.HealthDeviceAttributeId">
<summary>
Service Attribute IDs defined by the Health Device Profile specification.
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.AttributeIds.HealthDeviceAttributeId.SupportFeaturesList">
<summary>
SupportFeaturesList
</summary>
-
<remarks>
<para>"This is a sequence for which each element is a sequence that
describes a single application data end-point on the device. The
Supported Features attribute (MDEP List) provides an indication of
the data types that an MDEP supports.",
"...each description is itself a sequence of three or more elements."
</para>
<c>[Sequence]</c>
</remarks>
</member>
<member name="F:InTheHand.Net.Bluetooth.AttributeIds.HealthDeviceAttributeId.DataExchangeSpecification">
<summary>
DataExchangeSpecification
</summary>
-
<remarks>
<para>"This attribute is a one-byte reference, with the value taken
from the Bluetooth Assigned Numbers [3] to identify the Data Exchange
Protocol used (e.g. ISO/IEEE 11073-20601 specification)."
e.g. value 0x01 is ISO/IEEE 11073-20601, "Health informatics - Personal
health device communication - Application profile - Optimized exchange
protocol"
</para>
<c>[UInt8]</c>
</remarks>
</member>
<member name="F:InTheHand.Net.Bluetooth.AttributeIds.HealthDeviceAttributeId.McapSupportedProcedures">
<summary>
MCAP Supported Procedures
</summary>
-
<remarks>
<para>"This attribute is a one byte bit-mask that indicates the MCAP
procedures that are supported by this HDP service."
</para>
<code lang="none">
0x02 Supports Reconnect Initiation 3
0x04 Supports Reconnect Acceptance 4
0x08 Supports Clock Synchronization Protocol (includes support for at least Sync-Slave Role)
0x10 Supports Sync-Master Role
</code>
<c>[UInt8]</c>
</remarks>
</member>
<member name="T:InTheHand.Net.Bluetooth.BlueSoleil.BlueSoleilSocketException">
<summary>
SocketException holding a BlueSoleil error code from the original error,
which is added to the exception message.
</summary>
-
<remarks>
Will always be internal so just catch SocketException as for the other stacks.
</remarks>
</member>
<member name="F:InTheHand.Net.Bluetooth.BlueSoleil.BtSdkError.NO_SERVICE">
<summary>
&#x201C;No service record with the specified search pattern is found on the remote device.&#x201D;
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BlueSoleil.BtSdkError.SERVICE_RECORD_NOT_EXIST">
<summary>
&#x201C;The specified service record does not exist on the remote device..&#x201D;
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BlueSoleil.BtSdkError.PAGE_TIMEOUT">
<summary>
&#x201C;HCI error &#x201C;Page Timeout (0X04)&#x201D; is received.&#x201D;
</summary>
</member>
<member name="T:InTheHand.Net.Bluetooth.BlueSoleil.IBluesoleilApi">
<exclude/>
</member>
<member name="M:InTheHand.Net.Bluetooth.BlueSoleil.IBluesoleilApi.Btsdk_IsSDKInitialized">
<summary>
The Btsdk_IsSDKInitialized function indicates whether a successful
call to Btsdk_Init is made.
</summary>
<returns>
</returns>
</member>
<member name="M:InTheHand.Net.Bluetooth.BlueSoleil.IBluesoleilApi.Btsdk_IsServerConnected">
<summary>
The Btsdk_IsServerConnected function checks whether client
application can call BlueSoleil Server APIs.
</summary>
<returns>
When this fuction returns
<see langword="true"/>, client application can call APIs normally, versa versit.
</returns>
</member>
<member name="M:InTheHand.Net.Bluetooth.BlueSoleil.IBluesoleilApi.Btsdk_SetStatusInfoFlag(System.UInt16)">
<summary>
The Btsdk_SetStatusInfoFlag function is used to set the status
changing callback types which the user wants to receive.
</summary>
-
<remarks>
usMsgType can be one of the following value or their combination:
<list type="definition">
<item><term>BTSDK_NTSERVICE_STATUS_FLAG</term>
<description>The status change of BlueSoleil server
event or OS message event.</description>
</item>
<item><term>BTSDK_BLUETOOTH_STATUS_FLAG</term>
<description>Message event of the change of Bluetooth</description>
status.
</item>
<item><term>BTSDK_REFRESH_STATUS_FLAG</term>
<description>Refresh event.</description>
</item>
</list>
</remarks>
-
<param name="usMsgType">See remarks.</param>
-
<returns>BTSDK_OK for success, other for error code.</returns>
</member>
<member name="M:InTheHand.Net.Bluetooth.BlueSoleil.IBluesoleilApi.Btsdk_IsBluetoothReady">
<summary>
The Btsdk_IsBluetoothReady function checks whether the local
Bluetooth device is working.
</summary>
<returns>Boolean</returns>
</member>
<member name="M:InTheHand.Net.Bluetooth.BlueSoleil.IBluesoleilApi.Btsdk_UpdateRemoteDeviceName(System.UInt32,System.Byte[],System.UInt16@)">
<summary>
Gets the current user-friendly name of the specified remote device.
</summary>
-
<remarks>
Before calling Btsdk_UpdateRemoteDeviceName, the device database must be initialized by a
previous successful call to Btsdk_StartBluetooth.
The user-friendly device name is a UTF-8 character string. The device name acquired by this
command is stored automatically in the device database.
</remarks>
</member>
<member name="M:InTheHand.Net.Bluetooth.BlueSoleil.IBluesoleilApi.Btsdk_GetRemoteRSSI(System.UInt32,System.SByte@)">
<summary>
"gets the RSSI value of the specified remote device."
</summary>
-
<remarks>
<para>
</para>
<para>"a connection between local device and the specified
remote device must be created first."
</para>
</remarks>
-
<param name="device_handle">hDev
</param>
<param name="prssi">"Range: -128 to 127 (dB)."
</param>
</member>
<member name="M:InTheHand.Net.Bluetooth.BlueSoleil.IBluesoleilApi.Btsdk_GetRemoteLinkQuality(System.UInt32,System.UInt16@)">
<summary>
"gets the current link quality value of the connection between local
device and the specified remote device."
</summary>
-
<remarks>"The higher the value, the better the link quality is."
</remarks>
-
<returns>"Range: 0 to 0xFF."
</returns>
</member>
<member name="M:InTheHand.Net.Bluetooth.BlueSoleil.IBluesoleilApi.Btsdk_GetRemoteDeviceName(System.UInt32,System.Byte[],System.UInt16@)">
<summary>
"Gets the user-friendly name of the specified remote device from the device database."
</summary>
-
<remarks>
"Before calling Btsdk_GetRemoteDeviceName, the device database must be initialized by a
previous successful call to Btsdk_Init.
The user-friendly device name is a UTF-8 character string. The Btsdk_GetRemoteDeviceNamefunction returns =BTSDK_OPERATION_FAILURE immediately if the device name doesnt
exist in the database. In this case, the application shall call Btsdk_UpdateRemoteDeviceName
to acquire the name information directly from the remote device.
BlueSoleil will automatically update the device name when the local device connects to the
specified remote device.
</remarks>
</member>
<member name="M:InTheHand.Net.Bluetooth.BlueSoleil.NativeMethods.Btsdk_UpdateRemoteDeviceName(System.UInt32,System.Byte[],System.UInt16@)">
<summary>
Gets the current user-friendly name of the specified remote device.
</summary>
-
<remarks>
Before calling Btsdk_UpdateRemoteDeviceName, the device database must be initialized by a
previous successful call to Btsdk_StartBluetooth.
The user-friendly device name is a UTF-8 character string. The device name acquired by this
command is stored automatically in the device database.
</remarks>
</member>
<member name="M:InTheHand.Net.Bluetooth.BlueSoleil.NativeMethods.Btsdk_GetRemoteLinkQuality(System.UInt32,System.UInt16@)">
<summary>
"gets the current link quality value of the connection between local
device and the specified remote device."
</summary>
-
<remarks>"The higher the value, the better the link quality is."
</remarks>
-
<returns>"Range: 0 to 0xFF."
</returns>
</member>
<member name="M:InTheHand.Net.Bluetooth.BlueSoleil.NativeMethods.Btsdk_GetRemoteDeviceName(System.UInt32,System.Byte[],System.UInt16@)">
<summary>
"Gets the user-friendly name of the specified remote device from the device database."
</summary>
-
<remarks>
"Before calling Btsdk_GetRemoteDeviceName, the device database must be initialized by a
previous successful call to Btsdk_Init.
The user-friendly device name is a UTF-8 character string. The Btsdk_GetRemoteDeviceNamefunction returns =BTSDK_OPERATION_FAILURE immediately if the device name doesnt
exist in the database. In this case, the application shall call Btsdk_UpdateRemoteDeviceName
to acquire the name information directly from the remote device.
BlueSoleil will automatically update the device name when the local device connects to the
specified remote device.
</remarks>
</member>
<member name="P:InTheHand.Net.Bluetooth.BlueSoleil.SerialPortNetworkStream.Connected">
<summary>
For FooBarClient.Connected
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BlueSoleil.StackConsts.DiscoveryMode.BTSDK_GENERAL_DISCOVERABLE">
<summary>
&#x201C;Sets the device into general discoverable mode. This is
the default discoverable mode.&#x201D;
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BlueSoleil.StackConsts.DiscoveryMode.BTSDK_LIMITED_DISCOVERABLE">
<summary>
&#x201C;Sets the device into limited discoverable mode. If this
value is specified, BTSDK_GENERAL_DISCOVERABLE
mode value is ignored by BlueSoleil.&#x201D;
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BlueSoleil.StackConsts.DiscoveryMode.BTSDK_DISCOVERABLE">
<summary>
&#x201C;Makes the device discoverable. This is equivalent to
BTSDK_GENERAL_DISCOVERABLE.&#x201D;
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BlueSoleil.StackConsts.DiscoveryMode.BTSDK_CONNECTABLE">
<summary>
&#x201C;Makes the device connectable. This is the default
connectable mode.&#x201D;
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BlueSoleil.StackConsts.DiscoveryMode.BTSDK_PAIRABLE">
<summary>
&#x201C;Makes the device pairable. This is the default pairable
mode.&#x201D;
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BlueSoleil.StackConsts.ConnectionEventType.CONN_IND">
<summary>
&#x201C;A remote device connects to a local service record.&#x201D;
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BlueSoleil.StackConsts.ConnectionEventType.DISC_IND">
<summary>
&#x201C;The remote device disconnects the connection, or the
connection is lost due to radio communication problems,
e.g. the remote device is out of communication range.&#x201D;
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BlueSoleil.StackConsts.ConnectionEventType.CONN_CFM">
<summary>
&#x201C;A local device connects to a remote service record.&#x201D;
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BlueSoleil.StackConsts.ConnectionEventType.DISC_CFM">
<summary>
&#x201C;The local device disconnects the connection from remote
service.&#x201D;
</summary>
</member>
<member name="T:InTheHand.Net.Bluetooth.BlueSoleil.StackConsts.AttributeLookup">
<summary>
"Possible flags for member 'mask' in _BtSdkRemoteServiceAttrStru"
</summary>
</member>
<member name="M:InTheHand.Net.Bluetooth.BlueSoleil.Structs.BtSdkRemoteServiceAttrStru.#ctor(InTheHand.Net.Bluetooth.BlueSoleil.StackConsts.AttributeLookup,System.UInt16,System.Byte[],System.IntPtr)">
<summary>
for Test.
</summary>
</member>
<member name="M:InTheHand.Net.Bluetooth.BlueSoleil.Structs.BtSdkRmtSPPSvcExtAttrStru.#ctor(System.Byte)">
<summary>
for Test.
</summary>
</member>
<member name="T:InTheHand.Net.Bluetooth.BlueZ.StackConsts.SdpRecordRegisterFlags">
<summary>
Values of the flags parameter to sdp_record_register
</summary>
</member>
<member name="T:InTheHand.Net.Bluetooth.BlueZ.StackConsts.SdpConnectFlags">
<summary>
Values of the flags parameter to sdp_connect
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BlueZ.StackConsts.sdp_attrreq_type_t.SDP_ATTR_REQ_INDIVIDUAL">
<summary>
Attributes are specified as individual elements
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BlueZ.StackConsts.sdp_attrreq_type_t.SDP_ATTR_REQ_RANGE">
<summary>
Attributes are specified as a range
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BlueZ.StackConsts.so_RFCOMM_CONNINFO">
<summary>
Use with struct rfcomm_conninfo{hci_handle, dev_class}.
</summary>
</member>
<member name="T:InTheHand.Net.Bluetooth.BlueZ.Structs.rfcomm_conninfo">
<summary>
Use with so_RFCOMM_CONNINFO.
</summary>
</member>
<member name="T:InTheHand.Net.Bluetooth.Factory.BluetoothFactory">
<exclude/>
</member>
<member name="M:InTheHand.Net.Bluetooth.Factory.BluetoothFactory.GetTheFactoryOfTypeOrDefault``1">
<summary>
PRE-RELEASE
Get the instance of the given factory type -- if it exists.
</summary>
-
<typeparam name="TFactory">The factory type e.g.
<see cref="T:InTheHand.Net.Bluetooth.SocketsBluetoothFactory"/>
or <see cref="T:InTheHand.Net.Bluetooth.Widcomm.WidcommBluetoothFactoryBase"/>
etc.
</typeparam>
-
<returns>The instance of the given type or <c>null</c>.
</returns>
</member>
<member name="M:InTheHand.Net.Bluetooth.Factory.BluetoothFactory.GetTheFactoryOfTypeOrDefault(System.Type)">
<summary>
PRE-RELEASE
Get the instance of the given factory type -- if it exists.
</summary>
-
<param name="factoryType">The factory type e.g.
<see cref="T:InTheHand.Net.Bluetooth.SocketsBluetoothFactory"/>
or <see cref="T:InTheHand.Net.Bluetooth.Widcomm.WidcommBluetoothFactoryBase"/>
etc.
</param>
-
<returns>The instance of the given type or <c>null</c>.
</returns>
</member>
<member name="T:InTheHand.Net.Bluetooth.Factory.CommonBluetoothClient">
<exclude/>
</member>
<member name="M:InTheHand.Net.Bluetooth.Factory.CommonBluetoothClient.BeginServiceDiscovery(InTheHand.Net.BluetoothAddress,System.Guid,System.AsyncCallback,System.Object)">
<summary>
When overidden, initiates
lookup the SDP record with the give Service Class Id
to find the RFCOMM port number (SCN) that the server is listening on.
The process returns a list of port numbers.
</summary>
<param name="address">The remote device.
</param>
<param name="serviceGuid">The Service Class Id.
</param>
<param name="asyncCallback">callback</param>
<param name="state">state</param>
<returns>IAsyncResult</returns>
</member>
<member name="M:InTheHand.Net.Bluetooth.Factory.CommonBluetoothClient.EndServiceDiscovery(System.IAsyncResult)">
<summary>
When overidden,
completes the SDP Record to port number lookup process
</summary>
-
<param name="ar">IAsyncResult from <see cref="M:InTheHand.Net.Bluetooth.Factory.CommonBluetoothClient.BeginServiceDiscovery(InTheHand.Net.BluetoothAddress,System.Guid,System.AsyncCallback,System.Object)"/>.
</param>
-
<remarks>
<para>There must be at least one entry in the result list for each
Service Record found for the specified Service Class Id. This
allows us to know if no records were found, or that records were
found but none of them were for RFCOMM.
If a particular record does not have a RFCOMM port then -1 (negative
one should be added to the list for it).
</para>
<para>The process may throw an exception if an error occurs, e.g.
the remote device did not respond.
</para>
</remarks>
-
<returns>A <see cref="T:System.Collections.Generic.List{System.Int32}"/>
with at least one entry for each Service Record
found for the specified Service Class Id, the item being -1 if the
record has no port. is .
</returns>
</member>
<member name="T:InTheHand.Net.Bluetooth.Factory.CommonBluetoothInquiry`1">
<exclude/>
</member>
<member name="M:InTheHand.Net.Bluetooth.Factory.CommonBluetoothInquiry`1.InquiryTimeoutParams.InquiryLengthAsMiliseconds">
<summary>
Get timeout value in Int32 milliseconds,
as NETCF <c>WaitHandle.WaitOne</c> can't use TimeSpan.
</summary>
-
<returns>An Int32 containing the timeout value in milliseconds.
</returns>
</member>
<member name="T:InTheHand.Net.Bluetooth.Factory.CommonDiscoveryBluetoothClient">
<exclude/>
</member>
<member name="M:InTheHand.Net.Bluetooth.Factory.CommonDiscoveryBluetoothClient.ConvertBthInquiryParams(System.Int32,System.TimeSpan,System.Byte@,System.Byte@)">
<summary>
Convert the user Inquiry parameters to the formats used by HCI.
</summary>
<param name="maxDevices">The <c>maxDevices</c> parameter from e.g.
<see cref="M:InTheHand.Net.Sockets.BluetoothClient.DiscoverDevices(System.Int32,System.Bool,System.Bool,System.Bool,System.Bool)"/>.
</param>
<param name="inquiryLength">The <see cref="P:InTheHand.Net.Sockets.BluetoothClient.InquiryLength"/> property
<see cref="T:InTheHand.Net.Sockets.BluetoothClient"/>.
</param>
<param name="hciMaxResponses">On return contains the Num_Responses value to be passed to the HCI Inquiry command.
If greater that 255 or less than zero, the value 0 will be returned.
HCI uses zero as "Unlimited".
</param>
<param name="hciInquiryLength">On return contains the Inquiry_Length value to be passed to the HCI Inquiry command.
Is scaled by the divisor 1.28secs
and if not in range 1 to 0x30 inclusive is set to 10.
</param>
</member>
<member name="T:InTheHand.Net.Bluetooth.Factory.CommonRfcommStream">
<exclude/>
<summary>
</summary>
-
<remarks>
<para>Sub-class must call various methods at the following events:
<list type="bullet">
<item><term>open</term>
<description><see cref="M:InTheHand.Net.Bluetooth.Factory.CommonRfcommStream.HandleCONNECTED(System.String)"/>
or <see cref="M:InTheHand.Net.Bluetooth.Factory.CommonRfcommStream.HandleCONNECT_ERR(System.String,System.Nullable{System.Int32})"/> on failure</description>
</item>
<item><term>close</term>
<description><see cref="M:InTheHand.Net.Bluetooth.Factory.CommonRfcommStream.HandleCONNECT_ERR(System.String,System.Nullable{System.Int32})"/></description>
</item>
<item><term>data arrival</term>
<description><see cref="M:InTheHand.Net.Bluetooth.Factory.CommonRfcommStream.HandlePortReceive(System.Byte[])"/></description>
</item>
<item><term>flow control off</term>
<description><see cref="M:InTheHand.Net.Bluetooth.Factory.CommonRfcommStream.FreePendingWrites"/></description>
</item>
</list>
</para>
</remarks>
</member>
<member name="M:InTheHand.Net.Bluetooth.Factory.CommonRfcommStream.EnsureOpenForWrite">
<summary>
Fails if state is not Connected.
</summary>
</member>
<member name="M:InTheHand.Net.Bluetooth.Factory.CommonRfcommStream.EnsureOpenForRead">
<summary>
Fails if state is not Connected or PeerDidClose.
</summary>
</member>
<member name="P:InTheHand.Net.Bluetooth.Factory.CommonRfcommStream.Connected">
<summary>
Used by Client, note from MSDN Socket.Connected:
"Gets a value that indicates whether a Socket is connected to a remote host as of the last Send or Receive operation."
</summary>
-
<remarks>
<para>From MSDN <see cref="P:System.Net.Sockets.Socket.Connected"/>:
"Gets a value that indicates whether a Socket is connected to a remote host as of the last Send or Receive operation."
From MSDN <see cref="P:System.Net.Sockets.TcpClient.Connected"/>:
"true if the Client socket was connected to a remote resource as of the most recent operation; otherwise, false."
</para>
</remarks>
</member>
<member name="M:InTheHand.Net.Bluetooth.Factory.CommonRfcommStream.RemovePortRecords">
<summary>
<see cref="M:InTheHand.Net.Bluetooth.Factory.CommonRfcommStream.DoPortClose(System.Boolean)"/>
</summary>
</member>
<member name="M:InTheHand.Net.Bluetooth.Factory.CommonRfcommStream.DoOtherPreDestroy(System.Boolean)">
<summary>
<see cref="M:InTheHand.Net.Bluetooth.Factory.CommonRfcommStream.DoPortClose(System.Boolean)"/>
</summary>
<param name="disposing">Disposing</param>
</member>
<member name="M:InTheHand.Net.Bluetooth.Factory.CommonRfcommStream.DoPortClose(System.Boolean)">
<summary>
Called from CloseInternal and Dispose;
RemovePortRecords is called before from both places.
Dispose then calls DoOtherPreDestroy and DoPortDestroy in that order.
</summary>
<param name="disposing">Disposing</param>
</member>
<member name="M:InTheHand.Net.Bluetooth.Factory.CommonRfcommStream.DoPortDestroy(System.Boolean)">
<summary>
<see cref="M:InTheHand.Net.Bluetooth.Factory.CommonRfcommStream.DoPortClose(System.Boolean)"/>
</summary>
<param name="disposing">Disposing</param>
</member>
<member name="M:InTheHand.Net.Bluetooth.Factory.CommonRfcommStream.DoOtherSetup(InTheHand.Net.BluetoothEndPoint,System.Int32)">
<summary>
Called before DoOpenClient.
For instance is empty on BTPS, on Widcomm it calls SetScnForPeerServer and SetSecurityLevelClient.
</summary>
<param name="bep">Endpoint</param>
<param name="scn">Channel number</param>
</member>
<member name="M:InTheHand.Net.Bluetooth.Factory.CommonRfcommStream.DoOpenClient(System.Int32,InTheHand.Net.BluetoothAddress)">
<summary>
Starts the connect process. The async completion should call
either <see cref="M:InTheHand.Net.Bluetooth.Factory.CommonRfcommStream.HandleCONNECTED(System.String)"/> or <see cref="M:InTheHand.Net.Bluetooth.Factory.CommonRfcommStream.HandleCONNECT_ERR(System.String,System.Nullable{System.Int32})"/>.
</summary>
<param name="scn">scn</param>
<param name="addressToConnect">addr</param>
</member>
<member name="M:InTheHand.Net.Bluetooth.Factory.CommonRfcommStream.HandleCONNECTED(System.String)">
<summary>
Call when connection is successfully made.
</summary>
<param name="eventId">Used for logging etc. Pass a string
containing the name of the stack's event/status that occurred.
</param>
</member>
<member name="M:InTheHand.Net.Bluetooth.Factory.CommonRfcommStream.DoIsConnected(InTheHand.Net.BluetoothAddress@)">
<summary>
Get the remote address.
</summary>
-
<param name="p_remote_bdaddr">On return contains the address to which we are connected.
</param>
-
<returns><see langword="true"/> if connected, but we ignore the result.
</returns>
</member>
<member name="M:InTheHand.Net.Bluetooth.Factory.CommonRfcommStream.HandleCONNECT_ERR(System.String,System.Nullable{System.Int32})">
<summary>
Call when connection is un-successfully made (fails),
and also when the connection closes.
</summary>
<param name="eventId">Used for logging etc. Pass a string
containing the name of the stack's event/status that occurred.
</param>
<param name="socketErrorCode">The socket error code for this failure
-- known.
Pass for instance a value from <see cref="T:System.Net.Sockets.SocketError"/>
as an <see cref="T:System.Int32"/>;
or <see langword="null"/> respectively.
</param>
</member>
<member name="M:InTheHand.Net.Bluetooth.Factory.CommonRfcommStream.CloseInternal(InTheHand.Net.AsyncResult{System.Int32,InTheHand.Net.Bluetooth.Factory.CommonRfcommStream.BeginReadParameters}[]@,InTheHand.Net.AsyncNoResult{InTheHand.Net.Bluetooth.Factory.CommonRfcommStream.BeginReadParameters}[]@)">
<summary>
Used: 1. when we get CONNECT_ERR from the stack, and POSSIBLY 2. when we close the
stream to do consumer timeout (SO_RCVTIMEO/etc).
</summary>
<param name="allRead">Out: to call <see cref="M:InTheHand.Net.Bluetooth.Widcomm.WidcommRfcommStream.AbortIf(System.Collections.Generic.IList{InTheHand.Net.AsyncResult{System.Int32,InTheHand.Net.Bluetooth.Widcomm.WidcommRfcommStream.BeginReadParameters}}, System.Collections.Generic.IList{InTheHand.Net.AsyncNoResult{InTheHand.Net.Bluetooth.Widcomm.WidcommRfcommStream.BeginReadParameters}})"/>
on.</param>
<param name="allWrite">Out: to call <see cref="M:InTheHand.Net.Bluetooth.Widcomm.WidcommRfcommStream.AbortIf(System.Collections.Generic.IList{InTheHand.Net.AsyncResult{System.Int32,InTheHand.Net.Bluetooth.Widcomm.WidcommRfcommStream.BeginReadParameters}}, System.Collections.Generic.IList{InTheHand.Net.AsyncNoResult{InTheHand.Net.Bluetooth.Widcomm.WidcommRfcommStream.BeginReadParameters}})"/>
on.</param>
</member>
<member name="M:InTheHand.Net.Bluetooth.Factory.CommonRfcommStream.CloseInternalAndAbort_willLock">
<summary>
Close the connection from the network/stack side (not from the consumer side).
</summary>
-
<remarks>
<para>When we call Close the object is disposed and outstanding and
new operations fail with ObjectDisposedException. This method
instead closes the connection from the network/stack side and thus
operations fail with an IO error etc.
</para>
</remarks>
</member>
<member name="M:InTheHand.Net.Bluetooth.Factory.CommonRfcommStream.TryBondingIf_inLock(InTheHand.Net.BluetoothAddress,System.Int32,System.Exception@)">
<summary>
DEPRECATED, should return false.
</summary>
<returns>Whether Bonding was attempted and thus the connect should be retried.
</returns>
</member>
<member name="T:InTheHand.Net.Bluetooth.Factory.DecoratorNetworkStream">
<exclude/>
</member>
<member name="T:InTheHand.Net.Bluetooth.Factory.DiscoDevsParams">
<exclude/>
</member>
<member name="T:InTheHand.Net.Bluetooth.Factory.IBluetoothClient">
<exclude/>
</member>
<member name="T:InTheHand.Net.Bluetooth.Factory.IBluetoothDeviceInfo">
<exclude/>
</member>
<member name="M:InTheHand.Net.Bluetooth.Factory.IBluetoothDeviceInfo.Merge(InTheHand.Net.Bluetooth.Factory.IBluetoothDeviceInfo)">
<summary>
Update the instance with value from the other.
</summary>
-
<param name="other">The other device, to read properties from.
</param>
-
<remarks>
<para>Used by the device discovery code in merging the devices
found by Inquiry and the 'remembered' devices. The current
device is the one found by inqury and the <paramref name="other"/>
device is a 'remembered' one. So its common to update the
'Remembered' and 'Authenticated' properties for instance.
</para>
</remarks>
</member>
<member name="T:InTheHand.Net.Bluetooth.Factory.IBluetoothFactoryFactory">
<exclude/>
<summary>
Defines a class that provides Bluetooth Factory initialisation but returns
multiple factories.
</summary>
-
<remarks>
<para>In most cases configuration is provided so that
<see cref="T:InTheHand.Net.Bluetooth.BluetoothFactory"/> loads one or more
classes each derived from <see cref="T:InTheHand.Net.Bluetooth.BluetoothFactory"/>.
There the instance is the factory. This interface allows a class to be
loaded by <see cref="T:InTheHand.Net.Bluetooth.BluetoothFactory"/> but
instead <strong>returns</strong> a list of factory instances.
</para>
</remarks>
</member>
<member name="M:InTheHand.Net.Bluetooth.Factory.IBluetoothFactoryFactory.GetFactories(System.Collections.Generic.IList{System.Exception})">
<summary>
Get the list of factories.
</summary>
<param name="errors">A list of exceptions, to which any errors in
attempting to create the factories are added.
</param>
<returns>A list of successfully created factories.
</returns>
</member>
<member name="T:InTheHand.Net.Bluetooth.Factory.IBluetoothListener">
<exclude/>
</member>
<member name="T:InTheHand.Net.Bluetooth.Factory.IBluetoothRadio">
<exclude/>
</member>
<member name="T:InTheHand.Net.Bluetooth.Factory.IBluetoothSecurity">
<summary>
Handles security between bluetooth devices.
</summary>
-
<remarks>
<para>Used by <see cref="P:InTheHand.Net.Bluetooth.BluetoothPublicFactory.BluetoothSecurity"/>.
</para>
</remarks>
</member>
<member name="M:InTheHand.Net.Bluetooth.Factory.IBluetoothSecurity.PairRequest(InTheHand.Net.BluetoothAddress,System.String)">
<summary>
Intiates pairing for a remote device.
</summary>
-
<param name="device">Remote device with which to pair.</param>
<param name="pin">Chosen PIN code, must be between 1 and 16 ASCII characters.</param>
-
<returns>Whether the operation was successful.</returns>
</member>
<member name="M:InTheHand.Net.Bluetooth.Factory.IBluetoothSecurity.RemoveDevice(InTheHand.Net.BluetoothAddress)">
<summary>
Remove the pairing with the specified device
</summary>
-
<param name="device">Remote device with which to remove pairing.</param>
-
<returns>TRUE if device was successfully removed, else FALSE.</returns>
</member>
<member name="M:InTheHand.Net.Bluetooth.Factory.IBluetoothSecurity.SetPin(InTheHand.Net.BluetoothAddress,System.String)">
<summary>
This function stores the personal identification number (PIN) for the Bluetooth device.
</summary>
<param name="device">Address of remote device.</param>
<param name="pin">Pin, alphanumeric string of between 1 and 16 ASCII characters.</param>
<remarks><para>On Windows CE platforms this calls <c>BthSetPIN</c>,
its MSDN remarks say:
</para>
<para>&#x201C;Stores the pin for the Bluetooth device identified in pba.
The active connection to the device is not necessary, nor is the presence
of the Bluetooth controller. The PIN is persisted in the registry until
BthRevokePIN is called.
</para>
<para>&#x201C;While the PIN is stored, it is supplied automatically
after the PIN request is issued by the authentication mechanism, so the
user will not be prompted for it. Typically, for UI-based devices, you
would set the PIN for the duration of authentication, and then revoke
it after authentication is complete.&#x201D;
</para>
<para>See also
<see cref="M:InTheHand.Net.Bluetooth.BluetoothSecurity.RevokePin(InTheHand.Net.BluetoothAddress)"/>
</para>
</remarks>
<returns>True on success, else False.</returns>
<seealso cref="M:InTheHand.Net.Bluetooth.BluetoothSecurity.RevokePin(InTheHand.Net.BluetoothAddress)"/>
</member>
<member name="M:InTheHand.Net.Bluetooth.Factory.IBluetoothSecurity.RevokePin(InTheHand.Net.BluetoothAddress)">
<summary>
This function revokes the personal identification number (PIN) for the Bluetooth device.
</summary>
<remarks><para>On Windows CE platforms this calls <c>BthRevokePIN</c>,
its MSDN remarks say:
</para>
<para>&#x201C;When the PIN is revoked, it is removed from registry.
The active connection to the device is not necessary, nor is the presence
of the Bluetooth controller.&#x201D;
</para>
<para>On Windows CE platforms this removes any pending BluetoothWin32Authentication object but does not remove the PIN for an already authenticated device.
Use RemoveDevice to ensure a pairing is completely removed.</para>
<para>See also
<see cref="M:InTheHand.Net.Bluetooth.BluetoothSecurity.SetPin(InTheHand.Net.BluetoothAddress,System.String)"/>
</para>
</remarks>
<param name="device">The remote device.</param>
<returns>True on success, else False.</returns>
<seealso cref="M:InTheHand.Net.Bluetooth.BluetoothSecurity.SetPin(InTheHand.Net.BluetoothAddress,System.String)"/>
</member>
<member name="M:InTheHand.Net.Bluetooth.Factory.IBluetoothSecurity.GetPinRequest">
<summary>
Retrieves the address of the Bluetooth peer device authentication that requires the PIN code.
<para><b>Not supported on Windows XP</b></para>
</summary>
<remarks><para>On Windows CE platforms this calls <c>BthGetPINRequest</c>,
its MSDN remarks say:
</para>
<para>&#x201C;There can be multiple requests outstanding. After the event
that is provided by the UI handler is signaled, the UI handler must call
this function multiple times until the call fails.&#x201D;
</para>
<para>See also
<see cref="M:InTheHand.Net.Bluetooth.BluetoothSecurity.RefusePinRequest(InTheHand.Net.BluetoothAddress)"/>
and <see cref="M:InTheHand.Net.Bluetooth.BluetoothSecurity.AnswerPinRequest(InTheHand.Net.BluetoothAddress,System.String)"/>
</para>
</remarks>
<returns><see cref="T:InTheHand.Net.BluetoothAddress"/> of the remote device, or null if there is no outstanding PIN request.</returns>
</member>
<member name="M:InTheHand.Net.Bluetooth.Factory.IBluetoothSecurity.RefusePinRequest(InTheHand.Net.BluetoothAddress)">
<summary>
Refuses an outstanding PIN request.
<para><b>Not supported on Windows XP</b></para>
</summary>
-
<param name="device">Address of the requesting device.</param>
-
<returns><c>true</c> if the operation was successful; <c>false</c> otherwise.</returns>
-
<remarks><para>On Windows CE platforms this calls <c>BthRefusePINRequest</c>,
its MSDN remarks say:
</para>
<para>&#x201C;This function refuses an outstanding PIN request that is
retrieved by <see cref="M:InTheHand.Net.Bluetooth.BluetoothSecurity.GetPinRequest"/>
function.&#x201D;
</para>
<para>See also
<see cref="M:InTheHand.Net.Bluetooth.BluetoothSecurity.GetPinRequest"/>
and <see cref="M:InTheHand.Net.Bluetooth.BluetoothSecurity.AnswerPinRequest(InTheHand.Net.BluetoothAddress,System.String)"/>
</para>
</remarks>
</member>
<member name="M:InTheHand.Net.Bluetooth.Factory.IBluetoothSecurity.SetLinkKey(InTheHand.Net.BluetoothAddress,System.Guid)">
<summary>
<para><b>Not supported on Windows XP</b></para>
</summary>
-
<param name="device">The device whose Link Key to retrieve.</param>
<param name="linkKey">The 16-byte Link Key to set.</param>
-
<returns><c>true</c> if the operation was successful; <c>false</c> otherwise.</returns>
-
<remarks><para>On Windows CE platforms this calls <c>BthSetLinkKey</c>,
its MSDN remarks say:
</para>
<para>&#x201C;The link key is persisted in registry until <c>BthRevokeLinkKey</c>
is called.
</para>
<para>&#x201C;Typically, the Bluetooth stack manages link keys automatically,
for example, it stores them when they are created. This function is useful
primarily for backup purposes.
</para>
<para>&#x201C;While link key is stored, it will be automatically supplied
once the link key request is issued by the authentication mechanism. If
the link key is incorrect, the renegotiation that involves the PIN is
initiated by the Bluetooth adapter, and the PIN code may be requested
from the user.
</para>
<para>&#x201C;The link key length is 16 bytes. You cannot create link
keys; they are generated by the Bluetooth hardware.&#x201D;
</para>
</remarks>
<returns></returns>
</member>
<member name="T:InTheHand.Net.Bluetooth.Factory.IL2CapClient">
<exclude/>
</member>
<member name="M:InTheHand.Net.Bluetooth.Factory.IL2CapClient.GetMtu">
<exclude/>
</member>
<member name="M:InTheHand.Net.Bluetooth.Factory.IUsesBluetoothConnectorImplementsServiceLookup.BeginServiceDiscovery(InTheHand.Net.BluetoothAddress,System.Guid,System.AsyncCallback,System.Object)">
<summary>
When overidden, initiates
lookup the SDP record with the give Service Class Id
to find the RFCOMM port number (SCN) that the server is listening on.
The process returns a list of port numbers.
</summary>
<param name="address">The remote device.
</param>
<param name="serviceGuid">The Service Class Id.
</param>
<param name="asyncCallback">callback</param>
<param name="state">state</param>
<returns>IAsyncResult</returns>
</member>
<member name="M:InTheHand.Net.Bluetooth.Factory.IUsesBluetoothConnectorImplementsServiceLookup.EndServiceDiscovery(System.IAsyncResult)">
<summary>
When overidden,
completes the SDP Record to port number lookup process
</summary>
-
<param name="ar">IAsyncResult from <see cref="M:InTheHand.Net.Bluetooth.Factory.IUsesBluetoothConnectorImplementsServiceLookup.BeginServiceDiscovery(InTheHand.Net.BluetoothAddress,System.Guid,System.AsyncCallback,System.Object)"/>.
</param>
-
<remarks>
<para>There must be at least one entry in the result list for each
Service Record found for the specified Service Class Id. This
allows us to know if no records were found, or that records were
found but none of them were for RFCOMM.
If a particular record does not have a RFCOMM port then -1 (negative
one should be added to the list for it).
</para>
<para>The process may throw an exception if an error occurs, e.g.
the remote device did not respond.
</para>
</remarks>
-
<returns>A <see cref="T:System.Collections.Generic.List{System.Int32}"/>
with at least one entry for each Service Record
found for the specified Service Class Id, the item being -1 if the
record has no port. is .
</returns>
</member>
<member name="T:InTheHand.Net.Bluetooth.Widcomm.WidcommSocketException">
<summary>
Note that this exception will always be internal, just catch SocketException.
</summary>
</member>
<member name="M:InTheHand.Net.Bluetooth.Widcomm.IBtIf.SetParent(InTheHand.Net.Bluetooth.Widcomm.WidcommBtInterface)">
<summary>
To get to HandleDeviceResponded, HandleInquiryCompleted etc
</summary>
</member>
<member name="M:InTheHand.Net.Bluetooth.Widcomm.IBtIf.StartDiscovery(InTheHand.Net.BluetoothAddress,System.Guid)">
<summary>
&#x201C;This function requests a service discovery for a specific device.&#x201D;
</summary>
-
<remarks>
<para>&#x201C;When the discovery is complete the derived function OnDiscoveryComplete() is called.&#x201D;
</para>
</remarks>
-
<param name="address"></param>
<param name="serviceGuid"></param>
<returns>&#x201C;TRUE, if discovery has started; FALSE, if discovery has not started.&#x201D;</returns>
</member>
<member name="M:InTheHand.Net.Bluetooth.Widcomm.IBtIf.GetLastDiscoveryResult(InTheHand.Net.BluetoothAddress@,System.UInt16@)">
<summary>
&#x201C;When multiple discovery operations are in progress, the application
must call GetLastDiscoveryResult() from within the OnDiscoveryComplete()
to determine which remote devices reported services.&#x201D;
</summary>
<param name="address"></param>
<param name="p_num_recs"></param>
<returns>&#x201C;DISCOVERY_RESULT_SUCCESS, if the discovery operation was successful.&#x201D;</returns>
</member>
<member name="M:InTheHand.Net.Bluetooth.Widcomm.IBtIf.ReadDiscoveryRecords(InTheHand.Net.BluetoothAddress,System.Int32,InTheHand.Net.Bluetooth.Widcomm.ServiceDiscoveryParams)">
<summary>
&#x201C;This function is called when discovery is complete to retrieve the records
received from the remote device.&#x201D;
</summary>
-
<remarks>
<para>&#x201C;Discovery results for a device are not removed until the device fails to respond to an inquiry.&#x201D;
</para>
</remarks>
-
<param name="address"></param>
<param name="maxRecords"></param>
<param name="args"></param>
<returns>The discovery records read, which may have recordCount equals zero.</returns>
</member>
<member name="T:InTheHand.Net.Bluetooth.Widcomm.PORT_EV">
<summary>
Define RFCOMM Port events that registered application can receive in the callback
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.Widcomm.PORT_EV.RXCHAR">
<summary>
Any Character received
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.Widcomm.PORT_EV.RXFLAG">
<summary>
Received certain character
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.Widcomm.PORT_EV.TXEMPTY">
<summary>
Transmitt Queue Empty
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.Widcomm.PORT_EV.CTS">
<summary>
CTS changed state
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.Widcomm.PORT_EV.DSR">
<summary>
DSR changed state
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.Widcomm.PORT_EV.RLSD">
<summary>
RLSD changed state
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.Widcomm.PORT_EV.BREAK">
<summary>
Ring signal detected
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.Widcomm.PORT_EV.ERR">
<summary>
Line status error occurred
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.Widcomm.PORT_EV.RING">
<summary>
Ring signal detected
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.Widcomm.PORT_EV.CTSS">
<summary>
CTS state
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.Widcomm.PORT_EV.DSRS">
<summary>
DSR state
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.Widcomm.PORT_EV.RLSDS">
<summary>
RLSD state
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.Widcomm.PORT_EV.OVERRUN">
<summary>
receiver buffer overrun
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.Widcomm.PORT_EV.TXCHAR">
<summary>
Any character transmitted
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.Widcomm.PORT_EV.CONNECTED">
<summary>
RFCOMM connection established
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.Widcomm.PORT_EV.CONNECT_ERR">
<summary>
Was not able to establish connection; or disconnected
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.Widcomm.PORT_EV.FC">
<summary>
flow control enabled flag changed by remote
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.Widcomm.PORT_EV.FCS">
<summary>
flow control status true = enabled
</summary>
</member>
<member name="P:InTheHand.Net.Bluetooth.Widcomm.ISdpDiscoveryRecordsBuffer.RecordCount">
<summary>
Get the number of records that the buffer contains.
</summary>
-
<value>An integer containing the number of records that the buffer contains,
may be zero.
</value>
-
<exception cref="T:System.InvalidOperationException">The buffer has
not yet been filled with a CSdpDiscoveryRec list.
</exception>
-
<remarks>
<para>In <see cref="F:InTheHand.Net.Bluetooth.Widcomm.SdpSearchScope.ServiceClassOnly">SdpSearchScope.ServiceClassOnly</see>
this returns the actual number of records as the filtering is done by
the stack. In <see cref="F:InTheHand.Net.Bluetooth.Widcomm.SdpSearchScope.Anywhere">SdpSearchScope.Anywhere</see>
this returns the pre-filtered number of records. We do the filtering
so this will likely be greater that the matching number of records.
</para>
</remarks>
</member>
<member name="F:InTheHand.Net.Bluetooth.Widcomm.L2CapPort.L2CapDisconnectReason.XXPending">
<summary>
Presumably this is surfaced as a OnConnectionPending
</summary>
</member>
<member name="P:InTheHand.Net.Bluetooth.Widcomm.SdpDiscoveryRecordsBuffer.RecordCount">
<summary>
Get the number of records that the buffer contains.
</summary>
-
<value>An integer containing the number of records that the buffer contains,
may be zero.
</value>
-
<exception cref="T:System.InvalidOperationException">The buffer has
not yet been filled with a CSdpDiscoveryRec list.
</exception>
-
<remarks>
<para>In <see cref="F:InTheHand.Net.Bluetooth.Widcomm.SdpSearchScope.ServiceClassOnly">SdpSearchScope.ServiceClassOnly</see>
this returns the actual number of records as the filtering is done by
the stack. In <see cref="F:InTheHand.Net.Bluetooth.Widcomm.SdpSearchScope.Anywhere">SdpSearchScope.Anywhere</see>
this returns the pre-filtered number of records. We do the filtering
so this will likely be greater that the matching number of records.
</para>
</remarks>
</member>
<member name="T:InTheHand.Net.Bluetooth.Widcomm.SdpService.DESC_TYPE">
<summary>
Define for service attribute, all the 'Descriptor Type' values.
These are also referred to as 'attribute type' values
</summary>
</member>
<member name="T:InTheHand.Net.Bluetooth.Widcomm.WidcommBluetoothClient">
<summary>
Provides client connections for Bluetooth network services with Widcomm stack.
</summary>
</member>
<member name="M:InTheHand.Net.Bluetooth.Widcomm.WidcommBluetoothClient.#ctor(InTheHand.Net.Bluetooth.Widcomm.WidcommRfcommStreamBase,InTheHand.Net.Bluetooth.Widcomm.WidcommBluetoothFactoryBase)">
<summary>
Used by WidcommBluetoothListener to return the newly accepted connection.
</summary>
-
<param name="strm">The WidcommRfcommStream containing the newly connected
RfCommPort.
</param>
<param name="factory">Factory to use in GetRemoteMachineName etc.
</param>
</member>
<member name="P:InTheHand.Net.Bluetooth.Widcomm.WidcommBluetoothClient.ReadKnownDeviceFromTheRegistry">
<summary>
... Allow the tests to disable the Registry lookup.
</summary>
</member>
<member name="M:InTheHand.Net.Bluetooth.Widcomm.WidcommBluetoothDeviceInfo.CreateFromStoredRemoteDeviceInfo(InTheHand.Net.Bluetooth.Widcomm.REM_DEV_INFO,InTheHand.Net.Bluetooth.Widcomm.WidcommBluetoothFactoryBase)">
<summary>
Used when loading a stack stored/remembered/maybe-paired device.
</summary>
</member>
<member name="M:InTheHand.Net.Bluetooth.Widcomm.WidcommBluetoothDeviceInfo.CreateFromHandleDeviceResponded(System.Byte[],System.Byte[],System.Byte[],System.Boolean,InTheHand.Net.Bluetooth.Widcomm.WidcommBluetoothFactoryBase)">
<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>
</member>
<member name="M:InTheHand.Net.Bluetooth.Widcomm.WidcommBluetoothDeviceInfo.CheckAndSetIfPaired(InTheHand.Net.Bluetooth.Widcomm.WidcommBluetoothDeviceInfo,InTheHand.Net.Bluetooth.Widcomm.WidcommBluetoothFactoryBase)">
<summary>
Called after reading the device from the Registry, to find if it is paired.
</summary>
</member>
<member name="M:InTheHand.Net.Bluetooth.Widcomm.WidcommBluetoothDeviceInfo.Merge(InTheHand.Net.Bluetooth.Factory.IBluetoothDeviceInfo)">
<summary>
For use when the results of Inquiry and get-stack-stored-devices are merged.
</summary>
</member>
<member name="T:InTheHand.Net.Bluetooth.Widcomm.WidcommBluetoothListener">
<exclude/>
</member>
<member name="M:InTheHand.Net.Bluetooth.Widcomm.WidcommBtIf.CheckDependencies(System.Exception)">
<summary>
Check whether all the of dependencies are correct.
</summary>
-
<param name="wrapException">The original exception we got on trying
to load Widcomm. Or <c>null</c> if Widcomm loaded successfully and
we're just doing a check of the dependencies.
</param>
-
<returns>Does not return if <paramref name="wrapException"/> is non-null,
instead will throw it, or a more explanatory exception (with it as
an inner exception).
If <paramref name="wrapException"/> is null,
</returns>
</member>
<member name="M:InTheHand.Net.Bluetooth.Widcomm.WidcommBtIf.ReportNeedNeedNativeDllUpgrade(System.Exception,System.Boolean)">
<summary>
ReportNeedNeedNativeDllUpgrade, call from pair of catch:
EntryPointNotFoundException and MissingMethodException.
</summary>
<param name="ex">The exception.</param>
<param name="mayAssert">Whether we may put up an (Debug.)Assert dialog box.
</param>
</member>
<member name="F:InTheHand.Net.Bluetooth.Widcomm.DISCOVERY_RESULT.CONNECT_ERR">
<summary>
Could not connect to remote device
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.Widcomm.DISCOVERY_RESULT.CONNECT_REJ">
<summary>
Remote device rejected the connection
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.Widcomm.DISCOVERY_RESULT.SECURITY">
<summary>
Security failed
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.Widcomm.DISCOVERY_RESULT.BAD_RECORD">
<summary>
Remote Service Record Error
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.Widcomm.DISCOVERY_RESULT.OTHER_ERROR">
<summary>
Other error
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.Widcomm.REM_DEV_INFO_RETURN_CODE.SUCCESS">
<summary>
success response
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.Widcomm.REM_DEV_INFO_RETURN_CODE.EOF">
<summary>
no more devices found
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.Widcomm.REM_DEV_INFO_RETURN_CODE.ERROR">
<summary>
can not find exsiting entry for bda provided as input
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.Widcomm.REM_DEV_INFO_RETURN_CODE.MEM_ERROR">
<summary>
out of memory
</summary>
</member>
<member name="T:InTheHand.Net.Bluetooth.Widcomm.STACK_STATUS">
<summary>
Used by OnStackChanges virtual method.
</summary>
<remarks>
<para>1000-WCE-PG100-RCD.pdf (03/20/06) says:
"... no longer used: DEVST_UP and DEVST_ERROR."
and:
"Values defined in BtIfClasses.h are:
<code lang="none">
• DEVST_DOWN — The stack is down and no longer available.
• DEVST_UNLOADED — The stack is down, but should be available again after DEVST_RELOADED.
• DEVST_RELOADED — The stack has been successfully reloaded."
</code>
</para>
</remarks>
</member>
<member name="F:InTheHand.Net.Bluetooth.Widcomm.STACK_STATUS.Down">
<summary>
Device is present, but down [Seen (on BTW)]
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.Widcomm.STACK_STATUS.Up">
<summary>
Device is present and UP [Doc'd as obsolete, but I see it (on BTW)]
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.Widcomm.STACK_STATUS.Error">
<summary>
Device is in error (maybe being removed) [Doc'd as obsolete]
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.Widcomm.STACK_STATUS.Unloaded">
<summary>
Stack is being unloaded
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.Widcomm.STACK_STATUS.Reloaded">
<summary>
Stack reloaded after being unloaded
</summary>
</member>
<member name="M:InTheHand.Net.Bluetooth.Widcomm.WidcommBtInterface.DeleteKnownDevice(InTheHand.Net.BluetoothAddress)">
<summary>
Remove the device by deleting it from the Registry.
</summary>
<param name="device">The device address.</param>
<returns>Whether the device is deleted -- it is no longer a remembered device.
</returns>
</member>
<member name="M:InTheHand.Net.Bluetooth.Widcomm.WidcommBtInterface.GetExtendedError">
<summary>
Call CBtIf::GetExtendedError.
</summary>
-
<remarks>
<para>Is not currently used anywhere...
</para>
<para>Not supported on Widcomm WCE WM/WinCE, we (natively) return -1.
</para>
</remarks>
-
<returns>A <see cref="T:InTheHand.Net.Bluetooth.Widcomm.WBtRc"/> value.</returns>
</member>
<member name="M:InTheHand.Net.Bluetooth.Widcomm.WidcommBtInterface.IsRemoteDevicePresent(System.Byte[])">
<summary>
CBtIf::IsRemoteDevicePresent
</summary>
-
<remarks>
<note>"added BTW and SDK 5.0.1.1000"</note>
<note>"added BTW-CE and SDK 1.7.1.2700"</note>
</remarks>
</member>
<member name="M:InTheHand.Net.Bluetooth.Widcomm.WidcommBtInterface.IsRemoteDeviceConnected(System.Byte[])">
<summary>
CBtIf::IsRemoteDeviceConnected
</summary>
-
<remarks>
<note>"added BTW 5.0.1.300, SDK 5.0"</note>
<note>"added BTW-CE and SDK 1.7.1.2700"</note>
</remarks>
</member>
<member name="T:InTheHand.Net.Bluetooth.Widcomm.SDK_RETURN_CODE">
<summary>
"Define common return code for new SDK functions that would normally return BOOL"
</summary>
-
<remarks>"Added BTW and SDK 5.0.1.1100".
</remarks>
</member>
<member name="F:InTheHand.Net.Bluetooth.Widcomm.SDK_RETURN_CODE.Success">
<summary>
"The call was successful"
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.Widcomm.SDK_RETURN_CODE.Fail">
<summary>
"Unspecified failure"
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.Widcomm.SDK_RETURN_CODE.NotSupported">
<summary>
"The API is not supported on the platform BTW stack version"
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.Widcomm.SDK_RETURN_CODE.Busy">
<summary>
"The API cannot complete at this time, but may be retried"
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.Widcomm.SDK_RETURN_CODE.InvalidParam">
<summary>
"One of the API parameters was invalid"
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.Widcomm.SDK_RETURN_CODE.ErrResources">
<summary>
"A necessary resource could not be obtained"
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.Widcomm.SDK_RETURN_CODE.Timeout">
<summary>
"The operation timed out before completion"
</summary>
</member>
<member name="M:InTheHand.Net.Bluetooth.Widcomm.WidcommRfcommStreamBase.Bond(InTheHand.Net.BluetoothAddress,System.String)">
<summary>
Wrapper around CBtIf::Bond().
</summary>
<param name="device"><see cref="T:InTheHand.Net.BluetoothAddress"/></param>
<param name="passcode"><see cref="T:System.String"/></param>
<returns><see langword="true"/> if pairing was completed.
<see langword="false"/> if were already paired, or pairing failed.
</returns>
</member>
<member name="T:InTheHand.Net.Bluetooth.Widcomm.WidcommSppClient.SPP_STATE_CODE">
<summary>
Define SPP connection states
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.Widcomm.WidcommSppClient.SPP_STATE_CODE.CONNECTED">
<summary>
port now connected
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.Widcomm.WidcommSppClient.SPP_STATE_CODE.DISCONNECTED">
<summary>
port now disconnected
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.Widcomm.WidcommSppClient.SPP_STATE_CODE.RFCOMM_CONNECTION_FAILED">
<summary>
rfcomm connction failed
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.Widcomm.WidcommSppClient.SPP_STATE_CODE.PORT_IN_USE">
<summary>
Port in use, for SPPClient only [for SPP Client only]
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.Widcomm.WidcommSppClient.SPP_STATE_CODE.PORT_NOT_CONFIGURED">
<summary>
no port configured [for SPP Client only]
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.Widcomm.WidcommSppClient.SPP_STATE_CODE.SERVICE_NOT_FOUND">
<summary>
service not found [for SPP Client only]
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.Widcomm.WidcommSppClient.SPP_STATE_CODE.ALLOC_SCN_FAILED">
<summary>
[for SPP Server Only]
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.Widcomm.WidcommSppClient.SPP_STATE_CODE.SDP_FULL">
<summary>
[for SPP Server Only]
</summary>
</member>
<member name="T:InTheHand.Net.Bluetooth.Widcomm.WidcommSppClient.SPP_STATE_CODE__WCE">
<summary>
Define SPP connection states
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.Widcomm.WidcommSppClient.SPP_STATE_CODE__WCE.CONNECTED">
<summary>
port now connected
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.Widcomm.WidcommSppClient.SPP_STATE_CODE__WCE.DISCONNECTED">
<summary>
port now disconnected
</summary>
</member>
<member name="T:InTheHand.Net.Bluetooth.Widcomm.WidcommSppClient.SPP_CLIENT_RETURN_CODE">
<summary>
Define return code for SPP Client functions
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.Widcomm.WidcommSppClient.SPP_CLIENT_RETURN_CODE.SUCCESS">
<summary>
Operation initiated without error
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.Widcomm.WidcommSppClient.SPP_CLIENT_RETURN_CODE.NO_BT_SERVER">
<summary>
COM server could not be started
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.Widcomm.WidcommSppClient.SPP_CLIENT_RETURN_CODE.ALREADY_CONNECTED">
<summary>
attempt to connect before previous connection closed
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.Widcomm.WidcommSppClient.SPP_CLIENT_RETURN_CODE.NOT_CONNECTED">
<summary>
attempt to close unopened connection
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.Widcomm.WidcommSppClient.SPP_CLIENT_RETURN_CODE.NOT_ENOUGH_MEMORY">
<summary>
local processor could not allocate memory for open
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.Widcomm.WidcommSppClient.SPP_CLIENT_RETURN_CODE.INVALID_PARAMETER__CE_UE">
<summary>
One or more of function parameters are not valid
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.Widcomm.WidcommSppClient.SPP_CLIENT_RETURN_CODE.UNKNOWN_ERROR__CE_IP">
<summary>
Any condition other than the above
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.Widcomm.WidcommSppClient.SPP_CLIENT_RETURN_CODE.NO_EMPTY_PORT">
<summary>
no empty port
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.Widcomm.WidcommSppClient.SPP_CLIENT_RETURN_CODE.LICENSE_ERROR">
<summary>
license error
</summary>
</member>
<member name="T:InTheHand.Net.Bluetooth.Widcomm.WidcommSppClient.SPP_CLIENT_RETURN_CODE__WCE">
<summary>
Define return code for SPP Client functions
</summary>
</member>
<member name="T:InTheHand.Net.Bluetooth.Msft.BTHNS_BLOB">
<summary>
</summary>
</member>
<member name="P:InTheHand.Net.Bluetooth.Msft.BTHNS_BLOB.Length">
<summary>
Size of the structure.
</summary>
</member>
<member name="M:InTheHand.Net.Bluetooth.Msft.BTHNS_BLOB.ToByteArray">
<summary>
Internal bytes
</summary>
<returns></returns>
</member>
<member name="T:InTheHand.Net.Bluetooth.Msft.BTHNS_RESULT">
<summary>
Bluetooth specific flags returned from WSALookupServiceNext
in WSAQUERYSET.dwOutputFlags in response to device inquiry.
</summary>
</member>
<member name="T:InTheHand.Net.Bluetooth.Msft.MicrosoftSdpService">
<exclude/>
</member>
<member name="M:InTheHand.Net.Bluetooth.Msft.MicrosoftSdpService.RemoveService(System.IntPtr,System.Byte[])">
<exclude/>
<summary>
Remove a SDP record as added by <see cref="M:InTheHand.Net.Bluetooth.Msft.MicrosoftSdpService.SetService(System.Byte[],InTheHand.Net.Bluetooth.ServiceClass)"/>.
</summary>
<param name="handle">The handle.
</param>
<param name="sdpRecord">The raw record, presumably not actually used by the stack.
</param>
</member>
<member name="M:InTheHand.Net.Bluetooth.Msft.MicrosoftSdpService.SetService(System.Byte[],InTheHand.Net.Bluetooth.ServiceClass)">
<exclude/>
<summary>
Add a SDP record.
</summary>
-
<param name="sdpRecord">An array of <see cref="T:System.Byte"/>
containing the complete SDP record.
</param>
<param name="cod">A <see cref="T:InTheHand.Net.Bluetooth.ServiceClass"/>
containing any bits to set in the devices Class of Device value.
</param>
-
<returns>A handle representing the record, pass to
<see cref="M:InTheHand.Net.Bluetooth.Msft.MicrosoftSdpService.RemoveService(System.IntPtr,System.Byte[])"/> to remote the record.
</returns>
</member>
<member name="M:InTheHand.Net.Bluetooth.Msft.NativeMethods.BluetoothAuthenticateDevice(System.IntPtr,System.IntPtr,InTheHand.Net.Bluetooth.Msft.BLUETOOTH_DEVICE_INFO@,System.String,System.Int32)">
<summary>
The BluetoothAuthenticateDevice function sends an authentication request to a remote Bluetooth device.
</summary>
<param name="hwndParent">The window to parent the authentication wizard.
If NULL, the wizard will be parented off the desktop.</param>
<param name="hRadio">A valid local radio handle, or NULL. If NULL, authentication is attempted on all local radios; if any radio succeeds, the function call succeeds.</param>
<param name="pbtdi">A structure of type BLUETOOTH_DEVICE_INFO that contains the record of the Bluetooth device to be authenticated.</param>
<param name="pszPasskey">A Personal Identification Number (PIN) to be used for device authentication. If set to NULL, the user interface is displayed and and the user must follow the authentication process provided in the user interface. If pszPasskey is not NULL, no user interface is displayed. If the passkey is not NULL, it must be a NULL-terminated string. For more information, see the Remarks section.</param>
<param name="ulPasskeyLength">The size, in characters, of pszPasskey.
The size of pszPasskey must be less than or equal to BLUETOOTH_MAX_PASSKEY_SIZE.</param>
<returns></returns>
</member>
<member name="M:InTheHand.Net.Bluetooth.Msft.NativeMethods.BluetoothAuthenticateDeviceEx(System.IntPtr,System.IntPtr,InTheHand.Net.Bluetooth.Msft.BLUETOOTH_DEVICE_INFO@,System.Byte[],InTheHand.Net.Bluetooth.BluetoothAuthenticationRequirements)">
<summary>
The BluetoothAuthenticateDeviceEx function sends an authentication request to a remote Bluetooth device. Additionally, this function allows for out-of-band data to be passed into the function call for the device being authenticated.
Note This API is supported in Windows Vista SP2 and Windows 7.
</summary>
<param name="hwndParentIn">The window to parent the authentication wizard.
If NULL, the wizard will be parented off the desktop.</param>
<param name="hRadioIn">A valid local radio handle or NULL.
If NULL, then all radios will be tried. If any of the radios succeed, then the call will succeed.</param>
<param name="pbtdiInout">A pointer to a BLUETOOTH_DEVICE_INFO structure describing the device being authenticated.</param>
<param name="pbtOobData">Pointer to device specific out-of-band data to be provided with this API call.
If NULL, then UI is displayed to continue the authentication process.
If not NULL, no UI is displayed.</param>
<param name="authenticationRequirement">An AUTHENTICATION_REQUIREMENTS enumeration that specifies the protection required for authentication.</param>
<returns></returns>
</member>
<member name="F:InTheHand.Net.Bluetooth.Msft.NativeMethods.MsftWin32BthIOCTL.IOCTL_BTH_GET_LOCAL_INFO">
<summary>
Input: none
Output: BTH_LOCAL_RADIO_INFO
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.Msft.NativeMethods.MsftWin32BthIOCTL.IOCTL_BTH_GET_RADIO_INFO">
<summary>
Input: BTH_ADDR
Output: BTH_RADIO_INFO
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.Msft.NativeMethods.MsftWin32BthIOCTL.IOCTL_BTH_GET_DEVICE_INFO">
<summary>
use this ioctl to get a list of cached discovered devices in the port driver.
Input: None
Output: BTH_DEVICE_INFO_LIST
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.Msft.NativeMethods.MsftWin32BthIOCTL.IOCTL_BTH_DISCONNECT_DEVICE">
<summary>
Input: BTH_ADDR
Output: none
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.Msft.NativeMethods.MsftWin32BthIOCTL.IOCTL_BTH_GET_DEVICE_RSSI">
<summary>
Input: BTH_GET_DEVICE_RSSI
Output: ULONG
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.Msft.NativeMethods.MsftWin32BthIOCTL.IOCTL_BTH_EIR_GET_RECORDS">
<summary>
Input: BTH_EIR_GET_RECORDS
Output: UCHAR array, sequence of length + type + data fields triplets.
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.Msft.NativeMethods.MsftWin32BthIOCTL.IOCTL_BTH_EIR_SUBMIT_RECORD">
<summary>
Input: BTH_EIR_SUBMIT_RECORD
Output HANDLE
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.Msft.NativeMethods.MsftWin32BthIOCTL.IOCTL_BTH_EIR_UPDATE_RECORD">
<summary>
Input: BTH_EIR_SUBMIT_RECORD
Output None
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.Msft.NativeMethods.MsftWin32BthIOCTL.IOCTL_BTH_EIR_REMOVE_RECORD">
<summary>
Input: HANDLE
Output: None
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.Msft.NativeMethods.MsftWin32BthIOCTL.IOCTL_BTH_HCI_VENDOR_COMMAND">
<summary>
Input: BTH_VENDOR_SPECIFIC_COMMAND
Output: PVOID
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.Msft.NativeMethods.MsftWin32BthIOCTL.IOCTL_BTH_SDP_CONNECT">
<summary>
Input: BTH_SDP_CONNECT
Output: BTH_SDP_CONNECT
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.Msft.NativeMethods.MsftWin32BthIOCTL.IOCTL_BTH_SDP_DISCONNECT">
<summary>
Input: HANDLE_SDP
Output: none
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.Msft.NativeMethods.MsftWin32BthIOCTL.IOCTL_BTH_SDP_SERVICE_SEARCH">
<summary>
Input: BTH_SDP_SERVICE_SEARCH_REQUEST
Output: ULONG * number of handles wanted
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.Msft.NativeMethods.MsftWin32BthIOCTL.IOCTL_BTH_SDP_ATTRIBUTE_SEARCH">
<summary>
Input: BTH_SDP_ATTRIBUTE_SEARCH_REQUEST
Output: BTH_SDP_STREAM_RESPONSE or bigger
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.Msft.NativeMethods.MsftWin32BthIOCTL.IOCTL_BTH_SDP_SERVICE_ATTRIBUTE_SEARCH">
<summary>
Input: BTH_SDP_SERVICE_ATTRIBUTE_SEARCH_REQUEST
Output: BTH_SDP_STREAM_RESPONSE or bigger
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.Msft.NativeMethods.MsftWin32BthIOCTL.IOCTL_BTH_SDP_SUBMIT_RECORD">
<summary>
Input: raw SDP stream (at least 2 bytes)
Ouptut: HANDLE_SDP
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.Msft.NativeMethods.MsftWin32BthIOCTL.IOCTL_BTH_SDP_REMOVE_RECORD">
<summary>
Input: HANDLE_SDP
Output: none
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.Msft.NativeMethods.MsftWin32BthIOCTL.IOCTL_BTH_SDP_SUBMIT_RECORD_WITH_INFO">
<summary>
Input: BTH_SDP_RECORD + raw SDP record
Output: HANDLE_SDP
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.Msft.WSAESETSERVICEOP.RNRSERVICE_REGISTER">
<summary>
Register the service. For SAP, this means sending out a periodic broadcast.
This is an NOP for the DNS namespace.
For persistent data stores, this means updating the address information.
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.Msft.WSAESETSERVICEOP.RNRSERVICE_DEREGISTER">
<summary>
Remove the service from the registry.
For SAP, this means stop sending out the periodic broadcast.
This is an NOP for the DNS namespace.
For persistent data stores this means deleting address information.
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.Msft.WSAESETSERVICEOP.RNRSERVICE_DELETE">
<summary>
Delete the service from dynamic name and persistent spaces.
For services represented by multiple CSADDR_INFO structures (using the SERVICE_MULTIPLE flag), only the specified address will be deleted, and this must match exactly the corresponding CSADDR_INFO structure that was specified when the service was registered
</summary>
</member>
<member name="P:InTheHand.Net.Bluetooth.Msft.SocketBluetoothClient.InquiryLength">
<summary>
Amount of time allowed to perform the query.
</summary>
<remarks>On Windows CE the actual value used is expressed in units of 1.28 seconds, so will be the nearest match for the value supplied.
The default value is 10 seconds. The maximum is 60 seconds.</remarks>
</member>
<member name="M:InTheHand.Net.Bluetooth.Msft.SocketBluetoothClient.InTheHand#Net#Bluetooth#Factory#IBluetoothClient#DiscoverDevices(System.Int32,System.Boolean,System.Boolean,System.Boolean,System.Boolean)">
<summary>
Discovers accessible Bluetooth devices and returns their names and addresses.
</summary>
<param name="maxDevices">The maximum number of devices to get information about.</param>
<param name="authenticated">True to return previously authenticated/paired devices.</param>
<param name="remembered">True to return remembered devices.</param>
<param name="unknown">True to return previously unknown devices.</param>
<param name="discoverableOnly">True to return only discoverable devices
(where both in range and in discoverable mode).
When <see langword="true"/> all other flags are ignored.
<strong>Note: Does NOT work on Win32 with the Microsoft stack.</strong>
</param>
<returns>An array of BluetoothDeviceInfo objects describing the devices discovered.</returns>
-
<remarks>
<para>The <see paramref="discoverableOnly"/> flag will discover only
the devices that are in range and are in discoverable mode. This works
only on WM/CE with the Microsoft stack, or on any platform with the
Widcomm stack.
</para>
<para>
It does not work on desktop Windows with the Microsoft
stack, where the in range and remembered devices are returned already
merged! There simple all devices will be returned. Even the
<see cref="P:InTheHand.Net.Sockets.BluetoothDeviceInfo.LastSeen">BluetoothDeviceInfo.LastSeen</see>
property is of no use there: on XP and Vista at least the value provided
is always simply the current time.
</para>
</remarks>
</member>
<member name="P:InTheHand.Net.Bluetooth.Msft.SocketBluetoothClient.Active">
<summary>
Gets or set a value that indicates whether a connection has been made.
</summary>
</member>
<member name="M:InTheHand.Net.Bluetooth.Msft.SocketBluetoothClient.Connect(InTheHand.Net.BluetoothEndPoint)">
<summary>
Connects a client to a specified endpoint.
</summary>
<param name="remoteEP">A <see cref="T:InTheHand.Net.BluetoothEndPoint"/> that represents the remote device.</param>
</member>
<member name="M:InTheHand.Net.Bluetooth.Msft.SocketBluetoothClient.BeginConnect(InTheHand.Net.BluetoothEndPoint,System.AsyncCallback,System.Object)">
<summary>
Begins an asynchronous request for a remote host connection.
The remote host is specified by a <see cref="T:InTheHand.Net.BluetoothEndPoint"/>.
</summary>
<param name="remoteEP">A <see cref="T:InTheHand.Net.BluetoothEndPoint"/> containing the
address and UUID of the remote service.</param>
<param name="requestCallback">An AsyncCallback delegate that references the method to invoke when the operation is complete.</param>
<param name="state">A user-defined object that contains information about the connect operation.
This object is passed to the requestCallback delegate when the operation is complete.</param>
<returns></returns>
</member>
<member name="M:InTheHand.Net.Bluetooth.Msft.SocketBluetoothClient.EndConnect(System.IAsyncResult)">
<summary>
Asynchronously accepts an incoming connection attempt.
</summary>
<param name="asyncResult">An <see cref="T:System.IAsyncResult"/> object returned by a call to
<see cref="M:BeginConnect(InTheHand.Net.Sockets.BluetoothEndPoint,System.AsyncCallback,System.Object)"/>
/ <see cref="M:BeginConnect(InTheHand.Net.Sockets.BluetoothAddress,System.Guid,System.AsyncCallback,System.Object)"/>.
</param>
</member>
<member name="P:InTheHand.Net.Bluetooth.Msft.SocketBluetoothClient.Authenticate">
<summary>
Gets or sets the authentication state of the current connect or behaviour to use when connection is established.
</summary>
<remarks>
For disconnected sockets, specifies that authentication is required in order for a connect or accept operation to complete successfully.
Setting this option actively initiates authentication during connection establishment, if the two Bluetooth devices were not previously authenticated.
The user interface for passkey exchange, if necessary, is provided by the operating system outside the application context.
For outgoing connections that require authentication, the connect operation fails with WSAEACCES if authentication is not successful.
In response, the application may prompt the user to authenticate the two Bluetooth devices before connection.
For incoming connections, the connection is rejected if authentication cannot be established and returns a WSAEHOSTDOWN error.
</remarks>
</member>
<member name="P:InTheHand.Net.Bluetooth.Msft.SocketBluetoothClient.Encrypt">
<summary>
On unconnected sockets, enforces encryption to establish a connection.
Encryption is only available for authenticated connections.
For incoming connections, a connection for which encryption cannot be established is automatically rejected and returns WSAEHOSTDOWN as the error.
For outgoing connections, the connect function fails with WSAEACCES if encryption cannot be established.
In response, the application may prompt the user to authenticate the two Bluetooth devices before connection.
</summary>
</member>
<member name="P:InTheHand.Net.Bluetooth.Msft.SocketBluetoothClient.LinkKey">
<summary>
Returns link key associated with peer Bluetooth device.
</summary>
</member>
<member name="P:InTheHand.Net.Bluetooth.Msft.SocketBluetoothClient.LinkPolicy">
<summary>
Returns the Link Policy of the current connection.
</summary>
</member>
<member name="M:InTheHand.Net.Bluetooth.Msft.SocketBluetoothClient.SetPin(System.String)">
<summary>
Sets the PIN associated with the currently connected device.
</summary>
<param name="pin">PIN which must be composed of 1 to 16 ASCII characters.</param>
<remarks>Assigning null (Nothing in VB) or an empty String will revoke the PIN.</remarks>
</member>
<member name="M:InTheHand.Net.Bluetooth.Msft.SocketBluetoothClient.SetPin(InTheHand.Net.BluetoothAddress,System.String)">
<summary>
Set or change the PIN to be used with a specific remote device.
</summary>
<param name="device">Address of Bluetooth device.</param>
<param name="pin">PIN string consisting of 1 to 16 ASCII characters.</param>
<remarks>Assigning null (Nothing in VB) or an empty String will revoke the PIN.</remarks>
</member>
<member name="P:InTheHand.Net.Bluetooth.Msft.SocketBluetoothClient.RemoteMachineName">
<summary>
Gets the name of the remote device.
</summary>
</member>
<member name="M:InTheHand.Net.Bluetooth.Msft.SocketBluetoothClient.GetRemoteMachineName(InTheHand.Net.BluetoothAddress)">
<summary>
Gets the name of the specified remote device.
</summary>
<param name="a">Address of remote device.</param>
<returns>Friendly name of specified device.</returns>
</member>
<member name="M:InTheHand.Net.Bluetooth.Msft.SocketBluetoothClient.GetRemoteMachineName(System.Net.Sockets.Socket)">
<summary>
Gets the name of a device by a specified socket.
</summary>
<param name="s"> A <see cref="T:System.Net.Sockets.Socket"/>.</param>
<returns>Returns a string value of the computer or device name.</returns>
</member>
<member name="M:InTheHand.Net.Bluetooth.Msft.SocketBluetoothClient.Dispose(System.Boolean)">
<summary>
Releases the unmanaged resources used by the BluetoothClient and optionally releases the managed resources.
</summary>
<param name="disposing">true to release both managed and unmanaged resources; false to release only unmanaged resources.</param>
</member>
<member name="M:InTheHand.Net.Bluetooth.Msft.SocketBluetoothClient.Dispose">
<summary>
Closes the <see cref="T:InTheHand.Net.Sockets.BluetoothClient"/> and the underlying connection.
</summary>
-
<seealso cref="M:InTheHand.Net.Sockets.BluetoothClient.Close"/>
</member>
<member name="M:InTheHand.Net.Bluetooth.Msft.SocketBluetoothClient.Finalize">
<summary>
Frees resources used by the <see cref="T:InTheHand.Net.Sockets.BluetoothClient"/> class.
</summary>
</member>
<member name="P:InTheHand.Net.Bluetooth.Msft.SocketBluetoothClient.MsftSocketOptionHelper.Authenticate">
<summary>
Gets or sets the authentication state of the current connect or behaviour to use when connection is established.
</summary>
<remarks>
For disconnected sockets, specifies that authentication is required in order for a connect or accept operation to complete successfully.
Setting this option actively initiates authentication during connection establishment, if the two Bluetooth devices were not previously authenticated.
The user interface for passkey exchange, if necessary, is provided by the operating system outside the application context.
For outgoing connections that require authentication, the connect operation fails with WSAEACCES if authentication is not successful.
In response, the application may prompt the user to authenticate the two Bluetooth devices before connection.
For incoming connections, the connection is rejected if authentication cannot be established and returns a WSAEHOSTDOWN error.
</remarks>
</member>
<member name="P:InTheHand.Net.Bluetooth.Msft.SocketBluetoothClient.MsftSocketOptionHelper.Encrypt">
<summary>
On unconnected sockets, enforces encryption to establish a connection.
Encryption is only available for authenticated connections.
For incoming connections, a connection for which encryption cannot be established is automatically rejected and returns WSAEHOSTDOWN as the error.
For outgoing connections, the connect function fails with WSAEACCES if encryption cannot be established.
In response, the application may prompt the user to authenticate the two Bluetooth devices before connection.
</summary>
</member>
<member name="T:InTheHand.Net.Bluetooth.Msft.WindowsBluetoothDeviceInfo">
<summary>
Provides information about an available device obtained by the client during device discovery.
</summary>
</member>
<member name="M:InTheHand.Net.Bluetooth.Msft.WindowsBluetoothDeviceInfo.#ctor(System.IntPtr)">
<overloads>
Initializes an instance of the <see cref="T:BluetoothDeviceInfo"/> class.
</overloads>
-
<summary>
Initializes an instance of the <see cref="T:BluetoothDeviceInfo"/> class with the given native structure.
</summary>
</member>
<member name="M:InTheHand.Net.Bluetooth.Msft.WindowsBluetoothDeviceInfo.#ctor(InTheHand.Net.BluetoothAddress)">
<summary>
Initializes an instance of the <see cref="T:BluetoothDeviceInfo"/> class
for the device with the given address.
</summary>
</member>
<member name="M:InTheHand.Net.Bluetooth.Msft.WindowsBluetoothDeviceInfo.Refresh">
<summary>
Forces the system to refresh the device information.
</summary>
-
<remarks>
See <see cref="P:InTheHand.Net.Sockets.BluetoothDeviceInfo.DeviceName"/>
for one reason why this method is necessary.
</remarks>
</member>
<member name="M:InTheHand.Net.Bluetooth.Msft.WindowsBluetoothDeviceInfo.Update">
<summary>
Updates the device name used to display the device, affects the local computer cache.
</summary>
<remarks>On Windows CE this only affects devices which are already paired.</remarks>
</member>
<member name="P:InTheHand.Net.Bluetooth.Msft.WindowsBluetoothDeviceInfo.DeviceAddress">
<summary>
Gets the device identifier.
</summary>
</member>
<member name="P:InTheHand.Net.Bluetooth.Msft.WindowsBluetoothDeviceInfo.DeviceName">
<summary>
Gets a name of a device.
</summary>
-
<remarks>
<para>Note, that due the way in which Bluetooth device discovery works,
the existence and address of a device is known first, but a separate
query has to be carried out to find whether the device also has a name.
This means that if a device is discovered afresh then this property might
return only a text version of the device&#x2019;s address and not its
name, one can also see this in the Windows&#x2019; Bluetooth device dialogs
where the device appears first with its address and the name is later
updated. To see the name, wait for some time and access this property again
having called <see cref="M:InTheHand.Net.Sockets.BluetoothDeviceInfo.Refresh"/>
in the meantime.
</para>
</remarks>
</member>
<member name="P:InTheHand.Net.Bluetooth.Msft.WindowsBluetoothDeviceInfo.ClassOfDevice">
<summary>
Returns the Class of Device of the remote device.
</summary>
-
<remarks>
<para>
Some CE 4.2 devices such as original PPC2003 devices don't have the native
API on which this property depends &#x2014; it was added as part of a hotfix.
The property will always return zero in such a case. On WM/CE we also
attempt to get the CoD value as part of the discovery process; this is
of course only works for devices in-range.
</para>
</remarks>
</member>
<member name="P:InTheHand.Net.Bluetooth.Msft.WindowsBluetoothDeviceInfo.Rssi">
<summary>
Returns the signal strength for the Bluetooth connection with the peer device.
<para><b>Requires Windows Mobile 5.0 or Windows Embedded CE 6.0</b></para>
</summary>
-
<value>Valid values for this property are -128 to 128. It returns
<see cref="F:System.Int32.MinValue">Int32.MinValue</see> on failure.
</value>
-
<remarks>
<para>This method requires an open connection to the peer device.
If there is no active connection, then it will attempt to create one.
</para>
<note type="caution">Requires Windows Mobile 5.0 or Windows Embedded CE 6.0</note>
<para>As well as the &#x2018;no connection&#x2019; issue, the native method
on which the property depends is only present in later OS versions, so it
will fail on earlier devices.
</para>
</remarks>
</member>
<member name="P:InTheHand.Net.Bluetooth.Msft.WindowsBluetoothDeviceInfo.InstalledServices">
<summary>
Returns a list of services which are already installed for use on the calling machine.
</summary>
<remarks>
<para>This property returns the services already configured for use.
Those are the ones that are checked in the &#x201C;Services&#x201D; tab
of the device&#x2019;s property sheet in the Bluetooth Control panel.
I presume the behaviour is similar on CE.
</para>
<para>Will only return available services for paired devices.
</para>
<para>It of course will also only returns standard system services which Windows understands.
(On desktop Windows this method calls the OS function <c>BluetoothEnumerateInstalledServices</c>).
</para>
<para>To see all the services that a device advertises use the
<see cref="M:InTheHand.Net.Sockets.BluetoothDeviceInfo.GetServiceRecords(System.Guid)"/>
method.
</para>
</remarks>
</member>
<member name="M:InTheHand.Net.Bluetooth.Msft.WindowsBluetoothDeviceInfo.SetServiceState(System.Guid,System.Boolean)">
<summary>
Enables or disables services for a Bluetooth device.
</summary>
<param name="service">The service GUID on the remote device.</param>
<param name="state">Service state - TRUE to enable the service, FALSE to disable it.</param>
<remarks>
When called on Windows CE, the device will require a soft-reset to enabled the settings.
<note>
<para>The system maintains a mapping of service guids to supported drivers for
Bluetooth-enabled devices. Enabling a service installs the corresponding
device driver. Disabling a service removes the corresponding device driver.
If a non-supported service is enabled, a driver will not be installed.
</para>
</note>
<para>This overload is silent on error; the other overload raises an exception
if required
(<see cref="M:InTheHand.Net.Sockets.BluetoothDeviceInfo.SetServiceState(System.Guid,System.Boolean,System.Boolean)"/>).
</para>
</remarks>
-
<exception cref="T:System.PlatformNotSupportedException">
Thrown if this method is called on Windows CE platforms.</exception>
</member>
<member name="M:InTheHand.Net.Bluetooth.Msft.WindowsBluetoothDeviceInfo.SetServiceState(System.Guid,System.Boolean,System.Boolean)">
<summary>
Enables or disables services for a Bluetooth device.
</summary>
<param name="service">The service GUID on the remote device.</param>
<param name="state">Service state - TRUE to enable the service, FALSE to disable it.</param>
<param name="throwOnError">Whether the method should raise an exception
when
</param>
<remarks>
When called on Windows CE, the device will require a soft-reset to enabled the settings.
<note>
<para>The system maintains a mapping of service guids to supported drivers for
Bluetooth-enabled devices. Enabling a service installs the corresponding
device driver. Disabling a service removes the corresponding device driver.
If a non-supported service is enabled, a driver will not be installed.
</para>
</note>
</remarks>
-
<exception cref="T:System.ComponentModel.Win32Exception">The call failed.
</exception>
</member>
<member name="M:InTheHand.Net.Bluetooth.Msft.WindowsBluetoothDeviceInfo.GetServiceRecords(System.Guid)">
<summary>
Run an SDP query on the device&#x2019;s Service Discovery Database.
</summary>
-
<remarks>
<para>
For instance to see whether the device has an an Serial Port services
search for UUID <see cref="F:InTheHand.Net.Bluetooth.BluetoothService.SerialPort"/>,
or too find all the services that use RFCOMM use
<see cref="F:InTheHand.Net.Bluetooth.BluetoothService.RFCommProtocol"/>,
or all the services use
<see cref="F:InTheHand.Net.Bluetooth.BluetoothService.L2CapProtocol"/>.
</para>
<para>
If the device isn&#x2019;t accessible a <see cref="T:System.Net.Sockets.SocketException"/>
with <see cref="P:System.Net.Sockets.SocketException.ErrorCode"/>
10108 (0x277C) occurs.
</para>
</remarks>
-
<param name="service">The UUID to search for, as a <see cref="T:System.Guid"/>.
</param>
-
<returns>The parsed record as an
<see cref="T:InTheHand.Net.Bluetooth.ServiceRecord"/>.
</returns>
-
<example>
<code lang="VB.NET">
Dim bdi As BluetoothDeviceInfo = ...
Dim records As ServiceRecord() = bdi.GetServiceRecords(BluetoothService.RFCommProtocol)
' Dump each to console
For Each curRecord As ServiceRecord In records
ServiceRecordUtilities.Dump(Console.Out, curRecord)
Next
</code>
</example>
-
<exception cref="T:System.Net.Sockets.SocketException">
The query failed.
</exception>
</member>
<member name="M:InTheHand.Net.Bluetooth.Msft.WindowsBluetoothDeviceInfo.GetServiceRecordsUnparsed(System.Guid)">
<summary>
Run an SDP query on the device&#x2019;s Service Discovery Database,
returning the raw byte rather than a parsed record.
</summary>
-
<remarks>
If the device isn&#x2019;t accessible a <see cref="T:System.Net.Sockets.SocketException"/>
with <see cref="P:System.Net.Sockets.SocketException.ErrorCode"/>
10108 (0x277C) occurs.
</remarks>
-
<param name="service">The UUID to search for, as a <see cref="T:System.Guid"/>.
</param>
-
<returns>An array of array of <see cref="T:System.Byte"/>.</returns>
-
<exception cref="T:System.Net.Sockets.SocketException">
The query failed.
</exception>
</member>
<member name="M:InTheHand.Net.Bluetooth.Msft.WindowsBluetoothDeviceInfo.GetServiceRecordsUnparsedWindowsRaw(System.Guid)">
<summary>
Returns the raw results from the native call(s); the format is different
on Win32 versus WinCE.
</summary>
<remarks>
On CE this is thus a single item which is a ElementSequence of records.
On Win32 it is an array with each item being a record.
</remarks>
</member>
<member name="P:InTheHand.Net.Bluetooth.Msft.WindowsBluetoothDeviceInfo.Connected">
<summary>
Specifies whether the device is connected.
</summary>
<remarks>Not supported under Windows CE and will always return false.</remarks>
<seealso cref="P:InTheHand.Net.Bluetooth.Msft.WindowsBluetoothDeviceInfo.Remembered"/>
<seealso cref="P:InTheHand.Net.Bluetooth.Msft.WindowsBluetoothDeviceInfo.Authenticated"/>
</member>
<member name="P:InTheHand.Net.Bluetooth.Msft.WindowsBluetoothDeviceInfo.Remembered">
<summary>
Specifies whether the device is a remembered device. Not all remembered devices are authenticated.
</summary>
-
<remarks>Now supported under Windows CE &#x2014; will return the same as
<see cref="P:InTheHand.Net.Sockets.BluetoothDeviceInfo.Authenticated"/>.
</remarks>
<seealso cref="P:InTheHand.Net.Bluetooth.Msft.WindowsBluetoothDeviceInfo.Connected"/>
<seealso cref="P:InTheHand.Net.Bluetooth.Msft.WindowsBluetoothDeviceInfo.Authenticated"/>
</member>
<member name="P:InTheHand.Net.Bluetooth.Msft.WindowsBluetoothDeviceInfo.Authenticated">
<summary>
Specifies whether the device is authenticated, paired, or bonded. All authenticated devices are remembered.
</summary>
<remarks>Is now supported on both CE and XP.</remarks>
<seealso cref="P:InTheHand.Net.Bluetooth.Msft.WindowsBluetoothDeviceInfo.Connected"/>
<seealso cref="P:InTheHand.Net.Bluetooth.Msft.WindowsBluetoothDeviceInfo.Remembered"/>
</member>
<member name="M:InTheHand.Net.Bluetooth.Msft.WindowsBluetoothDeviceInfo.ShowDialog">
<summary>
Displays information about the device.
</summary>
</member>
<member name="T:InTheHand.Net.Bluetooth.Msft.WindowsBluetoothListener">
<summary>
Listens for connections from Bluetooth network clients.
</summary>
<remarks>The <see cref="T:InTheHand.Net.Bluetooth.Msft.WindowsBluetoothListener"/> class provides simple methods that listen for and accept incoming connection requests in blocking synchronous mode.
You can use either a <see cref="T:InTheHand.Net.Sockets.BluetoothClient"/> or a <see cref="T:System.Net.Sockets.Socket"/> to connect with a <see cref="T:InTheHand.Net.Bluetooth.Msft.WindowsBluetoothListener"/></remarks>
</member>
<member name="M:InTheHand.Net.Bluetooth.Msft.WindowsBluetoothListener.Construct(System.Guid)">
<overloads>
Initializes a new instance of the <see cref="T:InTheHand.Net.Bluetooth.Msft.WindowsBluetoothListener"/> class.
</overloads>
----
<summary>
Initializes a new instance of the <see cref="T:InTheHand.Net.Bluetooth.Msft.WindowsBluetoothListener"/> class
to listen on the specified service identifier.
</summary>
<param name="service">The Bluetooth service to listen for.</param>
<remarks>
<para>
An SDP record is published on successful <see cref="M:InTheHand.Net.Sockets.WindowsBluetoothListener.Start"/>
to advertise the server.
A generic record is created, containing the essential <c>ServiceClassIdList</c>
and <c>ProtocolDescriptorList</c> attributes. The specified service identifier is
inserted into the former, and the RFCOMM Channel number that the server is
listening on is inserted into the latter. See the Bluetooth SDP specification
for details on the use and format of SDP records.
</para><para>
If a SDP record with more elements is required, then use
one of the other constructors that takes an SDP record e.g.
<see cref="M:InTheHand.Net.Sockets.WindowsBluetoothListener.#ctor(System.Guid,InTheHand.Net.Bluetooth.ServiceRecord)"/>,
or when passing it as a byte array
<see cref="M:InTheHand.Net.Sockets.WindowsBluetoothListener.#ctor(System.Guid,System.Byte[],System.Int32)"/>.
The format of the generic record used here is shown there also.
</para><para>
Call the <see cref="M:InTheHand.Net.Sockets.WindowsBluetoothListener.Start"/>
method to begin listening for incoming connection attempts.
</para>
</remarks>
</member>
<member name="M:InTheHand.Net.Bluetooth.Msft.WindowsBluetoothListener.Construct(InTheHand.Net.BluetoothAddress,System.Guid)">
<summary>
Initializes a new instance of the <see cref="T:InTheHand.Net.Bluetooth.Msft.WindowsBluetoothListener"/> class
that listens for incoming connection attempts on the specified local Bluetooth address and service identifier.
</summary>
<param name="localAddress">A <see cref="T:InTheHand.Net.BluetoothAddress"/> that represents the local Bluetooth radio address.</param>
<param name="service">The Bluetooth service on which to listen for incoming connection attempts.</param>
<remarks>
<para>
An SDP record is published on successful <see cref="M:InTheHand.Net.Sockets.WindowsBluetoothListener.Start"/>
to advertise the server.
A generic record is created, containing the essential <c>ServiceClassIdList</c>
and <c>ProtocolDescriptorList</c> attributes. The specified service identifier is
inserted into the former, and the RFCOMM Channel number that the server is
listening on is inserted into the latter. See the Bluetooth SDP specification
for details on the use and format of SDP records.
</para><para>
If a SDP record with more elements is required, then use
one of the other constructors that takes an SDP record e.g.
<see cref="M:InTheHand.Net.Sockets.WindowsBluetoothListener.#ctor(InTheHand.Net.BluetoothAddress,System.Guid,InTheHand.Net.Bluetooth.ServiceRecord)"/>,
or when passing it as a byte array, e.g.
<see cref="M:InTheHand.Net.Sockets.WindowsBluetoothListener.#ctor(InTheHand.Net.BluetoothAddress,System.Guid,System.Byte[],System.Int32)"/>.
The format of the generic record used here is shown there also.
</para><para>
Call the <see cref="M:InTheHand.Net.Sockets.WindowsBluetoothListener.Start"/>
method to begin listening for incoming connection attempts.
</para>
</remarks>
</member>
<member name="M:InTheHand.Net.Bluetooth.Msft.WindowsBluetoothListener.Construct(InTheHand.Net.BluetoothEndPoint)">
<summary>
Initializes a new instance of the <see cref="T:InTheHand.Net.Bluetooth.Msft.WindowsBluetoothListener"/> class
with the specified local endpoint.
</summary>
<param name="localEP">A <see cref="T:InTheHand.Net.BluetoothEndPoint"/> that represents the local endpoint to which to bind the listener <see cref="T:System.Net.Sockets.Socket"/>.</param>
<remarks>
<para>
An SDP record is published on successful <see cref="M:InTheHand.Net.Sockets.WindowsBluetoothListener.Start"/>
to advertise the server.
A generic record is created, containing the essential <c>ServiceClassIdList</c>
and <c>ProtocolDescriptorList</c> attributes. The specified service identifier is
inserted into the former, and the RFCOMM Channel number that the server is
listening on is inserted into the latter. See the Bluetooth SDP specification
for details on the use and format of SDP records.
</para><para>
If a SDP record with more elements is required, then use
one of the other constructors that takes an SDP record e.g.
<see cref="M:InTheHand.Net.Sockets.WindowsBluetoothListener.#ctor(InTheHand.Net.BluetoothEndPoint,InTheHand.Net.Bluetooth.ServiceRecord)"/>,
or when passing it as a byte array
<see cref="M:InTheHand.Net.Sockets.WindowsBluetoothListener.#ctor(InTheHand.Net.BluetoothEndPoint,System.Byte[],System.Int32)"/>.
The format of the generic record used here is shown there also.
</para><para>
Call the <see cref="M:InTheHand.Net.Sockets.WindowsBluetoothListener.Start"/>
method to begin listening for incoming connection attempts.
</para>
</remarks>
</member>
<member name="M:InTheHand.Net.Bluetooth.Msft.WindowsBluetoothListener.Construct(System.Guid,System.Byte[],System.Int32)">
<summary>
Initializes a new instance of the <see cref="T:InTheHand.Net.Bluetooth.Msft.WindowsBluetoothListener"/> class
to listen on the specified service identifier,
publishing the specified SDP record.
</summary>
<param name="service">The Bluetooth service to listen for.</param>
<param name="sdpRecord">Prepared SDP Record to publish.</param>
<param name="channelOffset">
The index in the <paramref name="sdpRecord"/> byte array where the RFCOMM Channel Number that the
server is listening on is to be placed.
However the supplied record is now parsed into an <see cref="T:InTheHand.Net.Bluetooth.ServiceRecord"/>
instance, and the channel offset is not used.
</param>
<remarks>
<note>
The constructors taking the SDP record explicitly (as a byte array) should
only be used if
a specialized SDP record is required. For instance when using one of the
standard profiles. Otherwise use one of the other constructors
e.g. <see
cref="M:InTheHand.Net.Sockets.WindowsBluetoothListener.#ctor(System.Guid)"/>
which create a generic SDP Record from the specified service identifier.
</note>
<para>Instead of passing a byte array containing a hand-built record,
the record can also be built using the <see cref="T:InTheHand.Net.Bluetooth.ServiceRecord"/>
and <see cref="T:InTheHand.Net.Bluetooth.ServiceElement"/> classes, and
passed to the respective constuctor, e.g.
<see cref="M:InTheHand.Net.Sockets.WindowsBluetoothListener.#ctor(System.Guid,InTheHand.Net.Bluetooth.ServiceRecord)"/>
</para>
<para>Any useful SDP record will include
a <c>ProtocolDescriptor</c> element containing
the RFCOMM Channel number that the server is listening on,
and a <c>ServiceClassId</c> element containing the service UUIDs.
The record supplied in the <paramref name="sdpRecord"/> parameter
should contain those elements. On successful <see
cref="M:InTheHand.Net.Sockets.WindowsBluetoothListener.Start"/>,
the RFCOMM Channel number that the protocol stack has assigned to the
server is retrieved, and copied into the service record before it is
published. The <paramref name="channelOffset"/> indicates the location
of the respective byte in the <paramref name="sdpRecord"/> byte array.
</para>
<para>
An example SDP record is as follows. This is actually the format of the
generic record used in the other constructors. For another example see
the code in the <c>ObexListener</c> class.
<code>
// The asterisks note where the Service UUID and the Channel number are
// to be filled in.
byte[] record = new byte[] {
//Element Sequence:
0x35,0x27,
//UInt16: 0x0001 -- ServiceClassIdList
0x09,0x00,0x01,
//Element Sequence:
0x35,0x11,
// UUID128: 00000000-0000-0000-0000-000000000000 -- * Service UUID
0x1c,
0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,
//
//UInt16: 0x0004 -- ProtocolDescriptorList
0x09,0x00,0x04,
//Element Sequence:
0x35,0x0c,
// Element Sequence:
0x35,0x03,
// UUID16: 0x0100 -- L2CAP
0x19,0x01,0x00,
// Element Sequence:
0x35,0x05,
// UUID16: 0x0003 -- RFCOMM
0x19,0x00,0x03,
// UInt8: 0x00 -- * Channel Number
0x08,0x00
};
</code>
For that record the <c>channelOffset</c> is 40.
</para>
</remarks>
</member>
<member name="M:InTheHand.Net.Bluetooth.Msft.WindowsBluetoothListener.Construct(InTheHand.Net.BluetoothAddress,System.Guid,System.Byte[],System.Int32)">
<summary>
Initializes a new instance of the <see cref="T:InTheHand.Net.Bluetooth.Msft.WindowsBluetoothListener"/> class
that listens for incoming connection attempts on the specified local Bluetooth address and service identifier,
publishing the specified SDP record.
</summary>
<param name="localAddress">A <see cref="T:InTheHand.Net.BluetoothAddress"/> that represents the local Bluetooth radio address.</param>
<param name="service">The Bluetooth service to listen for.</param>
<param name="sdpRecord">Prepared SDP Record to publish</param>
<param name="channelOffset">
The index in the <paramref name="sdpRecord"/> byte array where the RFCOMM Channel Number that the
server is listening on is to be placed.
However the supplied record is now parsed into an <see cref="T:InTheHand.Net.Bluetooth.ServiceRecord"/>
instance, and the channel offset is not used.
</param>
<remarks>
<note>
The constructors taking the SDP record explicitly (as a byte array) should
only be used if
a specialized SDP record is required. For instance when using one of the
standard profiles. Otherwise use one of the other constructors
e.g. <see
cref="M:InTheHand.Net.Sockets.WindowsBluetoothListener.#ctor(InTheHand.Net.BluetoothAddress,System.Guid)"/>
which create a generic SDP Record from the specified service identifier.
</note>
<para>Instead of passing a byte array containing a hand-built record,
the record can also be built using the <see cref="T:InTheHand.Net.Bluetooth.ServiceRecord"/>
and <see cref="T:InTheHand.Net.Bluetooth.ServiceElement"/> classes, and
passed to the respective constuctor, e.g.
<see cref="M:InTheHand.Net.Sockets.WindowsBluetoothListener.#ctor(InTheHand.Net.BluetoothAddress,System.Guid,InTheHand.Net.Bluetooth.ServiceRecord)"/>
</para>
<para>Any useful SDP record will include
a <c>ProtocolDescriptor</c> element containing
the RFCOMM Channel number that the server is listening on,
and a <c>ServiceClassId</c> element containing the service UUIDs.
The record supplied in the <paramref name="sdpRecord"/> parameter
should contain those elements. On successful <see
cref="M:InTheHand.Net.Sockets.WindowsBluetoothListener.Start"/>,
the RFCOMM Channel number that the protocol stack has assigned to the
server is retrieved, and copied into the service record before it is
published. The <paramref name="channelOffset"/> indicates the location
of the respective byte in the <paramref name="sdpRecord"/> byte array.
</para>
<para>
An example SDP record is as follows. This is actually the format of the
generic record used in the other constructors. For another example see
the code in the <c>ObexListener</c> class.
<code>
// The asterisks note where the Service UUID and the Channel number are
// to be filled in.
byte[] record = new byte[] {
//Element Sequence:
0x35,0x27,
//UInt16: 0x0001 -- ServiceClassIdList
0x09,0x00,0x01,
//Element Sequence:
0x35,0x11,
// UUID128: 00000000-0000-0000-0000-000000000000 -- * Service UUID
0x1c,
0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,
//
//UInt16: 0x0004 -- ProtocolDescriptorList
0x09,0x00,0x04,
//Element Sequence:
0x35,0x0c,
// Element Sequence:
0x35,0x03,
// UUID16: 0x0100 -- L2CAP
0x19,0x01,0x00,
// Element Sequence:
0x35,0x05,
// UUID16: 0x0003 -- RFCOMM
0x19,0x00,0x03,
// UInt8: 0x00 -- * Channel Number
0x08,0x00
};
</code>
For that record the <c>channelOffset</c> is 40.
</para>
</remarks>
</member>
<member name="M:InTheHand.Net.Bluetooth.Msft.WindowsBluetoothListener.Construct(InTheHand.Net.BluetoothEndPoint,System.Byte[],System.Int32)">
<summary>
Initializes a new instance of the <see cref="T:InTheHand.Net.Bluetooth.Msft.WindowsBluetoothListener"/> class
with the specified local endpoint,
publishing the specified SDP record.
</summary>
<param name="localEP">A <see cref="T:InTheHand.Net.BluetoothEndPoint"/> that represents the local endpoint to which to bind the listener <see cref="T:System.Net.Sockets.Socket"/>.</param>
<param name="sdpRecord">Prepared SDP Record to publish</param>
<param name="channelOffset">
The index in the <paramref name="sdpRecord"/> byte array where the RFCOMM Channel Number that the
server is listening on is to be placed.
However the supplied record is now parsed into an <see cref="T:InTheHand.Net.Bluetooth.ServiceRecord"/>
instance, and the channel offset is not used.
</param>
<remarks>
<note>
The constructors taking the SDP record explicitly (as a byte array) should
only be used if
a specialized SDP record is required. For instance when using one of the
standard profiles. Otherwise use one of the other constructors
e.g. <see
cref="M:InTheHand.Net.Sockets.WindowsBluetoothListener.#ctor(InTheHand.Net.BluetoothEndPoint)"/>
which create a generic SDP Record from the specified service identifier.
</note>
<para>Instead of passing a byte array containing a hand-built record,
the record can also be built using the <see cref="T:InTheHand.Net.Bluetooth.ServiceRecord"/>
and <see cref="T:InTheHand.Net.Bluetooth.ServiceElement"/> classes, and
passed to the respective constuctor, e.g.
<see cref="M:InTheHand.Net.Sockets.WindowsBluetoothListener.#ctor(InTheHand.Net.BluetoothEndPoint,InTheHand.Net.Bluetooth.ServiceRecord)"/>
</para>
<para>Any useful SDP record will include
a <c>ProtocolDescriptor</c> element containing
the RFCOMM Channel number that the server is listening on,
and a <c>ServiceClassId</c> element containing the service UUIDs.
The record supplied in the <paramref name="sdpRecord"/> parameter
should contain those elements. On successful <see
cref="M:InTheHand.Net.Sockets.WindowsBluetoothListener.Start"/>,
the RFCOMM Channel number that the protocol stack has assigned to the
server is retrieved, and copied into the service record before it is
published. The <paramref name="channelOffset"/> indicates the location
of the respective byte in the <paramref name="sdpRecord"/> byte array.
</para>
<para>
An example SDP record is as follows. This is actually the format of the
generic record used in the other constructors. For another example see
the code in the <c>ObexListener</c> class.
<code>
// The asterisks note where the Service UUID and the Channel number are
// to be filled in.
byte[] record = new byte[] {
//Element Sequence:
0x35,0x27,
//UInt16: 0x0001 -- ServiceClassIdList
0x09,0x00,0x01,
//Element Sequence:
0x35,0x11,
// UUID128: 00000000-0000-0000-0000-000000000000 -- * Service UUID
0x1c,
0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,
//
//UInt16: 0x0004 -- ProtocolDescriptorList
0x09,0x00,0x04,
//Element Sequence:
0x35,0x0c,
// Element Sequence:
0x35,0x03,
// UUID16: 0x0100 -- L2CAP
0x19,0x01,0x00,
// Element Sequence:
0x35,0x05,
// UUID16: 0x0003 -- RFCOMM
0x19,0x00,0x03,
// UInt8: 0x00 -- * Channel Number
0x08,0x00
};
</code>
For that record the <c>channelOffset</c> is 40.
</para>
</remarks>
</member>
<member name="M:InTheHand.Net.Bluetooth.Msft.WindowsBluetoothListener.Construct(System.Guid,InTheHand.Net.Bluetooth.ServiceRecord)">
<summary>
Initializes a new instance of the <see cref="T:InTheHand.Net.Bluetooth.Msft.WindowsBluetoothListener"/> class
to listen on the specified service identifier,
publishing the specified SDP record.
</summary>
-
<param name="service">The Bluetooth service to listen for.</param>
<param name="sdpRecord">Prepared SDP Record to publish.</param>
-
<remarks>
<note>
The constructors taking the SDP record explicitly should
only be used if
a specialized SDP record is required. For instance when using one of the
standard profiles. Otherwise use one of the other constructors
e.g. <see
cref="M:InTheHand.Net.Sockets.WindowsBluetoothListener.#ctor(System.Guid)"/>
which create a generic SDP Record from the specified service identifier.
</note>
<para>Any useful SDP record will include
a <c>ProtocolDescriptor</c> element containing
the RFCOMM Channel number that the server is listening on,
and a <c>ServiceClassId</c> element containing the service UUIDs.
The record supplied in the <paramref name="sdpRecord"/> parameter
should contain those elements. On successful <see
cref="M:InTheHand.Net.Sockets.WindowsBluetoothListener.Start"/>,
the RFCOMM Channel number that the protocol stack has assigned to the
server is retrieved, and copied into the service record before it is
published.
</para>
<para>
An example SDP record is as follows. This is actually the format of the
generic record used in the other constructors. For another example see
the code in the <c>ObexListener</c> class.
<code lang="C#">
private static ServiceRecord CreateBasicRfcommRecord(Guid serviceClassUuid)
{
ServiceElement pdl = ServiceRecordHelper.CreateRfcommProtocolDescriptorList();
ServiceElement classList = new ServiceElement(ElementType.ElementSequence,
new ServiceElement(ElementType.Uuid128, serviceClassUuid));
ServiceRecord record = new ServiceRecord(
new ServiceAttribute(
InTheHand.Net.Bluetooth.AttributeIds.UniversalAttributeId.ServiceClassIdList,
classList),
new ServiceAttribute(
InTheHand.Net.Bluetooth.AttributeIds.UniversalAttributeId.ProtocolDescriptorList,
pdl));
return record;
}
</code>
</para>
</remarks>
</member>
<member name="M:InTheHand.Net.Bluetooth.Msft.WindowsBluetoothListener.Construct(InTheHand.Net.BluetoothAddress,System.Guid,InTheHand.Net.Bluetooth.ServiceRecord)">
<summary>
Initializes a new instance of the <see cref="T:InTheHand.Net.Bluetooth.Msft.WindowsBluetoothListener"/> class
that listens for incoming connection attempts on the specified local Bluetooth address and service identifier,
publishing the specified SDP record.
</summary>
-
<param name="localAddress">A <see cref="T:InTheHand.Net.BluetoothAddress"/> that represents the local Bluetooth radio address.</param>
<param name="service">The Bluetooth service to listen for.</param>
<param name="sdpRecord">Prepared SDP Record to publish</param>
-
<remarks>
<note>
The constructors taking the SDP record explicitly should
only be used if
a specialized SDP record is required. For instance when using one of the
standard profiles. Otherwise use one of the other constructors
e.g. <see
cref="M:InTheHand.Net.Sockets.WindowsBluetoothListener.#ctor(InTheHand.Net.BluetoothAddress,System.Guid)"/>
which create a generic SDP Record from the specified service identifier.
</note>
<para>Any useful SDP record will include
a <c>ProtocolDescriptor</c> element containing
the RFCOMM Channel number that the server is listening on,
and a <c>ServiceClassId</c> element containing the service UUIDs.
The record supplied in the <paramref name="sdpRecord"/> parameter
should contain those elements. On successful <see
cref="M:InTheHand.Net.Sockets.WindowsBluetoothListener.Start"/>,
the RFCOMM Channel number that the protocol stack has assigned to the
server is retrieved, and copied into the service record before it is
published.
</para>
<para>
An example SDP record is as follows. This is actually the format of the
generic record used in the other constructors. For another example see
the code in the <c>ObexListener</c> class.
<code lang="C#">
private static ServiceRecord CreateBasicRfcommRecord(Guid serviceClassUuid)
{
ServiceElement pdl = ServiceRecordHelper.CreateRfcommProtocolDescriptorList();
ServiceElement classList = new ServiceElement(ElementType.ElementSequence,
new ServiceElement(ElementType.Uuid128, serviceClassUuid));
ServiceRecord record = new ServiceRecord(
new ServiceAttribute(
InTheHand.Net.Bluetooth.AttributeIds.UniversalAttributeId.ServiceClassIdList,
classList),
new ServiceAttribute(
InTheHand.Net.Bluetooth.AttributeIds.UniversalAttributeId.ProtocolDescriptorList,
pdl));
return record;
}
</code>
</para>
</remarks>
</member>
<member name="M:InTheHand.Net.Bluetooth.Msft.WindowsBluetoothListener.Construct(InTheHand.Net.BluetoothEndPoint,InTheHand.Net.Bluetooth.ServiceRecord)">
<summary>
Initializes a new instance of the <see cref="T:InTheHand.Net.Bluetooth.Msft.WindowsBluetoothListener"/> class
with the specified local endpoint,
publishing the specified SDP record.
</summary>
<param name="localEP">A <see cref="T:InTheHand.Net.BluetoothEndPoint"/> that represents the local endpoint to which to bind the listener <see cref="T:System.Net.Sockets.Socket"/>.</param>
<param name="sdpRecord">Prepared SDP Record to publish</param>
-
<remarks>
<note>
The constructors taking the SDP record explicitly (as a byte array) should
only be used if
a specialized SDP record is required. For instance when using one of the
standard profiles. Otherwise use one of the other constructors
e.g. <see
cref="M:InTheHand.Net.Sockets.WindowsBluetoothListener.#ctor(InTheHand.Net.BluetoothEndPoint)"/>
which create a generic SDP Record from the specified service identifier.
</note>
<para>Any useful SDP record will include
a <c>ProtocolDescriptor</c> element containing
the RFCOMM Channel number that the server is listening on,
and a <c>ServiceClassId</c> element containing the service UUIDs.
The record supplied in the <paramref name="sdpRecord"/> parameter
should contain those elements. On successful <see
cref="M:InTheHand.Net.Sockets.WindowsBluetoothListener.Start"/>,
the RFCOMM Channel number that the protocol stack has assigned to the
server is retrieved, and copied into the service record before it is
published.
</para>
<para>
An example SDP record is as follows. This is actually the format of the
generic record used in the other constructors. For another example see
the code in the <c>ObexListener</c> class.
<code lang="C#">
private static ServiceRecord CreateBasicRfcommRecord(Guid serviceClassUuid)
{
ServiceElement pdl = ServiceRecordHelper.CreateRfcommProtocolDescriptorList();
ServiceElement classList = new ServiceElement(ElementType.ElementSequence,
new ServiceElement(ElementType.Uuid128, serviceClassUuid));
ServiceRecord record = new ServiceRecord(
new ServiceAttribute(
InTheHand.Net.Bluetooth.AttributeIds.UniversalAttributeId.ServiceClassIdList,
classList),
new ServiceAttribute(
InTheHand.Net.Bluetooth.AttributeIds.UniversalAttributeId.ProtocolDescriptorList,
pdl));
return record;
}
</code>
</para>
</remarks>
</member>
<member name="P:InTheHand.Net.Bluetooth.Msft.WindowsBluetoothListener.LocalEndPoint">
<summary>
Gets the underlying <see cref="T:InTheHand.Net.BluetoothEndPoint"/> of the current <see cref="T:InTheHand.Net.Bluetooth.Msft.WindowsBluetoothListener"/>.
</summary>
</member>
<member name="P:InTheHand.Net.Bluetooth.Msft.WindowsBluetoothListener.ServiceClass">
<summary>
Get or set the Service Class flags that this service adds to the host
device&#x2019;s Class Of Device field.
</summary>
-
<remarks>
<para>The Class of Device value contains a Device part which describes
the primary service that the device provides, and a Service part which
is a set of flags indicating all the service types that the device supports,
e.g. <see cref="F:InTheHand.Net.Bluetooth.ServiceClass.ObjectTransfer"/>,
<see cref="F:InTheHand.Net.Bluetooth.ServiceClass.Telephony"/>,
<see cref="F:InTheHand.Net.Bluetooth.ServiceClass.Audio"/> etc.
This property supports setting those flags; bits set in this value will be
added to the host device&#x2019;s CoD Service Class bits when the listener
is active.
</para>
<para><note>Supported on Win32, but not supported on WindowsMobile/WinCE
as there's no native API for it. The WindowCE section of MSDN mentions the
Registry value <c>COD</c> at key <c>HKEY_LOCAL_MACHINE\Software\Microsoft\Bluetooth\sys</c>.
However my (Jam) has value 0x920100 there but advertises a CoD of 0x100114,
so its not clear how the values relate to each other.
</note>
</para>
</remarks>
</member>
<member name="P:InTheHand.Net.Bluetooth.Msft.WindowsBluetoothListener.ServiceName">
<summary>
Get or set the ServiceName the server will use in its SDP Record.
</summary>
-
<value>A string representing the value to be used for the Service Name
SDP Attribute. Will be <see langword="null"/> if not specfied.
</value>
-
<exception cref="T:System.InvalidOperationException">
The listener is already started.
<para>- or -</para>
A custom Service Record was given at initialization time. In that case
the ServiceName attribute should be added to that record.
</exception>
</member>
<member name="P:InTheHand.Net.Bluetooth.Msft.WindowsBluetoothListener.Server">
<summary>
Gets the underlying network <see cref="T:System.Net.Sockets.Socket"/>.
</summary>
<value>The underlying <see cref="T:System.Net.Sockets.Socket"/>.</value>
<remarks><see cref="T:InTheHand.Net.Bluetooth.Msft.WindowsBluetoothListener"/> creates a <see cref="T:System.Net.Sockets.Socket"/> to listen for incoming client connection requests.
Classes deriving from <see cref="T:InTheHand.Net.Bluetooth.Msft.WindowsBluetoothListener"/> can use this property to get this <see cref="T:System.Net.Sockets.Socket"/>.
Use the underlying <see cref="T:System.Net.Sockets.Socket"/> returned by the <see cref="P:InTheHand.Net.Bluetooth.Msft.WindowsBluetoothListener.Server"/> property if you require access beyond that which <see cref="T:InTheHand.Net.Bluetooth.Msft.WindowsBluetoothListener"/> provides.
<para>Note <see cref="P:InTheHand.Net.Bluetooth.Msft.WindowsBluetoothListener.Server"/> property only returns the <see cref="T:System.Net.Sockets.Socket"/> used to listen for incoming client connection requests.
Use the <see cref="M:InTheHand.Net.Bluetooth.Msft.WindowsBluetoothListener.AcceptSocket"/> method to accept a pending connection request and obtain a <see cref="T:System.Net.Sockets.Socket"/> for sending and receiving data.
You can also use the <see cref="M:InTheHand.Net.Bluetooth.Msft.WindowsBluetoothListener.AcceptBluetoothClient"/> method to accept a pending connection request and obtain a <see cref="T:InTheHand.Net.Sockets.BluetoothClient"/> for sending and receiving data.</para></remarks>
</member>
<member name="M:InTheHand.Net.Bluetooth.Msft.WindowsBluetoothListener.Start">
<summary>
Starts listening for incoming connection requests.
</summary>
</member>
<member name="M:InTheHand.Net.Bluetooth.Msft.WindowsBluetoothListener.Start(System.Int32)">
<summary>
Starts listening for incoming connection requests with a maximum number of pending connection.
</summary>
<param name="backlog">The maximum length of the pending connections queue.</param>
</member>
<member name="M:InTheHand.Net.Bluetooth.Msft.WindowsBluetoothListener.Stop">
<summary>
Stops the socket from monitoring connections.
</summary>
</member>
<member name="M:InTheHand.Net.Bluetooth.Msft.WindowsBluetoothListener.BeginAcceptSocket(System.AsyncCallback,System.Object)">
<summary>
Begins an asynchronous operation to accept an incoming connection attempt.
</summary>
<param name="callback">An <see cref="T:System.AsyncCallback"/> delegate that references the method to invoke when the operation is complete.</param>
<param name="state">A user-defined object containing information about the accept operation.
This object is passed to the callback delegate when the operation is complete.</param>
<returns>An <see cref="T:System.IAsyncResult"/> that references the asynchronous creation of the <see cref="T:System.Net.Sockets.Socket"/>.</returns>
<exception cref="T:System.ObjectDisposedException">The <see cref="T:System.Net.Sockets.Socket"/> has been closed.</exception>
</member>
<member name="M:InTheHand.Net.Bluetooth.Msft.WindowsBluetoothListener.EndAcceptSocket(System.IAsyncResult)">
<summary>
Asynchronously accepts an incoming connection attempt and creates a new <see cref="T:System.Net.Sockets.Socket"/> to handle remote host communication.
</summary>
<param name="asyncResult">An <see cref="T:System.IAsyncResult"/> returned by a call to the <see cref="M:InTheHand.Net.Bluetooth.Msft.WindowsBluetoothListener.BeginAcceptSocket(System.AsyncCallback,System.Object)"/> method.</param>
<returns>A <see cref="T:System.Net.Sockets.Socket"/>.</returns>
</member>
<member name="M:InTheHand.Net.Bluetooth.Msft.WindowsBluetoothListener.BeginAcceptBluetoothClient(System.AsyncCallback,System.Object)">
<summary>
Begins an asynchronous operation to accept an incoming connection attempt.
</summary>
<param name="callback"></param>
<param name="state"></param>
<returns></returns>
</member>
<member name="M:InTheHand.Net.Bluetooth.Msft.WindowsBluetoothListener.EndAcceptBluetoothClient(System.IAsyncResult)">
<summary>
Asynchronously accepts an incoming connection attempt and creates a new <see cref="T:InTheHand.Net.Sockets.BluetoothClient"/> to handle remote host communication.
</summary>
<param name="asyncResult">An <see cref="T:System.IAsyncResult"/> returned by a call to the <see cref="M:InTheHand.Net.Bluetooth.Msft.WindowsBluetoothListener.BeginAcceptBluetoothClient(System.AsyncCallback,System.Object)"/> method.</param>
<returns>A <see cref="T:InTheHand.Net.Sockets.BluetoothClient"/>.</returns>
</member>
<member name="M:InTheHand.Net.Bluetooth.Msft.WindowsBluetoothListener.AcceptSocket">
<summary>
Creates a new socket for a connection.
</summary>
<remarks>AcceptSocket is a blocking method that returns a <see cref="T:System.Net.Sockets.Socket"/> that you can use to send and receive data.
If you want to avoid blocking, use the <see cref="M:InTheHand.Net.Bluetooth.Msft.WindowsBluetoothListener.Pending"/> method to determine if connection requests are available in the incoming connection queue.
<para>The <see cref="T:System.Net.Sockets.Socket"/> returned is initialized with the address and channel number of the remote device.
You can use any of the Send and Receive methods available in the <see cref="T:System.Net.Sockets.Socket"/> class to communicate with the remote device.
When you are finished using the <see cref="T:System.Net.Sockets.Socket"/>, be sure to call its <see cref="M:System.Net.Sockets.Socket.Close"/> method.
If your application is relatively simple, consider using the <see cref="M:InTheHand.Net.Bluetooth.Msft.WindowsBluetoothListener.AcceptBluetoothClient"/> method rather than the AcceptSocket method.
<see cref="T:InTheHand.Net.Sockets.BluetoothClient"/> provides you with simple methods for sending and receiving data over a network in blocking synchronous mode.</para></remarks>
<returns>A <see cref="T:System.Net.Sockets.Socket"/> used to send and receive data.</returns>
<exception cref="T:System.InvalidOperationException">Listener is stopped.</exception>
</member>
<member name="M:InTheHand.Net.Bluetooth.Msft.WindowsBluetoothListener.AcceptBluetoothClient">
<summary>
Creates a client object for a connection when the specified service or endpoint is detected by the listener component.
</summary>
<remarks>AcceptTcpClient is a blocking method that returns a <see cref="T:InTheHand.Net.Sockets.BluetoothClient"/> that you can use to send and receive data.
Use the <see cref="M:InTheHand.Net.Bluetooth.Msft.WindowsBluetoothListener.Pending"/> method to determine if connection requests are available in the incoming connection queue if you want to avoid blocking.
<para>Use the <see cref="M:InTheHand.Net.Sockets.BluetoothClient.GetStream"/> method to obtain the underlying <see cref="T:System.Net.Sockets.NetworkStream"/> of the returned <see cref="T:InTheHand.Net.Sockets.BluetoothClient"/>.
The <see cref="T:System.Net.Sockets.NetworkStream"/> will provide you with methods for sending and receiving with the remote host.
When you are through with the <see cref="T:InTheHand.Net.Sockets.BluetoothClient"/>, be sure to call its <see cref="M:InTheHand.Net.Sockets.BluetoothClient.Close"/> method.
If you want greater flexibility than a <see cref="T:InTheHand.Net.Sockets.BluetoothClient"/> offers, consider using <see cref="M:InTheHand.Net.Bluetooth.Msft.WindowsBluetoothListener.AcceptSocket"/>.</para></remarks>
<returns>A <see cref="T:InTheHand.Net.Sockets.BluetoothClient"/> component.</returns>
<exception cref="T:System.InvalidOperationException">Listener is stopped.</exception>
</member>
<member name="M:InTheHand.Net.Bluetooth.Msft.WindowsBluetoothListener.Pending">
<summary>
Determines if there is a connection pending.
</summary>
<returns>true if there is a connection pending; otherwise, false.</returns>
</member>
<member name="P:InTheHand.Net.Bluetooth.Msft.WindowsBluetoothListener.ServiceRecord">
<summary>
Returns the SDP Service Record for this service.
</summary>
<remarks>
<note>Returns <see langword="null"/> if the listener is not
<see cref="M:InTheHand.Net.Sockets.WindowsBluetoothListener.Start"/>ed
(and an record wasn&#x2019;t supplied at initialization).
</note>
</remarks>
</member>
<member name="P:InTheHand.Net.Bluetooth.Msft.WindowsBluetoothListener.Authenticate">
<summary>
Gets or sets the authentication state of the current connect or behaviour to use when connection is established.
</summary>
<remarks>
For disconnected sockets, specifies that authentication is required in order for a connect or accept operation to complete successfully.
Setting this option actively initiates authentication during connection establishment, if the two Bluetooth devices were not previously authenticated.
The user interface for passkey exchange, if necessary, is provided by the operating system outside the application context.
For outgoing connections that require authentication, the connect operation fails with WSAEACCES if authentication is not successful.
In response, the application may prompt the user to authenticate the two Bluetooth devices before connection.
For incoming connections, the connection is rejected if authentication cannot be established and returns a WSAEHOSTDOWN error.
</remarks>
</member>
<member name="P:InTheHand.Net.Bluetooth.Msft.WindowsBluetoothListener.Encrypt">
<summary>
On unconnected sockets, enforces encryption to establish a connection.
Encryption is only available for authenticated connections.
For incoming connections, a connection for which encryption cannot be established is automatically rejected and returns WSAEHOSTDOWN as the error.
For outgoing connections, the connect function fails with WSAEACCES if encryption cannot be established.
In response, the application may prompt the user to authenticate the two Bluetooth devices before connection.
</summary>
</member>
<member name="M:InTheHand.Net.Bluetooth.Msft.WindowsBluetoothListener.SetPin(InTheHand.Net.BluetoothAddress,System.String)">
<summary>
Set or change the PIN to be used with a specific remote device.
</summary>
<param name="device">Address of Bluetooth device.</param>
<param name="pin">PIN string consisting of 1 to 16 ASCII characters.</param>
<remarks>Assigning null (Nothing in VB) or an empty String will revoke the PIN.</remarks>
</member>
<member name="P:InTheHand.Net.Bluetooth.Msft.WindowsBluetoothRadio.IsPlatformSupported">
<summary>
Gets a value that indicates whether the 32feet.NET library can be used with the current device.
</summary>
</member>
<member name="T:InTheHand.Net.Bluetooth.Msft.WindowsBluetoothSecurity">
<summary>
Handles security between bluetooth devices.
</summary>
</member>
<member name="M:InTheHand.Net.Bluetooth.Msft.WindowsBluetoothSecurity.SetPin(InTheHand.Net.BluetoothAddress,System.String)">
<summary>
This function stores the personal identification number (PIN) for the Bluetooth device.
</summary>
<param name="device">Address of remote device.</param>
<param name="pin">Pin, alphanumeric string of between 1 and 16 ASCII characters.</param>
<remarks><para>On Windows CE platforms this calls <c>BthSetPIN</c>,
its MSDN remarks say:
</para>
<para>&#x201C;Stores the pin for the Bluetooth device identified in pba.
The active connection to the device is not necessary, nor is the presence
of the Bluetooth controller. The PIN is persisted in the registry until
BthRevokePIN is called.
</para>
<para>&#x201C;While the PIN is stored, it is supplied automatically
after the PIN request is issued by the authentication mechanism, so the
user will not be prompted for it. Typically, for UI-based devices, you
would set the PIN for the duration of authentication, and then revoke
it after authentication is complete.&#x201D;
</para>
<para>See also
<see cref="M:InTheHand.Net.Bluetooth.BluetoothSecurity.RevokePin(InTheHand.Net.BluetoothAddress)"/>
</para>
</remarks>
<returns>True on success, else False.</returns>
<seealso cref="M:InTheHand.Net.Bluetooth.BluetoothSecurity.RevokePin(InTheHand.Net.BluetoothAddress)"/>
</member>
<member name="M:InTheHand.Net.Bluetooth.Msft.WindowsBluetoothSecurity.RevokePin(InTheHand.Net.BluetoothAddress)">
<summary>
This function revokes the personal identification number (PIN) for the Bluetooth device.
</summary>
<remarks><para>On Windows CE platforms this calls <c>BthRevokePIN</c>,
its MSDN remarks say:
</para>
<para>&#x201C;When the PIN is revoked, it is removed from registry.
The active connection to the device is not necessary, nor is the presence
of the Bluetooth controller.&#x201D;
</para>
<para>On Windows CE platforms this removes any pending BluetoothWin32Authentication object but does not remove the PIN for an already authenticated device.
Use RemoveDevice to ensure a pairing is completely removed.</para>
<para>See also
<see cref="M:InTheHand.Net.Bluetooth.BluetoothSecurity.SetPin(InTheHand.Net.BluetoothAddress,System.String)"/>
</para>
</remarks>
<param name="device">The remote device.</param>
<returns>True on success, else False.</returns>
<seealso cref="M:InTheHand.Net.Bluetooth.BluetoothSecurity.SetPin(InTheHand.Net.BluetoothAddress,System.String)"/>
</member>
<member name="M:InTheHand.Net.Bluetooth.Msft.WindowsBluetoothSecurity.PairRequest(InTheHand.Net.BluetoothAddress,System.String)">
<summary>
Intiates pairing for a remote device.
</summary>
<param name="device">Remote device with which to pair.</param>
<param name="pin">Chosen PIN code, must be between 1 and 16 ASCII characters.</param>
<remarks><para>On Windows CE platforms this calls <c>BthPairRequest</c>,
its MSDN remarks say:
</para>
<para>&#x201C;BthPairRequest passes the parameters to the <c>BthSetPIN</c>
function and creates an ACL connection. Once the connection is established,
it calls the <c>BthAuthenticate</c> function to authenticate the device.&#x201D;
</para>
<para>On Windows XP/Vista platforms this calls <c>BluetoothAuthenticateDevice</c>,
if the pin argument is set to null a Wizard is displayed to accept a PIN from the user,
otherwise the function executes in transparent mode.
</para>
<para>See also
<see cref="M:InTheHand.Net.Bluetooth.BluetoothSecurity.SetPin(InTheHand.Net.BluetoothAddress,System.String)"/>
</para>
</remarks>
<returns>Whether the operation was successful.</returns>
</member>
<member name="M:InTheHand.Net.Bluetooth.Msft.WindowsBluetoothSecurity.PairRequest(InTheHand.Net.BluetoothAddress,InTheHand.Net.Bluetooth.BluetoothAuthenticationRequirements)">
<summary>
Intiates pairing for a remote device
with SSP if it is available.
</summary>
-
<param name="device">Remote device with which to pair.</param>
<param name="authenticationRequirement">
Note: not supported by all platforms.
</param>
-
<returns>Whether the operation was successful.</returns>
</member>
<member name="M:InTheHand.Net.Bluetooth.Msft.WindowsBluetoothSecurity.RemoveDevice(InTheHand.Net.BluetoothAddress)">
<summary>
Remove the pairing with the specified device
</summary>
-
<param name="device">Remote device with which to remove pairing.</param>
-
<returns>TRUE if device was successfully removed, else FALSE.</returns>
</member>
<member name="M:InTheHand.Net.Bluetooth.Msft.WindowsBluetoothSecurity.SetLinkKey(InTheHand.Net.BluetoothAddress,System.Guid)">
<summary>
<para><b>Not supported on Windows XP</b></para>
</summary>
<param name="device"></param>
<param name="linkkey"></param>
<remarks><para>On Windows CE platforms this calls <c>BthSetLinkKey</c>,
its MSDN remarks say:
</para>
<para>&#x201C;The link key is persisted in registry until <c>BthRevokeLinkKey</c>
is called.
</para>
<para>&#x201C;Typically, the Bluetooth stack manages link keys automatically,
for example, it stores them when they are created. This function is useful
primarily for backup purposes.
</para>
<para>&#x201C;While link key is stored, it will be automatically supplied
once the link key request is issued by the authentication mechanism. If
the link key is incorrect, the renegotiation that involves the PIN is
initiated by the Bluetooth adapter, and the PIN code may be requested
from the user.
</para>
<para>&#x201C;The link key length is 16 bytes. You cannot create link
keys; they are generated by the Bluetooth hardware.&#x201D;
</para>
</remarks>
<returns></returns>
</member>
<member name="M:InTheHand.Net.Bluetooth.Msft.WindowsBluetoothSecurity.GetPinRequest">
<summary>
Retrieves the address of the Bluetooth peer device authentication that requires the PIN code.
<para><b>Not supported on Windows XP</b></para>
</summary>
<remarks><para>On Windows CE platforms this calls <c>BthGetPINRequest</c>,
its MSDN remarks say:
</para>
<para>&#x201C;There can be multiple requests outstanding. After the event
that is provided by the UI handler is signaled, the UI handler must call
this function multiple times until the call fails.&#x201D;
</para>
<para>See also
<see cref="M:InTheHand.Net.Bluetooth.BluetoothSecurity.RefusePinRequest(InTheHand.Net.BluetoothAddress)"/>
and <see cref="M:InTheHand.Net.Bluetooth.BluetoothSecurity.AnswerPinRequest(InTheHand.Net.BluetoothAddress,System.String)"/>
</para>
</remarks>
<returns><see cref="T:InTheHand.Net.BluetoothAddress"/> of the remote device, or null if there is no outstanding PIN request.</returns>
</member>
<member name="M:InTheHand.Net.Bluetooth.Msft.WindowsBluetoothSecurity.RefusePinRequest(InTheHand.Net.BluetoothAddress)">
<summary>
Refuses an outstanding PIN request.
<para><b>Not supported on Windows XP</b></para>
</summary>
<param name="device">Address of the requesting device.</param>
<remarks><para>On Windows CE platforms this calls <c>BthRefusePINRequest</c>,
its MSDN remarks say:
</para>
<para>&#x201C;This function refuses an outstanding PIN request that is
retrieved by <see cref="M:InTheHand.Net.Bluetooth.BluetoothSecurity.GetPinRequest()"/>
function.&#x201D;
</para>
<para>See also
<see cref="M:InTheHand.Net.Bluetooth.BluetoothSecurity.GetPinRequest"/>
and <see cref="M:InTheHand.Net.Bluetooth.BluetoothSecurity.AnswerPinRequest(InTheHand.Net.BluetoothAddress,System.String)"/>
</para>
</remarks>
</member>
<member name="T:InTheHand.Net.Bluetooth.BluetoothDeviceInfoProperties">
<summary>
Specifies properties of a remote Bluetooth Device.
</summary>
-
-
<remarks>
<para>Supported only by the Microsoft stack on desktop Windows.
</para>
<para>Originally from Win32 "bthdef.h" and used by struct
BTH_DEVICE_INFO.flags. The flags are named BDIF_**.
</para>
</remarks>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothDeviceInfoProperties.Address">
<summary>
The address member contains valid data.
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothDeviceInfoProperties.Cod">
<summary>
The classOfDevice member contains valid data.
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothDeviceInfoProperties.Name">
<summary>
The name member contains valid data.
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothDeviceInfoProperties.Paired">
<summary>
The device is a remembered and authenticated device.
The BDIF_PERSONAL flag is always set when this flag is set.
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothDeviceInfoProperties.Personal">
<summary>
The device is a remembered device. If this flag is set and
the BDIF_PAIRED flag is not set, the device is not authenticated.
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothDeviceInfoProperties.Connected">
<summary>
The remote Bluetooth device is currently connected to the local radio.
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothDeviceInfoProperties.ShortName">
<summary>
[Vista SP1]
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothDeviceInfoProperties.Eir">
<summary>
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothDeviceInfoProperties.BR">
<summary>
Bluetooth Basic Rate &#x2014; i.e. traditional Bluetooth [Windows 8]
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothDeviceInfoProperties.LE">
<summary>
Bluetooth Low Energy
</summary>
</member>
<member name="T:InTheHand.Net.Bluetooth.BluetoothAuthenticationMethod">
<summary>
The BluetoothAuthenticationMethod enumeration defines the supported
authentication types during device pairing.
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothAuthenticationMethod.Legacy">
<summary>
The Bluetooth device supports authentication via a PIN.
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothAuthenticationMethod.OutOfBand">
<summary>
The Bluetooth device supports authentication via out-of-band data.
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothAuthenticationMethod.NumericComparison">
<summary>
The Bluetooth device supports authentication via numeric comparison.
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothAuthenticationMethod.PasskeyNotification">
<summary>
The Bluetooth device supports authentication via passkey notification.
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothAuthenticationMethod.Passkey">
<summary>
The Bluetooth device supports authentication via passkey.
</summary>
</member>
<member name="T:InTheHand.Net.Bluetooth.BluetoothAuthenticationRequirements">
<summary>
The AUTHENTICATION_REQUIREMENTS enumeration specifies the 'Man in the Middle' protection required for authentication.
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothAuthenticationRequirements.MITMProtectionNotRequired">
<summary>
Protection against a "Man in the Middle" attack is not required for authentication.
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothAuthenticationRequirements.MITMProtectionRequired">
<summary>
Protection against a "Man in the Middle" attack is required for authentication.
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothAuthenticationRequirements.MITMProtectionNotRequiredBonding">
<summary>
Protection against a "Man in the Middle" attack is not required for bonding.
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothAuthenticationRequirements.MITMProtectionRequiredBonding">
<summary>
Protection against a "Man in the Middle" attack is required for bonding.
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothAuthenticationRequirements.MITMProtectionNotRequiredGeneralBonding">
<summary>
Protection against a "Man in the Middle" attack is not required for General Bonding.
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothAuthenticationRequirements.MITMProtectionRequiredGeneralBonding">
<summary>
Protection against a "Man in the Middle" attack is required for General Bonding.
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothAuthenticationRequirements.MITMProtectionNotDefined">
<summary>
Protection against "Man in the Middle" attack is not defined.
</summary>
</member>
<member name="T:InTheHand.Net.Bluetooth.BluetoothComponent">
<summary>
Provides simple access to asynchronous methods on Bluetooth features, for
instance to background device discovery.
</summary>
-
<example>
<code lang="VB.NET">
Public Sub DiscoDevicesAsync()
Dim bco As New BluetoothComponent()
AddHandler bco.DiscoverDevicesProgress, AddressOf HandleDiscoDevicesProgress
AddHandler bco.DiscoverDevicesComplete, AddressOf HandleDiscoDevicesComplete
bco.DiscoverDevicesAsync(255, True, True, True, False, 99)
End Sub
Private Sub HandleDiscoDevicesProgress(ByVal sender As Object, ByVal e As DiscoverDevicesEventArgs)
Console.WriteLine("DiscoDevicesAsync Progress found {0} devices.", e.Devices.Length)
End Sub
Private Sub HandleDiscoDevicesComplete(ByVal sender As Object, ByVal e As DiscoverDevicesEventArgs)
Debug.Assert(CInt(e.UserState) = 99)
If e.Cancelled Then
Console.WriteLine("DiscoDevicesAsync cancelled.")
ElseIf e.Error IsNot Nothing Then
Console.WriteLine("DiscoDevicesAsync error: {0}.", e.Error.Message)
Else
Console.WriteLine("DiscoDevicesAsync complete found {0} devices.", e.Devices.Length)
End If
End Sub
</code>
</example>
</member>
<member name="M:InTheHand.Net.Bluetooth.BluetoothComponent.#ctor">
<summary>
Initializes a new instance of the <see cref="T:InTheHand.Net.Bluetooth.BluetoothComponent"/> class.
</summary>
</member>
<member name="M:InTheHand.Net.Bluetooth.BluetoothComponent.#ctor(InTheHand.Net.Sockets.BluetoothClient)">
<summary>
Initializes a new instance of the <see cref="T:InTheHand.Net.Bluetooth.BluetoothComponent"/> class.
</summary>
-
<param name="cli">A <see cref="T:InTheHand.Net.Sockets.BluetoothClient"/>
instance to use to run discovery on. Must be non-null.
</param>
</member>
<member name="M:InTheHand.Net.Bluetooth.BluetoothComponent.Dispose(System.Boolean)">
<summary>
Optionally disposes of the managed resources used by the
<see cref="T:InTheHand.Net.Bluetooth.BluetoothComponent"/> class.
</summary>
<param name="disposing"><c>true</c> to release both managed and unmanaged
resources; <c>false</c> to release only unmanaged resources.
</param>
</member>
<member name="E:InTheHand.Net.Bluetooth.BluetoothComponent.DiscoverDevicesComplete">
<summary>
Occurs when an device discovery operation completes.
</summary>
-
<remarks>
<para>This event is raised at the end of the discovery process
and lists all the discovered devices.
</para>
</remarks>
-
<seealso cref="E:InTheHand.Net.Bluetooth.BluetoothComponent.DiscoverDevicesProgress"/>
</member>
<member name="M:InTheHand.Net.Bluetooth.BluetoothComponent.OnDiscoveryComplete(InTheHand.Net.Bluetooth.DiscoverDevicesEventArgs)">
<summary>
Raises the <see cref="E:InTheHand.Net.Bluetooth.BluetoothComponent.DiscoverDevicesComplete"/> event.
</summary>
<param name="e">A <see cref="T:InTheHand.Net.Bluetooth.DiscoverDevicesEventArgs"/>
object that contains event data.
</param>
</member>
<member name="E:InTheHand.Net.Bluetooth.BluetoothComponent.DiscoverDevicesProgress">
<summary>
Occurs during an device discovery operation
to show one or more new devices.
</summary>
-
<remarks>
<para>This event is raised for all discovered devices, both the
known devices which are presented first, if requested,
as well as newly discovery device found by the inquiry process,
again if requested.
</para>
<para>Note that any event instance may include one or more devices. Note
also that a particular device may be presented more than one time;
including once from the &#x2018;known&#x2019; list, once when a
device is dicovered, and possibly another time when the discovery
process retrieves the new device&#x2019;s Device Name.
</para>
</remarks>
-
<seealso cref="E:InTheHand.Net.Bluetooth.BluetoothComponent.DiscoverDevicesComplete"/>
</member>
<member name="M:InTheHand.Net.Bluetooth.BluetoothComponent.OnDiscoveryProgress(InTheHand.Net.Bluetooth.DiscoverDevicesEventArgs)">
<summary>
Raises the <see cref="E:InTheHand.Net.Bluetooth.BluetoothComponent.DiscoverDevicesProgress"/> event.
</summary>
<param name="e">A <see cref="T:InTheHand.Net.Bluetooth.DiscoverDevicesEventArgs"/>
object that contains event data.
</param>
</member>
<member name="M:InTheHand.Net.Bluetooth.BluetoothComponent.DiscoverDevicesAsync(System.Int32,System.Boolean,System.Boolean,System.Boolean,System.Boolean,System.Object)">
<summary>
Discovers accessible Bluetooth devices and returns their names and addresses.
This method does not block the calling thread.
</summary>
-
<remarks>
<para>See <see cref="M:InTheHand.Net.Sockets.BluetoothClient.DiscoverDevices(System.Int32,System.Boolean,System.Boolean,System.Boolean,System.Boolean)"/>
for more information.
</para>
<para>The devices are presented in the <see cref="E:InTheHand.Net.Bluetooth.BluetoothComponent.DiscoverDevicesComplete"/>
and <see cref="E:InTheHand.Net.Bluetooth.BluetoothComponent.DiscoverDevicesProgress"/> events.
</para>
</remarks>
-
<param name="maxDevices">The maximum number of devices to get information about.
</param>
<param name="authenticated">True to return previously authenticated/paired devices.
</param>
<param name="remembered">True to return remembered devices.
</param>
<param name="unknown">True to return previously unknown devices.
</param>
<param name="discoverableOnly">True to return only the devices that
are in range, and in discoverable mode. See the remarks section.
</param>
<param name="state">A user-defined object that is passed to the method
invoked when the asynchronous operation completes.
</param>
-
<returns>An array of BluetoothDeviceInfo objects describing the devices discovered.</returns>
</member>
<member name="T:InTheHand.Net.Bluetooth.BluetoothIoCapability">
<summary>
The BLUETOOTH_IO_CAPABILITY enumeration defines the input/output capabilities of a Bluetooth Device.
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothIoCapability.DisplayOnly">
<summary>
The Bluetooth device is capable of output via display only.
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothIoCapability.DisplayYesNo">
<summary>
The Bluetooth device is capable of output via a display,
and has the additional capability to presenting a yes/no question to the user.
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothIoCapability.KeyboardOnly">
<summary>
The Bluetooth device is capable of input via keyboard.
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothIoCapability.NoInputNoOutput">
<summary>
The Bluetooth device is not capable of input/output.
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothIoCapability.Undefined">
<summary>
The input/output capabilities for the Bluetooth device are undefined.
</summary>
</member>
<member name="T:InTheHand.Net.Bluetooth.BluetoothPublicFactory">
<summary>
Provides the means to create Bluetooth classes on the one selected Bluetooth
stack where multiple are loaded in the same process.
</summary>
-
<remarks>when
<para>When calling <c>new BluetoothClient()</c>, <c>new BluetoothListener()</c>,
etc when multiple Bluetooth stacks are loaded at the same time then the
instance is created on the primary stack. This class allows the application
to select which stack the instance is created on.
Access this class via property
<see cref="P:InTheHand.Net.Bluetooth.BluetoothRadio.StackFactory"/>.
</para>
</remarks>
</member>
<member name="M:InTheHand.Net.Bluetooth.BluetoothPublicFactory.CreateBluetoothClient">
<overloads>
Initialise a new instance of the <see cref="T:InTheHand.Net.Sockets.BluetoothClient"/>
class, using the respective stack and/or radio.
</overloads>
-
<summary>
Initialise a new instance of the <see cref="T:InTheHand.Net.Sockets.BluetoothClient"/>
class, using the respective stack and/or radio.
</summary>
-
<returns>The new instance.
</returns>
</member>
<member name="M:InTheHand.Net.Bluetooth.BluetoothPublicFactory.CreateBluetoothClient(InTheHand.Net.BluetoothEndPoint)">
<summary>
Initialise a new instance of the <see cref="T:InTheHand.Net.Sockets.BluetoothClient"/> class,
with the specified local endpoint and
using the respective stack and/or radio.
</summary>
-
<param name="localEP">See <see cref="M:InTheHand.Net.Sockets.BluetoothClient.#ctor(InTheHand.Net.BluetoothEndPoint)"/>.
</param>
-
<returns>The new instance.
</returns>
</member>
<member name="M:InTheHand.Net.Bluetooth.BluetoothPublicFactory.CreateBluetoothListener(System.Guid)">
<overloads>
Initialise a new instance of the <see cref="T:InTheHand.Net.Sockets.BluetoothListener"/>
class, using the respective stack and/or radio.
</overloads>
-
<summary>
Initialise a new instance of the <see cref="T:InTheHand.Net.Sockets.BluetoothListener"/>
class,
with the specified Service Class Id
using the respective stack and/or radio.
</summary>
-
<param name="service">See <see cref="M:InTheHand.Net.Sockets.BluetoothListener.#ctor(System.Guid)"/>.
</param>
-
<returns>The new instance.
</returns>
</member>
<member name="M:InTheHand.Net.Bluetooth.BluetoothPublicFactory.CreateBluetoothListener(InTheHand.Net.BluetoothAddress,System.Guid)">
<summary>
Initialise a new instance of the <see cref="T:InTheHand.Net.Sockets.BluetoothListener"/>
class,
with the specified Service Class Id and local device address
using the respective stack and/or radio.
</summary>
-
<param name="localAddress">See <see cref="M:InTheHand.Net.Sockets.BluetoothListener.#ctor(InTheHand.Net.BluetoothAddress,System.Guid)"/>.
</param>
<param name="service">See <see cref="M:InTheHand.Net.Sockets.BluetoothListener.#ctor(InTheHand.Net.BluetoothAddress,System.Guid)"/>.
</param>
-
<returns>The new instance.
</returns>
</member>
<member name="M:InTheHand.Net.Bluetooth.BluetoothPublicFactory.CreateBluetoothListener(InTheHand.Net.BluetoothEndPoint)">
<summary>
Initialise a new instance of the <see cref="T:InTheHand.Net.Sockets.BluetoothListener"/>
class,
with the specified Service Class Id and local device address as a
<see cref="T:InTheHand.Net.BluetoothEndPoint"/>
using the respective stack and/or radio.
</summary>
-
<param name="localEP">See <see cref="M:InTheHand.Net.Sockets.BluetoothListener.#ctor(InTheHand.Net.BluetoothEndPoint)"/>.
</param>
-
<returns>The new instance.
</returns>
</member>
<member name="M:InTheHand.Net.Bluetooth.BluetoothPublicFactory.CreateBluetoothListener(System.Guid,System.Byte[],System.Int32)">
<summary>
Initialise a new instance of the <see cref="T:InTheHand.Net.Sockets.BluetoothListener"/>
class,
with the specified Service Class Id and raw Service Record
using the respective stack and/or radio.
</summary>
-
<param name="service">See <see cref="M:InTheHand.Net.Sockets.BluetoothListener.#ctor(System.Guid,System.Byte[],System.Int32)"/>.
</param>
<param name="sdpRecord">See <see cref="M:InTheHand.Net.Sockets.BluetoothListener.#ctor(System.Guid,System.Byte[],System.Int32)"/>.
</param>
<param name="channelOffset">See <see cref="M:InTheHand.Net.Sockets.BluetoothListener.#ctor(System.Guid,System.Byte[],System.Int32)"/>.
</param>
-
<returns>The new instance.
</returns>
</member>
<member name="M:InTheHand.Net.Bluetooth.BluetoothPublicFactory.CreateBluetoothListener(InTheHand.Net.BluetoothAddress,System.Guid,System.Byte[],System.Int32)">
<summary>
Initialise a new instance of the <see cref="T:InTheHand.Net.Sockets.BluetoothListener"/>
class,
with the specified Service Class Id, local device address and raw Service Record
using the respective stack and/or radio.
</summary>
-
<param name="localAddress">See <see cref="M:InTheHand.Net.Sockets.BluetoothListener.#ctor(InTheHand.Net.BluetoothAddress,System.Guid,System.Byte[],System.Int32)"/>.
</param>
<param name="service">See <see cref="M:InTheHand.Net.Sockets.BluetoothListener.#ctor(InTheHand.Net.BluetoothAddress,System.Guid,System.Byte[],System.Int32)"/>.
</param>
<param name="sdpRecord">See <see cref="M:InTheHand.Net.Sockets.BluetoothListener.#ctor(InTheHand.Net.BluetoothAddress,System.Guid,System.Byte[],System.Int32)"/>.
</param>
<param name="channelOffset">See <see cref="M:InTheHand.Net.Sockets.BluetoothListener.#ctor(InTheHand.Net.BluetoothAddress,System.Guid,System.Byte[],System.Int32)"/>.
</param>
-
<returns>The new instance.
</returns>
</member>
<member name="M:InTheHand.Net.Bluetooth.BluetoothPublicFactory.CreateBluetoothListener(InTheHand.Net.BluetoothEndPoint,System.Byte[],System.Int32)">
<summary>
Initialise a new instance of the <see cref="T:InTheHand.Net.Sockets.BluetoothListener"/>
class,
with the specified Service Class Id and local device address as a
<see cref="T:InTheHand.Net.BluetoothEndPoint"/> and raw Service Record
using the respective stack and/or radio.
</summary>
-
<param name="localEP">See <see cref="M:InTheHand.Net.Sockets.BluetoothListener.#ctor(InTheHand.Net.BluetoothEndPoint,System.Byte[],System.Int32)"/>.
</param>
<param name="sdpRecord">See <see cref="M:InTheHand.Net.Sockets.BluetoothListener.#ctor(InTheHand.Net.BluetoothEndPoint,System.Byte[],System.Int32)"/>.
</param>
<param name="channelOffset">See <see cref="M:InTheHand.Net.Sockets.BluetoothListener.#ctor(InTheHand.Net.BluetoothEndPoint,System.Byte[],System.Int32)"/>.
</param>
-
<returns>The new instance.
</returns>
</member>
<member name="M:InTheHand.Net.Bluetooth.BluetoothPublicFactory.CreateBluetoothListener(System.Guid,InTheHand.Net.Bluetooth.ServiceRecord)">
<summary>
Initialise a new instance of the <see cref="T:InTheHand.Net.Sockets.BluetoothListener"/>
class,
with the specified Service Class Id and Service Record
using the respective stack and/or radio.
</summary>
-
<param name="service">See <see cref="M:InTheHand.Net.Sockets.BluetoothListener.#ctor(System.Guid,InTheHand.Net.Bluetooth.ServiceRecord)"/>.
</param>
<param name="sdpRecord">See <see cref="M:InTheHand.Net.Sockets.BluetoothListener.#ctor(System.Guid,InTheHand.Net.Bluetooth.ServiceRecord)"/>.
</param>
-
<returns>The new instance.
</returns>
</member>
<member name="M:InTheHand.Net.Bluetooth.BluetoothPublicFactory.CreateBluetoothListener(InTheHand.Net.BluetoothAddress,System.Guid,InTheHand.Net.Bluetooth.ServiceRecord)">
<summary>
Initialise a new instance of the <see cref="T:InTheHand.Net.Sockets.BluetoothListener"/>
class,
with the specified Service Class Id, local device address and Service Record
using the respective stack and/or radio.
</summary>
-
<param name="localAddress">See <see cref="M:InTheHand.Net.Sockets.BluetoothListener.#ctor(InTheHand.Net.BluetoothAddress,System.Guid,InTheHand.Net.Bluetooth.ServiceRecord)"/>.
</param>
<param name="service">See <see cref="M:InTheHand.Net.Sockets.BluetoothListener.#ctor(InTheHand.Net.BluetoothAddress,System.Guid,InTheHand.Net.Bluetooth.ServiceRecord)"/>.
</param>
<param name="sdpRecord">See <see cref="M:InTheHand.Net.Sockets.BluetoothListener.#ctor(InTheHand.Net.BluetoothAddress,System.Guid,InTheHand.Net.Bluetooth.ServiceRecord)"/>.
</param>
-
<returns>The new instance.
</returns>
</member>
<member name="M:InTheHand.Net.Bluetooth.BluetoothPublicFactory.CreateBluetoothListener(InTheHand.Net.BluetoothEndPoint,InTheHand.Net.Bluetooth.ServiceRecord)">
<summary>
Initialise a new instance of the <see cref="T:InTheHand.Net.Sockets.BluetoothListener"/>
class,
with the specified Service Class Id and local device address as a
<see cref="T:InTheHand.Net.BluetoothEndPoint"/> and Service Record
using the respective stack and/or radio.
</summary>
-
<param name="localEP">See <see cref="M:InTheHand.Net.Sockets.BluetoothListener.#ctor(InTheHand.Net.BluetoothEndPoint,InTheHand.Net.Bluetooth.ServiceRecord)"/>.
</param>
<param name="sdpRecord">See <see cref="M:InTheHand.Net.Sockets.BluetoothListener.#ctor(InTheHand.Net.BluetoothEndPoint,InTheHand.Net.Bluetooth.ServiceRecord)"/>.
</param>
-
<returns>The new instance.
</returns>
</member>
<member name="P:InTheHand.Net.Bluetooth.BluetoothPublicFactory.BluetoothSecurity">
<summary>
Gets the <see cref="T:InTheHand.Net.Bluetooth.BluetoothSecurity"/>
instance for the respective stack and/or radio.
</summary>
-
<value>A <see cref="T:InTheHand.Net.Bluetooth.BluetoothSecurity"/>
as an <see cref="T:InTheHand.Net.Bluetooth.Factory.IBluetoothSecurity"/>
</value>
</member>
<member name="M:InTheHand.Net.Bluetooth.BluetoothPublicFactory.CreateBluetoothDeviceInfo(InTheHand.Net.BluetoothAddress)">
<summary>
Initialise a new instance of the <see cref="T:InTheHand.Net.Sockets.BluetoothDeviceInfo"/> class,
using the respective stack and/or radio.
</summary>
-
<param name="addr">See <see cref="M:InTheHand.Net.Sockets.BluetoothDeviceInfo.#ctor(InTheHand.Net.BluetoothAddress)"/>.
</param>
-
<returns>The new instance.
</returns>
</member>
<member name="M:InTheHand.Net.Bluetooth.BluetoothPublicFactory.CreateObexWebRequest(System.Uri)">
<summary>
Initialise a new instance of the <see cref="T:InTheHand.Net.ObexWebRequest"/> class,
using the respective stack and/or radio.
</summary>
-
<returns>The new instance of <see cref="T:InTheHand.Net.ObexWebRequest"/>.
</returns>
-
<param name="requestUri">See <see cref="M:InTheHand.Net.ObexWebRequest.#ctor(System.Uri)"/>.
</param>
</member>
<member name="M:InTheHand.Net.Bluetooth.BluetoothPublicFactory.CreateObexWebRequest(System.String,InTheHand.Net.BluetoothAddress,System.String)">
<summary>
Initialize an instance of this <see cref="T:InTheHand.Net.ObexWebRequest"/> class,
given a scheme, a Bluetooth Device Address, and a remote path name;
using the respective stack and/or radio.
</summary>
-
<param name="scheme">The Uri scheme. One of
<c>obex</c>, <c>obex-push</c>, <c>obex-ftp</c>, or <c>obex-sync</c>.
</param>
<param name="target">The Bluetooth Device Address of the OBEX server.
</param>
<param name="path">The path on the OBEX server.
</param>
-
<returns>The new instance of <see cref="T:InTheHand.Net.ObexWebRequest"/>.
</returns>
</member>
<member name="M:InTheHand.Net.Bluetooth.BluetoothPublicFactory.CreateObexListener">
<summary>
Initialise a new instance of the <see cref="T:InTheHand.Net.ObexListener"/> class,
using the respective stack and/or radio.
</summary>
-
<returns>The new instance of <see cref="T:InTheHand.Net.ObexListener"/>.
</returns>
</member>
<member name="T:InTheHand.Net.Bluetooth.BluetoothRadio">
<summary>
Represents a Bluetooth Radio device.
</summary>
<remarks>Allows you to query properties of the radio hardware and set the mode.</remarks>
</member>
<member name="P:InTheHand.Net.Bluetooth.BluetoothRadio.AllRadios">
<summary>
Gets an array of all Bluetooth radios on the system.
</summary>
<remarks>Under Windows CE this will only ever return a single <see cref="T:InTheHand.Net.Bluetooth.BluetoothRadio"/> device.
<para>If the device has a third-party stack this property will return an empty collection</para></remarks>
</member>
<member name="M:InTheHand.Net.Bluetooth.BluetoothRadio.GetAllRadios">
<summary>
Gets an array of all Bluetooth radios on the system.
</summary>
<remarks>
<para>If there are no Bluetooth radios then this method will produce an error.
</para>
<para>The order in which the library will search for Bluetooth
stacks is controlled by configuration.
</para>
</remarks>
</member>
<member name="P:InTheHand.Net.Bluetooth.BluetoothRadio.PrimaryRadio">
<summary>
Gets the primary <see cref="T:InTheHand.Net.Bluetooth.BluetoothRadio"/>.
</summary>
<remarks>For Windows CE based devices this is the only <see cref="T:InTheHand.Net.Bluetooth.BluetoothRadio"/>, for Windows XP this is the first available <see cref="T:InTheHand.Net.Bluetooth.BluetoothRadio"/> device.
<para>If the device has a third-party stack this property will return null</para></remarks>
</member>
<member name="M:InTheHand.Net.Bluetooth.BluetoothRadio.GetPrimaryRadio">
<summary>
Gets the primary <see cref="T:InTheHand.Net.Bluetooth.BluetoothRadio"/>.
</summary>
<remarks>
<para>If there are no Bluetooth radios then this method will produce an error.
</para>
<para>The order in which the library will search for Bluetooth
stacks is controlled by configuration.
</para>
</remarks>
</member>
<member name="P:InTheHand.Net.Bluetooth.BluetoothRadio.IsSupported">
<summary>
Gets a value that indicates whether the 32feet.NET library can be used with the current device.
</summary>
</member>
<member name="P:InTheHand.Net.Bluetooth.BluetoothRadio.StackFactory">
<summary>
Gets a class factory for creating client and listener instances on a particular stack.
</summary>
</member>
<member name="P:InTheHand.Net.Bluetooth.BluetoothRadio.Remote">
<summary>
Gets whether the radio is on a Bluetooth stack on a remote machine.
</summary>
-
<value>Is <see langword="null"/> if the radio is on to the local
machine, otherwise it&#x2019;s the name of the remote machine to which the
radio is attached.
</value>
</member>
<member name="P:InTheHand.Net.Bluetooth.BluetoothRadio.Handle">
<summary>
Gets the handle for this radio.
</summary>
<remarks>Relevant only on Windows XP.</remarks>
</member>
<member name="P:InTheHand.Net.Bluetooth.BluetoothRadio.HardwareStatus">
<summary>
Returns the current status of the Bluetooth radio hardware.
</summary>
<value>A member of the <see cref="P:InTheHand.Net.Bluetooth.BluetoothRadio.HardwareStatus"/> enumeration.</value>
</member>
<member name="P:InTheHand.Net.Bluetooth.BluetoothRadio.Mode">
<summary>
Gets or Sets the current mode of operation of the Bluetooth radio.
</summary>
<remarks>
<para><strong>Microsoft CE/WM</strong></para>
This setting will be persisted when the device is reset.
An Icon will be displayed in the tray on the Home screen and a ?Windows Mobile device will emit a flashing blue LED when Bluetooth is enabled.
<para><strong>Widcomm Win32</strong></para>
<para>Is supported.
</para>
<para><strong>Widcomm CE/WM</strong></para>
<para>Get and Set both supported.
</para>
<list type="table">
<listheader><term>Mode</term><term>Get</term><term>Set</term>
</listheader>
<item><term>PowerOff</term><term>Disabled or non-connectable</term>
<term>CONNECT_ALLOW_NONE</term>
</item>
<item><term>Connectable</term><term>Connectable</term>
<term>CONNECT_ALLOW_ALL, note not CONNECT_ALLOW_PAIRED.</term>
</item>
<item><term>Discoverable</term><term>Discoverable</term>
<term>Plus also discoverable.</term>
</item>
</list>
<para>Note also that when the Widcomm stack is disabled/off
we report <c>PowerOff</c> (not in 2.4 and earlier), but
we can't turn put it in that mode from the library.
Neither can we turn it back on, <strong>except</strong> that
it happens when the application first uses Bluetooth!
</para>
<para><strong>Widcomm Win32</strong></para>
<para>Set is not supported. There's no Widcomm API support.
</para>
</remarks>
</member>
<member name="P:InTheHand.Net.Bluetooth.BluetoothRadio.Modes">
<summary>
Get whether the radio is connectable and/or discoverable, and powered-up.
</summary>
-
<remarks>
<para>A Bluetooth radio can be powered-off and thus cannot be used,
or it can be powered-up and can make connections to a remote device (outbound),
it can then also independently have the two "Scan Modes" set, they are:
Connectable (for inbound connections) and Discoverable.
</para>
<para>There are restrictions on the various platforms that we support:
for instance when the radio is powered-down how the scan state is reported,
whether the power state can be reported,
whether the radio can be make non-connectable if is still discoverable,
and finally whether a user application is restricted in how it can change modes.
See <see cref="T:InTheHand.Net.Bluetooth.RadioModes"/> for more information.
</para>
<para>The Microsoft stack on desktop Windows for instance
does not allow the radio to be set non-connectable when it is discoverable,
the radio cannot be powered-down (in Windows 7 and earlier),
and the mode options that can be set are restructed depending on what
mode settings the user has made manually in the Bluetooth Control Panel.
</para>
</remarks>
</member>
<member name="P:InTheHand.Net.Bluetooth.BluetoothRadio.LocalAddress">
<summary>
Get the address of the local Bluetooth radio device.
</summary>
-
<remarks><para>The property can return a <see langword="null"/> value in
some cases. For instance on CE when the radio is powered-off the value
will be <see>null</see>.</para>
</remarks>
-
<value>The address of the local Bluetooth radio device.
</value>
</member>
<member name="P:InTheHand.Net.Bluetooth.BluetoothRadio.Name">
<summary>
Returns the friendly name of the local Bluetooth radio.
</summary>
-
<remarks>
<para>Devices normally cache the remote device name, only reading it the first
time the remote device is discovered. It is generally not useful then to change
the name to provide a status update. For instance on desktop Windows
with the Microsoft stack we haven't found a good way for the name to be
flushed so that it is re-read, even deleting the device didn't flush the
name if I remember correctly.
</para>
<para>Currently read-only on Widcomm stack. Probably could be supported,
let us know if you need this function.
</para>
</remarks>
</member>
<member name="P:InTheHand.Net.Bluetooth.BluetoothRadio.ClassOfDevice">
<summary>
Returns the Class of Device.
</summary>
</member>
<member name="P:InTheHand.Net.Bluetooth.BluetoothRadio.Manufacturer">
<summary>
Returns the manufacturer of the <see cref="T:InTheHand.Net.Bluetooth.BluetoothRadio"/> device.
</summary>
<remarks>
See <see cref="P:InTheHand.Net.Bluetooth.BluetoothRadio.HciVersion"/> for more information.
</remarks>
</member>
<member name="P:InTheHand.Net.Bluetooth.BluetoothRadio.HciVersion">
<summary>
Bluetooth Version supported by the Host Controller Interface implementation.
</summary>
-
<remarks>
<para>There are five fields returned by the Read Local Version Information
HCI command: HCI Version, HCI Revision, LMP Version,
Manufacturer_Name, and LMP Subversion.
We expose all five, but not all platforms provide access to them all.
The Microsoft stack on desktop Windows exposes all five,
except for Windows XP which only exposes the Manufacturer
and LmpSubversion values. Bluetopia apparently exposes none of them.
The Microsoft stack on Windows Mobile, Widcomm on both platforms,
BlueSoleil, and BlueZ expose all five.
</para>
</remarks>
</member>
<member name="P:InTheHand.Net.Bluetooth.BluetoothRadio.HciRevision">
<summary>
Manufacture's Revision number of the HCI implementation.
</summary>
<remarks>
See <see cref="P:InTheHand.Net.Bluetooth.BluetoothRadio.HciVersion"/> for more information.
</remarks>
</member>
<member name="P:InTheHand.Net.Bluetooth.BluetoothRadio.LmpVersion">
<summary>
Bluetooth Version supported by the Link Manager Protocol implementation.
</summary>
<remarks>
See <see cref="P:InTheHand.Net.Bluetooth.BluetoothRadio.HciVersion"/> for more information.
</remarks>
</member>
<member name="P:InTheHand.Net.Bluetooth.BluetoothRadio.LmpSubversion">
<summary>
Manufacture's Revision number of the LMP implementation.
</summary>
<remarks>
See <see cref="P:InTheHand.Net.Bluetooth.BluetoothRadio.HciVersion"/> for more information.
</remarks>
</member>
<member name="P:InTheHand.Net.Bluetooth.BluetoothRadio.LmpFeatures">
<summary>
Get the LMP Features flags for the radio.
</summary>
-
<remarks>
<para>Implemented on all stacks except Widcomm.
Only tested so far on MSFT+Win32, MSFT+WM, and Bluetopia.
</para>
<para>Implemented *after* version 3.5, see workitem
<see href="http://32feet.codeplex.com/workitem/33059">33059</see>.
</para>
</remarks>
</member>
<member name="P:InTheHand.Net.Bluetooth.BluetoothRadio.SoftwareManufacturer">
<summary>
Returns the manufacturer of the Bluetooth software stack running locally.
</summary>
</member>
<member name="T:InTheHand.Net.Bluetooth.BluetoothSecurity">
<summary>
Handles security between bluetooth devices.
</summary>
</member>
<member name="M:InTheHand.Net.Bluetooth.BluetoothSecurity.PairRequest(InTheHand.Net.BluetoothAddress,System.String)">
<summary>
Intiates pairing for a remote device.
</summary>
<param name="device">Remote device with which to pair.</param>
<param name="pin">Chosen PIN code, must be between 1 and 16 ASCII characters.
Or <c>null</c> to initiate pairing to be handled for instance by
<see cref="T:InTheHand.Net.Bluetooth.BluetoothWin32Authentication"/>.
</param>
-
<remarks>
<para>These days most devices are using Bluetooth version 2.1's
Secure Simple Pairing (SSP) which does not use a PIN code. So instead use this
function only to initiate pairing by passing <c>null</c> as <paramref name="pin"/>.
To handle pairing, at least on desktop Windows with the Microsoft Bluetooth stack,
use class <see cref="T:InTheHand.Net.Bluetooth.BluetoothWin32Authentication"/>
and respond to the pairing callback method as required; for most of the SSP
pairing methods that is to set <see cref="P:InTheHand.Net.Bluetooth.BluetoothWin32AuthenticationEventArgs.Confirm">BluetoothWin32AuthenticationEventArgs.Confirm</see>
to <c>true</c>, and for traditional pairing instead set <see cref="P:InTheHand.Net.Bluetooth.BluetoothWin32AuthenticationEventArgs.Pin">BluetoothWin32AuthenticationEventArgs.Pin</see>
to the PIN code.
</para>
<para>On Windows CE platforms this calls <c>BthPairRequest</c>,
its MSDN remarks say:
</para>
<para>&#x201C;BthPairRequest passes the parameters to the <c>BthSetPIN</c>
function and creates an ACL connection. Once the connection is established,
it calls the <c>BthAuthenticate</c> function to authenticate the device.&#x201D;
</para>
<para>On Windows XP/Vista platforms this calls <c>BluetoothAuthenticateDevice</c>.
If the pin argument is set to null pairing is initiated and if
there is no instance of class <see cref="T:InTheHand.Net.Bluetooth.BluetoothWin32Authentication"/>
then a Wizard is displayed to accept a PIN from the user.
</para>
<para>See also
<see cref="M:InTheHand.Net.Bluetooth.BluetoothSecurity.SetPin(InTheHand.Net.BluetoothAddress,System.String)"/>
</para>
</remarks>
<returns>Whether the operation was successful.</returns>
</member>
<member name="M:InTheHand.Net.Bluetooth.BluetoothSecurity.RemoveDevice(InTheHand.Net.BluetoothAddress)">
<summary>
Remove the pairing with the specified device
</summary>
-
<param name="device">Remote device with which to remove pairing.</param>
-
<returns>TRUE if device was successfully removed, else FALSE.</returns>
</member>
<member name="M:InTheHand.Net.Bluetooth.BluetoothSecurity.SetPin(InTheHand.Net.BluetoothAddress,System.String)">
<summary>
This function stores the personal identification number (PIN) for the Bluetooth device.
</summary>
<param name="device">Address of remote device.</param>
<param name="pin">Pin, alphanumeric string of between 1 and 16 ASCII characters.</param>
<remarks><para>On Windows CE platforms this calls <c>BthSetPIN</c>,
its MSDN remarks say:
</para>
<para>&#x201C;Stores the pin for the Bluetooth device identified in pba.
The active connection to the device is not necessary, nor is the presence
of the Bluetooth controller. The PIN is persisted in the registry until
BthRevokePIN is called.
</para>
<para>&#x201C;While the PIN is stored, it is supplied automatically
after the PIN request is issued by the authentication mechanism, so the
user will not be prompted for it. Typically, for UI-based devices, you
would set the PIN for the duration of authentication, and then revoke
it after authentication is complete.&#x201D;
</para>
<para>See also
<see cref="M:InTheHand.Net.Bluetooth.BluetoothSecurity.RevokePin(InTheHand.Net.BluetoothAddress)"/>
</para>
</remarks>
<returns>True on success, else False.</returns>
<seealso cref="M:InTheHand.Net.Bluetooth.BluetoothSecurity.RevokePin(InTheHand.Net.BluetoothAddress)"/>
</member>
<member name="M:InTheHand.Net.Bluetooth.BluetoothSecurity.RevokePin(InTheHand.Net.BluetoothAddress)">
<summary>
This function revokes the personal identification number (PIN) for the Bluetooth device.
</summary>
<remarks><para>On Windows CE platforms this calls <c>BthRevokePIN</c>,
its MSDN remarks say:
</para>
<para>&#x201C;When the PIN is revoked, it is removed from registry.
The active connection to the device is not necessary, nor is the presence
of the Bluetooth controller.&#x201D;
</para>
<para>On Windows CE platforms this removes any pending BluetoothWin32Authentication object but does not remove the PIN for an already authenticated device.
Use RemoveDevice to ensure a pairing is completely removed.</para>
<para>See also
<see cref="M:InTheHand.Net.Bluetooth.BluetoothSecurity.SetPin(InTheHand.Net.BluetoothAddress,System.String)"/>
</para>
</remarks>
<param name="device">The remote device.</param>
<returns>True on success, else False.</returns>
<seealso cref="M:InTheHand.Net.Bluetooth.BluetoothSecurity.SetPin(InTheHand.Net.BluetoothAddress,System.String)"/>
</member>
<member name="M:InTheHand.Net.Bluetooth.BluetoothSecurity.SetLinkKey(InTheHand.Net.BluetoothAddress,System.Guid)">
<summary>
<para><b>Not supported on Windows XP</b></para>
</summary>
-
<param name="device">The device whose Link Key to retrieve.</param>
<param name="linkKey">The 16-byte Link Key to set.</param>
-
<returns><c>true</c> if the operation was successful; <c>false</c> otherwise.</returns>
-
<remarks><para>On Windows CE platforms this calls <c>BthSetLinkKey</c>,
its MSDN remarks say:
</para>
<para>&#x201C;The link key is persisted in registry until <c>BthRevokeLinkKey</c>
is called.
</para>
<para>&#x201C;Typically, the Bluetooth stack manages link keys automatically,
for example, it stores them when they are created. This function is useful
primarily for backup purposes.
</para>
<para>&#x201C;While link key is stored, it will be automatically supplied
once the link key request is issued by the authentication mechanism. If
the link key is incorrect, the renegotiation that involves the PIN is
initiated by the Bluetooth adapter, and the PIN code may be requested
from the user.
</para>
<para>&#x201C;The link key length is 16 bytes. You cannot create link
keys; they are generated by the Bluetooth hardware.&#x201D;
</para>
</remarks>
<returns></returns>
</member>
<member name="M:InTheHand.Net.Bluetooth.BluetoothSecurity.GetPinRequest">
<summary>
Retrieves the address of the Bluetooth peer device authentication that requires the PIN code.
<para><b>Not supported on Windows XP</b></para>
</summary>
<remarks><para>On Windows CE platforms this calls <c>BthGetPINRequest</c>,
its MSDN remarks say:
</para>
<para>&#x201C;There can be multiple requests outstanding. After the event
that is provided by the UI handler is signaled, the UI handler must call
this function multiple times until the call fails.&#x201D;
</para>
<para>See also
<see cref="M:InTheHand.Net.Bluetooth.BluetoothSecurity.RefusePinRequest(InTheHand.Net.BluetoothAddress)"/>
and <see cref="M:InTheHand.Net.Bluetooth.BluetoothSecurity.AnswerPinRequest(InTheHand.Net.BluetoothAddress,System.String)"/>
</para>
</remarks>
<returns><see cref="T:InTheHand.Net.BluetoothAddress"/> of the remote device, or null if there is no outstanding PIN request.</returns>
</member>
<member name="M:InTheHand.Net.Bluetooth.BluetoothSecurity.RefusePinRequest(InTheHand.Net.BluetoothAddress)">
<summary>
Refuses an outstanding PIN request.
<para><b>Not supported on Windows XP</b></para>
</summary>
-
<param name="device">Address of the requesting device.</param>
-
<returns><c>true</c> if the operation was successful; <c>false</c> otherwise.</returns>
-
<remarks><para>On Windows CE platforms this calls <c>BthRefusePINRequest</c>,
its MSDN remarks say:
</para>
<para>&#x201C;This function refuses an outstanding PIN request that is
retrieved by <see cref="M:InTheHand.Net.Bluetooth.BluetoothSecurity.GetPinRequest"/>
function.&#x201D;
</para>
<para>See also
<see cref="M:InTheHand.Net.Bluetooth.BluetoothSecurity.GetPinRequest"/>
and <see cref="M:InTheHand.Net.Bluetooth.BluetoothSecurity.AnswerPinRequest(InTheHand.Net.BluetoothAddress,System.String)"/>
</para>
</remarks>
</member>
<member name="T:InTheHand.Net.Bluetooth.BluetoothService">
<summary>
Standard Bluetooth Profile identifiers.
</summary>
-
<remarks>
<para>See the list at <see href="http://www.bluetooth.org/Technical/AssignedNumbers/service_discovery.htm"/>.
</para>
<para>The Bluetooth Base UUID is {00000000-0000-1000-8000-00805F9B34FB}
</para>
</remarks>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothService.Empty">
<summary>
Represents an empty service Guid.
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothService.BluetoothBase">
<summary>
Represents the base Guid from which all standard Bluetooth profiles are derived - not used for connections.
Is {00000000-0000-1000-8000-00805F9B34FB}
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothService.SdpProtocol">
<summary>
[0x0001]
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothService.UdpProtocol">
<summary>
[0x0002]
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothService.RFCommProtocol">
<summary>
[0x0003]
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothService.TcpProtocol">
<summary>
[0x0004]
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothService.TcsBinProtocol">
<summary>
[0x0005]
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothService.TcsAtProtocol">
<summary>
[0x0006]
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothService.AttProtocol">
<summary>
[0x0008]
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothService.ObexProtocol">
<summary>
[0x0008]
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothService.IPProtocol">
<summary>
[0x0009]
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothService.FtpProtocol">
<summary>
[0x000A]
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothService.HttpProtocol">
<summary>
[0x000C]
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothService.WspProtocol">
<summary>
[0x000E]
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothService.BnepProtocol">
<summary>
[0x000F]
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothService.UpnpProtocol">
<summary>
[0x0010]
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothService.HidpProtocol">
<summary>
[0x0011]
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothService.HardcopyControlChannelProtocol">
<summary>
[0x0012]
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothService.HardcopyDataChannelProtocol">
<summary>
[0x0014]
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothService.HardcopyNotificationProtocol">
<summary>
[0x0016]
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothService.AvctpProtocol">
<summary>
[0x0017]
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothService.AvdtpProtocol">
<summary>
[0x0019]
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothService.CmtpProtocol">
<summary>
[0x001B]
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothService.UdiCPlaneProtocol">
<summary>
[0x001D] ?????
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothService.McapControlChannelProtocol">
<summary>
[0x001E]
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothService.McapDataChannelProtocol">
<summary>
[0x001F]
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothService.L2CapProtocol">
<summary>
[0x0100]
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothService.ServiceDiscoveryServer">
<summary>
[0x1000]
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothService.BrowseGroupDescriptor">
<summary>
[0x1001]
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothService.PublicBrowseGroup">
<summary>
[0x1002]
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothService.SerialPort">
<summary>
Provides a basic Serial emulation connect over Bluetooth. [0x1101]
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothService.LanAccessUsingPpp">
<summary>
Used to establish PPP connections over RFComm channels. [0x1102]
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothService.DialupNetworking">
<summary>
[0x1103]
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothService.IrMCSync">
<summary>
[0x1104]
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothService.ObexObjectPush">
<summary>
Used for sending binary objects between devices.[0x1105]
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothService.ObexFileTransfer">
<summary>
OBEX version of an FTP server [0x1106]
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothService.IrMCSyncCommand">
<summary>
[0x1107]
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothService.Headset">
<summary>
HSP (Headset Profile) &#x2014; Supports Bluetooth headset devices.[0x1108]
See also
<see cref="F:InTheHand.Net.Bluetooth.BluetoothService.HeadsetHeadset"/>
<see cref="F:InTheHand.Net.Bluetooth.BluetoothService.HeadsetAudioGateway"/>
</summary>
<seealso cref="F:InTheHand.Net.Bluetooth.BluetoothService.HeadsetHeadset"/>
<seealso cref="F:InTheHand.Net.Bluetooth.BluetoothService.HeadsetAudioGateway"/>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothService.CordlessTelephony">
<summary>
[0x1109]
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothService.AudioSource">
<summary>
[0x110A]
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothService.AudioSink">
<summary>
[0x110B]
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothService.AVRemoteControlTarget">
<summary>
[0x110C]
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothService.AdvancedAudioDistribution">
<summary>
[0x110D]
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothService.AVRemoteControl">
<summary>
[0x110E]
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothService.AVRemoteControlController">
<summary>
[0x110F]
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothService.Intercom">
<summary>
[0x1110]
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothService.Fax">
<summary>
[0x1111]
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothService.HeadsetAudioGateway">
<summary>
[0x1112]
See also
<see cref="F:InTheHand.Net.Bluetooth.BluetoothService.Headset"/>
<see cref="F:InTheHand.Net.Bluetooth.BluetoothService.HeadsetHeadset"/>
</summary>
<seealso cref="F:InTheHand.Net.Bluetooth.BluetoothService.Headset"/>
<seealso cref="F:InTheHand.Net.Bluetooth.BluetoothService.HeadsetHeadset"/>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothService.Wap">
<summary>
[0x1113]
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothService.WapClient">
<summary>
[0x1114]
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothService.Panu">
<summary>
[0x1115]
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothService.Nap">
<summary>
[0x1116]
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothService.GN">
<summary>
[0x1117]
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothService.DirectPrinting">
<summary>
[0x1118]
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothService.ReferencePrinting">
<summary>
[0x1119]
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothService.Imaging">
<summary>
[0x111A]
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothService.ImagingResponder">
<summary>
[0x111B]
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothService.ImagingAutomaticArchive">
<summary>
[0x111C]
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothService.ImagingReferenceObjects">
<summary>
[0x111D]
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothService.Handsfree">
<summary>
Supports hands free kits such as a car kits which provide audio and more advanced call control than the Headset profile. [0x111E]
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothService.HandsfreeAudioGateway">
<summary>
[0x111F]
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothService.DirectPrintingReferenceObjects">
<summary>
[0x1120]
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothService.ReflectedUI">
<summary>
[0x1121]
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothService.BasicPrinting">
<summary>
Used for printing simple text, HTML, vCard objects and similar. [0x1122]
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothService.PrintingStatus">
<summary>
[0x1123]
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothService.HumanInterfaceDevice">
<summary>
Supports human interface devices such as keyboards and mice. [0x1124]
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothService.HardcopyCableReplacement">
<summary>
[0x1125]
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothService.HardcopyCableReplacementPrint">
<summary>
[0x1126]
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothService.HardcopyCableReplacementScan">
<summary>
[0x1127]
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothService.CommonIsdnAccess">
<summary>
Common_ISDN_Access [0x1128]
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothService.VideoConferencingGW">
<summary>
[0x1129]
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothService.UdiMT">
<summary>
UDI_MT [0x112A]
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothService.UdiTA">
<summary>
UDI_TA [0x112B]
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothService.AudioVideo">
<summary>
[0x112C]
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothService.SimAccess">
<summary>
SIM_Access [0x112D]
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothService.PhonebookAccessPce">
<summary>
Phonebook Access - PCE [0x112E]
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothService.PhonebookAccessPse">
<summary>
Phonebook Access - PSE [0x112F]
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothService.PhonebookAccess">
<summary>
Phonebook Access [0x1130]
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothService.HeadsetHeadset">
<summary>
Headset [0x1131]
See also
<see cref="F:InTheHand.Net.Bluetooth.BluetoothService.Headset"/>
<see cref="F:InTheHand.Net.Bluetooth.BluetoothService.HeadsetAudioGateway"/>
</summary>
<seealso cref="F:InTheHand.Net.Bluetooth.BluetoothService.Headset"/>
<seealso cref="F:InTheHand.Net.Bluetooth.BluetoothService.HeadsetAudioGateway"/>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothService.MessageAccessServer">
<summary>
Message Access Server [0x1132]
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothService.MessageNotificationServer">
<summary>
Message Notification Server [0x1133]
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothService.MessageAccessProfile">
<summary>
Message Access Profile [0x1134]
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothService.PnPInformation">
<summary>
Bluetooth Device Identification. [0x1200]
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothService.GenericNetworking">
<summary>
[0x1201]
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothService.GenericFileTransfer">
<summary>
[0x1202]
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothService.GenericAudio">
<summary>
[0x1203]
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothService.GenericTelephony">
<summary>
[0x1204]
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothService.UPnp">
<summary>
[0x1205]
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothService.UPnpIP">
<summary>
[0x1206]
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothService.UPnpIPPan">
<summary>
ESDP_UPNP_IP_PAN [0x1300]
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothService.UPnpIPLap">
<summary>
ESDP_UPNP_IP_LAP [0x1301]
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothService.UPnpIPL2Cap">
<summary>
ESDP_UPNP_L2CAP [0x1302]
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothService.VideoSource">
<summary>
Video Distribution Profile - Source [0x1303]
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothService.VideoSink">
<summary>
Video Distribution Profile - Sink [0x1304]
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothService.VideoDistribution">
<summary>
Video Distribution Profile [0x1305]
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothService.HealthDevice">
<summary>
Health Device Profile (HDP) [0x1400]
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothService.HealthDeviceSource">
<summary>
Health Device Profile (HDP) - Source [0x1401]
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothService.HealthDeviceSink">
<summary>
Health Device Profile (HDP) - Sink [0x1402]
</summary>
</member>
<member name="M:InTheHand.Net.Bluetooth.BluetoothService.GetName(System.Guid)">
<summary>
Retrieves the name of the Service Class UUID that has the specified value.
</summary>
<param name="uuid">
The service class UUID as a <see cref="T:System.Guid"/>.
</param>
<returns>
A string containing the name of the service class whose UUID value is <paramref name="uuid"/>,
or a null reference (<c>Nothing</c> in Visual Basic) if no such constant is found.
</returns>
</member>
<member name="M:InTheHand.Net.Bluetooth.BluetoothService.GetName(System.Int16)">
<summary>
Retrieves the name of the Service Class UUID that has the specified value.
</summary>
<param name="uuid16">
The service class UUID in the 16-bit UUID short form as a <see cref="T:System.Int16"/>.
</param>
<returns>
A string containing the name of the service class whose UUID value is <paramref name="uuid"/>,
or a null reference (<c>Nothing</c> in Visual Basic) if no such constant is found.
</returns>
</member>
<member name="M:InTheHand.Net.Bluetooth.BluetoothService.GetName(System.UInt16)">
<summary>
Retrieves the name of the Service Class UUID that has the specified value.
</summary>
<param name="uuid16">
The service class UUID in the 16-bit short UUID form as a <see cref="T:System.UInt16"/>.
</param>
<returns>
A string containing the name of the service class whose UUID value is <paramref name="uuid"/>,
or a null reference (<c>Nothing</c> in Visual Basic) if no such constant is found.
</returns>
</member>
<member name="M:InTheHand.Net.Bluetooth.BluetoothService.GetName(System.Int32)">
<summary>
Retrieves the name of the Service Class UUID that has the specified value.
</summary>
<param name="uuid32">
The service class UUID in the 32-bit short UUID form as a <see cref="T:System.Int32"/>.
</param>
<returns>
A string containing the name of the service class whose UUID value is <paramref name="uuid"/>,
or a null reference (<c>Nothing</c> in Visual Basic) if no such constant is found.
</returns>
</member>
<member name="M:InTheHand.Net.Bluetooth.BluetoothService.GetName(System.UInt32)">
<summary>
Retrieves the name of the Service Class UUID that has the specified value.
</summary>
<param name="uuid32">
The service class UUID in the 32-bit UUID short form as a <see cref="T:System.UInt32"/>.
</param>
<returns>
A string containing the name of the service class whose UUID value is <paramref name="uuid"/>,
or a null reference (<c>Nothing</c> in Visual Basic) if no such constant is found.
</returns>
</member>
<member name="M:InTheHand.Net.Bluetooth.BluetoothService.CreateBluetoothUuid(System.Int16)">
<summary>
Create a full 128-bit Service class UUID from its 16-bit short form.
</summary>
<param name="uuid16">
The service class UUID in the 16-bit UUID short form as a <see cref="T:System.Int16"/>.
</param>
<returns>
A <see cref="T:System.Guid"/> containing the full 128-bit form of the
supplied Bluetooth service class UUID.
</returns>
</member>
<member name="M:InTheHand.Net.Bluetooth.BluetoothService.CreateBluetoothUuid(System.UInt16)">
<summary>
Create a full 128-bit Service class UUID from its 16-bit short form.
</summary>
<param name="uuid16">
The service class UUID in the 16-bit UUID short form as a <see cref="T:System.UInt16"/>.
</param>
<returns>
A <see cref="T:System.Guid"/> containing the full 128-bit form of the
supplied Bluetooth service class UUID.
</returns>
</member>
<member name="M:InTheHand.Net.Bluetooth.BluetoothService.CreateBluetoothUuid(System.Int32)">
<summary>
Create a full 128-bit Service class UUID from its 16-bit short form.
</summary>
<param name="uuid32">
The service class UUID in the 32-bit UUID short form as a <see cref="T:System.Int32"/>.
</param>
<returns>
A <see cref="T:System.Guid"/> containing the full 128-bit form of the
supplied Bluetooth service class UUID.
</returns>
</member>
<member name="M:InTheHand.Net.Bluetooth.BluetoothService.CreateBluetoothUuid(System.UInt32)">
<summary>
Create a full 128-bit Service class UUID from its 16-bit short form.
</summary>
<param name="uuid32">
The service class UUID in the 32-bit UUID short form as a <see cref="T:System.UInt32"/>.
</param>
<returns>
A <see cref="T:System.Guid"/> containing the full 128-bit form of the
supplied Bluetooth service class UUID.
</returns>
</member>
<member name="T:InTheHand.Net.Bluetooth.BluetoothWin32Authentication">
<summary>
Provides Bluetooth authentication services on desktop Windows.
</summary>
-
<remarks>
<note>This class is supported on desktop Windows and with the Microsoft
stack only.
</note>
<para>This class can be used in one of two ways. Firstly
an instance can be created specifying one device that is being connected
to and the PIN string to use for it. (That form is used internally by
<see cref="T:InTheHand.Net.Sockets.BluetoothClient"/> to support
its <see cref="M:InTheHand.Net.Sockets.BluetoothClient.SetPin(System.String)"/> method).
</para>
<para>Secondly it can also be used a mode where a user supplied
callback will be called when any device requires authentication,
the callback includes a parameter of type
<see cref="T:InTheHand.Net.Bluetooth.BluetoothWin32AuthenticationEventArgs"/>.
Various authentication methods are available in Bluetooth version
2.1 and later. Which one is being used is indicated by the
<see cref="P:InTheHand.Net.Bluetooth.BluetoothWin32AuthenticationEventArgs.AuthenticationMethod"/>
property.
If it is <see cref="F:InTheHand.Net.Bluetooth.BluetoothAuthenticationMethod.Legacy"/>
then the callback method should set the
<see cref="P:InTheHand.Net.Bluetooth.BluetoothWin32AuthenticationEventArgs.Pin"/>
property.
</para>
<para>
For the other authentication methods
e.g. <see cref="F:InTheHand.Net.Bluetooth.BluetoothAuthenticationMethod.NumericComparison"/>
or <see cref="F:InTheHand.Net.Bluetooth.BluetoothAuthenticationMethod.OutOfBand"/>
the callback method should use one or more of the other properties and
methods e.g.
<see cref="P:InTheHand.Net.Bluetooth.BluetoothWin32AuthenticationEventArgs.NumberOrPasskey"/>,
<see cref="P:InTheHand.Net.Bluetooth.BluetoothWin32AuthenticationEventArgs.Confirm"/>,
<see cref="P:InTheHand.Net.Bluetooth.BluetoothWin32AuthenticationEventArgs.ResponseNumberOrPasskey"/>,
<see cref="M:InTheHand.Net.Bluetooth.BluetoothWin32AuthenticationEventArgs.ConfirmOob(System.Byte[],System.Byte[])"/>
etc.
</para>
<para>
See the example below for a 'Legacy' method handler.
The callback mode can be configured to do a callback after the
&#x2018;send PIN&#x2019; action, this allows one to see if it was successful
etc. An example sequence where the PIN was <strong>incorrect</strong> is as follows.
</para>
<code lang="none">
Authenticate one device -- with wrong passcode here the first two times.
Passcode respectively: 'BAD-x', 'BAD-y', '9876'
Making PC discoverable
Hit Return to complete
Authenticating 0017E464CF1E wm_alan1
Attempt# 0, Last error code 0
Sending "BAD-x"
Authenticating 0017E464CF1E wm_alan1
Attempt# 1, Last error code 1244
Sending "BAD-y"
Authenticating 0017E464CF1E wm_alan1
Attempt# 2, Last error code 1167
Sending "9876"
Authenticating 0017E464CF1E wm_alan1
Attempt# 3, Last error code 1167
etc
</code>
<para>
That is we see the error code of <c>1244=NativeErrorNotAuthenticated</c>
once, and then the peer device disappears (<c>1167=NativeErrorDeviceNotConnected</c>).
I suppose that's a security feature -- its stops an attacker
from trying again and again with different passcodes.
Anyway the result of that is that is it <strong>not</strong> worth repeating
the callback after the device disappears. The code now enforces this. With
<see cref="P:InTheHand.Net.Bluetooth.BluetoothWin32AuthenticationEventArgs.CallbackWithResult"/>
set to <c>true</c>, if the result of the previous attempt was &#x2018;success&#x2019;
or &#x2018;device not connected&#x2019; then any new PIN set in the callback
won&#x2019;t be used and thus the callback won&#x2019;t be called again
for that authentication attempt.
</para>
<para>A successful authentication process can thus be detected by checking if
<code>e.PreviousNativeErrorCode == NativeErrorSuccess &amp;&amp; e.AttemptNumber != 0</code>
</para>
<para>
</para>
<para>The instance will continue receiving authentication requests
until it is disposed or garbage collected, so keep a reference to it
whilst it should be active and call
<see cref="M:InTheHand.Net.Bluetooth.BluetoothWin32Authentication.Dispose"/>
when you&#x2019;re finished.
</para>
</remarks>
-
<example>
If one wants to respond to PIN requests for one device with a known PIN then
use the simple form which is initialized with an address and PIN.
<code lang="C#">
BluetoothWin32Authentication authenticator
= new BluetoothWin32Authentication(remoteEP.Address, m_pin);
// when the peer is expected to require pairing, perhaps do some work.
authenticator.Dispose();
</code>
If one wants to see the PIN request, perhaps to be able to check the type
of the peer by its address then use the form here which requests callbacks.
(Note that this code assumes that 'Legacy' PIN-based pairing is being
used; setting the Pin property will presumably have no effect if the
authentication method being used is one of the v2.1 SSP forms).
<code lang="VB.NET">
Using pairer As New BluetoothWin32Authentication(AddressOf Win32AuthCallbackHandler)
Console.WriteLine("Hit Return to stop authenticating")
Console.ReadLine()
End Using
...
Sub Win32AuthCallbackHandler(ByVal sender As Object, ByVal e As InTheHand.Net.Bluetooth.BluetoothWin32AuthenticationEventArgs)
' Note we assume here that 'Legacy' pairing is being used,
' and thus we only set the Pin property!
Dim address As String = e.Device.DeviceAddress.ToString()
Console.WriteLine("Received an authentication request from address " + address)
' compare the first 8 hex numbers, this is just a special case because in the
' used scenario the model of the devices can be identified by the first 8 hex
' numbers, the last 4 numbers being the device specific part.
If address.Substring(0, 8).Equals("0099880D") OrElse _
address.Substring(0, 8).Equals("0099880E") Then
' send authentication response
e.Pin = "5276"
ElseIf (address.Substring(0, 8).Equals("00997788")) Then
' send authentication response
e.Pin = "ásdfghjkl"
End If
End Sub
</code>
</example>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothWin32Authentication.NativeErrorSuccess">
<summary>
Windows&#x2019; ERROR_SUCCESS
</summary>
<remarks><see cref="P:InTheHand.Net.Bluetooth.BluetoothWin32AuthenticationEventArgs.PreviousNativeErrorCode"/>
</remarks>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothWin32Authentication.NativeErrorNotAuthenticated">
<summary>
Windows&#x2019; ERROR_NOT_AUTHENTICATED
</summary>
<remarks><see cref="P:InTheHand.Net.Bluetooth.BluetoothWin32AuthenticationEventArgs.PreviousNativeErrorCode"/>
</remarks>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothWin32Authentication.NativeErrorDeviceNotConnected">
<summary>
Windows&#x2019; ERROR_DEVICE_NOT_CONNECTED
</summary>
<remarks><see cref="P:InTheHand.Net.Bluetooth.BluetoothWin32AuthenticationEventArgs.PreviousNativeErrorCode"/>
</remarks>
</member>
<member name="M:InTheHand.Net.Bluetooth.BluetoothWin32Authentication.#ctor(InTheHand.Net.BluetoothAddress,System.String)">
<overloads>
Initializes a new instance of the <see cref="T:InTheHand.Net.Bluetooth.BluetoothWin32Authentication"/> class.
</overloads>
-
<summary>
Initializes a new instance of the <see cref="T:InTheHand.Net.Bluetooth.BluetoothWin32Authentication"/> class,
to respond to a specific address with a specific PIN string.
</summary>
-
<remarks>
<para>The instance will continue receiving authentication requests
until it is disposed or garbage collected, so keep a reference to it
whilst it should be active, and call
<see cref="M:InTheHand.Net.Bluetooth.BluetoothWin32Authentication.Dispose"/>
when you&#x2019;re finished.
</para>
</remarks>
-
<param name="remoteAddress">The address of the device to authenticate,
as a <see cref="T:InTheHand.Net.BluetoothAddress"/>.
</param>
<param name="pin">The PIN string to use for authentication, as a
<see cref="T:System.String"/>.
</param>
</member>
<member name="M:InTheHand.Net.Bluetooth.BluetoothWin32Authentication.#ctor(System.EventHandler{InTheHand.Net.Bluetooth.BluetoothWin32AuthenticationEventArgs})">
<summary>
Initializes a new instance of the <see cref="T:InTheHand.Net.Bluetooth.BluetoothWin32Authentication"/> class,
to call a specified handler when any device requires authentication.
</summary>
-
<remarks>
<para>See the example below.
</para>
<para>The callback mode can be configured to do a callback after the
&#x2018;send PIN&#x2019;action, this allows one to see if it was successful
etc. An example sequence where the PIN was <strong>incorrect</strong> is as follows.
</para>
<code lang="none">
Authenticate one device -- with wrong passcode here the first two times.
Passcode respectively: 'BAD-x', 'BAD-y', '9876'
Making PC discoverable
Hit Return to complete
Authenticating 0017E464CF1E wm_alan1
Attempt# 0, Last error code 0
Sending "BAD-x"
Authenticating 0017E464CF1E wm_alan1
Attempt# 1, Last error code 1244
Sending "BAD-y"
Authenticating 0017E464CF1E wm_alan1
Attempt# 2, Last error code 1167
Sending "9876"
Authenticating 0017E464CF1E wm_alan1
Attempt# 3, Last error code 1167
etc
</code>
<para>
That is we see the error code of <c>1244=NativeErrorNotAuthenticated</c>
once, and then the peer device disappears (<c>1167=NativeErrorDeviceNotConnected</c>).
I suppose that's a security feature -- its stops an attacker
from trying again and again with different passcodes.
Anyway the result of that is that is it <strong>not</strong> worth repeating
the callback after the device disappears. The code now enforces this. With
<see cref="P:InTheHand.Net.Bluetooth.BluetoothWin32AuthenticationEventArgs.CallbackWithResult"/>
set to <c>true</c>, if the result of the previous attempt was &#x2018;success&#x2019;
or &#x2018;device not connected&#x2019; then any new PIN set in the callback
won&#x2019;t be used and thus the callback won&#x2019;t be called again
for that authentication attempt.
</para>
<para>A successful authentication process can thus be detected by setting
<c>CallbackWithResult=true</c> and checking in the callback if
<code> e.PreviousNativeErrorCode == NativeErrorSuccess &amp;&amp; e.AttemptNumber != 0</code>
</para>
<para>
</para>
<para>The instance will continue receiving authentication requests
until it is disposed or garbage collected, so keep a reference to it
whilst it should be active, and call
<see cref="M:InTheHand.Net.Bluetooth.BluetoothWin32Authentication.Dispose"/>
when you&#x2019;re finished.
</para>
</remarks>
-
<param name="handler">A reference to a handler function that can respond
to authentication requests.
</param>
-
<example>
<code lang="VB.NET">
Using pairer As New BluetoothWin32Authentication(AddressOf Win32AuthCallbackHandler)
Console.WriteLine("Hit Return to stop authenticating")
Console.ReadLine()
End Using
...
Sub Win32AuthCallbackHandler(ByVal sender As Object, ByVal e As InTheHand.Net.Bluetooth.BluetoothWin32AuthenticationEventArgs)
Dim address As String = e.Device.DeviceAddress.ToString()
Console.WriteLine("Received an authentication request from address " + address)
' compare the first 8 hex numbers, this is just a special case because in the
' used scenario the model of the devices can be identified by the first 8 hex
' numbers, the last 4 numbers being the device specific part.
If address.Substring(0, 8).Equals("0099880D") OrElse _
address.Substring(0, 8).Equals("0099880E") Then
' send authentication response
e.Pin = "5276"
ElseIf (address.Substring(0, 8).Equals("00997788")) Then
' send authentication response
e.Pin = "ásdfghjkl"
End If
End Sub
</code>
</example>
</member>
<member name="M:InTheHand.Net.Bluetooth.BluetoothWin32Authentication.OnAuthentication(InTheHand.Net.Bluetooth.BluetoothWin32AuthenticationEventArgs)">
<summary>
Calls the authentication callback handler.
</summary>
-
<param name="e">An instance of <see cref="T:InTheHand.Net.Bluetooth.BluetoothWin32AuthenticationEventArgs"/>
containing the details of the authentication callback.
</param>
</member>
<member name="M:InTheHand.Net.Bluetooth.BluetoothWin32Authentication.Dispose">
<summary>
Release the unmanaged resources used by the <see cref="T:InTheHand.Net.Bluetooth.BluetoothWin32Authentication"/>.
</summary>
</member>
<member name="M:InTheHand.Net.Bluetooth.BluetoothWin32Authentication.Dispose(System.Boolean)">
<summary>
Release the unmanaged resources used by the <see cref="T:InTheHand.Net.Bluetooth.BluetoothWin32Authentication"/>,
and optionally disposes of the managed resources.
</summary>
</member>
<member name="T:InTheHand.Net.Bluetooth.BluetoothWin32AuthenticationEventArgs">
<summary>
Provides data for an authentication event.
</summary>
-
<remarks>
<para>For usage information, see the class documentation at
<see cref="T:InTheHand.Net.Bluetooth.BluetoothWin32Authentication"/> it includes
an example,
also see the documentation on each of this class&#x2019;s properties.
</para>
</remarks>
</member>
<member name="M:InTheHand.Net.Bluetooth.BluetoothWin32AuthenticationEventArgs.#ctor">
<summary>
Initialize an instance of <see cref="T:InTheHand.Net.Bluetooth.BluetoothWin32AuthenticationEventArgs"/>.
</summary>
</member>
<member name="M:InTheHand.Net.Bluetooth.BluetoothWin32AuthenticationEventArgs.#ctor(InTheHand.Net.Sockets.BluetoothDeviceInfo)">
<summary>
Initialize an instance of <see cref="T:InTheHand.Net.Bluetooth.BluetoothWin32AuthenticationEventArgs"/>.
</summary>
-
<param name="device">The device information to store in the event args.
</param>
</member>
<member name="P:InTheHand.Net.Bluetooth.BluetoothWin32AuthenticationEventArgs.Device">
<summary>
Gets the device requiring an authentication response as a
<see cref="T:InTheHand.Net.Sockets.BluetoothDeviceInfo"/>.
</summary>
</member>
<member name="P:InTheHand.Net.Bluetooth.BluetoothWin32AuthenticationEventArgs.AuthenticationRequirements">
<summary>
Gets a <see cref="T:InTheHand.Net.Bluetooth.BluetoothAuthenticationRequirements"/>
enumeration value that specifies the 'Man in the Middle' protection
required for authentication.
</summary>
</member>
<member name="P:InTheHand.Net.Bluetooth.BluetoothWin32AuthenticationEventArgs.IoCapability">
<summary>
Gets a <see cref="T:InTheHand.Net.Bluetooth.BluetoothIoCapability"/>
enumeration value that defines the input/output capabilities of the
Bluetooth device.
</summary>
</member>
<member name="P:InTheHand.Net.Bluetooth.BluetoothWin32AuthenticationEventArgs.AuthenticationMethod">
<summary>
Gets a <see cref="T:InTheHand.Net.Bluetooth.BluetoothAuthenticationMethod"/>
enumeration value that defines the authentication method utilized
by the Bluetooth device.
</summary>
-
<remarks>
<para>The method to be used depends on the
<see cref="P:InTheHand.Net.Bluetooth.BluetoothWin32AuthenticationEventArgs.AuthenticationRequirements"/>
and the <see cref="P:InTheHand.Net.Bluetooth.BluetoothWin32AuthenticationEventArgs.IoCapability"/> on both machines.
</para>
<para>See <see href="http://32feet.codeplex.com/wikipage?title=BluetoothWin32Authentication"/>
for how to respond to each of the authentication methods.
</para>
</remarks>
</member>
<member name="P:InTheHand.Net.Bluetooth.BluetoothWin32AuthenticationEventArgs.JustWorksNumericComparison">
<summary>
Gets whether the <see cref="P:InTheHand.Net.Bluetooth.BluetoothWin32AuthenticationEventArgs.AuthenticationMethod"/> is
<see cref="F:InTheHand.Net.Bluetooth.BluetoothAuthenticationMethod.NumericComparison"/>
and it is of subtype "JustWorks".
</summary>
-
<remarks>
<para>Gets whether the <see cref="P:InTheHand.Net.Bluetooth.BluetoothWin32AuthenticationEventArgs.AuthenticationMethod"/> is
<see cref="F:InTheHand.Net.Bluetooth.BluetoothAuthenticationMethod.NumericComparison"/>
and it is of subtype "JustWorks".
</para>
<para>If true then a simple Yes/No answer from the user is adequate,
Or if false then the <see cref="P:InTheHand.Net.Bluetooth.BluetoothWin32AuthenticationEventArgs.NumberOrPasskey"/>
(or <see cref="P:InTheHand.Net.Bluetooth.BluetoothWin32AuthenticationEventArgs.NumberOrPasskeyAsString"/>)
value should be displayed to the user(s) so that he/she/they can
verify that the values displayed on both devices are the same.
Is null if
<see cref="P:InTheHand.Net.Bluetooth.BluetoothWin32AuthenticationEventArgs.AuthenticationRequirements"/>
is not
<see cref="F:InTheHand.Net.Bluetooth.BluetoothAuthenticationMethod.NumericComparison"/>.
</para>
</remarks>
</member>
<member name="P:InTheHand.Net.Bluetooth.BluetoothWin32AuthenticationEventArgs.NumberOrPasskey">
<summary>
Get the Numeric or Passcode value being used by the
SSP pairing event.
</summary>
-
<value>Is a six digit number from 000000 to 999999,
or <see langword="null"/> if not present.
</value>
-
<remarks>
<para>Will be present in the
<see cref="F:InTheHand.Net.Bluetooth.BluetoothAuthenticationMethod.NumericComparison"/>,
<see cref="P:InTheHand.Net.Bluetooth.BluetoothWin32AuthenticationEventArgs.JustWorksNumericComparison"/>,
and <see cref="F:InTheHand.Net.Bluetooth.BluetoothAuthenticationMethod.PasskeyNotification"/>
authentication methods only.
</para>
<para>Is a six digit number from 000000 to 999999.
</para>
</remarks>
</member>
<member name="P:InTheHand.Net.Bluetooth.BluetoothWin32AuthenticationEventArgs.NumberOrPasskeyAsString">
<summary>
Gets the <see cref="P:InTheHand.Net.Bluetooth.BluetoothWin32AuthenticationEventArgs.NumberOrPasskey"/>
formatted in its correct six decimal digits format.
</summary>
-
<value>A <see cref="T:System.String"/> representing
<see cref="P:InTheHand.Net.Bluetooth.BluetoothWin32AuthenticationEventArgs.NumberOrPasskey"/>
formatted in its six decimal digits format,
or <see langword="null"/> if
<see cref="P:InTheHand.Net.Bluetooth.BluetoothWin32AuthenticationEventArgs.NumberOrPasskey"/>
is <see langword="null"/>.
</value>
</member>
<member name="P:InTheHand.Net.Bluetooth.BluetoothWin32AuthenticationEventArgs.Pin">
<summary>
Gets or sets the PIN string to be used to authenticate the specified device.
</summary>
-
<remarks>
<para>Is only used in the
<see cref="F:InTheHand.Net.Bluetooth.BluetoothAuthenticationMethod.Legacy"/>
pairing method.
</para>
<para>On an authentication event, a PIN response is sent if the value
returned from the handler is not <see langword="null"/>.
</para>
</remarks>
</member>
<member name="P:InTheHand.Net.Bluetooth.BluetoothWin32AuthenticationEventArgs.Confirm">
<summary>
Get or set whether we will respond positively, negatively or
ignore the SSP pairing event.
</summary>
</member>
<member name="P:InTheHand.Net.Bluetooth.BluetoothWin32AuthenticationEventArgs.ResponseNumberOrPasskey">
<summary>
Get or set what Numeric or Passcode value or whether no value
will be used in responding to the SSP pairing event.
</summary>
-
<remarks>
<para>Is a number from 000000 to 999999, or null if not to be included
in the response.
</para>
</remarks>
</member>
<member name="M:InTheHand.Net.Bluetooth.BluetoothWin32AuthenticationEventArgs.ConfirmOob(System.Byte[],System.Byte[])">
<summary>
Creates a positive response to the
<see cref="F:InTheHand.Net.Bluetooth.BluetoothAuthenticationMethod.OutOfBand"/>
pairing event also providing optional security values.
</summary>
-
<param name="c">An byte array of length 16 bytes, or null.
A 128-bit cryptographic key used for two-way authentication.
</param>
<param name="r">An byte array of length 16 bytes, or null.
A randomly generated number used for one-way authentication.
If this number is not provided by the device initiating the OOB
session, this value is 0.
</param>
</member>
<member name="P:InTheHand.Net.Bluetooth.BluetoothWin32AuthenticationEventArgs.CallbackWithResult">
<summary>
Gets or sets whether the callback is called again after the PIN response
is sent.
</summary>
-
<remarks><para>This is useful to see the error code returned by sending
the PIN response. It can thus also be used to see the successful result
of sending the PIN response. See the documentation on the
<see cref="T:InTheHand.Net.Bluetooth.BluetoothWin32Authentication"/> class.
</para>
</remarks>
</member>
<member name="P:InTheHand.Net.Bluetooth.BluetoothWin32AuthenticationEventArgs.AttemptNumber">
<summary>
Gets how many attempts at sending a PIN have been tried.
</summary>
<remarks>
When there&#x2019;s a new PIN request, the first time the callback is
called this property will have value zero. If the PIN is rejected and
<see cref="P:InTheHand.Net.Bluetooth.BluetoothWin32AuthenticationEventArgs.CallbackWithResult"/>
was set, then the callback will be recalled and this property will have
value one, etc.
</remarks>
</member>
<member name="P:InTheHand.Net.Bluetooth.BluetoothWin32AuthenticationEventArgs.PreviousNativeErrorCode">
<summary>
The Windows error code returned by the last PIN response attempt.
</summary>
-
<remarks><para>A bad PIN/passcode value appears to result in a error code
with value 1244, which is <see cref="F:InTheHand.Net.Bluetooth.BluetoothWin32Authentication.NativeErrorNotAuthenticated"/>.
</para>
<para>If one tries to respond to that failure with another passcode,
then error 1167 <see cref="F:InTheHand.Net.Bluetooth.BluetoothWin32Authentication.NativeErrorDeviceNotConnected"/>
results. So it seems that only one attempt is possible.
</para>
</remarks>
</member>
<member name="P:InTheHand.Net.Bluetooth.BluetoothWin32AuthenticationEventArgs.PreviousNativeErrorCodeAsUnsigned">
<summary>
The Windows error code returned by the last PIN response attempt,
as an unsigned value.
</summary>
-
<remarks>See <see cref="P:InTheHand.Net.Bluetooth.BluetoothWin32AuthenticationEventArgs.PreviousNativeErrorCode"/>.
</remarks>
-
<seealso cref="P:InTheHand.Net.Bluetooth.BluetoothWin32AuthenticationEventArgs.PreviousNativeErrorCode"/>
</member>
<member name="P:InTheHand.Net.Bluetooth.BluetoothWin32AuthenticationEventArgs.CannotSendAnotherResponse">
<summary>
Gets whether it is not possible to send another PIN response.
</summary>
<remarks><para>For instance, in testing it appears that after one response
the device becomes non-contactable, any PIN response returning error code
<see cref="F:InTheHand.Net.Bluetooth.BluetoothWin32Authentication.NativeErrorDeviceNotConnected"/>.
</para>
</remarks>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothWin32AuthenticationEventArgs.SixDigitsFormatString">
<summary>
A format string to display the Passkey or comparison Number as six decimal digits.
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothWin32AuthenticationEventArgs.ErrorMessageSendingAnotherPinIsDisallowed_">
<exclude/>
</member>
<member name="T:InTheHand.Net.Bluetooth.BLUETOOTH_AUTHENTICATION_CALLBACK_PARAMS">
<summary>
The BLUETOOTH_AUTHENTICATION_CALLBACK_PARAMS structure contains specific configuration information about the Bluetooth device responding to an authentication request.
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BLUETOOTH_AUTHENTICATION_CALLBACK_PARAMS.deviceInfo">
<summary>
A BLUETOOTH_DEVICE_INFO structure that contains information about a Bluetooth device.
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BLUETOOTH_AUTHENTICATION_CALLBACK_PARAMS.authenticationMethod">
<summary>
A BLUETOOTH_AUTHENTICATION_METHOD enumeration that defines the authentication method utilized by the Bluetooth device.
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BLUETOOTH_AUTHENTICATION_CALLBACK_PARAMS.ioCapability">
<summary>
A BLUETOOTH_IO_CAPABILITY enumeration that defines the input/output capabilities of the Bluetooth device.
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BLUETOOTH_AUTHENTICATION_CALLBACK_PARAMS.authenticationRequirements">
<summary>
A AUTHENTICATION_REQUIREMENTS specifies the 'Man in the Middle' protection required for authentication.
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BLUETOOTH_AUTHENTICATION_CALLBACK_PARAMS.Numeric_Value_Passkey">
<summary>
A ULONG value used for Numeric Comparison authentication.
or
A ULONG value used as the passkey used for authentication.
</summary>
</member>
<member name="T:InTheHand.Net.Bluetooth.BLUETOOTH_PIN_INFO">
<summary>
The BLUETOOTH_PIN_INFO structure contains information used for authentication via PIN.
</summary>
</member>
<member name="T:InTheHand.Net.Bluetooth.BLUETOOTH_OOB_DATA_INFO">
<summary>
The BLUETOOTH_OOB_DATA_INFO structure contains data used to authenticate prior to establishing an Out-of-Band device pairing.
</summary>
</member>
<member name="T:InTheHand.Net.Bluetooth.BluetoothWin32RadioEventArgs">
<summary>
The base class for classes containing Radio In- and Out-of-Range events.
</summary>
-
<remarks>
<para>Supported only by the Microsoft stack on desktop Windows.
</para>
<para>Produced by class <see cref="T:InTheHand.Net.Bluetooth.BluetoothWin32Events"/>.
</para>
</remarks>
</member>
<member name="P:InTheHand.Net.Bluetooth.BluetoothWin32RadioEventArgs.Device">
<summary>
Gets the device to which the event applies.
</summary>
</member>
<member name="T:InTheHand.Net.Bluetooth.BluetoothWin32RadioOutOfRangeEventArgs">
<summary>
The data for Radio Out-of-Range event.
</summary>
-
<remarks>
<para>Supported only by the Microsoft stack on desktop Windows.
</para>
<para>Produced by class <see cref="T:InTheHand.Net.Bluetooth.BluetoothWin32Events"/>.
</para>
</remarks>
</member>
<member name="M:InTheHand.Net.Bluetooth.BluetoothWin32RadioOutOfRangeEventArgs.ToString">
<summary>
Gets a string representation of the event.
</summary>
<returns>A string (e.g. contains the device address and name).</returns>
</member>
<member name="T:InTheHand.Net.Bluetooth.BluetoothWin32RadioInRangeEventArgs">
<summary>
The data for Radio Out-of-Range event.
</summary>
-
<remarks>
<para>Supported only by the Microsoft stack on desktop Windows.
</para>
<para>Produced by class <see cref="T:InTheHand.Net.Bluetooth.BluetoothWin32Events"/>.
</para>
</remarks>
</member>
<member name="P:InTheHand.Net.Bluetooth.BluetoothWin32RadioInRangeEventArgs.CurrentState">
<summary>
The current state of the device according to the Bluetooth stack.
</summary>
</member>
<member name="P:InTheHand.Net.Bluetooth.BluetoothWin32RadioInRangeEventArgs.PreviousState">
<summary>
The previous state of the device according to the Bluetooth stack.
</summary>
</member>
<member name="P:InTheHand.Net.Bluetooth.BluetoothWin32RadioInRangeEventArgs.GainedStates">
<summary>
The flags that are set in the current state
and weren't in the previous state (calculated).
</summary>
</member>
<member name="P:InTheHand.Net.Bluetooth.BluetoothWin32RadioInRangeEventArgs.LostStates">
<summary>
The flags that are not set in the current state
but were in the previous state (calculated).
</summary>
</member>
<member name="M:InTheHand.Net.Bluetooth.BluetoothWin32RadioInRangeEventArgs.ToString">
<summary>
Gets a string representation of the event.
</summary>
<returns>A string (e.g. contains the device address, name and the current and previous flags).</returns>
</member>
<member name="T:InTheHand.Net.Bluetooth.BluetoothWin32Events">
<summary>
Provides access to the Bluetooth events from the Microsoft stack on
desktop Windows.
</summary>
-
<remarks>
<note>Supported only by the Microsoft stack on desktop Windows.
</note>
<para>The Microsoft Bluetooth stack on Window raises events for various
Bluetooth actions. We expose that feature via this class.
</para>
<para>Currently it raises two types of event: in-range and out-of-range
using classes: <see cref="T:InTheHand.Net.Bluetooth.BluetoothWin32RadioInRangeEventArgs"/>
and <see cref="T:InTheHand.Net.Bluetooth.BluetoothWin32RadioOutOfRangeEventArgs"/>.
Both have properties <c>Device</c> which return a <c>BluetoothDeviceInfo</c>.
Then the in-range event also includes a set of flags, which in
Windows XP are: Address, Cod, Name, Paired, Personal, and Connected;
more events are available in Windows 7. These events are provided on
the <see cref="T:InTheHand.Net.Bluetooth.BluetoothWin32RadioInRangeEventArgs"/>
class via properties:
<see cref="P:InTheHand.Net.Bluetooth.BluetoothWin32RadioInRangeEventArgs.CurrentState"/>
and <see cref="P:InTheHand.Net.Bluetooth.BluetoothWin32RadioInRangeEventArgs.PreviousState"/>,
and also <see cref="P:InTheHand.Net.Bluetooth.BluetoothWin32RadioInRangeEventArgs.GainedStates"/> etc.
</para>
<para>To see the events get an instance of this class via its method
<see cref="M:InTheHand.Net.Bluetooth.BluetoothWin32Events.GetInstance"/>.
Then one should register for the events on that instance and keep a
reference to it.
</para>
<para>Note that just being in range is not enough for
devices to know that the other is present. Without running device
discovery or a connection attempt the two devices will not see each
other. Note however that Windows XP also does not raise events when
running device discovery (inquiry), this is fixed in Windows 7
(probably Vista). See
<see href="http://32feetnetdev.wordpress.com/2010/11/15/device-discovery-improvements-on-msftwin32/">32feet blog: Device Discovery improvements on MSFT+Win32</see>
for more information.
</para>
<para>For example when connecting and disconnecting on Windows XP to
another device that is not paired we see:
</para>
<example>
<code lang="none">
12:23:48.9582648: InRange 000A3A6865BB 'joe',
now 'Address, Cod, Name, Connected'
was 'Address, Cod, Name'.
12:24:16.8009456: InRange 000A3A6865BB 'joe',
now 'Address, Cod, Name'
was 'Address, Cod, Name, Connected'.}}
</code>
</example>
<para>For example when connecting and then disconnecting on Windows 7
to another v2.1 device that is paired with we see:
</para>
<example>
<code lang="none">
20:53:25.5605469: InRange 00190E02C916 'alanlt2ws',
now 'Address, Cod, Name, Paired, Personal, Connected, SspSupported, SspPaired, Rssi, Eir'
was 'Address, Cod, Name, Paired, Personal, SspSupported, SspPaired, Rssi, Eir'.
20:53:27.7949219: InRange 00190E02C916 'fred',
now 'Address, Cod, Name, Paired, Personal, SspSupported, SspPaired, Rssi, Eir'
was 'Address, Cod, Name, Paired, Personal, Connected, SspSupported, SspPaired, Rssi, Eir'.}}
</code>
</example>
</remarks>
</member>
<member name="M:InTheHand.Net.Bluetooth.BluetoothWin32Events.#ctor">
<summary>
Initialise an instance of the class.
</summary>
-
<remarks>
<para>Consider using the method <see cref="M:InTheHand.Net.Bluetooth.BluetoothWin32Events.GetInstance"/>
instead of calling this constructor.
</para>
</remarks>
</member>
<member name="M:InTheHand.Net.Bluetooth.BluetoothWin32Events.#ctor(InTheHand.Net.Bluetooth.BluetoothRadio)">
<summary>
Initialise an instance of the class for the specified radio.
</summary>
-
<param name="microsoftWin32BluetoothRadio">
The radio to listen for events from.
Must be non-null and a MSFT+Win32 stack radio.
</param>
-
<remarks>Note that since the Microsoft stack supports only one radio
(controller) there is lilely no benefit in calling this constructor
as opposed to the other constructor or method
<see cref="M:InTheHand.Net.Bluetooth.BluetoothWin32Events.GetInstance"/>.
</remarks>
</member>
<member name="M:InTheHand.Net.Bluetooth.BluetoothWin32Events.GetInstance">
<summary>
Gets a possible shared instance of this class.
</summary>
-
<remarks>
<para>If more that one piece of code is using this class then there
is no need for each to have a private instance. This method allows
them to access a shared instance. When first called it creates a
new instance and keeps a weak-reference to it. Subsequent callers
will then get the same instance. The instance is kept alive only
as long as at least one caller keeps a reference to it. If no
references are kept then the instance will be deleted and a new
instance will be created when this method is next called.
</para>
</remarks>
-
<returns>An instance of this class.
</returns>
</member>
<member name="M:InTheHand.Net.Bluetooth.BluetoothWin32Events.OnInRange(InTheHand.Net.Bluetooth.BluetoothWin32RadioInRangeEventArgs)">
<summary>
Raises the <see cref="E:InTheHand.Net.Bluetooth.BluetoothWin32Events.InRange"/> event.
</summary>
-
<param name="e">A <see cref="T:InTheHand.Net.Bluetooth.BluetoothWin32RadioInRangeEventArgs"/>
that contains the event data.
</param>
</member>
<member name="E:InTheHand.Net.Bluetooth.BluetoothWin32Events.InRange">
<summary>
&#x201C;This message is sent when any of the following attributes
of a remote Bluetooth device has changed: the device has been
discovered, the class of device, name, connected state, or device
remembered state. This message is also sent when these attributes
are set or cleared.&#x201D;
</summary>
</member>
<member name="M:InTheHand.Net.Bluetooth.BluetoothWin32Events.OnOutOfRange(InTheHand.Net.Bluetooth.BluetoothWin32RadioOutOfRangeEventArgs)">
<summary>
Raises the <see cref="E:InTheHand.Net.Bluetooth.BluetoothWin32Events.OutOfRange"/> event.
</summary>
-
<param name="e">A <see cref="T:InTheHand.Net.Bluetooth.BluetoothWin32RadioOutOfRangeEventArgs"/>
that contains the event data.
</param>
</member>
<member name="E:InTheHand.Net.Bluetooth.BluetoothWin32Events.OutOfRange">
<summary>
&#x201C;This message is sent when a previously discovered device
has not been found after the completion of the last inquiry.&#x201D;
</summary>
</member>
<member name="M:InTheHand.Net.Bluetooth.BluetoothWin32Events.Dispose">
<summary>
Releases the resources used by the instance.
</summary>
</member>
<member name="M:InTheHand.Net.Bluetooth.BluetoothWin32Events.Dispose(System.Boolean)">
<summary>
Releases the unmanaged resources used by the instance
and optionally releases the managed resources.
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothWin32Events.BluetoothDeviceNotificationEvent.BthPortDeviceInterface">
<summary>
&#x201C;&#x201D;
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothWin32Events.BluetoothDeviceNotificationEvent.RadioInRange">
<summary>
&#x201C;This message is sent when any of the following attributes of a remote Bluetooth device has changed:
the device has been discovered, the class of device, name, connected state, or device remembered state.
This message is also sent when these attributes are set or cleared.&#x201D;
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothWin32Events.BluetoothDeviceNotificationEvent.RadioOutOfRange">
<summary>
&#x201C;This message is sent when a previously discovered device has not been found after the completion of the last inquiry.
This message will not be sent for remembered devices.
The BTH_ADDRESS structure is the address of the device that was not found.&#x201D;
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothWin32Events.BluetoothDeviceNotificationEvent.PinRequest">
<summary>
&#x201C;This message should be ignored by the application.
If the application must receive PIN requests, the BluetoothRegisterForAuthentication function should be used.&#x201D;
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothWin32Events.BluetoothDeviceNotificationEvent.L2capEvent">
<summary>
&#x201C;This message is sent when an L2CAP channel between the local radio and a remote Bluetooth device has been established or terminated.
For L2CAP channels that are multiplexers, such as RFCOMM, this message is only sent when the underlying channel is established,
not when each multiplexed channel, such as an RFCOMM channel, is established or terminated.&#x201D;
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothWin32Events.BluetoothDeviceNotificationEvent.HciEvent">
<summary>
&#x201C;This message is sent when a remote Bluetooth device connects or disconnects at the ACL level.&#x201D;
</summary>
</member>
<member name="T:InTheHand.Net.Bluetooth.BluetoothWin32Events.BTH_L2CAP_EVENT_INFO">
<summary>
Buffer associated with GUID_BLUETOOTH_L2CAP_EVENT
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothWin32Events.BTH_L2CAP_EVENT_INFO.bthAddress">
<summary>
Remote radio address which the L2CAP event is associated with
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothWin32Events.BTH_L2CAP_EVENT_INFO.psm">
<summary>
The PSM that is either being connected to or disconnected from
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothWin32Events.BTH_L2CAP_EVENT_INFO.connected">
<summary>
If != 0, then the channel has just been established. If == 0, then the
channel has been destroyed. Notifications for a destroyed channel will
only be sent for channels successfully established.
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothWin32Events.BTH_L2CAP_EVENT_INFO.initiated">
<summary>
If != 0, then the local host iniated the l2cap connection. If == 0, then
the remote host initated the connection. This field is only valid if
connect is != 0.
</summary>
</member>
<member name="T:InTheHand.Net.Bluetooth.BluetoothWin32Events.BTH_HCI_EVENT_INFO">
<summary>
Buffer associated with GUID_BLUETOOTH_HCI_EVENT
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothWin32Events.BTH_HCI_EVENT_INFO.bthAddress">
<summary>
Remote radio address which the HCI event is associated with
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothWin32Events.BTH_HCI_EVENT_INFO.connectionType">
<summary>
HCI_CONNNECTION_TYPE_XXX value
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothWin32Events.BTH_HCI_EVENT_INFO.connected">
<summary>
If != 0, then the underlying connection to the remote radio has just
been estrablished. If == 0, then the underlying conneciton has just been
destroyed.
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothWin32Events.Dbt.ConfigChangeCanceled">
<summary>
A request to change the current configuration (dock or undock) has been canceled.
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothWin32Events.Dbt.ConfigChanged">
<summary>
The current configuration has changed, due to a dock or undock.
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothWin32Events.Dbt.CustomEvent">
<summary>
A custom event has occurred.
</summary>
<remarks>Windows NT 4.0 and Windows 95:  This value is not supported.</remarks>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothWin32Events.Dbt.DeviceArrival">
<summary>
A device or piece of media has been inserted and is now available.
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothWin32Events.Dbt.DeviceQueryRemove">
<summary>
Permission is requested to remove a device or piece of media. Any application can deny this request and cancel the removal.
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothWin32Events.Dbt.DeviceQueryRemoveFailed">
<summary>
A request to remove a device or piece of media has been canceled.
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothWin32Events.Dbt.DeviceRemoveComplete">
<summary>
A device or piece of media has been removed.
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothWin32Events.Dbt.DeviceRemovePending">
<summary>
A device or piece of media is about to be removed. Cannot be denied.
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothWin32Events.Dbt.DeviceTypeSpecific">
<summary>
A device-specific event has occurred.
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothWin32Events.Dbt.DevNodesChanged">
<summary>
A device has been added to or removed from the system.
</summary>
<remarks>Windows NT 4.0 and Windows Me/98/95:  This value is not supported.</remarks>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothWin32Events.Dbt.QueryChangeConfig">
<summary>
Permission is requested to change the current configuration (dock or undock).
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothWin32Events.Dbt.UserDefined">
<summary>
The meaning of this message is user-defined.
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothWin32Events.DbtDevTyp.Oem">
<summary>
oem-defined device type
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothWin32Events.DbtDevTyp.DevNode">
<summary>
devnode number
/// </summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothWin32Events.DbtDevTyp.Volume">
<summary>
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothWin32Events.DbtDevTyp.Port">
<summary>
l
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothWin32Events.DbtDevTyp.Network">
<summary>
network resource
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothWin32Events.DbtDevTyp.DeviceInterface">
<summary>
device interface class
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothWin32Events.DbtDevTyp.Handle">
<summary>
file system handle
</summary>
</member>
<member name="T:InTheHand.Net.Bluetooth.ClassOfDevice">
<summary>
Describes the device and service capabilities of a device.
</summary>
-
<remarks>
<para>Is returned by the properties
<see cref="P:InTheHand.Net.Sockets.BluetoothDeviceInfo.ClassOfDevice">BluetoothDeviceInfo.ClassOfDevice</see>
and
<see cref="P:InTheHand.Net.Bluetooth.BluetoothRadio.ClassOfDevice">BluetoothRadio.ClassOfDevice</see>.
</para>
</remarks>
</member>
<member name="M:InTheHand.Net.Bluetooth.ClassOfDevice.#ctor(System.UInt32)">
<summary>
Initialize a new instance of class <see cref="T:InTheHand.Net.Bluetooth.ClassOfDevice"/>.
</summary>
-
<remarks>
<para>An example raw value is 0x00020104, which stands for
device: DesktopComputer, service: Network.
</para>
</remarks>
-
<param name="cod">A <see cref="T:System.UInt32"/> containing the
raw Class of Device value.
</param>
</member>
<member name="M:InTheHand.Net.Bluetooth.ClassOfDevice.#ctor(InTheHand.Net.Bluetooth.DeviceClass,InTheHand.Net.Bluetooth.ServiceClass)">
<summary>
Initialize a new instance of class <see cref="T:InTheHand.Net.Bluetooth.ClassOfDevice"/>.
</summary>
-
<param name="device">A <see cref="T:InTheHand.Net.Bluetooth.DeviceClass"/>
value.
</param>
<param name="service">A <see cref="T:InTheHand.Net.Bluetooth.ServiceClass"/>
value.
</param>
</member>
<member name="P:InTheHand.Net.Bluetooth.ClassOfDevice.Device">
<summary>
Returns the device type.
</summary>
</member>
<member name="P:InTheHand.Net.Bluetooth.ClassOfDevice.MajorDevice">
<summary>
Returns the major device type.
</summary>
</member>
<member name="P:InTheHand.Net.Bluetooth.ClassOfDevice.Service">
<summary>
Returns supported service types.
</summary>
</member>
<member name="P:InTheHand.Net.Bluetooth.ClassOfDevice.Value">
<summary>
Gets the numerical value.
</summary>
<seealso cref="P:InTheHand.Net.Bluetooth.ClassOfDevice.ValueAsInt32"/>
</member>
<member name="P:InTheHand.Net.Bluetooth.ClassOfDevice.ValueAsInt32">
<summary>
Gets the numerical value, suitable for CLS Compliance.
</summary>
<seealso cref="P:InTheHand.Net.Bluetooth.ClassOfDevice.Value"/>
</member>
<member name="M:InTheHand.Net.Bluetooth.ClassOfDevice.GetHashCode">
<summary>
Returns the hash code for this instance.
</summary>
<returns>A hash code for the current object.</returns>
</member>
<member name="M:InTheHand.Net.Bluetooth.ClassOfDevice.ToString">
<summary>
Returns the numerical value represented in a hexadecimal.
</summary>
-
<returns>A <see cref="T:System.String"/> containing
the numerical value represented in a hexadecimal
e.g. "720104", "5A020C".
</returns>
</member>
<member name="M:InTheHand.Net.Bluetooth.ClassOfDevice.Equals(System.Object)">
<summary>
Returns a value indicating whether this instance is equal to a specified
object.
</summary>
<param name="obj">An object
value to compare with the current instance.
</param>
<returns>true if <paramref name="obj"/> is an instance of <see cref="T:InTheHand.Net.Bluetooth.ClassOfDevice"/>
and equals the value of this instance; otherwise, false.
</returns>
</member>
<member name="M:InTheHand.Net.Bluetooth.ClassOfDevice.Equals(InTheHand.Net.Bluetooth.ClassOfDevice)">
<summary>
Returns a value indicating whether this instance is equal to a specified
<see cref="T:InTheHand.Net.Bluetooth.ClassOfDevice"/> value.
</summary>
<param name="other">An <see cref="T:InTheHand.Net.Bluetooth.ClassOfDevice"/>
value to compare with the current instance.
</param>
<returns>true if <paramref name="other"/>
has the same value as this instance; otherwise, false.
</returns>
</member>
<member name="T:InTheHand.Net.Bluetooth.DeviceClass">
<summary>
Class of Device flags as assigned in the Bluetooth specifications.
</summary>
<remarks>
<para>Is returned by the property <see
cref="P:InTheHand.Net.Bluetooth.ClassOfDevice.Device">ClassOfDevice.Device</see>.
</para>
<para>Defined in Bluetooth Specifications <see href="https://www.bluetooth.org/Technical/AssignedNumbers/baseband.htm"/>.
</para>
</remarks>
</member>
<member name="F:InTheHand.Net.Bluetooth.DeviceClass.Miscellaneous">
<summary>
Miscellaneous &#x2014;
[Ref #2: Used where a more specific Major Device Class code
is not suited (but only as specified in this document). Devices
that do not have a major class code assigned can use the all-1 code
(<see cref="F:InTheHand.Net.Bluetooth.DeviceClass.Uncategorized"/>)
until 'classified']
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.DeviceClass.Computer">
<summary>
Major class: Computer (desktop,notebook, PDA, organizers, .... ).
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.DeviceClass.DesktopComputer">
<summary>
Major class: Computer
&#x2022; Minor class: Desktop workstation.
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.DeviceClass.ServerComputer">
<summary>
Major class: Computer
&#x2022; Minor class: Server-class computer.
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.DeviceClass.LaptopComputer">
<summary>
Major class: Computer
&#x2022; Minor class: Laptop.
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.DeviceClass.HandheldComputer">
<summary>
Major class: Computer
&#x2022; Minor class: Handheld PC/PDA (clam shell).
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.DeviceClass.PdaComputer">
<summary>
Major class: Computer
&#x2022; Minor class: Palm sized PC/PDA.
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.DeviceClass.WearableComputer">
<summary>
Major class: Computer
&#x2022; Minor class: Wearable computer (Watch sized).
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.DeviceClass.TabletComputer">
<summary>
Major class: Computer
&#x2022; Minor class: Tablet.
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.DeviceClass.Phone">
<summary>
Major class: Phone (cellular, cordless, payphone, modem, ...).
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.DeviceClass.CellPhone">
<summary>
Major class: Phone
&#x2022; Minor class: Cellular.
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.DeviceClass.CordlessPhone">
<summary>
Major class: Phone
&#x2022; Minor class: Cordlss.
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.DeviceClass.SmartPhone">
<summary>
Major class: Phone
&#x2022; Minor class: Smart phone.
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.DeviceClass.WiredPhone">
<summary>
Major class: Phone
&#x2022; Minor class: Wired modem or voice gateway.
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.DeviceClass.IsdnAccess">
<summary>
Major class: Phone
&#x2022; Minor class: Common ISDN Access.
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.DeviceClass.AccessPointAvailable">
<summary>
Major class: LAN /Network Access point.
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.DeviceClass.AudioVideoUnclassified">
<summary>
Major class: Audio/Video (headset,speaker,stereo, video display, vcr.....
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.DeviceClass.Peripheral">
<summary>
Major class: Peripheral (mouse, joystick, keyboards, ..... ).
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.DeviceClass.Imaging">
<summary>
Major class: Imaging (printing, scanner, camera, display, ...).
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.DeviceClass.Wearable">
<summary>
Major class: Wearable.
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.DeviceClass.Toy">
<summary>
Major class: Toy.
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.DeviceClass.Medical">
<summary>
Major class: Medical.
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.DeviceClass.Uncategorized">
<summary>
Uncategorized, specific device code not specified
&#x2014; see <see cref="F:InTheHand.Net.Bluetooth.DeviceClass.Miscellaneous"/>
</summary>
</member>
<member name="T:InTheHand.Net.Bluetooth.DeviceClass_Masks">
<exclude/>
</member>
<member name="T:InTheHand.Net.Bluetooth.DiscoverDevicesEventArgs">
<summary>
Provides data for the <see cref="E:InTheHand.Net.Bluetooth.BluetoothComponent.DiscoverDevicesComplete"/>
event.
</summary>
</member>
<member name="M:InTheHand.Net.Bluetooth.DiscoverDevicesEventArgs.#ctor(InTheHand.Net.Sockets.BluetoothDeviceInfo[],System.Object)">
<summary>
Initialise a new instance.
</summary>
-
<param name="devices">The result, may be empty but not null.
</param>
<param name="userState">Any user state object.
</param>
</member>
<member name="M:InTheHand.Net.Bluetooth.DiscoverDevicesEventArgs.#ctor(System.Exception,System.Object)">
<summary>
Initialise a new instance.
</summary>
-
<param name="exception">The resultant error.
</param>
<param name="userState">Any user state object.
</param>
</member>
<member name="P:InTheHand.Net.Bluetooth.DiscoverDevicesEventArgs.Devices">
<summary>
Gets the list of discovered Bluetooth devices.
</summary>
</member>
<member name="T:InTheHand.Net.Bluetooth.HardwareStatus">
<summary>
Specifies the current status of the Bluetooth hardware.
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.HardwareStatus.Unknown">
<summary>
Status cannot be determined.
</summary>
XXXX &#x201C;The stack is not present.&#x201D; CE5
</member>
<member name="F:InTheHand.Net.Bluetooth.HardwareStatus.NotPresent">
<summary>
Bluetooth radio not present.
</summary>
&#x201C;The adapter is not present.&#x201D; CE5
</member>
<member name="F:InTheHand.Net.Bluetooth.HardwareStatus.Initializing">
<summary>
Bluetooth radio is in the process of starting up.
</summary>
&#x201C;The adapter might be installed.
The stack is currently on the way up. Call again later.&#x201D; CE5
</member>
<member name="F:InTheHand.Net.Bluetooth.HardwareStatus.Running">
<summary>
Bluetooth radio is active.
</summary>
&#x201C;The adapter is installed and the stack is running.&#x201D; CE5
</member>
<member name="F:InTheHand.Net.Bluetooth.HardwareStatus.Shutdown">
<summary>
Bluetooth radio is in the process of shutting down.
</summary>
&#x201C;The adapter is installed, but the stack is not running.&#x201D; CE5
</member>
<member name="F:InTheHand.Net.Bluetooth.HardwareStatus.Error">
<summary>
Bluetooth radio is in an error state.
</summary>
&#x201C;The adapter might be installed.
The stack is on the way down. Call again later.&#x201D; CE5
</member>
<member name="T:InTheHand.Net.Bluetooth.HciVersion">
<summary>
HCI_Version &#x2014; Assigned Numbers &#x2014; Host Controller Interface
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.HciVersion.v1_0_b">
<summary>
Bluetooth Core Specification 1.0b
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.HciVersion.v1_1">
<summary>
Bluetooth Core Specification 1.1
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.HciVersion.v1_2">
<summary>
Bluetooth Core Specification 1.2
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.HciVersion.v2_0wEdr">
<summary>
Bluetooth Core Specification 2.0 + EDR
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.HciVersion.v2_1wEdr">
<summary>
Bluetooth Core Specification 2.1 + EDR
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.HciVersion.v3_0wHS">
<summary>
Bluetooth Core Specification 3.0 + HS
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.HciVersion.v4_0">
<summary>
Bluetooth Core Specification 4.0
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.HciVersion.Unknown">
<summary>
Unknown version &#x2104; probably the stack API
does not provide the value.
</summary>
</member>
<member name="T:InTheHand.Net.Bluetooth.LmpVersion">
<summary>
LMP VerNr &#x2014; Assigned Numbers &#x2014; Link Manager Protocol
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.LmpVersion.v1_0_b">
<summary>
Bluetooth Core Specification 1.0b
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.LmpVersion.v1_1">
<summary>
Bluetooth Core Specification 1.1
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.LmpVersion.v1_2">
<summary>
Bluetooth Core Specification 1.2
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.LmpVersion.v2_0wEdr">
<summary>
Bluetooth Core Specification 2.0 + EDR
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.LmpVersion.v2_1wEdr">
<summary>
Bluetooth Core Specification 2.1 + EDR
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.LmpVersion.v3_0wHS">
<summary>
Bluetooth Core Specification 3.0 + HS
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.LmpVersion.v4_0">
<summary>
Bluetooth Core Specification 4.0
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.LmpVersion.Unknown">
<summary>
Unknown version &#x2104; probably the stack API
does not provide the value.
</summary>
</member>
<member name="T:InTheHand.Net.Bluetooth.LinkPolicy">
<summary>
Flags to describe Link Policy.
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.LinkPolicy.Disabled">
<summary>
Disables all LAN Manager (LM) modes.
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.LinkPolicy.MasterSlave">
<summary>
Enables the master slave switch.
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.LinkPolicy.Hold">
<summary>
Enables Hold mode.
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.LinkPolicy.Sniff">
<summary>
Enables Sniff Mode.
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.LinkPolicy.Park">
<summary>
Enables Park Mode.
</summary>
</member>
<member name="T:InTheHand.Net.Bluetooth.LmpFeatures">
<summary>
Created from v2.1 specification.
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.LmpFeatures.None">
<summary>
There are no supported features.
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.LmpFeatures.ThreeSlotPackets">
<summary>
[0]
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.LmpFeatures.ParkState">
<summary>
[8]
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.LmpFeatures.CvsdSynchronousData">
<summary>
[16]
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.LmpFeatures.EnhancedDataRateAcl2MbpsMode">
<summary>
[25]
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.LmpFeatures.EV4Packets">
<summary>
[32]
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.LmpFeatures.EV5Packets">
<summary>
[33]
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.LmpFeatures.AfhCapableSlave">
<summary>
[35]
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.LmpFeatures.AfhClassificationSlave">
<summary>
[36]
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.LmpFeatures.BrEdrNotSupported">
<summary>
[37] v4.0
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.LmpFeatures.LeSupported_Controller">
<summary>
[38] v4.0
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.LmpFeatures.ThreeSlotEnhancedDataRateAclPackets">
<summary>
[39]
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.LmpFeatures.FiveSlotEnhancedDataRateAclPackets">
<summary>
[40]
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.LmpFeatures.SniffSubrating">
<summary>
[41] v2.1
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.LmpFeatures.PauseEncryption">
<summary>
[42] v2.1
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.LmpFeatures.ExtendedInquiryResponse">
<summary>
[48] v2.1
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.LmpFeatures.SimultaneousLeAndBrEdrToSameDeviceCapable_Controller">
<summary>
[49]
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.LmpFeatures.SecureSimplePairing">
<summary>
[51] v2.1
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.LmpFeatures.EncapsulatedPdu">
<summary>
[52] v2.1
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.LmpFeatures.ErroneousDataReporting">
<summary>
[53] v2.1
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.LmpFeatures.NonFlushablePacketBoundaryFlag">
<summary>
[54] v2.1
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.LmpFeatures.LinkSupervisionTimeoutChangedEvent">
<summary>
[56] v2.1
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.LmpFeatures.InquiryTxPowerLevel">
<summary>
[57] v2.1
(Changed name from 'InquiryResponseTxPowerLevel' in v2.1
to 'InquiryTxPowerLevel' in v3.0).
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.LmpFeatures.EnhancedPowerControl">
<summary>
[58] v3.0
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.LmpFeatures.ExtendedFeatures">
<summary>
[63] Present since v2.0 at least.
</summary>
</member>
<member name="T:InTheHand.Net.Bluetooth.Manufacturer">
<summary>
Manufacturer codes.
</summary>
<remarks>Defined in Bluetooth Specifications <see href="https://www.bluetooth.org/Technical/AssignedNumbers/identifiers.htm"/>.</remarks>
</member>
<member name="T:InTheHand.Net.Bluetooth.RadioMode">
<summary>
Determine all the possible modes of operation of the Bluetooth radio.
</summary>
-
<remarks>See <see cref="P:InTheHand.Net.Bluetooth.BluetoothRadio.Mode">BluetoothRadio.Mode</see>
for what is supported on what platforms. For instance setting the mode
is not supported on Widcomm+Win32. On Widcomm WM/CE setting <c>PowerOff</c>
actually sets 'CONNECT_ALLOW_NONE', and not actually disabled/off.
Also when the stack is disabled, setting connectable/discoverable
does not manage to turn the radio on.
</remarks>
-
<seealso cref="P:InTheHand.Net.Bluetooth.BluetoothRadio.Mode">BluetoothRadio.Mode</seealso>
</member>
<member name="F:InTheHand.Net.Bluetooth.RadioMode.PowerOff">
<summary>
Bluetooth is disabled on the device.
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.RadioMode.Connectable">
<summary>
Bluetooth is connectable but your device cannot be discovered by other devices.
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.RadioMode.Discoverable">
<summary>
Bluetooth is activated and fully discoverable.
</summary>
</member>
<member name="T:InTheHand.Net.Bluetooth.RadioModes">
<summary>
Determine the status of the radio, whether the radio is individually
powered-up/down, connectable, and/or discoverable.
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.RadioModes.Unknown">
<summary>
Unknown.
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.RadioModes.Discoverable">
<summary>
Remote devices can discover the radio.
</summary>
-
<remarks>
<para>If the radio is <see cref="F:InTheHand.Net.Bluetooth.RadioModes.PowerOff"/>
it is undefined how
<see cref="F:InTheHand.Net.Bluetooth.RadioModes.Connectable"/>
and <see cref="F:InTheHand.Net.Bluetooth.RadioModes.Discoverable"/>
are reported. Different stacks behave differently.
</para>
</remarks>
</member>
<member name="F:InTheHand.Net.Bluetooth.RadioModes.Connectable">
<summary>
Remote devices can connect to the radio.
</summary>
-
<remarks>
<para>If the radio is <see cref="F:InTheHand.Net.Bluetooth.RadioModes.PowerOff"/>
it is undefined how
<see cref="F:InTheHand.Net.Bluetooth.RadioModes.Connectable"/>
and <see cref="F:InTheHand.Net.Bluetooth.RadioModes.Discoverable"/>
are reported. Different stacks behave differently.
</para>
</remarks>
</member>
<member name="F:InTheHand.Net.Bluetooth.RadioModes.PowerOff">
<summary>
The radio is powered-down and thus cannot connect to remote devices.
</summary>
-
<remarks>
<note>Not all stacks report whether the radio is powered-up or down.
Thus there are cases where neither <see cref="F:InTheHand.Net.Bluetooth.RadioModes.PowerOff"/>
and <see cref="F:InTheHand.Net.Bluetooth.RadioModes.PowerOn"/> will be set.
Similarly not all stacks allow the program to control powering down
the radio.
</note>
<para>If the radio is <see cref="F:InTheHand.Net.Bluetooth.RadioModes.PowerOff"/>
it is undefined whether
<see cref="F:InTheHand.Net.Bluetooth.RadioModes.Connectable"/>
and <see cref="F:InTheHand.Net.Bluetooth.RadioModes.Discoverable"/>
are reported. Different stacks behave differently.
</para>
</remarks>
-
<seealso cref="F:InTheHand.Net.Bluetooth.RadioModes.PowerOn"/>
</member>
<member name="F:InTheHand.Net.Bluetooth.RadioModes.PowerOn">
<summary>
The radio is powered-up and thus can connect to remote devices.
</summary>
-
<remarks>
<note>Not all stacks report whether the radio is powered-up or down.
Thus there are cases where neither <see cref="F:InTheHand.Net.Bluetooth.RadioModes.PowerOff"/>
and <see cref="F:InTheHand.Net.Bluetooth.RadioModes.PowerOn"/> will be set.
Similarly not all stacks allow the program to control powering down
the radio.
</note>
</remarks>
-
<seealso cref="F:InTheHand.Net.Bluetooth.RadioModes.PowerOff"/>
</member>
<member name="T:InTheHand.Net.Bluetooth.RadioVersions">
<summary>
Stores the LMP etc versions.
</summary>
</member>
<member name="M:InTheHand.Net.Bluetooth.RadioVersions.#ctor(InTheHand.Net.Bluetooth.LmpVersion,System.UInt16,InTheHand.Net.Bluetooth.LmpFeatures,InTheHand.Net.Bluetooth.Manufacturer)">
<summary>
Initialises a new instance.
</summary>
-
<param name="lmpVersion">The LMP Version.
</param>
<param name="lmpSubversion">The LMP Subversion
as a <see cref="T:System.UInt16"/>.
</param>
<param name="lmpSupportedFeatures">The LMP Supported Features.
</param>
<param name="mfg">The Manufacturer.
</param>
<summary>
Get the LMP Subversion value.
</summary>
</member>
<member name="P:InTheHand.Net.Bluetooth.RadioVersions.LmpVersion">
<summary>
Get the LMP Version.
</summary>
</member>
<member name="P:InTheHand.Net.Bluetooth.RadioVersions.LmpSubversion">
<summary>
Get the LMP Subversion.
</summary>
-
<remarks>
<note>This is of CLR type <see cref="T:System.Int32"/> for CLS
compliance. The Bluetooth value is of course of type
<see cref="T:System.UInt16"/>.
</note>
</remarks>
</member>
<member name="P:InTheHand.Net.Bluetooth.RadioVersions.LmpSupportedFeatures">
<summary>
Get the LMP Supported Features.
</summary>
</member>
<member name="P:InTheHand.Net.Bluetooth.RadioVersions.Manufacturer">
<summary>
Get the Manufacturer.
</summary>
</member>
<member name="T:InTheHand.Net.Bluetooth.ServiceClass">
<summary>
Class of Service flags as assigned in the Bluetooth specifications.
</summary>
-
<remarks>
<para>Is returned by the property <see
cref="P:InTheHand.Net.Bluetooth.ClassOfDevice.Service">ClassOfDevice.Service</see>.
</para>
<para>Defined in Bluetooth Specifications <see href="http://www.bluetooth.org/Technical/AssignedNumbers/baseband.htm"/>.
</para>
</remarks>
</member>
<member name="F:InTheHand.Net.Bluetooth.ServiceClass.None">
<summary>
No service class bits set.
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.ServiceClass.Information">
<summary>
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.ServiceClass.Telephony">
<summary>
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.ServiceClass.Audio">
<summary>
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.ServiceClass.ObjectTransfer">
<summary>
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.ServiceClass.Capturing">
<summary>
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.ServiceClass.Rendering">
<summary>
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.ServiceClass.Network">
<summary>
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.ServiceClass.Positioning">
<summary>
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.ServiceClass.LimitedDiscoverableMode">
<summary>
</summary>
</member>
<member name="T:InTheHand.Net.Bluetooth.ServiceAttributeId">
<summary>
A Service Attribute Id identifies each attribute within an SDP service record.
</summary>
-
<remarks>
<para>The content of the record for a particular service class is defined in the
profile&#x2019;s specification along with the IDs it uses. The IDs for the
common standard services have beed defined here, as e.g.
<see cref="T:InTheHand.Net.Bluetooth.AttributeIds.ObexAttributeId"/>,
<see cref="T:InTheHand.Net.Bluetooth.AttributeIds.BasicPrintingProfileAttributeId"/>,
etc, see namespace <see cref="N:InTheHand.Net.Bluetooth.AttributeIds"/>.
The Service Discovery profile itself defines IDs, some that can be used
in any record <see cref="T:InTheHand.Net.Bluetooth.AttributeIds.UniversalAttributeId"/>,
and others
<see cref="T:InTheHand.Net.Bluetooth.AttributeIds.ServiceDiscoveryServerAttributeId"/>,
and <see cref="T:InTheHand.Net.Bluetooth.AttributeIds.BrowseGroupDescriptorAttributeId"/>.
</para>
<para>Note that except for the attributes in the &#x201C;Universal&#x201D; category
the IDs are <i>not</i> unique, for instance the ID is 0x0200 for both
<see cref="F:InTheHand.Net.Bluetooth.AttributeIds.ServiceDiscoveryServerAttributeId.VersionNumberList"/>
and <see cref="F:InTheHand.Net.Bluetooth.AttributeIds.BrowseGroupDescriptorAttributeId.GroupId"/>
from <see cref="T:InTheHand.Net.Bluetooth.AttributeIds.ServiceDiscoveryServerAttributeId"/>
and <see cref="T:InTheHand.Net.Bluetooth.AttributeIds.BrowseGroupDescriptorAttributeId"/>
respectively.
</para>
</remarks>
</member>
<member name="T:InTheHand.Net.Bluetooth.AttributeIdLookup">
<summary>
Retrieves the name of the SDP Attribute ID with the given value in the
specified Attribute ID class sets. Implementing <see cref="T:System.Enum"/>-like
behaviour.
</summary>
</member>
<member name="M:InTheHand.Net.Bluetooth.AttributeIdLookup.GetName(InTheHand.Net.Bluetooth.ServiceAttributeId,System.Type[])">
<summary>
Retrieves the name of the SDP Attribute ID with the given value in the
specified Attribute ID class sets.
</summary>
-
<remarks>
Each particular service (ObexPushProfile, SerialPortProfile) etc defines
its own SDP record content and the Attribute IDs are defined locally in
each, and thus with values overlapping with other service specifications.
Therefore for each profile we must define the set of Attribute IDs used, this
is done by creating a class for each with the IDs defined as <c>const</c>
member fields.
</remarks>
-
<param name="id">
The Attribute Id as an <see cref="T:InTheHand.Net.Bluetooth.ServiceAttributeId"/>
</param>
<param name="attributeIdDefiningClasses">
The set of classes defining Attribute IDs for the service classed contained
in the record containing this attribute id.
</param>
-
<returns>
A string containing the name of the Attribute ID whose numerical value is <paramref name="id"/>,
or a null reference (<c>Nothing</c> in Visual Basic) if no such constant is found.
</returns>
</member>
<member name="M:InTheHand.Net.Bluetooth.AttributeIdLookup.GetName(InTheHand.Net.Bluetooth.ServiceAttributeId,System.Type[],InTheHand.Net.Bluetooth.LanguageBaseItem[],InTheHand.Net.Bluetooth.LanguageBaseItem@)">
<summary>
Retrieves the name of the SDP Attribute ID with the given value
and using one of the languages from the supplied LanguageBaseItem
in the specified AttributeID class sets.
</summary>
-
<remarks>
Each particular service (ObexPushProfile, SerialPortProfile) etc defines
its own SDP record content and the Attribute IDs are defined locally in
each, and thus with values overlapping with other service specifications.
Therefore for each profile we must define the set of Attribute IDs used, this
is done by creating a class for each with the IDs defined as <c>const</c>
member fields.
</remarks>
-
<param name="id">
The Attribute Id as an <see cref="T:InTheHand.Net.Bluetooth.ServiceAttributeId"/>
</param>
<param name="attributeIdDefiningClasses">
The set of classes defining Attribute IDs for the service classed contained
in the record containing this attribute id.
</param>
<param name="langBaseList">
The list of <see cref="T:InTheHand.Net.Bluetooth.LanguageBaseItem"/> applying
to the current record. They are used when an attribute is marked as a
multi-language one and thus need the base offset removed from the specified
numerical value.
</param>
<param name="applicableLangBase">
The applicable <see cref="T:InTheHand.Net.Bluetooth.LanguageBaseItem"/> if the
matched attribute is a multi-language one. <see langword="null"/>
(<see langword="Nothing"/> in Visual Basic), if no attribute was matched
or it was not a multi-language one.
</param>
-
<returns>
A string containing the name of the Attribute ID whose numerical value is <paramref name="id"/>,
or a null reference (<c>Nothing</c> in Visual Basic) if no such constant is found.
</returns>
</member>
<member name="M:InTheHand.Net.Bluetooth.AttributeIdLookup._GetNameIfMatchesMultiLang(InTheHand.Net.Bluetooth.ServiceAttributeId,System.Reflection.FieldInfo,InTheHand.Net.Bluetooth.LanguageBaseItem[],InTheHand.Net.Bluetooth.LanguageBaseItem@)">
<summary>
Retrieves the name of the SDP Attribute ID with the given value
and using one of the languages from the supplied LanguageBaseItem
in the specified AttributeID class sets
</summary>
</member>
<member name="T:InTheHand.Net.Bluetooth.StringWithLanguageBaseAttribute">
<summary>
Indicates that the field to which it is applied represents an SDP Attribute
that can exist in multiple language instances and thus has a language base
offset applied to its numerical ID when added to a record.
</summary>
</member>
<member name="M:InTheHand.Net.Bluetooth.StringWithLanguageBaseAttribute.#ctor">
<summary>
Initializes a new instance of the <see cref="T:InTheHand.Net.Bluetooth.StringWithLanguageBaseAttribute"/>
class.
</summary>
</member>
<member name="T:InTheHand.Net.Bluetooth.BluetoothProtocolDescriptorType">
<summary>
Configures what type of element will be added by the <see cref="T:InTheHand.Net.Bluetooth.ServiceRecordBuilder"/>
for the <see cref="F:InTheHand.Net.Bluetooth.AttributeIds.UniversalAttributeId.ProtocolDescriptorList"/>
attribute.
</summary>
-
<remarks><para>Used with the <see cref="P:InTheHand.Net.Bluetooth.ServiceRecordBuilder.ProtocolType"/>
property.
</para>
</remarks>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothProtocolDescriptorType.None">
<summary>
No PDL attribute will be added.
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothProtocolDescriptorType.L2Cap">
<summary>
A standard L2CAP element will be added.
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothProtocolDescriptorType.Rfcomm">
<summary>
A standard RFCOMM element will be added.
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.BluetoothProtocolDescriptorType.GeneralObex">
<summary>
A standard GOEP (OBEX) element will be added.
</summary>
</member>
<member name="T:InTheHand.Net.Bluetooth.ElementTypeDescriptor">
<summary>
Represents the type of the element in the SDP record binary format,
and is stored as the higher 5 bits of the header byte.
</summary>
<remarks>
There is an identifier for each major type: String vs UUID vs unsigned integer.
There are various sizes of UUID and integer type for instance, the resultant
types are listed in enum <see cref="T:InTheHand.Net.Bluetooth.ElementType"/>.
</remarks>
</member>
<member name="T:InTheHand.Net.Bluetooth.SizeIndex">
<summary>
Represents the size of the SDP element in the record binary format,
and is stored as the lower 3 bits of the header byte.
</summary>
<seealso cref="M:InTheHand.Net.Bluetooth.ServiceRecordParser.SplitHeaderByte(System.Byte,InTheHand.Net.Bluetooth.ElementTypeDescriptor@,InTheHand.Net.Bluetooth.SizeIndex@)"/>
<seealso cref="M:InTheHand.Net.Bluetooth.ServiceRecordParser.GetSizeIndex(System.Byte)"/>
</member>
<member name="T:InTheHand.Net.Bluetooth.ElementType">
<summary>
Represents the types that an SDP element can hold.
</summary>
<remarks>
<para>
(Is a logical combination of the <see cref="T:InTheHand.Net.Bluetooth.ElementTypeDescriptor"/>
field which defines the major type and the size field in the binary format; and
the size field being made up of the <see cref="T:InTheHand.Net.Bluetooth.SizeIndex"/>
field and any additional length bytes.
</para>
<para>Note, the values here are not the numerical bitwise combination of the
<see cref="T:InTheHand.Net.Bluetooth.ElementTypeDescriptor"/> and
<see cref="T:InTheHand.Net.Bluetooth.SizeIndex"/> fields as they appear
in the encoded protocol. It was simpler to assign arbitrary values here as
firstly we wanted zero to be the 'Unknown' value, which conflicts with Nil's
bitwise value; but also because the TextString, sequence and Url types can
have various SizeIndex values and thus they wouldn&#x2019;t be easily
representable by one value here).
</para>
</remarks>
</member>
<member name="T:InTheHand.Net.Bluetooth.LanguageBaseItem">
<summary>
Represents a member of the SDP
<see cref="F:InTheHand.Net.Bluetooth.AttributeIds.UniversalAttributeId.LanguageBaseAttributeIdList"/>,
Attribute
which provides for multi-language strings in a record.
</summary>
<remarks>
&#x201C;The
<see cref="F:InTheHand.Net.Bluetooth.AttributeIds.UniversalAttributeId.LanguageBaseAttributeIdList"/>
attribute is a list in which each
member contains a language identifier, a character encoding identifier, and
a base attribute ID for each of the natural languages used in the service
record.&#x201D;
</remarks>
</member>
<member name="F:InTheHand.Net.Bluetooth.LanguageBaseItem.PrimaryLanguageBaseAttributeId">
<summary>
The primary language is specified to have base attribute ID 0x0100.
</summary>
</member>
<member name="F:InTheHand.Net.Bluetooth.LanguageBaseItem.Utf8EncodingId">
<summary>
The Id for the UTF-8 encoding.
</summary>
</member>
<member name="M:InTheHand.Net.Bluetooth.LanguageBaseItem.#ctor(System.UInt16,System.UInt16,System.UInt16)">
<summary>
Initialize a new instance of the <see cref="T:InTheHand.Net.Bluetooth.LanguageBaseItem"/> class.
</summary>
-
<param name="naturalLanguage">The Natural Language field of the entry.
Some example values are 0x656E which is "en", and 0x6672 which is "fr".
</param>
<param name="encodingId">The IETF Charset identifier for this language.
e.g. 3 for US-ASCII and 106 for UTF-8,
see <see cref="P:InTheHand.Net.Bluetooth.LanguageBaseItem.EncodingId"/>
</param>
<param name="baseAttributeId">The base Attribute Id for this language
in the record.
e.g. 0x100 for the Primary language.
</param>
</member>
<member name="M:InTheHand.Net.Bluetooth.LanguageBaseItem.#ctor(System.Int16,System.Int16,System.Int16)">
<summary>
Initialize a new instance of the <see cref="T:InTheHand.Net.Bluetooth.LanguageBaseItem"/> class.
</summary>
-
<param name="naturalLanguage">The Natural Language field of the entry.
Some example values are 0x656E which is "en", and 0x6672 which is "fr".
</param>
<param name="encodingId">The IETF Charset identifier for this language.
e.g. 3 for US-ASCII and 106 for UTF-8,
see <see cref="P:InTheHand.Net.Bluetooth.LanguageBaseItem.EncodingId"/>
</param>
<param name="baseAttributeId">The base Attribute Id for this language
in the record.
e.g. 0x100 for the Primary language.
</param>
</member>
<member name="M:InTheHand.Net.Bluetooth.LanguageBaseItem.#ctor(System.UInt16,System.UInt16,InTheHand.Net.Bluetooth.ServiceAttributeId)">
<overloads>
Initialize a new instance of the <see cref="T:InTheHand.Net.Bluetooth.LanguageBaseItem"/> class.
</overloads>
-
<summary>
Initialize a new instance of the <see cref="T:InTheHand.Net.Bluetooth.LanguageBaseItem"/> class.
</summary>
-
<param name="naturalLanguage">The Natural Language field of the entry.
Some example values are 0x656E which is "en", and 0x6672 which is "fr".
</param>
<param name="encodingId">The IETF Charset identifier for this language.
e.g. 3 for US-ASCII and 106 for UTF-8,
see <see cref="P:InTheHand.Net.Bluetooth.LanguageBaseItem.EncodingId"/>
</param>
<param name="baseAttributeId">The base Attribute Id for this language
in the record.
e.g. 0x100 for the Primary language.
</param>
</member>
<member name="M:InTheHand.Net.Bluetooth.LanguageBaseItem.#ctor(System.Int16,System.Int16,InTheHand.Net.Bluetooth.ServiceAttributeId)">
<summary>
Initialize a new instance of the <see cref="T:InTheHand.Net.Bluetooth.LanguageBaseItem"/> class.
</summary>
-
<param name="naturalLanguage">The Natural Language field of the entry.
Some example values are 0x656E which is "en", and 0x6672 which is "fr".
</param>
<param name="encodingId">The IETF Charset identifier for this language.
e.g. 3 for US-ASCII and 106 for UTF-8,
see <see cref="P:InTheHand.Net.Bluetooth.LanguageBaseItem.EncodingId"/>
</param>
<param name="baseAttributeId">The base Attribute Id for this language
in the record.
e.g. 0x100 for the Primary language.
</param>
</member>
<member name="M:InTheHand.Net.Bluetooth.LanguageBaseItem.#ctor(System.String,System.UInt16,InTheHand.Net.Bluetooth.ServiceAttributeId)">
<summary>
Initialize a new instance of the <see cref="T:InTheHand.Net.Bluetooth.LanguageBaseItem"/> class.
</summary>
-
<param name="naturalLanguage">The Natural Language field of the entry.
Some example values are "en", and "fr".
</param>
<param name="encodingId">The IETF Charset identifier for this language.
e.g. 3 for US-ASCII and 106 for UTF-8,
see <see cref="P:InTheHand.Net.Bluetooth.LanguageBaseItem.EncodingId"/>
</param>
<param name="baseAttributeId">The base Attribute Id for this language
in the record.
e.g. 0x100 for the Primary language.
</param>
</member>
<member name="M:InTheHand.Net.Bluetooth.LanguageBaseItem.#ctor(System.String,System.Int16,InTheHand.Net.Bluetooth.ServiceAttributeId)">
<summary>
Initialize a new instance of the <see cref="T:InTheHand.Net.Bluetooth.LanguageBaseItem"/> class.
</summary>
-
<param name="naturalLanguage">The Natural Language field of the entry.
Some example values are "en", and "fr".
</param>
<param name="encodingId">The IETF Charset identifier for this language.
e.g. 3 for US-ASCII and 106 for UTF-8,
see <see cref="P:InTheHand.Net.Bluetooth.LanguageBaseItem.EncodingId"/>
</param>
<param name="baseAttributeId">The base Attribute Id for this language
in the record.
e.g. 0x100 for the Primary language.
</param>
</member>
<member name="M:InTheHand.Net.Bluetooth.LanguageBaseItem.ParseListFromElementSequence(InTheHand.Net.Bluetooth.ServiceElement)">
<summary>
Gets the list of <see cref="T:InTheHand.Net.Bluetooth.LanguageBaseItem"/>
items in the service record.
</summary>
-
<param name="elementSequence">
A <see cref="T:InTheHand.Net.Bluetooth.ServiceElement"/> holding the
data from the
<see cref="F:InTheHand.Net.Bluetooth.AttributeIds.UniversalAttributeId.LanguageBaseAttributeIdList"/>
attribute.
</param>
-
<returns>
An array of <see cref="T:InTheHand.Net.Bluetooth.LanguageBaseItem"/>.
An array length zero is returned if the service record contains no such attribute.
</returns>
-
<exception cref="T:System.ArgumentException">
<paramref name="elementSequence"/> is not of type
<see cref="F:InTheHand.Net.Bluetooth.ElementType.ElementSequence"/>.
</exception>
<exception cref="T:System.Net.ProtocolViolationException">
The element sequence contains incorrectly formatted or invalid content,
for example it contains the wrong element data types, or doesn't contain
the elements in groups of three as required.
</exception>
</member>
<member name="M:InTheHand.Net.Bluetooth.LanguageBaseItem.CreateElementSequenceFromList(InTheHand.Net.Bluetooth.LanguageBaseItem[])">
<summary>
Create a data element for the
<see cref="F:InTheHand.Net.Bluetooth.AttributeIds.UniversalAttributeId.LanguageBaseAttributeIdList"/>
attribute
from the list of <see cref="T:InTheHand.Net.Bluetooth.LanguageBaseItem"/>
</summary>
-
<param name="list">
An array of <see cref="T:InTheHand.Net.Bluetooth.LanguageBaseItem"/>.
</param>
-
<returns>
A <see cref="T:InTheHand.Net.Bluetooth.ServiceElement"/> holding the
<see cref="F:InTheHand.Net.Bluetooth.AttributeIds.UniversalAttributeId.LanguageBaseAttributeIdList"/>
element, to be added to a generally the
<see cref="T:InTheHand.Net.Bluetooth.ServiceRecord"/>.
</returns>
</member>
<member name="M:InTheHand.Net.Bluetooth.LanguageBaseItem.CreateEnglishUtf8PrimaryLanguageItem">
<summary>
Create a <see cref="T:InTheHand.Net.Bluetooth.LanguageBaseItem"/> instance
for a primary language of English and a string encoding of UTF-8.
</summary>
<returns>The <see cref="T:InTheHand.Net.Bluetooth.LanguageBaseItem"/> instance.
</returns>
</member>
<member name="P:InTheHand.Net.Bluetooth.LanguageBaseItem.NaturalLanguage">
<summary>
Gets the value of the Natural Language field of the entry.
</summary>
<example>Some example value may be "en", and "fr".</example>
</member>
<member name="P:InTheHand.Net.Bluetooth.LanguageBaseItem.NaturalLanguageAsUInt16">
<summary>
Gets the value of the Natural Language field of the entry, as a <see cref="T:System.UInt16"/>.
</summary>
<example>Some example value may be 0x656e for "en", and 0x6672 for "fr".</example>
</member>
<member name="P:InTheHand.Net.Bluetooth.LanguageBaseItem.NaturalLanguageAsInt16">
<summary>
Gets the value of the Natural Language field of the entry, as a <see cref="T:System.UInt16"/>.
</summary>
<example>Some example value may be 0x656e for "en", and 0x6672 for "fr".</example>
</member>
<member name="P:InTheHand.Net.Bluetooth.LanguageBaseItem.AttributeIdBase">
<summary>
Gets the base Attribute Id for this language.
</summary>
</member>
<member name="P:InTheHand.Net.Bluetooth.LanguageBaseItem.EncodingId">
<summary>
Get the IETF Charset identifier for this language.
</summary>
-
<remarks>
<para>Example values are 3 for US-ASCII and 106 for UTF-8.
See the full list at <see href="http://www.iana.org/assignments/character-sets"/>
</para>
</remarks>
-
<seealso cref="P:InTheHand.Net.Bluetooth.LanguageBaseItem.EncodingIdAsInt16"/>
</member>
<member name="P:InTheHand.Net.Bluetooth.LanguageBaseItem.EncodingIdAsInt16">
<summary>
Get the IETF Charset identifier for this language, as an Int16.
</summary>
-
<remarks>
<para>
See <see cref="P:InTheHand.Net.Bluetooth.LanguageBaseItem.EncodingId"/>.
</para>
</remarks>
-
<seealso cref="P:InTheHand.Net.Bluetooth.LanguageBaseItem.EncodingId"/>
</member>
<member name="M:InTheHand.Net.Bluetooth.LanguageBaseItem.GetEncoding">
<summary>
Gets an <see cref="T:System.Text.Encoding"/> appropriate for this language base item.
</summary>
-
<returns>The <see cref="T:System.Text.Encoding"/>
appropriate for this language base item.
</returns>
-
<remarks>
<para>We support the following set of mappings from encoding id to .NET
Encoding name.
<list type="table">
<listheader><term>Id</term><description>Encoding</description></listheader>
<item><term>3</term><description>us-ascii</description></item>
<item><term>4</term><description>iso-8859-1</description></item>
<item><term>5</term><description>iso-8859-2</description></item>
<item><term>6</term><description>iso-8859-3</description></item>
<item><term>7</term><description>iso-8859-4</description></item>
<item><term>8</term><description>iso-8859-5</description></item>
<item><term>9</term><description>iso-8859-6</description></item>
<item><term>10</term><description>iso-8859-7</description></item>
<item><term>11</term><description>iso-8859-8</description></item>
<item><term>12</term><description>iso-8859-9</description></item>
<item><term>13</term><description>iso-8859-10</description></item>
<item><term>106 (0x006a)</term><description>UTF-8</description></item>
<item><term>109</term><description>iso-8859-13</description></item>
<item><term>110</term><description>iso-8859-14</description></item>
<item><term>111</term><description>iso-8859-15</description></item>
<item><term>112</term><description>iso-8859-16</description></item>
<item><term>1013 (0x03f5)</term><description>unicodeFFFE (UTF-16BE)</description></item>
<item><term>1014</term><description>utf-16 (UTF-16LE)</description></item>
<item><term>1015</term><description>utf-16 (UTF-16, we assume UTF16-LE)</description></item>
<item><term>2252 to 2258 (0x08cc to 0x08d2)</term><description>windows-1252 to Windows-1258</description></item>
</list>
Note that not all platforms support all these Encodings, for instance on
my Windows XP SP2 box iso-8859-10/-14/-16 are not supported. On NETCF on
Windows Mobile 5 only five of the ISO-8859 encodings are supported.
Regardless I've seen no SDP records that use ISO-8859 encodings so this is
not a problem, most records actually use UTF-8.
</para>
</remarks>
-
<exception cref="T:System.NotSupportedException">
The IETF encoding id for this language base item is currently unknown.
If valid, add it to the <c>s_IetfCharsetIdToDotNetEncodingNameTable</c> table,
providing a mapping to its Windows code page name.
</exception>
</member>
<member name="M:InTheHand.Net.Bluetooth.LanguageBaseItem.TestAllDefinedEncodingMappingRows(System.Int32@,System.Int32@)">
<exclude/>
</member>
<member name="F:InTheHand.Net.Bluetooth.LanguageBaseItem.ErrorMsgLangBaseListParseNotU16">
<exclude/>
</member>
<member name="F:InTheHand.Net.Bluetooth.LanguageBaseItem.ErrorMsgLangBaseListParseBaseInvalid">
<exclude/>
</member>
<member name="F:InTheHand.Net.Bluetooth.LanguageBaseItem.ErrorMsgLangBaseListParseNotSequence">
<exclude/>
</member>
<member name="F:InTheHand.Net.Bluetooth.LanguageBaseItem.ErrorMsgLangBaseListParseNotInThrees">
<exclude/>
</member>
<member name="F:InTheHand.Net.Bluetooth.LanguageBaseItem.ErrorMsgFormatUnrecognizedEncodingId">
<exclude/>
</member>
<member name="F:InTheHand.Net.Bluetooth.LanguageBaseItem.ErrorMsgLangMustAsciiTwoChars">
<exclude/>
</member>
<member name="T:InTheHand.Net.Bluetooth.MapServiceClassToAttributeIdList">
<summary>
Gets a list of enum-like classes containing SDP Service Attribute Id definitions
for a particular Service Class.
</summary>
-
<remarks>
See method
<see cref="M:InTheHand.Net.Bluetooth.MapServiceClassToAttributeIdList.GetAttributeIdEnumTypes(InTheHand.Net.Bluetooth.ServiceRecord)"/>.
</remarks>
</member>
<member name="M:InTheHand.Net.Bluetooth.MapServiceClassToAttributeIdList.#ctor">
<summary>
Initializes a new instance of the <see cref="T:InTheHand.Net.Bluetooth.MapServiceClassToAttributeIdList"/> class.
</summary>
</member>
<member name="M:InTheHand.Net.Bluetooth.MapServiceClassToAttributeIdList.GetAttributeIdEnumTypes(InTheHand.Net.Bluetooth.ServiceRecord)">
<summary>
Get a list of enum-like classes containing Service Attribute Id definitions
for the type of the Service Class contained in the given Service Record.
</summary>
-
<param name="record">A <see cref="T:InTheHand.Net.Bluetooth.ServiceRecord"/>
whose <see cref="F:InTheHand.Net.Bluetooth.AttributeIds.UniversalAttributeId.ServiceClassIdList"/>
element will be retrieved, and its Service Class Id will used
for the lookup.
</param>
-
<returns>
An array of <see cref="T:System.Type"/> each of which is a enum-like class
which defines the set of Service Attribute IDs used by a particular
Service Class e.g. ObjectPushProfile.
An empty array will be returned if none of the Service Classes
are known, or the record contains no
<see cref="F:InTheHand.Net.Bluetooth.AttributeIds.UniversalAttributeId.ServiceClassIdList"/>
attribute, or it is invalid.
<note>Currently only the first Service Class Id is looked-up.</note>
</returns>
-
<exception cref="T:System.ArgumentNullException">
<paramref name="record"/> is null.
</exception>
</member>
<member name="M:InTheHand.Net.Bluetooth.MapServiceClassToAttributeIdList.GetAttributeIdEnumType(InTheHand.Net.Bluetooth.ServiceElement)">
<summary>
Get the enum-like class containing the Service Attribute Id definitions
for the type of the Service Class contained in the given
<see cref="F:InTheHand.Net.Bluetooth.AttributeIds.UniversalAttributeId.ServiceClassIdList"/>
(type <see cref="F:InTheHand.Net.Bluetooth.ElementTypeDescriptor.Uuid"/>) data element.
</summary>
-
<param name="idElement">A <see cref="T:InTheHand.Net.Bluetooth.ServiceElement"/>
of 'UUID' type containing the Service Class to search for.
</param>
-
<returns>
A <see cref="T:System.Type"/> object representing the enum-like class
holding the Attribute Id definitions, or null if the Service Class is
unknown or the element is not of <see cref="F:InTheHand.Net.Bluetooth.ElementTypeDescriptor.Uuid"/>
type.
</returns>
-
<exception cref="T:System.ArgumentNullException">
<paramref name="idElement"/> is null.
</exception>
</member>
<member name="M:InTheHand.Net.Bluetooth.MapServiceClassToAttributeIdList.GetAttributeIdEnumType(System.Guid)">
<overloads>
Get the enum-like class containing the Service Attribute Id definitions
for the type of the Service Class specified.
</overloads>
-
<summary>
Get the enum-like class containing the Service Attribute Id definitions
for the type of the Service Class specified by UUID.
</summary>
-
<param name="uuid">The Service Class to search for, as a <see cref="T:System.Guid"/>.
</param>
-
<returns>
A <see cref="T:System.Type"/> object representing the enum-like class
holding the Attribute Id definitions, or null if the Service Class is
unknown.
</returns>
</member>
<member name="T:InTheHand.Net.Bluetooth.ServiceAttribute">
<summary>
Holds an attribute from an SDP service record.
</summary>
-
<remarks>
Access its SDP Data Element through the
<see cref="P:InTheHand.Net.Bluetooth.ServiceElement.Value"/> property and read the
data value through the methods and properties on the returned
<see cref="T:InTheHand.Net.Bluetooth.ServiceElement"/>.
</remarks>
</member>
<member name="M:InTheHand.Net.Bluetooth.ServiceAttribute.#ctor(InTheHand.Net.Bluetooth.ServiceAttributeId,InTheHand.Net.Bluetooth.ServiceElement)">
<summary>
Initializes a new instance of the <see cref="T:InTheHand.Net.Bluetooth.ServiceAttribute"/> class.
</summary>
-
<param name="id">The Attribute Id as a <see cref="T:InTheHand.Net.Bluetooth.ServiceAttributeId"/>.</param>
<param name="value">The value as a <see cref="T:InTheHand.Net.Bluetooth.ServiceElement"/>.</param>
</member>
<member name="M:InTheHand.Net.Bluetooth.ServiceAttribute.#ctor(System.UInt16,InTheHand.Net.Bluetooth.ServiceElement)">
<summary>
Initializes a new instance of the <see cref="T:InTheHand.Net.Bluetooth.ServiceAttribute"/> class.
</summary>
-
<param name="id">The Attribute Id as a <see cref="T:System.UInt16"/>.</param>
<param name="value">The value as a <see cref="T:InTheHand.Net.Bluetooth.ServiceElement"/>.</param>
</member>
<member name="P:InTheHand.Net.Bluetooth.ServiceAttribute.Id">
<summary>
Get the Attribute Id for this attribute.
</summary>
-
<remarks>
<note >Id is a <em>unsigned</em> 32-bit integer but we use return it
is a <em>signed</em> 32-bit integer for CLS Compliance reasons. It
should not thus be used for ordering etc, for example 0xFFFF will sort
before 0x0001 which is backwards.
</note>
</remarks>
</member>
<member name="P:InTheHand.Net.Bluetooth.ServiceAttribute.IdAsOrdinalNumber">
<summary>
Get the Attribute Id as a number, e.g. for comparison.
</summary>
-
<remarks>
<para>Property <see cref="P:Id"/> should be used as an identifier,
but not as a number. That#x2019;s because the range is <em>unsigned</em>
32-bit integer but we use return it is a <em>signed</em> 32-bit integer.
Thus an example list will sort as { 0xFFFF, 0x8001, 0x0001, 0x0302 }
when it should sort as { 0x0001, 0x0302, 0x8001,0xFFFF }
</para>
</remarks>
</member>
<member name="P:InTheHand.Net.Bluetooth.ServiceAttribute.Value">
<summary>
Get the value of this attributes as a <see cref="T:InTheHand.Net.Bluetooth.ServiceElement"/>
</summary>
</member>
<member name="T:InTheHand.Net.Bluetooth.ServiceElement">
<summary>
Holds an SDP data element.
</summary>
-
<remarks>
<para>A Service Element hold the data in a SDP Service Record. It can
hold various types of data, being like the &#x2018;variant&#x2019; type in some
environments. Each <see cref="T:InTheHand.Net.Bluetooth.ServiceAttribute"/> in
a <see cref="T:InTheHand.Net.Bluetooth.ServiceRecord"/> holds its content in a
Service Element.
</para>
<para>The types currently defined in the Service Discovery specification
include unsigned and signed integers
of various sizes (8-bit, 16-bit etc), UUIDs in the full 128-bit form or
in the 16 and 32-bit forms, TextString, Url etc. An element can itself
also contain a list of element, either as a &#x2018;sequence&#x2019; or an
&#x2018;alternative&#x2019;, and thus an attribute can contain a tree of values,
e.g. as used by the
<see cref="F:InTheHand.Net.Bluetooth.AttributeIds.UniversalAttributeId.ProtocolDescriptorList"/>
attribute.
</para>
<para>The type that an element is holding can be accessed with the
<see cref="P:InTheHand.Net.Bluetooth.ServiceElement.ElementTypeDescriptor"/> and
<see cref="P:InTheHand.Net.Bluetooth.ServiceElement.ElementType"/> properties which
are of type <see cref="T:InTheHand.Net.Bluetooth.ElementTypeDescriptor"/> and
<see cref="T:InTheHand.Net.Bluetooth.ElementType"/> respectively, the former being
the &#x2018;major&#x2019; type e.g.
<see cref="F:InTheHand.Net.Bluetooth.ElementTypeDescriptor.UnsignedInteger"/>, and
the latter the &#x2018;minor&#x2019; type e.g.
<see cref="F:InTheHand.Net.Bluetooth.ElementType.UInt16"/>.
</para>
<para>The element's value can be accessed in various ways, either directly
in its internal form through its <see cref="P:InTheHand.Net.Bluetooth.ServiceElement.Value"/>
property. It has return type <see cref="T:System.Object"/> so the value
will have to be cast before use, see the <c>UInt16</c> example below. There
are also a number of type-specific methods, e.g.
<see cref="M:InTheHand.Net.Bluetooth.ServiceElement.GetValueAsElementArray"/>,
<see cref="M:InTheHand.Net.Bluetooth.ServiceElement.GetValueAsUuid"/>,
<see cref="M:InTheHand.Net.Bluetooth.ServiceElement.GetValueAsString(System.Text.Encoding)"/>
etc. Each will throw an <see cref="T:System.InvalidOperationException"/>
if the element is not of a suitable type. The complete set is:</para>
<list type="table">
<listheader><term><see cref="T:InTheHand.Net.Bluetooth.ElementType"/></term>
<description>Access method, or .NET Type for direct access</description>
</listheader>
<item><term><c>Nil</c></term>
<description><see langword="null"/></description></item>
<item><term><c>Uint8</c></term><description><see cref="T:System.Byte"/></description></item>
<item><term><c>Uint16</c></term><description><see cref="T:System.UInt16"/></description></item>
<item><term><c>Uint32</c></term><description><see cref="T:System.UInt32"/></description></item>
<item><term><c>Uint64</c></term><description>Currently unsupported.</description></item>
<item><term><c>Uint128</c></term><description>Currently unsupported.</description></item>
<item><term><c>Int8</c></term><description><see cref="T:System.SByte"/></description></item>
<item><term><c>Int16</c></term><description><see cref="T:System.Int16"/></description></item>
<item><term><c>Int32</c></term><description><see cref="T:System.Int32"/></description></item>
<item><term><c>Int64</c></term><description>Currently unsupported.</description></item>
<item><term><c>Int128</c></term><description>Currently unsupported.</description></item>
<item><term><c>Uuid16</c></term><description>Via <see cref="M:InTheHand.Net.Bluetooth.ServiceElement.GetValueAsUuid"/>, or as <see cref="T:System.UInt16"/></description></item>
<item><term><c>Uuid32</c></term><description>Via <see cref="M:InTheHand.Net.Bluetooth.ServiceElement.GetValueAsUuid"/>, or as <see cref="T:System.UInt16"/></description></item>
<item><term><c>Uuid128</c></term><description>Via <see cref="M:InTheHand.Net.Bluetooth.ServiceElement.GetValueAsUuid"/></description></item>
<item><term><c>TextString</c></term><description>With
<see cref="M:InTheHand.Net.Bluetooth.ServiceElement.GetValueAsString(System.Text.Encoding)"/>
or <see cref="M:InTheHand.Net.Bluetooth.ServiceElement.GetValueAsStringUtf8"/> etc.
The underlying value can be an array of bytes, or as a <see cref="T:System.String"/>
the <see cref="T:InTheHand.Net.Bluetooth.ServiceRecordParser"/> will set an
array of bytes, whereas a manually created record will likely contain a
<see cref="T:System.String"/>.
</description></item>
<item><term><c>Boolean</c></term><description><see cref="T:System.Boolean"/></description></item>
<item><term><c>ElementSequence</c></term><description>With
<see cref="M:InTheHand.Net.Bluetooth.ServiceElement.GetValueAsElementArray"/> or
<see cref="M:InTheHand.Net.Bluetooth.ServiceElement.GetValueAsElementList"/>
</description></item>
<item><term><c>ElementSequence</c></term><description>-"-</description></item>
<item><term><c>Url</c></term><description>Via <see cref="M:InTheHand.Net.Bluetooth.ServiceElement.GetValueAsUri"/>,
can be stored interally as <see cref="T:System.Uri"/> or as an array of bytes
</description></item>
</list>
<para>Note that there are no access
methods for the numeric type for instance so the
<see cref="P:InTheHand.Net.Bluetooth.ServiceElement.Value"/> property will have
to be used e.g.
<code lang="C#">
// ElementType is UInt16
ushort x = (ushort)element.Value;
</code>
or
<code lang="C#">
// ElementType is UInt16
Dim x As UShort = CUShort(element.Value);
</code>
</para>
<para>Additional type-specific methods can be added as required, in fact the
full set of 19+ could be added, it just requires implementation and test&#x2026;
</para>
</remarks>
</member>
<member name="M:InTheHand.Net.Bluetooth.ServiceElement.#ctor(InTheHand.Net.Bluetooth.ElementType,System.Object)">
<overloads>
Initializes a new instance of the <see cref="T:InTheHand.Net.Bluetooth.ServiceElement"/> class.
</overloads>
-
<summary>
Initializes a new instance of the <see cref="T:InTheHand.Net.Bluetooth.ServiceElement"/> class.
</summary>
-
<remarks>
<para>The type of the object passed in the <paramref name="value"/> parameter
<strong>must</strong> suit the type of the element. For instance if the element type is
<see cref="F:InTheHand.Net.Bluetooth.ElementType.UInt8"/> then the object
passed in must be a <see cref="T:System.Byte"/>, if the element type is
<see cref="F:InTheHand.Net.Bluetooth.ElementType.TextString"/> then the object
must either be a <see cref="T:System.String"/> or the string encoded as
an array of <see cref="T:System.Byte"/>,
and if the element type is <see cref="F:InTheHand.Net.Bluetooth.ElementType.Uuid16"/>
then the object passed in must be a <see cref="T:System.UInt16"/>,
etc.
For the full list of types see the class level documentation
(<see cref="T:InTheHand.Net.Bluetooth.ServiceElement"/>).
</para>
<para>For numerical element types the
<see cref="M:InTheHand.Net.Bluetooth.ServiceElement.CreateNumericalServiceElement(InTheHand.Net.Bluetooth.ElementType,System.Object)"/>
factory method will accept any integer type and attempt to convert it to the
required type before creating the <see cref="T:InTheHand.Net.Bluetooth.ServiceElement"/>,
for example for element type <see cref="F:InTheHand.Net.Bluetooth.ElementType.UInt8"/>
it will accept an <see cref="T:System.Int32"/> parameter and convert
it to a <see cref="T:System.Byte"/> internally.
</para>
</remarks>
-
<param name="type">The type of the element as an ElementType.
</param>
<param name="value">The value for the new element,
<strong>must</strong> suit the type of the element.
See the remarks for more information.
</param>
-
<example>
<code lang="C#">
ServiceElement e
e = new ServiceElement(ElementType.TextString, "Hello world");
e = new ServiceElement(ElementType.TextString, new byte[] { (byte)'h', (byte)'i', });
e = new ServiceElement(ElementType.Uuid16, (UInt16)0x1101);
int i = 10;
int j = -1;
// Error, Int32 not suitable for element type UInt8.
ServiceElement e0 = new ServiceElement(ElementType.UInt8, i);
// Success, Byte value 10 stored.
ServiceElement e1 = ServiceElement.CreateNumericalServiceElement(ElementType.UInt8, i);
// Error, -1 not in range of type Byte.
ServiceElement e2 = ServiceElement.CreateNumericalServiceElement(ElementType.UInt8, j);
</code>
</example>
</member>
<member name="M:InTheHand.Net.Bluetooth.ServiceElement.#ctor(InTheHand.Net.Bluetooth.ElementType,System.Collections.Generic.IList{InTheHand.Net.Bluetooth.ServiceElement})">
<summary>
Initializes a new instance of the <see cref="T:InTheHand.Net.Bluetooth.ServiceElement"/> class.
</summary>
-
<param name="type">The type of the element as an ElementType.
Should be either <c>ElementSequence</c>/<c>ElementAlternative</c> types.
</param>
<param name="childElements">A list of elements.
</param>
</member>
<member name="M:InTheHand.Net.Bluetooth.ServiceElement.#ctor(InTheHand.Net.Bluetooth.ElementType,InTheHand.Net.Bluetooth.ServiceElement[])">
<summary>
Initializes a new instance of the <see cref="T:InTheHand.Net.Bluetooth.ServiceElement"/> class.
</summary>
-
<param name="type">The type of the element as an ElementType.
Should be either <c>ElementSequence</c>/<c>ElementAlternative</c> types.
</param>
<param name="childElements">A list of elements.
</param>
</member>
<member name="M:InTheHand.Net.Bluetooth.ServiceElement.#ctor(InTheHand.Net.Bluetooth.ElementTypeDescriptor,InTheHand.Net.Bluetooth.ElementType,System.Object)">
<summary>
Obsolete, use <see cref="M:InTheHand.Net.Bluetooth.ServiceElement.#ctor(InTheHand.Net.Bluetooth.ElementType,System.Object)"/> instead.
Initializes a new instance of the <see cref="T:InTheHand.Net.Bluetooth.ServiceElement"/> class.
</summary>
</member>
<member name="M:InTheHand.Net.Bluetooth.ServiceElement.CreateNumericalServiceElement(InTheHand.Net.Bluetooth.ElementType,System.Object)">
<summary>
Create an instance of <see cref="T:InTheHand.Net.Bluetooth.ServiceElement"/>
but internally converting the numeric value to the required type.
</summary>
-
<remarks>
<para>As noted in the constructor documentation
(<see cref="M:InTheHand.Net.Bluetooth.ServiceElement.#ctor(InTheHand.Net.Bluetooth.ElementType,System.Object)"/>)
the type of the value supplied <strong>must</strong> exactly match the element's natural type,
the contructor will return an error if that is not the case. This method
will instead attempt to convert the value to the required type. It uses
the <see cref="T:System.IConvertible"/> interface to do the conversion, for
instance if the element type is <c>Uint16</c> then it will cast the input value
to <see cref="T:System.IConvertible"/> and call
<see cref="M:System.IConvertible.ToUInt16(System.IFormatProvider)"/> on it.
If the value is not convertible to the element type then an
<see cref="T:System.ArgumentOutOfRangeException"/> will be thrown see below.
</para>
<para>For instance, passing in an C# <c>int</c> / Visual Basic <c>Integer</c>
to the constructor will fail for element types <see cref="F:InTheHand.Net.Bluetooth.ElementType.UInt8"/>
etc, however by using this method it will succeed if the value is in the
correct range.
For example
<code lang="C#">
int i = 10;
int j = -1;
// Error, Int32 not suitable for element type UInt8.
ServiceElement e0 = new ServiceElement(ElementType.UInt8, i);
// Success, Byte value 10 stored.
ServiceElement e1 = ServiceElement.CreateNumericalServiceElement(ElementType.UInt8, i);
// Error, -1 not in range of type Byte.
ServiceElement e2 = ServiceElement.CreateNumericalServiceElement(ElementType.UInt8, j);
</code>
The last example failing with:
<code lang="none">
System.ArgumentOutOfRangeException: Value '-1' of type 'System.Int32' not valid for element type UInt16.
---> System.OverflowException: Value was either too large or too small for a UInt16.
at System.Convert.ToUInt16(Int32 value)
at System.Int32.System.IConvertible.ToUInt16(IFormatProvider provider)
at InTheHand.Net.Bluetooth.ServiceElement.ConvertNumericalValue(ElementType elementType, Object value)
--- End of inner exception stack trace ---
at InTheHand.Net.Bluetooth.ServiceElement.ConvertNumericalValue(ElementType elementType, Object value)
at InTheHand.Net.Bluetooth.ServiceElement.CreateNumericalServiceElement(ElementType elementType, Object value)
at MiscFeatureTestCs.Main(String[] args)
</code>
</para>
</remarks>
-
<param name="elementType">The type of the element as an ElementType.
Should be one of the <c>UnsignedInteger</c>/<c>TwosComplementInteger</c> types.
</param>
<param name="value">The value for the new element,
should be a numerical type.
</param>
-
<returns>The new element.
</returns>
-
<exception cref="T:System.ArgumentException">
The <paramref name="elementType"/> is not a numerical type.
</exception>
<exception cref="T:System.ArgumentOutOfRangeException">
The value wasn&#x2019;t convertible to the required type, e.g. if -1 is
passed for element type UInt8, as shown above.
</exception>
</member>
<member name="P:InTheHand.Net.Bluetooth.ServiceElement.ElementType">
<summary>
Gets the type of the element as an <see cref="T:InTheHand.Net.Bluetooth.ElementType"/>.
</summary>
</member>
<member name="P:InTheHand.Net.Bluetooth.ServiceElement.ElementTypeDescriptor">
<summary>
Gets the SDP Element Type Descriptor of the element
as an <see cref="T:InTheHand.Net.Bluetooth.ElementTypeDescriptor"/>.
</summary>
</member>
<member name="P:InTheHand.Net.Bluetooth.ServiceElement.Value">
<summary>
Gets the value of the element as the .NET type it is stored as.
</summary>
<remarks>
In most cases the type-specific property should be used instead, e.g
<see cref="M:InTheHand.Net.Bluetooth.ServiceElement.GetValueAsElementList"/>,
<see cref="M:InTheHand.Net.Bluetooth.ServiceElement.GetValueAsUri"/>,
<see cref="M:InTheHand.Net.Bluetooth.ServiceElement.GetValueAsUuid"/>, etc.
</remarks>
</member>
<member name="M:InTheHand.Net.Bluetooth.ServiceElement.GetValueAsElementList">
<summary>
Gets the value as a list of <see cref="T:InTheHand.Net.Bluetooth.ServiceElement"/>.
</summary>
-
<returns>The list of elements as an list.
</returns>
-
<exception cref="T:System.InvalidOperationException">
The service element is not of type
<c>ElementType</c>.<see cref="F:InTheHand.Net.Bluetooth.ElementType.ElementSequence"/>
or <see cref="F:InTheHand.Net.Bluetooth.ElementType.ElementAlternative"/>.
</exception>
</member>
<member name="M:InTheHand.Net.Bluetooth.ServiceElement.GetValueAsElementArray">
<summary>
Gets the value as a array of <see cref="T:InTheHand.Net.Bluetooth.ServiceElement"/>.
</summary>
-
<returns>The list of elements as an array.
</returns>
-
<exception cref="T:System.InvalidOperationException">
The service element is not of type
<c>ElementType</c>.<see cref="F:InTheHand.Net.Bluetooth.ElementType.ElementSequence"/>
or <see cref="F:InTheHand.Net.Bluetooth.ElementType.ElementAlternative"/>.
</exception>
</member>
<member name="M:InTheHand.Net.Bluetooth.ServiceElement.GetValueAsUri">
<summary>
Gets the value as a <see cref="T:System.Uri"/>.
</summary>
-
<returns>The Url value as a <see cref="T:System.Uri"/>.
</returns>
-
<remarks>
<para>It turns out that we can't trust vendors to add only valid
URLs to their records, for instance the iPhone has an attribute
with value "www.apple.com" which isn't a URL as it has no scheme
part (http://) etc.
</para>
<para>Thus a Url value in an element can be stored in a number of
formats. If created by the parser then it will be stored as a
<see cref="T:System.String"/> or as an array of
<see cref="T:System.Byte"/> if property
<see cref="P:InTheHand.Net.Bluetooth.ServiceRecordParser.LazyUrlCreation">ServiceRecordParser.LazyUrlCreation</see>
is set. If created locally it can be those types or also
<see cref="T:System.Uri"/> .
</para>
<para>This method will try to convert from those formats to <see cref="T:System.Uri"/>.
If the URL is invalid e.g. has bad characters or is missing the scheme
part etc then an error will occur. One can instead access the
element's <see cref="P:InTheHand.Net.Bluetooth.ServiceElement.Value"/>
property and expect one of the three types. When created by the
parser it will be of type <see cref="T:System.String"/> unless
<see cref="P:InTheHand.Net.Bluetooth.ServiceRecordParser.LazyUrlCreation"/>
is set.
</para>
</remarks>
-
<exception cref="T:System.InvalidOperationException">
The service element is not of type
<c>ElementType</c>.<see cref="F:InTheHand.Net.Bluetooth.ElementType.Url"/>.
</exception>
</member>
<member name="M:InTheHand.Net.Bluetooth.ServiceElement.GetValueAsUuid">
<summary>
Gets the value as a <see cref="T:System.Guid"/>.
</summary>
-
<returns>The UUID value as a <see cref="T:System.Guid"/>.
</returns>
-
<exception cref="T:System.InvalidOperationException">
The service element is not of type
<c>ElementType</c>.<see cref="F:InTheHand.Net.Bluetooth.ElementType.Uuid128"/>.
</exception>
</member>
<member name="M:InTheHand.Net.Bluetooth.ServiceElement.GetValueAsString(System.Text.Encoding)">
<summary>
Get the value of the <see cref="F:InTheHand.Net.Bluetooth.ElementTypeDescriptor.TextString"/>,
where it is encoded using the given encoding form.
</summary>
-
<param name="encoding">The <see cref="T:System.Text.Encoding"/>
object to be used to decode the string value
if it has been read as a raw byte array.
</param>
-
<returns>
A <see cref="T:System.String"/> holding the value of the
<see cref="F:InTheHand.Net.Bluetooth.ElementTypeDescriptor.TextString"/>
from the service element.
</returns>
-
<exception cref="T:System.InvalidOperationException">
The service element is not of type
<see cref="F:InTheHand.Net.Bluetooth.ElementTypeDescriptor.TextString"/>.
</exception>
</member>
<member name="M:InTheHand.Net.Bluetooth.ServiceElement.GetValueAsString(InTheHand.Net.Bluetooth.LanguageBaseItem)">
<summary>
Get the value of the <see cref="F:InTheHand.Net.Bluetooth.ElementTypeDescriptor.TextString"/>,
when it is encoded as specified by the given IETF Charset identifer.
</summary>
-
<remarks>
Note that a strict decoding of the string is carried out
(except on the NETCF where it is not supported).
Thus if the value is not in the specified encoding, or has been
encoded incorrectly, then an error will occur.
</remarks>
-
<returns>
A <see cref="T:System.String"/> holding the value of the
<see cref="F:InTheHand.Net.Bluetooth.ElementTypeDescriptor.TextString"/>
from the service element.
</returns>
-
<exception cref="T:System.InvalidOperationException">
The service element is not of type
<see cref="F:InTheHand.Net.Bluetooth.ElementTypeDescriptor.TextString"/>.
</exception>
<exception cref="T:System.Text.DecoderFallbackException">
If the value in the service element is not a valid string in the given encoding.
</exception>
</member>
<member name="M:InTheHand.Net.Bluetooth.ServiceElement.GetValueAsStringUtf8">
<summary>
Get the value of the <see cref="F:InTheHand.Net.Bluetooth.ElementTypeDescriptor.TextString"/>,
when it is encoded as UTF-8.
</summary>
-
<remarks>
Note: a strict decoding is used.
Thus if the value is not in UTF-8 encoding or has been
encoded incorrectly an error will occur.
</remarks>
-
<returns>
A <see cref="T:System.String"/> holding the value of the
<see cref="F:InTheHand.Net.Bluetooth.ElementTypeDescriptor.TextString"/>
from the service element.
</returns>
-
<exception cref="T:System.Text.DecoderFallbackException">
If the value in the service element is not a valid string in the given encoding.
On NETCF, an <see cref="T:System.ArgumentException"/> is thrown; not that
<see cref="T:System.ArgumentException"/> is the base class of the
<see cref="T:System.Text.DecoderFallbackException"/> exception.
</exception>
<exception cref="T:System.InvalidOperationException">
The service element is not of type
<see cref="F:InTheHand.Net.Bluetooth.ElementTypeDescriptor.TextString"/>.
</exception>
</member>
<member name="F:InTheHand.Net.Bluetooth.ServiceElement.ErrorMsgNotUuidType">
<exclude/>
</member>
<member name="F:InTheHand.Net.Bluetooth.ServiceElement.ErrorMsgNotTextStringType">
<exclude/>
</member>
<member name="F:InTheHand.Net.Bluetooth.ServiceElement.ErrorMsgNotUrlType">
<exclude/>
</member>
<member name="F:InTheHand.Net.Bluetooth.ServiceElement.ErrorMsgNotSeqAltType">
<exclude/>
</member>
<member name="F:InTheHand.Net.Bluetooth.ServiceElement.ErrorMsgSeqAltTypeNeedElementArray">
<exclude/>
</member>
<member name="F:InTheHand.Net.Bluetooth.ServiceElement.ErrorMsgFmtCreateNumericalGivenNonNumber">
<exclude/>
</member>
<member name="F:InTheHand.Net.Bluetooth.ServiceElement.ErrorMsgListContainsNotElement">
<exclude/>
</member>
<member name="T:InTheHand.Net.Bluetooth.ServiceRecord">
<summary>
Holds an SDP service record.
</summary>
-
<remarks>
<para>A Service Record is the top-level container in the Service Discovery
protocol/database. It contains a list of Service Attributes each identified
by a numerical identifier (its <see cref="T:InTheHand.Net.Bluetooth.ServiceAttributeId"/>),
and with its data held in a <see cref="T:InTheHand.Net.Bluetooth.ServiceElement"/>.
<see cref="T:InTheHand.Net.Bluetooth.ServiceElement"/> has methods to access the
various types of data it contains.
</para>
<para>The content of the record for a particular service class is defined in the
profile&#x2019;s specification along with the IDs it uses. The IDs for the
common standard services have beed defined here, as e.g.
<see cref="T:InTheHand.Net.Bluetooth.AttributeIds.ObexAttributeId"/>,
<see cref="T:InTheHand.Net.Bluetooth.AttributeIds.BasicPrintingProfileAttributeId"/>,
etc. The Service Discovery profile itself defines IDs, some that can be used
in any record <see cref="T:InTheHand.Net.Bluetooth.AttributeIds.UniversalAttributeId"/>,
and others
<see cref="T:InTheHand.Net.Bluetooth.AttributeIds.ServiceDiscoveryServerAttributeId"/>,
and <see cref="T:InTheHand.Net.Bluetooth.AttributeIds.BrowseGroupDescriptorAttributeId"/>.
</para>
<para>Note that except for the attributes in the &#x201C;Universal&#x201D; category
the IDs are <i>not</i> unique, for instance the ID is 0x0200 for both
<see cref="F:InTheHand.Net.Bluetooth.AttributeIds.ServiceDiscoveryServerAttributeId.VersionNumberList"/>
and <see cref="F:InTheHand.Net.Bluetooth.AttributeIds.BrowseGroupDescriptorAttributeId.GroupId"/>
from <see cref="T:InTheHand.Net.Bluetooth.AttributeIds.ServiceDiscoveryServerAttributeId"/>
and <see cref="T:InTheHand.Net.Bluetooth.AttributeIds.BrowseGroupDescriptorAttributeId"/>
respectively.
</para>
<para><see cref="T:InTheHand.Net.Bluetooth.ServiceRecord"/> provides the normal
collection-type methods properties e.g.
<see cref="P:InTheHand.Net.Bluetooth.ServiceRecord.Count"/>,
<see cref="M:InTheHand.Net.Bluetooth.ServiceRecord.Contains(InTheHand.Net.Bluetooth.ServiceAttributeId)"/>,
<see cref="M:InTheHand.Net.Bluetooth.ServiceRecord.GetAttributeById(InTheHand.Net.Bluetooth.ServiceAttributeId)"/>,
<see cref="P:InTheHand.Net.Bluetooth.ServiceRecord.Item(System.Int32)"/>
and <see cref="M:InTheHand.Net.Bluetooth.ServiceRecord.GetEnumerator"/>. So, to
access a particular attribute&#x2019;s content get the
<see cref="T:InTheHand.Net.Bluetooth.ServiceAttribute"/> using one of those methods
and then read the data from the <see cref="T:InTheHand.Net.Bluetooth.ServiceElement"/>.
See the example below.
</para>
<para>&#xA0;
</para>
<para>The SDP specification defines the content of <c>TextString</c> element
type very loosely and they are thus very difficult to handle when reading
from a record.
The encoding of the string content is
not set in the specification, and thus implementors are free to use any
encoding they fancy, for instance ASCII, UTF-8,
UTF-16, Windows-1252, etc &#x2014; all of which have been seen in record
from real devices. It would have been much more sensible to mandate UTF-8
as the other part of the Bluetooth protocol suite do e.g. the PIN is always
stored as a UTF-8 encoded string.
</para>
<para>Not only that but some of the attributes defined in the SDP specification
can be included in more than one &#x2018;natural language&#x2019; version,
and the definition of the language and the string&#x2019;s encoding
is not included in the element, but is
instead defined in a separate element and the ID of the string attribute
modified. Yikes!
</para>
<para> This makes it near impossible to decode the bytes in
a string element at parse time and create the string object then. Therefore
the parser creates an element containing the raw bytes from the string which
hopefully the user will know how to decode, passing the required encoding
information to one of methods on the element i.e.
<see cref="M:InTheHand.Net.Bluetooth.ServiceElement.GetValueAsString(InTheHand.Net.Bluetooth.LanguageBaseItem)"/>,
which takes a multi-language-base item from the same record (see e.g.
<see cref="M:InTheHand.Net.Bluetooth.ServiceRecord.GetPrimaryLanguageBaseItem"/>),
<see cref="M:InTheHand.Net.Bluetooth.ServiceElement.GetValueAsString(System.Text.Encoding)"/>
which takes a .NET <see cref="T:System.Text.Encoding"/> object,
or <see cref="M:InTheHand.Net.Bluetooth.ServiceElement.GetValueAsStringUtf8"/>,
or <see cref="M:InTheHand.Net.Bluetooth.ServiceRecord.GetMultiLanguageStringAttributeById(InTheHand.Net.Bluetooth.ServiceAttributeId,InTheHand.Net.Bluetooth.LanguageBaseItem)"/>
on the record which again takes a multi-language-base item.
</para>
<para>&#xA0;
</para>
<para>A Service Record can be created from the source byte array by using the
<see cref="M:InTheHand.Net.Bluetooth.ServiceRecord.CreateServiceRecordFromBytes(System.Byte[])"/>
method or the
<see cref="M:InTheHand.Net.Bluetooth.ServiceRecordParser.Parse(System.Byte[],System.Int32,System.Int32)"/>
on <see cref="T:InTheHand.Net.Bluetooth.ServiceRecordParser"/>. A record
can also be created from a list of <see cref="T:InTheHand.Net.Bluetooth.ServiceAttribute"/>
passed to the constructor
<see cref="M:InTheHand.Net.Bluetooth.ServiceRecord.#ctor(System.Collections.Generic.IList{InTheHand.Net.Bluetooth.ServiceAttribute})"/>.
</para>
<para>&#xA0;
</para>
<para>From the SDP specification:
</para>
<list type="bullet">
<item><term>2.2 ServiceRecord </term><description>&#x201C;&#x2026;
a list of service attributes.&#x201D;</description></item>
<item><term>2.3 ServiceAttribute</term><description>&#x201C;&#x2026;
two components: an attribute id and an attribute value.&#x201D;</description></item>
<item><term>2.4 Attribute ID</term><description>&#x201C;&#x2026;
a 16-bit unsigned integer&#x201D;,
&#x201C;&#x2026;represented as a data element.&#x201D;</description></item>
<item><term>2.5 Attribute Value</term><description>&#x201C;&#x2026;
a variable length field whose meaning is determined by the attribute ID&#x2026;&#x201D;,
&#x201C;&#x2026;represented by a data element.&#x201D;</description></item>
<item><term>3.1 Data Element</term><description>&#x201C;&#x2026;
a typed data representation.
It consists of two fields: a header field and a data field.
The header field, in turn, is composed of two parts: a type descriptor and a size descriptor.
&#x201D;</description></item>
<item><term>3.2 Data Element Type Descriptor </term><description>&#x201C;&#x2026;
a 5-bit type descriptor.&#x201D;</description></item>
<item><term>3.3 Data Element Size Descriptor </term><description>&#x201C;&#x2026;
The data element size descriptor is represented as a
3-bit size index followed by 0, 8, 16, or 32 bits.&#x201D;</description></item>
</list>
</remarks>
-
<example>
<code lang="C#">
ServiceRecord record = ...
ServiceAttribute attr = record.GetAttributeById(UniversalAttributeId.ServiceRecordHandle);
ServiceElement element = attr.Value;
if(element.ElementType != ElementType.UInt32) {
throw new FooException("Invalid record content for ServiceRecordHandle");
}
UInt32 handle = (UInt32)element.Value;
</code>
or
<code lang="VB.NET">
Dim bppRecord As ServiceRecord = ...
Dim attr As ServiceAttribute = bppRecord.GetAttributeById(BasicPrintingProfileAttributeId.PrinterName)
Dim element As ServiceElement = attr.Value;
' Spec say it is in UTF-8
Dim printerName As String = element.GetValueAsStringUtf8()
</code>
</example>
</member>
<member name="M:InTheHand.Net.Bluetooth.ServiceRecord.#ctor">
<summary>
Initializes a new instance of the
<see cref="T:InTheHand.Net.Bluetooth.ServiceRecord"/> class
containing no <see cref="T:InTheHand.Net.Bluetooth.ServiceAttribute"/>s.
</summary>
</member>
<member name="M:InTheHand.Net.Bluetooth.ServiceRecord.#ctor(System.Collections.Generic.IList{InTheHand.Net.Bluetooth.ServiceAttribute})">
<overloads>
Initializes a new instance of the
<see cref="T:InTheHand.Net.Bluetooth.ServiceRecord"/> class.
</overloads>
----
<summary>
Initializes a new instance of the
<see cref="T:InTheHand.Net.Bluetooth.ServiceRecord"/> class
with the specified set of <see cref="T:InTheHand.Net.Bluetooth.ServiceAttribute"/>s.
</summary>
-
<param name="attributesList">The list of <see cref="T:InTheHand.Net.Bluetooth.ServiceAttribute"/>
to add to the record,
as an <see cref="T:System.Collections.Generic.IList`1"/>
of <see cref="T:InTheHand.Net.Bluetooth.ServiceAttribute"/>.
</param>
</member>
<member name="M:InTheHand.Net.Bluetooth.ServiceRecord.#ctor(InTheHand.Net.Bluetooth.ServiceAttribute[])">
<summary>
Initializes a new instance of the
<see cref="T:InTheHand.Net.Bluetooth.ServiceRecord"/> class
with the specified set of <see cref="T:InTheHand.Net.Bluetooth.ServiceAttribute"/>s.
</summary>
-
<param name="attributesList">The list of <see cref="T:InTheHand.Net.Bluetooth.ServiceAttribute"/>
to add to the record,
as an array of <see cref="T:InTheHand.Net.Bluetooth.ServiceAttribute"/>.
</param>
</member>
<member name="M:InTheHand.Net.Bluetooth.ServiceRecord.CreateServiceRecordFromBytes(System.Byte[])">
<summary>
Create a <see cref="T:InTheHand.Net.Bluetooth.ServiceRecord"/> by parsing
the given array of <see cref="T:System.Byte"/>.
</summary>
-
<remarks>This uses the <see cref="T:InTheHand.Net.Bluetooth.ServiceRecordParser"/>
with its default settings.
See <see cref="M:InTheHand.Net.Bluetooth.ServiceRecordParser.Parse(System.Byte[],System.Int32,System.Int32)"/>
for more information. In particular for the errors that can result, two
of which are listed here.
</remarks>
-
<param name="recordBytes">A byte array containing the encoded Service Record.
</param>
-
<returns>The new <see cref="T:InTheHand.Net.Bluetooth.ServiceRecord"/> parsed from the byte array.
</returns>
-
<exception cref="T:System.Net.ProtocolViolationException">
The record contains invalid content.
</exception>
<exception cref="T:System.NotImplementedException">
The record contains an element type not supported by the parser.
</exception>
-
<seealso cref="M:InTheHand.Net.Bluetooth.ServiceRecordParser.Parse(System.Byte[],System.Int32,System.Int32)"/>
</member>
<member name="P:InTheHand.Net.Bluetooth.ServiceRecord.Count">
<summary>
Gets the count of attributes in the record.
</summary>
</member>
<member name="P:InTheHand.Net.Bluetooth.ServiceRecord.Item(System.Int32)">
<summary>
Gets the attribute at the specified index.
</summary>
-
<param name="index">The zero-based index of the attribute to get.</param>
-
<returns>A <see cref="T:InTheHand.Net.Bluetooth.ServiceAttribute"/> holding
the attribute at the specified index.</returns>
-
<exception cref="T:System.Exception">
<para>index is less than 0.</para>
<para>-or-</para>
<para>index is equal to or greater than Count. </para>
</exception>
</member>
<member name="M:InTheHand.Net.Bluetooth.ServiceRecord.GetAttributeByIndex(System.Int32)">
<summary>
Gets the attribute at the specified index.
</summary>
-
<param name="index">The zero-based index of the attribute to get.</param>
-
<returns>A <see cref="T:InTheHand.Net.Bluetooth.ServiceAttribute"/> holding
the attribute at the specified index.
Is never <see langword="null"/>.
</returns>
-
<exception cref="T:System.ArgumentOutOfRangeException">
<para>index is less than 0.</para>
<para>-or-</para>
<para>index is equal to or greater than Count. </para>
</exception>
</member>
<member name="M:InTheHand.Net.Bluetooth.ServiceRecord.Contains(InTheHand.Net.Bluetooth.ServiceAttributeId)">
<overloads>
Determines whether a service attribute with the specified ID,
and optional natural language, is in the List.
</overloads>
-
<summary>
Determines whether a service attribute with the specified ID is in the List.
</summary>
-
<param name="id">The id of the service attribute to locate, as a
<see cref="T:InTheHand.Net.Bluetooth.ServiceAttributeId"/>.</param>
-
<returns>true if item is found in the record; otherwise, false. </returns>
</member>
<member name="M:InTheHand.Net.Bluetooth.ServiceRecord.GetAttributeById(InTheHand.Net.Bluetooth.ServiceAttributeId)">
<overloads>
Returns the attribute with the given ID.
</overloads>
-
<summary>
Returns the attribute with the given ID.
</summary>
-
<param name="id">The Attribute Id as a <see cref="T:InTheHand.Net.Bluetooth.ServiceAttributeId"/>.</param>
-
<returns>A <see cref="T:InTheHand.Net.Bluetooth.ServiceAttribute"/> holding
the attribute with the specified ID.
Is never <see langword="null"/>.
</returns>
-
<exception cref="T:System.Collections.Generic.KeyNotFoundException">
There is no attribute with the given Id in the record.
Throws <see cref="T:System.ArgumentException"/> in NETCFv1
</exception>
</member>
<member name="P:InTheHand.Net.Bluetooth.ServiceRecord.AttributeIds">
<summary>
Get a list of the numerical IDs of the Attributes in the record
as an <see cref="T:System.Collections.Generic.IList`1"/>
of <see cref="T:InTheHand.Net.Bluetooth.ServiceAttributeId"/>.
</summary>
-
<remarks>
This method will likely be only rarely used: instead
one would generally want either to read a specific attribute using
<see cref="M:InTheHand.Net.Bluetooth.ServiceRecord.GetAttributeById(InTheHand.Net.Bluetooth.ServiceAttributeId)"/>,
or read every attribute by using
<see cref="T:InTheHand.Net.Bluetooth.ServiceRecord"/>'s
<c>IEnumerable</c> ability e.g.
<code lang="VB.NET">
For Each curAttr As ServiceAttribute In record
If curAttr.Id = UniversalAttributeId.ProtocolDescriptorList Then
...
Next
</code>
<para>Note, for NETCFv1 this returns an instance of the non-Generic list
<see cref="T:System.Collections.IList"/>.
</para>
</remarks>
-
(Provide a pure example since NDocs makes big mess of displaying Generic types).
<example>
In C#:
<code lang="C#">
IList&lt;ServiceAttributeId&gt; ids = record.GetAttributeIds();
</code>
In VB.NET:
<code lang="VB.NET">
Dim ids As IList(Of ServiceAttributeId) = record.GetAttributeIds()
</code>
Or without Generics in .NET 1.1 (NETCFv1) in VB.NET:
<code lang="VB.NET">
Dim ids As IList = record.GetAttributeIds()
</code>
</example>
</member>
<member name="M:InTheHand.Net.Bluetooth.ServiceRecord.Contains(InTheHand.Net.Bluetooth.ServiceAttributeId,InTheHand.Net.Bluetooth.LanguageBaseItem)">
<summary>
Determines whether a TextString service attribute with the specified ID
and natural language
is in the List.
</summary>
-
<param name="id">The id of the service attribute to locate, as a
<see cref="T:InTheHand.Net.Bluetooth.ServiceAttributeId"/>.</param>
<param name="language">
Which multi-language version of the string attribute to locate.
</param>
-
<returns>true if item is found in the record; otherwise, false. </returns>
</member>
<member name="M:InTheHand.Net.Bluetooth.ServiceRecord.GetAttributeById(InTheHand.Net.Bluetooth.ServiceAttributeId,InTheHand.Net.Bluetooth.LanguageBaseItem)">
<summary>
Returns the attribute with the given ID and natural language.
</summary>
-
<param name="id">The id of the service attribute to locate, as a
<see cref="T:InTheHand.Net.Bluetooth.ServiceAttributeId"/>.</param>
<param name="language">
Which multi-language version of the string attribute to locate.
</param>
-
<returns>A <see cref="T:InTheHand.Net.Bluetooth.ServiceAttribute"/> holding
the attribute with the specified ID and language.
Is never <see langword="null"/>.
</returns>
-
<exception cref="T:System.Collections.Generic.KeyNotFoundException">
There is no attribute with the given Id with the given language base in the record.
</exception>
</member>
<member name="M:InTheHand.Net.Bluetooth.ServiceRecord.CreateLanguageBasedAttributeId(InTheHand.Net.Bluetooth.ServiceAttributeId,InTheHand.Net.Bluetooth.ServiceAttributeId)">
<summary>
Create the attribute id resulting for adding the language base attribute id.
</summary>
-
<returns>The result <see cref="T:InTheHand.Net.Bluetooth.ServiceAttributeId"/>.</returns>
-
<exception cref="T:System.OverflowException">
<paramref name="baseId"/> added to the <paramref name="id"/>
would create an id that cannot be represented as an Attribute Id.
</exception>
</member>
<member name="M:InTheHand.Net.Bluetooth.ServiceRecord.GetMultiLanguageStringAttributeById(InTheHand.Net.Bluetooth.ServiceAttributeId,InTheHand.Net.Bluetooth.LanguageBaseItem)">
<summary>
Gets a <see cref="T:System.String"/> containing the value of the
<see cref="F:InTheHand.Net.Bluetooth.ElementTypeDescriptor.TextString"/>
service attribute with the specified ID,
using the specified natural language.
</summary>
-
<remarks>
<para>As noted in the documentation on this class, string are defined in
an odd manner, and the multi-language strings defined in the base SDP
specification are defined in a very very odd manner. The natural language and the
string&#x2019;s encoding are not included in the element, but instead are
defined in a separate element, and the ID of the string attribute is
modified. This pair is present for each natural language.
</para>
<para>This method is provided to simplify accessing those strings, given
the Language attribute it should use it to find and decode the string.
If the primary Language attribute is to be used, then use the
<see cref="M:InTheHand.Net.Bluetooth.ServiceRecord.GetPrimaryMultiLanguageStringAttributeById(InTheHand.Net.Bluetooth.ServiceAttributeId)"/>
method that takes only the id parameter.
</para>
</remarks>
-
<param name="id">The id of the service attribute to locate, as a
<see cref="T:InTheHand.Net.Bluetooth.ServiceAttributeId"/>.</param>
<param name="language">
Which multi-language version of the string attribute to locate.
</param>
-
<exception cref="T:System.Collections.Generic.KeyNotFoundException">
There is no attribute with the given Id in the record.
Throws <see cref="T:System.ArgumentException"/> in NETCFv1
</exception>
<exception cref="T:System.InvalidOperationException">
The service element is not of type
<see cref="F:InTheHand.Net.Bluetooth.ElementTypeDescriptor.TextString"/>.
</exception>
<exception cref="T:System.Text.DecoderFallbackException">
If the value in the service element is not a valid string in the encoding
specified in the given <see cref="T:InTheHand.Net.Bluetooth.LanguageBaseItem"/>.
</exception>
-
<example>
C#:
<code lang="C#">
LanguageBaseItem primaryLang = record.GetPrimaryLanguageBaseItem();
if (primaryLang == null) {
Console.WriteLine("Primary multi-language not present, would have to guess the string's encoding.");
return;
}
try {
String sn = record.GetMultiLanguageStringAttributeById(UniversalAttributeId.ServiceName, primaryLang);
Console.WriteLine("ServiceName: " + sn);
} catch (KeyNotFoundException) {
Console.WriteLine("The record has no ServiceName Attribute.");
}
</code>
</example>
</member>
<member name="M:InTheHand.Net.Bluetooth.ServiceRecord.GetPrimaryMultiLanguageStringAttributeById(InTheHand.Net.Bluetooth.ServiceAttributeId)">
<summary>
Gets a <see cref="T:System.String"/> containing the value of the
<see cref="F:InTheHand.Net.Bluetooth.ElementTypeDescriptor.TextString"/>
service attribute with the specified ID,
using the primary natural language.
</summary>
-
<remarks>
<para>As noted in the documentation on this class, string are defined in
an odd manner, and the multi-language strings defined in the base SDP
specification are defined in a very very odd manner. The natural language and the
string&#x2019;s encoding are not included in the element, but instead are
defined in a separate element, and the ID of the string attribute is
modified. This pair is present for each natural language.
</para>
<para>This method is provided to simplify accessing those strings, it will
find the primary Language attribute and use it to find and decode the string.
And if there is no primary Language attribute, which is the case in many
of the records one sees on mobile phones, it will attempt the operation
assuming the string is encoded in UTF-8 (or ASCII).
</para>
</remarks>
-
<param name="id">The id of the service attribute to locate, as a
<see cref="T:InTheHand.Net.Bluetooth.ServiceAttributeId"/>.</param>
-
<exception cref="T:System.Collections.Generic.KeyNotFoundException">
There is no attribute with the given Id in the record.
Throws <see cref="T:System.ArgumentException"/> in NETCFv1
</exception>
<exception cref="T:System.InvalidOperationException">
The service element is not of type
<see cref="F:InTheHand.Net.Bluetooth.ElementTypeDescriptor.TextString"/>.
</exception>
<exception cref="T:System.Text.DecoderFallbackException">
If the value in the service element is not a valid string in the encoding
specified in the given <see cref="T:InTheHand.Net.Bluetooth.LanguageBaseItem"/>.
</exception>
-
<example>
C#:
<code lang="C#">
try {
String sn = record.GetMultiLanguageStringAttributeById(UniversalAttributeId.ServiceName);
Console.WriteLine("ServiceName: " + sn);
} catch (KeyNotFoundException) {
Console.WriteLine("The record has no ServiceName Attribute.");
}
</code>
</example>
</member>
<member name="M:InTheHand.Net.Bluetooth.ServiceRecord.GetLanguageBaseList">
<summary>
Gets the list of LanguageBaseAttributeId items in the service record.
</summary>
-
<remarks>
See also <see cref="M:InTheHand.Net.Bluetooth.ServiceRecord.GetPrimaryLanguageBaseItem"/>.
</remarks>
-
<returns>
An array of <see cref="T:InTheHand.Net.Bluetooth.LanguageBaseItem"/>.
An array of length zero is returned if the service record contains no such attribute.
</returns>
-
<seealso cref="M:InTheHand.Net.Bluetooth.ServiceRecord.GetPrimaryLanguageBaseItem"/>
</member>
<member name="M:InTheHand.Net.Bluetooth.ServiceRecord.GetPrimaryLanguageBaseItem">
<summary>
Gets the primary LanguageBaseAttributeId item in the service record.
</summary>
-
<remarks>
For instance, can be used with methods
<see cref="M:InTheHand.Net.Bluetooth.ServiceRecord.GetMultiLanguageStringAttributeById(InTheHand.Net.Bluetooth.ServiceAttributeId,InTheHand.Net.Bluetooth.LanguageBaseItem)"/>,
and <see cref="M:InTheHand.Net.Bluetooth.ServiceRecord.GetAttributeById(InTheHand.Net.Bluetooth.ServiceAttributeId,InTheHand.Net.Bluetooth.LanguageBaseItem)"/>
etc. See example code in the first.
</remarks>
-
<returns>
A <see cref="T:InTheHand.Net.Bluetooth.LanguageBaseItem"/>, or null
if the service record contains no such attribute, or
no primary language item (one with Base Id 0x0100) is included.
</returns>
-
<seealso cref="M:InTheHand.Net.Bluetooth.ServiceRecord.GetLanguageBaseList"/>
</member>
<member name="M:InTheHand.Net.Bluetooth.ServiceRecord.GetEnumerator">
<summary>
Gets an enumerator that can be used to navigate through the record's
list of <see cref="T:InTheHand.Net.Bluetooth.ServiceAttribute"/>s.
</summary>
-
<returns>An <see cref="T:System.Collections.Generic.IEnumerator`1"/>
of type <see cref="T:InTheHand.Net.Bluetooth.ServiceAttribute"/>.
</returns>
-
<example>
In C#:
<code lang="C#">
foreach (ServiceAttribute curAttr in record) {
if (curAttr.Id == UniversalAttributeId.ProtocolDescriptorList) {
...
}
</code>
In Visual Basic:
<code lang="VB.NET">
For Each curAttr As ServiceAttribute In record
If curAttr.Id = UniversalAttributeId.ProtocolDescriptorList Then
...
Next
</code>
</example>
</member>
<member name="M:InTheHand.Net.Bluetooth.ServiceRecord.System#Collections#IEnumerable#GetEnumerator">
<summary>
Gets an enumerator that can be used to navigate through the record's
list of <see cref="T:InTheHand.Net.Bluetooth.ServiceAttribute"/>s.
</summary>
</member>
<member name="P:InTheHand.Net.Bluetooth.ServiceRecord.SourceBytes">
<summary>
Get the raw byte array from which the record was parsed.
</summary>
-
<remarks>
<para>A <see cref="T:InTheHand.Net.Bluetooth.ServiceRecord"/> can be created either by manually building new
<see cref="T:InTheHand.Net.Bluetooth.ServiceAttribute"/>s holding new
<see cref="T:InTheHand.Net.Bluetooth.ServiceElement"/>s, or it can be created
by <see cref="T:InTheHand.Net.Bluetooth.ServiceRecordParser"/> parsing an array
of bytes read from another machine by e.g.
<see cref="M:InTheHand.Net.Sockets.BluetoothDeviceInfo.GetServiceRecords(System.Guid)"/>.
In that case this method returns that source byte array.
</para>
<para>To creates a Service Record byte array from the contained
<see cref="T:InTheHand.Net.Bluetooth.ServiceAttribute"/>s use
<see cref="M:InTheHand.Net.Bluetooth.ServiceRecord.ToByteArray"/> or <see cref="T:InTheHand.Net.Bluetooth.ServiceRecordCreator"/>.
</para>
</remarks>
-
<value>
An array of <see cref="T:System.Byte"/>, or <see langword="null"/> if
the record was not created by parsing a raw record.
</value>
-
<seealso cref="M:InTheHand.Net.Bluetooth.ServiceRecord.ToByteArray"/>
</member>
<member name="M:InTheHand.Net.Bluetooth.ServiceRecord.ToByteArray">
<summary>
Return the byte array representing the service record.
</summary>
-
<remarks>The byte array content is created dynamically from the
<see cref="T:InTheHand.Net.Bluetooth.ServiceRecord"/> instance using
the <see cref="T:InTheHand.Net.Bluetooth.ServiceRecordCreator"/> class.
</remarks>
-
<returns>The result as an array of <see cref="T:System.Byte"/>.
</returns>
-
<seealso cref="P:InTheHand.Net.Bluetooth.ServiceRecord.SourceBytes"/>
</member>
<member name="F:InTheHand.Net.Bluetooth.ServiceRecord.ErrorMsgNotSeq">
<exclude/>
</member>
<member name="F:InTheHand.Net.Bluetooth.ServiceRecord.ErrorMsgNoAttributeWithId">
<exclude/>
</member>
<member name="F:InTheHand.Net.Bluetooth.ServiceRecord.ErrorMsgListContainsNotAttribute">
<exclude/>
</member>
<member name="T:InTheHand.Net.Bluetooth.ServiceRecordBuilder">
<summary>
Provides a simple way to build a <see cref="T:InTheHand.Net.Bluetooth.ServiceRecord"/>,
including ServiceClassIds and ServiceNames attributes etc.
</summary>
-
<remarks>
<para>The service&#x2019;s Class Id can be set with the
<see cref="M:InTheHand.Net.Bluetooth.ServiceRecordBuilder.AddServiceClass(System.Guid)"/>/<see cref="M:InTheHand.Net.Bluetooth.ServiceRecordBuilder.AddServiceClass(System.UInt16)"/>/etc
methods, the protocol stack set with the <see cref="P:InTheHand.Net.Bluetooth.ServiceRecordBuilder.ProtocolType"/>
property (default RFCOMM), and the Service Name set with the
<see cref="P:InTheHand.Net.Bluetooth.ServiceRecordBuilder.ServiceName"/>
property. Other properties and methods exist for controlling the more advanced
attributes.
</para>
<para>Adding the standard text-string attributes (ServiceName etc) is normally quite
difficult due to the very baroque manner of specifying these strings&#x2019; character
encoding and natural language. The builder handles all the complexity internally;
the strings are written in UTF-8 encoding and marked as 'English' language.
</para>
</remarks>
-
<example>
<code>
ServiceRecordBuilder bldr = new ServiceRecordBuilder();
bldr.AddServiceClass(BluetoothService.SerialPort);
bldr.ServiceName = "Alan's SPP service";
//
ServiceRecord rcd = bldr.ServiceRecord;
</code>
<code>
ServiceRecordBuilder bldr = new ServiceRecordBuilder();
bldr.ProtocolType = BluetoothProtocolDescriptorType.GeneralObex;
bldr.AddServiceClass(BluetoothService.ObexFileTransfer);
bldr.ServiceName = "Alan's FTP service";
//
ServiceRecord rcd = bldr.ServiceRecord;
</code>
</example>
</member>
<member name="M:InTheHand.Net.Bluetooth.ServiceRecordBuilder.#ctor">
<summary>
Create a new instance of the <see cref="T:InTheHand.Net.Bluetooth.ServiceRecordBuilder"/> class.
</summary>
</member>
<member name="P:InTheHand.Net.Bluetooth.ServiceRecordBuilder.ServiceRecord">
<summary>
Gets the <see cref="T:InTheHand.Net.Bluetooth.ServiceRecord"/> instance
constructed by the specified <see cref="T:InTheHand.Net.Bluetooth.ServiceRecordBuilder"/> instance.
</summary>
-
<value>
A <see cref="T:InTheHand.Net.Bluetooth.ServiceRecord"/> that contains
the URI constructed by the <see cref="T:InTheHand.Net.Bluetooth.ServiceRecordBuilder"/> .
</value>
-
<exception cref="T:System.InvalidOperationException">The <see cref="T:InTheHand.Net.Bluetooth.ServiceRecord"/>
created by the <see cref="T:InTheHand.Net.Bluetooth.ServiceRecordBuilder"/> properties is invalid.
For instance, if duplicates attributes are disallowed but duplicates are
present.
</exception>
</member>
<member name="M:InTheHand.Net.Bluetooth.ServiceRecordBuilder.ReportIfDuplicates(System.Collections.Generic.List{InTheHand.Net.Bluetooth.ServiceAttribute},System.Boolean)">
<param name="list">The list to check for duplicates.
</param>
<param name="storedList"><c>true</c> if checking a previously stored list
of attributes, and <c>false</c> if checking a immediate addition of an
attribute. Thus throws <c>InvalidOperationException</c> and
<c>ArgumentException</c> respectively.
</param>
</member>
<member name="P:InTheHand.Net.Bluetooth.ServiceRecordBuilder.ServiceName">
<summary>
Get or set a value for the <see cref="F:InTheHand.Net.Bluetooth.AttributeIds.UniversalAttributeId.ServiceName"/>
attribute.
</summary>
-
<remarks><para>When present, a corresponding <see cref="F:InTheHand.Net.Bluetooth.AttributeIds.UniversalAttributeId.LanguageBaseAttributeIdList"/>
attribute will be added too.
</para>
</remarks>
</member>
<member name="P:InTheHand.Net.Bluetooth.ServiceRecordBuilder.ProviderName">
<summary>
Get or set a value for the <see cref="F:InTheHand.Net.Bluetooth.AttributeIds.UniversalAttributeId.ProviderName"/>
attribute.
</summary>
-
<remarks><para>When present, a corresponding <see cref="F:InTheHand.Net.Bluetooth.AttributeIds.UniversalAttributeId.LanguageBaseAttributeIdList"/>
attribute will be added too.
</para>
</remarks>
</member>
<member name="P:InTheHand.Net.Bluetooth.ServiceRecordBuilder.ServiceDescription">
<summary>
Get or set a value for the <see cref="F:InTheHand.Net.Bluetooth.AttributeIds.UniversalAttributeId.ServiceDescription"/>
attribute.
</summary>
-
<remarks><para>When present, a corresponding <see cref="F:InTheHand.Net.Bluetooth.AttributeIds.UniversalAttributeId.LanguageBaseAttributeIdList"/>
attribute will be added too.
</para>
</remarks>
</member>
<member name="P:InTheHand.Net.Bluetooth.ServiceRecordBuilder.ProtocolType">
<summary>
Get or set which type of element will be added for the <see cref="F:InTheHand.Net.Bluetooth.AttributeIds.UniversalAttributeId.ProtocolDescriptorList"/>
attribute.
</summary>
-
<value>An instance of the <see cref="T:InTheHand.Net.Bluetooth.BluetoothProtocolDescriptorType"/>
enumeration.
</value>
-
<remarks><para>Supported type are the following:
</para>
<list type="bullet">
<item><term>None</term>
<description>No PDL attribute will be added.</description>
</item>
<item><term>Rfcomm</term>
<description>A standard RFCOMM element will be added.</description>
</item>
<item><term>Goep</term>
<description>A standard GOEP (OBEX) element will be added.</description>
</item>
<item><term>L2Cap</term>
<description>A standard L2CAP element will be added.</description>
</item>
</list>
<para>The default is <see cref="F:InTheHand.Net.Bluetooth.BluetoothProtocolDescriptorType.Rfcomm"/>.
</para>
</remarks>
</member>
<member name="M:InTheHand.Net.Bluetooth.ServiceRecordBuilder.AddServiceClass(System.Guid)">
<summary>
Add a Service Class Id.
</summary>
-
<remarks>
<para>Multiple class ids can be added, and they will be written to the
<see cref="F:InTheHand.Net.Bluetooth.AttributeIds.UniversalAttributeId.ServiceClassIdList"/>
attribute in the order in which they were set.
</para>
</remarks>
-
<param name="uuid128">A <see cref="T:System.Guid"/> containing a
UUID for the advertised service.
</param>
</member>
<member name="M:InTheHand.Net.Bluetooth.ServiceRecordBuilder.AddServiceClass(System.UInt16)">
<summary>
Add a Service Class Id.
</summary>
-
<remarks>
<para>Multiple class ids can be added, and they will be written to the
<see cref="F:InTheHand.Net.Bluetooth.AttributeIds.UniversalAttributeId.ServiceClassIdList"/>
attribute in the order in which they were set.
</para>
</remarks>
-
<param name="uuid16">A <see cref="T:System.UInt16"/> containing a short-form
UUID for the advertised service.
</param>
</member>
<member name="M:InTheHand.Net.Bluetooth.ServiceRecordBuilder.AddServiceClass(System.UInt32)">
<summary>
Add a Service Class Id.
</summary>
-
<remarks>
<para>Multiple class ids can be added, and they will be written to the
<see cref="F:InTheHand.Net.Bluetooth.AttributeIds.UniversalAttributeId.ServiceClassIdList"/>
attribute in the order in which they were set.
</para>
</remarks>
-
<param name="uuid32">A <see cref="T:System.UInt32"/> containing a short-form
UUID for the advertised service.
</param>
</member>
<member name="M:InTheHand.Net.Bluetooth.ServiceRecordBuilder.AddServiceClass(System.Int32)">
<summary>
Add a Service Class Id.
</summary>
-
<remarks>
<para>Multiple class ids can be added, and they will be written to the
<see cref="F:InTheHand.Net.Bluetooth.AttributeIds.UniversalAttributeId.ServiceClassIdList"/>
attribute in the order in which they were set.
</para>
</remarks>
-
<param name="uuid16or32">A <see cref="T:System.Int32"/> containing a short-form
UUID for the advertised service.
</param>
</member>
<member name="M:InTheHand.Net.Bluetooth.ServiceRecordBuilder.AddBluetoothProfileDescriptor(System.Guid,System.Byte,System.Byte)">
<summary>
Add a <see cref="F:InTheHand.Net.Bluetooth.AttributeIds.UniversalAttributeId.BluetoothProfileDescriptorList"/>
element.
</summary>
-
<param name="classId">The Service Class Id of the Bluetooth profile,
as a <see cref="T:System.Guid"/>
</param>
<param name="majorVersion">The major version number, as a <see cref="T:System.Byte"/>.
</param>
<param name="minorVersion">The minor version number, as a <see cref="T:System.Byte"/>.
</param>
</member>
<member name="M:InTheHand.Net.Bluetooth.ServiceRecordBuilder.AddCustomAttributes(System.Collections.Generic.IEnumerable{InTheHand.Net.Bluetooth.ServiceAttribute})">
<summary>
Add a set of custom attribute.
</summary>
-
<param name="serviceAttributes">A set of attributes as an
<see cref="T:System.Collections.Generic.IEnumerable`1"/> returning
<see cref="T:InTheHand.Net.Bluetooth.ServiceAttribute"/> instances.
</param>
</member>
<member name="M:InTheHand.Net.Bluetooth.ServiceRecordBuilder.AddCustomAttributes(System.Collections.IEnumerable)">
<summary>
Add a set of custom attribute.
</summary>
-
<param name="serviceAttributes">A set of attributes as an
<see cref="T:System.Collections.IEnumerable"/> returning
<see cref="T:InTheHand.Net.Bluetooth.ServiceAttribute"/> instances.
</param>
</member>
<member name="M:InTheHand.Net.Bluetooth.ServiceRecordBuilder.AddCustomAttributes(InTheHand.Net.Bluetooth.ServiceAttribute[])">
<summary>
Add a set of custom attribute.
</summary>
-
<param name="serviceAttributes">A set of attributes as an array of
<see cref="T:InTheHand.Net.Bluetooth.ServiceAttribute"/>.
</param>
</member>
<member name="M:InTheHand.Net.Bluetooth.ServiceRecordBuilder.AddCustomAttribute(InTheHand.Net.Bluetooth.ServiceAttribute)">
<overloads>
Add a custom attribute.
</overloads>
-
<summary>
Add a custom attribute from a given <see cref="T:InTheHand.Net.Bluetooth.ServiceAttribute"/>
</summary>
-
<param name="serviceAttribute">An attribute as a
<see cref="T:InTheHand.Net.Bluetooth.ServiceAttribute"/> instance.
</param>
</member>
<member name="M:InTheHand.Net.Bluetooth.ServiceRecordBuilder.AddCustomAttribute(InTheHand.Net.Bluetooth.ServiceAttributeId,InTheHand.Net.Bluetooth.ElementType,System.Object)">
<summary>
Add a custom attribute of simple type.
</summary>
-
<remarks>
<para>If the <paramref name="elementType"/> is a numerical type
then this is equivalent to using
<see cref="M:InTheHand.Net.Bluetooth.ServiceElement.CreateNumericalServiceElement(InTheHand.Net.Bluetooth.ElementType,System.Object)"/>
otherwise the value is used directly in creating the
<see cref="T:InTheHand.Net.Bluetooth.ServiceElement"/>.
</para>
</remarks>
-
<param name="id">The Attribute Id as a <see cref="T:InTheHand.Net.Bluetooth.ServiceAttributeId"/>.</param>
<param name="elementType">The type of the element as an <see cref="T:InTheHand.Net.Bluetooth.ElementType"/>.</param>
<param name="value">The value for the new element.</param>
</member>
<member name="M:InTheHand.Net.Bluetooth.ServiceRecordBuilder.AddCustomAttribute(System.UInt16,InTheHand.Net.Bluetooth.ElementType,System.Object)">
<summary>
Add a custom attribute of simple type.
</summary>
-
<remarks>
<para>If the <paramref name="elementType"/> is a numerical type
then this is equivalent to using
<see cref="M:InTheHand.Net.Bluetooth.ServiceElement.CreateNumericalServiceElement(InTheHand.Net.Bluetooth.ElementType,System.Object)"/>
otherwise the value is used directly in creating the
<see cref="T:InTheHand.Net.Bluetooth.ServiceElement"/>.
</para>
</remarks>
-
<param name="id">The Attribute Id as a <see cref="T:System.UInt16"/>.</param>
<param name="elementType">The type of the element as an <see cref="T:InTheHand.Net.Bluetooth.ElementType"/>.</param>
<param name="value">The value for the new element.</param>
</member>
<member name="M:InTheHand.Net.Bluetooth.ServiceRecordBuilder.FromJsr82ServerUri(System.String)">
<summary>
Converts a Java JSR 82 Bluetooth server URL into a
<see cref="T:InTheHand.Net.Bluetooth.ServiceRecordBuilder"/> instance.
</summary>
-
<remarks>
<note type="caution">The <c>authenticate</c> and <c>encrypt</c> and any
related parameters are completely disregarded. When using with
<see cref="T:InTheHand.Net.Sockets.BluetoothListener"/> you must take
care to set the required security requirements on it directly.
</note>
This method is intended to read the Service Record (SDP) related items only;
in particular the Service Class ID UUID and Service Name parameters.
It supports only the <c>btspp</c> and <c>btObex</c> schemes and only for
server-side use only. For instance
<code lang="none">btspp://localhost:3B9FA89520078C303355AAA694238F08;name=FooBar</code>
and
<code lang="none">btgoep://localhost:3B9FA89520078C303355AAA694238F08</code>
There is no suppport for e.g.
<code lang="none">btl2cap://localhost:3B9FA89520078C303355AAA694238F08;name=Aserv</code>
as the library supports only RFCOMM connections currently.
</remarks>
-
<param name="url">A server-side JSR 82 URL in one of the supported forms.
</param>
-
<returns>A <see cref="T:InTheHand.Net.Bluetooth.ServiceRecordBuilder"/>
initialised with the supported components of the supplied JSR 82 URL.
</returns>
</member>
<member name="T:InTheHand.Net.Bluetooth.ServiceRecordCreator">
<summary>
Creates a Service Record byte array from the given
<see cref="T:InTheHand.Net.Bluetooth.ServiceRecord"/> object.
</summary>
</member>
<member name="M:InTheHand.Net.Bluetooth.ServiceRecordCreator.CreateServiceRecord(InTheHand.Net.Bluetooth.ServiceRecord,System.Byte[])">
<overloads>
Creates a Service Record byte array from the given
<see cref="T:InTheHand.Net.Bluetooth.ServiceRecord"/> object.
</overloads>
-
<summary>
Creates a Service Record byte array from the given
<see cref="T:InTheHand.Net.Bluetooth.ServiceRecord"/> object,
into the specified byte array.
</summary>
-
<remarks>
See the other overload <see cref="M:InTheHand.Net.Bluetooth.ServiceRecordCreator.CreateServiceRecord(InTheHand.Net.Bluetooth.ServiceRecord)"/>
</remarks>
-
<param name="record">An instance of <see cref="T:InTheHand.Net.Bluetooth.ServiceRecord"/>
containing the record to be created.
</param>
<param name="buffer">An array of <see cref="T:System.Byte"/> for the record
to be written to.
</param>
-
<exception cref="T:System.ArgumentOutOfRangeException">
The record bytes are longer that the supplied byte array buffer.
</exception>
-
<returns>The length of the record in the array of <see cref="T:System.Byte"/>.
</returns>
</member>
<member name="M:InTheHand.Net.Bluetooth.ServiceRecordCreator.WriteAttribute(InTheHand.Net.Bluetooth.ServiceAttribute,System.Byte[],System.Int32@)">
<exclude/>
</member>
<member name="M:InTheHand.Net.Bluetooth.ServiceRecordCreator.CreateServiceRecord(InTheHand.Net.Bluetooth.ServiceRecord)">
<summary>
Creates a Service Record byte array from the given
<see cref="T:InTheHand.Net.Bluetooth.ServiceRecord"/> object.
</summary>
-
<remarks>
<para>The only oddity (as with parsing) is with the <c>TextString</c>
type. The <see cref="T:InTheHand.Net.Bluetooth.ServiceElement"/> can
either hold the string already encoded to its array of bytes or an
<see cref="T:System.String"/>. In the latter case we will always simply
encode the string to an array of bytes using encoding
<see cref="P:System.Text.Encoding.UTF8"/>.
</para>
<para>Currently any UUIDs in the record are written out in the form supplied,
we should probably write a &#x2018;short-form&#x2019; equivalent if its
a &#x2018;Bluetooth-based&#x2019; UUID e.g. <c>Uuid128</c> as <c>Uuid16</c>.
</para>
</remarks>
-
<param name="record">An instance of <see cref="T:InTheHand.Net.Bluetooth.ServiceRecord"/>
containing the record to be created.
</param>
-
<returns>An array of <see cref="T:System.Byte"/> containing the resultant
record bytes. The length of the array is the length of the record bytes.
</returns>
</member>
<member name="M:InTheHand.Net.Bluetooth.ServiceRecordCreator.CreateAttrId(InTheHand.Net.Bluetooth.ServiceAttributeId,System.Byte[],System.Int32)">
<exclude/>
</member>
<member name="M:InTheHand.Net.Bluetooth.ServiceRecordCreator.CreateElement(InTheHand.Net.Bluetooth.ServiceElement,System.Byte[],System.Int32)">
<summary>
Create the element in the buffer starting at offset, and return its totalLength.
</summary>
<param name="element">The element to create.
</param>
<param name="buf">The byte array to write the encoded element to.
</param>
<param name="offset">The place to start writing in <paramref name="buf"/>.
</param>
<returns>The total length of the encoded element written to the buffer
</returns>
</member>
<member name="M:InTheHand.Net.Bluetooth.ServiceRecordCreator.WriteVariableLength(InTheHand.Net.Bluetooth.ServiceElement,System.Byte[],System.Byte[],System.Int32@,System.Int32@)">
<exclude/>
</member>
<member name="M:InTheHand.Net.Bluetooth.ServiceRecordCreator.WriteFixedLength(InTheHand.Net.Bluetooth.ServiceElement,System.Byte[],System.Byte[],System.Int32@,System.Int32@)">
<exclude/>
</member>
<member name="M:InTheHand.Net.Bluetooth.ServiceRecordCreator.MakeVariableLengthHeader(System.Byte[],System.Int32,InTheHand.Net.Bluetooth.ElementTypeDescriptor,InTheHand.Net.Bluetooth.ServiceRecordCreator.HeaderWriteState@)">
<exclude/>
</member>
<member name="M:InTheHand.Net.Bluetooth.ServiceRecordCreator.CompleteHeaderWrite(InTheHand.Net.Bluetooth.ServiceRecordCreator.HeaderWriteState,System.Byte[],System.Int32,System.Int32@)">
<exclude/>
</member>
<member name="T:InTheHand.Net.Bluetooth.ServiceRecordCreator.HeaderWriteState">
<exclude/>
</member>
<member name="F:InTheHand.Net.Bluetooth.ServiceRecordCreator.HeaderWriteState.HeaderOffset">
<exclude/>
</member>
<member name="F:InTheHand.Net.Bluetooth.ServiceRecordCreator.HeaderWriteState.Etd">
<exclude/>
</member>
<member name="F:InTheHand.Net.Bluetooth.ServiceRecordCreator.HeaderWriteState.SizeIndex">
<exclude/>
</member>
<member name="F:InTheHand.Net.Bluetooth.ServiceRecordCreator.HeaderWriteState.HeaderLength">
<exclude/>
</member>
<member name="F:InTheHand.Net.Bluetooth.ServiceRecordCreator.HeaderWriteState.widcommNeedsStoring">
<exclude/>
</member>
<member name="F:InTheHand.Net.Bluetooth.ServiceRecordCreator.ErrorMsgSupportOnlyLength255">
<exclude/>
</member>
<member name="T:InTheHand.Net.Bluetooth.ServiceRecordHelper">
<summary>
Some useful methods for working with a SDP <see cref="T:InTheHand.Net.Bluetooth.ServiceRecord"/>
including creating and accessing the <see cref="F:InTheHand.Net.Bluetooth.AttributeIds.UniversalAttributeId.ProtocolDescriptorList"/>
for an RFCOMM service.
</summary>
</member>
<member name="M:InTheHand.Net.Bluetooth.ServiceRecordHelper.GetRfcommChannelElement(InTheHand.Net.Bluetooth.ServiceRecord)">
<summary>
Reads the RFCOMM Channel Number element from the service record.
</summary>
-
<param name="record">The <see cref="T:InTheHand.Net.Bluetooth.ServiceRecord"/>
to search for the element.
</param>
-
<returns>The <see cref="T:InTheHand.Net.Bluetooth.ServiceElement"/>
holding the Channel Number.
or <see langword="null"/> if at the <see cref="F:InTheHand.Net.Bluetooth.AttributeIds.UniversalAttributeId.ProtocolDescriptorList"/>
attribute is missing or contains invalid elements.
</returns>
</member>
<member name="M:InTheHand.Net.Bluetooth.ServiceRecordHelper.GetL2CapChannelElement(InTheHand.Net.Bluetooth.ServiceRecord)">
<summary>
Reads the L2CAP Channel Number element from the service record.
</summary>
-
<param name="record">The <see cref="T:InTheHand.Net.Bluetooth.ServiceRecord"/>
to search for the element.
</param>
-
<returns>The <see cref="T:InTheHand.Net.Bluetooth.ServiceElement"/>
holding the Channel Number.
or <see langword="null"/> if at the <see cref="F:InTheHand.Net.Bluetooth.AttributeIds.UniversalAttributeId.ProtocolDescriptorList"/>
attribute is missing or contains invalid elements.
</returns>
</member>
<member name="M:InTheHand.Net.Bluetooth.ServiceRecordHelper.GetRfcommChannelNumber(InTheHand.Net.Bluetooth.ServiceRecord)">
<summary>
Reads the RFCOMM Channel Number value from the service record,
or returns -1 if the element is not present.
</summary>
-
<param name="record">The <see cref="T:InTheHand.Net.Bluetooth.ServiceRecord"/>
to search for the element.
</param>
-
<returns>The Channel Number as an unsigned byte cast to an Int32,
or -1 if at the <see cref="F:InTheHand.Net.Bluetooth.AttributeIds.UniversalAttributeId.ProtocolDescriptorList"/>
attribute is missing or contains invalid elements.
</returns>
</member>
<member name="M:InTheHand.Net.Bluetooth.ServiceRecordHelper.GetL2CapChannelNumber(InTheHand.Net.Bluetooth.ServiceRecord)">
<summary>
Reads the L2CAP Channel Number value from the service record,
or returns -1 if the element is not present.
</summary>
-
<param name="record">The <see cref="T:InTheHand.Net.Bluetooth.ServiceRecord"/>
to search for the element.
</param>
-
<returns>The PSM number as an uint16 cast to an Int32,
or -1 if at the <see cref="F:InTheHand.Net.Bluetooth.AttributeIds.UniversalAttributeId.ProtocolDescriptorList"/>
attribute is missing or contains invalid elements.
</returns>
</member>
<member name="M:InTheHand.Net.Bluetooth.ServiceRecordHelper.SetRfcommChannelNumber(InTheHand.Net.Bluetooth.ServiceRecord,System.Byte)">
<summary>
Sets the RFCOMM Channel Number value in the service record.
</summary>
-
<param name="record">The <see cref="T:InTheHand.Net.Bluetooth.ServiceRecord"/>
in which to set the RFCOMM Channel number.
</param>
<param name="channelNumber">The Channel number to set in the record.
</param>
-
<exception cref="T:System.InvalidOperationException">The
<see cref="F:InTheHand.Net.Bluetooth.AttributeIds.UniversalAttributeId.ProtocolDescriptorList"/>
attribute is missing or contains invalid elements.
</exception>
</member>
<member name="M:InTheHand.Net.Bluetooth.ServiceRecordHelper.SetL2CapPsmNumber(InTheHand.Net.Bluetooth.ServiceRecord,System.Int32)">
<summary>
Sets the RFCOMM Channel Number value in the service record.
</summary>
-
<remarks>
<para>Note: We use an <see cref="T:System.Int32"/> for the
<paramref name="psm"/> parameter as its natural type <see cref="T:System.UInt16"/>
in not usable in CLS Compliant interfaces.
</para>
</remarks>
-
<param name="record">The <see cref="T:InTheHand.Net.Bluetooth.ServiceRecord"/>
in which to set the L2CAP PSM value.
</param>
<param name="psm">The PSM value to set in the record.
Note that although the parameter is of type <see cref="T:System.Int32"/>
the value must actually be in the range of a <see cref="T:System.UInt16"/>,
see the remarks for more information.
</param>
-
<exception cref="T:System.InvalidOperationException">The
<see cref="F:InTheHand.Net.Bluetooth.AttributeIds.UniversalAttributeId.ProtocolDescriptorList"/>
attribute is missing or contains invalid elements.
</exception>
<exception cref="T:System.ArgumentOutOfRangeException">
The PSM must fit in a 16-bit unsigned integer.
</exception>
</member>
<member name="M:InTheHand.Net.Bluetooth.ServiceRecordHelper.CreateL2CapProtocolDescriptorList">
<summary>
Creates the data element for the
<see cref="F:InTheHand.Net.Bluetooth.AttributeIds.UniversalAttributeId.ProtocolDescriptorList"/>
attribute in an L2CAP service
</summary>
-
<returns>The new <see cref="T:InTheHand.Net.Bluetooth.ServiceElement"/>.</returns>
-
<remarks>Thus is the following structure:
<code lang="none">
ElementSequence
ElementSequence
Uuid16 = L2CAP
UInt16 = 0 -- The L2CAP PSM Number.
</code>
</remarks>
</member>
<member name="M:InTheHand.Net.Bluetooth.ServiceRecordHelper.CreateRfcommProtocolDescriptorList">
<summary>
Creates the data element for the
<see cref="F:InTheHand.Net.Bluetooth.AttributeIds.UniversalAttributeId.ProtocolDescriptorList"/>
attribute in an RFCOMM service
</summary>
-
<returns>The new <see cref="T:InTheHand.Net.Bluetooth.ServiceElement"/>.</returns>
-
<remarks>Thus is the following structure:
<code lang="none">
ElementSequence
ElementSequence
Uuid16 = L2CAP
ElementSequence
Uuid16 = RFCOMM
UInt8 = 0 -- The RFCOMM Channel Number.
</code>
</remarks>
</member>
<member name="M:InTheHand.Net.Bluetooth.ServiceRecordHelper.CreateGoepProtocolDescriptorList">
<summary>
Creates the data element for the
<see cref="F:InTheHand.Net.Bluetooth.AttributeIds.UniversalAttributeId.ProtocolDescriptorList"/>
attribute in an GOEP (i.e. OBEX) service
</summary>
-
<returns>The new <see cref="T:InTheHand.Net.Bluetooth.ServiceElement"/>.</returns>
-
<remarks>Thus is the following structure:
<code lang="none">
ElementSequence
ElementSequence
Uuid16 = L2CAP
ElementSequence
Uuid16 = RFCOMM
UInt8 = 0 -- The RFCOMM Channel Number.
ElementSequence
Uuid16 = GOEP
</code>
</remarks>
</member>
<member name="M:InTheHand.Net.Bluetooth.ServiceRecordHelper.CreateL2CapProtocolDescriptorListWithUpperLayers(InTheHand.Net.Bluetooth.ServiceElement[])">
<summary>
Creates the data element for the
<see cref="F:InTheHand.Net.Bluetooth.AttributeIds.UniversalAttributeId.ProtocolDescriptorList"/>
attribute in an L2CAP service,
with upper layer entries.
</summary>
-
<returns>The new <see cref="T:InTheHand.Net.Bluetooth.ServiceElement"/>.</returns>
-
<remarks>Thus is the following structure at the first layer:
<code lang="none">
ElementSequence
ElementSequence
Uuid16 = L2CAP
UInt16 = 0 -- The L2CAP PSM Number.
</code>
One can add layers above that; remember that all layers are formed
of an ElementSequence. See the example below.
</remarks>
-
<example>
<code>
var netProtoList = new ServiceElement(ElementType.ElementSequence,
ServiceElement.CreateNumericalServiceElement(ElementType.UInt16, 0x0800),
ServiceElement.CreateNumericalServiceElement(ElementType.UInt16, 0x0806)
);
var layer1 = new ServiceElement(ElementType.ElementSequence,
new ServiceElement(ElementType.Uuid16, Uuid16_BnepProto),
ServiceElement.CreateNumericalServiceElement(ElementType.UInt16, 0x0100), //v1.0
netProtoList
);
ServiceElement element = ServiceRecordHelper.CreateL2CapProtocolDescriptorListWithUpperLayers(
layer1);
</code>
</example>
-
<param name="upperLayers">The list of upper layer elements, one per layer.
As an array.
</param>
</member>
<member name="T:InTheHand.Net.Bluetooth.ServiceRecordParser">
<summary>
Parses an array of bytes into the contained SDP
<see cref="T:InTheHand.Net.Bluetooth.ServiceRecord"/>.
</summary>
-
<remarks>
See the
<see cref="M:InTheHand.Net.Bluetooth.ServiceRecordParser.Parse(System.Byte[],System.Int32,System.Int32)"/>
methods for more information.
</remarks>
-
<seealso cref="M:InTheHand.Net.Bluetooth.ServiceRecordParser.Parse(System.Byte[],System.Int32,System.Int32)"/>
</member>
<member name="P:InTheHand.Net.Bluetooth.ServiceRecordParser.SkipUnhandledElementTypes">
<summary>
Gets or set whether the parser will attempt to skip any unknown element
type rather than producing an error.
</summary>
-
<remarks>
<para>
An element type is added instead with
<c>ElementType.</c><see cref="F:InTheHand.Net.Bluetooth.ElementType.Unknown"/>
and <c>ElementTypeDescriptor.</c><see cref="F:InTheHand.Net.Bluetooth.ElementTypeDescriptor.Unknown"/>.
</para>
</remarks>
</member>
<member name="P:InTheHand.Net.Bluetooth.ServiceRecordParser.LazyUrlCreation">
<summary>
Gets or sets whether any URL elements will be converted to
<see cref="T:System.Uri"/> instances at parse time, or left as raw byte arrays.
</summary>
-
<remarks><para>
This is useful when the URL element is badly formatted and thus the
parser will reject the record, setting this property to <c>true</c> will
allow the parse to complete without attempting to decode the URL value.
</para>
<para>When <c>true</c> the value is stored as a array of bytes, when
<c>false</c> it is stored as a <see cref="T:System.String"/>;
however in earlier versions it was stored as <see cref="T:System.Uri"/>,
and since there was often invalid content on devices (e.g. iPhone)
this often failed.
</para>
</remarks>
</member>
<member name="M:InTheHand.Net.Bluetooth.ServiceRecordParser.Parse(System.Byte[])">
<summary>
Parses an array of bytes into its contained
<see cref="T:InTheHand.Net.Bluetooth.ServiceRecord"/>.
</summary>
-
<remarks>
See <see cref="M:InTheHand.Net.Bluetooth.ServiceRecordParser.Parse(System.Byte[],System.Int32,System.Int32)"/>
for more information.
</remarks>
-
<param name="buffer">A byte array containing the encoded Service Record.
</param>
<returns>The new <see cref="T:InTheHand.Net.Bluetooth.ServiceRecord"/> parsed from the byte array.
</returns>
-
<seealso cref="M:InTheHand.Net.Bluetooth.ServiceRecordParser.Parse(System.Byte[],System.Int32,System.Int32)"/>
<seealso cref="M:InTheHand.Net.Bluetooth.ServiceRecord.CreateServiceRecordFromBytes(System.Byte[])"/>
</member>
<member name="M:InTheHand.Net.Bluetooth.ServiceRecordParser.Parse(System.Byte[],System.Int32,System.Int32)">
<summary>
Parses an array of bytes into its contained
<see cref="T:InTheHand.Net.Bluetooth.ServiceRecord"/>.
</summary>
-
<remarks>
<para>If the record contains any element type not supported by the parser
it will throw <see cref="T:System.NotImplementedException"/>. The
only element types defined by SDP in v2.0 that are not currently implemented
are 64- and 128-bit integers. Of course any types defined in a later
version will also throw this. This behaviour can be changed with the
<see cref="P:InTheHand.Net.Bluetooth.ServiceRecordParser.SkipUnhandledElementTypes"/>
property.
</para>
</remarks>
-
<param name="buffer">A byte array containing a Service Record.
</param>
<param name="offset">The position in the data buffer at which to
begin parsing the Service Record.
</param>
<param name="length">The length of the Service Record in the byte array.
</param>
<returns>The Service Record parse from the byte array.
</returns>
-
<exception cref="T:System.Net.ProtocolViolationException">
The record contains invalid content.
</exception>
<exception cref="T:System.NotImplementedException">
The record contains an element type not supported by the parser.
</exception>
-
<seealso cref="M:InTheHand.Net.Bluetooth.ServiceRecordParser.Parse(System.Byte[])"/>
<seealso cref="M:InTheHand.Net.Bluetooth.ServiceRecord.CreateServiceRecordFromBytes(System.Byte[])"/>
</member>
<member name="M:InTheHand.Net.Bluetooth.ServiceRecordParser.SplitSearchAttributeResult(System.Byte[])">
<summary>
Split a sequence of records into the component records.
</summary>
-
<remarks>
<para>The Bluetooth SDP operation ServiceSearchAttribute returns its
result as a &#x201C;data element sequence where each element in turn is
a data element sequence representing an attribute list.&#x201D; This
method split that sequence into the individual attribute lists.
</para>
<para>On CE/Windows Mobile the result of a record lookup is in this form
so <see cref="M:InTheHand.Net.Sockets.BluetoothDeviceInfo.GetServiceRecords(System.Guid)"/>
etc use this method to split the result into is constituent records.
</para>
</remarks>
-
<param name="multiRecord">A byte array holding the
&#x201C;data element sequence where each element in turn is
a data element sequence representing an attribute list.&#x201D;
</param>
-
<returns>An array of byte arrays where each holds a SDP record
(a &#x201C;data element sequence representing an attribute list.&#x201D;).
If the input was zero length or empty then a zero length array is returned.
</returns>
-
<exception cref="T:System.ArgumentNullException">
<paramref name="multiRecord"/> is <see langword="null"/>.
</exception>
</member>
<member name="M:InTheHand.Net.Bluetooth.ServiceRecordParser.ParseContent(System.Boolean,System.Boolean,System.Byte[],System.Int32,System.Int32,System.Int32@,InTheHand.Net.Bluetooth.ElementTypeDescriptor,InTheHand.Net.Bluetooth.SizeIndex,System.Int32,System.Int32)">
<summary>
For use when the content of the element is in an array
i.e. the stack parses the element structure and returns the values in byte arrays.
</summary>
-
<param name="networkOrderInteger">Whether the stack uses network order
for UnsignedInteger and TwosComplementInteger elements (as used in the SDP format)
or instead that the numerical values are in host order
in the byte array.
</param>
<param name="networkOrderUuid">Whether the stack uses network order
for Uuid elements (as used in the SDP format)
or instead that the numerical values are in host order
in the byte array.
</param>
<param name="buffer">The byte array containing the SDP value.
</param>
<param name="offset">(?Always zero).
</param>
<param name="length">The length of the byte array.
(Always equals <paramref name="contentLength"/>).
</param>
<param name="_readLength">
</param>
<param name="etd">The Element Type.
</param>
<param name="dbgSizeIndex">(Not used).
</param>
<param name="contentLength">The size of the value.
</param>
<param name="contentOffset">(?Always zero).
</param>
-
<returns>
</returns>
</member>
<member name="M:InTheHand.Net.Bluetooth.ServiceRecordParser.GetElementLength(System.Byte[],System.Int32,System.Int32,System.Int32@,System.Int32@)">
<exclude/>
</member>
<member name="M:InTheHand.Net.Bluetooth.ServiceRecordParser.SplitHeaderByte(System.Byte,InTheHand.Net.Bluetooth.ElementTypeDescriptor@,InTheHand.Net.Bluetooth.SizeIndex@)">
<summary>
Split a header byte into its <see cref="T:InTheHand.Net.Bluetooth.ElementTypeDescriptor"/> and
<see cref="T:InTheHand.Net.Bluetooth.SizeIndex"/> parts.
</summary>
<remarks>
The <see cref="T:InTheHand.Net.Bluetooth.ElementTypeDescriptor"/> returned is not checked to be a
known value.
</remarks>
-
<param name="headerByte">The byte from the header.
</param>
<param name="etd">The <see cref="T:InTheHand.Net.Bluetooth.ElementTypeDescriptor"/>
value from the header byte.
</param>
<param name="sizeIndex">The <see cref="T:InTheHand.Net.Bluetooth.SizeIndex"/>
value from a header byte.
</param>
-
<seealso cref="M:InTheHand.Net.Bluetooth.ServiceRecordParser.GetElementTypeDescriptor(System.Byte)"/>
<seealso cref="M:InTheHand.Net.Bluetooth.ServiceRecordParser.GetSizeIndex(System.Byte)"/>
</member>
<member name="M:InTheHand.Net.Bluetooth.ServiceRecordParser.GetElementTypeDescriptor(System.Byte)">
<summary>
Extract the <see cref="T:InTheHand.Net.Bluetooth.ElementTypeDescriptor"/> value from a header byte.
</summary>
<remarks>
The <see cref="T:InTheHand.Net.Bluetooth.ElementTypeDescriptor"/> returned is not checked to be a
known value.
</remarks>
-
<param name="headerByte">The byte from the header.
</param>
-
<returns>The value as a <see cref="T:InTheHand.Net.Bluetooth.ElementTypeDescriptor"/>.</returns>
-
<seealso cref="M:InTheHand.Net.Bluetooth.ServiceRecordParser.SplitHeaderByte(System.Byte,InTheHand.Net.Bluetooth.ElementTypeDescriptor@,InTheHand.Net.Bluetooth.SizeIndex@)"/>
<seealso cref="M:InTheHand.Net.Bluetooth.ServiceRecordParser.GetSizeIndex(System.Byte)"/>
</member>
<member name="M:InTheHand.Net.Bluetooth.ServiceRecordParser.GetSizeIndex(System.Byte)">
<summary>
Extract the <see cref="T:InTheHand.Net.Bluetooth.SizeIndex"/> field from a header byte.
</summary>
-
<param name="headerByte">The byte from the header.
</param>
-
<returns>The value as a <see cref="T:InTheHand.Net.Bluetooth.SizeIndex"/>.</returns>
-
<seealso cref="M:InTheHand.Net.Bluetooth.ServiceRecordParser.SplitHeaderByte(System.Byte,InTheHand.Net.Bluetooth.ElementTypeDescriptor@,InTheHand.Net.Bluetooth.SizeIndex@)"/>
<seealso cref="M:InTheHand.Net.Bluetooth.ServiceRecordParser.GetElementTypeDescriptor(System.Byte)"/>
</member>
<member name="F:InTheHand.Net.Bluetooth.ServiceRecordParser.ElementTypeDescriptorOffset">
<summary>
Bit offset of the ElementTypeDescriptor field in a header byte.
</summary>
<remarks>
The header byte has two parts: five bits of ElementTypeDescriptor and
three bits of Size Index.
</remarks>
<seealso cref="F:InTheHand.Net.Bluetooth.ServiceRecordParser.SizeIndexMask"/>
</member>
<member name="F:InTheHand.Net.Bluetooth.ServiceRecordParser.SizeIndexMask">
<summary>
Mask for the SizeIndex field in a header byte.
</summary>
<remarks>
The header byte has two parts: five bits of ElementTypeDescriptor and
three bits of Size Index, upper and lower respectively.
</remarks>
<seealso cref="F:InTheHand.Net.Bluetooth.ServiceRecordParser.ElementTypeDescriptorOffset"/>
</member>
<member name="M:InTheHand.Net.Bluetooth.ServiceRecordParser.TypeMatchesEtd(InTheHand.Net.Bluetooth.ElementTypeDescriptor,InTheHand.Net.Bluetooth.ElementType)">
<exclude/>
</member>
<member name="M:InTheHand.Net.Bluetooth.ServiceRecordParser.GetEtdForType(InTheHand.Net.Bluetooth.ElementType)">
<exclude/>
</member>
<member name="F:InTheHand.Net.Bluetooth.ServiceRecordParser.ErrorMsgFormatUnknownType">
<exclude/>
</member>
<member name="F:InTheHand.Net.Bluetooth.ServiceRecordParser.ErrorMsgFormatTypeNotTypeDSubtype">
<exclude/>
</member>
<member name="F:InTheHand.Net.Bluetooth.ServiceRecordParser.ErrorMsgSizeIndexNotSuitTypeD">
<exclude/>
</member>
<member name="F:InTheHand.Net.Bluetooth.ServiceRecordParser.ErrorMsgServiceRecordBytesZeroLength">
<exclude/>
</member>
<member name="F:InTheHand.Net.Bluetooth.ServiceRecordParser.ErrorMsgFormatInvalidHeaderBytes">
<exclude/>
</member>
<member name="F:InTheHand.Net.Bluetooth.ServiceRecordParser.ErrorMsgFormatTruncated">
<exclude/>
</member>
<member name="F:InTheHand.Net.Bluetooth.ServiceRecordParser.ErrorMsgFormatNotSupportFull32bitSized">
<exclude/>
</member>
<member name="F:InTheHand.Net.Bluetooth.ServiceRecordParser.ErrorMsgTypeNotAsExpected">
<exclude/>
</member>
<member name="F:InTheHand.Net.Bluetooth.ServiceRecordParser.ErrorMsgTopElementNotSequence">
<exclude/>
</member>
<member name="F:InTheHand.Net.Bluetooth.ServiceRecordParser.ErrorMsgMultiSeqChildElementNotSequence">
<exclude/>
</member>
<member name="F:InTheHand.Net.Bluetooth.ServiceRecordParser.ErrorMsgSequenceOverruns">
<exclude/>
</member>
<member name="F:InTheHand.Net.Bluetooth.ServiceRecordParser.ErrorMsgElementOverrunsBuffer_WithLengths">
<exclude/>
</member>
<member name="F:InTheHand.Net.Bluetooth.ServiceRecordParser.ErrorMsgElementOverrunsBuffer">
<exclude/>
</member>
<member name="F:InTheHand.Net.Bluetooth.ServiceRecordParser.ErrorMsgElementOverrunsBufferPrefix">
<exclude/>
</member>
<member name="F:InTheHand.Net.Bluetooth.ServiceRecordParser.ErrorMsgAttributePairFirstMustUint16">
<exclude/>
</member>
<member name="T:InTheHand.Net.Bluetooth.ServiceRecordUtilities">
<summary>
Utilities method working on SDP <see cref="T:InTheHand.Net.Bluetooth.ServiceRecord"/>s, for instance to
produce a 'dump' of the record's contents.
</summary>
-
<remarks>
This class produces output like the following:
<code lang="none">
AttrId: 0x0000 -- ServiceRecordHandle
UInt32: 0x0
AttrId: 0x0001 -- ServiceClassIdList
ElementSequence
Uuid16: 0x1000 -- ServiceDiscoveryServer
AttrId: 0x0004 -- ProtocolDescriptorList
ElementSequence
ElementSequence
Uuid16: 0x100 -- L2CapProtocol
UInt16: 0x1
ElementSequence
Uuid16: 0x1 -- SdpProtocol
( ( L2Cap, PSM=Sdp ), ( Sdp ) )
AttrId: 0x0005 -- BrowseGroupList
ElementSequence
Uuid16: 0x1002 -- PublicBrowseGroup
AttrId: 0x0006 -- LanguageBaseAttributeIdList
ElementSequence
UInt16: 0x656E
UInt16: 0x6A
UInt16: 0x100
AttrId: 0x0100 -- ServiceName
TextString: [en] 'Service Discovery'
AttrId: 0x0101 -- ServiceDescription
TextString: [en] 'Publishes services to remote devices'
AttrId: 0x0102 -- ProviderName
TextString: [en] 'Microsoft'
AttrId: 0x0200 -- VersionNumberList
ElementSequence
UInt16: 0x100
AttrId: 0x0201 -- ServiceDatabaseState
UInt32: 0x1
</code>
The Service Class Id names and Attribute Id names are looked up using
<see cref="M:InTheHand.Net.Bluetooth.BluetoothService.GetName(System.Guid)"/>/etc and
<see cref="T:InTheHand.Net.Bluetooth.MapServiceClassToAttributeIdList"/>
respectively.
</remarks>
</member>
<member name="M:InTheHand.Net.Bluetooth.ServiceRecordUtilities.DumpRaw(InTheHand.Net.Bluetooth.ServiceRecord)">
<overloads>
Produces a raw 'dump' of the given record, not including attribute names etc.
</overloads>
-
<summary>
Gets a string containing a raw 'dump' of the given record, not including attribute names etc.
</summary>
-
<param name="record">A <see cref="T:InTheHand.Net.Bluetooth.ServiceRecord"/> to be dumped.</param>
<returns>A <see cref="T:System.String"/> containing the 'dump' text.</returns>
<seealso cref="M:InTheHand.Net.Bluetooth.ServiceRecordUtilities.DumpRaw(System.IO.TextWriter,InTheHand.Net.Bluetooth.ServiceRecord)"/>
</member>
<member name="M:InTheHand.Net.Bluetooth.ServiceRecordUtilities.DumpRaw(System.IO.TextWriter,InTheHand.Net.Bluetooth.ServiceRecord)">
<summary>
Produce a raw 'dump' of the given record, not including attribute names etc, to the given
<see cref="T:System.IO.TextWriter"/>.
</summary>
<param name="writer">A <see cref="T:System.IO.TextWriter"/> where the 'dump'
text is to be written.</param>
<param name="record">A <see cref="T:InTheHand.Net.Bluetooth.ServiceRecord"/> to be dumped.</param>
<seealso cref="M:InTheHand.Net.Bluetooth.ServiceRecordUtilities.DumpRaw(InTheHand.Net.Bluetooth.ServiceRecord)"/>
</member>
<member name="M:InTheHand.Net.Bluetooth.ServiceRecordUtilities.Dump(InTheHand.Net.Bluetooth.ServiceRecord,System.Type[])">
<overloads>
Produces a 'dump' of the given record, including attribute names etc.
</overloads>
--
<summary>
Gets a <see cref="T:System.String"/> containing a 'dump' of the given record, including attribute names etc.
</summary>
-
<param name="record">A <see cref="T:InTheHand.Net.Bluetooth.ServiceRecord"/> to be dumped.</param>
<param name="attributeIdEnumDefiningTypes">
An optional array of <see cref="T:System.Type"/> specifing a set of Ids
for the attributes contained in this record. See the
<see cref="M:InTheHand.Net.Bluetooth.ServiceRecordUtilities.Dump(System.IO.TextWriter,InTheHand.Net.Bluetooth.ServiceRecord,System.Type[])"/>
overload for more information.
</param>
-
<returns>A <see cref="T:System.String"/> containing the 'dump' text.</returns>
-
<seealso cref="M:InTheHand.Net.Bluetooth.ServiceRecordUtilities.Dump(System.IO.TextWriter,InTheHand.Net.Bluetooth.ServiceRecord,System.Type[])"/>
</member>
<member name="M:InTheHand.Net.Bluetooth.ServiceRecordUtilities.Dump(System.IO.TextWriter,InTheHand.Net.Bluetooth.ServiceRecord,System.Type[])">
<summary>
Produce a 'dump' of the given record, including attribute names etc to the given
<see cref="T:System.IO.TextWriter"/>.
</summary>
-
<remarks>
<para>The system has built-in a set of mappings from Service Class to
its Attribute IDs. This is supplied by the
<see cref="T:InTheHand.Net.Bluetooth.MapServiceClassToAttributeIdList"/> class,
and contains the Attribute IDs defined in the base SDP specification as
well as in Bluetooth Profiles specification e.g. ObjectPushProfile, Headset,
Panu, etc.
If however the record being decoded is a custom one then a set of extra
Attribute Id definitions can be supplied in the
<paramref name="attributeIdEnumDefiningTypes"/> parameter.
The Attribute IDs for a particular Service Class
should be defined in a static class and the set of such classes should
be passed as their <see cref="T:System.Type"/> object. e.g.
<code lang="C#">
static class FooAttributeId
{
public const ServiceAttributeId BarName = (ServiceAttributeId)0x0300;
}
&#x2026;
ServiceRecordUtilities.Dump(writer, myRecord, typeof(FooAttributeId));
&#x2026;
</code>
</para>
</remarks>
-
<param name="writer">A <see cref="T:System.IO.TextWriter"/> where the 'dump'
text is to be written.</param>
<param name="record">A <see cref="T:InTheHand.Net.Bluetooth.ServiceRecord"/> to be dumped.</param>
<param name="attributeIdEnumDefiningTypes">
An optional array of <see cref="T:System.Type"/> specifing a set of Ids
for the attributes contained in this record. See the
</param>
<seealso cref="M:InTheHand.Net.Bluetooth.ServiceRecordUtilities.Dump(InTheHand.Net.Bluetooth.ServiceRecord,System.Type[])"/>
</member>
<member name="M:InTheHand.Net.Bluetooth.ServiceRecordUtilities.GuidToHackProtocolId(System.Guid,System.String@)">
<summary>
Attempt to get the name of the protocol,
and optionally it's enum id if we handle it specially.
</summary>
-
<param name="protocolGuid">The input.
</param>
<param name="protoStr">The protocol's name if known, or its
Guid.ToString if not.
We handle some explicitly, and otherwise we see if there's a
matching value in BluetoothService that has its name suffixed "Protocol".
</param>
-
<returns>The id as a <see cref="T:InTheHand.Net.Bluetooth.ServiceRecordUtilities.HackProtocolId"/>.
We handle some explicitly,
otherwise we see if its a UUID16 and convert it automatically,
finally if neither we return <c>zero</c>.
</returns>
</member>
<member name="T:InTheHand.Net.Sockets.BluetoothSocketOptionLevel">
<summary>
Defines additional Bluetooth socket option levels for the <see cref="M:System.Net.Sockets.Socket.SetSocketOption(System.Net.Sockets.SocketOptionLevel,System.Net.Sockets.SocketOptionName,System.Int32)"/> and <see cref="M:System.Net.Sockets.Socket.GetSocketOption(System.Net.Sockets.SocketOptionLevel,System.Net.Sockets.SocketOptionName)"/> methods.
</summary>
</member>
<member name="F:InTheHand.Net.Sockets.BluetoothSocketOptionLevel.RFComm">
<summary>
Bluetooth RFComm protocol (bt-rfcomm)
</summary>
</member>
<member name="F:InTheHand.Net.Sockets.BluetoothSocketOptionLevel.L2Cap">
<summary>
Logical Link Control and Adaptation Protocol (bt-l2cap)
</summary>
</member>
<member name="F:InTheHand.Net.Sockets.BluetoothSocketOptionLevel.Sdp">
<summary>
Service Discovery Protocol (bt-sdp)
</summary>
</member>
<member name="T:InTheHand.Net.Sockets.BluetoothSocketOptionName">
<summary>
Defines <see cref="T:System.Net.Sockets.Socket"/> configuration option names for the <see cref="T:System.Net.Sockets.Socket"/> class.
</summary>
</member>
<member name="F:InTheHand.Net.Sockets.BluetoothSocketOptionName.Authenticate">
<summary>
On connected socket, triggers authentication.
On not connected socket, forces authentication on connection.
For incoming connection this means that connection is rejected if authentication cannot be performed.
</summary>
<remarks>The optval and optlen parameters are ignored; however, Winsock implementation on Windows CE requires optlen to be at least 4 and optval to point to at least an integer datum.</remarks>
</member>
<member name="F:InTheHand.Net.Sockets.BluetoothSocketOptionName.XPAuthenticate">
<summary>
Toggles authentication under Windows XP.
</summary>
<remarks>optlen=sizeof(ULONG), optval = &amp;(ULONG)TRUE/FALSE</remarks>
</member>
<member name="F:InTheHand.Net.Sockets.BluetoothSocketOptionName.Encrypt">
<summary>
On a connected socket, this command turns encryption on or off.
On an unconnected socket, this forces encryption to be on or off on connection.
For an incoming connection, this means that the connection is rejected if the encryption cannot be turned on.
</summary>
</member>
<member name="F:InTheHand.Net.Sockets.BluetoothSocketOptionName.SetPin">
<summary>
This sets or revokes PIN code to use with a connection or socket.
</summary>
</member>
<member name="F:InTheHand.Net.Sockets.BluetoothSocketOptionName.SetLink">
<summary>
This sets or revokes link key to use with a connection or peer device.
</summary>
</member>
<member name="F:InTheHand.Net.Sockets.BluetoothSocketOptionName.GetLink">
<summary>
Returns link key associated with peer Bluetooth device.
</summary>
</member>
<member name="F:InTheHand.Net.Sockets.BluetoothSocketOptionName.XPMtu">
<summary>
Get or set the default MTU on Windows XP.
</summary>
<remarks>optlen=sizeof(ULONG), optval = &amp;mtu</remarks>
</member>
<member name="F:InTheHand.Net.Sockets.BluetoothSocketOptionName.SetMtu">
<summary>
This sets default MTU (maximum transmission unit) for connection negotiation.
While allowed for connected socket, it has no effect if the negotiation has already completed.
Setting it on listening socket will propagate the value for all incoming connections.
</summary>
</member>
<member name="F:InTheHand.Net.Sockets.BluetoothSocketOptionName.GetMtu">
<summary>
Returns MTU (maximum transmission unit).
For connected socket, this is negotiated value, for server (accepting) socket it is MTU proposed for negotiation on connection request.
</summary>
</member>
<member name="F:InTheHand.Net.Sockets.BluetoothSocketOptionName.XPMtuMaximum">
<summary>
Get or set the maximum MTU on Windows XP.
</summary>
<remarks>optlen=sizeof(ULONG), optval = &amp;max. mtu</remarks>
</member>
<member name="F:InTheHand.Net.Sockets.BluetoothSocketOptionName.SetMtuMaximum">
<summary>
This sets maximum MTU for connection negotiation.
While allowed for connected socket, it has no effect if the negotiation has already completed.
Setting it on listening socket will propagate the value for all incoming connections.
</summary>
</member>
<member name="F:InTheHand.Net.Sockets.BluetoothSocketOptionName.GetMtuMaximum">
<summary>
Returns maximum MTU acceptable MTU value for a connection on this socket.
Because negotiation has already happened, has little meaning for connected socket.
</summary>
</member>
<member name="F:InTheHand.Net.Sockets.BluetoothSocketOptionName.XPMtuMinimum">
<summary>
Get or set the minimum MTU on Windows XP.
</summary>
<remarks>optlen=sizeof(ULONG), optval = &amp;min. mtu</remarks>
</member>
<member name="F:InTheHand.Net.Sockets.BluetoothSocketOptionName.SetMtuMinimum">
<summary>
This sets minimum MTU for connection negotiation.
While allowed for connected socket, it has no effect if the negotiation has already completed.
Setting it on listening socket will propagate the value for all incoming connections.
</summary>
</member>
<member name="F:InTheHand.Net.Sockets.BluetoothSocketOptionName.GetMtuMinimum">
<summary>
Returns minimum MTU acceptable MTU value for a connection on this socket.
Because negotiation has already happened, has little meaning for connected socket.
</summary>
</member>
<member name="F:InTheHand.Net.Sockets.BluetoothSocketOptionName.SetXOnLimit">
<summary>
This sets XON limit.
Setting it on listening socket will propagate the value for all incoming connections.
</summary>
</member>
<member name="F:InTheHand.Net.Sockets.BluetoothSocketOptionName.GetXOnLimit">
<summary>
Returns XON limit for a connection.
XON limit is only used for peers that do not support credit-based flow control (mandatory in the Bluetooth Core Specification version 1.1).
When amount of incoming data received, but not read by an application for a given connection grows past this limit, a flow control command is sent to the peer requiring suspension of transmission.
</summary>
</member>
<member name="F:InTheHand.Net.Sockets.BluetoothSocketOptionName.SetXOffLimit">
<summary>
This sets XOFF limit.
Setting it on listening socket will propagate the value for all incoming connections.
</summary>
</member>
<member name="F:InTheHand.Net.Sockets.BluetoothSocketOptionName.GetXOffLimit">
<summary>
Returns XOFF limit for a connection.
XOFF limit is only used for peers that do not support credit-based flow control (mandatory in the Bluetooth Core Specification 1.1).
If flow has been suspended because of buffer run-up, when amount of incoming data received, but not read by an application for a given connection falls below this limit, a flow control command is sent to the peer allowing continuation of transmission.
</summary>
</member>
<member name="F:InTheHand.Net.Sockets.BluetoothSocketOptionName.SetSendBuffer">
<summary>
Specifies maximum amount of data that can be buffered inside RFCOMM (this is amount of data before call to send blocks).
</summary>
</member>
<member name="F:InTheHand.Net.Sockets.BluetoothSocketOptionName.GetSendBuffer">
<summary>
Returns maximum amount of data that can be buffered inside RFCOMM (this is amount of data before call to send blocks).
</summary>
</member>
<member name="F:InTheHand.Net.Sockets.BluetoothSocketOptionName.SetReceiveBuffer">
<summary>
Specifies maximum amount of data that can be buffered for a connection.
This buffer size is used to compute number of credits granted to peer device when credit-based flow control is implemented.
This specifies the maximum amount of data that can be buffered.
</summary>
</member>
<member name="F:InTheHand.Net.Sockets.BluetoothSocketOptionName.GetReceiveBuffer">
<summary>
Returns maximum amount of data that can be buffered for a connection.
This buffer size is used to compute number of credits granted to peer device when credit-based flow control is implemented.
This specifies the maximum amount of data that can be buffered.
</summary>
</member>
<member name="F:InTheHand.Net.Sockets.BluetoothSocketOptionName.GetV24Break">
<summary>
Retrieves last v24 and break signals set through MSC command from peer device.
</summary>
</member>
<member name="F:InTheHand.Net.Sockets.BluetoothSocketOptionName.GetRls">
<summary>
Retrieves last line status signals set through RLS command from peer device.
</summary>
</member>
<member name="F:InTheHand.Net.Sockets.BluetoothSocketOptionName.SendMsc">
<summary>
Sends MSC command. V24 and breaks are as specified in RFCOMM Specification.
Only modem signals and breaks can be controlled, RFCOMM reserved fields such as flow control are ignored and should be set to 0.
</summary>
</member>
<member name="F:InTheHand.Net.Sockets.BluetoothSocketOptionName.SendRls">
<summary>
Sends RLS command.
Argument is as specified in RFCOMM Specification.
</summary>
</member>
<member name="F:InTheHand.Net.Sockets.BluetoothSocketOptionName.GetFlowType">
<summary>
Gets flow control type on the connected socket.
</summary>
</member>
<member name="F:InTheHand.Net.Sockets.BluetoothSocketOptionName.SetPageTimeout">
<summary>
Sets the page timeout for the card.
The socket does not have to be connected.
</summary>
</member>
<member name="F:InTheHand.Net.Sockets.BluetoothSocketOptionName.GetPageTimeout">
<summary>
Gets the current page timeout.
The socket does not have to be connected.
</summary>
</member>
<member name="F:InTheHand.Net.Sockets.BluetoothSocketOptionName.SetScan">
<summary>
Sets the scan mode for the card.
The socket does not have to be connected.
</summary>
</member>
<member name="F:InTheHand.Net.Sockets.BluetoothSocketOptionName.GetScan">
<summary>
Gets the current scan mode.
The socket does not have to be connected.
</summary>
</member>
<member name="F:InTheHand.Net.Sockets.BluetoothSocketOptionName.SetCod">
<summary>
Sets the class of the device.
The socket does not have to be connected.
</summary>
</member>
<member name="F:InTheHand.Net.Sockets.BluetoothSocketOptionName.GetCod">
<summary>
Retrieve the Class of Device.
</summary>
</member>
<member name="F:InTheHand.Net.Sockets.BluetoothSocketOptionName.GetLocalVersion">
<summary>
Get the version information from the Bluetooth adapter.
</summary>
</member>
<member name="F:InTheHand.Net.Sockets.BluetoothSocketOptionName.GetRemoteVersion">
<summary>
Get the version of the remote adapter.
</summary>
</member>
<member name="F:InTheHand.Net.Sockets.BluetoothSocketOptionName.GetAuthenticationEnabled">
<summary>
Retrieves the authentication settings.
The socket does not have to be connected.
</summary>
</member>
<member name="F:InTheHand.Net.Sockets.BluetoothSocketOptionName.SetAuthenticationEnabled">
<summary>
Sets the authentication policy of the device.
</summary>
</member>
<member name="F:InTheHand.Net.Sockets.BluetoothSocketOptionName.ReadRemoteName">
<summary>
Reads the remote name of the device.
The socket does not have to be connected.
</summary>
</member>
<member name="F:InTheHand.Net.Sockets.BluetoothSocketOptionName.GetLinkPolicy">
<summary>
Retrieves the link policy of the device.
</summary>
</member>
<member name="F:InTheHand.Net.Sockets.BluetoothSocketOptionName.SetLinkPolicy">
<summary>
Sets the link policy for an existing baseband connection.
The socket must be connected.
</summary>
</member>
<member name="F:InTheHand.Net.Sockets.BluetoothSocketOptionName.EnterHoldMode">
<summary>
Places the ACL connection to the specified peer device in HOLD mode.
The device must be connected.
</summary>
</member>
<member name="F:InTheHand.Net.Sockets.BluetoothSocketOptionName.EnterSniffMode">
<summary>
Places the ACL connection to the specified peer device in SNIFF mode.
The device must be connected.
</summary>
</member>
<member name="F:InTheHand.Net.Sockets.BluetoothSocketOptionName.ExitSniffMode">
<summary>
Forces the ACL connection to the peer device to leave SNIFF mode.
The device must be connected.
</summary>
</member>
<member name="F:InTheHand.Net.Sockets.BluetoothSocketOptionName.EnterParkMode">
<summary>
Places the ACL connection to the peer device in PARK mode.
The device must be connected.
</summary>
</member>
<member name="F:InTheHand.Net.Sockets.BluetoothSocketOptionName.ExitParkMode">
<summary>
Forces the ACL connection to the peer device to leave PARK mode.
The device must be connected.
</summary>
</member>
<member name="F:InTheHand.Net.Sockets.BluetoothSocketOptionName.GetMode">
<summary>
Gets the current mode of the connection.
The mode can either be sniff, park, or hold. The socket must be connected.
</summary>
</member>
<member name="T:InTheHand.Net.Sockets.IrDACharacterSet">
<summary>
Describes the character sets supported by the device.
</summary>
<remarks>The <see cref="T:InTheHand.Net.Sockets.IrDACharacterSet"/> enumeration describes the following character sets, which are used by the <see cref="T:InTheHand.Net.Sockets.IrDAClient"/> and <see cref="T:InTheHand.Net.Sockets.IrDADeviceInfo"/> classes.</remarks>
<seealso cref="T:InTheHand.Net.Sockets.IrDAClient"/>
</member>
<member name="F:InTheHand.Net.Sockets.IrDACharacterSet.ASCII">
<summary>
The ASCII character set.
</summary>
</member>
<member name="F:InTheHand.Net.Sockets.IrDACharacterSet.ISO8859Latin1">
<summary>
The western European graphic character set.
</summary>
</member>
<member name="F:InTheHand.Net.Sockets.IrDACharacterSet.ISO8859Latin2">
<summary>
The eastern European graphic character set.
</summary>
</member>
<member name="F:InTheHand.Net.Sockets.IrDACharacterSet.ISO8859Latin3">
<summary>
The southern European graphic character set.
</summary>
</member>
<member name="F:InTheHand.Net.Sockets.IrDACharacterSet.ISO8859Latin4">
<summary>
The northern European graphic character set.
</summary>
</member>
<member name="F:InTheHand.Net.Sockets.IrDACharacterSet.ISO8859Cyrillic">
<summary>
The Cyrillic graphic character set.
</summary>
</member>
<member name="F:InTheHand.Net.Sockets.IrDACharacterSet.ISO8859Arabic">
<summary>
The Arabic graphic character set.
</summary>
</member>
<member name="F:InTheHand.Net.Sockets.IrDACharacterSet.ISO8859Greek">
<summary>
The Greek graphic character set.
</summary>
</member>
<member name="F:InTheHand.Net.Sockets.IrDACharacterSet.ISO8859Hebrew">
<summary>
The Hebrew graphic character set.
</summary>
</member>
<member name="F:InTheHand.Net.Sockets.IrDACharacterSet.ISO8859Latin5">
<summary>
The Turkish graphic character set.
</summary>
</member>
<member name="F:InTheHand.Net.Sockets.IrDACharacterSet.Unicode">
<summary>
The Unicode character set.
</summary>
</member>
<member name="T:InTheHand.Net.Sockets.IrDAHints">
<summary>
Describes an enumeration of possible device types, such as Fax.
</summary>
<seealso cref="T:System.Net.Sockets.IrDAHints"/>
</member>
<member name="F:InTheHand.Net.Sockets.IrDAHints.None">
<summary>
Unspecified device type.
</summary>
</member>
<member name="F:InTheHand.Net.Sockets.IrDAHints.PnP">
<summary>
A Plug and Play interface.
</summary>
</member>
<member name="F:InTheHand.Net.Sockets.IrDAHints.PdaAndPalmtop">
<summary>
A Pocket PC or similar.
</summary>
</member>
<member name="F:InTheHand.Net.Sockets.IrDAHints.Computer">
<summary>
A personal computer.
</summary>
</member>
<member name="F:InTheHand.Net.Sockets.IrDAHints.Printer">
<summary>
A printer.
</summary>
</member>
<member name="F:InTheHand.Net.Sockets.IrDAHints.Modem">
<summary>
A modem.
</summary>
</member>
<member name="F:InTheHand.Net.Sockets.IrDAHints.Fax">
<summary>
A fax.
</summary>
</member>
<member name="F:InTheHand.Net.Sockets.IrDAHints.LanAccess">
<summary>
A local area network access.
</summary>
</member>
<member name="F:InTheHand.Net.Sockets.IrDAHints.Extension">
<summary>
Contains extended hint bytes.
</summary>
</member>
<member name="F:InTheHand.Net.Sockets.IrDAHints.Telephony">
<summary>
A telephonic device.
</summary>
</member>
<member name="F:InTheHand.Net.Sockets.IrDAHints.FileServer">
<summary>
A personal computer file server.
</summary>
</member>
<member name="F:InTheHand.Net.Sockets.IrDAHints.IrCOMM">
<summary>
Device supports IrCOMM.
</summary>
</member>
<member name="F:InTheHand.Net.Sockets.IrDAHints.Obex">
<summary>
Device supports Object Exchange.
</summary>
</member>
<member name="T:InTheHand.Net.Sockets.IrDASocketOptionLevel">
<summary>
Defines additional IrDA socket option levels for the <see cref="M:System.Net.Sockets.Socket.SetSocketOption(System.Net.Sockets.SocketOptionLevel,System.Net.Sockets.SocketOptionName,System.Int32)"/> and <see cref="M:System.Net.Sockets.Socket.GetSocketOption(System.Net.Sockets.SocketOptionLevel,System.Net.Sockets.SocketOptionName)"/> methods.
</summary>
<remarks>
Use along with the socket options defined by
<see cref="T:InTheHand.Net.Sockets.IrDASocketOptionName"/>.
</remarks>
<seealso cref="T:InTheHand.Net.Sockets.IrDASocketOptionName"/>
</member>
<member name="F:InTheHand.Net.Sockets.IrDASocketOptionLevel.IrLmp">
<summary>
The socket option level for use with IrDA sockets
along with the options defined in <see
cref="T:InTheHand.Net.Sockets.IrDASocketOptionName"/>.
</summary>
<remarks>
Use along with the socket options defined by
<see cref="T:InTheHand.Net.Sockets.IrDASocketOptionName"/>.
</remarks>
<seealso cref="T:InTheHand.Net.Sockets.IrDASocketOptionName"/>
</member>
<member name="T:InTheHand.Net.Sockets.IrDASocketOptionName">
<summary>
Socket option constants to set IrDA specific connection modes, and
get/set IrDA specific features.
</summary>
<remarks>
Socket option constants to set IrDA specific connection modes, and
get/set IrDA specific features:
for instance to set IrLMP mode, or get the maximum send size. Pass
to <see cref="M:System.Net.Sockets.Socket.GetSocketOption(System.Net.Sockets.SocketOptionLevel,System.Net.Sockets.SocketOptionName,System.Byte[])"/>/etc and
<see cref="M:System.Net.Sockets.Socket.SetSocketOption(System.Net.Sockets.SocketOptionLevel,System.Net.Sockets.SocketOptionName,System.Byte[])"/>/etc,
along with optionLevel <c>IrDASocketOptionLevel.</c><see
cref="F:InTheHand.Net.Sockets.IrDASocketOptionLevel.IrLmp"/>;
see the examples below.
<para><b>New in v1.5.51015</b></para>
</remarks>
<example><para>For instance, where <c>cli</c> is an instance of
<see cref="T:InTheHand.Net.Sockets.IrDAClient"/>.</para>
In VB.NET, to set IrLMP mode (<c>IrLptMode</c>).
<code lang="VB.NET">
cli.Client.SetSocketOption(IrDASocketOptionLevel.Irlmp, _
IrDASocketOptionName.IrLptMode, _
1) 'representing true; can use True itself in FXv2.
</code>
In C#, to retrieve the maximum send size.
<code lang="C#">
int maxSendSize = (int)cli.Client.GetSocketOption(
IrDASocketOptionLevel.Irlmp,
IrDASocketOptionName.SendPduLength);
</code>
</example>
</member>
<member name="F:InTheHand.Net.Sockets.IrDASocketOptionName.EnumDevice">
<summary>
Gets the list of discovered devices.
Is used internally by <c>IrDAClient.DiscoverDevices</c>.
</summary>
<remarks>
In native terms takes a <c>DEVICE_LIST</c> struct.
</remarks>
</member>
<member name="F:InTheHand.Net.Sockets.IrDASocketOptionName.IasSet">
<summary>
Sets an entry in the local IAS (Information Access Service) database.
</summary>
<remarks>
In native terms takes a <c>IAS_SET</c> struct.
</remarks>
</member>
<member name="F:InTheHand.Net.Sockets.IrDASocketOptionName.IasQuery">
<summary>
Queries an entry in the peer's IAS (Information Access Service) database.
</summary>
<remarks>
In native terms takes a <c>IAS_QUERY</c> struct.
</remarks>
</member>
<member name="F:InTheHand.Net.Sockets.IrDASocketOptionName.SendPduLength">
<summary>
Retrieve the maximum send size when using IrLMP directly
(<see cref="F:InTheHand.Net.Sockets.IrDASocketOptionName.IrLptMode"/>).
IrLMP requires sent data to fit in one frame.
</summary>
<remarks>
<c>Integer</c>
</remarks>
</member>
<member name="F:InTheHand.Net.Sockets.IrDASocketOptionName.ExclusiveMode">
<summary>
Restricts the link to one application-level (IrLMP) connection;
for use when low latency is required.
Returns an error on all tested platforms.
</summary>
<remarks>
Returns an error on all tested platforms. <c>Boolean</c>
</remarks>
</member>
<member name="F:InTheHand.Net.Sockets.IrDASocketOptionName.IrLptMode">
<summary>
Sets IrLMP mode, disabling TinyTP. Used for instance when
printing with IrLPT.
</summary>
<remarks>
On Windows NT platforms at least, is ignored on server-side sockets.
<c>Boolean</c>
</remarks>
</member>
<member name="F:InTheHand.Net.Sockets.IrDASocketOptionName.NineWireMode">
<summary>
Sets IrCOMM 9-Wire/Cooked mode. Used for instance when connecting
to the modem in a mobile phone (service name <c>IrDA:IrCOMM</c>).
</summary>
<remarks>
In operation, received IrCOMM control information is discarded and
null information is sent.
<c>Boolean</c>
</remarks>
</member>
<member name="F:InTheHand.Net.Sockets.IrDASocketOptionName.SharpMode">
<summary>
Reportedly sets non-IrDA Sharp ASK mode on the Windows CE
platform. Presence unverified.
</summary>
</member>
<member name="T:InTheHand.Net.Sockets.AddressFamily32">
<summary>
Specifies additional addressing schemes that an instance of the <see cref="T:System.Net.Sockets.Socket"/> class can use.
</summary>
</member>
<member name="F:InTheHand.Net.Sockets.AddressFamily32.Bluetooth">
<summary>
Bluetooth address.
</summary>
<value>32</value>
</member>
<member name="F:InTheHand.Net.Sockets.AddressFamily32.Irda">
<summary>
IrDA address used on some Windows CE platforms (Has a different value to <see cref="T:System.Net.Sockets.AddressFamily">AddressFamily.IrDA</see>).
</summary>
<value>22</value>
</member>
<member name="T:InTheHand.Net.Sockets.BluetoothClient">
<summary>
Provides client connections for Bluetooth RFCOMM network services.
</summary>
<remarks>
<note>This class currently only supports devices which use the Microsoft
and Widcomm Bluetooth stacks, devices which use the other stacks will
not work.
</note>
<!--This para is in both the class remarks and in Connect(BtEndPoint)-->
<para>When connecting
normally an endpoint with an Address and a Service Class Id
is specified, then the system will automatically lookup the SDP
record on the remote device for that service class and connect to
the port number (RFCOMM Channel Number) specified there.
If instead a port value is provided in the endpoint then the SDP
lookup will be skipped and the system will connect to the specified
port directly.
</para>
<para>Note: Do not attempt to connect with service
<see cref="F:InTheHand.Net.Bluetooth.BluetoothService.RFCommProtocol">BluetoothService.RFCommProtocol</see>
this class always uses RFCOMM, instead the Service Class Id of the
particular service to which you want to connect must be specified,
perhaps
<see cref="F:InTheHand.Net.Bluetooth.BluetoothService.SerialPort">BluetoothService.SerialPort</see>,
<see cref="F:InTheHand.Net.Bluetooth.BluetoothService.ObexObjectPush">BluetoothService.ObexObjectPush</see>,
or the unique UUID/<see cref="T:System.Guid"/> that you are using in
your custom server application.
</para>
</remarks>
</member>
<member name="M:InTheHand.Net.Sockets.BluetoothClient.#ctor">
<summary>
Creates a new instance of <see cref="T:InTheHand.Net.Sockets.BluetoothClient"/>.
</summary>
</member>
<member name="M:InTheHand.Net.Sockets.BluetoothClient.#ctor(InTheHand.Net.BluetoothEndPoint)">
<summary>
Initializes a new instance of the <see cref="T:InTheHand.Net.Sockets.BluetoothClient"/> class and binds it to the specified local endpoint.
</summary>
<param name="localEP">The <see cref="T:InTheHand.Net.BluetoothEndPoint"/> to which you bind the Bluetooth Socket.
Only necessary on multi-radio system where you want to select the local radio to use.</param>
</member>
<member name="P:InTheHand.Net.Sockets.BluetoothClient.InquiryAccessCode">
<summary>
Get or set the Device Discovery Inquiry Access Code.
</summary>
-
<remarks>
<para>This is supported only the Microsoft stack on WindowsMobile/etc.
It is not supported on any other platforms.
</para>
<para>The default value is
<see cref="F:InTheHand.Net.BluetoothAddress.Giac">GIAC</see> (0x9E8B33).
See also constant
<see cref="F:InTheHand.Net.BluetoothAddress.Liac">LIAC</see> (0x9E8B00).
The valid range is 0x9E8B00 through 0x9E8B3f.
</para>
</remarks>
-
<value>An <see cref="T:System.Int32"/> containing the Access Code
to be used for Inquiry.
</value>
</member>
<member name="P:InTheHand.Net.Sockets.BluetoothClient.InquiryLength">
<summary>
Amount of time allowed to perform the query.
</summary>
<remarks>On Windows CE the actual value used is expressed in units of 1.28 seconds, so will be the nearest match for the value supplied.
The default value is 10 seconds. The maximum is 60 seconds.</remarks>
</member>
<member name="M:InTheHand.Net.Sockets.BluetoothClient.DiscoverDevices">
<summary>
Discovers accessible Bluetooth devices, both remembered and in-range,
and returns their names and addresses.
</summary>
-
<remarks>
<para>This is equivalent to calling
<see cref="M:InTheHand.Net.Sockets.BluetoothClient.DiscoverDevices(System.Int32,System.Boolean,System.Boolean,System.Boolean,System.Boolean)"
/>(255, true, true, true)
</para>
</remarks>
-
<returns>An array of BluetoothDeviceInfo objects describing the devices discovered.</returns>
</member>
<member name="M:InTheHand.Net.Sockets.BluetoothClient.DiscoverDevices(System.Int32)">
<summary>
Discovers accessible Bluetooth devices, both remembered and in-range,
and returns their names and addresses.
</summary>
-
<remarks>
<para>This is equivalent to calling
<see cref="M:InTheHand.Net.Sockets.BluetoothClient.DiscoverDevices(System.Int32,System.Boolean,System.Boolean,System.Boolean,System.Boolean)"
/>(maxDevices, true, true, true)
</para>
</remarks>
-
<param name="maxDevices">The number of in-range devices to find before the inquiry may be stopped early.
The result can contain more than this number of devices.
</param>
-
<returns>An array of BluetoothDeviceInfo objects describing the devices discovered.</returns>
</member>
<member name="M:InTheHand.Net.Sockets.BluetoothClient.DiscoverDevices(System.Int32,System.Boolean,System.Boolean,System.Boolean)">
<summary>
Discovers accessible Bluetooth devices, optionally remembered and in-range,
and returns their names and addresses.
</summary>
-
<param name="maxDevices">The number of in-range devices to find before the inquiry may be stopped early.
The result can contain more than this number of devices.
</param>
<param name="authenticated">True to return previously authenticated/paired devices.</param>
<param name="remembered">True to return remembered devices.</param>
<param name="unknown">True to return previously unknown devices.</param>
-
<returns>An array of BluetoothDeviceInfo objects describing the devices discovered.</returns>
</member>
<member name="M:InTheHand.Net.Sockets.BluetoothClient.DiscoverDevices(System.Int32,System.Boolean,System.Boolean,System.Boolean,System.Boolean)">
<summary>
Discovers accessible Bluetooth devices, optionally remembered and in-range or just in-range,
and returns their names and addresses.
</summary>
-
<remarks>
<para>The <paramref name="discoverableOnly"/> parameter is not supported
on the Microsoft stack on WinXP as the stack there returns the remembered and Device-Inquiry-results already
merged, it is however supported on Windows 7.
It is supported on WM/CE and on Widcomm (both platforms).
Note when that flag is set the other related flag values are ignored.
</para>
<para>To remove devices from the list of remembered/authenticated
devices use <see cref="M:InTheHand.Net.Bluetooth.BluetoothSecurity.RemoveDevice(InTheHand.Net.BluetoothAddress)">BluetoothSecurity.RemoveDevice</see>
</para>
</remarks>
-
<param name="maxDevices">The number of in-range devices to find before the inquiry may be stopped early.
The result can contain more than this number of devices.
</param>
<param name="authenticated">True to return previously authenticated/paired devices.</param>
<param name="remembered">True to return remembered devices.</param>
<param name="unknown">True to return previously unknown devices.</param>
<param name="discoverableOnly">True to return only the devices that
are in range, and in discoverable mode. See the remarks section.</param>
-
<returns>An array of BluetoothDeviceInfo objects describing the devices discovered.</returns>
</member>
<member name="M:InTheHand.Net.Sockets.BluetoothClient.DiscoverDevicesInRange">
<summary>
Discovers Bluetooth devices that are in range and are in &#x2018;discoverable mode&#x2019;
</summary>
-
<remarks>
<para>This is equivalent to calling
<see cref="M:InTheHand.Net.Sockets.BluetoothClient.DiscoverDevices(System.Int32,System.Boolean,System.Boolean,System.Boolean,System.Boolean)"
/>(255, false, false, false, true)
</para>
</remarks>
-
<returns>An array of BluetoothDeviceInfo objects describing the devices discovered.</returns>
</member>
<member name="M:InTheHand.Net.Sockets.BluetoothClient.BeginDiscoverDevices(System.Int32,System.Boolean,System.Boolean,System.Boolean,System.Boolean,System.AsyncCallback,System.Object)">
<summary>
An asynchronous version of <see cref="M:InTheHand.Net.Sockets.BluetoothClient.DiscoverDevices(System.Int32,System.Boolean,System.Boolean,System.Boolean,System.Boolean)"/>
</summary>
-
<param name="maxDevices">See <see cref="M:InTheHand.Net.Sockets.BluetoothClient.DiscoverDevices(System.Int32,System.Boolean,System.Boolean,System.Boolean,System.Boolean)"/>.
</param>
<param name="authenticated">See <see cref="M:InTheHand.Net.Sockets.BluetoothClient.DiscoverDevices(System.Int32,System.Boolean,System.Boolean,System.Boolean,System.Boolean)"/>.
</param>
<param name="remembered">See <see cref="M:InTheHand.Net.Sockets.BluetoothClient.DiscoverDevices(System.Int32,System.Boolean,System.Boolean,System.Boolean,System.Boolean)"/>.
</param>
<param name="unknown">See <see cref="M:InTheHand.Net.Sockets.BluetoothClient.DiscoverDevices(System.Int32,System.Boolean,System.Boolean,System.Boolean,System.Boolean)"/>.
</param>
<param name="discoverableOnly">See <see cref="M:InTheHand.Net.Sockets.BluetoothClient.DiscoverDevices(System.Int32,System.Boolean,System.Boolean,System.Boolean,System.Boolean)"/>.
</param>
<param name="callback">An optional asynchronous callback, to be called
when the discovery is complete.
</param>
<param name="state">A user-provided object that distinguishes this
particular asynchronous discovery request from other requests.
</param>
-
<returns>An <see cref="T:System.IAsyncResult"/> that represents the
asynchronous discovery, which could still be pending.
</returns>
</member>
<member name="M:InTheHand.Net.Sockets.BluetoothClient.EndDiscoverDevices(System.IAsyncResult)">
<summary>
Ends an asynchronous Service Record lookup query.
</summary>
-
<param name="asyncResult">An <see cref="T:System.IAsyncResult"/> returned
by <see cref="M:InTheHand.Net.Sockets.BluetoothClient.BeginDiscoverDevices(System.Int32,System.Boolean,System.Boolean,System.Boolean,System.Boolean,System.AsyncCallback,System.Object)"/>.
</param>
-
<returns>See <see cref="M:InTheHand.Net.Sockets.BluetoothClient.DiscoverDevices(System.Int32,System.Boolean,System.Boolean,System.Boolean,System.Boolean)"/>.
</returns>
</member>
<member name="T:InTheHand.Net.Sockets.BluetoothClient.LiveDiscoveryCallback">
<exclude/>
</member>
<member name="P:InTheHand.Net.Sockets.BluetoothClient.Available">
<summary>
Gets the amount of data that has been received from the network and is available to be read.
</summary>
<value>The number of bytes of data received from the network and available to be read.</value>
<exception cref="T:System.ObjectDisposedException">The <see cref="T:System.Net.Sockets.Socket"/> has been closed.</exception>
</member>
<member name="P:InTheHand.Net.Sockets.BluetoothClient.Client">
<summary>
Gets or sets the underlying <see cref="T:System.Net.Sockets.Socket"/>.
</summary>
-
<value>The underlying network <see cref="T:System.Net.Sockets.Socket"/>.</value>
-
<remarks>
<note>The property is only supported on Microsoft Bluetooth stack platforms.
</note>
</remarks>
</member>
<member name="M:InTheHand.Net.Sockets.BluetoothClient.Connect(InTheHand.Net.BluetoothEndPoint)">
<summary>
Connects a client to a specified endpoint.
</summary>
-
<param name="remoteEP">A <see cref="T:InTheHand.Net.BluetoothEndPoint"/> that represents the server on the remote device.</param>
-
<remarks>
<!--This para is in both the class remarks and in Connect(BtEndPoint)-->
<para>Normally an endpoint with an Address and a Service Class Id
is specified, then the system will automatically lookup the SDP
record on the remote device for that service class and connect to
the port number (RFCOMM Channel Number) specified there.
If instead a port value is provided in the endpoint then the SDP
lookup will be skipped and the system will connect to the specified
port directly.
</para>
<para>Note: Do not attempt to connect with service
<see cref="F:InTheHand.Net.Bluetooth.BluetoothService.RFCommProtocol">BluetoothService.RFCommProtocol</see>.
See the <see cref="T:InTheHand.Net.Sockets.BluetoothClient">class</see> remarks for more information.
</para>
</remarks>
</member>
<member name="M:InTheHand.Net.Sockets.BluetoothClient.Connect(InTheHand.Net.BluetoothAddress,System.Guid)">
<summary>
Connects the client to a remote Bluetooth host using the specified Bluetooth address and service identifier.
</summary>
-
<remarks>
<!--This para is in both the class remarks and in Connect(BtEndPoint)-->
<para>The system will automatically lookup the SDP
record on the remote device for that service class and connect to
the port number (RFCOMM Channel Number) specified there.
</para>
<para>Note: Do not attempt to connect with service
<see cref="F:InTheHand.Net.Bluetooth.BluetoothService.RFCommProtocol">BluetoothService.RFCommProtocol</see>.
See the <see cref="T:InTheHand.Net.Sockets.BluetoothClient">class</see> remarks for more information.
</para>
</remarks>
-
<param name="address">The <see cref="T:InTheHand.Net.BluetoothAddress"/> of the remote host.
</param>
<param name="service">The Service Class Id of the service on the remote host.
The standard Bluetooth Service Classes are provided on class
<see cref="T:InTheHand.Net.Bluetooth.BluetoothService"/>.
</param>
</member>
<member name="M:InTheHand.Net.Sockets.BluetoothClient.BeginConnect(InTheHand.Net.BluetoothAddress,System.Guid,System.AsyncCallback,System.Object)">
<summary>
Begins an asynchronous request for a remote host connection.
The remote host is specified by a <see cref="T:InTheHand.Net.BluetoothAddress"/> and a service identifier (Guid).
</summary>
-
<remarks>
<para>See the <see cref="M:InTheHand.Net.Sockets.BluetoothClient.Connect(InTheHand.Net.BluetoothAddress,System.Guid)"/>
method for information on the usage of the values in the endpoint.
</para>
</remarks>
-
<param name="address">The <see cref="T:InTheHand.Net.BluetoothAddress"/> of the remote host.
</param>
<param name="service">The Service Class Id of the service on the remote host.
The standard Bluetooth Service Classes are provided on class
<see cref="T:InTheHand.Net.Bluetooth.BluetoothService"/>
</param>
<param name="requestCallback">An <see cref="T:System.AsyncCallback"/> delegate that
references the method to invoke when the operation is complete.
</param>
<param name="state">A user-defined object that contains information
about the connect operation. This object is passed to the <paramref name="requestCallback"/>
delegate when the operation is complete.
</param>
-
<returns>An <see cref="T:System.IAsyncResult"/> that represents the
asynchronous connect, which could still be pending.
</returns>
</member>
<member name="M:InTheHand.Net.Sockets.BluetoothClient.BeginConnect(InTheHand.Net.BluetoothEndPoint,System.AsyncCallback,System.Object)">
<summary>
Begins an asynchronous request for a remote host connection.
The remote server is specified by a <see cref="T:InTheHand.Net.BluetoothEndPoint"/>.
</summary>
-
<param name="remoteEP">A <see cref="T:InTheHand.Net.BluetoothEndPoint"/> that
represents the server on the remote device.
See the <see cref="M:InTheHand.Net.Sockets.BluetoothClient.Connect(InTheHand.Net.BluetoothEndPoint)"/>
method for information on the usage of the values in the endpoint.
</param>
<param name="requestCallback">An <see cref="T:System.AsyncCallback"/> delegate that
references the method to invoke when the operation is complete.
</param>
<param name="state">A user-defined object that contains information
about the connect operation. This object is passed to the <paramref name="requestCallback"/>
delegate when the operation is complete.
</param>
-
<remarks>
<para>See the <see cref="M:InTheHand.Net.Sockets.BluetoothClient.Connect(InTheHand.Net.BluetoothEndPoint)"/>
method for information on the usage of the values in the endpoint.
</para>
</remarks>
-
<returns>An <see cref="T:System.IAsyncResult"/> that represents the
asynchronous connect, which could still be pending.
</returns>
</member>
<member name="M:InTheHand.Net.Sockets.BluetoothClient.EndConnect(System.IAsyncResult)">
<summary>
Asynchronously accepts an incoming connection attempt.
</summary>
<param name="asyncResult">An <see cref="T:System.IAsyncResult"/> object returned by a call to
<see cref="M:InTheHand.Net.Sockets.BluetoothClient.BeginConnect(InTheHand.Net.BluetoothEndPoint,System.AsyncCallback,System.Object)"/>
/ <see cref="M:InTheHand.Net.Sockets.BluetoothClient.BeginConnect(InTheHand.Net.BluetoothAddress,System.Guid,System.AsyncCallback,System.Object)"/>.
</param>
</member>
<member name="P:InTheHand.Net.Sockets.BluetoothClient.Connected">
<summary>
Gets a value indicating whether the underlying <see cref="T:System.Net.Sockets.Socket"/> for a <see cref="T:InTheHand.Net.Sockets.BluetoothClient"/> is connected to a remote host.
</summary>
<value>true if the <see cref="P:InTheHand.Net.Sockets.BluetoothClient.Client"/> socket was connected to a remote resource as of the most recent operation; otherwise, false.</value>
</member>
<member name="M:InTheHand.Net.Sockets.BluetoothClient.Close">
<summary>
Closes the <see cref="T:InTheHand.Net.Sockets.BluetoothClient"/> and the underlying connection.
</summary>
-
<remarks>The two XxxxxClient classes produced by Microsoft (TcpClient,
and IrDAClient in the NETCF) have had various documented behaviours and various
actual behaviours for close/dispose/finalize on the various platforms. :-(
The current TcpClient implementation on is that
Close/Dispose closes the connection by closing the underlying socket and/or
NetworkStream, and finalization doesn't close either. This is the behaviour
we use for the here (for <see cref="T:InTheHand.Net.Sockets.BluetoothClient"/>,
<see cref="T:InTheHand.Net.Sockets.IrDAClient"/>). (The documentation in MSDN for
<see cref="T:System.Net.Sockets.TcpClient"/> is still wrong by-the-way,
see <see href="https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=158480">
Microsoft feedback #158480</see>).
</remarks>
</member>
<member name="M:InTheHand.Net.Sockets.BluetoothClient.GetStream">
<summary>
Gets the underlying stream of data.
</summary>
<returns>The underlying <see cref="T:System.Net.Sockets.NetworkStream"/>.</returns>
<remarks><see cref="M:InTheHand.Net.Sockets.BluetoothClient.GetStream"/> returns a <see cref="T:System.Net.Sockets.NetworkStream"/> that you can use to send and receive data.
The <see cref="T:System.Net.Sockets.NetworkStream"/> class inherits from the <see cref="T:System.IO.Stream"/> class, which provides a rich collection of methods and properties used to facilitate network communications.
<para>You must call the <see cref="M:InTheHand.Net.Sockets.BluetoothClient.Connect(InTheHand.Net.BluetoothEndPoint)"/> / <see cref="M:InTheHand.Net.Sockets.BluetoothClient.Connect(InTheHand.Net.BluetoothAddress,System.Guid)"/>
method first, or the <see cref="M:InTheHand.Net.Sockets.BluetoothClient.GetStream"/> method will throw an <see cref="T:System.InvalidOperationException"/>.
After you have obtained the <see cref="T:System.Net.Sockets.NetworkStream"/>, call the <see cref="M:System.Net.Sockets.NetworkStream.Write(System.Byte[],System.Int32,System.Int32)"/> method to send data to the remote host.
Call the <see cref="M:System.Net.Sockets.NetworkStream.Read(System.Byte[],System.Int32,System.Int32)"/> method to receive data arriving from the remote host.
Both of these methods block until the specified operation is performed.
You can avoid blocking on a read operation by checking the <see cref="P:System.Net.Sockets.NetworkStream.DataAvailable"/> property.
A true value means that data has arrived from the remote host and is available for reading.
In this case, <see cref="M:System.Net.Sockets.NetworkStream.Read(System.Byte[],System.Int32,System.Int32)"/> is guaranteed to complete immediately.
If the remote host has shutdown its connection, <see cref="M:System.Net.Sockets.NetworkStream.Read(System.Byte[],System.Int32,System.Int32)"/> will immediately return with zero bytes.</para></remarks>
<exception cref="T:System.InvalidOperationException">The <see cref="T:InTheHand.Net.Sockets.BluetoothClient"/> is not connected to a remote host.</exception>
<exception cref="T:System.ObjectDisposedException">The <see cref="T:InTheHand.Net.Sockets.BluetoothClient"/> has been closed.</exception>
</member>
<member name="P:InTheHand.Net.Sockets.BluetoothClient.LingerState">
<summary>
Gets or sets a value that specifies whether the client will delay closing
in an attempt to send all pending data.
</summary>
-
<remarks>
<para>See <see cref="P:System.Net.Sockets.Socket.LingerState">Socket.LingerState</see>.
</para>
<para>In Widcomm, linger <c>false</c> (disabled) is not supported.
</para>
</remarks>
-
<value>A <see cref="T:System.Net.Sockets.LingerOption"/> that specifies
how to linger while closing a socket.
</value>
</member>
<member name="P:InTheHand.Net.Sockets.BluetoothClient.Authenticate">
<summary>
Sets whether an authenticated connection is required.
</summary>
<remarks>
<para>Supported mostly on the Microsoft stack (desktop and WM/CE).
</para>
For disconnected sockets, specifies that authentication is required in order for a connect or accept operation to complete successfully.
Setting this option actively initiates authentication during connection establishment, if the two Bluetooth devices were not previously authenticated.
The user interface for passkey exchange, if necessary, is provided by the operating system outside the application context.
For outgoing connections that require authentication, the connect operation fails (on Win32, with WSAEACCES) if authentication is not successful.
In response, the application may prompt the user to authenticate the two Bluetooth devices before connection.
For incoming connections, the connection is rejected if authentication cannot be established and fails (on Win32, returning a WSAEHOSTDOWN error).
<para>MSDN. Desktop: <see href="http://msdn.microsoft.com/en-us/library/aa362911(VS.85).aspx" />
, WM: <see href="http://msdn.microsoft.com/en-us/library/aa915899.aspx" />
</para>
</remarks>
</member>
<member name="P:InTheHand.Net.Sockets.BluetoothClient.Encrypt">
<summary>
Sets whether an encrypted connection is required.
</summary>
-
<remarks>
<para>Supported mostly on the Microsoft stack (desktop and WM/CE).
</para>
On unconnected sockets, enforces encryption to establish a connection.
Encryption is only available for authenticated connections.
For incoming connections, a connection for which encryption cannot be established is automatically rejected (and on Win32, returns WSAEHOSTDOWN as the error).
For outgoing connections, the Connect function fails (on Win32, with WSAEACCES) if encryption cannot be established.
In response, the application may prompt the user to authenticate the two Bluetooth devices before connection.
<note>For Windows Mobile/CE:
On a connected socket, this command will toggle encryption for all sessions sharing the same Baseband connection. You should use it ONLY if you know what you are doing (for example, yours is the only application); otherwise, the link presumed more secure by another application may become unencrypted.
</note>
<para>MSDN. Desktop: <see href="http://msdn.microsoft.com/en-us/library/aa362911(VS.85).aspx" />
, WM: <see href="http://msdn.microsoft.com/en-us/library/aa915899.aspx" />
</para>
</remarks>
</member>
<member name="P:InTheHand.Net.Sockets.BluetoothClient.LinkKey">
<summary>
Returns link key associated with peer Bluetooth device.
</summary>
</member>
<member name="P:InTheHand.Net.Sockets.BluetoothClient.LinkPolicy">
<summary>
Returns the Link Policy of the current connection.
</summary>
</member>
<member name="M:InTheHand.Net.Sockets.BluetoothClient.SetPin(System.String)">
<summary>
Sets the PIN associated with the remote device.
</summary>
<param name="pin">PIN which must be composed of 1 to 16 ASCII characters.</param>
<remarks>
<para>Is not supported on all platforms.
For instance see the Widcomm documentation
</para>
<para>Assigning null (Nothing in VB) or an empty String will revoke the PIN.
</para>
<para>In version 2.3 could only be called when connected.
</para>
</remarks>
</member>
<member name="M:InTheHand.Net.Sockets.BluetoothClient.SetPin(InTheHand.Net.BluetoothAddress,System.String)">
<summary>
Set or change the PIN to be used with a specific remote device.
</summary>
<param name="device">Address of Bluetooth device.</param>
<param name="pin">PIN string consisting of 1 to 16 ASCII characters.</param>
<remarks>
<para>Is not supported on all platforms.
For instance see the Widcomm documentation
</para>
<para>Assigning null (Nothing in VB) or an empty String will revoke the PIN.
</para>
</remarks>
</member>
<member name="P:InTheHand.Net.Sockets.BluetoothClient.RemoteEndPoint">
<summary>
Get the remote endpoint.
</summary>
-
<value>
The <see cref="T:InTheHand.Net.BluetoothEndPoint"/> with which the
<see cref="T:InTheHand.Net.Sockets.BluetoothClient"/> is communicating.
</value>
-
<remarks>
<para>Note it can't be guaranteed that the <see cref="P:InTheHand.Net.BluetoothEndPoint.Service"/>
and <see cref="P:InTheHand.Net.BluetoothEndPoint.Port"/> parts
of the returned endpoint are valid; and this will affect the
<see cref="M:InTheHand.Net.BluetoothEndPoint.ToString"/> output.
In particular, on MSFT, the <see cref="P:InTheHand.Net.Sockets.BluetoothClient.RemoteEndPoint"/>
for a client connection seems to have no <see cref="P:InTheHand.Net.BluetoothEndPoint.Port"/>
and a garbage <see cref="P:InTheHand.Net.BluetoothEndPoint.Service"/>,
so we would display garbage there in <see cref="M:InTheHand.Net.BluetoothEndPoint.ToString"/>.
An in-bound/server connection however does have a valid Port.
(There the endpoints are returned from the native socket).
On the other hand on Widcomm, Bluetopia and on BlueSoleil the
opposite is the case: for a client the Port is known but it isn't
for a server, and the <see cref="P:InTheHand.Net.BluetoothEndPoint.Service"/>
is blank in both cases.
</para>
</remarks>
</member>
<member name="P:InTheHand.Net.Sockets.BluetoothClient.RemoteMachineName">
<summary>
Gets the name of the remote device.
</summary>
</member>
<member name="M:InTheHand.Net.Sockets.BluetoothClient.GetRemoteMachineName(InTheHand.Net.BluetoothAddress)">
<summary>
Gets the name of the specified remote device.
</summary>
<param name="a">Address of remote device.</param>
<returns>Friendly name of specified device.</returns>
</member>
<member name="M:InTheHand.Net.Sockets.BluetoothClient.GetRemoteMachineName(System.Net.Sockets.Socket)">
<summary>
Gets the name of a device by a specified socket.
</summary>
<param name="s"> A <see cref="T:System.Net.Sockets.Socket"/>.</param>
<returns>Returns a string value of the computer or device name.</returns>
</member>
<member name="M:InTheHand.Net.Sockets.BluetoothClient.Dispose">
<summary>
Closes the <see cref="T:InTheHand.Net.Sockets.BluetoothClient"/> and the underlying connection.
</summary>
-
<seealso cref="M:InTheHand.Net.Sockets.BluetoothClient.Close"/>
</member>
<member name="T:InTheHand.Net.Sockets.BluetoothDeviceInfo">
<summary>
Provides information about an available device obtained by the client during device discovery.
</summary>
</member>
<member name="M:InTheHand.Net.Sockets.BluetoothDeviceInfo.#ctor(InTheHand.Net.BluetoothAddress)">
<summary>
Initializes an instance of the <see cref="T:InTheHand.Net.Sockets.BluetoothDeviceInfo"/> class
for the device with the given address.
</summary>
-
<param name="address">The <see cref="T:InTheHand.Net.BluetoothAddress"/>.</param>
</member>
<member name="M:InTheHand.Net.Sockets.BluetoothDeviceInfo.Refresh">
<summary>
Forces the system to refresh the device information.
</summary>
-
<remarks>
See <see cref="P:InTheHand.Net.Sockets.BluetoothDeviceInfo.DeviceName"/>
for one reason why this method is necessary.
</remarks>
</member>
<member name="M:InTheHand.Net.Sockets.BluetoothDeviceInfo.Update">
<summary>
Updates the device name used to display the device, affects the local computer cache.
</summary>
<remarks>On Windows CE this only affects devices which are already paired.</remarks>
</member>
<member name="P:InTheHand.Net.Sockets.BluetoothDeviceInfo.DeviceAddress">
<summary>
Gets the device identifier.
</summary>
</member>
<member name="P:InTheHand.Net.Sockets.BluetoothDeviceInfo.DeviceName">
<summary>
Gets a name of a device.
</summary>
-
<remarks>
<para>Note, that due the way in which Bluetooth device discovery works,
the existence and address of a device is known first, but a separate
query has to be carried out to find whether the device also has a name.
This means that if a device is discovered afresh then this property might
return only a text version of the device&#x2019;s address and not its
name, one can also see this in the Windows&#x2019; Bluetooth device dialogs
where the device appears first with its address and the name is later
updated. To see the name, wait for some time and access this property again
having called <see cref="M:InTheHand.Net.Sockets.BluetoothDeviceInfo.Refresh"/>
in the meantime.
</para>
</remarks>
</member>
<member name="P:InTheHand.Net.Sockets.BluetoothDeviceInfo.ClassOfDevice">
<summary>
Returns the Class of Device of the remote device.
</summary>
-
<remarks>
<para>
Some CE 4.2 devices such as original PPC2003 devices don't have the native
API on which this property depends &#x2014; it was added as part of a hotfix.
The property will always return zero in such a case. On WM/CE we also
attempt to get the CoD value as part of the discovery process; this is
of course only works for devices in-range.
</para>
</remarks>
</member>
<member name="P:InTheHand.Net.Sockets.BluetoothDeviceInfo.Rssi">
<summary>
Returns the signal strength for the Bluetooth connection with the peer device.
<para><b>Supports only on some platforms.</b></para>
</summary>
-
<value>Valid values for this property are -128 to 128. It returns
<see cref="F:System.Int32.MinValue">Int32.MinValue</see> on failure.
</value>
-
<remarks>
<para>Thus there are multiple reasons which this property can return
the error value (i.e. <see cref="F:System.Int32.MinValue">Int32.MinValue</see>).
</para>
<list type="number">
<item>On an unsupported platform, e.g. MSFT+Win32, or MSFT+CE/WM on an
older version. See below.
</item>
<item>The remote device is not turned-on or in range. See below.
</item>
<item>On Widcomm, there is no connection to the remote device. See below.
</item>
</list>
<para>Platform support:</para>
<list type="bullet">
<item>Does <b>not</b> work on Win32 with the Microsoft Bluetooth stack.
That platform provide no support for RSSI, please contact Microsoft
to complain.
</item>
<item>Works on Windows Mobile 5.0, Windows Embedded CE 6.0, or later
versions.
</item>
<item>Works on Widcomm, both platforms.
We will <i>not</i> try to connect, see below.
</item>
</list>
<para>
</para>
<para>Finally, to get an RSSI value Bluetooth requires an open
connection to the peer device.
On Widcomm we will <i>not</i> attempt to connect, so the caller must
ensure that there's a connection --
perhaps it could call <see cref="M:InTheHand.Net.Sockets.BluetoothDeviceInfo.GetServiceRecords(System.Guid)"/>
just before accessing this property.
On CE/WM if there is no active connection, then we will attempt to
create one. This of course <i>can</i> be <i>slow</i>, and <i>will</i>
be slow if the remote device is not in range.
(Bluetooth 2.1 supports getting the RSSI value at discovery time which
might provide the solution for many cases. However only the MSFT+Win32
stack specifically supports v2.1, and of course it doesn't support RSSI
at all!)
</para>
<para>Note that the Bluetooth specification doesn't require that the
radio hardware provides any great precision in its RSSI readings.
The spec says for instance, in v2.1 Volume 2 Part E ("HCI") Section 7.5.4:
&#x201C;Note: how accurate the dB values will be depends on the Bluetooth hardware.
The only requirements for the hardware are that the Bluetooth device is able to
tell whether the RSSI is inside, above or below the Golden Device Power Range.&#x201D;
</para>
</remarks>
</member>
<member name="P:InTheHand.Net.Sockets.BluetoothDeviceInfo.InstalledServices">
<summary>
Returns a list of services which are already installed for use on the calling machine.
</summary>
<remarks>
<para>This property returns the services already configured for use.
Those are the ones that are checked in the &#x201C;Services&#x201D; tab
of the device&#x2019;s property sheet in the Bluetooth Control panel.
I presume the behaviour is similar on CE.
</para>
<para>Will only return available services for paired devices.
</para>
<para>It of course will also only returns standard system services which Windows understands.
(On desktop Windows this method calls the OS function <c>BluetoothEnumerateInstalledServices</c>).
</para>
<para>To see all the services that a device advertises use the
<see cref="M:InTheHand.Net.Sockets.BluetoothDeviceInfo.GetServiceRecords(System.Guid)"/>
method.
</para>
</remarks>
</member>
<member name="M:InTheHand.Net.Sockets.BluetoothDeviceInfo.SetServiceState(System.Guid,System.Boolean)">
<summary>
Enables or disables services for a Bluetooth device.
</summary>
<param name="service">The service GUID on the remote device.</param>
<param name="state">Service state - TRUE to enable the service, FALSE to disable it.</param>
<remarks>
When called on Windows CE, the device will require a soft-reset to enabled the settings.
<note>
<para>The system maintains a mapping of service guids to supported drivers for
Bluetooth-enabled devices. Enabling a service installs the corresponding
device driver. Disabling a service removes the corresponding device driver.
If a non-supported service is enabled, a driver will not be installed.
</para>
</note>
<para>This overload is silent on error; the other overload raises an exception
if required
(<see cref="M:InTheHand.Net.Sockets.BluetoothDeviceInfo.SetServiceState(System.Guid,System.Boolean,System.Boolean)"/>).
</para>
</remarks>
-
<exception cref="T:System.PlatformNotSupportedException">
Thrown if this method is called on Windows CE platforms.</exception>
</member>
<member name="M:InTheHand.Net.Sockets.BluetoothDeviceInfo.SetServiceState(System.Guid,System.Boolean,System.Boolean)">
<summary>
Enables or disables services for a Bluetooth device.
</summary>
<param name="service">The service GUID on the remote device.</param>
<param name="state">Service state - TRUE to enable the service, FALSE to disable it.</param>
<param name="throwOnError">Whether the method should raise an exception
when
</param>
<remarks>
When called on Windows CE, the device will require a soft-reset to enabled the settings.
<note>
<para>The system maintains a mapping of service guids to supported drivers for
Bluetooth-enabled devices. Enabling a service installs the corresponding
device driver. Disabling a service removes the corresponding device driver.
If a non-supported service is enabled, a driver will not be installed.
</para>
</note>
</remarks>
-
<exception cref="T:System.ComponentModel.Win32Exception">The call failed.
</exception>
</member>
<member name="M:InTheHand.Net.Sockets.BluetoothDeviceInfo.GetServiceRecords(System.Guid)">
<summary>
Run an SDP query on the device&#x2019;s Service Discovery Database.
</summary>
-
<remarks>
<para>
For instance to see whether the device has an an Serial Port service
search for UUID <see cref="F:InTheHand.Net.Bluetooth.BluetoothService.SerialPort"/>,
or too find all the services that use RFCOMM use
<see cref="F:InTheHand.Net.Bluetooth.BluetoothService.RFCommProtocol"/>,
or all the services use
<see cref="F:InTheHand.Net.Bluetooth.BluetoothService.L2CapProtocol"/>.
</para>
<para>
If the device isn&#x2019;t accessible a <see cref="T:System.Net.Sockets.SocketException"/>
with <see cref="P:System.Net.Sockets.SocketException.ErrorCode"/>
10108 (0x277C) occurs.
</para>
</remarks>
-
<param name="service">The UUID to search for, as a <see cref="T:System.Guid"/>.
</param>
-
<returns>The parsed record as an
<see cref="T:InTheHand.Net.Bluetooth.ServiceRecord"/>.
</returns>
-
<example>
<code lang="VB.NET">
Dim bdi As BluetoothDeviceInfo = ...
Dim records As ServiceRecord() = bdi.GetServiceRecords(BluetoothService.RFCommProtocol)
' Dump each to console
For Each curRecord As ServiceRecord In records
ServiceRecordUtilities.Dump(Console.Out, curRecord)
Next
</code>
</example>
-
<exception cref="T:System.Net.Sockets.SocketException">
The query failed.
</exception>
</member>
<member name="M:InTheHand.Net.Sockets.BluetoothDeviceInfo.BeginGetServiceRecords(System.Guid,System.AsyncCallback,System.Object)">
<summary>
Begins an asynchronous Service Record lookup query.
</summary>
-
<param name="service">See <see cref="M:InTheHand.Net.Sockets.BluetoothDeviceInfo.GetServiceRecords(System.Guid)"/>.
</param>
<param name="callback">An optional asynchronous callback, to be called
when the query is complete.
</param>
<param name="state">A user-provided object that distinguishes this
particular asynchronous Service Record lookup query from other requests.
</param>
-
<returns>An <see cref="T:System.IAsyncResult"/> that represents the
asynchronous Service Record lookup query, which could still be pending.
</returns>
</member>
<member name="M:InTheHand.Net.Sockets.BluetoothDeviceInfo.EndGetServiceRecords(System.IAsyncResult)">
<summary>
Ends an asynchronous Service Record lookup query.
</summary>
-
<param name="asyncResult">An <see cref="T:System.IAsyncResult"/>
object that was obtained when the asynchronous operation was started.
</param>
-
<returns>The parsed record as an
<see cref="T:InTheHand.Net.Bluetooth.ServiceRecord"/>.
</returns>
</member>
<member name="M:InTheHand.Net.Sockets.BluetoothDeviceInfo.GetServiceRecordsUnparsed(System.Guid)">
<summary>
Run an SDP query on the device&#x2019;s Service Discovery Database,
returning the raw byte rather than a parsed record.
</summary>
-
<remarks>
If the device isn&#x2019;t accessible a <see cref="T:System.Net.Sockets.SocketException"/>
with <see cref="P:System.Net.Sockets.SocketException.ErrorCode"/>
10108 (0x277C) occurs.
</remarks>
-
<param name="service">The UUID to search for, as a <see cref="T:System.Guid"/>.
</param>
-
<returns>An array of array of <see cref="T:System.Byte"/>.</returns>
-
<exception cref="T:System.Net.Sockets.SocketException">
The query failed.
</exception>
</member>
<member name="M:InTheHand.Net.Sockets.BluetoothDeviceInfo.GetVersions">
<summary>
Gets the radio version and manufacturer information for the device.
Needs a connection to the device.
</summary>
-
<remarks>
<para>Includes information such as the LMP versions, supported
features and the manufacturer of the radio/Bluetooth Controller.
</para>
<para>If the device is not connected this information cannot be
obtained; an error will occur if there is no connection.
The values will be cached until <see cref="M:InTheHand.Net.Sockets.BluetoothDeviceInfo.Refresh"/> is called.
</para>
<para>This feature is currently supported only on the
Microsoft Bluetooth stack on both desktop Windows and Windows
Mobile. However Windows XP does not provide this information.
Implementation is possible on some of the other Bluetooth stacks
and will depend on demand/support for the user community.
</para>
</remarks>
-
<exception cref="T:System.ComponentModel.Win32Exception">
An error occurred, desktop Windows returns error code
1167 ERROR_DEVICE_NOT_CONNECTED and Windows Mobile returns error code
1168 ERROR_NOT_FOUND.
Windows XP which does not support this functionality returns error code
2 ERROR_FILE_NOT_FOUND.
</exception>
<exception cref="T:System.NotImplementedException">
Not yet implemented.
</exception>
<exception cref="T:System.NotSupportedException">
This stack does not support getting this information.
</exception>
-
<returns>The radio version etc information as a
<see cref="T:InTheHand.Net.Bluetooth.RadioVersions"/> instance.
</returns>
</member>
<member name="P:InTheHand.Net.Sockets.BluetoothDeviceInfo.Connected">
<summary>
Specifies whether the device is connected.
</summary>
<remarks>Not supported under Windows CE and will always return false.</remarks>
<seealso cref="P:InTheHand.Net.Sockets.BluetoothDeviceInfo.Remembered"/>
<seealso cref="P:InTheHand.Net.Sockets.BluetoothDeviceInfo.Authenticated"/>
</member>
<member name="P:InTheHand.Net.Sockets.BluetoothDeviceInfo.Remembered">
<summary>
Specifies whether the device is a remembered device. Not all remembered devices are authenticated.
</summary>
-
<remarks>Now supported under Windows CE &#x2014; will return the same as
<see cref="P:InTheHand.Net.Sockets.BluetoothDeviceInfo.Authenticated"/>.
</remarks>
<seealso cref="P:InTheHand.Net.Sockets.BluetoothDeviceInfo.Connected"/>
<seealso cref="P:InTheHand.Net.Sockets.BluetoothDeviceInfo.Authenticated"/>
</member>
<member name="P:InTheHand.Net.Sockets.BluetoothDeviceInfo.Authenticated">
<summary>
Specifies whether the device is authenticated, paired, or bonded. All authenticated devices are remembered.
</summary>
<remarks>Is now supported on both CE and XP.</remarks>
<seealso cref="P:InTheHand.Net.Sockets.BluetoothDeviceInfo.Connected"/>
<seealso cref="P:InTheHand.Net.Sockets.BluetoothDeviceInfo.Remembered"/>
</member>
<member name="P:InTheHand.Net.Sockets.BluetoothDeviceInfo.LastSeen">
<summary>
Date and Time this device was last seen by the system.
</summary>
-
<remarks><para>Is set by the Inquiry (Device Discovery) process on
the stacks where we handle Inquiry directly &#x2014; that is
every platform except the Microsoft stack on Win32 (MSFT+Win32),
so is supported under MSFT+WM, Widcomm, Bluetopia, etc, etc.
</para>
<para>This value is supported on Windows 7 with the Microsoft stack.
It it not supported on earlier Win32 versions as the native
API has a bug. The value provided is always simply the current
time, e.g. after a discovery for every device returned this value has
the time of the discovery operation. Tracked by workitem
<see href="http://www.codeplex.com/32feet/WorkItem/View.aspx?WorkItemId=10280">10280</see>.
</para>
</remarks>
-
<value>
An instance of <see cref="T:System.DateTime"/> containing the time in UTC,
or <c>DateTime</c>.<see cref="F:System.DateTime.MinValue"/>
if there's no value.
</value>
</member>
<member name="P:InTheHand.Net.Sockets.BluetoothDeviceInfo.LastUsed">
<summary>
Date and Time this device was last used by the system.
</summary>
-
<remarks>
<para>Not supported on most stacks: Widcomm, Bluetopia, MSFT+WM
and will return <see cref="F:System.DateTime.MinValue">DateTime.MinValue</see>
</para>
<para>Is supported on Windows 7 with the Microsoft stack. Is not
supported on earlier Win32 versions &#x2014; there it just always
returns the current time, see <see cref="P:InTheHand.Net.Sockets.BluetoothDeviceInfo.LastSeen"/>.
</para>
</remarks>
-
<value>
An instance of <see cref="T:System.DateTime"/> containing the time in UTC,
or <c>DateTime</c>.<see cref="F:System.DateTime.MinValue"/>
if there's no value.
</value>
</member>
<member name="M:InTheHand.Net.Sockets.BluetoothDeviceInfo.ShowDialog">
<summary>
Displays information about the device.
</summary>
</member>
<member name="M:InTheHand.Net.Sockets.BluetoothDeviceInfo.Equals(System.Object)">
<summary>
Compares two <see cref="T:InTheHand.Net.Sockets.BluetoothDeviceInfo"/> instances for equality.
</summary>
-
<param name="obj">The <see cref="T:InTheHand.Net.Sockets.BluetoothDeviceInfo"/>
to compare with the current instance.
</param>
-
<returns><c>true</c> if <paramref name="obj"/>
is a <see cref="T:InTheHand.Net.Sockets.BluetoothDeviceInfo"/> and equal to the current instance;
otherwise, <c>false</c>.
</returns>
</member>
<member name="M:InTheHand.Net.Sockets.BluetoothDeviceInfo.IsAMsftInternalType(System.Object)">
<summary>
E.g. used internally by WPF.
</summary>
<param name="obj"></param>
<returns></returns>
</member>
<member name="M:InTheHand.Net.Sockets.BluetoothDeviceInfo.GetHashCode">
<summary>
Returns the hash code for this instance.
</summary>
<returns>A hash code for the current object.</returns>
</member>
<member name="T:InTheHand.Net.Sockets.BluetoothListener">
<summary>
Listens for connections from Bluetooth RFCOMM network clients.
</summary>
<remarks>
<para>The <see cref="T:InTheHand.Net.Sockets.BluetoothListener"/> class provides simple methods
that listen for and accept incoming connection requests. New connections
are returned as <see cref="T:InTheHand.Net.Sockets.BluetoothClient"/> instances
(on Microsoft Bluetooth stack platforms alone a new <see cref="T:System.Net.Sockets.Socket"/>
instance can be returned for new connections).
</para>
<para>In the normal case a the listener is initialised with a
<see cref="T:System.Guid"/> holding the Service Class Id on which it is
to accept connections, the listener will automatically create a SDP
Service Record containg that Service Class Id and the port number
(RFCOMM Service Channel Number) that it has started listening on.
The standard usage is thus as follows.
</para>
<code lang="VB.NET">
Class MyConsts
Shared ReadOnly MyServiceUuid As Guid _
= New Guid("{00112233-4455-6677-8899-aabbccddeeff}")
End Class
...
Dim lsnr As New BluetoothListener(MyConsts.MyServiceUuid)
lsnr.Start()
' Now accept new connections, perhaps using the thread pool to handle each
Dim conn As New BluetoothClient = lsnr.AcceptBluetoothClient()
Dim peerStream As Stream = conn.GetStream()
...
</code>
<para>One can also pass the BluetoothListener a Service Name (v2.4),
a custom Service Record (Service Discovery Protocol record), and/or
set Class of Service bit(s). To create a custom Service Record use
<see cref="T:InTheHand.Net.Bluetooth.ServiceRecordBuilder"/>.
</para>
<para>There are overloads of the constructor which take a
<see cref="T:InTheHand.Net.BluetoothEndPoint"/> parameter instead of a
<see cref="T:System.Guid"/> as the Service Class Id, the Class Id
value should be specified in that case in the endpoint.
If the port value is specified in the endpoint, then the listener will
attempt to bind to that port locally. The address in the endpoint is
largely ignored as no current stack supports more than one local radio.
</para>
<para>As of version 3.4 we catch an exception if it occurs on the new
port set-up and it is stored. That error will be returned to any subsequent
Accept; that is we assume that the error affects the listener completely
and so make no attempt to start a new port and all subsequent Accept
complete with the original error.
</para>
<para>In the Bluetopia case previously the 'one port at a time' error
was unhandled and occurred on a background thread and therefore killed
the application. Now it is caught and returned to the next Accept.
Even better the first Accept successfully returns back to the caller.
So BluetoothListener is now usable to that extent: one connection can
be accepted. After that it needs to be discarded and a new server created.
</para>
</remarks>
</member>
<member name="M:InTheHand.Net.Sockets.BluetoothListener.#ctor(System.Guid)">
<overloads>
Initializes a new instance of the <see cref="T:InTheHand.Net.Sockets.BluetoothListener"/> class.
</overloads>
----
<summary>
Initializes a new instance of the <see cref="T:InTheHand.Net.Sockets.BluetoothListener"/> class
to listen on the specified service identifier.
</summary>
<param name="service">The Bluetooth service to listen for.</param>
<remarks>
<para>
An SDP record is published on successful <see cref="M:InTheHand.Net.Sockets.BluetoothListener.Start"/>
to advertise the server.
A generic record is created, containing the essential <c>ServiceClassIdList</c>
and <c>ProtocolDescriptorList</c> attributes. The specified service identifier is
inserted into the former, and the RFCOMM Channel number that the server is
listening on is inserted into the latter. See the Bluetooth SDP specification
for details on the use and format of SDP records.
</para><para>
If a SDP record with more elements is required, then use
one of the other constructors that takes an SDP record e.g.
<see cref="M:InTheHand.Net.Sockets.BluetoothListener.#ctor(System.Guid,InTheHand.Net.Bluetooth.ServiceRecord)"/>,
or when passing it as a byte array
<see cref="M:InTheHand.Net.Sockets.BluetoothListener.#ctor(System.Guid,System.Byte[],System.Int32)"/>.
The format of the generic record used here is shown there also.
</para><para>
Call the <see cref="M:InTheHand.Net.Sockets.BluetoothListener.Start"/>
method to begin listening for incoming connection attempts.
</para>
</remarks>
</member>
<member name="M:InTheHand.Net.Sockets.BluetoothListener.#ctor(InTheHand.Net.BluetoothAddress,System.Guid)">
<summary>
Initializes a new instance of the <see cref="T:InTheHand.Net.Sockets.BluetoothListener"/> class
that listens for incoming connection attempts on the specified local Bluetooth address and service identifier.
</summary>
<param name="localaddr">A <see cref="T:InTheHand.Net.BluetoothAddress"/> that represents the local Bluetooth radio address.</param>
<param name="service">The Bluetooth service on which to listen for incoming connection attempts.</param>
<remarks>
<para>
An SDP record is published on successful <see cref="M:InTheHand.Net.Sockets.BluetoothListener.Start"/>
to advertise the server.
A generic record is created, containing the essential <c>ServiceClassIdList</c>
and <c>ProtocolDescriptorList</c> attributes. The specified service identifier is
inserted into the former, and the RFCOMM Channel number that the server is
listening on is inserted into the latter. See the Bluetooth SDP specification
for details on the use and format of SDP records.
</para><para>
If a SDP record with more elements is required, then use
one of the other constructors that takes an SDP record e.g.
<see cref="M:InTheHand.Net.Sockets.BluetoothListener.#ctor(InTheHand.Net.BluetoothAddress,System.Guid,InTheHand.Net.Bluetooth.ServiceRecord)"/>,
or when passing it as a byte array, e.g.
<see cref="M:InTheHand.Net.Sockets.BluetoothListener.#ctor(InTheHand.Net.BluetoothAddress,System.Guid,System.Byte[],System.Int32)"/>.
The format of the generic record used here is shown there also.
</para><para>
Call the <see cref="M:InTheHand.Net.Sockets.BluetoothListener.Start"/>
method to begin listening for incoming connection attempts.
</para>
</remarks>
</member>
<member name="M:InTheHand.Net.Sockets.BluetoothListener.#ctor(InTheHand.Net.BluetoothEndPoint)">
<summary>
Initializes a new instance of the <see cref="T:InTheHand.Net.Sockets.BluetoothListener"/> class
with the specified local endpoint.
</summary>
-
<param name="localEP">A <see cref="T:InTheHand.Net.BluetoothEndPoint"/> that represents
the local endpoint to which to bind the listener.
See the <see cref="T:InTheHand.Net.Sockets.BluetoothListener"/> documentation for more information
on the usage of this argument.
</param>
-
<remarks>
<para>
An SDP record is published on successful <see cref="M:InTheHand.Net.Sockets.BluetoothListener.Start"/>
to advertise the server.
A generic record is created, containing the essential <c>ServiceClassIdList</c>
and <c>ProtocolDescriptorList</c> attributes. The specified service identifier is
inserted into the former, and the RFCOMM Channel number that the server is
listening on is inserted into the latter. See the Bluetooth SDP specification
for details on the use and format of SDP records.
</para><para>
If a SDP record with more elements is required, then use
one of the other constructors that takes an SDP record e.g.
<see cref="M:InTheHand.Net.Sockets.BluetoothListener.#ctor(InTheHand.Net.BluetoothEndPoint,InTheHand.Net.Bluetooth.ServiceRecord)"/>,
or when passing it as a byte array
<see cref="M:InTheHand.Net.Sockets.BluetoothListener.#ctor(InTheHand.Net.BluetoothEndPoint,System.Byte[],System.Int32)"/>.
The format of the generic record used here is shown there also.
</para><para>
Call the <see cref="M:InTheHand.Net.Sockets.BluetoothListener.Start"/>
method to begin listening for incoming connection attempts.
</para>
</remarks>
</member>
<member name="M:InTheHand.Net.Sockets.BluetoothListener.#ctor(System.Guid,System.Byte[],System.Int32)">
<summary>
Initializes a new instance of the <see cref="T:InTheHand.Net.Sockets.BluetoothListener"/> class
to listen on the specified service identifier,
publishing the specified SDP record.
</summary>
<param name="service">The Bluetooth service to listen for.</param>
<param name="sdpRecord">Prepared SDP Record to publish.</param>
<param name="channelOffset">
The index in the <paramref name="sdpRecord"/> byte array where the RFCOMM Channel Number that the
server is listening on is to be placed.
However the supplied record is now parsed into an <see cref="T:InTheHand.Net.Bluetooth.ServiceRecord"/>
instance, and the channel offset is not used.
</param>
<remarks>
<note>
The constructors taking the SDP record explicitly (as a byte array) should
only be used if
a specialized SDP record is required. For instance when using one of the
standard profiles. Otherwise use one of the other constructors
e.g. <see
cref="M:InTheHand.Net.Sockets.BluetoothListener.#ctor(System.Guid)"/>
which create a generic SDP Record from the specified service identifier.
</note>
<para>Instead of passing a byte array containing a hand-built record,
the record can also be built using the <see cref="T:InTheHand.Net.Bluetooth.ServiceRecord"/>
and <see cref="T:InTheHand.Net.Bluetooth.ServiceElement"/> classes, and
passed to the respective constuctor, e.g.
<see cref="M:InTheHand.Net.Sockets.BluetoothListener.#ctor(System.Guid,InTheHand.Net.Bluetooth.ServiceRecord)"/>
</para>
<para>Any useful SDP record will include
a <c>ProtocolDescriptor</c> element containing
the RFCOMM Channel number that the server is listening on,
and a <c>ServiceClassId</c> element containing the service UUIDs.
The record supplied in the <paramref name="sdpRecord"/> parameter
should contain those elements. On successful <see
cref="M:InTheHand.Net.Sockets.BluetoothListener.Start"/>,
the RFCOMM Channel number that the protocol stack has assigned to the
server is retrieved, and copied into the service record before it is
published. The <paramref name="channelOffset"/> indicates the location
of the respective byte in the <paramref name="sdpRecord"/> byte array.
</para>
<para>
An example SDP record is as follows. This is actually the format of the
generic record used in the other constructors. For another example see
the code in the <c>ObexListener</c> class.
<code>
// The asterisks note where the Service UUID and the Channel number are
// to be filled in.
byte[] record = new byte[] {
//Element Sequence:
0x35,0x27,
//UInt16: 0x0001 -- ServiceClassIdList
0x09,0x00,0x01,
//Element Sequence:
0x35,0x11,
// UUID128: 00000000-0000-0000-0000-000000000000 -- * Service UUID
0x1c,
0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,
//
//UInt16: 0x0004 -- ProtocolDescriptorList
0x09,0x00,0x04,
//Element Sequence:
0x35,0x0c,
// Element Sequence:
0x35,0x03,
// UUID16: 0x0100 -- L2CAP
0x19,0x01,0x00,
// Element Sequence:
0x35,0x05,
// UUID16: 0x0003 -- RFCOMM
0x19,0x00,0x03,
// UInt8: 0x00 -- * Channel Number
0x08,0x00
};
</code>
For that record the <c>channelOffset</c> is 40.
</para>
</remarks>
</member>
<member name="M:InTheHand.Net.Sockets.BluetoothListener.#ctor(InTheHand.Net.BluetoothAddress,System.Guid,System.Byte[],System.Int32)">
<summary>
Initializes a new instance of the <see cref="T:InTheHand.Net.Sockets.BluetoothListener"/> class
that listens for incoming connection attempts on the specified local Bluetooth address and service identifier,
publishing the specified SDP record.
</summary>
<param name="localaddr">A <see cref="T:InTheHand.Net.BluetoothAddress"/> that represents the local Bluetooth radio address.</param>
<param name="service">The Bluetooth service to listen for.</param>
<param name="sdpRecord">Prepared SDP Record to publish</param>
<param name="channelOffset">
The index in the <paramref name="sdpRecord"/> byte array where the RFCOMM Channel Number that the
server is listening on is to be placed.
However the supplied record is now parsed into an <see cref="T:InTheHand.Net.Bluetooth.ServiceRecord"/>
instance, and the channel offset is not used.
</param>
<remarks>
<note>
The constructors taking the SDP record explicitly (as a byte array) should
only be used if
a specialized SDP record is required. For instance when using one of the
standard profiles. Otherwise use one of the other constructors
e.g. <see
cref="M:InTheHand.Net.Sockets.BluetoothListener.#ctor(InTheHand.Net.BluetoothAddress,System.Guid)"/>
which create a generic SDP Record from the specified service identifier.
</note>
<para>Instead of passing a byte array containing a hand-built record,
the record can also be built using the <see cref="T:InTheHand.Net.Bluetooth.ServiceRecord"/>
and <see cref="T:InTheHand.Net.Bluetooth.ServiceElement"/> classes, and
passed to the respective constuctor, e.g.
<see cref="M:InTheHand.Net.Sockets.BluetoothListener.#ctor(InTheHand.Net.BluetoothAddress,System.Guid,InTheHand.Net.Bluetooth.ServiceRecord)"/>
</para>
<para>Any useful SDP record will include
a <c>ProtocolDescriptor</c> element containing
the RFCOMM Channel number that the server is listening on,
and a <c>ServiceClassId</c> element containing the service UUIDs.
The record supplied in the <paramref name="sdpRecord"/> parameter
should contain those elements. On successful <see
cref="M:InTheHand.Net.Sockets.BluetoothListener.Start"/>,
the RFCOMM Channel number that the protocol stack has assigned to the
server is retrieved, and copied into the service record before it is
published. The <paramref name="channelOffset"/> indicates the location
of the respective byte in the <paramref name="sdpRecord"/> byte array.
</para>
<para>
An example SDP record is as follows. This is actually the format of the
generic record used in the other constructors. For another example see
the code in the <c>ObexListener</c> class.
<code>
// The asterisks note where the Service UUID and the Channel number are
// to be filled in.
byte[] record = new byte[] {
//Element Sequence:
0x35,0x27,
//UInt16: 0x0001 -- ServiceClassIdList
0x09,0x00,0x01,
//Element Sequence:
0x35,0x11,
// UUID128: 00000000-0000-0000-0000-000000000000 -- * Service UUID
0x1c,
0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,
//
//UInt16: 0x0004 -- ProtocolDescriptorList
0x09,0x00,0x04,
//Element Sequence:
0x35,0x0c,
// Element Sequence:
0x35,0x03,
// UUID16: 0x0100 -- L2CAP
0x19,0x01,0x00,
// Element Sequence:
0x35,0x05,
// UUID16: 0x0003 -- RFCOMM
0x19,0x00,0x03,
// UInt8: 0x00 -- * Channel Number
0x08,0x00
};
</code>
For that record the <c>channelOffset</c> is 40.
</para>
</remarks>
</member>
<member name="M:InTheHand.Net.Sockets.BluetoothListener.#ctor(InTheHand.Net.BluetoothEndPoint,System.Byte[],System.Int32)">
<summary>
Initializes a new instance of the <see cref="T:InTheHand.Net.Sockets.BluetoothListener"/> class
with the specified local endpoint,
publishing the specified SDP record.
</summary>
-
<param name="localEP">A <see cref="T:InTheHand.Net.BluetoothEndPoint"/> that represents
the local endpoint to which to bind the listener.
See the <see cref="T:InTheHand.Net.Sockets.BluetoothListener"/> documentation for more information
on the usage of this argument.
</param>
<param name="sdpRecord">Prepared SDP Record to publish</param>
<param name="channelOffset">
The index in the <paramref name="sdpRecord"/> byte array where the RFCOMM Channel Number that the
server is listening on is to be placed.
However the supplied record is now parsed into an <see cref="T:InTheHand.Net.Bluetooth.ServiceRecord"/>
instance, and the channel offset is not used.
</param>
-
<remarks>
<note>
The constructors taking the SDP record explicitly (as a byte array) should
only be used if
a specialized SDP record is required. For instance when using one of the
standard profiles. Otherwise use one of the other constructors
e.g. <see
cref="M:InTheHand.Net.Sockets.BluetoothListener.#ctor(InTheHand.Net.BluetoothEndPoint)"/>
which create a generic SDP Record from the specified service identifier.
</note>
<para>Instead of passing a byte array containing a hand-built record,
the record can also be built using the <see cref="T:InTheHand.Net.Bluetooth.ServiceRecord"/>
and <see cref="T:InTheHand.Net.Bluetooth.ServiceElement"/> classes, and
passed to the respective constuctor, e.g.
<see cref="M:InTheHand.Net.Sockets.BluetoothListener.#ctor(InTheHand.Net.BluetoothEndPoint,InTheHand.Net.Bluetooth.ServiceRecord)"/>
</para>
<para>Any useful SDP record will include
a <c>ProtocolDescriptor</c> element containing
the RFCOMM Channel number that the server is listening on,
and a <c>ServiceClassId</c> element containing the service UUIDs.
The record supplied in the <paramref name="sdpRecord"/> parameter
should contain those elements. On successful <see
cref="M:InTheHand.Net.Sockets.BluetoothListener.Start"/>,
the RFCOMM Channel number that the protocol stack has assigned to the
server is retrieved, and copied into the service record before it is
published. The <paramref name="channelOffset"/> indicates the location
of the respective byte in the <paramref name="sdpRecord"/> byte array.
</para>
<para>
An example SDP record is as follows. This is actually the format of the
generic record used in the other constructors. For another example see
the code in the <c>ObexListener</c> class.
<code>
// The asterisks note where the Service UUID and the Channel number are
// to be filled in.
byte[] record = new byte[] {
//Element Sequence:
0x35,0x27,
//UInt16: 0x0001 -- ServiceClassIdList
0x09,0x00,0x01,
//Element Sequence:
0x35,0x11,
// UUID128: 00000000-0000-0000-0000-000000000000 -- * Service UUID
0x1c,
0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,
//
//UInt16: 0x0004 -- ProtocolDescriptorList
0x09,0x00,0x04,
//Element Sequence:
0x35,0x0c,
// Element Sequence:
0x35,0x03,
// UUID16: 0x0100 -- L2CAP
0x19,0x01,0x00,
// Element Sequence:
0x35,0x05,
// UUID16: 0x0003 -- RFCOMM
0x19,0x00,0x03,
// UInt8: 0x00 -- * Channel Number
0x08,0x00
};
</code>
For that record the <c>channelOffset</c> is 40.
</para>
</remarks>
</member>
<member name="M:InTheHand.Net.Sockets.BluetoothListener.#ctor(System.Guid,InTheHand.Net.Bluetooth.ServiceRecord)">
<summary>
Initializes a new instance of the <see cref="T:InTheHand.Net.Sockets.BluetoothListener"/> class
to listen on the specified service identifier,
publishing the specified SDP record.
</summary>
-
<param name="service">The Bluetooth service to listen for.</param>
<param name="sdpRecord">Prepared SDP Record to publish.</param>
-
<remarks>
<note>
The constructors taking the SDP record explicitly should
only be used if
a specialized SDP record is required. For instance when using one of the
standard profiles. Otherwise use one of the other constructors
e.g. <see
cref="M:InTheHand.Net.Sockets.BluetoothListener.#ctor(System.Guid)"/>
which create a generic SDP Record from the specified service identifier.
</note>
<para>Any useful SDP record will include
a <c>ProtocolDescriptor</c> element containing
the RFCOMM Channel number that the server is listening on,
and a <c>ServiceClassId</c> element containing the service UUIDs.
The record supplied in the <paramref name="sdpRecord"/> parameter
should contain those elements. On successful <see
cref="M:InTheHand.Net.Sockets.BluetoothListener.Start"/>,
the RFCOMM Channel number that the protocol stack has assigned to the
server is retrieved, and copied into the service record before it is
published.
</para>
<para>
An example SDP record is as follows. This is actually the format of the
generic record used in the other constructors. For another example see
the code in the <c>ObexListener</c> class.
<code lang="C#">
private static ServiceRecord CreateBasicRfcommRecord(Guid serviceClassUuid)
{
ServiceElement pdl = ServiceRecordHelper.CreateRfcommProtocolDescriptorList();
ServiceElement classList = new ServiceElement(ElementType.ElementSequence,
new ServiceElement(ElementType.Uuid128, serviceClassUuid));
ServiceRecord record = new ServiceRecord(
new ServiceAttribute(
InTheHand.Net.Bluetooth.AttributeIds.UniversalAttributeId.ServiceClassIdList,
classList),
new ServiceAttribute(
InTheHand.Net.Bluetooth.AttributeIds.UniversalAttributeId.ProtocolDescriptorList,
pdl));
return record;
}
</code>
</para>
</remarks>
</member>
<member name="M:InTheHand.Net.Sockets.BluetoothListener.#ctor(InTheHand.Net.BluetoothAddress,System.Guid,InTheHand.Net.Bluetooth.ServiceRecord)">
<summary>
Initializes a new instance of the <see cref="T:InTheHand.Net.Sockets.BluetoothListener"/> class
that listens for incoming connection attempts on the specified local Bluetooth address and service identifier,
publishing the specified SDP record.
</summary>
-
<param name="localaddr">A <see cref="T:InTheHand.Net.BluetoothAddress"/> that represents the local Bluetooth radio address.</param>
<param name="service">The Bluetooth service to listen for.</param>
<param name="sdpRecord">Prepared SDP Record to publish</param>
-
<remarks>
<note>
The constructors taking the SDP record explicitly should
only be used if
a specialized SDP record is required. For instance when using one of the
standard profiles. Otherwise use one of the other constructors
e.g. <see
cref="M:InTheHand.Net.Sockets.BluetoothListener.#ctor(InTheHand.Net.BluetoothAddress,System.Guid)"/>
which create a generic SDP Record from the specified service identifier.
</note>
<para>Any useful SDP record will include
a <c>ProtocolDescriptor</c> element containing
the RFCOMM Channel number that the server is listening on,
and a <c>ServiceClassId</c> element containing the service UUIDs.
The record supplied in the <paramref name="sdpRecord"/> parameter
should contain those elements. On successful <see
cref="M:InTheHand.Net.Sockets.BluetoothListener.Start"/>,
the RFCOMM Channel number that the protocol stack has assigned to the
server is retrieved, and copied into the service record before it is
published.
</para>
<para>
An example SDP record is as follows. This is actually the format of the
generic record used in the other constructors. For another example see
the code in the <c>ObexListener</c> class.
<code lang="C#">
private static ServiceRecord CreateBasicRfcommRecord(Guid serviceClassUuid)
{
ServiceElement pdl = ServiceRecordHelper.CreateRfcommProtocolDescriptorList();
ServiceElement classList = new ServiceElement(ElementType.ElementSequence,
new ServiceElement(ElementType.Uuid128, serviceClassUuid));
ServiceRecord record = new ServiceRecord(
new ServiceAttribute(
InTheHand.Net.Bluetooth.AttributeIds.UniversalAttributeId.ServiceClassIdList,
classList),
new ServiceAttribute(
InTheHand.Net.Bluetooth.AttributeIds.UniversalAttributeId.ProtocolDescriptorList,
pdl));
return record;
}
</code>
</para>
</remarks>
</member>
<member name="M:InTheHand.Net.Sockets.BluetoothListener.#ctor(InTheHand.Net.BluetoothEndPoint,InTheHand.Net.Bluetooth.ServiceRecord)">
<summary>
Initializes a new instance of the <see cref="T:InTheHand.Net.Sockets.BluetoothListener"/> class
with the specified local endpoint,
publishing the specified SDP record.
</summary>
-
<param name="localEP">A <see cref="T:InTheHand.Net.BluetoothEndPoint"/> that represents
the local endpoint to which to bind the listener.
See the <see cref="T:InTheHand.Net.Sockets.BluetoothListener"/> documentation for more information
on the usage of this argument.
</param>
<param name="sdpRecord">Prepared SDP Record to publish</param>
-
<remarks>
<note>
The constructors taking the SDP record explicitly (as a byte array) should
only be used if
a specialized SDP record is required. For instance when using one of the
standard profiles. Otherwise use one of the other constructors
e.g. <see
cref="M:InTheHand.Net.Sockets.BluetoothListener.#ctor(InTheHand.Net.BluetoothEndPoint)"/>
which create a generic SDP Record from the specified service identifier.
</note>
<para>Any useful SDP record will include
a <c>ProtocolDescriptor</c> element containing
the RFCOMM Channel number that the server is listening on,
and a <c>ServiceClassId</c> element containing the service UUIDs.
The record supplied in the <paramref name="sdpRecord"/> parameter
should contain those elements. On successful <see
cref="M:InTheHand.Net.Sockets.BluetoothListener.Start"/>,
the RFCOMM Channel number that the protocol stack has assigned to the
server is retrieved, and copied into the service record before it is
published.
</para>
<para>
An example SDP record is as follows. This is actually the format of the
generic record used in the other constructors. For another example see
the code in the <c>ObexListener</c> class.
<code lang="C#">
private static ServiceRecord CreateBasicRfcommRecord(Guid serviceClassUuid)
{
ServiceElement pdl = ServiceRecordHelper.CreateRfcommProtocolDescriptorList();
ServiceElement classList = new ServiceElement(ElementType.ElementSequence,
new ServiceElement(ElementType.Uuid128, serviceClassUuid));
ServiceRecord record = new ServiceRecord(
new ServiceAttribute(
InTheHand.Net.Bluetooth.AttributeIds.UniversalAttributeId.ServiceClassIdList,
classList),
new ServiceAttribute(
InTheHand.Net.Bluetooth.AttributeIds.UniversalAttributeId.ProtocolDescriptorList,
pdl));
return record;
}
</code>
</para>
</remarks>
</member>
<member name="P:InTheHand.Net.Sockets.BluetoothListener.LocalEndPoint">
<summary>
Gets the local endpoint.
</summary>
-
<value>The <see cref="T:InTheHand.Net.BluetoothEndPoint"/>
that the listener is using for communications.
</value>
-
<remarks>
<para>The <see cref="P:InTheHand.Net.BluetoothEndPoint.Port"/>
property of the endpoint will contain the port number (RFCOMM Channel
Number) that the listener is listening on.
On some platforms, the <see cref="P:InTheHand.Net.BluetoothEndPoint.Address"/>
is similarly set, or is <see cref="F:InTheHand.Net.BluetoothAddress.None"/>
if not known. The endpoint&#x2019;s <see cref="P:InTheHand.Net.BluetoothEndPoint.Service"/>
is never set.
</para>
</remarks>
</member>
<member name="P:InTheHand.Net.Sockets.BluetoothListener.ServiceClass">
<summary>
Get or set the Service Class flags that this service adds to the host
device&#x2019;s Class Of Device field.
</summary>
-
<remarks>
<para>The Class of Device value contains a Device part which describes
the primary service that the device provides, and a Service part which
is a set of flags indicating all the service types that the device supports,
e.g. <see cref="F:InTheHand.Net.Bluetooth.ServiceClass.ObjectTransfer"/>,
<see cref="F:InTheHand.Net.Bluetooth.ServiceClass.Telephony"/>,
<see cref="F:InTheHand.Net.Bluetooth.ServiceClass.Audio"/> etc.
This property supports setting those flags; bits set in this value will be
<strong>added</strong> to the host device&#x2019;s CoD Service Class bits when the listener
is active. For Win32 see <see href="http://msdn.microsoft.com/en-us/library/aa362940(VS.85).aspx">MSDN &#x2014; BTH_SET_SERVICE Structure</see>
</para>
<para><note>Supported on Win32, but not supported on WindowsMobile/WinCE
as there's no native API for it. The WindowCE section of MSDN mentions the
Registry value <c>COD</c> at key <c>HKEY_LOCAL_MACHINE\Software\Microsoft\Bluetooth\sys</c>.
However my (Jam) has value 0x920100 there but advertises a CoD of 0x100114,
so its not clear how the values relate to each other.
</note>
</para>
</remarks>
</member>
<member name="P:InTheHand.Net.Sockets.BluetoothListener.ServiceName">
<summary>
Get or set the ServiceName the server will use in its SDP Record.
</summary>
-
<value>A string representing the value to be used for the Service Name
SDP Attribute. Will be <see langword="null"/> if not specfied.
</value>
-
<exception cref="T:System.InvalidOperationException">
The listener is already started.
<para>- or -</para>
A custom Service Record was given at initialization time. In that case
the ServiceName attribute should be added to that record.
</exception>
</member>
<member name="P:InTheHand.Net.Sockets.BluetoothListener.Server">
<summary>
Gets the underlying network <see cref="T:System.Net.Sockets.Socket"/>.
</summary>
-
<value>The underlying network <see cref="T:System.Net.Sockets.Socket"/>.</value>
-
<remarks>
<note>The property is only supported on Microsoft Bluetooth stack platforms.
</note>
<para><see cref="T:InTheHand.Net.Sockets.BluetoothListener"/> creates a <see cref="T:System.Net.Sockets.Socket"/> to listen for incoming client connection requests.
Classes deriving from <see cref="T:InTheHand.Net.Sockets.BluetoothListener"/> can use this property to get this <see cref="T:System.Net.Sockets.Socket"/>.
Use the underlying <see cref="T:System.Net.Sockets.Socket"/> returned by the <see cref="P:InTheHand.Net.Sockets.BluetoothListener.Server"/> property if you require access beyond that which <see cref="T:InTheHand.Net.Sockets.BluetoothListener"/> provides.
</para>
<para>Note <see cref="P:InTheHand.Net.Sockets.BluetoothListener.Server"/> property only returns the <see cref="T:System.Net.Sockets.Socket"/> used to listen for incoming client connection requests.
Use the <see cref="M:InTheHand.Net.Sockets.BluetoothListener.AcceptSocket"/> method to accept a pending connection request and obtain a <see cref="T:System.Net.Sockets.Socket"/> for sending and receiving data.
You can also use the <see cref="M:InTheHand.Net.Sockets.BluetoothListener.AcceptBluetoothClient"/> method to accept a pending connection request and obtain a <see cref="T:InTheHand.Net.Sockets.BluetoothClient"/> for sending and receiving data.
</para>
</remarks>
</member>
<member name="M:InTheHand.Net.Sockets.BluetoothListener.Start">
<summary>
Starts listening for incoming connection requests.
</summary>
</member>
<member name="M:InTheHand.Net.Sockets.BluetoothListener.Start(System.Int32)">
<summary>
Starts listening for incoming connection requests with a maximum number of pending connection.
</summary>
<param name="backlog">The maximum length of the pending connections queue.</param>
</member>
<member name="M:InTheHand.Net.Sockets.BluetoothListener.Stop">
<summary>
Stops the socket from monitoring connections.
</summary>
</member>
<member name="M:InTheHand.Net.Sockets.BluetoothListener.BeginAcceptSocket(System.AsyncCallback,System.Object)">
<summary>
Begins an asynchronous operation to accept an incoming connection attempt.
</summary>
-
<remarks>
<note>The method is only supported on Microsoft Bluetooth stack platforms.
</note>
</remarks>
-
<param name="callback">An <see cref="T:System.AsyncCallback"/> delegate that references the method to invoke when the operation is complete.</param>
<param name="state">A user-defined object containing information about the accept operation.
This object is passed to the callback delegate when the operation is complete.</param>
-
<returns>An <see cref="T:System.IAsyncResult"/> that represents the
asynchronous accept, which could still be pending.
</returns>
-
<exception cref="T:System.ObjectDisposedException">The <see cref="T:System.Net.Sockets.Socket"/> has been closed.</exception>
</member>
<member name="M:InTheHand.Net.Sockets.BluetoothListener.EndAcceptSocket(System.IAsyncResult)">
<summary>
Asynchronously accepts an incoming connection attempt and creates a new <see cref="T:System.Net.Sockets.Socket"/> to handle remote host communication.
</summary>
<param name="asyncResult">An <see cref="T:System.IAsyncResult"/> returned by a call to the <see cref="M:InTheHand.Net.Sockets.BluetoothListener.BeginAcceptSocket(System.AsyncCallback,System.Object)"/> method.</param>
<returns>A <see cref="T:System.Net.Sockets.Socket"/>.</returns>
</member>
<member name="M:InTheHand.Net.Sockets.BluetoothListener.BeginAcceptBluetoothClient(System.AsyncCallback,System.Object)">
<summary>
Begins an asynchronous operation to accept an incoming connection attempt.
</summary>
-
<param name="callback">An <see cref="T:System.AsyncCallback"/> delegate that references the method to invoke when the operation is complete.</param>
<param name="state">A user-defined object containing information about the accept operation.
This object is passed to the callback delegate when the operation is complete.</param>
-
<returns>An <see cref="T:System.IAsyncResult"/> that represents the
asynchronous accept, which could still be pending.
</returns>
</member>
<member name="M:InTheHand.Net.Sockets.BluetoothListener.EndAcceptBluetoothClient(System.IAsyncResult)">
<summary>
Asynchronously accepts an incoming connection attempt and creates a new <see cref="T:InTheHand.Net.Sockets.BluetoothClient"/> to handle remote host communication.
</summary>
<param name="asyncResult">An <see cref="T:System.IAsyncResult"/> returned by a call to the <see cref="M:InTheHand.Net.Sockets.BluetoothListener.BeginAcceptBluetoothClient(System.AsyncCallback,System.Object)"/> method.</param>
<returns>A <see cref="T:InTheHand.Net.Sockets.BluetoothClient"/>.</returns>
</member>
<member name="M:InTheHand.Net.Sockets.BluetoothListener.AcceptSocket">
<summary>
Creates a new socket for a connection.
</summary>
-
<remarks>
<note>The method is only supported on Microsoft Bluetooth stack platforms.
</note>
<para>AcceptSocket is a blocking method that returns a <see cref="T:System.Net.Sockets.Socket"/> that you can use to send and receive data.
If you want to avoid blocking, use the <see cref="M:InTheHand.Net.Sockets.BluetoothListener.Pending"/> method to determine if connection requests are available in the incoming connection queue.
</para>
<para>The <see cref="T:System.Net.Sockets.Socket"/> returned is initialized with the address and channel number of the remote device.
You can use any of the Send and Receive methods available in the <see cref="T:System.Net.Sockets.Socket"/> class to communicate with the remote device.
When you are finished using the <see cref="T:System.Net.Sockets.Socket"/>, be sure to call its <see cref="M:System.Net.Sockets.Socket.Close"/> method.
If your application is relatively simple, consider using the <see cref="M:InTheHand.Net.Sockets.BluetoothListener.AcceptBluetoothClient"/> method rather than the AcceptSocket method.
<see cref="T:InTheHand.Net.Sockets.BluetoothClient"/> provides you with simple methods for sending and receiving data over a network in blocking synchronous mode.</para></remarks>
<returns>A <see cref="T:System.Net.Sockets.Socket"/> used to send and receive data.</returns>
<exception cref="T:System.InvalidOperationException">Listener is stopped.</exception>
</member>
<member name="M:InTheHand.Net.Sockets.BluetoothListener.AcceptBluetoothClient">
<summary>
Creates a client object for a connection when the specified service or endpoint is detected by the listener component.
</summary>
<remarks>AcceptTcpClient is a blocking method that returns a <see cref="T:InTheHand.Net.Sockets.BluetoothClient"/> that you can use to send and receive data.
Use the <see cref="M:InTheHand.Net.Sockets.BluetoothListener.Pending"/> method to determine if connection requests are available in the incoming connection queue if you want to avoid blocking.
<para>Use the <see cref="M:InTheHand.Net.Sockets.BluetoothClient.GetStream"/> method to obtain the underlying <see cref="T:System.Net.Sockets.NetworkStream"/> of the returned <see cref="T:InTheHand.Net.Sockets.BluetoothClient"/>.
The <see cref="T:System.Net.Sockets.NetworkStream"/> will provide you with methods for sending and receiving with the remote host.
When you are through with the <see cref="T:InTheHand.Net.Sockets.BluetoothClient"/>, be sure to call its <see cref="M:InTheHand.Net.Sockets.BluetoothClient.Close"/> method.
If you want greater flexibility than a <see cref="T:InTheHand.Net.Sockets.BluetoothClient"/> offers, consider using <see cref="M:InTheHand.Net.Sockets.BluetoothListener.AcceptSocket"/>.</para></remarks>
<returns>A <see cref="T:InTheHand.Net.Sockets.BluetoothClient"/> component.</returns>
<exception cref="T:System.InvalidOperationException">Listener is stopped.</exception>
</member>
<member name="M:InTheHand.Net.Sockets.BluetoothListener.Pending">
<summary>
Determines if there is a connection pending.
</summary>
<returns>true if there is a connection pending; otherwise, false.</returns>
</member>
<member name="P:InTheHand.Net.Sockets.BluetoothListener.ServiceRecord">
<summary>
Returns the SDP Service Record for this service.
</summary>
<remarks>
<note>Returns <see langword="null"/> if the listener is not
<see cref="M:InTheHand.Net.Sockets.BluetoothListener.Start"/>ed
(and an record wasn&#x2019;t supplied at initialization).
</note>
</remarks>
</member>
<member name="P:InTheHand.Net.Sockets.BluetoothListener.Authenticate">
<summary>
Gets or sets the authentication state of the current connect or behaviour to use when connection is established.
</summary>
<remarks>
For disconnected sockets, specifies that authentication is required in order for a connect or accept operation to complete successfully.
Setting this option actively initiates authentication during connection establishment, if the two Bluetooth devices were not previously authenticated.
The user interface for passkey exchange, if necessary, is provided by the operating system outside the application context.
For outgoing connections that require authentication, the connect operation fails with WSAEACCES if authentication is not successful.
In response, the application may prompt the user to authenticate the two Bluetooth devices before connection.
For incoming connections, the connection is rejected if authentication cannot be established and returns a WSAEHOSTDOWN error.
</remarks>
</member>
<member name="P:InTheHand.Net.Sockets.BluetoothListener.Encrypt">
<summary>
On unconnected sockets, enforces encryption to establish a connection.
Encryption is only available for authenticated connections.
For incoming connections, a connection for which encryption cannot be established is automatically rejected and returns WSAEHOSTDOWN as the error.
For outgoing connections, the connect function fails with WSAEACCES if encryption cannot be established.
In response, the application may prompt the user to authenticate the two Bluetooth devices before connection.
</summary>
</member>
<member name="M:InTheHand.Net.Sockets.BluetoothListener.SetPin(InTheHand.Net.BluetoothAddress,System.String)">
<summary>
Set or change the PIN to be used with a specific remote device.
</summary>
<param name="device">Address of Bluetooth device.</param>
<param name="pin">PIN string consisting of 1 to 16 ASCII characters.</param>
<remarks>Assigning null (Nothing in VB) or an empty String will revoke the PIN.</remarks>
</member>
<member name="T:InTheHand.Net.Sockets.BluetoothProtocolType">
<summary>
Specifies additional protocols that the <see cref="T:System.Net.Sockets.Socket"/> class supports.
</summary>
<remarks>
<para>These constants are defined by the Bluetooth SIG - <see href="https://www.bluetooth.org/Technical/AssignedNumbers/service_discovery.htm"/>
</para>
</remarks>
</member>
<member name="F:InTheHand.Net.Sockets.BluetoothProtocolType.Sdp">
<summary>
Service Discovery Protocol (bt-sdp)
</summary>
</member>
<member name="F:InTheHand.Net.Sockets.BluetoothProtocolType.RFComm">
<summary>
Bluetooth RFComm protocol (bt-rfcomm)
</summary>
</member>
<member name="F:InTheHand.Net.Sockets.BluetoothProtocolType.L2Cap">
<summary>
Logical Link Control and Adaptation Protocol (bt-l2cap)
</summary>
</member>
<member name="T:InTheHand.Net.Sockets.IrDAClient">
<summary>
Makes connections to services on peer IrDA devices.
</summary>
-
<remarks>
<para>Makes connections to services on peer IrDA devices. It allows
discovery of all devices in range, then a connection can be made to
the required service on the chosen peer. Or, given just the
service name a connection will be made to an arbitrary peer. This is
most useful when it is expected that there will be only one device in
range—as is often the case.</para>
<para>It can be used with both the full and Compact frameworks, and can
be used as a replacement for the latter's built-in version simply by
changing the referenced namespace and assembly.
It also has features extra
to those in the CF's version. For instance, following the
pattern of <see cref="T:System.Net.Sockets.TcpClient"/> in framework
version 2, it provides access to the underlying
<see cref="T:System.Net.Sockets.Socket"/> via a <c>Client</c>
property. This is particularly useful as it allows setting socket
options, for instance IrCOMM Cooked mode with option <see
cref="F:InTheHand.Net.Sockets.IrDASocketOptionName.NineWireMode"/>.
</para>
<para>There a number of well-known services, a few are listed here.
<list type="bullet">
<listheader><term>Service description</term>
<description>Service Name, Protocol type</description></listheader>
<item><term>OBEX file transfer</term>
<description>OBEX:IrXfer, (TinyTP)</description></item>
<item><term>OBEX general</term>
<description>OBEX, (TinyTP)</description></item>
<item><term>Printing</term>
<description>IrLPT, IrLMP mode</description></item>
<item><term>IrCOMM e.g. to modems</term>
<description>IrDA:IrCOMM, IrCOMM 9-Wire/Cooked mode</description></item>
</list>
The modes required by the last two are set by socket option, as noted
for IrCOMM above.
</para>
<para>
Of course the library also includes specific OBEX protocol support, both
client and server, see <see cref="T:InTheHand.Net.ObexWebRequest"/> etc.
</para>
</remarks>
-
<example>Example code to connect to a IrCOMM service would be as
follows.
<code lang="VB.NET">
Public Shared Sub Main()
Dim cli As New IrDAClient
' Set IrCOMM Cooked/9-wire mode.
cli.Client.SetSocketOption(IrDASocketOptionLevel.IrLmp, _
IrDASocketOptionName.NineWireMode, _
1) ' equivalent to 'True'
' Connect
cli.Connect("IrDA:IrCOMM")
' Connected, now send and receive e.g. by using the
' NetworkStream returned by cli.GetStream
...
End Sub
</code>
</example>
-
<seealso cref="N:InTheHand.Net.Sockets"/>
<seealso cref="T:System.Net.Sockets.IrDAClient"/>
</member>
<member name="M:InTheHand.Net.Sockets.IrDAClient.#ctor">
<overloads>
Initializes a new instance of the <see cref="T:InTheHand.Net.Sockets.IrDAClient"/> class,
and optionally connects to a peer device.
</overloads>
----
<summary>
Initializes a new instance of the <see cref="T:InTheHand.Net.Sockets.IrDAClient"/> class.
</summary>
<remarks>
<para>
It then allows discovery of all devices in range using <see
cref="M:InTheHand.Net.Sockets.IrDAClient.DiscoverDevices"/>, then a
connection can be made to the required service on the chosen peer using <see
cref="M:InTheHand.Net.Sockets.IrDAClient.Connect(InTheHand.Net.IrDAEndPoint)"/>.
Or, given just the service name a connection will be made to an arbitrary
peer, using <see cref="M:InTheHand.Net.Sockets.IrDAClient.Connect(System.String)"/>. This is
most useful when it is expected that there will be only one device in
range &#x2014; as is often the case.</para>
</remarks>
</member>
<member name="M:InTheHand.Net.Sockets.IrDAClient.#ctor(System.String)">
<summary>
Initializes a new instance of the <see cref="T:InTheHand.Net.Sockets.IrDAClient"/>
class and connects to the specified service name.
</summary>
-
<remarks>
<para>This is
equivalent to calling the default constructor followed by
<see cref="M:InTheHand.Net.Sockets.IrDAClient.Connect(System.String)"/>.
</para>
<para>
As noted the connection will be made to an arbitrary peer. This is
most useful when it is expected that there will be only one device in
range &#x2014; as is often the case. If a connection is to be made to
a particular remote peer, then use the
<see cref="M:InTheHand.Net.Sockets.IrDAClient.#ctor(InTheHand.Net.IrDAEndPoint)"/>
overload.
</para>
<para>
Infrared connections are made by specifying a Service Name, which can
be any value provided the participating devices refer the same name.
</para>
<para>
See <see cref="M:InTheHand.Net.Sockets.IrDAClient.Connect(System.String)"/>
for the errors that can occur.
</para>
</remarks>
-
<param name="service">
A <see cref="T:System.String"/> containing the service name to connect to.
</param>
</member>
<member name="M:InTheHand.Net.Sockets.IrDAClient.#ctor(InTheHand.Net.IrDAEndPoint)">
<summary>
Initializes a new instance of the <see cref="T:InTheHand.Net.Sockets.IrDAClient"/>
class and connects to the specified endpoint.
</summary>
<remarks>
<para>
This is
equivalent to calling the default constructor followed by
<see cref="M:InTheHand.Net.Sockets.IrDAClient.Connect(InTheHand.Net.IrDAEndPoint)"/>.
</para>
<para>
The endpoint specifies both the peer device and service name
to connect to. If only one device is expected to be in range, or
an arbitrary peer device is suitable, then one can use
<see cref="M:InTheHand.Net.Sockets.IrDAClient.#ctor(System.String)"/> instead.
</para>
</remarks>
<param name="remoteEP">
An <see cref="T:InTheHand.Net.IrDAEndPoint"/> initialised with the address of the peer
device and the service name to connect to.
</param>
</member>
<member name="P:InTheHand.Net.Sockets.IrDAClient.Active">
<summary>
Gets or set a value that indicates whether a connection has been made.
</summary>
</member>
<member name="P:InTheHand.Net.Sockets.IrDAClient.Available">
<summary>
The number of bytes of data received from the network and available to be read.
</summary>
</member>
<member name="P:InTheHand.Net.Sockets.IrDAClient.Client">
<summary>
Gets or sets the underlying <see cref="T:System.Net.Sockets.Socket"/>.
</summary>
<remarks>
This is particularly useful as it allows setting socket
options, for instance IrCOMM Cooked mode, ie
<see cref="F:InTheHand.Net.Sockets.IrDASocketOptionName.NineWireMode"/>.
</remarks>
<example>Example code to connect to a IrCOMM service would be as
follows, note the use of the Client property.
<code lang="VB.NET">
Public Shared Sub Main()
Dim cli As New IrDAClient
' Set IrCOMM Cooked/9-wire mode.
cli.Client.SetSocketOption( _
IrDASocketOptionLevel.IrLmp, _
IrDASocketOptionName.NineWireMode, _
1) ' representing true
' Connect
cli.Connect("IrDA:IrCOMM")
' Connected, now send and receive e.g. by using the
' NetworkStream returned by cli.GetStream
...
End Sub
</code>
</example>
</member>
<member name="P:InTheHand.Net.Sockets.IrDAClient.Connected">
<summary>
Gets a value indicating whether the underlying <see cref="T:System.Net.Sockets.Socket"/> for an <see cref="T:InTheHand.Net.Sockets.IrDAClient"/> is connected to a remote host.
</summary>
</member>
<member name="M:InTheHand.Net.Sockets.IrDAClient.DiscoverDevices">
<summary>
Obtains information about available devices.
</summary>
-
<remarks>
<para>Returns a maximum of 8 devices, for more flexibility use the other overloads.</para>
</remarks>
-
<returns>The discovered devices as an array of <see cref="T:InTheHand.Net.Sockets.IrDADeviceInfo"/>.</returns>
</member>
<member name="M:InTheHand.Net.Sockets.IrDAClient.DiscoverDevices(System.Int32)">
<summary>
Obtains information about a specified number of devices.
</summary>
-
<param name="maxDevices">The maximum number of devices to get information about.</param>
-
<returns>The discovered devices as an array of <see cref="T:InTheHand.Net.Sockets.IrDADeviceInfo"/>.</returns>
</member>
<member name="M:InTheHand.Net.Sockets.IrDAClient.DiscoverDevices(System.Int32,System.Net.Sockets.Socket)">
<summary>
Obtains information about available devices using a socket.
</summary>
-
<param name="maxDevices">The maximum number of devices to get information about.</param>
<param name="irdaSocket">A <see cref="T:System.Net.Sockets.Socket"/>
to be uses to run the discovery process.
It should have been created for the IrDA protocol</param>
-
<returns>The discovered devices as an array of <see cref="T:InTheHand.Net.Sockets.IrDADeviceInfo"/>.</returns>
</member>
<member name="M:InTheHand.Net.Sockets.IrDAClient.ParseDeviceList(System.Byte[])">
<exclude/>
</member>
<member name="M:InTheHand.Net.Sockets.IrDAClient.GetRemoteMachineName(System.Net.Sockets.Socket)">
<summary>
Gets the name of the peer device using the specified socket.
</summary>
<param name="irdaSocket">A connected IrDA <c>Socket</c>.</param>
<returns>The name of the remote device.</returns>
-
<remarks>
This finds the name of the device to which the socket is connection,
an exception will occur if the socket is not connected.
</remarks>
-
<exception cref="T:System.ArgumentNullException">
<c>s</c> is null (<c>Nothing</c> in Visual Basic).
</exception>
<exception cref="T:System.ArgumentOutOfRangeException">
The remote device is not present in the list of discovered devices.
</exception>
<exception cref="T:System.InvalidOperationException">
The socket is not connected.
</exception>
</member>
<member name="P:InTheHand.Net.Sockets.IrDAClient.RemoteMachineName">
<summary>
Gets the name of the peer device participating in the communication.
</summary>
-
<remarks>
This finds the name of the device to which the client is connection,
an exception will occur if the socket is not connected.
</remarks>
-
<exception cref="T:System.ArgumentOutOfRangeException">
If the remote device is not found in the discovery cache.
</exception>
<exception cref="T:System.InvalidOperationException">
The socket is not connected.
</exception>
</member>
<member name="M:InTheHand.Net.Sockets.IrDAClient.Connect(InTheHand.Net.IrDAEndPoint)">
<overloads>
Forms a connection to the specified peer service.
</overloads>
--
<summary>
Forms a connection to the specified endpoint.
</summary>
<remarks>
<para>
The endpoint specifies both the peer device and service name
to connect to. If only one device is expected to be in range, or
an arbitrary peer device is suitable, then one can use
<see cref="M:InTheHand.Net.Sockets.IrDAClient.Connect(System.String)"/> instead.
</para>
</remarks>
<param name="remoteEP">
An <see cref="T:InTheHand.Net.IrDAEndPoint"/> initialised with the address of the peer
device and the service name to connect to.
</param>
</member>
<member name="M:InTheHand.Net.Sockets.IrDAClient.Connect(System.String)">
<summary>
Forms a connection to the specified service on an arbitrary peer.
</summary>
<remarks>
As noted the connection will be made to an arbitrary peer. This is
most useful when it is expected that there will be only one device in
range &#x2014; as is often the case. If a connection is to be made to
a particular remote peer, then use
<see cref="M:InTheHand.Net.Sockets.IrDAClient.Connect(InTheHand.Net.IrDAEndPoint)"/>.
</remarks>
<param name="service">The Service Name to connect to eg "<c>OBEX</c>".
In the very uncommon case where a connection is to be made to a
specific LSAP-SEL (port number), then use
the form "<c>LSAP-SELn</c>", where n is an integer.</param>
-
<exception cref="T:System.InvalidOperationException">
No peer IrDA device was found. The exception has message &#x201C;No device&#x201D;.
</exception>
<exception cref="T:System.Net.Sockets.SocketException">
A connection could not be formed. See the exception message or
<see cref="P:System.Net.Sockets.SocketException.SocketErrorCode"/>
(or <see cref="P:System.Net.Sockets.SocketException.ErrorCode"/> on NETCF)
for what error occurred.
</exception>
</member>
<member name="M:InTheHand.Net.Sockets.IrDAClient.BeginConnect(InTheHand.Net.IrDAEndPoint,System.AsyncCallback,System.Object)">
<overloads>
Begins an asynchronous request for a remote host connection.
</overloads>
-
<summary>
Begins an asynchronous request for a remote host connection.
The remote host is specified by an endpoint.
</summary>
-
<param name="remoteEP">
An <see cref="T:InTheHand.Net.IrDAEndPoint"/> initialised with the address of the peer
device and the service name to connect to.
</param>
<param name="requestCallback">An AsyncCallback delegate that references the method to invoke when the operation is complete.</param>
<param name="state">A user-defined object that contains information about the connect operation.
This object is passed to the requestCallback delegate when the operation is complete.</param>
-
<returns>An <see cref="T:System.IAsyncResult"/> that represents the
asynchronous connect, which could still be pending.
</returns>
</member>
<member name="M:InTheHand.Net.Sockets.IrDAClient.BeginConnect(System.String,System.AsyncCallback,System.Object)">
<summary>
Begins an asynchronous request for a remote host connection.
The remote host is specified by a service name (string).
</summary>
-
<param name="service">The service name of the remote host.</param>
<param name="requestCallback">An AsyncCallback delegate that references the method to invoke when the operation is complete.</param>
<param name="state">A user-defined object that contains information about the connect operation.
This object is passed to the requestCallback delegate when the operation is complete.</param>
-
<returns>An <see cref="T:System.IAsyncResult"/> that represents the
asynchronous connect, which could still be pending.
</returns>
-
<remarks>
<para>
See <see cref="M:InTheHand.Net.Sockets.IrDAClient.Connect(System.String)"/>
for the errors that can occur.
</para>
</remarks>
</member>
<member name="M:InTheHand.Net.Sockets.IrDAClient.EndConnect(System.IAsyncResult)">
<summary>
Asynchronously accepts an incoming connection attempt.
</summary>
<param name="asyncResult">An <see cref="T:System.IAsyncResult"/> object returned
by a call to <see cref="M:InTheHand.Net.Sockets.IrDAClient.BeginConnect(InTheHand.Net.IrDAEndPoint,System.AsyncCallback,System.Object)"/>
/ <see cref="M:InTheHand.Net.Sockets.IrDAClient.BeginConnect(System.String,System.AsyncCallback,System.Object)"/>.
</param>
</member>
<member name="M:InTheHand.Net.Sockets.IrDAClient.Close">
<summary>
Closes the <see cref="T:InTheHand.Net.Sockets.IrDAClient"/> and the underlying connection.
</summary>
-
<remarks>The two XxxxxClient classes produced by Microsoft (TcpClient,
and IrDAClient in the NETCF) have various documented behaviours and various
actual behaviours for close/dispose/finalize on the various platforms. :-(
The current TcpClient implementation is that
Close/Dispose closes the connection by closing the underlying socket and/or
NetworkStream, and finalization doesn't close either. This is the behaviour
we use for the here (for <see cref="T:InTheHand.Net.Sockets.BluetoothClient"/>,
<see cref="T:InTheHand.Net.Sockets.IrDAClient"/>). (The documentation in MSDN for
<see cref="T:System.Net.Sockets.TcpClient"/> is still wrong by-the-way,
see <see href="https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=158480">
Microsoft feedback #158480</see>).
</remarks>
</member>
<member name="M:InTheHand.Net.Sockets.IrDAClient.GetStream">
<summary>
Returns the <see cref="T:System.Net.Sockets.NetworkStream"/> used to send and receive data.
</summary>
-
<returns>The underlying <c>NetworkStream</c>.</returns>
-
<remarks>
<para>
<c>GetStream</c> returns a <c>NetworkStream</c>
that you can use to send and receive data. The <c>NetworkStream</c> class
inherits from the <see cref="T:System.IO.Stream"/> class, which provides a
rich collection of methods and properties used to facilitate network communications.
</para>
<para>You must call the <see cref="M:InTheHand.Net.Sockets.IrDAClient.Connect(InTheHand.Net.IrDAEndPoint)"/>
method, or one of its overloads, first, or
the <c>GetStream</c> method will throw an <c>InvalidOperationException</c>.
After you have obtained the <c>NetworkStream</c>, call the
<see cref="M:System.Net.Sockets.NetworkStream.Write(System.Byte[],System.Int32,System.Int32)"/>
method to send data to the remote host.
Call the <see cref="M:System.Net.Sockets.NetworkStream.Read(System.Byte[],System.Int32,System.Int32)"/>
method to receive data arriving from the remote host.
Both of these methods block until the specified operation is performed.
You can avoid blocking on a read operation by checking the
<see cref="P:System.Net.Sockets.NetworkStream.DataAvailable"/> property.
A <c>true</c> value means that data has arrived from the remote host and
is available for reading. In this case, <c>Read</c> is
guaranteed to complete immediately.
If the remote host has shutdown its connection, <c>Read</c> will
immediately return with zero bytes.
</para>
<note>
Closing the <c>NetworkStream</c> closes the connection.
Similarly Closing, Disposing, or the finalization of the <c>IrDAClient</c>
Disposes the <c>NetworkStream</c>.
This is new behaviour post 2.0.60828.0.
<!-- [dodgy?]TcpClient documentation:
You must close the NetworkStream when you are through sending and
receiving data. Closing TcpClient does not release the NetworkStream.-->
</note>
<note>
If you receive a SocketException, use SocketException.ErrorCode to obtain
the specific error code. After you have obtained this code, you can refer
to the Windows Sockets version 2 API error code documentation in MSDN
for a detailed description of the error.
</note>
</remarks>
-
<exception cref="T:System.InvalidOperationException">
The <see cref="T:InTheHand.Net.Sockets.IrDAClient"/> is not connected to a remote host.
</exception>
<exception cref="T:System.ObjectDisposedException">
The <c>IrDAClient</c> has been closed.
</exception>
</member>
<member name="M:InTheHand.Net.Sockets.IrDAClient.Dispose(System.Boolean)">
<summary>
Releases the unmanaged resources used by the <see cref="T:InTheHand.Net.Sockets.IrDAClient"/> and optionally releases the managed resources.
</summary>
<param name="disposing">true to release both managed and unmanaged resources; false to release only unmanaged resources.</param>
</member>
<member name="M:InTheHand.Net.Sockets.IrDAClient.Dispose">
<summary>
Closes the <see cref="T:InTheHand.Net.Sockets.IrDAClient"/> and the underlying connection.
</summary>
-
<seealso cref="M:InTheHand.Net.Sockets.IrDAClient.Close"/>
</member>
<member name="T:InTheHand.Net.Sockets.IrDADeviceInfo">
<summary>
Provides information about remote devices connected by infrared communications.
</summary>
<seealso cref="T:System.Net.Sockets.IrDADeviceInfo"/>
</member>
<member name="P:InTheHand.Net.Sockets.IrDADeviceInfo.DeviceAddress">
<summary>
Returns the address of the remote device.
</summary>
</member>
<member name="P:InTheHand.Net.Sockets.IrDADeviceInfo.DeviceID">
<summary>
Provided solely for compatibility with System.Net.IrDA - consider using <see cref="P:InTheHand.Net.Sockets.IrDADeviceInfo.DeviceAddress"/> instead.
</summary>
</member>
<member name="P:InTheHand.Net.Sockets.IrDADeviceInfo.DeviceName">
<summary>
Gets the name of the device.
</summary>
</member>
<member name="P:InTheHand.Net.Sockets.IrDADeviceInfo.CharacterSet">
<summary>
Gets the character set used by the server, such as ASCII.
</summary>
</member>
<member name="P:InTheHand.Net.Sockets.IrDADeviceInfo.Hints">
<summary>
Gets the type of the device, such as a computer.
</summary>
</member>
<member name="M:InTheHand.Net.Sockets.IrDADeviceInfo.Equals(System.Object)">
<summary>
Compares two <see cref="T:InTheHand.Net.Sockets.IrDADeviceInfo"/> instances for equality.
</summary>
-
<param name="obj">The <see cref="T:InTheHand.Net.Sockets.BluetoothDeviceInfo"/>
to compare with the current instance.
</param>
-
<returns><c>true</c> if <paramref name="obj"/>
is a <see cref="T:InTheHand.Net.Sockets.BluetoothDeviceInfo"/> and equal to the current instance;
otherwise, <c>false</c>.
</returns>
</member>
<member name="M:InTheHand.Net.Sockets.IrDADeviceInfo.GetHashCode">
<summary>
Returns the hash code for this instance.
</summary>
<returns>A hash code for the current object.</returns>
</member>
<member name="T:InTheHand.Net.Sockets.IrDAListener">
<summary>
Places a socket in a listening state to monitor infrared connections from a specified service or network address.
</summary>
<remarks>This class monitors a service by specifying a service name or a network address.
The listener does not listen until you call one of the <see cref="M:InTheHand.Net.Sockets.IrDAListener.Start"/>
methods.</remarks>
<seealso cref="T:System.Net.Sockets.IrDAListener"/>
</member>
<member name="M:InTheHand.Net.Sockets.IrDAListener.#ctor(InTheHand.Net.IrDAEndPoint)">
<summary>
Initializes a new instance of the <see cref="T:InTheHand.Net.Sockets.IrDAListener"/> class.
</summary>
<param name="ep">The network address to monitor for making a connection.</param>
</member>
<member name="M:InTheHand.Net.Sockets.IrDAListener.#ctor(System.String)">
<summary>
Initializes a new instance of the <see cref="T:InTheHand.Net.Sockets.IrDAListener"/> class.
</summary>
<param name="service">The name of the service to listen for.</param>
</member>
<member name="P:InTheHand.Net.Sockets.IrDAListener.Server">
<summary>
Gets the underlying network <see cref="T:System.Net.Sockets.Socket"/>.
</summary>
</member>
<member name="P:InTheHand.Net.Sockets.IrDAListener.Active">
<summary>
Gets a value that indicates whether the <see cref="T:InTheHand.Net.Sockets.IrDAListener"/> is actively listening for client connections.
</summary>
</member>
<member name="P:InTheHand.Net.Sockets.IrDAListener.LocalEndpoint">
<summary>
Gets an <see cref="T:InTheHand.Net.IrDAEndPoint"/> representing the local device.
</summary>
</member>
<member name="M:InTheHand.Net.Sockets.IrDAListener.Start">
<summary>
Starts listening for incoming connection requests.
</summary>
</member>
<member name="M:InTheHand.Net.Sockets.IrDAListener.Start(System.Int32)">
<summary>
Starts listening for incoming connection requests with a maximum number of pending connection.
</summary>
<param name="backlog">The maximum length of the pending connections queue.</param>
</member>
<member name="M:InTheHand.Net.Sockets.IrDAListener.Stop">
<summary>
Stops the socket from monitoring connections.
</summary>
</member>
<member name="M:InTheHand.Net.Sockets.IrDAListener.AcceptSocket">
<summary>
Creates a new socket for a connection.
</summary>
<returns>A socket.</returns>
</member>
<member name="M:InTheHand.Net.Sockets.IrDAListener.AcceptIrDAClient">
<summary>
Creates a client object for a connection when the specified service or endpoint is detected by the listener component.
</summary>
<returns>An <see cref="T:InTheHand.Net.Sockets.IrDAClient"/> object.</returns>
</member>
<member name="M:InTheHand.Net.Sockets.IrDAListener.BeginAcceptSocket(System.AsyncCallback,System.Object)">
<summary>
Begins an asynchronous operation to accept an incoming connection attempt.
</summary>
-
<param name="callback">An <see cref="T:System.AsyncCallback"/> delegate that references the method to invoke when the operation is complete.</param>
<param name="state">A user-defined object containing information about the accept operation.
This object is passed to the callback delegate when the operation is complete.</param>
-
<returns>An <see cref="T:System.IAsyncResult"/> that references the asynchronous creation of the <see cref="T:System.Net.Sockets.Socket"/>.</returns>
-
<exception cref="T:System.ObjectDisposedException">The <see cref="T:System.Net.Sockets.Socket"/> has been closed.</exception>
</member>
<member name="M:InTheHand.Net.Sockets.IrDAListener.EndAcceptSocket(System.IAsyncResult)">
<summary>
Asynchronously accepts an incoming connection attempt and creates a new <see cref="T:System.Net.Sockets.Socket"/> to handle remote host communication.
</summary>
<param name="asyncResult">An <see cref="T:System.IAsyncResult"/> returned by a call to the <see cref="M:InTheHand.Net.Sockets.IrDAListener.BeginAcceptSocket(System.AsyncCallback,System.Object)"/> method.</param>
<returns>A <see cref="T:System.Net.Sockets.Socket"/>.</returns>
</member>
<member name="M:InTheHand.Net.Sockets.IrDAListener.BeginAcceptIrDAClient(System.AsyncCallback,System.Object)">
<summary>
Begins an asynchronous operation to accept an incoming connection attempt.
</summary>
-
<param name="callback">An <see cref="T:System.AsyncCallback"/> delegate that references the method to invoke when the operation is complete.</param>
<param name="state">A user-defined object containing information about the accept operation.
This object is passed to the callback delegate when the operation is complete.</param>
-
<returns>An <see cref="T:System.IAsyncResult"/> that represents the
asynchronous accept, which could still be pending.
</returns>
</member>
<member name="M:InTheHand.Net.Sockets.IrDAListener.EndAcceptIrDAClient(System.IAsyncResult)">
<summary>
Asynchronously accepts an incoming connection attempt and creates a new <see cref="T:InTheHand.Net.Sockets.IrDAClient"/> to handle remote host communication.
</summary>
<param name="asyncResult">An <see cref="T:System.IAsyncResult"/> returned by a call to the <see cref="M:InTheHand.Net.Sockets.IrDAListener.BeginAcceptIrDAClient(System.AsyncCallback,System.Object)"/> method.</param>
<returns>An <see cref="T:InTheHand.Net.Sockets.IrDAClient"/>.</returns>
</member>
<member name="M:InTheHand.Net.Sockets.IrDAListener.Pending">
<summary>
Determines if a connection is pending.
</summary>
<returns>true if there is a connection pending; otherwise, false.</returns>
</member>
<member name="T:InTheHand.Net.Sockets.L2CapClient">
<summary>
Provides client connections to a remote Bluetooth L2CAP service.
</summary>
-
<remarks>
<para>For RFCOMM connections use <see cref="T:InTheHand.Net.Sockets.BluetoothClient"/>.
</para>
<para>The normal usage is o create an instance, connect with
<see cref="M:InTheHand.Net.Sockets.L2CapClient.Connect(InTheHand.Net.BluetoothEndPoint)"/>
or <see cref="M:InTheHand.Net.Sockets.L2CapClient.BeginConnect(InTheHand.Net.BluetoothEndPoint,System.AsyncCallback,System.Object)"/>,
and if successful one then calls <see cref="M:InTheHand.Net.Sockets.L2CapClient.GetStream"/>
to send and receive data.
</para>
<para>See the <see cref="M:InTheHand.Net.Sockets.L2CapClient.Connect(InTheHand.Net.BluetoothEndPoint)"/>
method for more information
on specifying the remote service to connect to.
</para>
</remarks>
</member>
<member name="M:InTheHand.Net.Sockets.L2CapClient.#ctor">
<summary>
Creates a new instance of <see cref="T:InTheHand.Net.Sockets.L2CapClient"/>.
</summary>
</member>
<member name="M:InTheHand.Net.Sockets.L2CapClient.Close">
<summary>
Closes the <see cref="T:InTheHand.Net.Sockets.L2CapClient"/> and the underlying connection.
</summary>
-
<seealso cref="M:InTheHand.Net.Sockets.L2CapClient.Dispose"/>
</member>
<member name="M:InTheHand.Net.Sockets.L2CapClient.Dispose">
<summary>
Closes the <see cref="T:InTheHand.Net.Sockets.L2CapClient"/> and the underlying connection.
</summary>
-
<seealso cref="M:InTheHand.Net.Sockets.L2CapClient.Close"/>
</member>
<member name="M:InTheHand.Net.Sockets.L2CapClient.Connect(InTheHand.Net.BluetoothEndPoint)">
<summary>
Connects to a remote Bluetooth L2CAP service
using the specified remote endpoint.
</summary>
-
<remarks>
<para>The <see cref="T:InTheHand.Net.BluetoothEndPoint"/> must
have the <see cref="P:InTheHand.Net.BluetoothEndPoint.Address"/>
set, and either the <see cref="P:InTheHand.Net.BluetoothEndPoint.Service"/>
or <see cref="P:InTheHand.Net.BluetoothEndPoint.Port"/> properties
set.
The port is the L2CAP PSM number, and if set a connection will be
made to that PSM and the Service Class Id ignored.
Note that only certain PSM values are valid. See
<see cref="T:InTheHand.Net.Sockets.L2CapListener"/> for more
information.
</para>
</remarks>
-
<param name="remoteEP">The <see cref="T:InTheHand.Net.BluetoothEndPoint"/>
to which you intend to connect. See the remarks for usage.
</param>
</member>
<member name="M:InTheHand.Net.Sockets.L2CapClient.BeginConnect(InTheHand.Net.BluetoothEndPoint,System.AsyncCallback,System.Object)">
<summary>
Begins an asynchronous request for a remote host connection.
</summary>
-
<remarks>
<para>See
<see cref="M:InTheHand.Net.Sockets.L2CapClient.Connect(InTheHand.Net.BluetoothEndPoint)"/>
for more information.
</para>
</remarks>
-
<param name="remoteEP">The <see cref="T:InTheHand.Net.BluetoothEndPoint"/>
to which you intend to connect.
See
or <see cref="M:InTheHand.Net.Sockets.L2CapClient.Connect(InTheHand.Net.BluetoothEndPoint)"/>,
for more information.
</param>
<param name="requestCallback">An <see cref="T:System.AsyncCallback"/>
delegate that references the method to invoke when the operation is
complete.
</param>
<param name="state">A user-defined object that contains information
about the connect operation. This object is passed to the
<paramref name="requestCallback"/> delegate when the operation is
complete.
</param>
-
<returns>An <see cref="T:System.IAsyncResult"/> object that
references the asynchronous connection,
which may still be pending.
</returns>
</member>
<member name="M:InTheHand.Net.Sockets.L2CapClient.EndConnect(System.IAsyncResult)">
<summary>
Asynchronously accepts an incoming connection attempt.
</summary>
-
<param name="asyncResult">An <see cref="T:System.IAsyncResult"/>
object returned by a call to
or <see cref="M:InTheHand.Net.Sockets.L2CapClient.BeginConnect(InTheHand.Net.BluetoothEndPoint,System.AsyncCallback,System.Object)"/>,
</param>
</member>
<member name="M:InTheHand.Net.Sockets.L2CapClient.GetStream">
<summary>
Returns the <see cref="T:System.IO.Stream"/> used to send and
receive data.
</summary>
-
<remarks>
<para>Note it is NOT a <see cref="T:System.Net.Sockets.NetworkStream"/>.
That type handles SOCK_STREAM connections, whereas L2CAP uses
SOCK_SEQPACKET.
Different Stream subclasses may be returned by different platforms.
</para>
</remarks>
-
<returns>The <see cref="T:System.IO.Stream"/> used to send and
receive data.
</returns>
</member>
<member name="P:InTheHand.Net.Sockets.L2CapClient.RemoteEndPoint">
<summary>
Get the remote endpoint.
</summary>
-
<value>
The <see cref="T:InTheHand.Net.BluetoothEndPoint"/> with which the
<see cref="T:InTheHand.Net.Sockets.L2CapClient"/> is communicating.
</value>
</member>
<member name="M:InTheHand.Net.Sockets.L2CapClient.GetMtu">
<summary>
Get the MTU................
</summary>
<returns>int</returns>
</member>
<member name="T:InTheHand.Net.Sockets.L2CapListener">
<summary>
Listens for connections from L2CAP Bluetooth network clients.
</summary>
-
<remarks>
<para>The <see cref="T:InTheHand.Net.Sockets.L2CapListener"/> class provides simple methods
that listen for and accept incoming connection requests. New connections
are returned as <see cref="T:InTheHand.Net.Sockets.L2CapClient"/> instances.
</para>
<para>In the normal case a the listener is initialised with a
<see cref="T:System.Guid"/> holding the Service Class Id on which it is
to accept connections, the listener will automatically create a SDP
Service Record containg that Service Class Id and the port number
(L2CAP Protocol Service Multiplexer) that it has started listening on.
The standard usage is thus as follows.
</para>
<code lang="VB.NET">
Class MyConsts
Shared ReadOnly MyServiceUuid As Guid _
= New Guid("{00112233-4455-6677-8899-aabbccddeeff}")
End Class
...
Dim lsnr As New L2CapListener(MyConsts.MyServiceUuid)
lsnr.Start()
' Now accept new connections, perhaps using the thread pool to handle each
Dim conn As New L2CapClient = lsnr.AcceptClient()
Dim peerStream As Stream = conn.GetStream()
...
</code>
<para>One can also pass the L2CapListener a Service Name, or
a custom Service Record (Service Discovery Protocol record).
To create a custom Service Record use
<see cref="T:InTheHand.Net.Bluetooth.ServiceRecordBuilder"/>.
</para>
<para>There are overloads of the constructor which take a
<see cref="T:InTheHand.Net.BluetoothEndPoint"/> parameter instead of a
<see cref="T:System.Guid"/> as the Service Class Id, the Class Id
value should be specified in that case in the endpoint.
If the port value is specified in the endpoint, then the listener will
attempt to bind to that L2CAP PSM locally. The address in the endpoint is
largely ignored as no current stack supports more than one local radio.
</para>
<para>The L2CAP protocol accepts only certain PSM values. The value is
a 16-bit integer, and the low byte must be odd and the high byte must
be even. So e.g. 0x0001 is valid, but 0x0002 and 0x0101 are invalid.
The range below 0x1001 is reserved for standards allocations.
See the L2CAP Specification for more information, L2CAP section 4.2
(and SDP section 5.1.5) in the version 2.1 specification.
</para>
</remarks>
</member>
<member name="M:InTheHand.Net.Sockets.L2CapListener.#ctor(System.Guid)">
<summary>
Initializes a new instance of the <see cref="T:InTheHand.Net.Sockets.L2CapListener"/> class
that listens on the specified service identifier.
</summary>
-
<param name="service">The Bluetooth service to listen on.
Either one of the values on <see cref="T:InTheHand.Net.Bluetooth.BluetoothService"/>,
or your custom UUID stored in a <see cref="T:System.Guid"/>.
See the <see cref="T:InTheHand.Net.Sockets.L2CapListener"/> documentation for more information
on the usage of this argument.
</param>
</member>
<member name="M:InTheHand.Net.Sockets.L2CapListener.#ctor(InTheHand.Net.BluetoothEndPoint)">
<summary>
Initializes a new instance of the <see cref="T:InTheHand.Net.Sockets.L2CapListener"/> class
with the specified local endpoint.
</summary>
-
<remarks>
<para>The simpler constructor <see cref="M:InTheHand.Net.Sockets.L2CapListener.#ctor(System.Guid)"/>
taking just a <see cref="T:System.Guid">System.Guid</see> is used
in most cases instead of this one.
</para>
</remarks>
-
<param name="localEP">A <see cref="T:InTheHand.Net.BluetoothEndPoint"/> that represents
the local endpoint to which to bind the listener.
Either one of the values on <see cref="T:InTheHand.Net.Bluetooth.BluetoothService"/>,
or your custom UUID stored in a <see cref="T:System.Guid"/>.
See the <see cref="T:InTheHand.Net.Sockets.L2CapListener"/> documentation for more information
on the usage of this argument.
</param>
</member>
<member name="M:InTheHand.Net.Sockets.L2CapListener.Start">
<summary>
Starts listening for incoming connection requests.
</summary>
</member>
<member name="M:InTheHand.Net.Sockets.L2CapListener.Start(System.Int32)">
<summary>
Starts listening for incoming connection requests with a maximum
number of pending connection.
</summary>
-
<param name="backlog">The maximum length of the pending connections
queue.
</param>
</member>
<member name="M:InTheHand.Net.Sockets.L2CapListener.Stop">
<summary>
Closes the listener.
</summary>
</member>
<member name="P:InTheHand.Net.Sockets.L2CapListener.LocalEndPoint">
<summary>
Gets the local endpoint.
</summary>
-
<value>The <see cref="T:InTheHand.Net.BluetoothEndPoint"/>
that the listener is using for communications.
</value>
-
<remarks>
<para>The <see cref="P:InTheHand.Net.BluetoothEndPoint.Port"/>
property of the endpoint will contain the port number (L2CAP PSM)
that the listener is listening on.
On some platforms, the <see cref="P:InTheHand.Net.BluetoothEndPoint.Address"/>
is similarly set, or is <see cref="F:InTheHand.Net.BluetoothAddress.None">BluetoothAddress.None</see>
if not known.
The endpoint&#x2019;s <see cref="P:InTheHand.Net.BluetoothEndPoint.Service"/>
is never set.
</para>
</remarks>
</member>
<member name="M:InTheHand.Net.Sockets.L2CapListener.BeginAcceptClient(System.AsyncCallback,System.Object)">
<summary>
Begins an asynchronous operation to accept an incoming connection attempt.
</summary>
-
<param name="callback">An AsyncCallback delegate that references
the method to invoke when the operation is complete.
</param>
<param name="state">A user-defined object containing information
about the accept operation. This object is passed to the callback
delegate when the operation is complete.
</param>
-
<returns>An <see cref="T:System.IAsyncResult"/> that represents the
asynchronous accept, which could still be pending.
</returns>
</member>
<member name="M:InTheHand.Net.Sockets.L2CapListener.EndAcceptClient(System.IAsyncResult)">
<summary>
Asynchronously accepts an incoming connection attempt and creates
a new <see cref="T:InTheHand.Net.Sockets.L2CapClient"/> to handle remote host communication.
</summary>
-
<param name="asyncResult">An <see cref="T:System.IAsyncResult"/> returned
by a call to the <see cref="M:InTheHand.Net.Sockets.L2CapListener.BeginAcceptClient(System.AsyncCallback,System.Object)"/> method.
</param>
-
<returns>A <see cref="T:InTheHand.Net.Sockets.L2CapClient"/>.
</returns>
</member>
<member name="M:InTheHand.Net.Sockets.L2CapListener.AcceptClient">
<summary>
Accepts a pending connection request.
</summary>
-
<remarks>AcceptClient is a blocking method that returns a
<see cref="T:InTheHand.Net.Sockets.L2CapClient"/> that you can use to send and receive data.
Use the <see cref="M:InTheHand.Net.Sockets.L2CapListener.Pending"/> method to determine if connection
requests are available in the incoming connection queue if you want
to avoid blocking.
<para>Use the <see cref="M:InTheHand.Net.Sockets.L2CapClient.GetStream"/> method to obtain
the underlying <see cref="T:System.IO.Stream"/> of the returned
<see cref="T:InTheHand.Net.Sockets.L2CapClient"/>.
The <see cref="T:System.IO.Stream"/> will provide you with methods for
sending and receiving with the remote host.
When you are through with the <see cref="T:InTheHand.Net.Sockets.L2CapClient"/>, be sure
to call its <see cref="M:InTheHand.Net.Sockets.L2CapClient.Close"/> method.
</para>
</remarks>
-
<returns>A <see cref="T:InTheHand.Net.Sockets.L2CapClient"/> used to send and receive data.</returns>
-
<exception cref="T:System.InvalidOperationException">Listener is stopped.</exception>
</member>
<member name="M:InTheHand.Net.Sockets.L2CapListener.Pending">
<summary>
Determines if there is a connection pending.
</summary>
-
<returns>true if there is a connection pending; otherwise, false.
</returns>
</member>
<member name="P:InTheHand.Net.Sockets.L2CapListener.ServiceName">
<summary>
Get or set the ServiceName the server will use in its SDP Record.
</summary>
-
<value>A string representing the value to be used for the Service Name
SDP Attribute. Will be <see langword="null"/> if not specfied.
</value>
-
<exception cref="T:System.InvalidOperationException">
The listener is already started.
<para>- or -</para>
A custom Service Record was given at initialization time. In that case
the ServiceName attribute should be added to that record.
</exception>
</member>
<member name="P:InTheHand.Net.Sockets.L2CapListener.ServiceRecord">
<summary>
Returns the SDP Service Record for this service.
</summary>
-
<remarks>
<note>Returns <see langword="null"/> if the listener is not
<see cref="M:InTheHand.Net.Sockets.L2CapListener.Start"/>ed
(and an record wasn&#x2019;t supplied at initialization).
</note>
</remarks>
</member>
<member name="T:InTheHand.Net.Sockets.SocketAdapter">
<summary>
Provide a <see cref="T:System.Net.Sockets.Socket">System.Net.Sockets.Socket</see>-like
interace to another connection type e.g. a <see cref="T:InTheHand.Net.Sockets.BluetoothClient"/>
</summary>
-
<remarks>
<para>See class <see cref="T:InTheHand.Net.Sockets.SocketClientAdapter"/>
for an implementation that adapts <see cref="T:InTheHand.Net.Sockets.BluetoothClient"/>
etc to the <see cref="T:System.Net.Sockets.Socket">Socket</see>-like interface.
That is required as on Widcomm/Broadcom <see cref="T:InTheHand.Net.Sockets.BluetoothClient"/>
does not support getting a <see cref="T:System.Net.Sockets.Socket"/> from
the <see cref="T:InTheHand.Net.Sockets.BluetoothClient.Client"/> property.
Motivated by upgrading of <see cref="T:InTheHand.Net.ObexListener"/> to
be usable on Widcomm.
</para>
</remarks>
</member>
<member name="T:InTheHand.Net.Sockets.SocketClientAdapter">
<summary>
An adapter that provides a <see cref="T:System.Net.Sockets.Socket">System.Net.Sockets.Socket</see>-like
interface to <see cref="T:InTheHand.Net.Sockets.BluetoothClient"/> etc.
</summary>
-
<remarks>
<para>Required as on Widcomm/Broadcom <see cref="T:InTheHand.Net.Sockets.BluetoothClient"/>
does not support getting a <see cref="T:System.Net.Sockets.Socket"/> from
the <see cref="T:InTheHand.Net.Sockets.BluetoothClient.Client"/> property.
Motivated by upgrading of <see cref="T:InTheHand.Net.ObexListener"/> to
be usable on Widcomm.
</para>
<para>Also adapts <see cref="T:InTheHand.Net.Sockets.IrDAClient"/>, and
<see cref="T:System.Net.Sockets.TcpClient"/>.
</para>
</remarks>
</member>
<member name="T:InTheHand.Net.IrDA.IrDAAttributeType">
<summary>
Defines the type of an IAS attribute.
</summary>
</member>
<member name="F:InTheHand.Net.IrDA.IrDAAttributeType.Integer">
<summary>
Identifies an integer attribute value.
</summary>
</member>
<member name="F:InTheHand.Net.IrDA.IrDAAttributeType.OctetSequence">
<summary>
Identifies a binary, or octet, attribute value.
</summary>
</member>
<member name="F:InTheHand.Net.IrDA.IrDAAttributeType.String">
<summary>
Identifies a string attribute value.
</summary>
</member>
<member name="T:InTheHand.Net.IrDA.IrDAService">
<summary>
Standard IrDA service names.
</summary>
</member>
<member name="F:InTheHand.Net.IrDA.IrDAService.IrComm">
<summary>
Well-known Service Name &#x201C;IrDA:IrCOMM&#x201D;
</summary>
</member>
<member name="F:InTheHand.Net.IrDA.IrDAService.IrLpt">
<summary>
Well-known Service Name &#x201C;IrLPT&#x201D;
</summary>
</member>
<member name="F:InTheHand.Net.IrDA.IrDAService.ObjectExchange">
<summary>
Well-known Service Name &#x201C;OBEX&#x201D;
</summary>
</member>
<member name="T:InTheHand.Net.Mime.MediaTypeNames">
<summary>
Specifies the media type information for an object.
</summary>
</member>
<member name="T:InTheHand.Net.Mime.MediaTypeNames.Image">
<summary>
Specifies the type of image data in an object.
</summary>
</member>
<member name="F:InTheHand.Net.Mime.MediaTypeNames.Image.Gif">
<summary>
Specifies that the image data is in Graphics Interchange Format (GIF).
</summary>
</member>
<member name="F:InTheHand.Net.Mime.MediaTypeNames.Image.Jpg">
<summary>
Specifies that the image data is in Joint Photographic Experts Group (JPEG) format.
</summary>
</member>
<member name="T:InTheHand.Net.Mime.MediaTypeNames.Text">
<summary>
Specifies the type of text data in an object.
</summary>
</member>
<member name="F:InTheHand.Net.Mime.MediaTypeNames.Text.Html">
<summary>
Specifies that the data is in HTML format.
</summary>
</member>
<member name="F:InTheHand.Net.Mime.MediaTypeNames.Text.Plain">
<summary>
Specifies that the data is in plain text format.
</summary>
</member>
<member name="F:InTheHand.Net.Mime.MediaTypeNames.Text.vCalendar">
<summary>
Specifies that the data is in vCalendar format.
</summary>
</member>
<member name="F:InTheHand.Net.Mime.MediaTypeNames.Text.vCard">
<summary>
Specifies that the data is in vCard format.
</summary>
</member>
<member name="F:InTheHand.Net.Mime.MediaTypeNames.Text.vMessage">
<summary>
Specifies that the data is in vMsg format.
</summary>
</member>
<member name="F:InTheHand.Net.Mime.MediaTypeNames.Text.vNote">
<summary>
Specifies that the data is in vNote format.
</summary>
</member>
<member name="F:InTheHand.Net.Mime.MediaTypeNames.Text.Xml">
<summary>
Specifies that the data is in XML format.
</summary>
</member>
<member name="T:InTheHand.Net.Mime.MediaTypeNames.ObjectExchange">
<summary>
Specifies the type of Object Exchange specific data.
</summary>
</member>
<member name="F:InTheHand.Net.Mime.MediaTypeNames.ObjectExchange.Capabilities">
<summary>
Used to retrieve supported object types.
</summary>
</member>
<member name="F:InTheHand.Net.Mime.MediaTypeNames.ObjectExchange.FolderListing">
<summary>
Used to retrieve folder listing with OBEX FTP.
</summary>
</member>
<member name="F:InTheHand.Net.Mime.MediaTypeNames.ObjectExchange.ObjectProfile">
<summary>
Used to retrieve an object profile.
</summary>
</member>
<member name="M:InTheHand.Net.AsyncResult`1.SetAsCompletedWithResultOf(System.Func{`0},System.Boolean)">
<summary>
Get the results of the operation from the specified function
and set the operation as completed,
or if getting the results fails then set the corresponding error
completion.
</summary>
-
<remarks>
<para>The pattern that comes to mind when calling
<see cref="M:SetAsCompleted(TResult,AsyncResultCompletion)"/> is
the incorrect:
<code>try {
var result = SomeStatementsAndFunctionCallsToGetTheResult(...);
ar.SetAsCompleted(result, false);
} catch (Exception ex) {
ar.SetAsCompleted(ex, false);
}
</code>
That is wrong because if the user callback fails with an exception
then we'll catch it and try to call SetAsCompleted a second time!
</para>
<para>We need to instead call SetAsCompleted outside of the try
block. This method provides that pattern.
</para>
</remarks>
-
<param name="getResultsOrThrow">A delegate containing the function
to call to get the result.
It should throw an exception in error cases.
</param>
<param name="completedSynchronously"></param>
</member>
<member name="T:InTheHand.Net.AsyncResultCompletion">
<summary>
Used with
<see cref="M:InTheHand.Net.AsyncResultNoResult.SetAsCompleted(System.Exception,InTheHand.Net.AsyncResultCompletion)">
AsyncResultNoResult.SetAsCompleted</see> and
<see cref="M:InTheHand.Net.AsyncResult{TResult}.SetAsCompleted(TResult,AsyncResultNoResult.AsyncResultCompletion)">
AsyncResult&lt;TResult&gt;.SetAsCompleted</see>.
</summary>
</member>
<member name="F:InTheHand.Net.AsyncResultCompletion.IsSync">
<summary>
Equivalent to <c>true</c> for the <see cref="T:System.Boolean"/>
#x201C;completedSynchronously&#x201D; parameter.
</summary>
</member>
<member name="F:InTheHand.Net.AsyncResultCompletion.IsAsync">
<summary>
Equivalent to <c>false</c> for the <see cref="T:System.Boolean"/>
#x201C;completedSynchronously&#x201D; parameter.
</summary>
</member>
<member name="F:InTheHand.Net.AsyncResultCompletion.MakeAsync">
<summary>
Forces the callback to run on a thread-pool thread.
</summary>
</member>
<member name="T:InTheHand.Net.BluetoothAddress">
<summary>
Represents a Bluetooth device address.
</summary>
<remarks>The BluetoothAddress class contains the address of a bluetooth device.</remarks>
</member>
<member name="M:InTheHand.Net.BluetoothAddress.#ctor(System.Int64)">
<summary>
Initializes a new instance of the <see cref="T:InTheHand.Net.BluetoothAddress"/> class with the specified address.
</summary>
<param name="address"><see cref="T:System.Int64"/> representation of the address.</param>
</member>
<member name="M:InTheHand.Net.BluetoothAddress.#ctor(System.Byte[])">
<summary>
Initializes a new instance of the <see cref="T:InTheHand.Net.BluetoothAddress"/> class with the specified address.
</summary>
-
<remarks>
<para>Note: The address should be supplied in little-endian order on the
current Windows platform (which is little-endian).
For forward compatibility it would be safer to use the
<see cref="M:InTheHand.Net.BluetoothAddress.Parse(System.String)"/> method,
which will be correct for all platforms.
Or consider
<see cref="M:InTheHand.Net.BluetoothAddress.CreateFromLittleEndian(System.Byte[])"/>
or
<see cref="M:InTheHand.Net.BluetoothAddress.CreateFromBigEndian(System.Byte[])"/>.
</para>
</remarks>
-
<param name="address">Address as 6 byte array.</param>
<exception cref="T:System.ArgumentNullException">address passed was <see langword="null"/>.</exception>
<exception cref="T:System.ArgumentException">address passed was not a 6 byte array.</exception>
</member>
<member name="M:InTheHand.Net.BluetoothAddress.CreateFromBigEndian(System.Byte[])">
<summary>
Create a <see cref="T:InTheHand.Net.BluetoothAddress"/> from an Array of <see cref="T:System.Byte"/>
where the array is in standard order.
</summary>
-
<remarks>
<para>Different protocol stacks have different ways of storing a
Bluetooth Address. Some use an array of bytes e.g. "byte[6]",
which means that the first byte of the address comes first in
memory (which we&#x2019;ll call big-endian format). Others
e.g. the Microsoft stack use a long integer (e.g. uint64) which
means that the *last* byte of the address come comes first in
memory (which we&#x2019;ll call little-endian format)
</para>
<para>This method creates an address for the first form.
See <see cref="M:InTheHand.Net.BluetoothAddress.CreateFromLittleEndian(System.Byte[])"/> for the second form.
</para>
</remarks>
-
<param name="address">An Array of <see cref="T:System.Byte"/>
with the Bluetooth Address ordered as described above.
</param>
-
<returns>The resultant <see cref="T:InTheHand.Net.BluetoothAddress"/>.
</returns>
-
<seealso cref="M:InTheHand.Net.BluetoothAddress.CreateFromLittleEndian(System.Byte[])"/>
</member>
<member name="M:InTheHand.Net.BluetoothAddress.CreateFromLittleEndian(System.Byte[])">
<summary>
Create a <see cref="T:InTheHand.Net.BluetoothAddress"/> from an Array of <see cref="T:System.Byte"/>
where the array is in reverse order.
</summary>
-
<remarks>
<para>Different protocol stacks have different ways of storing a
Bluetooth Address. Some use an array of bytes e.g. "byte[6]",
which means that the first byte of the address comes first in
memory (which we&#x2019;ll call big-endian format). Others
e.g. the Microsoft stack use a long integer (e.g. uint64) which
means that the *last* byte of the address come comes first in
memory (which we&#x2019;ll call little-endian format)
</para>
<para>This method creates an address for the second form.
See <see cref="M:InTheHand.Net.BluetoothAddress.CreateFromLittleEndian(System.Byte[])"/> for the first form.
</para>
</remarks>
-
<param name="address">An Array of <see cref="T:System.Byte"/>
with the Bluetooth Address ordered as described above.
</param>
-
<returns>The resultant <see cref="T:InTheHand.Net.BluetoothAddress"/>.
</returns>
-
<seealso cref="M:InTheHand.Net.BluetoothAddress.CreateFromBigEndian(System.Byte[])"/>
</member>
<member name="M:InTheHand.Net.BluetoothAddress.TryParse(System.String,InTheHand.Net.BluetoothAddress@)">
<summary>
Converts the string representation of an address to it's <see cref="T:InTheHand.Net.BluetoothAddress"/> equivalent.
A return value indicates whether the operation succeeded.
</summary>
<param name="bluetoothString">A string containing an address to convert.</param>
<param name="result">When this method returns, contains the <see cref="T:InTheHand.Net.BluetoothAddress"/> equivalent to the address contained in s, if the conversion succeeded, or null (Nothing in Visual Basic) if the conversion failed.
The conversion fails if the s parameter is null or is not of the correct format.</param>
<returns>true if s is a valid Bluetooth address; otherwise, false.</returns>
</member>
<member name="M:InTheHand.Net.BluetoothAddress.Parse(System.String)">
<summary>
Converts the string representation of a Bluetooth address to a new <see cref="T:InTheHand.Net.BluetoothAddress"/> instance.
</summary>
<param name="bluetoothString">A string containing an address to convert.</param>
<returns>New <see cref="T:InTheHand.Net.BluetoothAddress"/> instance.</returns>
<remarks>Address must be specified in hex format optionally separated by the colon or period character e.g. 000000000000, 00:00:00:00:00:00 or 00.00.00.00.00.00.</remarks>
<exception cref="T:System.ArgumentNullException">bluetoothString is null.</exception>
<exception cref="T:System.FormatException">bluetoothString is not a valid Bluetooth address.</exception>
</member>
<member name="P:InTheHand.Net.BluetoothAddress.Sap">
<summary>
Significant address part.
</summary>
</member>
<member name="P:InTheHand.Net.BluetoothAddress.Nap">
<summary>
Non-significant address part.
</summary>
</member>
<member name="M:InTheHand.Net.BluetoothAddress.ToByteArray">
<summary>
Returns the value as a byte array.
</summary>
-
<remarks>In previous versions this returned the internal array, it now
returns a copy. Addresses should be immutable, particularly for the
None const!
</remarks>
-
<returns>An array of byte</returns>
</member>
<member name="M:InTheHand.Net.BluetoothAddress.ToByteArrayLittleEndian">
<summary>
Returns the value as a byte array,
where the array is in reverse order.
</summary>
-
<remarks>
<para>See <see cref="M:InTheHand.Net.BluetoothAddress.CreateFromBigEndian(System.Byte[])"/> for discussion of
different stack#x2019;s storage formats for Bluetooth Addresses.
</para>
<para>In previous versions this returned the internal array, it now
returns a copy. Addresses should be immutable, particularly for the
None const!
</para>
</remarks>
-
<returns>An array of byte of length six representing the Bluetooth address.</returns>
</member>
<member name="M:InTheHand.Net.BluetoothAddress.ToByteArrayBigEndian">
<summary>
Returns the value as a byte array,
where the array is in standard order.
</summary>
-
<remarks>
<para>See <see cref="M:InTheHand.Net.BluetoothAddress.CreateFromBigEndian(System.Byte[])"/> for discussion of
different stack#x2019;s storage formats for Bluetooth Addresses.
</para>
<para>In previous versions this returned the internal array, it now
returns a copy. Addresses should be immutable, particularly for the
None const!
</para>
</remarks>
-
<returns>An array of byte of length six representing the Bluetooth address.</returns>
</member>
<member name="M:InTheHand.Net.BluetoothAddress.ToInt64">
<summary>
Returns the Bluetooth address as a long integer.
</summary>
-
<returns>An <see cref="T:System.Int64"/>.</returns>
</member>
<member name="M:InTheHand.Net.BluetoothAddress.Equals(System.Object)">
<summary>
Compares two <see cref="T:InTheHand.Net.BluetoothAddress"/> instances for equality.
</summary>
-
<param name="obj">The <see cref="T:InTheHand.Net.BluetoothAddress"/>
to compare with the current instance.
</param>
-
<returns><c>true</c> if <paramref name="obj"/>
is a <see cref="T:InTheHand.Net.BluetoothAddress"/> and equal to the current instance;
otherwise, <c>false</c>.
</returns>
</member>
<member name="M:InTheHand.Net.BluetoothAddress.GetHashCode">
<summary>
Returns the hash code for this instance.
</summary>
<returns>A hash code for the current object.</returns>
</member>
<member name="M:InTheHand.Net.BluetoothAddress.op_Equality(InTheHand.Net.BluetoothAddress,InTheHand.Net.BluetoothAddress)">
<summary>
Returns an indication whether the values of two specified <see cref="T:InTheHand.Net.BluetoothAddress"/> objects are equal.<para><b>New in v1.5</b></para>
</summary>
-
<param name="x">A <see cref="T:InTheHand.Net.BluetoothAddress"/> or <see langword="null"/>.</param>
<param name="y">A <see cref="T:InTheHand.Net.BluetoothAddress"/> or <see langword="null"/>.</param>
-
<returns><c>true</c> if the values of the two instance are equal;
otherwise, <c>false</c>.
</returns>
</member>
<member name="M:InTheHand.Net.BluetoothAddress.op_Inequality(InTheHand.Net.BluetoothAddress,InTheHand.Net.BluetoothAddress)">
<summary>
Returns an indication whether the values of two specified <see cref="T:InTheHand.Net.BluetoothAddress"/> objects are not equal.
</summary>
-
<param name="x">A <see cref="T:InTheHand.Net.BluetoothAddress"/> or <see langword="null"/>.</param>
<param name="y">A <see cref="T:InTheHand.Net.BluetoothAddress"/> or <see langword="null"/>.</param>
-
<returns><c>true</c> if the value of the two instance is different;
otherwise, <c>false</c>.
</returns>
</member>
<member name="M:InTheHand.Net.BluetoothAddress.ToString">
<summary>
Converts the address to its equivalent string representation.
</summary>
<returns>The string representation of this instance.</returns>
<remarks>The default return format is without a separator character
- use the <see cref="M:InTheHand.Net.BluetoothAddress.ToString(System.String)"/>
overload for more formatting options.</remarks>
</member>
<member name="M:InTheHand.Net.BluetoothAddress.ToString(System.String)">
<summary>
Returns a <see cref="T:System.String"/> representation of the value of this <see cref="T:InTheHand.Net.BluetoothAddress"/> instance, according to the provided format specifier.
</summary>
<param name="format">A single format specifier that indicates how to format the value of this address.
The format parameter can be "N", "C", or "P".
If format is null or the empty string (""), "N" is used.</param>
<returns>A <see cref="T:System.String"/> representation of the value of this <see cref="T:InTheHand.Net.BluetoothAddress"/>.</returns>
<remarks><list type="table">
<listheader><term>Specifier</term><term>Format of Return Value </term></listheader>
<item><term>N</term><term>12 digits: <para>XXXXXXXXXXXX</para></term></item>
<item><term>C</term><term>12 digits separated by colons: <para>XX:XX:XX:XX:XX:XX</para></term></item>
<item><term>P</term><term>12 digits separated by periods: <para>XX.XX.XX.XX.XX.XX</para></term></item>
</list></remarks>
</member>
<member name="F:InTheHand.Net.BluetoothAddress.None">
<summary>
Provides a null Bluetooth address.
</summary>
</member>
<member name="F:InTheHand.Net.BluetoothAddress.IacFirst">
<summary>
</summary>
</member>
<member name="F:InTheHand.Net.BluetoothAddress.IacLast">
<summary>
</summary>
</member>
<member name="F:InTheHand.Net.BluetoothAddress.Liac">
<summary>
Limited Inquiry Access Code.
</summary>
</member>
<member name="F:InTheHand.Net.BluetoothAddress.Giac">
<summary>
General Inquire Access Code.
The default inquiry code which is used to discover all devices in range.
</summary>
</member>
<member name="M:InTheHand.Net.BluetoothAddress.ToString(System.String,System.IFormatProvider)">
<summary>
Returns a <see cref="T:System.String"/> representation of the value of this
<see cref="T:InTheHand.Net.BluetoothAddress"/> instance, according to the provided format specifier.
</summary>
-
<param name="format">A single format specifier that indicates how to format the value of this Address.
See <see cref="M:InTheHand.Net.BluetoothAddress.ToString(System.String)"/>
for the possible format strings and their output.
</param>
<param name="formatProvider">Ignored.
</param>
-
<returns>A <see cref="T:System.String"/> representation of the value of this
<see cref="T:InTheHand.Net.BluetoothAddress"/>.
</returns>
-
<remarks>See <see cref="M:InTheHand.Net.BluetoothAddress.ToString(System.String)"/>
for the possible format strings and their output.
</remarks>
</member>
<member name="M:InTheHand.Net.BluetoothAddress.Clone">
<summary>
Creates a copy of the <see cref="T:InTheHand.Net.BluetoothAddress"/>.
</summary>
<remarks>Creates a copy including of the internal byte array.
</remarks>
<returns>A copy of the <see cref="T:InTheHand.Net.BluetoothAddress"/>.
</returns>
</member>
<member name="T:InTheHand.Net.BluetoothEndPoint">
<summary>
Represents a network endpoint as a Bluetooth address and
a Service Class Id and/or a port number.
</summary>
-
<remarks>
<para>The BluetoothEndPoint class contains the host, service class id and port
information needed by an application to connect to a service on a host.
By combining the host's Bluetooth address and class id or port number,
the BluetoothEndPoint class forms a connection point to a service.
</para>
<para>When used for instance when connecting with <see cref="T:InTheHand.Net.Sockets.BluetoothClient"/>,
if the port is specified then the connection is made to that port,
otherwise a SDP lookup is done for a record with the class specified in
the <see cref="P:InTheHand.Net.BluetoothEndPoint.Service"/> property.
</para>
</remarks>
</member>
<member name="M:InTheHand.Net.BluetoothEndPoint.#ctor(InTheHand.Net.BluetoothAddress,System.Guid)">
<summary>
Initializes a new instance of the <see cref="T:InTheHand.Net.BluetoothEndPoint"/> class with the specified address and service.
</summary>
<param name="address">The Bluetooth address of the device. A six byte array.</param>
<param name="service">The Bluetooth service to use.</param>
</member>
<member name="M:InTheHand.Net.BluetoothEndPoint.#ctor(InTheHand.Net.BluetoothAddress,System.Guid,System.Int32)">
<summary>
Initializes a new instance of the <see cref="T:InTheHand.Net.BluetoothEndPoint"/> class with the specified address, service and port number.
</summary>
<param name="address">The Bluetooth address of the device. A six byte array.</param>
<param name="service">The Bluetooth service to use.</param>
<param name="port">Radio channel to use, -1 for any.</param>
-
<remarks>
<para>See the <see cref="T:InTheHand.Net.BluetoothEndPoint"/> documentation for
how the combination of Service and Port are used when connecting with
BluetoothClient.
</para>
</remarks>
</member>
<member name="M:InTheHand.Net.BluetoothEndPoint.Serialize">
<summary>
Serializes endpoint information into a <see cref="T:System.Net.SocketAddress"/> instance.
</summary>
<returns>A <see cref="T:System.Net.SocketAddress"/> instance containing the socket address for the endpoint.</returns>
</member>
<member name="M:InTheHand.Net.BluetoothEndPoint.Create(System.Net.SocketAddress)">
<summary>
Creates an endpoint from a socket address.
</summary>
<param name="socketAddress">The <see cref="T:System.Net.SocketAddress"/> to use for the endpoint.</param>
<returns>An <see cref="T:System.Net.EndPoint"/> instance using the specified socket address.</returns>
</member>
<member name="M:InTheHand.Net.BluetoothEndPoint.Equals(System.Object)">
<summary>
Compares two <see cref="T:InTheHand.Net.BluetoothEndPoint"/> instances for equality.
</summary>
-
<param name="obj">The <see cref="T:InTheHand.Net.BluetoothEndPoint"/>
to compare with the current instance.
</param>
-
<returns><c>true</c> if <paramref name="obj"/>
is a <see cref="T:InTheHand.Net.BluetoothEndPoint"/> and equal to the current instance;
otherwise, <c>false</c>.
</returns>
</member>
<member name="M:InTheHand.Net.BluetoothEndPoint.GetHashCode">
<summary>
Returns the hash code for this instance.
</summary>
<returns>A hash code for the current object.</returns>
</member>
<member name="M:InTheHand.Net.BluetoothEndPoint.ToString">
<summary>
Returns the string representation of the BluetoothEndPoint.
</summary>
<remarks>
<para>
We try to follow existing examples where possible; JSR-82 and similar
use a URI of the form:</para>
<code lang="none">bluetooth://xxxxxxxxxxxx:xx</code>
or:
<code lang="none">bluetooth://xxxxxxxxxxxx:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</code>
or in some serialport only situations:
<code lang="none">btspp://</code>
<para>So we follow that pattern here, but of course without the URI prefix.
If the form with the URI is required then the prefix can simply be appended.</para>
<para>
If the port is non default then we use that, otherwise just the full guid.
</para>
<para>Some examples are:</para>
To the ObexObjectPush service:
<code lang="none">"04E2030405F6:0000110500001000800000805f9b34fb"</code>
To the SerialPort service:
<code lang="none">"04E2030405F6:0000110100001000800000805f9b34fb"</code>
With an Empty service GUID:
<code lang="none">"04E2030405F6:00000000000000000000000000000000"</code>
With port 9:
<code lang="none">"04E2030405F6:9"</code>
</remarks>
<returns>The string representation of the BluetoothEndPoint.</returns>
</member>
<member name="P:InTheHand.Net.BluetoothEndPoint.AddressFamily">
<summary>
Gets the address family of the Bluetooth address.
</summary>
</member>
<member name="P:InTheHand.Net.BluetoothEndPoint.Address">
<summary>
Gets or sets the Bluetooth address of the endpoint.
</summary>
<seealso cref="T:InTheHand.Net.BluetoothAddress"/>
</member>
<member name="P:InTheHand.Net.BluetoothEndPoint.Service">
<summary>
Gets or sets the Bluetooth service to use for the connection.
</summary>
<seealso cref="T:InTheHand.Net.Bluetooth.BluetoothService"/>
</member>
<member name="P:InTheHand.Net.BluetoothEndPoint.Port">
<summary>
Gets or sets the service channel number of the endpoint.
</summary>
</member>
<member name="P:InTheHand.Net.BluetoothEndPoint.HasPort">
<summary>
Gets whether a <see cref="P:InTheHand.Net.BluetoothEndPoint.Port"/> is set.
</summary>
</member>
<member name="M:InTheHand.Net.BluetoothEndPoint.Clone">
<summary>
Creates a copy of the <see cref="T:InTheHand.Net.BluetoothEndPoint"/>.
</summary>
<remarks>Creates a copy including of the internal <see cref="T:InTheHand.Net.BluetoothAddress"/>
</remarks>
<returns>A copy of the <see cref="T:InTheHand.Net.BluetoothEndPoint"/>.
</returns>
</member>
<member name="F:InTheHand.Net.BluetoothEndPoint.MinPort">
<summary>
Specifies the minimum value that can be assigned to the Port property.
</summary>
</member>
<member name="F:InTheHand.Net.BluetoothEndPoint.MaxPort">
<summary>
Specifies the maximum value that can be assigned to the Port property.
</summary>
</member>
<member name="F:InTheHand.Net.BluetoothEndPoint.MinScn">
<summary>
The minimum valid Server Channel Number, 1.
</summary>
<remarks>
<para>
Bluetooth's rfcomm.pdf: Part F:1 -- RFCOMM with TS 07.10 -- Serial Port Emulation
</para>
<para>
Section 5.4:
</para>
<list type="table">
&#x201C;The RFCOMM server channel number is a [five-bit field].
Server applications registering with an RFCOMM service interface are assigned a
Server Channel number in the range 1…30. [0 and 31 should not be used since
the corresponding DLCIs are reserved in TS 07.10]&#x201D;
</list>
</remarks>
</member>
<member name="F:InTheHand.Net.BluetoothEndPoint.MaxScn">
<summary>
The maximum valid Server Channel Number, 30.
</summary>
<remarks><see cref="F:InTheHand.Net.BluetoothEndPoint.MinScn"/>
</remarks>
</member>
<member name="T:InTheHand.Net.IrDAAddress">
<summary>
Represents an IrDA device address.
</summary>
</member>
<member name="M:InTheHand.Net.IrDAAddress.#ctor(System.Byte[])">
<summary>
Initializes a new instance of the <see cref="T:InTheHand.Net.IrDAAddress"/> class with the specified address.
</summary>
<param name="address">Address as 4 byte array.</param>
<exception cref="T:System.ArgumentNullException"><paramref name="address"/> was null.</exception>
<exception cref="T:System.ArgumentException"><paramref name="address"/> was not a 4 byte array.</exception>
</member>
<member name="M:InTheHand.Net.IrDAAddress.#ctor(System.Int32)">
<summary>
Initializes a new instance of the <see cref="T:InTheHand.Net.IrDAAddress"/> class with the specified address.
</summary>
<param name="address"><see cref="T:System.Int32"/> representation of the address.</param>
</member>
<member name="M:InTheHand.Net.IrDAAddress.ToInt32">
<summary>
Returns the IrDA address as an integer.
</summary>
-
<returns>An <see cref="T:System.Int64"/>.</returns>
</member>
<member name="M:InTheHand.Net.IrDAAddress.ToByteArray">
<summary>
Returns the internal byte array.
</summary>
-
<returns>An array of <see cref="T:System.Byte"/>.</returns>
</member>
<member name="M:InTheHand.Net.IrDAAddress.TryParse(System.String,InTheHand.Net.IrDAAddress@)">
<summary>
Converts the string representation of an address to it's <see cref="T:InTheHand.Net.IrDAAddress"/> equivalent.
A return value indicates whether the operation succeeded.
</summary>
<param name="s">A string containing an address to convert.</param>
<param name="result">When this method returns, contains the <see cref="T:InTheHand.Net.IrDAAddress"/> equivalent to the address contained in s, if the conversion succeeded, or null (Nothing in Visual Basic) if the conversion failed.
The conversion fails if the s parameter is null or is not of the correct format.</param>
<returns>true if s is a valid IrDA address; otherwise, false.</returns>
</member>
<member name="M:InTheHand.Net.IrDAAddress.Parse(System.String)">
<summary>
Converts the string representation of an IrDA address to a new <see cref="T:InTheHand.Net.IrDAAddress"/> instance.
</summary>
<param name="irdaString">A string containing an address to convert.</param>
<returns>New <see cref="T:InTheHand.Net.IrDAAddress"/> instance.</returns>
<remarks>Address must be specified in hex format optionally separated by the colon or period character e.g. 00000000, 00:00:00:00 or 00.00.00.00.</remarks>
<exception cref="T:System.ArgumentNullException">irdaString is null.</exception>
<exception cref="T:System.FormatException">irdaString is not a valid IrDA address.</exception>
</member>
<member name="M:InTheHand.Net.IrDAAddress.ToString">
<summary>
Converts the address to its equivalent string representation.
</summary>
<returns>The string representation of this instance.</returns>
</member>
<member name="M:InTheHand.Net.IrDAAddress.ToString(System.String)">
<summary>
Returns a <see cref="T:System.String"/> representation of the value of this <see cref="T:InTheHand.Net.IrDAAddress"/> instance, according to the provided format specifier.
</summary>
<param name="format">A single format specifier that indicates how to format the value of this Guid. The format parameter can be "N", "C" or "P". If format is null or the empty string (""), "N" is used.</param>
<returns>A <see cref="T:System.String"/> representation of the value of this <see cref="T:InTheHand.Net.BluetoothAddress"/>.</returns>
<remarks><list type="table">
<listheader><term>Specifier</term><term>Format of Return Value </term></listheader>
<item><term>N</term><term>8 digits: <para>XXXXXXXX</para></term></item>
<item><term>C</term><term>8 digits separated by colons: <para>XX:XX:XX:XX</para></term></item>
<item><term>P</term><term>8 digits separated by periods: <para>XX.XX.XX.XX</para></term></item>
</list></remarks>
</member>
<member name="M:InTheHand.Net.IrDAAddress.Equals(System.Object)">
<summary>
Compares two <see cref="T:InTheHand.Net.IrDAAddress"/> instances for equality.
</summary>
-
<param name="obj">The <see cref="T:InTheHand.Net.IrDAAddress"/>
to compare with the current instance.
</param>
-
<returns><c>true</c> if <paramref name="obj"/>
is a <see cref="T:InTheHand.Net.IrDAAddress"/> and equal to the current instance;
otherwise, <c>false</c>.
</returns>
</member>
<member name="M:InTheHand.Net.IrDAAddress.GetHashCode">
<summary>
Returns the hash code for this instance.
</summary>
<returns>A hash code for the current object.</returns>
</member>
<member name="M:InTheHand.Net.IrDAAddress.op_Equality(InTheHand.Net.IrDAAddress,InTheHand.Net.IrDAAddress)">
<summary>
Returns an indication whether the values of two specified <see cref="T:InTheHand.Net.IrDAAddress"/> objects are equal.
</summary>
-
<param name="x">A <see cref="T:InTheHand.Net.IrDAAddress"/> or <see langword="null"/>.</param>
<param name="y">A <see cref="T:InTheHand.Net.IrDAAddress"/> or <see langword="null"/>.</param>
-
<returns><c>true</c> if the values of the two instance are equal;
otherwise, <c>false</c>.
</returns>
</member>
<member name="M:InTheHand.Net.IrDAAddress.op_Inequality(InTheHand.Net.IrDAAddress,InTheHand.Net.IrDAAddress)">
<summary>
Returns an indication whether the values of two specified <see cref="T:InTheHand.Net.IrDAAddress"/> objects are not equal.
</summary>
-
<param name="x">A <see cref="T:InTheHand.Net.IrDAAddress"/> or <see langword="null"/>.</param>
<param name="y">A <see cref="T:InTheHand.Net.IrDAAddress"/> or <see langword="null"/>.</param>
-
<returns><c>true</c> if the value of the two instance is different;
otherwise, <c>false</c>.
</returns>
</member>
<member name="F:InTheHand.Net.IrDAAddress.None">
<summary>
Provides a null IrDA address.
</summary>
</member>
<member name="M:InTheHand.Net.IrDAAddress.System#IComparable#CompareTo(System.Object)">
<summary>
</summary>
<param name="obj"></param>
<returns></returns>
</member>
<member name="M:InTheHand.Net.IrDAAddress.ToString(System.String,System.IFormatProvider)">
<summary>
Returns a <see cref="T:System.String"/> representation of the value of this <see cref="T:InTheHand.Net.IrDAAddress"/> instance, according to the provided format specifier.
</summary>
<param name="format">A single format specifier that indicates how to format the value of this Guid. The format parameter can be "N", "C" or "P". If format is null or the empty string (""), "N" is used.</param>
<param name="formatProvider">Ignored.</param>
-
<returns>A <see cref="T:System.String"/> representation of the value of this <see cref="T:InTheHand.Net.IrDAAddress"/>.</returns>
-
<remarks>See <see cref="M:InTheHand.Net.IrDAAddress.ToString(System.String)"/>
for the possible format strings and their output.
</remarks>
</member>
<member name="T:InTheHand.Net.IrDAEndPoint">
<summary>
Represents an end point for an infrared connection.
</summary>
<seealso cref="T:System.Net.IrDAEndPoint"/>
</member>
<member name="M:InTheHand.Net.IrDAEndPoint.#ctor(System.Byte[],System.String)">
<summary>
Initializes a new instance of the <see cref="T:InTheHand.Net.IrDAEndPoint"/> class.
</summary>
<param name="irdaDeviceID">The device identifier.</param>
<param name="serviceName">The Service Name to connect to/listen on eg "<c>OBEX</c>".
In the very uncommon case where a connection is to be made to
/ a server is to listen on
a specific LSAP-SEL (port number), then use
the form "<c>LSAP-SELn</c>", where n is an integer.
</param>
</member>
<member name="M:InTheHand.Net.IrDAEndPoint.#ctor(InTheHand.Net.IrDAAddress,System.String)">
<summary>
Initializes a new instance of the <see cref="T:InTheHand.Net.IrDAEndPoint"/> class.
</summary>
<param name="irdaDeviceAddress">The device address.</param>
<param name="serviceName">The Service Name to connect to/listen on eg "<c>OBEX</c>".
In the very uncommon case where a connection is to be made to
/ a server is to listen on
a specific LSAP-SEL (port number), then use
the form "<c>LSAP-SELn</c>", where n is an integer.
</param>
</member>
<member name="P:InTheHand.Net.IrDAEndPoint.Address">
<summary>
Gets or sets an address for the device.
</summary>
</member>
<member name="P:InTheHand.Net.IrDAEndPoint.DeviceID">
<summary>
Gets or sets an identifier for the device.
</summary>
<exception cref="T:System.ArgumentNullException">
The specified byte array is null (<c>Nothing</c> in Visual Basic).
</exception>
<exception cref="T:System.ArgumentOutOfRangeException">
The specified byte array is not four bytes long.
</exception>
</member>
<member name="P:InTheHand.Net.IrDAEndPoint.ServiceName">
<summary>
Gets or sets the name of the service.
</summary>
</member>
<member name="P:InTheHand.Net.IrDAEndPoint.AddressFamily">
<summary>
Gets the address family to which the endpoint belongs.
</summary>
</member>
<member name="M:InTheHand.Net.IrDAEndPoint.Serialize">
<inheritdoc/>
</member>
<member name="M:InTheHand.Net.IrDAEndPoint.Create(System.Net.SocketAddress)">
<inheritdoc/>
</member>
<member name="M:InTheHand.Net.IrDAEndPoint.Equals(System.Object)">
<summary>
Compares two <see cref="T:InTheHand.Net.IrDAEndPoint"/> instances for equality.
</summary>
-
<param name="obj">The <see cref="T:InTheHand.Net.BluetoothEndPoint"/>
to compare with the current instance.
</param>
-
<returns><c>true</c> if <paramref name="obj"/>
is a <see cref="T:InTheHand.Net.IrDAEndPoint"/> and equal to the current instance;
otherwise, <c>false</c>.
</returns>
</member>
<member name="M:InTheHand.Net.IrDAEndPoint.GetHashCode">
<summary>
Returns the hash code for this instance.
</summary>
<returns>A hash code for the current object.</returns>
</member>
<member name="M:InTheHand.Net.IrDAEndPoint.ToString">
<summary>
Returns the string representation of the IrDAEndPoint.
</summary>
<remarks>
<para>
The string is in format <c>&lt;DeviceAddress&gt;:&lt;ServiceName&gt;</c>
</para>
An example is:
<code lang="none">"04E20304:OBEX"</code>
</remarks>
<returns>The string representation of the IrDAEndPoint.</returns>
</member>
<member name="T:InTheHand.Net.ObexListener">
<summary>
Provides a simple, programmatically controlled OBEX protocol listener.
</summary>
</member>
<member name="M:InTheHand.Net.ObexListener.#ctor">
<overloads>
Initializes a new instance of the ObexListener class.
</overloads>
-
<summary>
Initializes a new instance of the ObexListener class using the Bluetooth transport.
</summary>
</member>
<member name="M:InTheHand.Net.ObexListener.#ctor(InTheHand.Net.ObexTransport)">
<summary>
Initializes a new instance of the ObexListener class specifiying the transport to use.
</summary>
-
<param name="transport">Specifies the transport protocol to use.
</param>
</member>
<member name="P:InTheHand.Net.ObexListener.Authenticate">
<summary>
Get or set whether the transport connection (e.g. Bluetooth) will
require Authentication.
</summary>
-
<remarks>
<para>Only Bluetooth supports this, TCP/IP and IrDA do not.
On Bluetooth this uses <see cref="P:InTheHand.Net.Sockets.BluetoothListener.Authenticate">BluetoothListener.Authenticate</see>.
</para>
</remarks>
</member>
<member name="P:InTheHand.Net.ObexListener.Encrypt">
<summary>
Get or set whether the transport connection (e.g. Bluetooth) will
require Encryption.
</summary>
-
<remarks>
<para>Only Bluetooth supports this, TCP/IP and IrDA do not.
On Bluetooth this uses <see cref="P:InTheHand.Net.Sockets.BluetoothListener.Encrypt">BluetoothListener.Encrypt</see>.
</para>
</remarks>
</member>
<member name="P:InTheHand.Net.ObexListener.IsListening">
<summary>
Gets a value that indicates whether the <see cref="T:InTheHand.Net.ObexListener"/> has been started.
</summary>
</member>
<member name="M:InTheHand.Net.ObexListener.Start">
<summary>
Allows this instance to receive incoming requests.
</summary>
</member>
<member name="M:InTheHand.Net.ObexListener.Stop">
<summary>
Causes this instance to stop receiving incoming requests.
</summary>
</member>
<member name="M:InTheHand.Net.ObexListener.Close">
<summary>
Shuts down the ObexListener.
</summary>
</member>
<member name="M:InTheHand.Net.ObexListener.GetContext">
<summary>
Waits for an incoming request and returns when one is received.
</summary>
-
<remarks>
<para>This method blocks waiting for a new connection. It will
return when a new connection completes or
<see cref="M:InTheHand.Net.ObexListener.Stop"/>/<see cref="M:InTheHand.Net.ObexListener.Close"/>
has been called.
</para>
</remarks>
-
<returns>Returns a <see cref="T:InTheHand.Net.ObexListenerContext"/>
or <see langword="null"/> if
<see cref="M:InTheHand.Net.ObexListener.Stop"/>/<see cref="M:InTheHand.Net.ObexListener.Close"/>
has been called.
</returns>
</member>
<member name="T:InTheHand.Net.ObexListenerContext">
<summary>
Provides access to the request and response objects used by the <see cref="T:InTheHand.Net.ObexListener"/> class.
</summary>
</member>
<member name="P:InTheHand.Net.ObexListenerContext.Request">
<summary>
Gets the <see cref="T:InTheHand.Net.ObexListenerRequest"/> that represents a client's request for a resource
</summary>
</member>
<member name="T:InTheHand.Net.ObexListenerRequest">
<summary>
Describes an incoming OBEX request to an <see cref="T:InTheHand.Net.ObexListener"/> object.
</summary>
</member>
<member name="P:InTheHand.Net.ObexListenerRequest.ContentLength64">
<summary>
Gets the length of the body data included in the request.
<para><b>New in v1.5.51015</b></para>
</summary>
<value>A long value that contains the value from the request's Length header.
This value is -1 if the content length is not known.</value>
<remarks>The Length header expresses the length, in bytes, of the body data that accompanies the request.</remarks>
</member>
<member name="P:InTheHand.Net.ObexListenerRequest.ContentType">
<summary>
Gets the MIME type of the body data included in the request.
</summary>
<value>A <see cref="T:System.String"/> that contains the text of the request's Type header.</value>
</member>
<member name="P:InTheHand.Net.ObexListenerRequest.Headers">
<summary>
Gets the collection of header name/value pairs sent in the request.
</summary>
<value>A <see cref="T:System.Net.WebHeaderCollection"/> that contains the OBEX headers included in the request.</value>
<remarks>For a complete list of request headers, see the <see cref="T:InTheHand.Net.ObexHeader"/> enumeration.</remarks>
</member>
<member name="P:InTheHand.Net.ObexListenerRequest.LocalEndPoint">
<summary>
Get the device address and service to which the request is directed.
</summary>
-
<remarks>
The <see cref="T:System.Net.EndPoint"/> instance returned will be of the
subtype that matches the address family that the <see cref="T:InTheHand.Net.ObexListener"/>
is listening on. For instance if the listener was created with
<see cref="T:InTheHand.Net.ObexTransport"/>.<see cref="F:InTheHand.Net.ObexTransport.Bluetooth"/>
then the <see cref="T:System.Net.EndPoint"/> will be of type
<see cref="T:InTheHand.Net.BluetoothEndPoint"/>, and similarly for
<see cref="T:InTheHand.Net.IrDAEndPoint"/> and
<see cref="T:System.Net.IPEndPoint"/>.
</remarks>
-
<seealso cref="P:InTheHand.Net.ObexListenerRequest.RemoteEndPoint"/>
</member>
<member name="P:InTheHand.Net.ObexListenerRequest.ObexMethod">
<summary>
Gets the method specified by the client.
</summary>
<remarks>Only PUT is supported in this version.</remarks>
</member>
<member name="P:InTheHand.Net.ObexListenerRequest.InputStream">
<summary>
Gets a stream that contains the body data sent by the client.
</summary>
</member>
<member name="P:InTheHand.Net.ObexListenerRequest.ProtocolVersion">
<summary>
Gets the OBEX version used by the requesting client
</summary>
</member>
<member name="P:InTheHand.Net.ObexListenerRequest.RawUrl">
<summary>
Gets the URL information (without the host and port) requested by the client.
</summary>
<value>A <see cref="T:System.String"/> that contains the raw URL for this request.</value>
</member>
<member name="P:InTheHand.Net.ObexListenerRequest.RemoteEndPoint">
<summary>
Gets the device address and service from which the request originated.
</summary>
-
<remarks>
The <see cref="T:System.Net.EndPoint"/> instance returned will be of the
subtype that matches the address family that the <see cref="T:InTheHand.Net.ObexListener"/>
is listening on. For instance if the listener was created with
<see cref="T:InTheHand.Net.ObexTransport"/>.<see cref="F:InTheHand.Net.ObexTransport.Bluetooth"/>
then the <see cref="T:System.Net.EndPoint"/> will be of type
<see cref="T:InTheHand.Net.BluetoothEndPoint"/>, and similarly for
<see cref="T:InTheHand.Net.IrDAEndPoint"/> and
<see cref="T:System.Net.IPEndPoint"/>.
</remarks>
-
<example>
C#
<code lang="C#">
ObexListener lsnr = new ObexListener(ObexTransport.Bluetooth)
... ...
ObexListenerRequest olr = ...
BluetoothEndPoint remoteEp = (BluetoothEndPoint)olr.RemoteEndPoint;
BluetoothAddress remoteAddr = remoteEp.Address;
</code>
Visual Basic
<code lang="VB.NET">
Dim lsnr As New ObexListener(ObexTransport.IrDA)
... ...
Dim olr As ObexListenerRequest = ...
Dim remoteEp As IrDAEndPoint = CType(olr.RemoteEndPoint, IrDAEndPoint);
Dim remoteAddr As IrDAAddress = remoteEp.Address;
</code>
</example>
-
<seealso cref="P:InTheHand.Net.ObexListenerRequest.LocalEndPoint"/>
</member>
<member name="P:InTheHand.Net.ObexListenerRequest.UserHostAddress">
<summary>
Gets the server address to which the request is directed.
</summary>
</member>
<member name="P:InTheHand.Net.ObexListenerRequest.Url">
<summary>
Gets the <see cref="T:System.Uri"/> object requested by the client.
</summary>
<value>A <see cref="T:System.Uri"/> object that identifies the resource requested by the client.</value>
</member>
<member name="M:InTheHand.Net.ObexListenerRequest.WriteFile(System.String)">
<summary>
Writes the body of the request to the specified file path.
</summary>
<param name="fileName">The filename (including the path) to write to.</param>
</member>
<member name="T:InTheHand.Net.ObexMethod">
<summary>
Methods which can be carried out in an Object Exchange transaction.
</summary>
</member>
<member name="F:InTheHand.Net.ObexMethod.Put">
<summary>
Sends an object to a receiving device.
</summary>
</member>
<member name="F:InTheHand.Net.ObexMethod.Get">
<summary>
Requests a file from the remote device.
</summary>
</member>
<member name="F:InTheHand.Net.ObexMethod.Connect">
<summary>
Negotiate an Object Exchange connection with a remote device.
</summary>
</member>
<member name="F:InTheHand.Net.ObexMethod.Disconnect">
<summary>
Disconnect an existing Object Exchange session.
</summary>
</member>
<member name="F:InTheHand.Net.ObexMethod.PutFinal">
<summary>
Sends the last packet of an object to a receiving device.
</summary>
</member>
<member name="F:InTheHand.Net.ObexMethod.SetPath">
<summary>
Change remote path on an Object Exchange server.
</summary>
</member>
<member name="T:InTheHand.Net.ObexStatusCode">
<summary>
Specifies the status codes returned for an Object Exchange (OBEX) operation.
</summary>
<remarks>OBEX codes are directly related to their HTTP equivalents - see <see cref="T:System.Net.HttpStatusCode"/>.</remarks>
</member>
<member name="F:InTheHand.Net.ObexStatusCode.Final">
<summary>
Applied to another code to indicate this is the only response or final response in a series.
</summary>
</member>
<member name="F:InTheHand.Net.ObexStatusCode.Continue">
<summary>
Equivalent to HTTP status 100.
Continue indicates that the client can continue with its request.
</summary>
</member>
<member name="F:InTheHand.Net.ObexStatusCode.OK">
<summary>
Equivalent to HTTP status 200.
OK indicates that the request succeeded and that the requested information is in the response.
This is the most common status code to receive.
</summary>
</member>
<member name="F:InTheHand.Net.ObexStatusCode.Created">
<summary>
Equivalent to HTTP status 201.
Created indicates that the request resulted in a new resource created before the response was sent.
</summary>
</member>
<member name="F:InTheHand.Net.ObexStatusCode.Accepted">
<summary>
Equivalent to HTTP status 202.
Accepted indicates that the request has been accepted for further processing.
</summary>
</member>
<member name="F:InTheHand.Net.ObexStatusCode.NonAuthorativeInformation">
<summary>
Equivalent to HTTP status 203.
NonAuthoritativeInformation indicates that the returned metainformation is from a cached copy instead of the origin server and therefore may be incorrect.
</summary>
</member>
<member name="F:InTheHand.Net.ObexStatusCode.NoContent">
<summary>
Equivalent to HTTP status 204.
NoContent indicates that the request has been successfully processed and that the response is intentionally blank.
</summary>
</member>
<member name="F:InTheHand.Net.ObexStatusCode.ResetContent">
<summary>
Equivalent to HTTP status 205.
ResetContent indicates that the client should reset (not reload) the current resource.
</summary>
</member>
<member name="F:InTheHand.Net.ObexStatusCode.PartialContent">
<summary>
Equivalent to HTTP status 206.
PartialContent indicates that the response is a partial response as requested by a GET request that includes a byte range.
</summary>
</member>
<member name="F:InTheHand.Net.ObexStatusCode.MultipleChoices">
<summary>
Equivalent to HTTP status 300.
MultipleChoices indicates that the requested information has multiple representations.
</summary>
</member>
<member name="F:InTheHand.Net.ObexStatusCode.MovedPermanently">
<summary>
Equivalent to HTTP status 301.
MovedPermanently indicates that the requested information has been moved to the URI specified in the Location header.
The default action when this status is received is to follow the Location header associated with the response.
</summary>
</member>
<member name="F:InTheHand.Net.ObexStatusCode.MovedTemporarily">
<summary>
Equivalent to HTTP status 302.
Redirect indicates that the requested information is located at the URI specified in the Location header.
The default action when this status is received is to follow the Location header associated with the response.
When the original request method was POST, the redirected request will use the GET method.
</summary>
</member>
<member name="F:InTheHand.Net.ObexStatusCode.SeeOther">
<summary>
Equivalent to HTTP status 303.
SeeOther automatically redirects the client to the URI specified in the Location header as the result of a POST. The request to the resource specified by the Location header will be made with a GET.
</summary>
</member>
<member name="F:InTheHand.Net.ObexStatusCode.NotModified">
<summary>
Equivalent to HTTP status 304.
NotModified indicates that the client's cached copy is up to date.
The contents of the resource are not transferred.
</summary>
</member>
<member name="F:InTheHand.Net.ObexStatusCode.UseProxy">
<summary>
Equivalent to HTTP status 305.
UseProxy indicates that the request should use the proxy server at the URI specified in the Location header.
</summary>
</member>
<member name="F:InTheHand.Net.ObexStatusCode.BadRequest">
<summary>
Equivalent to HTTP status 400.
BadRequest indicates that the request could not be understood by the server. BadRequest is sent when no other error is applicable, or if the exact error is unknown or does not have its own error code.
<see cref="T:InTheHand.Net.ObexWebRequest"/> reports errors through
<see cref="P:InTheHand.Net.ObexWebResponse.StatusCode">ObexWebResponse.StatusCode</see>,
this status code is overloaded by it to report failure to connect to the server.
</summary>
</member>
<member name="F:InTheHand.Net.ObexStatusCode.Unauthorized">
<summary>
Equivalent to HTTP status 401.
Unauthorized indicates that the requested resource requires authentication. The WWW-Authenticate header contains the details of how to perform the authentication.
</summary>
</member>
<member name="F:InTheHand.Net.ObexStatusCode.PaymentRequired">
<summary>
Equivalent to HTTP status 402.
PaymentRequired is reserved for future use.
</summary>
</member>
<member name="F:InTheHand.Net.ObexStatusCode.Forbidden">
<summary>
Equivalent to HTTP status 403.
Forbidden indicates that the server refuses to fulfill the request.
</summary>
</member>
<member name="F:InTheHand.Net.ObexStatusCode.NotFound">
<summary>
Equivalent to HTTP status 404.
NotFound indicates that the requested resource does not exist on the server.
</summary>
</member>
<member name="F:InTheHand.Net.ObexStatusCode.MethodNotAllowed">
<summary>
Equivalent to HTTP status 405.
MethodNotAllowed indicates that the request method (POST or GET) is not allowed on the requested resource.
</summary>
</member>
<member name="F:InTheHand.Net.ObexStatusCode.NotAcceptable">
<summary>
Equivalent to HTTP status 406.
NotAcceptable indicates that the client has indicated with Accept headers that it will not accept any of the available representations of the resource.
</summary>
</member>
<member name="F:InTheHand.Net.ObexStatusCode.ProxyAuthenticationRequired">
<summary>
Equivalent to HTTP status 407.
ProxyAuthenticationRequired indicates that the requested proxy requires authentication.
The Proxy-authenticate header contains the details of how to perform the authentication.
</summary>
</member>
<member name="F:InTheHand.Net.ObexStatusCode.RequestTimeout">
<summary>
Equivalent to HTTP status 408.
RequestTimeout indicates that the client did not send a request within the time the server was expecting the request.
</summary>
</member>
<member name="F:InTheHand.Net.ObexStatusCode.Conflict">
<summary>
Equivalent to HTTP status 409.
Conflict indicates that the request could not be carried out because of a conflict on the server.
</summary>
</member>
<member name="F:InTheHand.Net.ObexStatusCode.Gone">
<summary>
Equivalent to HTTP status 410.
Gone indicates that the requested resource is no longer available.
</summary>
</member>
<member name="F:InTheHand.Net.ObexStatusCode.LengthRequired">
<summary>
Equivalent to HTTP status 411.
LengthRequired indicates that the required Content-length header is missing.
</summary>
</member>
<member name="F:InTheHand.Net.ObexStatusCode.PreconditionFailed">
<summary>
Equivalent to HTTP status 412.
PreconditionFailed indicates that a condition set for this request failed, and the request cannot be carried out.
Conditions are set with conditional request headers like If-Match, If-None-Match, or If-Unmodified-Since.
</summary>
</member>
<member name="F:InTheHand.Net.ObexStatusCode.RequestedEntityTooLarge">
<summary>
Equivalent to HTTP status 413.
RequestEntityTooLarge indicates that the request is too large for the server to process.
</summary>
</member>
<member name="F:InTheHand.Net.ObexStatusCode.RequestedUrlTooLarge">
<summary>
Equivalent to HTTP status 414.
RequestUriTooLong indicates that the URI is too long.
</summary>
</member>
<member name="F:InTheHand.Net.ObexStatusCode.UnsupportedMediaType">
<summary>
Equivalent to HTTP status 415.
UnsupportedMediaType indicates that the request is an unsupported type.
</summary>
</member>
<member name="F:InTheHand.Net.ObexStatusCode.InternalServerError">
<summary>
Equivalent to HTTP status 500.
InternalServerError indicates that a generic error has occurred on the server.
<see cref="T:InTheHand.Net.ObexWebRequest"/> reports errors through
<see cref="P:InTheHand.Net.ObexWebResponse.StatusCode">ObexWebResponse.StatusCode</see>,
this status code is used by it to report failure to send the object.
</summary>
</member>
<member name="F:InTheHand.Net.ObexStatusCode.NotImplemented">
<summary>
Equivalent to HTTP status 501.
NotImplemented indicates that the server does not support the requested function.
</summary>
</member>
<member name="F:InTheHand.Net.ObexStatusCode.BadGateway">
<summary>
Equivalent to HTTP status 502.
BadGateway indicates that an intermediate proxy server received a bad response from another proxy or the origin server.
</summary>
</member>
<member name="F:InTheHand.Net.ObexStatusCode.ServiceUnavailable">
<summary>
Equivalent to HTTP status 503.
ServiceUnavailable indicates that the server is temporarily unavailable, usually due to high load or maintenance.
</summary>
</member>
<member name="F:InTheHand.Net.ObexStatusCode.GatewayTimeout">
<summary>
Equivalent to HTTP status 504.
GatewayTimeout indicates that an intermediate proxy server timed out while waiting for a response from another proxy or the origin server.
</summary>
</member>
<member name="F:InTheHand.Net.ObexStatusCode.HttpVersionNotSupported">
<summary>
Equivalent to HTTP status 505.
HttpVersionNotSupported indicates that the requested HTTP version is not supported by the server.
</summary>
</member>
<member name="F:InTheHand.Net.ObexStatusCode.DatabaseFull">
<summary>
</summary>
</member>
<member name="F:InTheHand.Net.ObexStatusCode.DatabaseLocked">
<summary>
</summary>
</member>
<member name="T:InTheHand.Net.ObexTransport">
<summary>
Supported network transports for Object Exchange.
</summary>
</member>
<member name="F:InTheHand.Net.ObexTransport.IrDA">
<summary>
Infrared (IrDA)
</summary>
</member>
<member name="F:InTheHand.Net.ObexTransport.Bluetooth">
<summary>
Bluetooth
</summary>
</member>
<member name="F:InTheHand.Net.ObexTransport.Tcp">
<summary>
TCP/IP
</summary>
</member>
<member name="T:InTheHand.Net.ObexWebRequest">
<summary>
Provides an OBEX implementation of the <see cref="T:System.Net.WebRequest"/> class.
</summary>
-
<remarks>
<para>If you want to transfer an file or other object using the standard
service as used by Windows' Wireless Link / Bluetooth File Transfer Wizard,
Palm's Beam, Nokia's Send via Infrared, then use the OBEX protocol.
</para>
<para>The PUT operation is supported, and there is new support for GET,
(see the documentation at the <see cref="P:InTheHand.Net.ObexWebRequest.Method"/>
property).
Changing folders is not supported, nor is getting a folder listing.
</para>
<para>In the previous version there were some issue with handling file names
that include non-English characters, and connections
to some device types failed. Also if the connection to the peer was lost
then the request could hang reading forever. See the release note and bugs
database for more information.
</para>
</remarks>
-
<example>
For Bluetooth one can use code like the following to send a file:
(Note a failure is signalled by an exception).
<code lang="VB.NET">
Dim addr As BluetoothAddress = BluetoothAddress.Parse("002233445566")
Dim path As String = "HelloWorld.txt"
'
Dim req As New ObexWebRequest(addr, path)
req.ReadFile("Hello World.txt")
Dim rsp As ObexWebResponse = CType(req.GetResponse(),ObexWebResponse)
Console.WriteLine("Response Code: {0} (0x{0:X})", rsp.StatusCode)
</code>
That constructor isn't available for other transports (TCP/IP, IrDA)
so one has to create a Uri to provide the scheme, address, and path
parameters. Thus use code like the following to send a file.
<code lang="VB.NET">
' The host part of the URI is the device address, e.g. IrDAAddress.ToString(),
' and the file part is the OBEX object name.
Dim addr As BluetoothAddress = ...
Dim addrStr As String = addr.ToString("N")
Dim uri As New Uri("obex://" &amp; addrStr &amp; "/HelloWorld.txt")
'
Dim req As New ObexWebRequest(uri)
req.ReadFile("Hello World.txt")
Dim rsp As ObexWebResponse = CType(req.GetResponse(),ObexWebResponse)
Console.WriteLine("Response Code: {0} (0x{0:X})", rsp.StatusCode)
</code>
Or, to send locally generated content use something like the following.
<code lang="VB.NET">
Dim addr As BluetoothAddress = ...
Dim path As String = "HelloWorld2.txt"
'
Dim req As New ObexWebRequest(addr, path)
Using content As Stream = req.GetRequestStream()
' Using a StreamWriter to write text to the stream...
Using wtr As New StreamWriter(content)
wtr.WriteLine("Hello World GetRequestStream")
wtr.WriteLine("Hello World GetRequestStream 2")
wtr.Flush()
' Set the Length header value
req.ContentLength = content.Length
End Using
' In this case closing the StreamWriter also closed the Stream, but ...
End Using
Dim rsp As ObexWebResponse = CType(req.GetResponse(),ObexWebResponse)
Console.WriteLine("Response Code: {0} (0x{0:X})", rsp.StatusCode)
</code>
See also the ObexPushApplication and ObexPushVB sample programs.
</example>
</member>
<member name="M:InTheHand.Net.ObexWebRequest.#ctor(System.Uri)">
<overloads>
Create a new Obex request with the specified <see cref="T:System.Uri"/>.
</overloads>
-
<summary>
Create a new Obex request with the specified <see cref="T:System.Uri"/>.
</summary>
<param name="requestUri">e.g. "obex://112233445566/HelloWorld.txt"</param>
<remarks>Uri must use one of the following schemes - obex, obex-push, obex-ftp, obex-sync.
The host name must be the device address in short hex, or dotted hex notation - not the default representation using the colon separator</remarks>
</member>
<member name="M:InTheHand.Net.ObexWebRequest.#ctor(System.Uri,System.IO.Stream)">
<summary>
[Advanced usage]
Create a new Obex request with the specified <see cref="T:System.Uri"/>
and the open <see cref="T:System.IO.Stream"/> connection to an OBEX server.
</summary>
-
<param name="requestUri">[Advanced usage]
A url of the form
&#x201C;<i>scheme</i><c>:///</c><i>filename</i>&#x201D;,
&#x201C;e.g. <c>obex:///foo.txt</c>&#x201D;.
That is the host part is blank,
and the scheme and filename parts set as for the other constructor
<see cref="M:InTheHand.Net.ObexWebRequest.#ctor(System.Uri)"/>
</param>
<param name="stream">An instance of <see cref="T:System.IO.Stream"/>
already connected to an OBEX server.
</param>
</member>
<member name="M:InTheHand.Net.ObexWebRequest.#ctor(System.String,InTheHand.Net.BluetoothAddress,System.String)">
<summary>
Initialize an instance of this class given a scheme,
a Bluetooth Device Address, and a remote path name.
</summary>
-
<param name="scheme">The Uri scheme. One of
<c>obex</c>, <c>obex-push</c>, <c>obex-ftp</c>, or <c>obex-sync</c>.
</param>
<param name="target">The Bluetooth Device Address of the OBEX server.
</param>
<param name="path">The path on the OBEX server.
</param>
</member>
<member name="M:InTheHand.Net.ObexWebRequest.#ctor(InTheHand.Net.BluetoothAddress,System.String)">
<summary>
Initialize an instance of this class given
a Bluetooth Device Address, and a remote path name.
</summary>
-
<remarks>
<para>This is equivalent to calling
<see cref="M:InTheHand.Net.ObexWebRequest.#ctor(System.String,InTheHand.Net.BluetoothAddress,System.String)">
ObexWebRequest(String scheme, BluetoothAddress target, String path)
</see>
with scheme &#x201C;<c>obex</c>&#x201D;.
</para>
</remarks>
-
<param name="target">The Bluetooth Device Address of the OBEX server.
</param>
<param name="path">The path on the OBEX server.
</param>
</member>
<member name="P:InTheHand.Net.ObexWebRequest.Headers">
<summary>
Specifies a collection of the name/value pairs that make up the OBEX headers.
</summary>
</member>
<member name="P:InTheHand.Net.ObexWebRequest.Method">
<summary>
Gets or sets the method for the request.
</summary>
<remarks>
<para>For Object Exchange the method code is mapped to the equivalent HTTP style method.
For example "PUT", "GET" etc. "PUT" is the default value.
There is new support for GET as of version 2.5.
</para>
<para>To use GET change the <c>Method</c> to "<c>GET</c>" and you must also use
scheme "<c>obex-ftp</c>" in the URL instead of the usual "<c>obex</c>"
-- unless you know that the default OBEX server you are connecting
supports GET.
</para>
<para>For a PUT sample see the <see cref="T:InTheHand.Net.ObexWebRequest">class</see>
documentation. For GET, see below.
</para>
<example>
<code lang="VB.NET">
' The host part of the URI is the device address, e.g. IrDAAddress.ToString(),
' and the file part is the OBEX object name.
Dim addr As String = "112233445566"
Dim uri As New Uri("obex-ftp://" &amp; addr &amp; "/HelloWorld.txt")
Dim req As New ObexWebRequest(uri)
req.Method = "GET"
Dim rsp As ObexWebResponse = CType(req.GetResponse(), ObexWebResponse)
Console.WriteLine("Response Code: {0} (0x{0:X})", rsp.StatusCode)
Using content As Stream = rsp.GetResponseStream()
' Using a StreamReader to read text from the stream...
Using rdr As New StreamReader(content)
While True
Dim line As String = rdr.ReadLine()
If line Is Nothing Then Exit While
Console.WriteLine(line)
End While
End Using
End Using
</code>
</example>
</remarks>
</member>
<member name="P:InTheHand.Net.ObexWebRequest.ContentType">
<summary>
Gets or sets the value of the Type OBEX header.
</summary>
</member>
<member name="P:InTheHand.Net.ObexWebRequest.ContentLength">
<summary>
Gets or sets the Length OBEX header.
</summary>
<remarks>This property is mandatory, if not set no data will be sent.
If you use the <see cref="M:InTheHand.Net.ObexWebRequest.ReadFile(System.String)"/> helper method this value is automatically populated with the size of the file that was read.</remarks>
</member>
<member name="P:InTheHand.Net.ObexWebRequest.Proxy">
<summary>
Not Supported - do not use, this will throw an exception.
</summary>
</member>
<member name="P:InTheHand.Net.ObexWebRequest.Timeout">
<summary>
Gets or sets the time-out value for the <see cref="M:InTheHand.Net.ObexWebRequest.GetResponse"/> method.
</summary>
-
<remarks>
<para>In versions 3.2 and earlier this property was ignored on
Windows Mobile. It is now (untested!) supported there,
but not with the Microsoft Bluetooth stack there as it doesn't
support timeouts.
A cunning solution is available let me know of your requirements...
</para>
</remarks>
-
<value>The number of milliseconds to wait before the request times out.
The default is 50,000 milliseconds (50 seconds).
A value of -1 or 0 represents no time-out.</value>
</member>
<member name="P:InTheHand.Net.ObexWebRequest.RequestUri">
<summary>
Gets the original Uniform Resource Identifier (URI) of the request.
</summary>
<remarks>For an ObexPush request the URI will use the "obex://" prefix, followed by the numerical device id in hex format.
The path section of the URI represents the remote filename of the pushed object. Subfolders are not supported. Some devices may only support specific object types e.g. V-Card.</remarks>
</member>
<member name="M:InTheHand.Net.ObexWebRequest.GetRequestStream">
<summary>
Gets a <see cref="T:System.IO.Stream"/> object to use to write request data.
</summary>
-
<returns>A <see cref="T:System.IO.Stream"/> to use to write request data.</returns>
</member>
<member name="M:InTheHand.Net.ObexWebRequest.ReadFile(System.String)">
<summary>
Reads the contents of the specified file to the request stream.
</summary>
<param name="fileName">The filename (including the path) from which to read.</param>
<remarks>Provides an easy equivalent to manually writing the file contents to the request stream.</remarks>
</member>
<member name="M:InTheHand.Net.ObexWebRequest.GetResponse">
<summary>
Returns the OBEX server response.
</summary>
-
<returns>An <see cref="T:InTheHand.Net.ObexWebResponse"/>.</returns>
-
<exception cref="T:System.Net.WebException">
An error occurred, with the error that occured being stored in the
<see cref="P:System.Exception.InnerException"/> property. If the error
occurred in the connect phase then the <see cref="P:System.Net.WebException.Status"/>
property will have value <see cref="F:System.Net.WebExceptionStatus.ConnectFailure"/>,
and in the operation phase on the desktop CLR it will have value
<see cref="F:System.Net.WebExceptionStatus.UnknownError"/>
</exception>
</member>
<member name="M:InTheHand.Net.ObexWebRequest.StreamReadBlockMust(System.IO.Stream,System.Byte[],System.Int32,System.Int32)">
<summary>
A wrapper for Stream.Read that blocks until the requested number of bytes
have been read, and throw an exception if the stream is closed before that occurs.
</summary>
</member>
<member name="M:InTheHand.Net.ObexWebRequest.StreamReadBlock(System.IO.Stream,System.Byte[],System.Int32,System.Int32)">
<summary>
A wrapper for Stream.Read that blocks until the requested number of bytes
have been read or the end of the Stream has been reached.
Returns the number of bytes read.
</summary>
</member>
<member name="M:InTheHand.Net.ObexWebRequest.BeginGetResponse(System.AsyncCallback,System.Object)">
<summary>
Begins a request for a OBEX server response.
</summary>
-
<param name="callback">An <see cref="T:System.AsyncCallback"/> delegate that references the method to invoke when the operation is complete.</param>
<param name="state">A user-defined object containing information about the operation.
This object is passed to the callback delegate when the operation is complete.</param>
-
<returns>An <see cref="T:System.IAsyncResult"/> that represents the
asynchronous operation, which could still be pending.
</returns>
</member>
<member name="M:InTheHand.Net.ObexWebRequest.EndGetResponse(System.IAsyncResult)">
<summary>
Begins a request for a OBEX server response.
</summary>
-
<param name="asyncResult">An <see cref="T:System.IAsyncResult"/>
object that was obtained when the asynchronous operation was started.
</param>
-
<returns>An <see cref="T:InTheHand.Net.ObexWebResponse"/>.</returns>
-
<exception cref="T:System.Net.WebException">
An error occurred, with the error that occured being stored in the
<see cref="P:System.Exception.InnerException"/> property. If the error
occurred in the connect phase then the <see cref="P:System.Net.WebException.Status"/>
property will have value <see cref="F:System.Net.WebExceptionStatus.ConnectFailure"/>,
and in the operation phase on the desktop CLR it will have value
<see cref="F:System.Net.WebExceptionStatus.UnknownError"/>
</exception>
</member>
<member name="T:InTheHand.Net.ObexWebRequestCreate">
<summary>
Used to create a new web request for obex uri scheme
</summary>
</member>
<member name="T:InTheHand.Net.ObexWebResponse">
<summary>
Provides an OBEX implementation of the <see cref="T:System.Net.WebResponse"/> class.
</summary>
</member>
<member name="P:InTheHand.Net.ObexWebResponse.Headers">
<summary>
Gets the headers associated with this response from the server.
</summary>
</member>
<member name="P:InTheHand.Net.ObexWebResponse.ContentLength">
<summary>
Gets the length of the content returned by the request.
</summary>
</member>
<member name="P:InTheHand.Net.ObexWebResponse.ContentType">
<summary>
Gets the content type of the response.
</summary>
</member>
<member name="P:InTheHand.Net.ObexWebResponse.StatusCode">
<summary>
Returns a status code to indicate the outcome of the request.
</summary>
-
<remarks><para>Note, if a error occurs locally then the status code
<see cref="F:InTheHand.Net.ObexStatusCode.InternalServerError"/> is returned.
Therefore that error code could signal local or remote errors.
</para>
</remarks>
</member>
<member name="M:InTheHand.Net.ObexWebResponse.GetResponseStream">
<summary>
Gets the stream used to read the body of the response from the server.
</summary>
-
<returns>A <see cref="T:System.IO.Stream"/> containing the body of the response.</returns>
</member>
<member name="M:InTheHand.Net.ObexWebResponse.Close">
<summary>
Frees the resources held by the response.
</summary>
</member>
<member name="M:InTheHand.Net.ObexWebResponse.WriteFile(System.String)">
<summary>
Writes the contents of the response to the specified file path.
</summary>
<param name="fileName">The filename (including the path) from which to read.</param>
</member>
<member name="M:InTheHand.Net.ExceptionExtension.ToStringNoStackTrace(System.Exception)">
<summary>
Get the normal first line of <c>Exception.ToString()</c>,
that is without the stack trace lines.
</summary>
-
<remarks>
Get the normal first line of <c>Exception.ToString()</c>,
that is including details of all inner exceptions,
but without the stack trace lines.
e.g. <c>System.IO.IOException: An established connection was aborted by the software in your host machine. ---> System.Net.Sockets.SocketException: An established connection was aborted by the software in your host machine.</c>
</remarks>
-
<param name="this">The exception.
</param>
-
<returns>A string containing the first line of the <c>Exception.ToString()</c>.
</returns>
</member>
<member name="M:InTheHand.Net.ExceptionFactory.ArgumentOutOfRangeException(System.String,System.String)">
<exclude/>
</member>
<member name="M:InTheHand.Net.StringUtilities.IsNullOrEmpty(System.String)">
<exclude/>
</member>
<member name="T:InTheHand.ObexUri">
<summary>
Contains <see cref="T:System.Uri"/> helper functionality.
</summary>
</member>
<member name="F:InTheHand.ObexUri.UriSchemeObex">
<summary>
Specifies that the URI is accessed through the Object Exchange (OBEX) protocol.
</summary>
</member>
<member name="F:InTheHand.ObexUri.UriSchemeObexPush">
<summary>
Specifies that the URI is accessed through the Object Exchange (OBEX) Push protocol.
</summary>
</member>
<member name="F:InTheHand.ObexUri.UriSchemeObexFtp">
<summary>
Specifies that the URI is accessed through the Object Exchange (OBEX) FTP protocol.
</summary>
</member>
<member name="F:InTheHand.ObexUri.UriSchemeObexSync">
<summary>
Specifies that the URI is accessed through the Object Exchange (OBEX) Sync protocol.
</summary>
</member>
<member name="M:InTheHand.Runtime.InteropServices.Marshal32.ReadIntPtr(System.IntPtr,System.Int32)">
<summary>
NETCF doesn't have <see cref="M:System.Runtime.InteropServices.Marshal.ReadIntPtr(System.IntPtr,System.Int32)"/>
</summary>
</member>
<member name="T:InTheHand.TextWriterTraceListener32f">
<summary>
For use on NETCFv2
</summary>
-
<inheritdoc/>
</member>
<member name="M:InTheHand.TextWriterTraceListener32f.#ctor(System.String)">
<summary>
Initializes a new instance of the <see cref="T:InTheHand.TextWriterTraceListener32f"/> class
</summary>
-
<param name="filename">The filename of the log file to write to.
Unlike the .NET supplied class this filename is relative to the
folder that the calling assembly is located in.
</param>
</member>
<member name="T:InTheHand.Windows.Forms.SelectBluetoothDeviceDialog">
<summary>
Provides a form to select an available Bluetooth device.
</summary>
</member>
<member name="M:InTheHand.Windows.Forms.SelectBluetoothDeviceDialog.#ctor">
<summary>
Initializes an instance of the <see cref="T:InTheHand.Windows.Forms.SelectBluetoothDeviceDialog"/> class.
</summary>
</member>
<member name="M:InTheHand.Windows.Forms.SelectBluetoothDeviceDialog.Reset">
<summary>
Resets the properties of the <see cref="T:InTheHand.Windows.Forms.SelectBluetoothDeviceDialog"/> to their default values.
</summary>
</member>
<member name="M:InTheHand.Windows.Forms.SelectBluetoothDeviceDialog.ShowCustomDialog">
<summary>
</summary>
<returns></returns>
</member>
<member name="M:InTheHand.Windows.Forms.SelectBluetoothDeviceDialog.RunDialog(System.IntPtr)">
<summary>
Specifies a common dialog box.
</summary>
<param name="hwndOwner">A value that represents the window handle of the owner window for the common dialog box.</param>
<returns>true if the dialog box was successfully run; otherwise, false.</returns>
</member>
<member name="P:InTheHand.Windows.Forms.SelectBluetoothDeviceDialog.AddNewDeviceWizard">
<summary>
If TRUE, invokes the Add New Device Wizard.
</summary>
<remarks>Supported only on Windows XP/Vista with Microsoft stack.</remarks>
</member>
<member name="P:InTheHand.Windows.Forms.SelectBluetoothDeviceDialog.SkipServicesPage">
<summary>
If TRUE, skips the Services page in the Add New Device Wizard.
</summary>
<remarks>Supported only on Windows XP/Vista with Microsoft stack.</remarks>
</member>
<member name="P:InTheHand.Windows.Forms.SelectBluetoothDeviceDialog.Info">
<summary>
Gets or sets the information text.
</summary>
<remarks></remarks>
</member>
<member name="P:InTheHand.Windows.Forms.SelectBluetoothDeviceDialog.ClassOfDevices">
<summary>
Array of class of devices to find.
</summary>
<remarks>Clear the collection to return all devices.</remarks>
</member>
<member name="P:InTheHand.Windows.Forms.SelectBluetoothDeviceDialog.SelectedDevice">
<summary>
Gets the selected Bluetooth device.
</summary>
</member>
<member name="P:InTheHand.Windows.Forms.SelectBluetoothDeviceDialog.ShowAuthenticated">
<summary>
If TRUE, authenticated devices are shown in the picker.
</summary>
</member>
<member name="P:InTheHand.Windows.Forms.SelectBluetoothDeviceDialog.ShowRemembered">
<summary>
If TRUE, remembered devices are shown in the picker.
</summary>
</member>
<member name="P:InTheHand.Windows.Forms.SelectBluetoothDeviceDialog.ShowUnknown">
<summary>
If TRUE, unknown devices are shown in the picker.
</summary>
</member>
<member name="P:InTheHand.Windows.Forms.SelectBluetoothDeviceDialog.ForceAuthentication">
<summary>
If TRUE, forces authentication before returning.
</summary>
<remarks></remarks>
</member>
<member name="P:InTheHand.Windows.Forms.SelectBluetoothDeviceDialog.ShowDiscoverableOnly">
<summary>
If TRUE, only devices which are currently discoverable are shown in the picker.
</summary>
<remarks>
<note>Does <strong>not</strong> work on the Microsoft stack on desktop Windows.
There, when true the dialog will not open and will return an error to the caller.
</note>
</remarks>
</member>
<member name="P:InTheHand.Windows.Forms.SelectBluetoothDeviceDialog.DiscoverableOnly">
<summary>
Obsolete, use <see cref="P:InTheHand.Windows.Forms.SelectBluetoothDeviceDialog.ShowDiscoverableOnly"/>
instead.
If TRUE, only devices which are currently discoverable are shown in the picker.
</summary>
<remarks>
<para>Obsolete, use <see cref="P:InTheHand.Windows.Forms.SelectBluetoothDeviceDialog.ShowDiscoverableOnly"/>
instead.
</para>
</remarks>
<seealso cref="P:InTheHand.Windows.Forms.SelectBluetoothDeviceDialog.ShowDiscoverableOnly"/>
</member>
<member name="P:InTheHand.Windows.Forms.SelectBluetoothDeviceDialog.DeviceFilter">
<summary>
Set a function that will be called for each device
that returns whether to include the device in the list or not.
</summary>
-
<value>The function to call for each device.
The function should returns <c>true</c> if the device is to be included or <c>false</c> if not.
Pass <c>null</c> to the property to clear the filter function.
</value>
-
<remarks>
<para>The callback method is called for each device as it is
being added to the dialog box. If the function returns <c>false</c> it
won't be added, otherwise it will be added and displayed. The
information about each device is provided as a <see cref="T:InTheHand.Net.Sockets.BluetoothDeviceInfo"/>
instance which will contain all the information about the device
that the discovery process knows and will also include any
information from the remembered/authenticated/paired devices.
Note that prior to Bluetooth v2.1 a separate query has to be
carried out to find whether the device also has a name, so unless
both devices are v2.1 or later then it&apos;s likely that the
name won't be included in the first discovery.
<see href="http://32feet.codeplex.com/wikipage?title=DeviceName%20and%20Discovery"/>
</para>
</remarks>
-
<example>
'......
Dim dlg As New InTheHand.Windows.Forms.SelectBluetoothDeviceDialog()
dlg.DeviceFilter = AddressOf FilterDevice
Dim rslt As DialogResult = dlg.ShowDialog()
'......
Shared Function FilterDevice(ByVal dev As BluetoothDeviceInfo) As Boolean
Dim rslt As DialogResult = MessageBox.Show("Include this device " &amp; dev.DeviceAddress.ToString &amp; " " &amp; dev.DeviceName, "FilterDevice", MessageBoxButtons.YesNo)
Dim ret As Boolean = (DialogResult.Yes = rslt)
Return ret
End Function
</example>
</member>
<member name="M:InTheHand.Windows.Forms.SelectBluetoothDeviceDialog.Dispose(System.Boolean)">
<exclude/>
</member>
<member name="T:InTheHand.Windows.Forms.SelectBluetoothDeviceForm">
<summary>
Managed code dialog for Windows CE systems.
</summary>
</member>
<member name="M:InTheHand.Windows.Forms.SelectBluetoothDeviceForm.Dispose(System.Boolean)">
<summary>
Clean up any resources being used.
</summary>
</member>
<member name="M:InTheHand.Windows.Forms.SelectBluetoothDeviceForm.InitializeComponent">
<summary>
Required method for Designer support - do not modify
the contents of this method with the code editor.
</summary>
</member>
<member name="M:Utils.Process2.GetProcessesByName(System.String)">
<summary>
NETCF Version of: Creates an array of new Process components and associates them with all the process resources on the local computer that share the specified process name.
</summary>
-
<param name="processName">e.g. "BTExplorer"
</param>
-
<returns>An array of type <see cref="T:System.Diagnostics.Process"/>
that represents the process resources running the specified application or file.
</returns>
</member>
</members>
</doc>