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

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

?? wxldemo.c

?? ZigBee協議棧2.0的程序
?? C
字號:
/*
  V0.1 Initial Release   10/July/2006
  *2006/08/16 WXL 2.0
*/



/*
This is a two node test, requires a Coordinator
and an RFD. The coordinator and node simply
ping-pong a packet back and forth, and print
out the RSSI byte.  The RFD waits before
bouncing it back, while the coordinator responds
immediately.

Expects coordinator, and one RFD.
The topology to test should be:

Coordinator ->  RFD1


Start the coordinator first, then
RFD1. If a RFD1 fails to join the network, try
again. The RFD1 will prompt the user to hit
a key to start the ping-pong.

You can connect multiple RFDs if desired.

You can also ping-pong through a router; see
the note in usrJoinVerifyCallback(). The topology
for a router would be:

coord -> router -> RFD1
-> RFD2
-> ..RFDn


This  requires Virtual Boards to be running,
since a switch press is needed to start the pinging.


*/

#include "wx_lrwpan.h"

#ifndef LRWPAN_COORDINATOR
#define PING_DELAY   2  //wait before bouncing back
#else
#define PING_DELAY   0 //coordinator does not wait
#endif

#define RX_PING_TIMEOUT     5    //seconds
//this is assumed to be the long address of our coordinator, in little endian order
//used to test LONG ADDRESSING back to coordinator


UINT16 ping_cnt;
UINT32 my_timer;
UINT32  last_tx_start;
UINT8 LcdPage = 2;

LADDR_UNION dstADDR;

typedef enum _PP_STATE_ENUM {
	PP_STATE_START_RX,
	PP_STATE_WAIT_FOR_RX,
	PP_STATE_SEND,
	PP_STATE_WAIT_FOR_TX
}PP_STATE_ENUM;

PP_STATE_ENUM ppState;
BYTE rxFlag;              //set from within usrRxPacketCallback
BYTE payload[2];
UINT16 numTimeouts;
BOOL first_packet;

void  PingPong(void);

void PingPong (void ) {

	apsFSM();

	switch (ppState) {

			case  PP_STATE_START_RX:
				if (!first_packet) {
					my_timer= halGetMACTimer();
					ppState = PP_STATE_WAIT_FOR_RX;
				}else if (rxFlag) {
					//on first packet, do not start timer, just wait for a packet.
					ppState = PP_STATE_WAIT_FOR_RX;
					first_packet = FALSE;
				}
				break;

			case PP_STATE_WAIT_FOR_RX:
				//rxFlag is set from within usrRxPacketCallback
				if (rxFlag || halMACTimerNowDelta(my_timer) > MSECS_TO_MACTICKS( RX_PING_TIMEOUT *1000 )) {
					if (!rxFlag) numTimeouts++;     //got tired of waiting for a response, send again
					rxFlag = 0; //clear flag
					if (EVB_LED1_STATE()) EVB_LED1_OFF(); else EVB_LED1_ON();
					//start timer
					my_timer= halGetMACTimer();
					ppState = PP_STATE_SEND;

				}
				break;

			case PP_STATE_SEND:
				if ((halMACTimerNowDelta(my_timer))> MSECS_TO_MACTICKS(PING_DELAY*1000)){
			//		MemDump();

					//increment ping counter
					ping_cnt++; //this was value received by this node
					//received packet, ping it back
					//format the packet
					payload[0] = (BYTE) ping_cnt;
					payload[1] =  (BYTE) (ping_cnt>>8);
					ppState = PP_STATE_WAIT_FOR_TX;
					last_tx_start = halGetMACTimer();

					aplSendMSG (APS_DSTMODE_SHORT,
						&dstADDR,
						2, //dst EP
						0, //cluster is ignored for direct message
						1, //src EP
						&payload[0],
						2,  //msg length
						apsGenTSN(),
						FALSE);  //No APS ack requested
					ppState = PP_STATE_WAIT_FOR_TX;
				}
				break;

			case PP_STATE_WAIT_FOR_TX:
				if (apsBusy()) break; //status not ready yet if busy.
				if (aplGetStatus() == LRWPAN_STATUS_SUCCESS) {
					ppState = PP_STATE_START_RX;
					//compute the latency of this TX send operation
					//aplGetLastTxTime gets the time that the LAST tx operation finished.
					//this will be the latency of the TX stack operation only if no mac retries were required
					last_tx_start = aplMacTicksToUs(aplGetLastTxTime() - last_tx_start);
					conPrintROMString("TX Stack latency(us): ");
					conPrintUINT32(last_tx_start);
					conPCRLF();
				}else {
					conPrintROMString("Ping Send failed! Restarting timer to try again\n");
					my_timer= halGetMACTimer();
					ppState = PP_STATE_SEND;
				}
				break;
	}
}



void main (void){


	//this initialization set our SADDR to 0xFFFF,
	//PANID to the default PANID

	//HalInit, evbInit will have to be called by the user

	numTimeouts = 0;
	my_timer = 0;
	first_packet = TRUE;
	halInit();
	evbInit();
        InitLcd();
        TurnOnDisp();
        ClearScreen();

	aplInit();  //init the stack
	conPrintConfig();
	ENABLE_GLOBAL_INTERRUPT();  //enable interrupts


	EVB_LED1_OFF();
	EVB_LED2_OFF();

	ping_cnt = 0;
	rxFlag = 0;
	//debug_level = 10;


#ifdef LRWPAN_COORDINATOR

	aplFormNetwork();
	while(apsBusy()) {apsFSM();} //wait for finish
	conPrintROMString("Network formed, waiting for RX\n");
        Print6(7,3,"Network formed!",1);
	EVB_LED1_ON();
	ppState = PP_STATE_START_RX;
#else
	do {
		aplJoinNetwork();
		while(apsBusy()) {apsFSM();} //wait for finish
		if (aplGetStatus() == LRWPAN_STATUS_SUCCESS) {
			EVB_LED1_ON();
                        ClearScreen();
#ifdef LRWPAN_ROUTER
                        Print8(0,25,"--ROUTER-- ",1);
#endif
#ifdef LRWPAN_RFD
                        Print8(0,45,"--RFD--  ",1);
#endif
			conPrintROMString("Network Join succeeded!\n");
                        Print6(2,3,"Network Join succeed!",1);
                     //   Print6(3,3,"eded!",1);
			conPrintROMString("My ShortAddress is: ");
			conPrintUINT16(aplGetMyShortAddress());
                        Print6(3,3,"My SADDR: ",1);
                        LcdPrintUINT16(aplGetMyShortAddress(),3,63);
			conPCRLF();
			conPrintROMString("Parent LADDR: ")
			conPrintLADDR(aplGetParentLongAddress());
                        Print6(4,3,"Parent LADDR: ",1);
                        LcdPrintLADDR(aplGetParentLongAddress(),4,87);
			conPrintROMString(", Parent SADDR: ");
			conPrintUINT16(aplGetParentShortAddress());
			conPCRLF();
			break;
		}else {
			conPrintROMString("Network Join FAILED! Waiting, then trying again\n");
                        ClearScreen();
#ifdef LRWPAN_ROUTER
                        Print8(0,25,"--ROUTER-- ",1);
#endif
#ifdef LRWPAN_RFD
                        Print8(0,40,"--RFD--  ",1);
#endif
                        halWait(100);
                        Print6(2,3,"Network Join FAILED! ",1);
                        Print6(3,3,"Waiting, then trying",1);
                        Print6(4,3,"again!",1);
			my_timer= halGetMACTimer();
			//wait for 2 seconds
			while ((halMACTimerNowDelta(my_timer))< MSECS_TO_MACTICKS(2*1000));
		}
	} while(1);

#endif

#ifdef LRWPAN_RFD
	//now send packets
	dstADDR.saddr = 0; //RFD sends to the coordinator
	ppState = PP_STATE_SEND;
	conPrintROMString("Hit UP or DOWN switch to start!\n");
        Print6(6,3,"Hit UP or DOWN switch",1);
        Print6(7,3,"to start!",1);
	while (!(EVB_SW1_PRESSED() || EVB_SW2_PRESSED())) {evbPoll();}
#endif

#if (defined(LRWPAN_RFD) || defined(LRWPAN_COORDINATOR))
	//WARNING - this is only for latency testing, max MAC retries is normally
	//set to aMaxFrameRetries (value=3) as defined in mac.h. Setting this to 0 means
	//that there will be no automatic retransmissions of frames if we do not get a MAC ACK back.
	//only do this in your normal code if you want to disable automatic retries
	aplSetMacMaxFrameRetries(0);

	while (1) {
		PingPong();
	}
#endif


#ifdef LRWPAN_ROUTER
	//router does nothing, just routes
	DEBUG_PRINTNEIGHBORS(DBG_INFO);
	conPrintROMString("Router, doing its thing.!\n");
        Print6(7,3,"Router is running!",1);
	while(1) {apsFSM();}
#endif


}

//########## Callbacks ##########

//callback for anytime the Zero Endpoint RX handles a command
//user can use the APS functions to access the arguments
//and take additional action is desired.
//the callback occurs after the ZEP has already taken
//its action.
LRWPAN_STATUS_ENUM  usrZepRxCallback(void){

#ifdef LRWPAN_COORDINATOR
	if (aplGetRxCluster() == ZEP_END_DEVICE_ANNOUNCE) {
		//a new end device has announced itself, print out the
		//the neightbor table and address map
		dbgPrintNeighborTable();
	}
#endif
 return LRWPAN_STATUS_SUCCESS;
}

//callback from APS when packet is received
//user must do something with data as it is freed
//within the stack upon return.

LRWPAN_STATUS_ENUM  usrRxPacketCallback(void) {

	BYTE len, *ptr;
	//just print out this data
        if(LcdPage == 2)
        {
          ClearScreen();
        }
#ifdef LRWPAN_COORDINATOR
  conPrintROMString("Coordinator, ");
  Print8(0,30,"--COORD--       ",1);
#endif
#ifdef LRWPAN_ROUTER
  conPrintROMString("Router, ");
  Print8(0,25,"--ROUTER-- ",1);
#endif
#ifdef LRWPAN_RFD
  conPrintROMString("RFD, ");
  Print8(0,40,"--RFD--  ",1);
#endif
	conPrintROMString("User Data Packet Received: \n");
	conPrintROMString("SrcSADDR: ");
	conPrintUINT16(aplGetRxSrcSADDR());
        Print6(LcdPage,3,"SrcSADDR: ",1);
        LcdPrintUINT16(aplGetRxSrcSADDR(),LcdPage++,63);
	conPrintROMString(", DstEp: ");
	conPrintUINT8(aplGetRxDstEp());
	conPrintROMString(", Cluster: ");
	conPrintUINT8(aplGetRxCluster());
	conPrintROMString(", MsgLen: ");
	len = aplGetRxMsgLen();
	conPrintUINT8(len);
	conPrintROMString(",RSSI: ");
	conPrintUINT8(aplGetRxRSSI());
        Print6(LcdPage,3,"RSSI: ",1);
        LcdPrintUINT8(aplGetRxRSSI(),LcdPage++,39);
	conPCRLF();
	conPrintROMString("PingCnt: ");
	ptr = aplGetRxMsgData();
	ping_cnt = *ptr;
	ptr++;
	ping_cnt += ((UINT16)*ptr)<<8;
	conPrintUINT16(ping_cnt);
        Print6(LcdPage,3,"PingCnt: ",1);
        LcdPrintUINT16(ping_cnt,LcdPage++,57);
        Print6(LcdPage,100," ",1);
//        LcdPage++;
        if(LcdPage >= 8)
        {
          LcdPage = 2;
        }
	conPrintROMString(", RxTimeouts: ");
	conPrintUINT16(numTimeouts);
	rxFlag = 1;//signal that we got a packet
	//use this source address as the next destination address
	dstADDR.saddr = aplGetRxSrcSADDR();
	conPCRLF();
	return LRWPAN_STATUS_SUCCESS;
}

#ifdef LRWPAN_FFD
//Callback to user level to see if OK for this node
//to join - implement Access Control Lists here based
//upon IEEE address if desired
BOOL usrJoinVerifyCallback(LADDR *ptr, BYTE capinfo){\

#if 0      //set this to '1' if you want to test through a router
//only accept routers.
//only let routers join us if we are coord
#ifdef LRWPAN_COORDINATOR
if (LRWPAN_GET_CAPINFO_DEVTYPE(capinfo)) {
	//this is a router, let it join
	conPrintROMString("Accepting router\n");
	return TRUE;
}else {
	conPrintROMString("Rejecting non-router\n");
	return FALSE;
}
#else
return TRUE;
#endif

#else

return TRUE;

#endif

}

BOOL usrJoinNotifyCallback(LADDR *ptr){

	//allow anybody to join

	conPrintROMString("Node joined: ");
	conPrintLADDR(ptr);
        ClearScreen();
#ifdef LRWPAN_COORDINATOR
  conPrintROMString("Coordinator, ");
  Print8(0,30,"--COORD--    ",1);
#endif
#ifdef LRWPAN_ROUTER
  conPrintROMString("Router, ");
  Print8(0,25,"--ROUTER-- ",1);
#endif
#ifdef LRWPAN_RFD
  conPrintROMString("RFD, ");
  Print8(0,40,"--RFD--  ",1);
#endif
        Print6(2,3,"Node joined: ",1);
        LcdPrintLADDR(ptr,2,81);
	conPCRLF();
	DEBUG_PRINTNEIGHBORS(DBG_INFO);
	return TRUE;
}
#endif

//called when the slow timer interrupt occurs
#ifdef LRWPAN_ENABLE_SLOW_TIMER
void usrSlowTimerInt(void ) {}
#endif


//general interrupt callback , when this is called depends on the HAL layer.
void usrIntCallback(void){}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲成人tv网| 日韩经典中文字幕一区| 欧美一个色资源| 欧美人与性动xxxx| 欧美日韩一本到| 色婷婷综合久久久中文字幕| 91精品1区2区| 欧洲激情一区二区| 精品国产91乱码一区二区三区 | 色欲综合视频天天天| 92精品国产成人观看免费 | 免费成人你懂的| 老司机午夜精品| 国产麻豆成人精品| 床上的激情91.| 色婷婷久久久亚洲一区二区三区 | 国产女主播视频一区二区| 国产精品沙发午睡系列990531| 国产精品久久久久aaaa樱花| 综合久久综合久久| 水野朝阳av一区二区三区| 麻豆精品在线观看| 99久久免费精品| 911精品国产一区二区在线| 精品少妇一区二区三区在线视频 | 欧美日韩精品高清| 制服.丝袜.亚洲.中文.综合| 久久久久久久综合日本| 亚洲人快播电影网| 九一九一国产精品| 91视频免费播放| 欧美成人性战久久| 亚洲男女一区二区三区| 蜜臀久久久久久久| 99精品视频一区二区| 777精品伊人久久久久大香线蕉| 国产日韩v精品一区二区| 亚洲精品少妇30p| 国产自产视频一区二区三区| 一本一道波多野结衣一区二区| 在线播放视频一区| 亚洲天堂中文字幕| 精品无人区卡一卡二卡三乱码免费卡| 成人在线综合网| 日韩精品中文字幕一区二区三区 | 久久精品99久久久| 91麻豆swag| 国产女人aaa级久久久级| 日本亚洲视频在线| 色综合久久九月婷婷色综合| 欧美r级电影在线观看| 亚洲一区av在线| 成人av中文字幕| 精品国产乱码久久久久久影片| 亚洲图片欧美视频| 成人av电影免费观看| 精品国产三级电影在线观看| 亚洲不卡av一区二区三区| av不卡一区二区三区| 久久久综合视频| 精品一区二区综合| 日韩免费看的电影| 日韩高清一级片| 欧美日韩国产一区二区三区地区| 亚洲视频 欧洲视频| 成人av动漫网站| 自拍偷拍国产亚洲| av中文字幕亚洲| 亚洲欧洲韩国日本视频| 成人久久18免费网站麻豆| 久久久久国产精品免费免费搜索| 精品一区二区三区在线观看| 日韩欧美的一区| 激情深爱一区二区| 久久久久国色av免费看影院| 狠狠色综合色综合网络| 久久久久高清精品| 成人一区二区在线观看| 国产精品久久久久久亚洲毛片 | 精品99一区二区三区| 美女爽到高潮91| 日韩一区二区免费在线电影| 日产欧产美韩系列久久99| 91精品一区二区三区在线观看| 三级一区在线视频先锋| 欧美日韩一区 二区 三区 久久精品| 亚洲午夜国产一区99re久久| 51精品视频一区二区三区| 日韩不卡在线观看日韩不卡视频| 777午夜精品视频在线播放| 开心九九激情九九欧美日韩精美视频电影 | 日韩国产成人精品| 久久综合色婷婷| 成人av手机在线观看| 亚洲精品伦理在线| 欧美日韩一区二区三区视频| 麻豆免费精品视频| 国产精品色在线| 欧美日韩国产影片| 国产一二三精品| 亚洲视频在线观看一区| 欧美剧情片在线观看| 国产一区二区三区免费播放| 中文字幕在线观看不卡视频| 欧美日韩国产中文| 国产成a人亚洲精| 亚洲一线二线三线久久久| 91麻豆精品久久久久蜜臀| 国产精品自在欧美一区| 一级精品视频在线观看宜春院| 91精品国产色综合久久不卡蜜臀| 国产精品18久久久久久vr| 亚洲国产综合91精品麻豆| 久久亚洲捆绑美女| 欧美在线视频全部完| 国产麻豆欧美日韩一区| 亚洲综合一二三区| 2020国产精品自拍| 欧美视频中文字幕| 成人av综合一区| 精品亚洲欧美一区| 亚洲高清免费观看| 国产精品久久久久久久裸模| 欧美一区二区三区视频在线观看| 99精品黄色片免费大全| 精品一区二区免费| 天天色 色综合| 亚洲女人小视频在线观看| 欧美激情资源网| 精品美女被调教视频大全网站| 欧美性色综合网| 99精品国产99久久久久久白柏| 极品销魂美女一区二区三区| 午夜精品一区二区三区免费视频| 亚洲图片激情小说| 国产精品免费观看视频| 国产日产欧美一区二区三区| 337p日本欧洲亚洲大胆精品| 91精品国产综合久久久久| 欧美系列在线观看| 在线观看成人免费视频| 91在线视频免费91| av在线不卡观看免费观看| 国产精品888| 国产一区二区三区蝌蚪| 国产原创一区二区| 国产在线视频不卡二| 精品夜夜嗨av一区二区三区| 精品一区二区三区在线播放| 日本强好片久久久久久aaa| 爽好久久久欧美精品| 日韩激情中文字幕| 美日韩一区二区| 九九国产精品视频| 国产一区二区三区四区五区入口 | 亚洲国产精品欧美一二99| 一区二区三区欧美久久| 一区二区三区四区中文字幕| 亚洲欧洲一区二区三区| 国产精品情趣视频| 亚洲女人小视频在线观看| 亚洲一区二区三区视频在线播放| 亚洲自拍与偷拍| 三级欧美在线一区| 激情久久五月天| av资源网一区| 欧美中文字幕一二三区视频| 欧美日韩免费观看一区三区| 欧美另类变人与禽xxxxx| 日韩美女一区二区三区四区| 久久久91精品国产一区二区精品| 久久精品无码一区二区三区| 国产精品久久久久永久免费观看| 亚洲四区在线观看| 日本强好片久久久久久aaa| 国产91高潮流白浆在线麻豆 | 免费成人结看片| 国产精品538一区二区在线| 91麻豆国产精品久久| 欧美精三区欧美精三区| 久久伊人蜜桃av一区二区| 国产精品福利一区二区| 午夜精品福利一区二区蜜股av | 91在线观看免费视频| 欧美性生交片4| 国产亚洲一区二区三区四区| 亚洲视频免费在线观看| 蜜桃免费网站一区二区三区| 成人一区二区三区视频在线观看| 精品视频一区二区不卡| 久久久久国产精品厨房| 亚洲国产精品久久久久秋霞影院| 久久99国产乱子伦精品免费| 99麻豆久久久国产精品免费优播| 91麻豆精品国产91久久久久久久久 | 欧美高清视频不卡网| 欧美激情一区二区三区不卡| 亚洲1区2区3区4区| 99久久久久久99| 久久综合网色—综合色88|