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.