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

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

?? pcbind_node.c

?? ZIGBEE2006協議棧
?? C
字號:
/*
V0.2 added PC-based binding         21/July/2006
V0.1 Initial Release                10/July/2006

*/



/*
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"
#include "pcbind.h"

//define two endpoints for each node, a light and a switch
#define SWITCH_EP  1
#define LIGHT_EP   2
#define LS_CLUSTER 1

#define PING_TIME  60        //in seconds!!
#define MAX_PING_FAILURES 2


UINT32 my_timer, ping_timer;
BYTE ping_failures, seconds_cnt;


LADDR_UNION dstADDR;


void printJoinInfo(void){

	conPrintROMString("My ShortAddress is: ");
	conPrintUINT16(aplGetMyShortAddress());
	conPCRLF();
	conPrintROMString("Parent LADDR: ");
	conPrintLADDR(aplGetParentLongAddress());
	conPrintROMString(", Parent SADDR: ");
	conPrintUINT16(aplGetParentShortAddress());
	conPCRLF();
}

typedef enum _APP_STATE_ENUM {
	APP_STATE_START_JOIN,
	APP_STATE_WAIT_FOR_JOIN,
	APP_STATE_SEND_ANNOUNCE,
	APP_STATE_ANNOUNCE_WAIT,
	APP_STATE_SEND_INFO,
	APP_STATE_INFO_WAIT,
	APP_STATE_RUN_APP1,
	APP_STATE_RUN_APP2,
	APP_STATE_RUN_APP3,
	APP_STATE_SEND_PING,
    APP_STATE_PING_WAIT,
	APP_STATE_START_REJOIN,
	APP_STATE_WAIT_FOR_REJOIN,
}APP_STATE_ENUM;

APP_STATE_ENUM appState;

#define MAX_REJOIN_FAILURES 3





void main (void){


    UINT8 failures;

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

	my_timer = 0;
	halInit();
	evbInit();

	aplInit();  //init the stack

#ifdef LRWPAN_COORDINATOR
#ifdef LRWPAN_USE_PC_BIND
	pbdInit();   //init the PC binding code
#endif
#endif



	conPrintConfig();
	ENABLE_GLOBAL_INTERRUPT();  //enable interrupts

	EVB_LED1_OFF();
	EVB_LED2_OFF();

	//register the endpoints numbers so that they can be reported
	aplRegisterEndPoint(SWITCH_EP);
	aplRegisterEndPoint(LIGHT_EP);

	appState = APP_STATE_START_JOIN;
	
	//debug_level = 10;

	while (1) {
		apsFSM();

#ifdef LRWPAN_COORDINATOR
#ifdef LRWPAN_USE_PC_BIND
		//the coordinator must also call the PCbinding FSM
		//to check for serial input from the PC client
		pbdFSM();
#endif
#endif

		switch (appState) {

		  case APP_STATE_START_JOIN:
			  EVB_LED1_OFF();
#ifdef LRWPAN_COORDINATOR
			  aplFormNetwork();
#else
			  aplJoinNetwork();
#endif
			  appState = APP_STATE_WAIT_FOR_JOIN;
			  break;
		  case APP_STATE_WAIT_FOR_JOIN:
			  if (apsBusy()) break;   //if stack is busy, continue
			  if (aplGetStatus() == LRWPAN_STATUS_SUCCESS) {
#ifdef LRWPAN_COORDINATOR
				  conPrintROMString("Network formation succeeded!\n");
				  appState = APP_STATE_SEND_INFO;  //coordinator just has to send info
#else
                  conPrintROMString("Network join succeeded! \n");
				  //RFDs, routers have to send announcement for indirect msgs,
				  //and then send the info for the PC client
				  appState = APP_STATE_SEND_ANNOUNCE;
#endif
				  EVB_LED1_ON();  //turn on LED1 indicating network is formed.
				
			  } else {
				  //only reason for this to fail is some sort of hardware failure
#ifdef LRWPAN_COORDINATOR
				  conPrintROMString("Network formation failed, waiting, trying again\n");
#else
                  conPrintROMString("Network join failed, waiting, trying again \n");
#endif
				  my_timer= halGetMACTimer();
				  //wait for 2 seconds				
				  while ((halMACTimerNowDelta(my_timer))< MSECS_TO_MACTICKS(2*1000));
				  appState = APP_STATE_START_JOIN;
			  }
			  break;
		  case APP_STATE_SEND_ANNOUNCE:
			  conPrintROMString("Sending Device Announcement\n");
			  aplSendEndDeviceAnnounce(0);
			  appState = APP_STATE_ANNOUNCE_WAIT;
			  break;

		 case APP_STATE_ANNOUNCE_WAIT:
			  if (apsBusy()) break;   //if stack is busy, continue
			  if (aplGetStatus() == LRWPAN_STATUS_SUCCESS) {
				  conPrintROMString("Announce Succeeded\n");
				  appState = APP_STATE_SEND_INFO;
			  }else {
                  conPrintROMString("Announce failed, waiting, trying again\n");
				  my_timer= halGetMACTimer();
				  //wait for 2 seconds
				  while ((halMACTimerNowDelta(my_timer))< MSECS_TO_MACTICKS(2*1000));
				  appState = APP_STATE_SEND_ANNOUNCE;
			  }

		 case APP_STATE_SEND_INFO:
			  conPrintROMString("Sending Device Information\n");
			  aplSendNodeInfo(0);
			  appState = APP_STATE_INFO_WAIT;
			  break;

          case APP_STATE_INFO_WAIT:
			  if (apsBusy()) break;   //if stack is busy, continue
			  if (aplGetStatus() == LRWPAN_STATUS_SUCCESS) {
				  conPrintROMString("Send Info Succeeded\n");
				  conPrintROMString("Waiting for switch press...\n");
				  ping_timer =  halGetMACTimer();
				  seconds_cnt = 0;
				  ping_failures = 0;
                          failures = 0;
				  appState = APP_STATE_RUN_APP1;
			  }else {
                  conPrintROMString("Send Info failed, waiting, trying again\n");
				  my_timer= halGetMACTimer();
				  //wait for 2 seconds
				  while ((halMACTimerNowDelta(my_timer))< MSECS_TO_MACTICKS(2*1000));
				  appState = APP_STATE_SEND_INFO;
			  }


		  case APP_STATE_RUN_APP1:
			  if (EVB_SW1_PRESSED()) appState = APP_STATE_RUN_APP2;	
#ifndef LRWPAN_COORDINATOR
			  if ((halMACTimerNowDelta(ping_timer))> MSECS_TO_MACTICKS(1000)){
                  seconds_cnt++;
				  if (seconds_cnt ==PING_TIME) {					
                     //send a ping
					  appState = APP_STATE_SEND_PING;
				  } else {
					  ping_timer =  halGetMACTimer();
				  }
			  }
#endif
			  break;
		  case APP_STATE_RUN_APP2:
			  if (EVB_SW1_PRESSED()) break;
			  //switch is now released
			  conPrintROMString("Switch press/release, sending message!\n")
			  aplSendMSG (APS_DSTMODE_NONE,
			                  NULL,
			                  0,
			                  LS_CLUSTER,
			                  SWITCH_EP,
			                  NULL,
			                  0,
			                  apsGenTSN(),
			                  TRUE);  //request an APS ack
              appState = APP_STATE_RUN_APP3;
			  break;			
		  case APP_STATE_RUN_APP3:
			  if (apsBusy()) break;
			  if (aplGetStatus() == LRWPAN_STATUS_SUCCESS)
			  {
				  conPrintROMString("MSG send succeeded!\n");
			  }else
			  {
				  conPrintROMString("MSG send failed!\n");
			  }
			  conPrintROMString("Waiting for switch press...\n");
			  appState = APP_STATE_RUN_APP1;

			  break;

#ifndef LRWPAN_COORDINATOR
		  case APP_STATE_SEND_PING:
			  //send the ping all the way to the coordinator so that
			  //the status is updated in the PC Client application
			  conPrintROMString("Pinging Coordinator...\n")
			  aplPingNode(0);
			  appState = APP_STATE_PING_WAIT;
			  break;

		   case APP_STATE_PING_WAIT:
			   if (apsBusy()) break;   //if stack is busy, continue
			   if (aplGetStatus() == LRWPAN_STATUS_SUCCESS) {
				  ping_failures = 0;
				  seconds_cnt = 0;
				  ping_timer =  halGetMACTimer();
				  appState = APP_STATE_RUN_APP1;
			   }else
			   {
				   ping_failures++;
				   conPrintROMString("Ping Failed!\n");
				   if (ping_failures == MAX_PING_FAILURES) {
					   failures = 0;
					   appState = APP_STATE_START_REJOIN;
				   }else {
					   appState = APP_STATE_SEND_PING;
				   }
			   }
			   break;


		  case APP_STATE_START_REJOIN:
			  EVB_LED1_OFF();
			  conPrintROMString("Trying to rejoin network!\n");
			  aplRejoinNetwork();
			  appState = APP_STATE_WAIT_FOR_REJOIN;
			  break;

		  case APP_STATE_WAIT_FOR_REJOIN:
			  if (apsBusy()) break;   //if stack is busy, continue
			  if (aplGetStatus() == LRWPAN_STATUS_SUCCESS) {
				  failures = 0;
				  EVB_LED1_ON();
				  conPrintROMString("Network Rejoin succeeded!\n");
				  printJoinInfo();
				  ping_timer =  halGetMACTimer();
				  seconds_cnt = 0;
				  ping_failures = 0;
				  appState = APP_STATE_RUN_APP1;
			  } else {
				  failures++;
				  if (failures == MAX_REJOIN_FAILURES) {
					  //this starts everything over
					  conPrintROMString("Max Rejoins failed, trying to join.\n");
					  appState = APP_STATE_START_JOIN;
				  } else {
					  //else, wait to try again
					  conPrintROMString("Network Rejoin FAILED! Waiting, then trying again\n");
					  my_timer= halGetMACTimer();
					  //wait for 2 seconds
					  while ((halMACTimerNowDelta(my_timer))< MSECS_TO_MACTICKS(2*1000));
					  appState = APP_STATE_START_REJOIN;
				  }
			  }
			  break;
#endif

		  default:
			  appState = APP_STATE_START_JOIN;

		}

	}
}





//########## 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){
	
    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) {

	
	//just print out this data

	conPrintROMString("User Data Packet Received: \n");
	//check the endpoint
	if (aplGetRxDstEp() == LIGHT_EP) {
		conPrintROMString("LED1 toggled\n");
		//our "light" has received a packet, lets toggle it
		if (EVB_LED1_STATE())
		{
			 EVB_LED1_OFF();
		} else
		{
			EVB_LED1_ON();
		}
	}
	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);
	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){}


#ifdef LRWPAN_COORDINATOR
#ifdef LRWPAN_USE_PC_BIND
//This callback is a way for you to extend the PC client binding demo
//with your own commands that you send to the coordinator via the serial
//link from the PC. See the documentation for details. If you use this
//callback, then you will be compatiable with future releases.
//See the file pcbind.c for when this callback is invoked.
void usrPbdCallback(UINT16 pktlen, BYTE crc){}
#endif
#endif



?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲丝袜精品丝袜在线| 日韩欧美国产成人一区二区| 国产精品人妖ts系列视频| 国产一区二区不卡老阿姨| 久久婷婷色综合| 国产成人免费视频网站| 中文字幕乱码亚洲精品一区| 91香蕉视频污| 亚洲成人精品在线观看| 欧美一区中文字幕| 国内成人免费视频| 自拍偷在线精品自拍偷无码专区| 91伊人久久大香线蕉| 精品少妇一区二区三区视频免付费| 国产精品国产三级国产有无不卡 | 国产日韩欧美在线一区| 欧美精品日韩综合在线| 免费三级欧美电影| 久久久.com| 91视频你懂的| 日韩精品免费专区| 国产午夜精品一区二区| 91片在线免费观看| 蜜臀av一级做a爰片久久| 国产午夜精品一区二区| 色94色欧美sute亚洲13| 狠狠狠色丁香婷婷综合久久五月| 欧美高清在线一区| 4438亚洲最大| 91在线小视频| 美女视频第一区二区三区免费观看网站| 欧美精品一区二区三区高清aⅴ | 久久成人羞羞网站| 一区视频在线播放| 日韩精品一区二区三区swag| 成人精品gif动图一区| 亚洲成人资源在线| 中文字幕精品三区| 欧美日产国产精品| 成人性生交大合| 蜜臀av性久久久久蜜臀aⅴ流畅| 中文字幕精品在线不卡| 日韩一区二区三区在线观看| caoporm超碰国产精品| 久久激情综合网| 亚洲欧美日本韩国| 国产人伦精品一区二区| 这里只有精品免费| 欧美中文一区二区三区| 国产99久久久久| 免费三级欧美电影| 亚洲成av人影院| 亚洲视频资源在线| 国产欧美精品一区二区色综合| 欧美一区二区三区喷汁尤物| 日本二三区不卡| 成人av资源站| 国产精品一区二区黑丝| 日韩中文字幕区一区有砖一区| 亚洲欧美一区二区三区极速播放| 久久亚洲捆绑美女| 日韩一区二区三区免费看| 欧美影院一区二区三区| 99久久综合国产精品| 国产精品一区二区在线观看不卡| 久久成人综合网| 日本成人在线网站| 偷拍日韩校园综合在线| 一区二区免费看| 亚洲另类一区二区| 亚洲欧美日韩在线播放| 欧美xxx久久| 欧美精品在线观看一区二区| 91国偷自产一区二区使用方法| 成人午夜免费电影| 大白屁股一区二区视频| 国产精品18久久久久久久久| 国产一区二区在线看| 韩国av一区二区三区四区| 毛片av中文字幕一区二区| 日韩精品91亚洲二区在线观看| 日韩精品久久久久久| 亚洲成人av福利| 天天影视色香欲综合网老头| 午夜精品久久久久久久99水蜜桃 | 岛国av在线一区| 成人午夜在线播放| av中文字幕一区| 91麻豆免费观看| 91香蕉视频污在线| 欧美三级电影网站| 欧美精品乱码久久久久久按摩| 欧美日韩国产123区| 欧美亚洲国产怡红院影院| 91成人国产精品| 欧美一区欧美二区| 久久蜜桃香蕉精品一区二区三区| 2022国产精品视频| 国产精品久久久久久久裸模| 亚洲人成精品久久久久| 亚洲成国产人片在线观看| 日韩av中文在线观看| 精品一区二区三区蜜桃| 成人晚上爱看视频| 在线观看精品一区| 欧美一区二区视频在线观看2020| 欧美va亚洲va| 亚洲国产精品二十页| 亚洲主播在线播放| 久久99精品网久久| caoporm超碰国产精品| 欧美在线视频日韩| 日韩久久久久久| 欧美国产97人人爽人人喊| 一区二区三区在线视频观看58| 午夜伊人狠狠久久| 国产毛片精品一区| 色婷婷久久久综合中文字幕| 欧美精品tushy高清| 国产日韩亚洲欧美综合| 亚洲高清视频在线| 国产成人丝袜美腿| 大陆成人av片| 国产精品亚洲一区二区三区在线| 国产suv精品一区二区三区| 91蜜桃婷婷狠狠久久综合9色| 欧美精选在线播放| 国产精品热久久久久夜色精品三区 | 亚洲一线二线三线视频| 精品一区二区免费视频| 91啦中文在线观看| 亚洲精品一区二区三区99| 亚洲麻豆国产自偷在线| 黄色日韩三级电影| 欧美亚洲一区二区在线| 国产三级精品三级在线专区| 亚洲国产精品一区二区www| 国产精华液一区二区三区| 欧美电影一区二区| 亚洲免费毛片网站| 国产一区二区毛片| 欧美高清hd18日本| 亚洲精品一二三四区| 免费看日韩a级影片| 国产麻豆精品theporn| 精品国产成人系列| 亚洲福利视频一区二区| 99re热这里只有精品免费视频 | 884aa四虎影成人精品一区| 国产精品久久久久久久久快鸭 | 91黄色小视频| 最新国产精品久久精品| 国产精品自拍三区| 欧美一二三四在线| 亚洲成人www| 在线观看一区二区精品视频| 国产精品对白交换视频| 国产精品538一区二区在线| 精品少妇一区二区三区在线视频| 亚洲一区二区三区四区不卡| av成人免费在线| 欧美国产精品v| 国产成人精品一区二区三区网站观看| 91精品国模一区二区三区| 亚洲电影一级黄| 在线欧美小视频| 一区二区三区四区乱视频| 99国产精品视频免费观看| 久久久久99精品一区| 国产成人免费在线视频| 国产亚洲欧洲一区高清在线观看| 麻豆高清免费国产一区| 日韩欧美久久久| 久草热8精品视频在线观看| 日韩免费高清电影| 国内精品伊人久久久久影院对白| 精品三级在线观看| 国产成人一级电影| 国产精品视频一二三区| 成人性生交大片免费看视频在线| 国产精品丝袜在线| 91视频观看免费| 亚洲最大的成人av| 欧美美女网站色| 欧美a一区二区| 91精品国产欧美一区二区| 极品少妇一区二区三区精品视频 | 欧美天堂一区二区三区| 亚洲国产美国国产综合一区二区| 欧美日韩免费高清一区色橹橹| 亚洲一区二区三区四区在线免费观看 | 亚洲精品亚洲人成人网在线播放| 91黄视频在线观看| 日本不卡一二三区黄网| 久久综合网色—综合色88| 懂色av噜噜一区二区三区av| 亚洲欧洲av另类| 欧美人牲a欧美精品| 激情综合亚洲精品| 国产精品免费观看视频|