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

📄 nwk.i

📁 ATmega128L+CC2420的单片机源程序
💻 I
📖 第 1 页 / 共 3 页
字号:











//-------------------------------------------------------------------------------------------------------
// 邻居表 struct:
typedef struct {
    unsigned char Avail;
    unsigned char IEEEAddr[8];
    unsigned int ShortAddr;
    unsigned char DeviceType;
    unsigned char Relationship;
} NeighborTable;
//-------------------------------------------------------------------------------------------------------


//-------------------------------------------------------------------------------------------------------
// 地址分配表 struct:
typedef struct {
    unsigned char Avail;
    unsigned int ShortAddr;
} AddrTable;
//-------------------------------------------------------------------------------------------------------




/******************************************************************************************************
 **************************                     函数声明                      **************************
 *******************************************************************************************************/

//-------------------------------------------------------------------------------------------------------
void nwk_CreatNetwork(void);
void nwk_Addr_Assign_Init(void);
unsigned char nwk_Addr_Assign_Check(void);
unsigned char nwk_Addr_Assign_Check_Addr(unsigned int addr); 
unsigned char nwk_NeighborTable_Check(void);
unsigned char nwk_IEEEIsInNeighborTable_Check(unsigned char *ieeeAddr);
unsigned char nwk_DeleteNeighborTable(unsigned int shortAddr);
void nwk_PermitJoinIn(void);
void nwk_JoinInNetwork(void);
//void nwk_JoinInNetwork_ACK(unsigned char addrlistID);
void nwk_JoinInNetwork_ACK(unsigned char flage,unsigned char addrlistID,unsigned char neighbortable_tempID);
void nwk_LeaveNetwork(void);
void nwk_LeaveNetwork_ACK(void); 

void nwk_DriveNoteOut(unsigned int noteId);

void nwk_TxBuffer_Clear(void);
void nwk_RxBuffer_Clear(void);

void nwk_PackData(unsigned char *pPayload, unsigned char length);
void nwk_UnPackData(unsigned char *pPayload, unsigned char length);

void nwk_Send_neighbortable_to_PC(unsigned char ID_temp,unsigned char flag);
//-------------------------------------------------------------------------------------------------------







/*******************************************************************************************************
 *******************************************************************************************************
 ******************     Constants concerned with the Basic RF packet format    *************************
 *******************************************************************************************************
 *******************************************************************************************************/

//-------------------------------------------------------------------------------------------------------
// Packet overhead ((frame control field, sequence number, PAN ID, destination and source) + (footer))
// Note that the length byte itself is not included included in the packet length


// The time it takes for the acknowledgment packet to be received after the data packet has been transmitted

// The length byte

// Frame control field






// Footer
//-------------------------------------------------------------------------------------------------------


//-------------------------------------------------------------------------------------------------------
// The data structure which is used to transmit packets
typedef struct {
    //unsigned int destPanId;
	unsigned int destAddr;
	unsigned char destIEEE[8];
	unsigned char length;
    unsigned char *pPayload;
	unsigned char ackRequest;
} CC2420_TX_INFO;
//-------------------------------------------------------------------------------------------------------

//-------------------------------------------------------------------------------------------------------
// The receive struct:
typedef struct {
    unsigned char seqNumber;
	unsigned int srcAddr;
	unsigned char srcIEEE[8];
	unsigned int srcPanId;
	unsigned char length;
    unsigned char *pPayload;
	unsigned char ackRequest;
	unsigned char rssi;
} CC2420_RX_INFO;
//-------------------------------------------------------------------------------------------------------

//-------------------------------------------------------------------------------------------------------
// The RF settings structure:
typedef struct {
    CC2420_RX_INFO *pRxInfo;
    unsigned char txSeqNumber;
    volatile unsigned char ackReceived;
    unsigned int panId;
    unsigned int myAddr;
    unsigned char myIEEE[8];
    unsigned char receiveOn;
    unsigned char JoinNetworkSuccess; // 只对ENDPOINT型设备有效
} CC2420_SETTINGS;
//-------------------------------------------------------------------------------------------------------




 /******************************************************************************************************
 **************************                     函数声明                      **************************
 *******************************************************************************************************/

//-------------------------------------------------------------------------------------------------------
void CC2420_Init();
unsigned char CC2420_SendPacket(CC2420_TX_INFO *pRTI,unsigned char AddrFormat);

void CC2420_SetChannel(unsigned char channel_temp); 
void CC2420_SetPanId(unsigned int PanId);
void CC2420_SetShortAddress(unsigned int ShortAddress);
unsigned char* CC2420_ReadIEEEAddr(void);
void CC2420_SetIEEEAddr(void);

void CC2420_ReceiveOn(void);
void CC2420_ReceiveOff(void); 


void MAC_Init(void);

void mac_pRxBuffer_Clear(void);
void mac_pTxBuffer_Clear(void);
//-------------------------------------------------------------------------------------------------------





/*******************************************************************************************************
 *******************************************************************************************************
 **************************                   Global macros                   **************************
 *******************************************************************************************************
 *******************************************************************************************************/




/*******************************************************************************************************
 *******************************************************************************************************
 **************************                定义 Mega128L 寄存器位               ************************
 *******************************************************************************************************
 *******************************************************************************************************/

//------------------------------------------------------------------------------------------------------
//SPI--->SPCR 

//SPI--->SPSR

//------------------------------------------------------------------------------------------------------



/*******************************************************************************************************
 *******************************************************************************************************
 **************************                ATmega128L I/O PORTS               **************************
 *******************************************************************************************************
 *******************************************************************************************************/

//------------------------------------------------------------------------------------------------------
// Port B 

// Port D 
//#define UART1_RXD       2 // PD.2 - Input:  UART1 RXD 
//#define UART1_TXD       3 // PD.3 - Output: UART1 TXD 
//#define UART1_CTS       7 // PD.7 - Input:  UART HW handshaking: CTS 

// Port E 


// Enables/disables the SPI interface

//------------------------------------------------------------------------------------------------------



 /******************************************************************************************************
 *******************************************************************************************************
 **************************                 CC2420 PIN ACCESS                 **************************
 *******************************************************************************************************
 *******************************************************************************************************/

//-------------------------------------------------------------------------------------------------------
// Pin status

// CC2420 voltage regulator enable pin

// The CC2420 reset pin  
//-------------------------------------------------------------------------------------------------------




/*******************************************************************************************************
 *******************************************************************************************************
 **************************                   SERIAL PORTS                    **************************
 *******************************************************************************************************
 *******************************************************************************************************/
 
//-------------------------------------------------------------------------------------------------------


//-------------------------------------------------------------------------------------------------------




/*******************************************************************************************************
 *******************************************************************************************************
 **************************               EXTERNAL INTERRUPTS                 **************************
 *******************************************************************************************************
 *******************************************************************************************************/

//-------------------------------------------------------------------------------------------------------
// Rising edge trigger for external interrupt 0 (FIFOP)

// FIFOP on external interrupt 0

// SFD interrupt on timer 1 capture pin
//-------------------------------------------------------------------------------------------------------





 /******************************************************************************************************
 *******************************************************************************************************
 **************************                        LED                        **************************
 *******************************************************************************************************
 *******************************************************************************************************/

//------------------------------------------------------------------------------------------------------
// LED


//------------------------------------------------------------------------------------------------------



 /******************************************************************************************************
 *******************************************************************************************************
 **************************                        KEY                        **************************
 *******************************************************************************************************
 *******************************************************************************************************/

//------------------------------------------------------------------------------------------------------
// KEY
//------------------------------------------------------------------------------------------------------






 /******************************************************************************************************
 **************************                     函数声明                      **************************
 *******************************************************************************************************/

//------------------------------------------------------------------------------------------------------
void PORT_Init(void);
void SPI_Init(void);

void USART0_Init(void);
void USART0_Send_Char(unsigned char data);
void USART0_Send_Str(unsigned char *ptr);
unsigned char USART0_Receive_Char(void);
void USART0_Flush(void);
void USART0_Clear_rx_buffer0(void);  

void Sleep(void);
//------------------------------------------------------------------------------------------------------







// 下面两个要设置成一样大

 
//#define I_Am_What           COORDINATOR
//#define I_Am_What           ROUTER







/******************************************************************************
*******************              Commonly used types        *******************
******************************************************************************/
typedef unsigned char       BOOL;

// Data
typedef unsigned char       BYTE;
typedef unsigned int        WORD;
typedef unsigned long int   DWORD;

// Unsigned numbers
typedef unsigned char       UINT8;
typedef unsigned int        UINT16;
typedef unsigned long int   UINT32;

// Signed numbers
typedef signed char         INT8;
typedef signed int          INT16;
typedef signed long int     INT32;

   
   
   





// CodeVisionAVR C Compiler
// (C) 1998-2005 Pavel Haiduc, HP InfoTech S.R.L.

// Prototypes for string functions



#pragma used+

char *strcat(char *str1,char *str2);
char *strcatf(char *str1,char flash *str2);
char *strchr(char *str,char c);
signed char strcmp(char *str1,char *str2);
signed char strcmpf(char *str1,char flash *str2);
char *strcpy(char *dest,char *src);
char *strcpyf(char *dest,char flash *src);
unsigned char strcspn(char *str,char *set);
unsigned char strcspnf(char *str,char flash *set);
unsigned int strlenf(char flash *str);
char *strncat(char *str1,char *str2,unsigned char n);
char *strncatf(char *str1,char flash *str2,unsigned char n);
signed char strncmp(char *str1,char *str2,unsigned char n);
signed char strncmpf(char *str1,char flash *str2,unsigned char n);
char *strncpy(char *dest,char *src,unsigned char n);
char *strncpyf(char *dest,char flash *src,unsigned char n);
char *strpbrk(char *str,char *set);
char *strpbrkf(char *str,char flash *set);
signed char strpos(char *str,char c);
char *strrchr(char *str,char c);
char *strrpbrk(char *str,char *set);
char *strrpbrkf(char *str,char flash *set);
signed char strrpos(char *str,char c);
char *strstr(char *str1,char *str2);
char *strstrf(char *str1,char flash *str2);
unsigned char strspn(char *str,char *set);
unsigned char strspnf(char *str,char flash *set);
char *strtok(char *str1,char flash *str2);
 

unsigned int strlen(char *str);
void *memccpy(void *dest,void *src,char c,unsigned n);
void *memchr(void *buf,unsigned char c,unsigned n);
signed char memcmp(void *buf1,void *buf2,unsigned n);
signed char memcmpf(void *buf1,void flash *buf2,unsigned n);
void *memcpy(void *dest,void *src,unsigned n);
void *memcpyf(void *dest,void flash *src,unsigned n);
void *memmove(void *dest,void *src,unsigned n);
void *memset(void *buf,unsigned char c,unsigned n);

#pragma used-
#pragma library string.lib


/* CodeVisionAVR C Compiler
   Prototypes for standard library functions

   (C) 1998-2003 Pavel Haiduc, HP InfoTech S.R.L.
*/




#pragma used+

int atoi(char *str);
long int atol(char *str);
float atof(char *str);
void itoa(int n,char *str);
void ltoa(long int n,char *str);
void ftoa(float n,unsigned char decimals,char *str);
void ftoe(float n,unsigned char decimals,char *str);
void srand(int seed);
int rand(void);
void *malloc(unsigned int size);
void *calloc(unsigned int num, unsigned int size);
void *realloc(void *ptr, unsigned int size); 
void free(void *ptr);

#pragma used-
#pragma library stdlib.lib


// CodeVisionAVR C Compiler
// (C) 1998-2006 Pavel Haiduc, HP InfoTech S.R.L.

// Prototypes for standard I/O functions


// CodeVisionAVR C Compiler
// (C) 1998-2002 Pavel Haiduc, HP InfoTech S.R.L.

// Variable length argument list macros



typedef char *va_list;





#pragma used+

char getchar(void);
void putchar(char c);
void puts(char *str);
void putsf(char flash *str);

char *gets(char *str,unsigned int len);

void printf(char flash *fmtstr,...);
void sprintf(char *str, char flash *fmtstr,...);
void snprintf(char *str, unsigned int size, char flash *fmtstr,...);
void vprintf (char flash * fmtstr, va_list argptr);
void vsprintf (char *str, char flash * fmtstr, va_list argptr);
void vsnprintf (char *str, unsigned int size, char flash * fmtstr, va_list argptr);
signed char scanf(char flash *fmtstr,...);
signed char sscanf(char *str, char flash *fmtstr,...);




                                   

            


#pragma used-

#pragma library stdio.lib




unsigned char nwk_TxBuffer[70];
unsigned char nwk_RxBuffer[70];

NeighborTable   neighbor[20      ];    //邻居表
AddrTable       addrTableList[20      ];   //地址分配表

unsigned char flag_PermitJoinIn=0x00;

//************************** NWK FrameHeader ***************************
unsigned char nwk_FCF;
unsigned char nwk_RequestOrAck;
unsigned char nwk_CmdTypes;
//**********************************************************************

unsigned char nwk_DeviceTypes;

/*******************************************************************************************************
 **************************                  mac.h 中的变量                   **************************

⌨️ 快捷键说明

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