public class ExplicitAddressingPacket extends XBeeAPIPacket
Allows application layer fields (endpoint and cluster ID) to be specified for a data transmission. Similar to the Transmit Request, but also requires application layer addressing fields to be specified (endpoints, cluster ID, profile ID). An Explicit Addressing Request API frame causes the module to send data as an RF packet to the specified destination, using the specified source and destination endpoints, cluster ID, and profile ID.
The 64-bit destination address should be set to
0x000000000000FFFF
for a broadcast transmission (to all
devices).
The coordinator can be addressed by either setting the 64-bit address
to all 0x00
and the 16-bit address to 0xFFFE
, OR by
setting the 64-bit address to the coordinator's 64-bit address and the
16-bit address to 0x0000
.
For all other transmissions, setting the 16-bit address to the correct 16-bit address can help improve performance when transmitting to multiple destinations.
If a 16-bit address is not known, this field should be set to
0xFFFE
(unknown).
The Transmit Status frame
(APIFrameType.TRANSMIT_REQUEST
) will
indicate the discovered 16-bit address, if successful (see
TransmitStatusPacket
).
The broadcast radius can be set from 0
up to NH
. If set
to 0
, the value of NH
specifies the broadcast radius
(recommended). This parameter is only used for broadcast transmissions.
The maximum number of payload bytes can be read with the NP
command. Note: if source routing is used, the RF payload will be reduced
by two bytes per intermediate hop in the source route.
Several transmit options can be set using the transmit options bitfield.
NO_FRAME_ID
Constructor and Description |
---|
ExplicitAddressingPacket(int frameID,
XBee64BitAddress destAddress64,
XBee16BitAddress destAddress16,
int sourceEndpoint,
int destEndpoint,
int clusterID,
int profileID,
int broadcastRadius,
int transmitOptions,
byte[] rfData)
Class constructor.
|
Modifier and Type | Method and Description |
---|---|
static ExplicitAddressingPacket |
createPacket(byte[] payload)
Creates a new
ExplicitAddressingPacket object from the given
payload. |
XBee16BitAddress |
get16BitDestinationAddress()
Returns the 16-bit destination address.
|
XBee64BitAddress |
get64BitDestinationAddress()
Returns the 64-bit destination address.
|
LinkedHashMap<String,String> |
getAPIPacketParameters()
Returns a map with the XBee packet parameters and their values.
|
byte[] |
getAPIPacketSpecificData()
Returns the XBee API packet specific data.
|
int |
getBroadcastRadius()
Returns the broadcast radius.
|
int |
getClusterID()
Returns the cluster ID used in the transmission.
|
int |
getDestinationEndpoint()
Returns the destination endpoint of the transmission.
|
int |
getProfileID()
Returns the profile ID used in the transmission.
|
byte[] |
getRFData()
Returns the RF Data to send.
|
int |
getSourceEndpoint()
Returns the source endpoint of the transmission.
|
int |
getTransmitOptions()
Returns the transmit options bitfield.
|
boolean |
isBroadcast()
Returns whether or not the packet is a broadcast packet.
|
boolean |
needsAPIFrameID()
Returns whether the API packet needs API Frame ID or not.
|
void |
setRFData(byte[] rfData)
Sets the RF Data to send.
|
checkFrameID, getAPIData, getFrameID, getFrameType, getFrameTypeValue, getPacketData, setFrameID
generateByteArray, generateByteArrayEscaped, getChecksum, getPacketLength, getParameters, parsePacket, parsePacket, toPrettyString, toString
public ExplicitAddressingPacket(int frameID, XBee64BitAddress destAddress64, XBee16BitAddress destAddress16, int sourceEndpoint, int destEndpoint, int clusterID, int profileID, int broadcastRadius, int transmitOptions, byte[] rfData)
ExplicitAddressingPacket
object with the given parameters.frameID
- Frame ID.destAddress64
- 64-bit address of the destination device.destAddress16
- 16-bit address of the destination device.sourceEndpoint
- Source endpoint for the transaction.destEndpoint
- Destination endpoint for the transaction.clusterID
- Cluster ID used in the transaction.profileID
- Profile ID used in the transaction.broadcastRadius
- Maximum number of hops a broadcast transmission
can traverse. Set to 0 to use the network
maximum hops value.transmitOptions
- Bitfield of supported transmission options.rfData
- RF Data that is sent to the destination device.IllegalArgumentException
- if frameID < 0
or
if frameID > 255
or
if sourceEndpoint < 0
or
if sourceEndpoint > 255
or
if destEndpoint < 0
or
if destEndpoint > 255
or
if clusterID < 0
or
if clusterID > 65535
or
if profileID < 0
or
if profileID > 65535
or
if broadcastRadius < 0
or
if broadcastRadius > 255
or
if transmitOptions < 0
or
if transmitOptions > 255
.NullPointerException
- if destAddress64 == null
or
if destAddress16 == null
.XBeeTransmitOptions
,
XBee16BitAddress
,
XBee64BitAddress
public static ExplicitAddressingPacket createPacket(byte[] payload)
ExplicitAddressingPacket
object from the given
payload.payload
- The API frame payload. It must start with the frame type
corresponding to an Explicit Addressing packet
(0x11
).
The byte array must be in OperatingMode.API
mode.IllegalArgumentException
- if payload[0] != APIFrameType.EXPLICIT_ADDRESSING_COMMAND_FRAME.getValue()
or
if payload.length <
or
if frameID < 0
or
if frameID > 255
or
if sourceEndpoint < 0
or
if sourceEndpoint > 255
or
if destEndpoint < 0
or
if destEndpoint > 255
or
if clusterID < 0
or
if clusterID > 65535
or
if profileID < 0
or
if profileID > 65535
or
if broadcastRadius < 0
or
if broadcastRadius > 255
or
if transmitOptions < 0
or
if transmitOptions > 255
.NullPointerException
- if payload == null
.public XBee16BitAddress get16BitDestinationAddress()
XBee16BitAddress
public XBee64BitAddress get64BitDestinationAddress()
XBee64BitAddress
public LinkedHashMap<String,String> getAPIPacketParameters()
XBeeAPIPacket
public byte[] getAPIPacketSpecificData()
XBeeAPIPacket
This does not include the frame ID if it is needed.
public int getBroadcastRadius()
public int getClusterID()
public int getDestinationEndpoint()
public int getProfileID()
public byte[] getRFData()
public int getSourceEndpoint()
public int getTransmitOptions()
XBeeTransmitOptions
public boolean isBroadcast()
XBeeAPIPacket
isBroadcast
in class XBeeAPIPacket
true
if the packet is a broadcast packet, false
otherwise.public boolean needsAPIFrameID()
XBeeAPIPacket
needsAPIFrameID
in class XBeeAPIPacket
true
if the packet needs API Frame ID, false
otherwise.public void setRFData(byte[] rfData)
rfData
- RF Data to send.© Copyright 2014?2015 Digi International Inc. All rights reserved.