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

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

?? pcbind_node.c

?? 語言為C語言
?? 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一区二区三区免费野_久草精品视频
91亚洲精品久久久蜜桃| 欧美亚洲国产一卡| 日韩午夜在线播放| 国产日产欧美一区| 亚洲电影第三页| 成人激情小说网站| 久久精品国产99| 成人毛片在线观看| 国产精品久久久久久久久搜平片| 国产不卡在线一区| 亚洲欧美综合色| 日韩欧美国产系列| 欧日韩精品视频| 99久久精品国产一区二区三区| 麻豆精品视频在线观看| 亚洲成人久久影院| 亚洲视频一区二区在线| 精品国产区一区| 欧美日韩激情一区二区三区| av色综合久久天堂av综合| 激情综合亚洲精品| 日本欧美一区二区在线观看| 亚洲综合网站在线观看| 亚洲日穴在线视频| 国产精品伦理在线| 国产欧美综合在线观看第十页 | 亚洲欧美一区二区久久| 久久久久久9999| 日韩欧美综合一区| 制服丝袜日韩国产| 欧美视频一区二区在线观看| 91美女片黄在线| av一区二区不卡| www.色精品| 成人国产精品免费观看动漫| 国产精品66部| 国产成人精品影院| 国产乱码精品1区2区3区| 久久丁香综合五月国产三级网站| 日本sm残虐另类| 日韩电影免费一区| 日韩精品久久久久久| 丝袜亚洲另类欧美综合| 亚洲午夜精品一区二区三区他趣| 一区二区三区丝袜| 亚洲最大成人网4388xx| 亚洲国产视频网站| 香蕉av福利精品导航| 亚洲午夜精品在线| 日韩和欧美一区二区| 免费成人av资源网| 精品亚洲成a人| 国产999精品久久久久久绿帽| 福利一区福利二区| 91丨porny丨户外露出| 91久久精品午夜一区二区| 在线区一区二视频| 欧美高清你懂得| 欧美成人官网二区| 国产欧美一区视频| 美腿丝袜在线亚洲一区| 国产乱色国产精品免费视频| 成人免费福利片| 在线看国产日韩| 正在播放亚洲一区| 久久久久久久久久久久久夜| 国产精品视频在线看| 一区二区三区在线免费观看| 无吗不卡中文字幕| 国产一区在线观看麻豆| av在线不卡电影| 欧美日韩国产区一| 国产亚洲精品aa| 亚洲国产毛片aaaaa无费看| 久久国产精品99精品国产| av电影一区二区| 欧美绝品在线观看成人午夜影视| 国产亚洲女人久久久久毛片| 亚洲最快最全在线视频| 国内精品伊人久久久久影院对白| 成人av网站大全| 69精品人人人人| 国产精品免费丝袜| 日韩和欧美一区二区三区| 国产成人精品一区二| 欧美亚洲动漫精品| 久久午夜羞羞影院免费观看| 一级中文字幕一区二区| 久久国产精品免费| 一本到三区不卡视频| 欧美成人精品二区三区99精品| 亚洲免费av网站| 韩国成人福利片在线播放| 色呦呦一区二区三区| 日韩欧美国产综合| 亚洲三级在线免费| 国产福利一区在线观看| 欧美日韩一区二区三区在线| 国产精品区一区二区三| 麻豆视频观看网址久久| 一本大道久久a久久综合| 精品久久久久久久久久久久久久久| 亚洲色欲色欲www| 国产一区二区三区观看| 6080yy午夜一二三区久久| 亚洲国产精品v| 久国产精品韩国三级视频| 国产欧美精品在线观看| 午夜欧美大尺度福利影院在线看| 成人美女视频在线观看18| 日韩一区二区三区四区五区六区| 亚洲国产一区二区三区| 日韩丝袜情趣美女图片| 欧美精品tushy高清| 欧美成人一区二区| 国产女主播一区| 日韩欧美电影在线| 粉嫩一区二区三区性色av| 亚洲欧美日韩一区二区三区在线观看 | 欧美久久久久中文字幕| 成人精品视频网站| 久久蜜桃av一区二区天堂| 一区二区三区四区不卡视频| 成人av集中营| 欧美日韩一区二区三区四区五区| 亚洲精品欧美激情| 色噜噜狠狠色综合中国| 亚洲乱码中文字幕综合| 色婷婷国产精品| 日韩电影在线观看电影| 在线观看亚洲a| av网站免费线看精品| 国产一区欧美日韩| 亚洲一区二区偷拍精品| 国产亚洲制服色| 色猫猫国产区一区二在线视频| 91天堂素人约啪| 亚洲一区二区三区精品在线| 3d动漫精品啪啪1区2区免费 | 五月天视频一区| 国产不卡在线一区| 一区二区在线免费| 久久久欧美精品sm网站| 成人的网站免费观看| 国内精品久久久久影院薰衣草| 国产精品国产三级国产aⅴ原创| 欧美午夜在线一二页| 捆绑调教一区二区三区| 香蕉成人伊视频在线观看| 日韩视频免费观看高清完整版在线观看| 久久99国产乱子伦精品免费| 中文字幕亚洲视频| 久久日一线二线三线suv| 91老师片黄在线观看| 国产精品自拍网站| 中文字幕在线不卡一区二区三区| 91精品国产91热久久久做人人| 在线看不卡av| 91网上在线视频| 不卡的电影网站| 99精品桃花视频在线观看| 国产精品456露脸| 国产91丝袜在线播放0| 夜夜亚洲天天久久| 亚洲精品视频一区| 综合久久久久久| 国产精品国产三级国产aⅴ中文| 综合激情网...| 日韩1区2区3区| 精品不卡在线视频| 成人毛片视频在线观看| 亚洲国产成人91porn| 日韩你懂的在线播放| 波多野结衣的一区二区三区| 亚洲无线码一区二区三区| 日韩精品专区在线影院观看| 成人va在线观看| 天天影视网天天综合色在线播放| 欧美哺乳videos| 91亚洲精品久久久蜜桃| 日本亚洲免费观看| 中文久久乱码一区二区| 欧美日韩成人综合天天影院| 国产一区二区三区在线观看免费视频 | 亚洲欧洲精品一区二区三区| 欧美久久久久免费| a4yy欧美一区二区三区| 蜜臀久久久久久久| 亚洲日本韩国一区| 久久这里只精品最新地址| 在线观看国产91| 国产精品综合av一区二区国产馆| 亚洲国产成人av| 国产精品美女www爽爽爽| 欧美一区二区三区四区五区| 91免费观看视频| 国产成人精品午夜视频免费| 五月综合激情网| 综合久久久久久久| 久久久久久久免费视频了|