5.2.1.7 APS_DataReq_t Structure

Syntax
typedef struct
{
 /** \cond SERVICE_FIELDS **/
 struct
 {
 void *next; /*!< Used for queue support */
#ifdef _ZAPPSI_
 /* to be compatible with MAC service. */
 uint8_t requestId;
 /* Sequence number to identify request-response pair. */
 uint8_t sequenceNumber;
 union
 {
 /* Callback wrapper routine pointer */
 void (*callback)(void*);
 /* Processing routine pointer to call after required memory will become free */
 void (*process)(void*);
 } zsi;
#endif /* # _ZAPPSI_ */
 ZDO_ResolveAddrReq_t resolveAddrReq; /*!< Used for address resolving */
 } service;
 /** \endcond **/
 /** The addressing mode for identifying the destination of a data request.
 * May take any non-reserved value from the following list:
 APS_NO_ADDRESS (0x00) - used for binding; set dstAddress and dstEndpoint
 APS_GROUP_ADDRESS (0x01) - used for group transmission; 16-bit group address should be specified in dstAddress; dstEndpoint is not set
 APS_SHORT_ADDRESS (0x02) - identifying the destination (unicast or broadcast) with a 16-bit short address specified
 * in dstAddress and the endpoint set in dstEndpoint
 APS_EXT_ADDRESS (0x03) - identifying the destination with a 64-bit extended address specified in dstAddress and the endpoint set in dstEndpoint
 0x04..0xff - reserved values, must not be used by the application */
 APS_AddrMode_t dstAddrMode;
 /**
 * Endian "[LE]" The address of the individual device or group address
 * of the entity to which the ASDU is being transferred.
 **/
 APS_Address_t dstAddress;
 /** This parameter shall be present if and only if the DstAddrMode parameter
 * value is 0x02 or 0x03 and, if present, shall contain either the number of
 * individual endpoints of the entity to which the ASDU is being transferred,
 * or the broadcast endpoint (0xff). */
 Endpoint_t dstEndpoint;
 /** Endian "[LE]" The identifier of the profile for which
 * this frame is intended. */
 ProfileId_t profileId;
 /** Endian "[LE]" The identifier of the cluster for which
 * this frame is intended. */
 ClusterId_t clusterId;
 /** The endpoint on the request originator node from
 * which the data frame is being transferred. */
 Endpoint_t srcEndpoint;
 /** The number of octets comprising the ASDU to be transferred.
 * The maximum length of an individual APS frame payload is given
 * as NsduLength-apscMinHeaderOverhead. Assuming the possibility
 * of fragmentation, a maximum-sized single ASDU consists of 256 such blocks.
 **/
 uint16_t asduLength;
 /** The set of octets comprising the ASDU to be transferred. */
 uint8_t *asdu;
 /** The transmission options for the ASDU to be transferred.
 * See structure definition for details.
 */
 APS_TxOptions_t txOptions;
#if defined _GREENPOWER_SUPPORT_
 /* Alias usage by for the current frame */
 bool useAlias;
 /* The source address to be used for this NSDU. If the UseAlias parameter 
 has a value of FALSE, the AliasSrcAddr parameter is ignored.*/
 ShortAddr_t aliasSrcAddr;
 /* The sequence number to be used for this NSDU. If the UseAlias parameter
 has a value of FALSE, the AliasSeqNumb parameter is ignored.*/
 uint8_t aliasSeqNumber;
#endif /*_GREENPOWER_SUPPORT_*/
 /** The distance, in hops, that a transmitted frame will be allowed to
 * travel via the network*/
 uint8_t radius;
 /** A pointer to a callback function called upon request
 * completion. Must not be set to NULL. */
 void (*APS_DataConf)(APS_DataConf_t *conf);
 /** Confirm primitive passed to the callback and containing the results of request execution*/
 APS_DataConf_t confirm;
} APS_DataReq_t;

Description

The structure represents the parameters of a data request, which is the request for sending data across the network. The user must pass a pointer to an instance of the structure as an argument to the APS_DataReq() function. The structure’s definition adheres to the APSDE-DATA request primitive. For more details, refer to the Zigbee® Specification Revision 22 1.0 (05-3474-22), section 2.2.4.1 on page 19.