⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 test_config.c

📁 CC1000 Rf modem C codes for philips sLpc213X ARM MCU.
💻 C
字号:

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

#include <stdio.h>
///////////////////////////////////////////////////////////////////////
typedef struct routeaddress
{
uint8  relayAddrNum;		//available destination address number
uint16 relayAddr[MAX_ROUTE_ADDRESS_NUM];	//destination address
}ROUTEADDRESS;

///////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////
/*
uint16 testlineAddr[]={	
						   0, 1, 2, 3, 4, 5,       8, 9,
			 			  10,11,12,13,14,15,16,17,18,19,
						  20,21,22,23,24,25,26,27,28,29,
						  30,31,32,33,   35,36,37,38,39,
						  40,41,42,43,44,45
					  };
*/

uint16 testlineAddr[]={ 0,1,2,3,4,5,6,7 };
//  uint16 testlineAddr[]={ 0,7,8,9,10,11 };

///////////////////////////////////////////////////////////////////////
#define testLine_Num	0x0014			//number of line
#define testSourceAddr	0x0100			//the address of GD60
#define RoutingFlag		0x00			//down direction relay package

uint16 testP_SerialNum	=0x0001;		//serial number of package,increase 1 ecah time

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

ROUTEADDRESS upAddr,dnAddr;

///////////////////////////////////////////////////////////////////////					  
void testGetRouteAddr(uint16 node);
void MakeDnRouteFrame(uint16 node);
void MakeUpRouteFrame(uint16 node);
void ConfigRouteTable(void);

///////////////////////////////////////////////////////////////////////	
void ConfigRouteTable(void)
{

#ifdef  INCLUDE_CONFIG_ROUTER

int16 nodeCount;
uint16 i=0;
char dbuffer[100];

		WatchDogClear();		//clr watchdog
		DelayMS_(1000);
		Uart0SendEnter();

	nodeCount=(sizeof(testlineAddr)>>1);
	for(i=0;i<nodeCount;i++){
	
		WatchDogClear();		//clr watchdog
		testGetRouteAddr(i);

////down direction

#ifdef FIX_ENTER_ADDRESS
	    sprintf(dbuffer,"fixed enter address."); Uart0SendString(dbuffer);
#else
	    sprintf(dbuffer,"flowing enter address."); Uart0SendString(dbuffer);
#endif

	    sprintf(dbuffer,"Down direction Router Table Setting, Node No.%d, address=%d",(i+1),testlineAddr[i]); 
	    Uart0SendString(dbuffer);
	    sprintf(dbuffer,"Press any key to confirm.");	Uart0SendString(dbuffer);
    	Uart0SendEnter();	_getchar();

		MakeDnRouteFrame(i);
		RF_SendAddCrc(RFSendByteCounter);
		RF_SendingOver();
		RFtoRXmode();			//release RF channel
	}
		Uart0SendEnter();
		
///////////////////////////////////////////////////////////////////////
		WatchDogClear();		//clr watchdog
		DelayMS_(1000);
		Uart0SendEnter();

	nodeCount=(sizeof(testlineAddr)>>1);
	for(i=0;i<nodeCount;i++){
	
		WatchDogClear();		//clr watchdog
		testGetRouteAddr(i);

////up direction

#ifdef FIX_ENTER_ADDRESS
	    sprintf(dbuffer,"fixed enter address."); Uart0SendString(dbuffer);
#else
	    sprintf(dbuffer,"flowing enter address."); Uart0SendString(dbuffer);
#endif

	    sprintf(dbuffer,"Up direction Router Table Setting, Node No.%d, address=%d",(i+1),testlineAddr[i]); 
	    Uart0SendString(dbuffer);
	    sprintf(dbuffer,"Press any key to confirm.");	Uart0SendString(dbuffer);
		Uart0SendEnter();	_getchar();

		MakeUpRouteFrame(i);
		RF_SendAddCrc(RFSendByteCounter);
		RF_SendingOver();
		RFtoRXmode();		//release RF channel
	}
		Uart0SendEnter();

#endif
}

///////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////
// transmitting the package to be relay
// status: ok
void MakeDnRouteFrame(uint16 node)
{

#ifdef  INCLUDE_CONFIG_ROUTER

uint8 *buff_pt;
uint8 addrcnt;

			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++	=(testLine_Num>>8);		// power line number	(23)
			*buff_pt++	=(uint8)testLine_Num;
			*buff_pt++	=testSourceAddr>>8;		//source address		(45)
			*buff_pt++	=(uint8)testSourceAddr;
			*buff_pt++	=testlineAddr[node]>>8;	//destination address	(67)
			*buff_pt++	=testlineAddr[node];
			*buff_pt++	=testP_SerialNum>>8;		//package serial number	(89)
			*buff_pt++	=testP_SerialNum;
			testP_SerialNum++;
//// route area
			*buff_pt++	=RoutingFlag;			//direction moving package
			*buff_pt++	=0x03;					//byte counter

			*buff_pt++	=0x01;

#ifdef FIX_ENTER_ADDRESS
			*buff_pt++	=testlineAddr[0]>>8;	//router address
			*buff_pt++	=testlineAddr[0];
#else
			*buff_pt++	=testlineAddr[node]>>8;	//destination address	(67)
			*buff_pt++	=testlineAddr[node];
#endif
			RFSendByteCounter+=15;

//// data area
			*buff_pt++= SETUP_ROUTE_TABLE_DN;
			*buff_pt++= (dnAddr.relayAddrNum<<1)+1;
			RFSendByteCounter+=2;
			
			*buff_pt++= dnAddr.relayAddrNum;	
			RFSendByteCounter+=1;
			for(addrcnt=0;addrcnt<dnAddr.relayAddrNum;addrcnt++){
				*buff_pt++= (uint8)(dnAddr.relayAddr[addrcnt]>>8);
				*buff_pt++= (uint8)(dnAddr.relayAddr[addrcnt]);
				RFSendByteCounter+=2;
			}

#endif
}

///////////////////////////////////////////////////////////////////////	
///////////////////////////////////////////////////////////////////////	

void MakeUpRouteFrame(uint16 node)
{

#ifdef  INCLUDE_CONFIG_ROUTER

uint8 *buff_pt;
uint8 addrcnt;

			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++	=testLine_Num>>8;			// power line number	(23)
			*buff_pt++	=(uint8)testLine_Num;
			*buff_pt++	=testSourceAddr>>8;			//source address		(45)
			*buff_pt++	=(uint8)testSourceAddr;
			*buff_pt++	=testlineAddr[node]>>8;		//destination address	(67)
			*buff_pt++	=testlineAddr[node];
			*buff_pt++	=testP_SerialNum>>8;		//package serial number	(89)
			*buff_pt++	=testP_SerialNum;
			testP_SerialNum++;
//// route area
			*buff_pt++	=RoutingFlag;				//direction moving package
			*buff_pt++	=0x03;						//byte counter

			*buff_pt++	=0x01;

#ifdef FIX_ENTER_ADDRESS
			*buff_pt++	=testlineAddr[0]>>8;		//router address
			*buff_pt++	=testlineAddr[0];
#else
			*buff_pt++	=testlineAddr[node]>>8;		//destination address	(67)
			*buff_pt++	=testlineAddr[node];
#endif

			RFSendByteCounter+=15;

//// data area
			*buff_pt++ = SETUP_ROUTE_TABLE_UP;
			*buff_pt++ = (upAddr.relayAddrNum<<1)+1;
			RFSendByteCounter += 2;
			
			*buff_pt++ = upAddr.relayAddrNum;	
			RFSendByteCounter += 1;
			for(addrcnt=0;addrcnt<upAddr.relayAddrNum;addrcnt++){
				*buff_pt++= (uint8)(upAddr.relayAddr[addrcnt]>>8);
				*buff_pt++= (uint8)(upAddr.relayAddr[addrcnt]);
				RFSendByteCounter+=2;
			}

#endif
}

///////////////////////////////////////////////////////////////////////	
// the result in upAddr,dnAddr;
// status:
///////////////////////////////////////////////////////////////////////	
void testGetRouteAddr(uint16 node_pt)
{

#ifdef  INCLUDE_CONFIG_ROUTER

uint16 i;
uint16 nodeNum;

	nodeNum=(sizeof(testlineAddr)>>1);

//// initial the up direction address
	upAddr.relayAddrNum=0;
	for(i=0;i<MAX_ROUTE_ADDRESS_NUM;i++){
		upAddr.relayAddr[i]=0xaa;
	}
	
//// get the up direction addr
	for(i=0;i<MAX_ROUTE_ADDRESS_NUM;i++){

		if((int16)(node_pt-i-1)>=0){
 			upAddr.relayAddr[i]=testlineAddr[node_pt-i-1];
			upAddr.relayAddrNum++;
		}
		else{
			break;
		}
	} 

//// initial the down direction address
	dnAddr.relayAddrNum=0;
	for(i=0;i<MAX_ROUTE_ADDRESS_NUM;i++){
		dnAddr.relayAddr[i]=0xaa;
	}
	
//// get the down direction address
	for(i=0;i<MAX_ROUTE_ADDRESS_NUM;i++){

		if((node_pt+i+1)<nodeNum){
 			dnAddr.relayAddr[i]=testlineAddr[node_pt+i+1];
			dnAddr.relayAddrNum++;
		}
		else{
			break;
		}
	} 

#endif
}

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

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -