123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481 |
- /**************************************************************************************************
- Filename: AF.h
- Revised: $Date: 2011-11-18 16:03:29 -0800 (Fri, 18 Nov 2011) $
- Revision: $Revision: 28423 $
- Description: This file contains the Application Framework definitions.
- Copyright 2004-2011 Texas Instruments Incorporated. All rights reserved.
- IMPORTANT: Your use of this Software is limited to those specific rights
- granted under the terms of a software license agreement between the user
- who downloaded the software, his/her employer (which must be your employer)
- and Texas Instruments Incorporated (the "License"). You may not use this
- Software unless you agree to abide by the terms of the License. The License
- limits your use, and you acknowledge, that the Software may not be modified,
- copied or distributed unless embedded on a Texas Instruments microcontroller
- or used solely and exclusively in conjunction with a Texas Instruments radio
- frequency transceiver, which is integrated into your product. Other than for
- the foregoing purpose, you may not use, reproduce, copy, prepare derivative
- works of, modify, distribute, perform, display or sell this Software and/or
- its documentation for any purpose.
- YOU FURTHER ACKNOWLEDGE AND AGREE THAT THE SOFTWARE AND DOCUMENTATION ARE
- PROVIDED “AS IS” WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED,
- INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY, TITLE,
- NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL
- TEXAS INSTRUMENTS OR ITS LICENSORS BE LIABLE OR OBLIGATED UNDER CONTRACT,
- NEGLIGENCE, STRICT LIABILITY, CONTRIBUTION, BREACH OF WARRANTY, OR OTHER
- LEGAL EQUITABLE THEORY ANY DIRECT OR INDIRECT DAMAGES OR EXPENSES
- INCLUDING BUT NOT LIMITED TO ANY INCIDENTAL, SPECIAL, INDIRECT, PUNITIVE
- OR CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA, COST OF PROCUREMENT
- OF SUBSTITUTE GOODS, TECHNOLOGY, SERVICES, OR ANY CLAIMS BY THIRD PARTIES
- (INCLUDING BUT NOT LIMITED TO ANY DEFENSE THEREOF), OR OTHER SIMILAR COSTS.
- Should you have any questions regarding your right to use this Software,
- contact Texas Instruments Incorporated at www.TI.com.
- **************************************************************************************************/
- #ifndef AF_H
- #define AF_H
- #ifdef __cplusplus
- extern "C"
- {
- #endif
- /*********************************************************************
- * INCLUDES
- */
- #include "ZComDef.h"
- #include "nwk.h"
- #include "APSMEDE.h"
- /*********************************************************************
- * CONSTANTS
- */
- #define AF_BROADCAST_ENDPOINT 0xFF
- #define AF_PREPROCESS 0x04 // Will force APS to callback to preprocess before calling NWK layer
- #define AF_LIMIT_CONCENTRATOR 0x08
- #define AF_ACK_REQUEST 0x10
- #define AF_DISCV_ROUTE 0x20 // This option is no longer used, and will be taken out later
- #define AF_EN_SECURITY 0x40
- #define AF_SKIP_ROUTING 0x80
- // Backwards support for afAddOrSendMessage / afFillAndSendMessage.
- #define AF_TX_OPTIONS_NONE 0
- #define AF_MSG_ACK_REQUEST AF_ACK_REQUEST
- // Default Radius Count value
- #define AF_DEFAULT_RADIUS DEF_NWK_RADIUS
- /*********************************************************************
- * Node Descriptor
- */
- #define AF_MAX_USER_DESCRIPTOR_LEN 16
- #define AF_USER_DESCRIPTOR_FILL 0x20
- typedef struct
- {
- uint8 len; // Length of string descriptor
- uint8 desc[AF_MAX_USER_DESCRIPTOR_LEN];
- } UserDescriptorFormat_t;
- // Node Logical Types
- #define NODETYPE_COORDINATOR 0x00
- #define NODETYPE_ROUTER 0x01
- #define NODETYPE_DEVICE 0x02
- // Node Frequency Band - bit map
- #define NODEFREQ_800 0x01 // 868 - 868.6 MHz
- #define NODEFREQ_900 0x04 // 902 - 928 MHz
- #define NODEFREQ_2400 0x08 // 2400 - 2483.5 MHz
- // Node MAC Capabilities - bit map
- // Use CAPINFO_ALTPANCOORD, CAPINFO_DEVICETYPE_FFD,
- // CAPINFO_DEVICETYPE_RFD, CAPINFO_POWER_AC,
- // and CAPINFO_RCVR_ON_IDLE from NLMEDE.h
- // Node Descriptor format structure
- typedef struct
- {
- uint8 LogicalType:3;
- uint8 ComplexDescAvail:1; /* AF_V1_SUPPORT - reserved bit. */
- uint8 UserDescAvail:1; /* AF_V1_SUPPORT - reserved bit. */
- uint8 Reserved:3;
- uint8 APSFlags:3;
- uint8 FrequencyBand:5;
- uint8 CapabilityFlags;
- uint8 ManufacturerCode[2];
- uint8 MaxBufferSize;
- uint8 MaxInTransferSize[2];
- uint16 ServerMask;
- uint8 MaxOutTransferSize[2];
- uint8 DescriptorCapability;
- } NodeDescriptorFormat_t;
- // Bit masks for the ServerMask.
- #define PRIM_TRUST_CENTER 0x01
- #define BKUP_TRUST_CENTER 0x02
- #define PRIM_BIND_TABLE 0x04
- #define BKUP_BIND_TABLE 0x08
- #define PRIM_DISC_TABLE 0x10
- #define BKUP_DISC_TABLE 0x20
- #define NETWORK_MANAGER 0x40
- /*********************************************************************
- * Node Power Descriptor
- */
- // Node Current Power Modes (CURPWR)
- // Receiver permanently on or sync with coordinator beacon.
- #define NODECURPWR_RCVR_ALWAYS_ON 0x00
- // Receiver automatically comes on periodically as defined by the
- // Node Power Descriptor.
- #define NODECURPWR_RCVR_AUTO 0x01
- // Receiver comes on when simulated, eg by a user pressing a button.
- #define NODECURPWR_RCVR_STIM 0x02
- // Node Available Power Sources (AVAILPWR) - bit map
- // Can be used for AvailablePowerSources or CurrentPowerSource
- #define NODEAVAILPWR_MAINS 0x01 // Constant (Mains) power
- #define NODEAVAILPWR_RECHARGE 0x02 // Rechargeable Battery
- #define NODEAVAILPWR_DISPOSE 0x04 // Disposable Battery
- // Power Level
- #define NODEPOWER_LEVEL_CRITICAL 0x00 // Critical
- #define NODEPOWER_LEVEL_33 0x04 // 33%
- #define NODEPOWER_LEVEL_66 0x08 // 66%
- #define NODEPOWER_LEVEL_100 0x0C // 100%
- // Node Power Descriptor format structure
- typedef struct
- {
- unsigned int PowerMode:4;
- unsigned int AvailablePowerSources:4;
- unsigned int CurrentPowerSource:4;
- unsigned int CurrentPowerSourceLevel:4;
- } NodePowerDescriptorFormat_t;
- /*********************************************************************
- * Simple Descriptor
- */
- // AppDevVer values
- #define APPDEVVER_1 0x01
- // AF_V1_SUPPORT AppFlags - bit map
- #define APPFLAG_NONE 0x00 // Backwards compatibility to AF_V1.
- // AF-AppFlags - bit map
- #define AF_APPFLAG_NONE 0x00
- #define AF_APPFLAG_COMPLEXDESC 0x01 // Complex Descriptor Available
- #define AF_APPFLAG_USERDESC 0x02 // User Descriptor Available
- typedef uint16 cId_t;
- // Simple Description Format Structure
- typedef struct
- {
- uint8 EndPoint;
- uint16 AppProfId;
- uint16 AppDeviceId;
- uint8 AppDevVer:4;
- uint8 Reserved:4; // AF_V1_SUPPORT uses for AppFlags:4.
- uint8 AppNumInClusters;
- cId_t *pAppInClusterList;
- uint8 AppNumOutClusters;
- cId_t *pAppOutClusterList;
- } SimpleDescriptionFormat_t;
- /*********************************************************************
- * AF Message Format
- */
- // Frame Types
- #define FRAMETYPE_KVP 0x01 // 0001
- #define FRAMETYPE_MSG 0x02 // 0010
- #define ERRORCODE_SUCCESS 0x00
- #define AF_HDR_KVP_MAX_LEN 0x08 // Max possible AF KVP header.
- #define AF_HDR_V1_0_MAX_LEN 0x03 // Max possible AF Ver 1.0 header.
- #define AF_HDR_V1_1_MAX_LEN 0x00 // Max possible AF Ver 1.1 header.
- // Generalized MSG Command Format
- typedef struct
- {
- uint8 TransSeqNumber;
- uint16 DataLength; // Number of bytes in TransData
- uint8 *Data;
- } afMSGCommandFormat_t;
- typedef enum
- {
- noLatencyReqs,
- fastBeacons,
- slowBeacons
- } afNetworkLatencyReq_t;
- /*********************************************************************
- * Endpoint Descriptions
- */
- typedef enum
- {
- afAddrNotPresent = AddrNotPresent,
- afAddr16Bit = Addr16Bit,
- afAddr64Bit = Addr64Bit,
- afAddrGroup = AddrGroup,
- afAddrBroadcast = AddrBroadcast
- } afAddrMode_t;
- typedef struct
- {
- union
- {
- uint16 shortAddr;
- ZLongAddr_t extAddr;
- } addr;
- afAddrMode_t addrMode;
- uint8 endPoint;
- uint16 panId; // used for the INTER_PAN feature
- } afAddrType_t;
- typedef struct
- {
- osal_event_hdr_t hdr; /* OSAL Message header */
- uint16 groupId; /* Message's group ID - 0 if not set */
- uint16 clusterId; /* Message's cluster ID */
- afAddrType_t srcAddr; /* Source Address, if endpoint is STUBAPS_INTER_PAN_EP,
- it's an InterPAN message */
- uint16 macDestAddr; /* MAC header destination short address */
- uint8 endPoint; /* destination endpoint */
- uint8 wasBroadcast; /* TRUE if network destination was a broadcast address */
- uint8 LinkQuality; /* The link quality of the received data frame */
- uint8 correlation; /* The raw correlation value of the received data frame */
- int8 rssi; /* The received RF power in units dBm */
- uint8 SecurityUse; /* deprecated */
- uint32 timestamp; /* receipt timestamp from MAC */
- uint8 nwkSeqNum; /* network header frame sequence number */
- afMSGCommandFormat_t cmd; /* Application Data */
- } afIncomingMSGPacket_t;
- typedef struct
- {
- osal_event_hdr_t hdr;
- uint8 endpoint;
- uint8 transID;
- } afDataConfirm_t;
- // Endpoint Table - this table is the device description
- // or application registration.
- // There will be one entry in this table for every
- // endpoint defined.
- typedef struct
- {
- uint8 endPoint;
- uint8 *task_id; // Pointer to location of the Application task ID.
- SimpleDescriptionFormat_t *simpleDesc;
- afNetworkLatencyReq_t latencyReq;
- } endPointDesc_t;
- // Typedef for callback function to retrieve an endpoints
- // descriptors, contained in the endpoint descriptor.
- // This will allow an application to dynamically change
- // the descriptor and not use the RAM/ROM.
- typedef void *(*pDescCB)( uint8 type, uint8 endpoint );
- // Descriptor types used in the above callback
- #define AF_DESCRIPTOR_SIMPLE 1
- #define AF_DESCRIPTOR_PROFILE_ID 2
- // Bit definitions for epList_t flags.
- typedef enum
- {
- eEP_AllowMatch = 1,
- eEP_NotUsed
- } eEP_Flags;
- typedef struct {
- uint8 frameDelay;
- uint8 windowSize;
- } afAPSF_Config_t;
- typedef struct _epList_t {
- struct _epList_t *nextDesc;
- endPointDesc_t *epDesc;
- pDescCB pfnDescCB; // Don't use if this function pointer is NULL.
- afAPSF_Config_t apsfCfg;
- eEP_Flags flags;
- } epList_t;
- /*********************************************************************
- * TYPEDEFS
- */
- #define afStatus_SUCCESS ZSuccess /* 0x00 */
- #define afStatus_FAILED ZFailure /* 0x01 */
- #define afStatus_INVALID_PARAMETER ZInvalidParameter /* 0x02 */
- #define afStatus_MEM_FAIL ZMemError /* 0x10 */
- #define afStatus_NO_ROUTE ZNwkNoRoute /* 0xCD */
- typedef ZStatus_t afStatus_t;
- typedef struct
- {
- uint8 kvp;
- APSDE_DataReqMTU_t aps;
- } afDataReqMTU_t;
- /*********************************************************************
- * Globals
- */
- extern epList_t *epList;
- /*********************************************************************
- * FUNCTIONS
- */
- /*
- * afInit - Initialize the AF.
- */
- //extern void afInit( void );
- #define afInit() // No work to do for now.
- /*
- * afRegisterExtended - Register an Application's EndPoint description
- * with a callback function for descriptors.
- *
- */
- extern epList_t *afRegisterExtended( endPointDesc_t *epDesc, pDescCB descFn );
- /*
- * afRegister - Register an Application's EndPoint description.
- *
- */
- extern afStatus_t afRegister( endPointDesc_t *epDesc );
- /*
- * afDelete - Delete an Application's EndPoint descriptor and frees the memory.
- *
- */
- extern afStatus_t afDelete( uint8 EndPoint );
- /*
- * afDataConfirm - APS will call this function after a data message
- * has been sent.
- */
- extern void afDataConfirm( uint8 endPoint, uint8 transID, ZStatus_t status );
- /*
- * afIncomingData - APS will call this function when an incoming
- * message is received.
- */
- extern void afIncomingData( aps_FrameFormat_t *aff, zAddrType_t *SrcAddress, uint16 SrcPanId,
- NLDE_Signal_t *sig, uint8 nwkSeqNum, uint8 SecurityUse, uint32 timestamp );
- afStatus_t AF_DataRequest( afAddrType_t *dstAddr, endPointDesc_t *srcEP,
- uint16 cID, uint16 len, uint8 *buf, uint8 *transID,
- uint8 options, uint8 radius );
- /*********************************************************************
- * @fn AF_DataRequestSrcRtg
- *
- * @brief Common functionality for invoking APSDE_DataReq() for both
- * SendMulti and MSG-Send.
- *
- * input parameters
- *
- * @param *dstAddr - Full ZB destination address: Nwk Addr + End Point.
- * @param *srcEP - Origination (i.e. respond to or ack to) End Point Descr.
- * @param cID - A valid cluster ID as specified by the Profile.
- * @param len - Number of bytes of data pointed to by next param.
- * @param *buf - A pointer to the data bytes to send.
- * @param *transID - A pointer to a byte which can be modified and which will
- * be used as the transaction sequence number of the msg.
- * @param options - Valid bit mask of Tx options.
- * @param radius - Normally set to AF_DEFAULT_RADIUS.
- * @param relayCnt - Number of devices in the relay list
- * @param pRelayList - Pointer to the relay list
- *
- * output parameters
- *
- * @param *transID - Incremented by one if the return value is success.
- *
- * @return afStatus_t - See previous definition of afStatus_... types.
- */
- afStatus_t AF_DataRequestSrcRtg( afAddrType_t *dstAddr, endPointDesc_t *srcEP,
- uint16 cID, uint16 len, uint8 *buf, uint8 *transID,
- uint8 options, uint8 radius, uint8 relayCnt,
- uint16* pRelayList );
- /*********************************************************************
- * Direct Access Functions - ZigBee Device Object
- */
- /*
- * afFindEndPointDesc - Find the endpoint description entry from the
- * endpoint number.
- */
- extern endPointDesc_t *afFindEndPointDesc( uint8 endPoint );
- /*
- * afFindSimpleDesc - Find the Simple Descriptor from the endpoint number.
- * If return value is not zero, the descriptor memory must be freed.
- */
- extern uint8 afFindSimpleDesc( SimpleDescriptionFormat_t **ppDesc, uint8 EP );
- /*
- * afDataReqMTU - Get the Data Request MTU(Max Transport Unit)
- */
- extern uint8 afDataReqMTU( afDataReqMTU_t* fields );
- /*
- * afGetMatch - Get the action for the Match Descriptor Response
- * TRUE allow match descriptor response
- */
- extern uint8 afGetMatch( uint8 ep );
- /*
- * afSetMatch - Set the action for the Match Descriptor Response
- * TRUE allow match descriptor response
- */
- extern uint8 afSetMatch( uint8 ep, uint8 action );
- /*
- * afNumEndPoints - returns the number of endpoints defined.
- */
- extern uint8 afNumEndPoints( void );
- /*
- * afEndPoints - builds an array of endpoints.
- */
- extern void afEndPoints( uint8 *epBuf, uint8 skipZDO );
- /*
- * afCopyAddress
- */
- extern void afCopyAddress (afAddrType_t *afAddr, zAddrType_t *zAddr);
- /*
- * afAPSF_ConfigGet - ascertain the fragmentation configuration for the specified EndPoint.
- */
- void afAPSF_ConfigGet(uint8 endPoint, afAPSF_Config_t *pCfg);
- /*
- * afAPSF_ConfigSet - set the fragmentation configuration for the specified EndPoint.
- */
- afStatus_t afAPSF_ConfigSet(uint8 endPoint, afAPSF_Config_t *pCfg);
- #ifdef __cplusplus
- }
- #endif
- #endif
- /**************************************************************************************************
- */
|