Class XBeeBLEDevice
This class represents an XBee device with Bluetooth Low Energy (BLE) connectivity.
Inheritance
Inherited Members
Namespace: DigiIoTDigiIoT.MauiDevicesXBee
Assembly: DigiIoT.Maui.dll
Syntax
public class XBeeBLEDevice : AbstractXBeeDevice
Constructors
XBeeBLEDevice(IDevice, string)
Class constructor. Instantiates a new XBeeBLEDevice object with the given parameters.
Declaration
public XBeeBLEDevice(IDevice device, string password)
Parameters
| Type | Name | Description |
|---|---|---|
| IDevice | device | Bluetooth device to connect to. |
| string | password | Bluetooth password (can be |
Remarks
The Bluetooth password must be provided before calling the Connect() method, either through this constructor or the SetBluetoothPassword(string) method.
See Also
XBeeBLEDevice(Guid, string)
Class constructor. Instantiates a new XBeeBLEDevice object with the given parameters.
Declaration
public XBeeBLEDevice(Guid deviceGuid, string password)
Parameters
| Type | Name | Description |
|---|---|---|
| Guid | deviceGuid | The Bluetooth device GUID. |
| string | password | Bluetooth password (can be |
Remarks
The Bluetooth password must be provided before calling the Connect() method, either through this constructor or the SetBluetoothPassword(string) method.
See Also
XBeeBLEDevice(string, string)
Class constructor. Instantiates a new XBeeBLEDevice object with the given parameters.
Declaration
public XBeeBLEDevice(string deviceAddress, string password)
Parameters
| Type | Name | Description |
|---|---|---|
| string | deviceAddress | The address or GUID of the Bluetooth device. It must follow the
format |
| string | password | Bluetooth password (can be |
Remarks
The Bluetooth password must be provided before calling the Connect() method, either through this constructor or the SetBluetoothPassword(string) method.
Exceptions
| Type | Condition |
|---|---|
| ArgumentException | If |
Properties
IsConnected
The status of the Bluetooth connection. It indicates if the device is connected or not.
Declaration
public bool IsConnected { get; }
Property Value
| Type | Description |
|---|---|
| bool |
IsRemote
Indicates whether this XBee device is a remote device.
Declaration
public override bool IsRemote { get; }
Property Value
| Type | Description |
|---|---|
| bool |
Overrides
ReceiveTimeout
The XBee device timeout in milliseconds for received packets in synchronous operations.
Declaration
public int ReceiveTimeout { get; set; }
Property Value
| Type | Description |
|---|---|
| int |
Exceptions
| Type | Condition |
|---|---|
| ArgumentException | If the value to be set is lesser than 0. |
Methods
Connect()
Opens the Bluetooth connection with the device.
Declaration
public void Connect()
Disconnect()
Closes the Bluetooth connection with the device.
Declaration
public void Disconnect()
GetDIOChangeDetection()
Returns the set of IO lines of this device that are monitored for change detection.
Declaration
public ISet<IOLine> GetDIOChangeDetection()
Returns
| Type | Description |
|---|---|
| ISetXBeeLibrary.Core.IO.IOLine | Set of digital IO lines that are monitored for change detection, |
Remarks
A null set means the DIO change detection feature is disabled.
Modules can be configured to transmit to the configured destination address a data sample
immediately whenever a monitored digital IO line changes state.
Exceptions
| Type | Condition |
|---|---|
| XBeeLibrary.Core.Exceptions.ATCommandEmptyException | If |
| XBeeLibrary.Core.Exceptions.InterfaceNotOpenException | If this device connection is not open. |
| XBeeLibrary.Core.Exceptions.TimeoutException | If there is a timeout reading the IO change detect command. |
| XBeeLibrary.Core.Exceptions.XBeeException | If there is any other XBee related error. |
See Also
GetDestinationAddress()
Returns the 64-bit destination extended address of this XBee device.
Declaration
public XBee64BitAddress GetDestinationAddress()
Returns
| Type | Description |
|---|---|
| XBeeLibrary.Core.Models.XBee64BitAddress | 64-bit destination address. |
Remarks
XBeeLibrary.Core.Models.XBee64BitAddress.BROADCAST_ADDRESS is the broadcast address for the PAN. XBeeLibrary.Core.Models.XBee64BitAddress.COORDINATOR_ADDRESS can be used to address the Pan Coordinator.
Exceptions
| Type | Condition |
|---|---|
| XBeeLibrary.Core.Exceptions.ATCommandEmptyException | If |
| XBeeLibrary.Core.Exceptions.InterfaceNotOpenException | If this device connection is not open. |
| XBeeLibrary.Core.Exceptions.TimeoutException | If there is a timeout reading the destination address. |
| XBeeLibrary.Core.Exceptions.XBeeException | If there is any other XBee related error. |
See Also
GetIOSamplingRate()
Returns the IO sampling rate of this XBee device.
Declaration
public int GetIOSamplingRate()
Returns
| Type | Description |
|---|---|
| int | IO sampling rate in milliseconds. |
Remarks
A sample rate of 0 ms. means the IO sampling feature is disabled.
Periodic sampling allows this XBee module to take an IO sample and transmit it to a remote
device (configured in the destination address) at the configured periodic rate (ms).
Exceptions
| Type | Condition |
|---|---|
| XBeeLibrary.Core.Exceptions.ATCommandEmptyException | If |
| XBeeLibrary.Core.Exceptions.InterfaceNotOpenException | If this device connection is not open. |
| XBeeLibrary.Core.Exceptions.TimeoutException | If there is a timeout reading the IO sampling rate command. |
| XBeeLibrary.Core.Exceptions.XBeeException | If there is any other XBee related error. |
See Also
GetNextFrameID()
Gets the next Frame ID of this XBee device.
Declaration
public byte GetNextFrameID()
Returns
| Type | Description |
|---|---|
| byte | The next Frame ID. |
GetPANID()
Returns the operating PAN ID (Personal Area Network Identifier) of this XBee device.
Declaration
public byte[] GetPANID()
Returns
| Type | Description |
|---|---|
| byte | The operating PAN ID of this XBee device. |
Remarks
For modules to communicate they must be configured with the same identifier. Only modules with matching IDs can communicate with each other. This parameter allows multiple networks to co-exist on the same physical channel.
Exceptions
| Type | Condition |
|---|---|
| XBeeLibrary.Core.Exceptions.ATCommandEmptyException | If the |
| XBeeLibrary.Core.Exceptions.InterfaceNotOpenException | If this device connection is not open. |
| XBeeLibrary.Core.Exceptions.TimeoutException | If there is a timeout reading the operating PAN ID. |
| XBeeLibrary.Core.Exceptions.XBeeException | If there is any other XBee related error. |
See Also
GetPowerLevel()
Returns the output power level at which this XBee device transmits conducted power.
Declaration
public PowerLevel GetPowerLevel()
Returns
| Type | Description |
|---|---|
| XBeeLibrary.Core.Models.PowerLevel | The output power level of this XBee device. |
Exceptions
| Type | Condition |
|---|---|
| XBeeLibrary.Core.Exceptions.ATCommandEmptyException | If the |
| XBeeLibrary.Core.Exceptions.InterfaceNotOpenException | If this device connection is not open. |
| XBeeLibrary.Core.Exceptions.TimeoutException | If there is a timeout reading the power level command. |
| XBeeLibrary.Core.Exceptions.XBeeException | If there is any other XBee related error. |
See Also
ReadData()
Reads a Bluetooth data packet received by the device during the configured receive timeout.
Declaration
public byte[] ReadData()
Returns
| Type | Description |
|---|---|
| byte |
ReadData(int)
Reads a Bluetooth data packet received by the device during the provided timeout.
Declaration
public byte[] ReadData(int timeout)
Parameters
| Type | Name | Description |
|---|---|---|
| int | timeout |
Returns
| Type | Description |
|---|---|
| byte |
ReadUserDataRelay()
Reads a new User Data Relay packet received by this XBee device during the configured receive timeout.
Declaration
public UserDataRelayMessage ReadUserDataRelay()
Returns
| Type | Description |
|---|---|
| XBeeLibrary.Core.Models.UserDataRelayMessage | A XBeeLibrary.Core.Models.UserDataRelayMessage object containing the source interface and data.
|
Remarks
This method blocks until new User Data Relay is received or the configured receive timeout expires.
Exceptions
| Type | Condition |
|---|---|
| XBeeLibrary.Core.Exceptions.InterfaceNotOpenException | If the interface is not open. |
See Also
ReadUserDataRelay(int)
Reads a new User Data Relay packet received by this XBee device during the provided timeout.
Declaration
public UserDataRelayMessage ReadUserDataRelay(int timeout)
Parameters
| Type | Name | Description |
|---|---|---|
| int | timeout | The time to wait for new User Data Relay in milliseconds. |
Returns
| Type | Description |
|---|---|
| XBeeLibrary.Core.Models.UserDataRelayMessage | A XBeeLibrary.Core.Models.UserDataRelayMessage object containing the source interface and data.
|
Remarks
This method blocks until new User Data Relay is received or the given timeout expires.
Exceptions
| Type | Condition |
|---|---|
| XBeeLibrary.Core.Exceptions.InterfaceNotOpenException | If the interface is not open. |
See Also
Reset()
Performs a software reset on this XBee device and blocks until the process is completed.
Declaration
public override void Reset()
Overrides
Exceptions
| Type | Condition |
|---|---|
| XBeeLibrary.Core.Exceptions.InterfaceNotOpenException | If this device connection is not open. |
| XBeeLibrary.Core.Exceptions.TimeoutException | If there is a timeout resetting the device. |
| XBeeLibrary.Core.Exceptions.XBeeException | If there is any other XBee related error. |
SendData(byte[])
Sends the given data to the device.
Declaration
public void SendData(byte[] data)
Parameters
| Type | Name | Description |
|---|---|---|
| byte | data |
SendMicroPythonData(byte[])
Sends the given data to the XBee MicroPython interface in a User Data Relay frame.
Declaration
public void SendMicroPythonData(byte[] data)
Parameters
| Type | Name | Description |
|---|---|---|
| byte | data | Data to send. |
Exceptions
| Type | Condition |
|---|---|
| ArgumentException | If data length is greater than 255 bytes. |
| XBeeLibrary.Core.Exceptions.XBeeException | If there is any XBee related error sending the MicroPython data. |
See Also
SendPacket(XBeePacket)
Sends the given XBee packet synchronously and blocks until the response is received or the configured receive timeout expires.
Declaration
public XBeePacket SendPacket(XBeePacket packet)
Parameters
| Type | Name | Description |
|---|---|---|
| XBeeLibrary.Core.Packet.XBeePacket | packet | The XBee packet to be sent. |
Returns
| Type | Description |
|---|---|
| XBeeLibrary.Core.Packet.XBeePacket | An XBeeLibrary.Core.Packet.XBeePacket object containing the response of the sent packet or
|
Remarks
The receive timeout is consulted/configured using the ReceiveTimeoutproperty.
Use <xref href="DigiIoT.Maui.Devices.XBee.XBeeBLEDevice.SendPacketAsync(XBeeLibrary.Core.Packet.XBeePacket)" data-throw-if-not-resolved="false"></xref> or
<xref href="DigiIoT.Maui.Devices.XBee.XBeeBLEDevice.SendPacket(XBeeLibrary.Core.Packet.XBeePacket%2cSystem.EventHandler%7bXBeeLibrary.Core.Events.PacketReceivedEventArgs%7d)" data-throw-if-not-resolved="false"></xref> for non-blocking
operations.
Exceptions
| Type | Condition |
|---|---|
| ArgumentNullException | If |
| XBeeLibrary.Core.Exceptions.InterfaceNotOpenException | If this device connection is not open. |
| XBeeLibrary.Core.Exceptions.InvalidOperatingModeException | If the operating mode is different from XBeeLibrary.Core.Models.OperatingMode.API and XBeeLibrary.Core.Models.OperatingMode.API_ESCAPE. |
| XBeeLibrary.Core.Exceptions.TimeoutException | If the configured time expires while waiting for the packet reply. |
| XBeeLibrary.Core.Exceptions.XBeeException | If there is any other XBee related error. |
See Also
SendPacket(XBeePacket, EventHandler<PacketReceivedEventArgs>)
Sends the given XBee packet and registers the given packet handler (if not null) to
manage what happens when the answers is received.
Declaration
public void SendPacket(XBeePacket packet, EventHandler<PacketReceivedEventArgs> handler)
Parameters
| Type | Name | Description |
|---|---|---|
| XBeeLibrary.Core.Packet.XBeePacket | packet | XBee packet to be sent. |
| EventHandlerXBeeLibrary.Core.Events.PacketReceivedEventArgs | handler | Event handler for the operation, |
Remarks
This is a non-blocking operation. To wait for the answer use SendPacket(XBeePacket).
Exceptions
| Type | Condition |
|---|---|
| ArgumentNullException | If |
| XBeeLibrary.Core.Exceptions.InterfaceNotOpenException | If this device connection is not open. |
| XBeeLibrary.Core.Exceptions.InvalidOperatingModeException | If the operating mode is different from XBeeLibrary.Core.Models.OperatingMode.API and XBeeLibrary.Core.Models.OperatingMode.API_ESCAPE. |
| XBeeLibrary.Core.Exceptions.XBeeException | If there is any other XBee related error. |
See Also
SendPacketAsync(XBeePacket)
Sends the given XBee packet asynchronously.
Declaration
public void SendPacketAsync(XBeePacket packet)
Parameters
| Type | Name | Description |
|---|---|---|
| XBeeLibrary.Core.Packet.XBeePacket | packet | The XBee packet to be sent asynchronously. |
Remarks
To be notified when the answer is received, use the PacketReceived event handler.
Exceptions
| Type | Condition |
|---|---|
| ArgumentNullException | If |
| XBeeLibrary.Core.Exceptions.InterfaceNotOpenException | If this device connection is not open. |
| XBeeLibrary.Core.Exceptions.InvalidOperatingModeException | If the operating mode is different from XBeeLibrary.Core.Models.OperatingMode.API and XBeeLibrary.Core.Models.OperatingMode.API_ESCAPE. |
| XBeeLibrary.Core.Exceptions.XBeeException | If there is any other XBee related error. |
See Also
SendSerialData(byte[])
Sends the given data to the XBee serial interface in a User Data Relay frame.
Declaration
public void SendSerialData(byte[] data)
Parameters
| Type | Name | Description |
|---|---|---|
| byte | data | Data to send. |
Exceptions
| Type | Condition |
|---|---|
| ArgumentException | If data length is greater than 255 bytes. |
| XBeeLibrary.Core.Exceptions.XBeeException | If there is any XBee related error sending the serial data. |
See Also
SendUserDataRelay(XBeeLocalInterface, byte[])
Sends the provided data to the given XBee local interface.
Declaration
public void SendUserDataRelay(XBeeLocalInterface destinationInterface, byte[] data)
Parameters
| Type | Name | Description |
|---|---|---|
| XBeeLibrary.Core.Models.XBeeLocalInterface | destinationInterface | Destination XBee local interface. |
| byte | data | Data to send. |
Exceptions
| Type | Condition |
|---|---|
| ArgumentException | If the destination interface is unknown. |
| ArgumentException | If data length is greater than 255 bytes. |
| XBeeLibrary.Core.Exceptions.XBeeException | If there is any XBee related error sending the User Data Relay. |
See Also
SetBluetoothPassword(string)
Sets the Bluetooth password of the Digi device in order to connect to it.
Declaration
public void SetBluetoothPassword(string password)
Parameters
| Type | Name | Description |
|---|---|---|
| string | password |
SetDIOChangeDetection(ISet<IOLine>)
Sets the digital IO lines of this XBee device to be monitored and sampled whenever their status changes.
Declaration
public void SetDIOChangeDetection(ISet<IOLine> lines)
Parameters
| Type | Name | Description |
|---|---|---|
| ISetXBeeLibrary.Core.IO.IOLine | lines | Set of IO lines to be monitored, |
Remarks
A null set of lines disables this feature.
If a change is detected on an enabled digital IO pin, a digital IO sample is immediately
transmitted to the configured destination address.
The destination address can be configured using the <xref href="DigiIoT.Maui.Devices.XBee.XBeeBLEDevice.SetDestinationAddress(XBeeLibrary.Core.Models.XBee64BitAddress)" data-throw-if-not-resolved="false"></xref>
method and retrieved by <xref href="DigiIoT.Maui.Devices.XBee.XBeeBLEDevice.GetDestinationAddress" data-throw-if-not-resolved="false"></xref>.
Exceptions
| Type | Condition |
|---|---|
| XBeeLibrary.Core.Exceptions.InterfaceNotOpenException | If this device connection is not open. |
| XBeeLibrary.Core.Exceptions.TimeoutException | If there is a timeout sending the set IO change detect command. |
| XBeeLibrary.Core.Exceptions.XBeeException | If there is any other XBee related error. |
See Also
SetDestinationAddress(XBee64BitAddress)
Sets the 64-bit destination extended address of this XBee device.
Declaration
public void SetDestinationAddress(XBee64BitAddress xbee64BitAddress)
Parameters
| Type | Name | Description |
|---|---|---|
| XBeeLibrary.Core.Models.XBee64BitAddress | xbee64BitAddress | 64-bit destination address to be configured. |
Remarks
XBeeLibrary.Core.Models.XBee64BitAddress.BROADCAST_ADDRESS is the broadcast address for the PAN. XBeeLibrary.Core.Models.XBee64BitAddress.COORDINATOR_ADDRESS can be used to address the Pan Coordinator.
Exceptions
| Type | Condition |
|---|---|
| ArgumentNullException | If |
| XBeeLibrary.Core.Exceptions.InterfaceNotOpenException | If this device connection is not open. |
| XBeeLibrary.Core.Exceptions.TimeoutException | If there is a timeout setting the destination address. |
| XBeeLibrary.Core.Exceptions.XBeeException | If there is any other XBee related error. |
See Also
SetIOSamplingRate(int)
Sets the IO sampling rate to enable periodic sampling in this XBee device.
Declaration
public void SetIOSamplingRate(int rate)
Parameters
| Type | Name | Description |
|---|---|---|
| int | rate | IO sampling rate in milliseconds. |
Remarks
A sample rate of 0 ms. disables this feature.
All enabled digital IO and analog inputs will be sampled and transmitted every <code class="paramref">rate</code>
milliseconds to the configured destination address.
Exceptions
| Type | Condition |
|---|---|
| ArgumentException | If |
| XBeeLibrary.Core.Exceptions.InterfaceNotOpenException | If this device connection is not open. |
| XBeeLibrary.Core.Exceptions.TimeoutException | If there is a timeout sending the set IO sampling rate command. |
| XBeeLibrary.Core.Exceptions.XBeeException | If there is any other XBee related error. |
See Also
SetPANID(byte[])
Sets the PAN ID (Personal Area Network Identifier) of this XBee device.
Declaration
public void SetPANID(byte[] panID)
Parameters
| Type | Name | Description |
|---|---|---|
| byte | panID | The new PAN ID of this XBee device. |
Remarks
For modules to communicate they must be configured with the same identifier. Only modules with matching IDs can communicate with each other. This parameter allows multiple networks to co-exist on the same physical channel.
Exceptions
| Type | Condition |
|---|---|
| ArgumentException | If the length of |
| ArgumentNullException | If |
| XBeeLibrary.Core.Exceptions.InterfaceNotOpenException | If this device connection is not open. |
| XBeeLibrary.Core.Exceptions.TimeoutException | If there is a timeout setting the operating PAN ID. |
| XBeeLibrary.Core.Exceptions.XBeeException | If there is any other XBee related error. |
See Also
SetPowerLevel(PowerLevel)
Sets the output power level at which this XBee device transmits conducted power.
Declaration
public void SetPowerLevel(PowerLevel powerLevel)
Parameters
| Type | Name | Description |
|---|---|---|
| XBeeLibrary.Core.Models.PowerLevel | powerLevel | The new output power level to be set in this XBee device. |
Exceptions
| Type | Condition |
|---|---|
| ArgumentException | If |
| XBeeLibrary.Core.Exceptions.InterfaceNotOpenException | If this device connection is not open. |
| XBeeLibrary.Core.Exceptions.TimeoutException | If there is a timeout setting the power level command. |
| XBeeLibrary.Core.Exceptions.XBeeException | If there is any other XBee related error. |
See Also
ToString()
Returns the string representation of this device.
Declaration
public override string ToString()
Returns
| Type | Description |
|---|---|
| string | The string representation of this device. |
Overrides
Events
DataReceived
Represents the method that will handle the Bluetooth data received event.
Declaration
public event EventHandler<DataReceivedEventArgs> DataReceived
Event Type
| Type | Description |
|---|---|
| EventHandlerDataReceivedEventArgs |
MicroPythonDataReceived
Represents the method that will handle the MicroPython data received event.
Declaration
public event EventHandler<MicroPythonDataReceivedEventArgs> MicroPythonDataReceived
Event Type
| Type | Description |
|---|---|
| EventHandlerXBeeLibrary.Core.Events.Relay.MicroPythonDataReceivedEventArgs |
Exceptions
| Type | Condition |
|---|---|
| ArgumentNullException | If the event handler is |
See Also
PacketReceived
Represents the method that will handle the Data received event.
Declaration
public event EventHandler<PacketReceivedEventArgs> PacketReceived
Event Type
| Type | Description |
|---|---|
| EventHandlerXBeeLibrary.Core.Events.PacketReceivedEventArgs |
Exceptions
| Type | Condition |
|---|---|
| ArgumentNullException | If the event handler is |
See Also
SerialDataReceived
Represents the method that will handle the serial data received event.
Declaration
public event EventHandler<SerialDataReceivedEventArgs> SerialDataReceived
Event Type
| Type | Description |
|---|---|
| EventHandlerXBeeLibrary.Core.Events.Relay.SerialDataReceivedEventArgs |
Exceptions
| Type | Condition |
|---|---|
| ArgumentNullException | If the event handler is |
See Also
UserDataRelayReceived
Represents the method that will handle the User Data Relay received event.
Declaration
public event EventHandler<UserDataRelayReceivedEventArgs> UserDataRelayReceived
Event Type
| Type | Description |
|---|---|
| EventHandlerXBeeLibrary.Core.Events.UserDataRelayReceivedEventArgs |
Exceptions
| Type | Condition |
|---|---|
| ArgumentNullException | If the event handler is |