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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? rfd_sleep.c

?? //Basic packet sending test at the MAC level, used for internal testing only. //This packet test ha
?? C
字號:
/*
  V0.1 Initial Release   10/July/2006  RBR

*/



/*
This is a two node test, requires a Coordinator
and an RFD. The RFD just sleeps,wakes up,
sending a packet to the Coordinator each wakeup.


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

Coordinator ->  RFD1


Start the coordinator first, then RFD1.

This does not require any Virtual Boards to be running,
everything done through the console.


*/

#include "msstate_lrwpan.h"

UINT16 ping_cnt;
LADDR_UNION dstADDR;
BYTE payload[2];
UINT32 my_timer;


typedef enum _RFD_STATE_ENUM {
	RFD_STATE_JOIN_NETWORK,
	RFD_STATE_JOIN_WAIT,
	RFD_STATE_REJOIN_NETWORK,
	RFD_STATE_REJOIN_WAIT,
	RFD_STATE_NORMAL,
	RFD_STATE_WAIT_FOR_ACK,
	RFD_STATE_SLEEP
}RFD_STATE_ENUM;

RFD_STATE_ENUM rfdState;

void printJoinInfo(void);

void printJoinInfo(void){

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

#define MAX_REJOIN_FAILURES 3
#define PING_DST_SADDR   0x0000  //change to a target in the network to test routing, this is the coordinator.


void main (void){

#ifndef LRWPAN_COORDINATOR
	UINT8 count;
	BOOL aps_ack;
	UINT8 failures;
	UINT32 my_timer;
#endif

	//HalInit, evbInit will have to be called by the user
	halInit();
	evbInit();

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

	EVB_LED1_OFF();
	EVB_LED2_OFF();
	//debug_level = 10;

#ifdef LRWPAN_RFD
	rfdState = RFD_STATE_JOIN_NETWORK;
	while(1) {
		apsFSM();
		switch(rfdState) {
		  case RFD_STATE_JOIN_NETWORK:
			  EVB_LED1_OFF();  //not connected to a network
			  aplJoinNetwork();
			  rfdState = RFD_STATE_JOIN_WAIT;
			  break;
		  case RFD_STATE_JOIN_WAIT:
			  if (apsBusy()) break;
			  if (aplGetStatus() == LRWPAN_STATUS_SUCCESS) {
				  conPrintROMString("Network Join succeeded!\n");
				  printJoinInfo();
				  rfdState = RFD_STATE_NORMAL;
				  ping_cnt = 0;
				  count = 0;
				  aps_ack = FALSE;
				  EVB_LED1_ON();
			  } else
			  {
				  conPrintROMString("Network Join FAILED! ");
				  conPrintROMString("Error: ");
				  conPrintUINT8(aplGetStatus());
				  conPrintROMString(", Waiting, then trying again\n");
				  my_timer= halGetMACTimer();
				  //wait for 2 seconds
				  while ((halMACTimerNowDelta(my_timer))< MSECS_TO_MACTICKS(2*1000));
				  rfdState = RFD_STATE_JOIN_NETWORK;
			  }
			  break;

		  case RFD_STATE_NORMAL:
			  //send to some target in the tree.
			  dstADDR.saddr = PING_DST_SADDR;
			  //send a message, then sleep
			  //increment ping counter
			  ping_cnt++;
			  count++;
			  //every so often, send an APS ack request to ensure that we are
			  //still actually associated with our parent and that the packet
			  //actually reached the coordinator. APS acks require
			  //more waiting time and overhead, so only use them when necessary.
			  //A MAC ack is always requested for a data packet, but this only
			  //ensures that the packet was received by the radio of our parent
			  //(ie, we have the correct short address/panid of the parent).
			  //if the parent has dropped us from its neighbor table for some
			  //reason, then the packet is rejected at at the nwk level.
			  //Also, if we are going through a router(s) to the coordinator,
			  //then the MAC ack is only good for the first hop to our parent.
			  if (count == 4) {
				  conPrintROMString("Requesting APS ack\n");
				  aps_ack = TRUE;
				  count = 0;
			  }else {
				  aps_ack = FALSE;
			  }
			  payload[0] = (BYTE) ping_cnt;
			  payload[1] =  (BYTE) (ping_cnt>>8);

			  //This uses an APS ACK so that know if the message
			  //was delivered. If it fails, then we assume that
			  //we have lost connection, and we issue a join
			  aplSendMSG (APS_DSTMODE_SHORT,
				  &dstADDR,
				  2, //dst EP
				  0, //cluster is ignored for direct message
				  1, //src EP
				  &payload[0],
				  2,  //msg length
				  apsGenTSN(),
				  aps_ack);
			  rfdState = RFD_STATE_WAIT_FOR_ACK;
			  break;
		  case RFD_STATE_WAIT_FOR_ACK:
			  if (apsBusy()) break;
			  if ((aplGetStatus() == LRWPAN_STATUS_SUCCESS) || !aps_ack) {
				  //all is well
				  rfdState = RFD_STATE_SLEEP;
			  } else {
				  //only try a rejoin if the aps_ack failed.
				  //if mac_ack failed, we will keep trying until the aps_ack fails.
				  //we assume that we have been disconnected.
				  //Try rejoining first, then a join.
				  failures = 0;
				  rfdState= RFD_STATE_REJOIN_NETWORK;
			  }
			  break;

		  case RFD_STATE_SLEEP:

			  conPrintROMString("Going to sleep...\n");
			  aplShutdown();  //This does a disable global interrupt!
			  halWaitMs(10);
			  //Going to sleep is platform/application dependent.
			  //the halSleep function is only intended for example purposes
			  //the msecs argument in halSleep may be ignored by the HAL layer
			  //as how sleep is implemented is target dependent.
			  halSleep(4000);
			  conPrintROMString("Woke up!\n");
			  aplWarmstart();
			  ENABLE_GLOBAL_INTERRUPT();
			  rfdState = RFD_STATE_NORMAL;
			  break;
#ifndef LRWPAN_COORDINATOR
		  case RFD_STATE_REJOIN_NETWORK:
			  conPrintROMString("Trying to rejoin network!\n");
			  aplRejoinNetwork();
			  rfdState = RFD_STATE_REJOIN_WAIT;
			  break;

		  case RFD_STATE_REJOIN_WAIT:
			  if (apsBusy()) break;   //if stack is busy, continue
			  if (aplGetStatus() == LRWPAN_STATUS_SUCCESS) {
				  failures = 0;
				  EVB_LED1_ON();
				  conPrintROMString("Network Rejoin succeeded!\n");
				  printJoinInfo();
				  rfdState = RFD_STATE_NORMAL;
			  } else {
				  failures++;
				  if (failures == MAX_REJOIN_FAILURES) {
					  //this starts everything over
					  conPrintROMString("Max Rejoins failed, trying to join.\n");
					  rfdState = RFD_STATE_JOIN_NETWORK;
				  } else {
					  //else, wait to try again
					  conPrintROMString("Network Rejoin FAILED! Waiting, then trying again\n");
					  //most apps probably do not need to wait before retrying rejoin.
					  //this is included just for visibility purposes in reading the output
					  my_timer= halGetMACTimer();
					  //wait for 2 seconds
					  while ((halMACTimerNowDelta(my_timer))< MSECS_TO_MACTICKS(2*1000));
					  rfdState = RFD_STATE_REJOIN_NETWORK;
				  }
			  }
			  break;
#endif
		  default:
			  rfdState = RFD_STATE_JOIN_NETWORK;
		}

	}

#else

	aplFormNetwork();
	while(apsBusy()) {apsFSM();} //wait for finish
	conPrintROMString("Network formed, waiting for RX\n");
	EVB_LED1_ON();
	while(1) {apsFSM();} //coordinator or router just runs the stack

#endif

}


///////User Callbacks///////////////

#ifdef LRWPAN_COORDINATOR

//the coordinator just prints out packets
LRWPAN_STATUS_ENUM usrRxPacketCallback(void) {


	BYTE len, *ptr;

	//just print out this data

	conPrintROMString("User Data Packet Received: \n");
	conPrintROMString("SrcSADDR: ");
	conPrintUINT16(aplGetRxSrcSADDR());
	conPrintROMString(", DstEp: ");
	conPrintUINT8(aplGetRxDstEp());
	conPrintROMString(", Cluster: ");
	conPrintUINT8(aplGetRxCluster());
	conPrintROMString(", MsgLen: ");
	len = aplGetRxMsgLen();
	conPrintUINT8(len);
	conPrintROMString(",RSSI: ");
	conPrintUINT8(aplGetRxRSSI());
	conPCRLF();
	conPrintROMString("PingCnt: ");
	ptr = aplGetRxMsgData();
	ping_cnt = *ptr;
	ptr++;
	ping_cnt += ((UINT16)*ptr)<<8;
	conPrintUINT16(ping_cnt);
	conPCRLF();
        return LRWPAN_STATUS_SUCCESS;
}
#else
//in this test, RFD only sends packets, does not recieve any
LRWPAN_STATUS_ENUM usrRxPacketCallback(void) { return LRWPAN_STATUS_SUCCESS; }
#endif

LRWPAN_STATUS_ENUM usrZepRxCallback(void){ 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){\

return TRUE;

}



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){}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲成人黄色影院| 日韩视频中午一区| 日一区二区三区| 国产精品女主播av| 日韩一级视频免费观看在线| 成人妖精视频yjsp地址| 日产精品久久久久久久性色| 国产精品伦理一区二区| 精品乱码亚洲一区二区不卡| 91丝袜呻吟高潮美腿白嫩在线观看| 奇米一区二区三区av| 亚洲精品v日韩精品| 久久精品无码一区二区三区| 8x8x8国产精品| 一本色道亚洲精品aⅴ| 欧美日韩亚洲综合| 成人av电影在线播放| 国产精品1区2区3区| 午夜精品123| 亚洲欧洲精品一区二区三区不卡| 26uuu亚洲综合色欧美| 欧美午夜理伦三级在线观看| youjizz久久| 国产精品正在播放| 蜜臀99久久精品久久久久久软件| 亚洲精品成人精品456| 国产精品丝袜91| 久久久久久久久久久黄色| 日韩欧美成人午夜| 3d成人动漫网站| 亚洲色图一区二区| 欧美一级高清大全免费观看| 本田岬高潮一区二区三区| 精品视频资源站| 亚洲乱码国产乱码精品精可以看| 精品国产免费人成电影在线观看四季 | 精品国产精品网麻豆系列| 欧美日韩视频在线第一区| 色婷婷一区二区| 一本久久a久久精品亚洲| 不卡视频一二三| 成人av影视在线观看| 国产不卡免费视频| 懂色av一区二区三区免费观看| 国产乱国产乱300精品| 国产在线国偷精品免费看| 国产一区二区免费看| 国产一区二区三区| 丁香五精品蜜臀久久久久99网站| 成人深夜在线观看| www.久久精品| 色欧美88888久久久久久影院| 色婷婷久久久久swag精品| 色欧美日韩亚洲| 欧美性生活一区| 欧美日韩高清一区| 日韩精品在线一区二区| 青青草原综合久久大伊人精品| 亚洲精品乱码久久久久久黑人 | 国产毛片精品一区| 国产精品自在在线| 成人app网站| 91在线免费播放| 在线观看av一区二区| 欧美老女人第四色| 精品国产不卡一区二区三区| 中文成人综合网| 亚洲久草在线视频| 日本在线不卡一区| 国产大陆a不卡| 色婷婷国产精品综合在线观看| 欧美午夜精品一区| 精品国产露脸精彩对白| 国产精品乱人伦| 亚洲主播在线观看| 久色婷婷小香蕉久久| 成人h动漫精品一区二| 欧美系列亚洲系列| 2021国产精品久久精品| 亚洲美腿欧美偷拍| 免费的成人av| 91视频免费观看| 欧美一区二区在线免费观看| 亚洲国产成人一区二区三区| 一区二区不卡在线播放| 免费av成人在线| 国产高清不卡二三区| 色av综合在线| 久久毛片高清国产| 亚洲午夜羞羞片| 日韩午夜av电影| 中文字幕在线观看不卡| 男人的天堂久久精品| 粉嫩av一区二区三区粉嫩| 欧美视频完全免费看| 国产欧美精品区一区二区三区 | 国产精品一品视频| 欧美日韩成人在线一区| 国产精品嫩草影院av蜜臀| 日本视频免费一区| 一本大道久久a久久综合婷婷| 久久综合成人精品亚洲另类欧美| 一区二区三区波多野结衣在线观看| 极品少妇xxxx精品少妇偷拍| 欧美少妇性性性| 国产精品久久久一区麻豆最新章节| 日韩高清中文字幕一区| 91网站最新网址| 国产日韩欧美电影| 蜜桃av一区二区在线观看| 91电影在线观看| 国产欧美一区二区三区鸳鸯浴| 日韩不卡免费视频| 欧美日韩在线一区二区| 亚洲免费观看高清完整版在线观看熊| 黑人巨大精品欧美一区| 欧美一区二区三区四区五区| 亚洲午夜国产一区99re久久| 99天天综合性| 中文字幕av资源一区| 国产一区二区三区观看| 亚洲图片自拍偷拍| 97国产一区二区| 欧美国产欧美亚州国产日韩mv天天看完整| 热久久一区二区| 欧美日韩黄视频| 亚洲国产精品一区二区www在线| 波多野洁衣一区| 中文字幕亚洲一区二区va在线| 国产成人精品免费视频网站| 久久综合久久综合九色| 经典三级视频一区| 欧美精品一区二区三区在线播放| 蜜臀av性久久久久蜜臀av麻豆| 欧美一区国产二区| 老色鬼精品视频在线观看播放| 91精品国产综合久久久久久久 | 久久av中文字幕片| 日韩欧美美女一区二区三区| 日本不卡一区二区三区高清视频| 欧美久久婷婷综合色| 午夜国产精品影院在线观看| 欧美日韩激情一区二区三区| 亚洲第一久久影院| 在线不卡中文字幕播放| 午夜亚洲国产au精品一区二区| 欧美日韩国产一区二区三区地区| 亚洲电影视频在线| 欧美一区二区不卡视频| 久久机这里只有精品| 久久久久久久久久电影| 丰满亚洲少妇av| 亚洲视频一区二区在线| 91国模大尺度私拍在线视频| 亚洲成av人片在线| 日韩亚洲国产中文字幕欧美| 狠狠久久亚洲欧美| 中文成人综合网| 欧美性生活大片视频| 日本午夜精品视频在线观看| 精品国产sm最大网站| 成人精品鲁一区一区二区| 亚洲色图在线播放| 7777精品伊人久久久大香线蕉的| 久久精品二区亚洲w码| 国产精品毛片a∨一区二区三区| 色八戒一区二区三区| 日本v片在线高清不卡在线观看| 精品乱人伦小说| 91香蕉视频mp4| 亚洲成a人片在线观看中文| 日韩精品在线一区| 99国产欧美另类久久久精品| 午夜精品123| 国产片一区二区三区| 在线这里只有精品| 极品少妇一区二区三区精品视频| 亚洲欧洲精品一区二区三区| 91麻豆精品国产无毒不卡在线观看 | 亚洲精品日韩综合观看成人91| 这里只有精品免费| 成人午夜免费电影| 日本一区中文字幕| 国产精品天天摸av网| 欧美人伦禁忌dvd放荡欲情| 国产激情视频一区二区在线观看 | 91女神在线视频| 奇米影视一区二区三区| 国产美女在线精品| 一本色道a无线码一区v| 午夜不卡av在线| 国产午夜精品一区二区三区嫩草 | 亚洲一区二区美女| 久久久久久久久久久久电影| 欧美又粗又大又爽| 国产不卡视频在线播放| 日韩国产高清在线| 亚洲久本草在线中文字幕| 欧美本精品男人aⅴ天堂| 欧美做爰猛烈大尺度电影无法无天|