亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? aps.h

?? ZIGBEE2006協議棧
?? H
字號:
/*

*2006/08/16 WXL 2.0

*/




#ifndef APS_H
#define APS_H


#define APS_FRM_TYPE_DATA 0
#define APS_FRM_TYPE_CMD  1
#define APS_FRM_TYPE_ACK  2
#define APS_FRM_TYPE_RSV  3
#define APS_FRM_TYPE_MASK 3

#define APS_GET_FRM_TYPE(x) (x&APS_FRM_TYPE_MASK)

#define APS_IS_CMD(x) ((APS_GET_FRM_TYPE(x)) == APS_FRM_TYPE_CMD)
#define APS_IS_DATA(x) ((APS_GET_FRM_TYPE(x)) == APS_FRM_TYPE_DATA)
#define APS_IS_ACK(x) ((APS_GET_FRM_TYPE(x)) == APS_FRM_TYPE_ACK)
#define APS_IS_RSV(x) ((APS_GET_FRM_TYPE(x)) == APS_FRM_TYPE_RSV)



#define APS_FRM_DLVRMODE_NORMAL    0
#define APS_FRM_DLVRMODE_INDIRECT  (1<<2)
#define APS_FRM_DLVRMODE_BCAST     (2<<2)
#define APS_FRM_DLVRMODE_RSV       (3<<2)
#define APS_FRM_DLVRMODE_MASK      (3<<2)
#define APS_GET_FRM_DLVRMODE(x)    (x&APS_FRM_DLVRMODE_MASK)

//The indirect submode bit is used for indirect frames
//and distiguishes before and after the indirect binding is resolved.
//if the submode is '1', only the srcEP is included and the packet
//is traveling to the coordinator to get the binding resolved.
//If the submode is '1', only the dstEP is included and the packet
//is traveling to the destination EP.

#define APS_FRM_INDIRECT_SUBMODE_MASK      (1<<4)
#define APS_GET_FRM_INDIRECT_SUBMODE(x)    (x&(APS_FRM_INDIRECT_SUBMODE_MASK))
#define APS_FRM_SECURITY_MASK      (1<<5)
#define APS_GET_FRM_SECURITY(x)        (x&(APS_FRM_SECURITY_MASK))
#define APS_FRM_ACKREQ_MASK        (1<<6)
#define APS_GET_FRM_ACKREQ(x)        (x&(APS_FRM_ACKREQ_MASK))

#define AF_TRANS_COUNT_MASK  (0xF)
#define AF_GET_TRANS_COUNT(x) (x &(AF_TRANS_COUNT_MASK))

#define AF_FRM_TYPE_MASK   (0xF <<4)
#define AF_GET_FRM_TYPE(x) (x & (AF_FRM_TYPE_MASK))

#define AF_FRM_TYPE_KVP  (1 <<4)
#define AF_FRM_TYPE_MSG  (2<<4)

#define APS_RXBUFF_SIZE LRWPAN_MAX_INDIRECT_RX_PKTS


//right now, all this structure has in it is the endpoint number.
typedef struct _APS_EP_ELEM {
	BYTE epNum;
}APS_EP_ELEM;

//only use for this right now is to allow user to
//regiser endpoints with the APS level so that they
//can be reported to the coordinator.
extern APS_EP_ELEM apsEndPoints[LRWPAN_MAX_ENDPOINTS];


typedef struct _APS_RX_DATA {
	MACPKT orgpkt;
	BYTE apsOffset;
	BYTE afOffset;
	union _APS_RX_DATA_FLAGS{
		BYTE val;
		struct {
			unsigned srcEP:1;
			unsigned dstEP:1;
		}bits;
	}flags;
	//parse these out of the packet for reference
	BYTE dstEP;
	BYTE srcEP;
	BYTE cluster;
	UINT16 profile;
	SADDR dstSADDR;   //used for indirect msgs
	SADDR srcSADDR;
	BYTE af_fcf;
	BYTE aps_fcf;
//these fields are for AF MSG data
	BYTE   tsn;
	BYTE   *usrPload;
	BYTE   usrPlen;
}APS_RX_DATA;



typedef struct _APS_TX_DATA {
	union _APS_TX_DATA_FLAGS{
		BYTE val;
		struct {
			unsigned loopback:1;
		}bits;
	}flags;
	BYTE aps_fcf;
	BYTE af_fcf;	
	BYTE dstEP;
	BYTE dstMode;
	SADDR dstSADDR;
	BYTE *dstLADDR;
	SADDR srcSADDR;
	BYTE cluster;
	BYTE srcEP;
	BYTE  tsn;
	BYTE aps_flen;  //used for retries.
	BYTE *aps_ptr;  //used for retries
	BYTE *usrPload;
	BYTE usrPlen;
}APS_TX_DATA;

//arguments for extended ZEP commands
typedef union _ZEP_EXT_ARGS {
	struct {
		BYTE   mode;
	}alarm;
}ZEP_EXT_ARGS;

typedef union _APS_ARGS {
	struct {
		BYTE   clusterID;
		BYTE   extID;
		SADDR  dst;      //destination for this command
		ZEP_EXT_ARGS ext;
	}zep_tx;
}APS_ARGS;

typedef enum _APS_STATE_ENUM {
  APS_STATE_IDLE,
  APS_STATE_COMMAND_START,
  APS_STATE_GENERIC_TX_WAIT,
  APS_STATE_NWK_PASSTHRU_WAIT,
  APS_STATE_INDIRECT_GETDST,
  APS_STATE_INDIRECT_TX,
#ifdef LRWPAN_COORDINATOR
  APS_STATE_INJECT_INDIRECT,
#endif
  APS_STATE_ACK_SEND_START,
  APS_STATE_INDIRECT_TX_WAIT,
  APS_STATE_INJECT_LOOPBACK,
  APS_STATE_INDIRECT_LOOPBACK
 } APS_STATE_ENUM;


typedef struct _APS_SERVICE {
  LRWPAN_SVC_ENUM cmd;
  APS_ARGS args;
  LRWPAN_STATUS_ENUM status;
}APS_SERVICE;


typedef struct _APS_PIB{
	union _APS_PIB_FLAGS{
		BYTE val;
		struct {
			unsigned indirectPending:1;
			unsigned ackPending:1;         //expecting an ACK
			unsigned ackSendPending:1;     //we need to send an APS ack!
			unsigned TxInProgress:1;       //TX in progress
			unsigned IsUsrBufferFree:1;
		}bits;
	}flags;
	BYTE activeEPs;          // num of active EPs
	UINT32 tx_start_time;
	BYTE apsTSN; //transaction sequence number
	UINT32 apscAckWaitDuration; // in mac TICs
	UINT16 apsAckWaitMultiplier;
	UINT16 apsAckWaitMultiplierCntr;
	BYTE apscMaxFrameRetries;
	BYTE currentAckRetries;
#ifdef LRWPAN_COORDINATOR
	BYTE rxCnt;          //number of packets currently in buffer
    BYTE rxTail;        //tail pointer for buffer
	BYTE rxHead;        //head pointer for buffer
	//fifo for RX pkts, holds LRWPAN_MAX_NWK_RX_PKTS
	APS_RX_DATA  rxBuff[APS_RXBUFF_SIZE];  //buffer for APS packets to be redirected
#endif

}APS_PIB;

extern APS_SERVICE a_aps_service;
extern APS_TX_DATA a_aps_tx_data;
void apsFSM(void);
void apsInit(void);
extern APS_STATE_ENUM apsState;
extern APS_PIB aps_pib;
extern APS_RX_DATA a_aps_rx_data;

extern BOOL apsRxBusy(void);
extern void apsRxHandoff(void);

extern LRWPAN_STATUS_ENUM usrRxPacketCallback(void);
extern LRWPAN_STATUS_ENUM aplRegisterEndPoint(BYTE epNum);


void aplShutdown(void);
void aplWarmstart(void);

#define apsIdle() (apsState == APS_STATE_IDLE)
#define apsBusy() (apsState != APS_STATE_IDLE)

#define apsDoService() \
   a_aps_service.status = LRWPAN_STATUS_APS_INPROGRESS;\
   apsState = APS_STATE_COMMAND_START;\
   apsFSM();

#define APS_DSTMODE_NONE          0
#define APS_DSTMODE_SHORT         1
#define APS_DSTMODE_LONG          2


void aplFmtSendMSG (BYTE dstMode,
				 LADDR_UNION *dstADDR,
				 BYTE dstEP,
				 BYTE cluster,
				 BYTE srcEP,
				 BYTE* pload,
				 BYTE  plen,
				 BYTE  tsn,
				 BYTE  reqack);

#define aplSendMSG(dstMode, dstADDR, dstEP, cluster,srcEP,pload, plen, tsn, reqack)\
	aplFmtSendMSG(dstMode, dstADDR, dstEP, cluster,srcEP,pload, plen, tsn, reqack);\
	apsDoService();

#define aplSendEndDeviceAnnounce(saddr)\
      while(apsBusy()) apsFSM();\
      a_aps_service.cmd = LRWPAN_SVC_APS_DO_ZEP_TX;\
	  a_aps_service.args.zep_tx.clusterID = ZEP_END_DEVICE_ANNOUNCE;\
	  a_aps_service.args.zep_tx.dst = saddr;\
      apsDoService();

#define aplSendNodeInfo(saddr)\
      while(apsBusy()) apsFSM();\
      a_aps_service.cmd = LRWPAN_SVC_APS_DO_ZEP_TX;\
      a_aps_service.args.zep_tx.clusterID = ZEP_EXTENDED_CMD;\
	  a_aps_service.args.zep_tx.extID = ZEP_EXT_NODE_INFO_RSP;\
	  a_aps_service.args.zep_tx.dst = saddr;\
      apsDoService();


#define aplSendAlarm(saddr,mde)\
      while(apsBusy()) apsFSM();\
      a_aps_service.cmd = LRWPAN_SVC_APS_DO_ZEP_TX;\
      a_aps_service.args.zep_tx.clusterID = ZEP_EXTENDED_CMD;\
	  a_aps_service.args.zep_tx.extID = ZEP_EXT_SEND_ALARM;\
	  a_aps_service.args.zep_tx.dst = saddr;\
	  a_aps_service.args.zep_tx.ext.alarm.mode = mde;\
      apsDoService();


#define aplPingParent()\
      while(apsBusy()) apsFSM();\
      a_aps_service.cmd = LRWPAN_SVC_APS_DO_ZEP_TX;\
      a_aps_service.args.zep_tx.clusterID = ZEP_EXTENDED_CMD;\
	  a_aps_service.args.zep_tx.extID = ZEP_EXT_PING;\
	  a_aps_service.args.zep_tx.dst = mac_pib.macCoordShortAddress;\
	  apsDoService();

#define aplPingNode(saddr)\
      while(apsBusy()) apsFSM();\
      a_aps_service.cmd = LRWPAN_SVC_APS_DO_ZEP_TX;\
      a_aps_service.args.zep_tx.clusterID = ZEP_EXTENDED_CMD;\
	  a_aps_service.args.zep_tx.extID = ZEP_EXT_PING;\
	  a_aps_service.args.zep_tx.dst = saddr;\
	  apsDoService();



#ifdef LRWPAN_COORDINATOR
//only the coordinator can form a network
//example of a passthru from APS to NETWORK
#define aplFormNetwork()\
    while(apsBusy()) apsFSM();\
	a_aps_service.cmd = LRWPAN_SVC_APS_NWK_PASSTHRU;\
	a_nwk_service.cmd = LRWPAN_SVC_NWK_FORM_NETWORK;\
	a_nwk_service.args.form_network.ScanChannels = LRWPAN_DEFAULT_CHANNEL_MASK;\
	a_nwk_service.args.form_network.ScanDuration = LRWPAN_DEFAULT_CHANNEL_SCAN_DURATION;\
	a_nwk_service.args.form_network.PANid = LRWPAN_DEFAULT_PANID;\
	apsDoService();

#else
//router, RFDs can join a formed network
#define aplJoinNetwork()\
    while(apsBusy()) apsFSM();\
	a_aps_service.cmd = LRWPAN_SVC_APS_NWK_PASSTHRU;\
	a_nwk_service.cmd = LRWPAN_SVC_NWK_JOIN_NETWORK;\
	a_nwk_service.args.join_network.ScanChannels = LRWPAN_DEFAULT_CHANNEL_MASK;\
	a_nwk_service.args.join_network.ScanDuration = LRWPAN_DEFAULT_CHANNEL_SCAN_DURATION;\
	a_nwk_service.args.join_network.PANid = LRWPAN_DEFAULT_PANID;\
	a_nwk_service.args.join_network.RejoinNetwork = FALSE;\
	apsDoService();

#define aplRejoinNetwork()\
    while(apsBusy()) apsFSM();\
	a_aps_service.cmd = LRWPAN_SVC_APS_NWK_PASSTHRU;\
	a_nwk_service.cmd = LRWPAN_SVC_NWK_JOIN_NETWORK;\
	a_nwk_service.args.join_network.ScanChannels = LRWPAN_DEFAULT_CHANNEL_MASK;\
	a_nwk_service.args.join_network.ScanDuration = LRWPAN_DEFAULT_CHANNEL_SCAN_DURATION;\
	a_nwk_service.args.join_network.PANid = LRWPAN_DEFAULT_PANID;\
	a_nwk_service.args.join_network.RejoinNetwork = TRUE;\
	apsDoService();


#endif



UINT32 aplMacTicksToUs(UINT32 ticks);   //utility function

#define aplInit()               apsInit()
#define apsGenTSN()             (aps_pib.apsTSN++)

#define aplGetRxDstEp()         (a_aps_rx_data.dstEP)
#define aplGetRxCluster()       (a_aps_rx_data.cluster)
#define aplGetRxSrcEp()         (a_aps_rx_data.srcEP)
#define aplGetRxSrcSADDR()      (a_aps_rx_data.srcSADDR)
#define aplGetRxMsgLen()        (a_aps_rx_data.usrPlen)
#define aplGetRxMsgData()       (a_aps_rx_data.usrPload)
#define aplGetRxRSSI()          (a_aps_rx_data.orgpkt.rssi)

#define aplGetLastTxTime()     (phy_pib.txStartTime)


#define aplGetStatus()            (a_aps_service.status)
#define aplGetMyShortAddress()    (macGetShortAddr())
#define aplGetParentLongAddress() (&mac_pib.macCoordExtendedAddress)
#define aplGetParentShortAddress() (mac_pib.macCoordShortAddress)

#define aplSetMacMaxFrameRetries(x)  (mac_pib.macMaxAckRetries=x)
#define aplSetApsMaxFrameRetries(x)  (aps_pib.apscMaxFrameRetries=x)

//indicates when the user buffer has been copied and is now free
#define aplIsUsrBufferFree()  (aps_pib.flags.bits.IsUsrBufferFree == 1)


#endif


?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品网站一区| 欧美一区二区三区四区五区| 久久久精品蜜桃| 久久99精品视频| 337p粉嫩大胆噜噜噜噜噜91av| 激情国产一区二区| 久久蜜桃av一区二区天堂 | 久久99国产精品免费网站| 日韩午夜av一区| 国产一区美女在线| 国产精品网曝门| 欧美日韩中文精品| 美脚の诱脚舐め脚责91| 久久久高清一区二区三区| 成人午夜伦理影院| 亚洲图片有声小说| 日韩视频永久免费| 成人小视频在线| 亚洲成人自拍偷拍| 欧美精品一区二区三区一线天视频 | 欧美日韩高清一区| 另类小说色综合网站| 亚洲国产精品高清| 欧美日韩亚洲高清一区二区| 日韩不卡在线观看日韩不卡视频| 精品久久久久一区| 日本高清视频一区二区| 日本欧美一区二区| 中文字幕欧美日本乱码一线二线| 欧美无砖砖区免费| 国产在线一区观看| 亚洲一卡二卡三卡四卡| 久久天天做天天爱综合色| 91视视频在线观看入口直接观看www| 亚洲成人综合视频| 国产精品日韩精品欧美在线| 欧美精选在线播放| 91一区一区三区| 麻豆精品视频在线观看视频| 亚洲私人影院在线观看| 亚洲精品一区二区三区影院| 日本高清无吗v一区| 国产精品一区久久久久| 五月天欧美精品| 国产精品全国免费观看高清| 欧美一区二区免费视频| 色综合色综合色综合色综合色综合 | 中文字幕制服丝袜成人av| 欧美精品 日韩| 91蝌蚪国产九色| 久久国产夜色精品鲁鲁99| 一区二区国产视频| 国产片一区二区| 欧美美女黄视频| 色系网站成人免费| 成人精品视频一区二区三区尤物| 日韩电影在线观看电影| 亚洲最大成人综合| 国产精品乱人伦| 精品国产凹凸成av人网站| 欧美精品免费视频| 一本大道综合伊人精品热热 | www.久久精品| 国产jizzjizz一区二区| 韩国欧美国产一区| 久久国产欧美日韩精品| 蜜桃视频在线一区| 日本午夜一区二区| 蜜桃在线一区二区三区| 日韩av电影免费观看高清完整版在线观看| 亚洲免费伊人电影| 亚洲视频 欧洲视频| 国产精品欧美经典| 亚洲国产精品av| 欧美国产精品劲爆| 国产欧美日韩视频一区二区| 久久精品亚洲精品国产欧美kt∨| 日韩欧美在线网站| 精品少妇一区二区三区免费观看| 91精品国产91久久综合桃花| 欧美人与性动xxxx| 91精品免费在线| 欧美一区二区视频在线观看2020 | 欧美视频日韩视频| 欧美色视频在线| 欧美久久久久久久久| 91精品国模一区二区三区| 91麻豆精品国产自产在线| 日韩视频免费观看高清完整版 | 天天做天天摸天天爽国产一区| 午夜精品久久久久久| 午夜精品久久久久久久99樱桃| 午夜视频一区二区三区| 日本不卡一二三| 九色综合狠狠综合久久| 国产精品一区二区久久不卡| 国产伦精品一区二区三区视频青涩| 国产精品一卡二卡| 91在线视频免费91| 欧美日韩国产高清一区二区| 日韩一区二区免费高清| 久久精品在线观看| 亚洲女性喷水在线观看一区| 亚洲r级在线视频| 免费成人av在线播放| 高清国产午夜精品久久久久久| 欧美一区欧美二区| 日韩欧美高清一区| 久久精品一区二区三区不卡| 亚洲欧美国产毛片在线| 日本午夜一区二区| 成人高清免费观看| 91麻豆精品国产自产在线观看一区| 久久日韩粉嫩一区二区三区| 亚洲欧美另类综合偷拍| 日韩av中文字幕一区二区| 国产成人精品三级麻豆| 在线观看www91| 久久综合久久久久88| 亚洲欧美激情小说另类| 激情综合五月婷婷| 色综合久久六月婷婷中文字幕| 欧美一三区三区四区免费在线看 | 国产精品理伦片| 日韩在线观看一区二区| 成人理论电影网| 日韩欧美一级精品久久| 亚洲免费观看高清在线观看| 国内精品免费在线观看| 欧美最猛性xxxxx直播| 精品国产免费人成在线观看| 一区二区三区四区国产精品| 国产一区久久久| 7777精品伊人久久久大香线蕉经典版下载 | 亚洲综合色视频| 国产激情视频一区二区在线观看 | 精品亚洲免费视频| 在线观看日韩精品| 欧美国产乱子伦| 日本不卡123| 在线看日韩精品电影| 国产欧美日韩三级| 久久国产欧美日韩精品| 在线成人av网站| 亚洲欧美福利一区二区| 成人精品视频网站| 精品成a人在线观看| 免费看欧美美女黄的网站| 色狠狠一区二区三区香蕉| 国产日韩一级二级三级| 久久成人免费日本黄色| 678五月天丁香亚洲综合网| 亚洲女女做受ⅹxx高潮| 成人sese在线| 国产午夜精品久久久久久久| 久久狠狠亚洲综合| 日韩欧美自拍偷拍| 亚洲h在线观看| 欧美亚男人的天堂| 亚洲精品国产一区二区三区四区在线 | 亚洲国产精品国自产拍av| 国产在线视频一区二区三区| 日韩女优视频免费观看| 麻豆精品久久久| 欧美一区二区三区在线电影| 亚洲成av人片| 欧美日韩一区二区三区免费看| 亚洲精品高清在线观看| 91久久精品一区二区三区| 亚洲乱码精品一二三四区日韩在线| 成人h精品动漫一区二区三区| 国产日韩欧美精品在线| 国产1区2区3区精品美女| 国产精品色婷婷久久58| www.综合网.com| 亚洲美女一区二区三区| 91福利社在线观看| 亚洲电影第三页| 91麻豆精品国产无毒不卡在线观看| 视频一区二区三区入口| 日韩欧美精品三级| 国产一二精品视频| 国产拍揄自揄精品视频麻豆| 成人高清伦理免费影院在线观看| 日韩一区日韩二区| 欧美系列亚洲系列| 免费三级欧美电影| 久久久久久99精品| 99精品国产99久久久久久白柏| 伊人开心综合网| 777a∨成人精品桃花网| 国产精品综合一区二区| 国产精品激情偷乱一区二区∴| 色猫猫国产区一区二在线视频| 亚洲成av人片一区二区| 欧美va天堂va视频va在线| www.欧美色图| 日韩中文字幕91| 久久久久久**毛片大全| 色哟哟在线观看一区二区三区|