📄 nwk.i
字号:
//-------------------------------------------------------------------------------------------------------
// 邻居表 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 + -