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

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

?? task_route.c

?? CC1000 Rf modem C codes for philips sLpc213X ARM MCU.
?? C
字號:

#include "config_GD61.h"
#include "include_GD61.h"

////////////////////////////////////////////////////////////////////////////
extern volatile uint8 t_buf0[TX_BUFFER_LEN];	// UART0 sending buffer
extern volatile uint8 RF_Tx_Buffer[TX_BUFFER_LEN];	// UART0 sending buffer

extern uint16 PowerLine_ID;		//number of line.
extern uint16 Line_Num;			//=0x1111;	//number of line
extern uint16 SourceAddr;		//=0x2222;	//source address
extern uint16 DestinationAddr;	//=0x3333;	//destination address
extern uint16 Pkg_SerialNum;		//=0x4444;	//serial number of package
extern uint16 ModuleAddress;

extern uint8  RoutingFlag;		//function code
extern uint8  ActionValueLen;	//action value corresponding to action code
extern uint8  SendByteCounter;
extern uint8  RFSendByteCounter;
extern uint8  CommandClrCount;


extern volatile uint8  CC1000Mode;
extern volatile uint8  RF_RxSynSemaphore;
extern volatile uint16 RF_TxCounter;
extern volatile uint8  RF_TxBitCounter;

extern volatile uint16 RFt_inp,RFt_outp,RF_TxCounter;
extern volatile uint8  RF_TxBitCounter;					// bit pointer of data_byte in sending
extern volatile uint16 RFr_inp,RFr_outp,RF_RxCounter;

////////////////////////////////////////////////////////////////////////////
extern ROUTETABLE UpRouteTable[MAX_BRANCH_LINE_NUM];
extern ROUTETABLE DnRouteTable[MAX_BRANCH_LINE_NUM];

ROUTEDATA routeData[MAX_BRANCH_LINE_NUM];
ROUTETASK routeTask[MAX_ROUTE_TASK_NUM];

#ifdef RP_RELAY_ERROR
ROUTEDATA relayErrorData[MAX_BRANCH_LINE_NUM];
ROUTETASK relayErrorTask[MAX_ROUTE_TASK_NUM];
#endif

uint8  RoutePkgSerial;
uint8  BranchLineRouting;
uint16 Pkg_SerID_Routing;

////////////////////////////////////////////////////
void ClearUpRouteTable(void);
void ClearDnRouteTable(void);
void MakeRelayPackage(uint8 dirFlag);
void StopRelayBranch(void);
void RelayPkgSending(void);
void RF_RelayPkgSending(void);
void MakeStopRoutingPkg(void);
void MakeRFstopRoutePkg(void);
void KillRelayPackage(void);
void GetRouteData(uint8 *char_pt);
void ClearRouteData(void);				//clear all data in routeData[]
////////////////////////////////////////////////////
// initialize(clear) up_direction route table
// state: ok
void ClearUpRouteTable(void)
{
uint8 i;
uint8 j;
	for(i=0;i<MAX_BRANCH_LINE_NUM;i++){
	
		UpRouteTable[i].vaildAddrItemNum=0x00;
		
		for(j=0;j<MAX_ROUTE_ADDRESS_NUM;j++){
			UpRouteTable[i].Dest_ADDR[j]=0x00;
		}
		
	}
}

////////////////////////////////////////////////////
// initialize(clear) down_direction route table
// state: ok
void ClearDnRouteTable(void)
{
uint8 i;
uint8 j;
	for(i=0;i<MAX_BRANCH_LINE_NUM;i++){

		DnRouteTable[i].vaildAddrItemNum=0x00;

		for(j=0;j<MAX_ROUTE_ADDRESS_NUM;j++){
			DnRouteTable[i].Dest_ADDR[j]=0x00;
		}

	}
}

///////////////////////////////////////////////////
// refer to Task_Relay file
// state:
void MakeRelayPackage(uint8 dirFlag)
{
uint8 branch;
uint8 addinbranch;
uint8 addressCnt;
uint8 index;
uint8 routingflag;

////
	if(dirFlag == REVS_ROUTE_DIR){
		routingflag = RoutingFlag^0x80;	//reverse the package relay direction
	}
	else
	{
		routingflag = RoutingFlag;			//keep the original relay direction
	}

////
	if((routingflag&0x80)==DOWN_DIRECTION_ROUTE){
		Uart0SendString("making package in Dn direction.");
	}
	else{
		Uart0SendString("making package in Up direction.");
	}

//// get the valid address number.
////
	index=0;
	for(branch=0;branch<MAX_BRANCH_LINE_NUM;branch++){

//// get the valid address number.
		if((routingflag&0x80)==DOWN_DIRECTION_ROUTE){
			addressCnt=DnRouteTable[branch].vaildAddrItemNum;
		}
		else{
			addressCnt=UpRouteTable[branch].vaildAddrItemNum;
		}

//// make the task frame.
		for(addinbranch=0;addinbranch<addressCnt;addinbranch++){
////
			routeTask[index].activityFlag 	  = ENABLE_FLAG;	//enable the task
			routeTask[index].waittingResponse = DISABLE_FLAG;

			if(index==0x00){
				routeTask[index].secondTimer = 0;				//the first be sent immediately
			}	
			else{												//set the executing timer
				routeTask[index].secondTimer = TX_INTERVAL_TIME*index + TX_TIME_BIAS;
			}
			
			routeTask[index].branchLineNum = branch;			//mark the subline for stop function.
////
			routeTask[index].line_IDx 		 = PowerLine_ID;			//Line_Num;	//power line number	(23)

			if(dirFlag == REVS_ROUTE_DIR){
				routeTask[index].Source_ADDR = DestinationAddr;		//destination address	(67)
				routeTask[index].Dest_ADDR	 = SourceAddr;			//source address		(45)
			}
			else
			{
				routeTask[index].Source_ADDR = SourceAddr;			//destination address	(67)
				routeTask[index].Dest_ADDR	 = DestinationAddr;		//source address		(45)
			}

			routeTask[index].Pkg_SerialID    = Pkg_SerialNum;			//package serial number	(89)			
////
			RoutePkgSerial++;	RoutePkgSerial = RoutePkgSerial & 0x3f;	//route package serial number
			routingflag = routingflag & (~0x3f);
	
			routeTask[index].routeFlag = routingflag|RoutePkgSerial;

			if((routingflag & 0x80)==DOWN_DIRECTION_ROUTE)
			{
				routeTask[index].nextAddress=DnRouteTable[branch].Dest_ADDR[addinbranch];
			}
			else{	
				routeTask[index].nextAddress=UpRouteTable[branch].Dest_ADDR[addinbranch];
			}
////
			routeTask[index].pt	= routeData[branch].datax;				//&routedatabuff[i][0]
			routeTask[index].charLen = routeData[branch].byteCounter;	//char length 
			index++;													//move to next route task
		}
	}
}

//////////////////////////////////////////////////////////////////////
//fill data into route data buffer
//status:
void GetRouteData(uint8 *char_pt)
{
uint8 charcnt;
uint8 branch_id;
uint8 *pt;

	for(branch_id=0;branch_id<MAX_BRANCH_LINE_NUM;branch_id++){

		pt=char_pt;
		for(charcnt=0;charcnt<(ActionValueLen+2);charcnt++){ 	// 2 represent ActionValueLen and ActionCode
			routeData[branch_id].datax[charcnt] = *pt++;		// copy the relaying data to data buffer 
		}
		
		routeData[branch_id].byteCounter=ActionValueLen+2;		// ActionCode+ActionValueLen+Data(ActionValueLen)  
	}
}

////////////////////////////////////////////////////////////////////
void ClearRouteData(void)		//clear all data in routeData[]
{
uint8 charcnt;
uint8 branch_id;

	for(branch_id=0;branch_id<MAX_BRANCH_LINE_NUM;branch_id++){
	
		for(charcnt=0;charcnt<MAX_RELAY_PKG_LEN;charcnt++){
//			routeData[branch_id].datax[charcnt]=(branch_id+1)*(charcnt+1);	//only for debug
			routeData[branch_id].datax[charcnt]=0x00;
		}
		routeData[branch_id].byteCounter=MAX_RELAY_PKG_LEN;
	}
}

////////////////////////////////////////////////////////////////////
// refer to Task_Relay file
// state:
void KillRelayPackage(void)
{
uint8 index;
	for(index=0;index<MAX_ROUTE_TASK_NUM;index++){
			routeTask[index].activityFlag	  = DISABLE_FLAG;	//disable the task in same branch
			routeTask[index].waittingResponse = DISABLE_FLAG;	//disable the task in same branch
	}
	
	RF_RxSynSemaphore=0;

	RF_TxBitCounter=0;	// bit pointer of data_byte in sending
	RF_TxCounter=0;

	RFt_inp=0;	RFt_outp=0;
	RFr_inp=0;	RFr_outp=0;
}

///////////////////////////////////////
// refer to Task_Relay file
// state:
void StopRelayBranch(void)
{
uint8 index;
uint8 counter;

////
	if(Pkg_SerID_Routing==Pkg_SerialNum){							//check the package serial ID
		for(index=0;index<MAX_ROUTE_TASK_NUM;index++){
			if(BranchLineRouting==routeTask[index].branchLineNum){
				routeTask[index].activityFlag	  = DISABLE_FLAG;	//disable the task in same branch
				routeTask[index].waittingResponse = DISABLE_FLAG;	//disable the task in same branch
			}
		}
////
		counter=1;
		for(index=0;index<MAX_ROUTE_TASK_NUM;index++){
			if(routeTask[index].activityFlag==ENABLE_FLAG){			//adjust the relay time of other branch
				routeTask[index].secondTimer =TX_INTERVAL_TIME*counter;
				counter++;
			}
		}
	}
////	
}

///////////////////////////////////////
// transmitting the package to be relay
// status: ok
void RelayPkgSending(void)
{
uint8 i;
uint8 j;
uint8 *buff_pt;

	for(i=0;i<MAX_ROUTE_TASK_NUM;i++){
		if(( routeTask[i].activityFlag==ENABLE_FLAG)&&(routeTask[i].secondTimer ==0)){
////
			Uart0SendingOver();									//waitting for			(00)
			buff_pt=(uint8*)t_buf0;							//point to transmit buffer

			*buff_pt++	=(uint8)RF_START_FLAG;					//start flag			(01)
			*buff_pt++	=(uint8)RF_START_FLAG;
			*buff_pt++	=(routeTask[i].line_IDx)>>8;		//power line number		(23)
			*buff_pt++	= routeTask[i].line_IDx;
			*buff_pt++	=(routeTask[i].Source_ADDR)>>8;		//source address		(45)
			*buff_pt++	= routeTask[i].Source_ADDR;
			*buff_pt++	=(routeTask[i].Dest_ADDR)>>8;		//destination address	(67)
			*buff_pt++	= routeTask[i].Dest_ADDR;
			*buff_pt++	=(routeTask[i].Pkg_SerialID)>>8;	//package serial number	(89)
			*buff_pt++	= routeTask[i].Pkg_SerialID;

//// route area
			*buff_pt++	=routeTask[i].routeFlag;			//direction moving package
			*buff_pt++	=0x03;								//byte counter

			*buff_pt++	=0x01;								//direction router address
			*buff_pt++	=(routeTask[i].nextAddress)>>8;		//destination address	(67)
			*buff_pt++	= routeTask[i].nextAddress;
			SendByteCounter	=15;

//// action area
			for(j=0;j<routeTask[i].charLen;j++){
				*buff_pt++	= *routeTask[i].pt++;
				SendByteCounter++;
			}

//// relay flag area			
			routeTask[i].activityFlag	  = DISABLE_FLAG;	//disable finished task
			routeTask[i].waittingResponse = ENABLE_FLAG;
			
			BranchLineRouting=routeTask[i].branchLineNum;	//used to stop relay this branch.
			Pkg_SerID_Routing=routeTask[i].Pkg_SerialID;
			
			Uart0SendAddCrc(SendByteCounter);							//sending data in buffer
		}
	}
}

///////////////////////////////////////
// transmitting the package to be relay
// status: ok
void RF_RelayPkgSending(void)
{
uint8 i;
uint8 j;
uint8 *buff_pt;

	for(i=0;i<MAX_ROUTE_TASK_NUM;i++){
		if(( routeTask[i].activityFlag==ENABLE_FLAG)&&(routeTask[i].secondTimer ==0)){
////
			RF_SendingOver();							//waitting for			(00)
			buff_pt = (uint8*)RF_Tx_Buffer;				//point to transmit buffer
			buff_pt = buff_pt+10;			//reserve the synchronization semaphore				
			RFSendByteCounter=0;				//8 bytes(SYN) + 2 CRC

			*buff_pt++	=(uint8)RF_START_FLAG;				//start flag			(01)
			*buff_pt++	=(uint8)RF_START_FLAG;
			*buff_pt++	=(routeTask[i].line_IDx)>>8;		// power line number	(23)
			*buff_pt++	= routeTask[i].line_IDx;
			*buff_pt++	=(routeTask[i].Source_ADDR)>>8;		//source address		(45)
			*buff_pt++	= routeTask[i].Source_ADDR;
			*buff_pt++	=(routeTask[i].Dest_ADDR)>>8;		//destination address	(67)
			*buff_pt++	= routeTask[i].Dest_ADDR;
			*buff_pt++	=(routeTask[i].Pkg_SerialID)>>8;	//package serial number	(89)
			*buff_pt++	= routeTask[i].Pkg_SerialID;

//// route area
			*buff_pt++	=routeTask[i].routeFlag;			//direction moving package
			*buff_pt++	=0x03;								//byte counter

			*buff_pt++	=0x01;								//direction router address
			*buff_pt++	=(routeTask[i].nextAddress)>>8;		//destination address	(67)
			*buff_pt++	= routeTask[i].nextAddress;
			RFSendByteCounter += 15;
	
//// action area
			for(j=0;j<routeTask[i].charLen;j++){
				*buff_pt++	= *routeTask[i].pt++;
				RFSendByteCounter++;
			}

//// relay flag area
			routeTask[i].activityFlag	  = DISABLE_FLAG;	//disable finished task
			routeTask[i].waittingResponse = ENABLE_FLAG;

			BranchLineRouting=routeTask[i].branchLineNum;
			Pkg_SerID_Routing=routeTask[i].Pkg_SerialID;
			
			RF_SendAddCrc(RFSendByteCounter);						//sending data in buffer
		}
	}
}

///////////////////////////////////////
// transmitting the package to be relay
// status: ok
void MakeStopRoutingPkg(void)
{
uint8 *buff_pt;
////
			buff_pt=(uint8*)t_buf0;				//point to transmit buffer
			
			*buff_pt++	=(uint8)RF_START_FLAG;		//start flag			(01)
			*buff_pt++	=(uint8)RF_START_FLAG;
			*buff_pt++	=Line_Num>>8;			// power line number	(23)
			*buff_pt++	=Line_Num;
			*buff_pt++	=SourceAddr>>8;			//source address		(45)
			*buff_pt++	=SourceAddr;
			*buff_pt++	=DestinationAddr>>8;	//destination address	(67)
			*buff_pt++	=DestinationAddr;
			*buff_pt++	=Pkg_SerialNum>>8;		//package serial number	(89)
			*buff_pt++	=Pkg_SerialNum;

//// route area
			*buff_pt++	=RoutingFlag;			//direction moving package
			*buff_pt++	=0x03;					//byte counter

			*buff_pt++	=0x01;					//direction router address
			*buff_pt++	=ModuleAddress>>8;		//destination address	(67)
			*buff_pt++	=ModuleAddress;
			SendByteCounter	=15;

//// data area
			*buff_pt++= RESPONSE_PK;
			*buff_pt++= 2;
			*buff_pt++= Pkg_SerialNum>>8;
			*buff_pt++= Pkg_SerialNum;
			SendByteCounter+=4;
}

///////////////////////////////////////
// transmitting the package to be relay
// status: ok
void MakeRFstopRoutePkg(void)
{
uint8 *buff_pt;

			buff_pt=(uint8*)RF_Tx_Buffer;			//point to transmit buffer
//// 
			buff_pt=buff_pt+10;					//reserve the synchronization semaphore				
			RFSendByteCounter=0;					//8 bytes(SYN) + 2 CRC
//// 
			*buff_pt++	=(uint8)RF_START_FLAG;		//start flag			(01)
			*buff_pt++	=(uint8)RF_START_FLAG;
			*buff_pt++	=Line_Num>>8;			// power line number	(23)
			*buff_pt++	=Line_Num;
			*buff_pt++	=SourceAddr>>8;			//source address		(45)
			*buff_pt++	=SourceAddr;
			*buff_pt++	=DestinationAddr>>8;	//destination address	(67)
			*buff_pt++	=DestinationAddr;
			*buff_pt++	=Pkg_SerialNum>>8;		//package serial number	(89)
			*buff_pt++	=Pkg_SerialNum;

//// route area
			*buff_pt++	=RoutingFlag;			//direction moving package
			*buff_pt++	=0x03;					//byte counter

			*buff_pt++	=0x01;					//direction router address
			*buff_pt++	=ModuleAddress>>8;		//destination address	(67)
			*buff_pt++	=ModuleAddress;
			RFSendByteCounter+=15;

//// data area
			*buff_pt++= RESPONSE_PK;
			*buff_pt++= 2;
			*buff_pt++= Pkg_SerialNum>>8;
			*buff_pt++= Pkg_SerialNum;
			RFSendByteCounter+=4;
}

/***************************************************************************
**                            End Of File
****************************************************************************/

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
偷窥国产亚洲免费视频| 亚洲免费视频成人| 在线不卡欧美精品一区二区三区| 99综合影院在线| 不卡欧美aaaaa| 色综合久久久久| 波多野结衣在线aⅴ中文字幕不卡| 国产一区二区在线看| kk眼镜猥琐国模调教系列一区二区| 奇米综合一区二区三区精品视频| 蜜臀久久99精品久久久久久9| 亚洲成在人线在线播放| 蜜臀av性久久久久蜜臀aⅴ流畅| 久久精品久久精品| 风间由美一区二区av101| 91在线播放网址| 欧美少妇xxx| 精品少妇一区二区三区在线视频| 亚洲精品一区二区三区香蕉| 国产精品视频yy9299一区| 亚洲婷婷综合色高清在线| 亚洲第一电影网| 精品一区二区三区蜜桃| 成人av免费在线观看| 在线免费观看不卡av| 欧美不卡视频一区| **欧美大码日韩| 丝袜亚洲另类欧美| 国产精品一区二区果冻传媒| 日本韩国欧美一区| 精品久久国产97色综合| 亚洲欧美一区二区久久| 日本欧美韩国一区三区| 成人av午夜影院| 91精品国产综合久久蜜臀| 欧美激情资源网| 首页国产欧美日韩丝袜| 99久久精品免费看| 欧美一区二区免费视频| 最新高清无码专区| 国产在线视频一区二区| 色狠狠一区二区三区香蕉| 日韩欧美亚洲一区二区| 伊人婷婷欧美激情| 丰满白嫩尤物一区二区| 日韩欧美一二三四区| 亚洲午夜一区二区| caoporn国产精品| 日韩精品一区二区三区在线播放| 亚洲美腿欧美偷拍| 国产成人在线视频免费播放| 欧美一区二区三区免费| 亚洲自拍偷拍网站| 成人精品小蝌蚪| 精品国产伦理网| 性做久久久久久久久| 成人黄色av网站在线| 精品久久久久av影院| 亚洲一区二区三区视频在线播放| 福利电影一区二区三区| 精品国产露脸精彩对白 | 成人国产一区二区三区精品| **性色生活片久久毛片| 国产在线一区二区综合免费视频| 91精品国产色综合久久不卡电影 | 亚洲精品一区二区三区99| 午夜久久久影院| 欧美影院精品一区| 一区二区国产视频| 91视频com| 亚洲精品国产精品乱码不99| 91在线高清观看| 亚洲精品国产一区二区精华液| 成人av免费网站| 亚洲欧洲韩国日本视频| 91亚洲男人天堂| 中文字幕亚洲不卡| 色哟哟欧美精品| 亚洲美女屁股眼交3| 色婷婷亚洲精品| 亚洲制服丝袜av| 69堂国产成人免费视频| 日本 国产 欧美色综合| 日韩欧美高清在线| 国产一区高清在线| 国产区在线观看成人精品| 国产不卡免费视频| 日韩一区中文字幕| 久久久久综合网| 国产成人亚洲综合色影视| 国产精品你懂的在线欣赏| 波多野结衣精品在线| 亚洲欧美区自拍先锋| 在线观看亚洲一区| 亚洲成人免费电影| 日韩三级中文字幕| 国产91在线观看丝袜| 伊人开心综合网| 欧美一卡二卡在线| 国产成人aaa| 亚洲一二三区视频在线观看| 日韩免费观看2025年上映的电影| 国产传媒一区在线| 亚洲综合在线第一页| 91精品国产美女浴室洗澡无遮挡| 国产精品自产自拍| 玉足女爽爽91| 久久综合九色综合97婷婷| 成人av午夜电影| 秋霞电影网一区二区| 国产精品色哟哟| 欧美一级高清片| 成人午夜激情影院| 日韩精品一级二级 | av不卡免费电影| 午夜精品福利在线| 日韩激情一二三区| 国产精品色哟哟| 欧美精品欧美精品系列| 99久久免费精品高清特色大片| 蜜臀av一区二区| 亚洲专区一二三| 欧美国产精品一区二区| 欧美一级在线观看| 色999日韩国产欧美一区二区| 精品一区二区三区免费观看| 亚洲成a人v欧美综合天堂 | 成人永久aaa| 免费看欧美女人艹b| 亚洲精品久久久蜜桃| 国产亚洲1区2区3区| 91精品免费观看| 在线视频一区二区三区| av在线综合网| 大胆欧美人体老妇| 久久爱www久久做| 首页国产丝袜综合| 自拍偷拍国产精品| 国产精品视频看| 国产日韩欧美亚洲| 亚洲一区二区三区精品在线| 欧美国产欧美综合| 久久久久久久av麻豆果冻| 欧美一区二区性放荡片| 欧美挠脚心视频网站| 欧美视频精品在线| 欧美最猛性xxxxx直播| 一本久久a久久精品亚洲| www.一区二区| 99久久精品免费看| 91视频国产资源| 精品视频1区2区| 亚洲精品老司机| 亚洲欧美一区二区三区国产精品 | 17c精品麻豆一区二区免费| 欧美老肥妇做.爰bbww视频| 欧美日韩成人高清| 欧美男男青年gay1069videost| 99vv1com这只有精品| 91欧美激情一区二区三区成人| 972aa.com艺术欧美| 色综合久久天天| 在线看日本不卡| 欧美日韩你懂得| 欧美一级在线观看| 久久综合色婷婷| 国产精品人成在线观看免费| 日本一区二区三区国色天香| 亚洲欧洲色图综合| 一区二区三区丝袜| 免费一级欧美片在线观看| 国内精品在线播放| 99精品久久99久久久久| 色狠狠av一区二区三区| 91麻豆精品久久久久蜜臀| 欧美电影精品一区二区| 中文字幕va一区二区三区| 亚洲精品第1页| 男男视频亚洲欧美| av午夜精品一区二区三区| 欧美日韩中文字幕一区| 精品美女被调教视频大全网站| 中文字幕乱码日本亚洲一区二区| 亚洲精品videosex极品| 日本成人中文字幕| 懂色av中文一区二区三区| 欧美日韩国产综合视频在线观看| 日韩免费观看高清完整版在线观看| 国产精品美女一区二区三区| 亚洲一级在线观看| 国产成人av一区二区三区在线 | 五月激情丁香一区二区三区| 久久99精品久久久久久动态图| 97久久人人超碰| 欧美一区二区播放| 一区二区在线观看视频| 国模套图日韩精品一区二区| 欧美日韩精品是欧美日韩精品| 久久综合色8888| 日本中文字幕一区|