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

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

?? ping_pong.c

?? 基于ZIGBEE無線網絡的水表抄表程序 代碼完整
?? C
?? 第 1 頁 / 共 2 頁
字號:
//===================================================================================================================
//名稱:基于ZIGBEE無線網絡的水表抄表程序
//人員:
//時間  2008.07.17
//環境:IAR7.20A, CC2430F128, TI ZIGBEE精簡協議包
//版本:V1.0
//說明:系統由協調器(COORD),路由節點(FFD)構成。所有模塊上的時鐘由電池供電。
//
//      COORD供電由市電變壓后共給,可考慮設計備用電池,當檢測市電掉電后使用備用電池供電,并且
//      比FFD提前1-3分鐘(可設定)喚醒。
//      COORD不主動發送任何呼叫信息到FFD,以免過多占用信道,只是等待FFD輸出信息后回復自身時間。
//      當所有表都完成數據傳遞,發送廣播(精簡協議不支持廣播)關閉所有FFD包括自身.
//
//      FFD到達設定時間后被時鐘外中斷喚醒,喚醒后立即尋找附近網絡,如果不能加入網絡,等待規定時間
//      后重新尋找,建立網絡后將讀取表數據并傳送到COORD,然后等待接收COORD回復的時間,如果在規定時
//      間內沒有接收到時間回復,可以考慮重新發送數據到COORD。接收到時間后,與自身時間比較,如果誤
//      差在允許范圍內,將不進行任何修改,如果超過最大可修改誤差,將被認為數據有誤,不修改時間,
//      只發送錯誤數據到COORD,
//
//      FFD需要設定的數據項:當前時間,周喚醒時間,月喚醒時間,工作狀態時間,PANID,表號,允許時間
//      誤差,允許最大校時時間(防止嚴重的回復延時),允許最大回復時間,入網重復時間。
//
//      COORD需要設定的數據項:當前時間,周喚醒時間,月喚醒時間,提前喚醒時間,工作狀態時間,PANID
//      ,本網絡表數量.
//===================================================================================================================
#include "msstate_lrwpan.h"

#ifdef LRWPAN_COORDINATOR
#define PING_DELAY   0           //協調器不等待立刻發送回復
#endif
#ifdef LRWPAN_ROUTER
#define PING_DELAY   0           //路由器不等待立刻轉發數據
#endif
#ifdef LRWPAN_RFD
#define PING_DELAY   3           //節點等待3秒后循環發送數據
#endif

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;        //接收發送狀態結構體變量
LADDR_UNION      dstADDR;        //目標短地址,這里應為coord
UINT32           my_timer;       //記錄時間變化到各設備要求等待方式時間
//-------------------------------------------------------------------------------------------------------------------
UINT8  now_time[7];             //當前時間
UINT8  week_time[3];            //設定每周報警時間,全0不報警。
UINT8  mon_time;                //設定月報警,非0允許報警。每月上午00時00分00秒。
UINT8  work_time;               //工作狀態時間,單位秒。最大255秒、
UINT8  REC_FLAG;                //接收完成標志,0完成,1忙
//PANIN現為宏定義形式,應改成變量形式。

#ifndef LRWPAN_COORDINATOR
UINT8  rfd_addr_num = 20;       //設定當前網絡應有rfd數目或最大數目。
UINT8  rfd_addr_data_count= 0;  //coord中存儲RFD地址和數據緩沖區的條目數計數值。
UINT8  rfd_first_work_time= 0;  //coord提前喚醒時間,單位秒,最大255秒。

UINT8  rfd_addr_data[20][14];   //coord中存儲的RFD地址和數據緩沖區,數目必須與rfd_addr_num相同。
#else
UINT8  rfd_err_time= 0;         //允許時間誤差
UINT8  rfd_max_err_time= 0;     //最大允許調整時間
UINT8  rfd_max_back_time= 0;    //最大回復時間
UINT8  rfd_join_time= 0;        //加入網絡重復時間
#endif
UINT8  rfd_addr[6]={0x11,0x22,0x33,0x44,0x55,0x66};             //RFD所在表的表地址。
UINT8  rfd_data[8]={0x1a,0x8a,0x9a,0xaa,0xba,0xca,0xda,0xea};   //RFD所在表的表數據。
UINT8  router_data[8];                                          //路由器轉發數據緩沖區。
//===================================================================================================================
void   PingPong(void);

//===================================================================================================================
//函數名稱:主函數
//入口參數:無
//出口參數:無
//備注說明:完成COORD和FFD功能,注意宏聲明范圍!
//===================================================================================================================
void main (void){

	my_timer = 0;                                //發送延時時間計量
        REC_FLAG = 1;                                //接收數據忙狀態

	halInit();                                   //物理層初始化
	evbInit();                                   //硬件初始化
	aplInit();                                   //應用層初始化

	conPrintConfig();                            //發送常規信息到串口,調試用途,可去掉。
	EVB_LED1_OFF();                              //指示燈LED1關
	EVB_LED2_OFF();                              //指示燈LED2關
        //-------------------------------------------------------
        //IO_FUNC_PORT_PIN (0, 1, IO_FUNC_PERIPH);   //P01 peripheral function
        //IO_DIR_PORT_PIN  (0, 1, IO_IN         );   //P01 INPUT
        //IO_IMODE_PORT_PIN(0, 1, IO_IMODE_PUD  );   //P01 PULL_UP_DOWN
        //IO_PUD_PORT      (0,    IO_PULLUP     );   //P01 PULL_UP

        //IEN1  |= 0X20;                             //p0  interrupt enable
        //PICTL |= 0x08;                             //Enable interrupt from P0_1 low
        //PICTL |= 0x01;                             //Falling edge gives interrupt
        //P0IFG  = 0X00;                             //P0  FLAG CLR

        ENABLE_GLOBAL_INTERRUPT();                   //enable interrupts
//-------------------------------------------------------------------------------------------------------------------
#ifdef LRWPAN_COORDINATOR
	aplFormNetwork();                                         //建立網絡
	while(apsBusy()) {apsFSM();}                              //等待建立網絡結束
	conPrintROMString("Network formed, waiting for RX\n");    //建立網絡成功后串口輸出信息
	EVB_LED1_ON();                                            //建立網絡后指示燈亮
	ppState = PP_STATE_START_RX;                              //建立網絡后RF設置為輸入數據狀態
#else
	do {
		aplJoinNetwork();                                 //加入網絡
		while(apsBusy()) {apsFSM();}                      //等待加入網絡
		if (aplGetStatus() == LRWPAN_STATUS_SUCCESS) {    //加入網絡成功后串口輸出父節點相關信息
			EVB_LED1_ON();                            //加入網絡后指示燈亮
			conPrintROMString("Network Join succeeded!\n");
			conPrintROMString("My ShortAddress is: ");
			conPrintUINT16(aplGetMyShortAddress());
			conPCRLF();
			conPrintROMString("Parent LADDR: ")
			conPrintLADDR(aplGetParentLongAddress());
			conPrintROMString(", Parent SADDR: ");
			conPrintUINT16(aplGetParentShortAddress());
			conPCRLF();
			break;
		}else {                                           //加入網絡失敗,串口輸出相關信息,等待2秒后重新加入
			conPrintROMString("Network Join FAILED! Waiting, then trying again\n");
			my_timer= halGetMACTimer();                                          //獲取當前時鐘數
			while ((halMACTimerNowDelta(my_timer))< MSECS_TO_MACTICKS(2*1000));  //等待2秒后從新加入網絡
		}
	} while(1);

#endif
//-------------------------------------------------------------------------------------------------------------------
#ifdef  LRWPAN_COORDINATOR
	aplSetMacMaxFrameRetries(0);
	while (1) {
	  apsFSM();                        //應用層處理函數
	}
#endif
//-------------------------------------------------------------------------------------------------------------------
#ifdef LRWPAN_ROUTER
	//router does nothing, just routes
	DEBUG_PRINTNEIGHBORS(DBG_INFO);
	conPrintROMString("Router, doing its thing!\n");
	while(1) {
          apsFSM();                                              //應用層處理函數

          if(REC_FLAG == 0){
	     ppState = PP_STATE_SEND;                            //設置為發送狀態
             dstADDR.saddr = aplGetParentShortAddress();         //目標地址為父節點地址
             PingPong();                                         //發送數據到目標地址
             if  (EVB_LED1_STATE())   EVB_LED1_OFF();            //指示燈滅
             else                     EVB_LED1_ON();             //指示燈亮
          }
        }
#endif
//-------------------------------------------------------------------------------------------------------------------
#ifdef  LRWPAN_RFD
	aplSetMacMaxFrameRetries(0);                                 //設置構造最大重試數
	while (1) {
                  conPrintROMString("OK_Sleep!");
                  conPCRLF();
                  ENABLE_GLOBAL_INTERRUPT();                         //enable interrupts
                  halSleep( 2000 );
                  conPrintROMString("OK_SleepOUT!");
                  conPCRLF();
                //-------------------------------------------------
	        do {
		    aplJoinNetwork();
		    while(apsBusy()) {apsFSM();}                     //wait for finish
		    if (aplGetStatus() == LRWPAN_STATUS_SUCCESS) {
			EVB_LED1_ON();
			conPrintROMString("Network Join succeeded!\n");
			conPrintROMString("My ShortAddress is: ");
			conPrintUINT16(aplGetMyShortAddress());
			conPCRLF();
			conPrintROMString("Parent LADDR: ")
			conPrintLADDR(aplGetParentLongAddress());
			conPrintROMString(", Parent SADDR: ");
			conPrintUINT16(aplGetParentShortAddress());
			conPCRLF();
                        //-----------------------------------------
	                dstADDR.saddr = aplGetParentShortAddress();                          //RFD sends to the coordinator
	                ppState = PP_STATE_SEND;
                        //-----------------------------------------
			break;
		    }else {
			conPrintROMString("Network Join FAILED! Waiting, then trying again\n");
			my_timer= halGetMACTimer();                                          //獲取當前時鐘數
			while ((halMACTimerNowDelta(my_timer))< MSECS_TO_MACTICKS(2*1000));  //等待2秒后從新加入網絡
		    }
	        } while(1);
                //-------------------------------------------------
                apsFSM();
                PingPong();                                         //發送數據到COORD
                if  (EVB_LED1_STATE())   EVB_LED1_OFF();            //指示燈滅
                else                     EVB_LED1_ON();             //指示燈亮
        }
#endif
}
//================================================================================================
//函數名稱:
//入口參數:無
//出口參數:無
//備注說明:
//########## Callbacks ##########

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美精品一区视频| 国产在线乱码一区二区三区| 欧美区一区二区三区| 国产乱码字幕精品高清av| 中文字幕一区二区三区在线播放 | 亚洲国产一区二区视频| 亚洲精品一区二区在线观看| 色天天综合色天天久久| 久久99最新地址| 亚洲午夜成aⅴ人片| 日本一区二区三区久久久久久久久不 | 丁香婷婷综合五月| 日韩精品一二三| 亚洲三级久久久| 久久亚洲二区三区| 91精品国产aⅴ一区二区| 99久久99久久综合| 国产在线不卡视频| 日韩成人av影视| 一区二区三区不卡视频在线观看| 久久综合给合久久狠狠狠97色69| 欧美精品一卡两卡| 欧美性大战久久久| 91农村精品一区二区在线| 国产在线看一区| 久久黄色级2电影| 亚洲1区2区3区视频| 亚洲精品中文字幕在线观看| 国产夜色精品一区二区av| 日韩视频免费观看高清完整版| 欧美吻胸吃奶大尺度电影| 成人网页在线观看| 国产激情一区二区三区四区| 蜜乳av一区二区三区| 亚洲午夜久久久| 亚洲靠逼com| 亚洲精品成人精品456| 中文成人综合网| 国产丝袜美腿一区二区三区| 久久色中文字幕| 久久欧美中文字幕| 久久久久久电影| 欧美成人精精品一区二区频| 日韩色视频在线观看| 日韩欧美一区二区视频| 777亚洲妇女| 91精品国产高清一区二区三区| 91精品久久久久久久91蜜桃| 欧美久久久一区| 欧美一激情一区二区三区| 91精品国产色综合久久不卡电影| 欧美夫妻性生活| 日韩一区二区在线看| 欧美成人在线直播| 久久综合五月天婷婷伊人| 久久亚洲一区二区三区明星换脸 | 欧美怡红院视频| 色婷婷久久99综合精品jk白丝| 91麻豆免费看片| 欧美日韩成人综合天天影院| 欧美久久久一区| 26uuu精品一区二区三区四区在线| 欧美va亚洲va香蕉在线| 久久久精品日韩欧美| 国产精品视频一二三| 一区二区三区美女| 日韩福利电影在线观看| 国产一区二区伦理片| 暴力调教一区二区三区| 91成人在线免费观看| 3751色影院一区二区三区| 欧美精品一区二区三区在线| 中文字幕高清一区| 一区二区三区中文字幕精品精品| 午夜久久久久久| 国内久久婷婷综合| 91网站在线播放| 91麻豆精品91久久久久同性| 国产性天天综合网| 亚洲综合视频在线观看| 美女爽到高潮91| 91首页免费视频| 欧美丰满美乳xxx高潮www| 国产女同性恋一区二区| 亚洲人吸女人奶水| 午夜日韩在线观看| 高清不卡一区二区在线| 欧美日韩在线播放三区| 久久久久久久久久久久久女国产乱| 亚洲人xxxx| 精品写真视频在线观看| 91麻豆精品视频| 精品国产一区二区三区久久久蜜月 | 欧美成人三级电影在线| 中文字幕亚洲综合久久菠萝蜜| 日韩成人免费看| 99久久综合国产精品| 日韩无一区二区| 亚洲午夜免费电影| 成人黄页毛片网站| 欧美一级久久久| 亚洲影院在线观看| 成人做爰69片免费看网站| 91麻豆精品国产91久久久更新时间| 国产无人区一区二区三区| 日韩精品电影一区亚洲| 色综合网色综合| 久久欧美中文字幕| 免费成人在线播放| 91国模大尺度私拍在线视频| 久久久久久免费| 蜜臀av一区二区三区| 91国内精品野花午夜精品| 国产清纯美女被跳蛋高潮一区二区久久w| 五月婷婷综合激情| 日本精品一区二区三区四区的功能| 久久久久久电影| 久久99国产精品免费网站| 精品视频999| 亚洲综合一二三区| 色综合中文综合网| 国产一区二区三区久久久| 欧美精品在欧美一区二区少妇| 伊人开心综合网| 91美女在线看| 亚洲欧美另类久久久精品| aaa国产一区| 国产精品久线在线观看| 国产成人自拍高清视频在线免费播放| 欧美一二区视频| 蜜桃视频免费观看一区| 欧美一区二区视频网站| 亚洲国产色一区| 欧美在线999| 亚洲午夜精品网| 欧美丝袜丝nylons| 亚洲国产人成综合网站| 欧美性xxxxxx少妇| 亚洲午夜免费电影| 欧美日韩精品一区二区三区蜜桃 | 欧美一区日韩一区| 五月天网站亚洲| 欧美精品在线视频| 久久精品国产澳门| 精品国产一区二区三区四区四| 美女视频第一区二区三区免费观看网站| 欧美精品久久一区| 日本女人一区二区三区| 日韩欧美视频在线| 国产一区二区中文字幕| 久久精品一区四区| 99re这里都是精品| 一区二区三区免费观看| 欧美精品自拍偷拍动漫精品| 天堂av在线一区| 日韩视频中午一区| 国产高清精品久久久久| 国产精品视频yy9299一区| 91亚洲精品久久久蜜桃| 一区二区在线观看免费视频播放 | 国产欧美日韩综合精品一区二区 | 国产.欧美.日韩| 国产精品久久久久aaaa樱花 | 亚洲一二三专区| 欧美一区二区黄色| 精品一区二区三区久久久| 国产欧美一区二区精品久导航 | 国产精品18久久久久久久网站| 国产精品网友自拍| 在线观看日韩一区| 美女视频黄免费的久久| 国产喷白浆一区二区三区| 一本一道久久a久久精品| 午夜精品久久久久久久| 欧美精品一区二区在线播放| av爱爱亚洲一区| 麻豆精品国产传媒mv男同| 国产欧美一区二区精品性| 欧美性xxxxxx少妇| 国产激情视频一区二区三区欧美| 综合在线观看色| 9191国产精品| 成人性生交大合| 三级在线观看一区二区| 欧美国产综合色视频| 日本丶国产丶欧美色综合| 蜜桃av一区二区| 亚洲人成电影网站色mp4| 欧美xingq一区二区| 在线国产电影不卡| 国产精品一二三| 午夜国产不卡在线观看视频| 国产女主播一区| 欧美电视剧在线看免费| 91视频观看免费| 国产一区二区精品久久| 亚洲国产另类精品专区| 欧美激情艳妇裸体舞| 欧美v日韩v国产v| 欧美色综合网站|