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

📄 zigbee.h

📁 stk300 target Zigbee test module code.
💻 H
字号:
/* ========================================================================== */
/*	             zigbee.h : Zigbee header                   		 	      */
/*	                                                           	              */
/*	             Program  : Quantumbase Inc.            	                  */
/*	                                                           	              */
/*	             Hardware : MCU(Atmel ATmega128 - 8MHz, 32.768kHz)            */
/*	                        LED(port : 4, bus : 8)                            */
/*	                        FND(bus : 4, 7-segment + DP)         			  */
/*	                        LCD(bus : 1, 16 x 2 line)                         */
/*	                        Key(port : 4, 2-polling, 2-interrupt)             */
/*	                        SPI EEPROM(port : 4, AT93C46)                     */
/*	                        RS232(port : 2, MAX232A, DB-9 pin)                */
/*	                        ISP(port : 4, DB-25 pin)                          */
/*	                                                                          */
/*	             Software : Simulation, Emulation(Atmel AVR Studio 4.0)       */
/*	                        C/C++ Complier(WINAVR AVR-GCC)                    */
/*	                        ISP(ponyprog2000 : parallel)                      */
/*	                                                                          */
/*	             Version  : 1.000 - 2007/07/02                                */
/*	                                                                          */
/* ========================================================================== */

#include <stdlib.h>
#include <stdint.h>
#include <string.h>

/* --- uart buffer --- */
#define TX_BUF_SIZE		200
#define RX_BUF_SIZE		200

uint8_t rxData[TX_BUF_SIZE];
uint16_t rxDataLength;
uint16_t rxDataIndex;
uint16_t rxTimeout;

uint8_t txData[RX_BUF_SIZE];
uint16_t txDataLength;
uint16_t txDataIndex;

// Uart Buffer Position
#define U_BUF_POS_STX 			0
#define U_BUF_POS_LEN 			1
#define U_BUF_POS_CMD 			2
#define U_BUF_POS_BODY 			3

#define U_BUF_POS_BODY_DSEQ 	11
#define U_BUF_POS_BODY_DATA 	12

#define U_BUF_POS_BODY_CMD 		11
#define U_BUF_POS_BODY_SUB 		12

// Uart Rx Status
int16_t rxStat;

#define RXSTAT_IDLE 			0
#define RXSTAT_STX 				1
#define RXSTAT_LEN 				2
#define RXSTAT_CMD 				3
#define RXSTAT_DATA 			4
#define RXSTAT_CHKSUM 			5
#define RXSTAT_ETX 				6
#define RXSTAT_OK 				7

#define RXSTAT_ERR_FRAME 		-1
#define RXSTAT_ERR_UART 		-2

#define RXSTAT_RESET			-100


// Uart Tx
uint8_t txCmd;
//uint8_t txHostRetry;

/* --- Zigbee --- */
// STX
#define ZI_STX 					0xAA

// ETX
#define ZI_ETX 					0x55

// Command
#define ZI_CMD_NONE 			0x00

#define ZI_CMD_TX_POWER 		0x10
#define ZI_CMD_RF_CHANNEL 		0x11
#define ZI_CMD_GROUP_ID 		0x12
#define ZI_CMD_TARGET_ID 		0x13
#define ZI_CMD_DEVICE_ID 		0x14
#define ZI_CMD_UART_SPEED 		0x15
#define ZI_CMD_RX_MODE 			0x16
#define ZI_CMD_TX_RETRY 		0x17
#define ZI_CMD_GET_STATUS 		0x18
#define ZI_CMD_BUFFER_RESET 	0x19
#define ZI_CMD_SAVE_INFO 		0x1E

#define ZI_CMD_STATUS_ACK 		0x1C
#define ZI_CMD_STATUS_NAK 		0x1D
#define ZI_CMD_COMM_ERR 		0x5B

#define ZI_CMD_DATA 			0xBB

// Zigbee Information
typedef struct _ZigBeeInfo
{
	uint16_t gid;                  // Group ID
    uint16_t tid;                  // Target ID
    uint16_t did;                  // Device ID
    uint16_t rsv;                  // Reserved
    uint8_t rxmode;                 // Rx Mode
    uint8_t txpower;                // Tx Power
    uint8_t rfchannel;              // RF Channel
    uint8_t txretry;                // Tx Retry
    uint8_t bufferstatus;           // Buffer Status
    uint8_t strength;               // Strength
    uint8_t uartspeed;              // UART Speed - Baud Rate
    uint8_t hostretry;
    uint8_t testcount;
} ZigBeeInfo;

ZigBeeInfo zbiData;                      // Zigbee Information
ZigBeeInfo zbiMy;                        // Zigbee My Information

// Zigbee Frame Size
#define ZI_FRM_STX_SIZE 					1

#define ZI_FRM_LENGTH_SIZE 					1

#define ZI_FRM_CMD_SIZE 					1

#define ZI_FRM_DATA_GID_SIZE 				2
#define ZI_FRM_DATA_TID_SIZE 				2
#define ZI_FRM_DATA_DID_SIZE 				2
#define ZI_FRM_DATA_RSV_SIZE 				2

#define ZI_FRM_DATA_RXMOD_SIZE 				1
#define ZI_FRM_DATA_TXPOWER_SIZE 			1
#define ZI_FRM_DATA_RFCHANNEL_SIZE 			1
#define ZI_FRM_DATA_TXRETRY_SIZE 			1
#define ZI_FRM_DATA_BUFSTAT_SIZE 			1

#define ZI_FRM_DATA_DSEQ_SIZE 				1
#define ZI_FRM_DATA_SUBDATA_SIZE 			100

#define ZI_FRM_DATA_SUBCMD_SIZE 			1
#define ZI_FRM_DATA_SUBBODY_SIZE 			1

#define ZI_FRM_DATA_STR_SIZE 				1

#define ZI_FRM_CHKSUM_SIZE 					1

#define ZI_FRM_ETX_SIZE 					1

#define ZI_FRM_HEAD_MAX 					ZI_FRM_STX_SIZE + ZI_FRM_LENGTH_SIZE + ZI_FRM_CMD_SIZE

#define ZI_FRM_DATA_MAX 					ZI_FRM_DATA_GID_SIZE + ZI_FRM_DATA_TID_SIZE \
											+ ZI_FRM_DATA_DID_SIZE + ZI_FRM_DATA_RSV_SIZE + \
											ZI_FRM_DATA_DSEQ_SIZE + ZI_FRM_DATA_SUBDATA_SIZE \
											+ ZI_FRM_DATA_STR_SIZE

#define ZI_FRM_FOOT_MAX 					ZI_FRM_CHKSUM_SIZE + ZI_FRM_ETX_SIZE


// Zigbee Frame - Data Position
#define ZBF_DATA_POS_GID 				0
#define ZBF_DATA_POS_TID 				2
#define ZBF_DATA_POS_DID 				4
#define ZBF_DATA_POS_RSV 				6

#define ZBF_DATA_POS_RXMODE 			8
#define ZBF_DATA_POS_TXPOWER 			9
#define ZBF_DATA_POS_RFCHANNEL 			10
#define ZBF_DATA_POS_TXRETRY 			11
#define ZBF_DATA_POS_BUFSTAT 			12

#define ZBF_DATA_POS_DSEQ 				8
#define ZBF_DATA_POS_SUBDATA 			9

#define ZBF_DATA_POS_SUBCMD 			8
#define ZBF_DATA_POS_SUBBODY 			9

// #define ZBF_DATA_POS_STR 			13


typedef struct _ZigBeeFrame
{
    uint8_t stx;                                    // STX : 0xAA
    uint8_t length;                                 // Length
    uint8_t cmd;                                    // Command
    uint8_t data[128];    								// Data
} ZigBeeFrame;

// ZigBeeFrame zbfTx;                       // Zigbee frame Tx
ZigBeeFrame zbfRx;                       // Zigbee frame Rx

uint8_t zbfCDIndex;         // Length - Command + Data
uint8_t zbfCheckSum;        // CheckSum
uint8_t zbfDCEIndex;        // Data + CheckSum + ETX

uint16_t zbfTid;           // Remote Target ID
uint8_t zbfDataSeq;         // Data Squence

// Zigbee Data
#define ZBD_CMD_LIST_UP 				0x03
#define ZBD_CMD_LIST_DOWN 				0x04
#define ZBD_CMD_LIST_STAT 				0x05

// Zigbee Frame Sub Data Size
#define ZBF_SUBDATA_SIZE_LEN 			1
#define ZBF_SUBDATA_SIZE_CMD 			1
#define ZBF_SUBDATA_SIZE_BODY 			98

// Zigbee Frame - Sub Data Position
#define ZBF_SUBDATA_POS_LEN 			0
#define ZBF_SUBDATA_POS_CMD 			1
#define ZBF_SUBDATA_POS_BODY 			2

/* --- control --- */
#define CTRL_LED_SIZE 					5

uint16_t ledListIndex;


/* --- zigbee information --- */
void zigbee_init(void);		// zigbee init
void MyZigbeeInit(void);
void MyZigbeeLoad(void);
void ZigbeeLoad(void);
void MyZigbeeSet(uint8_t Cmd);

/* --- zigbee data send --- */
int16_t ZigbeeStatusDataSend(uint16_t Tid, uint8_t dataCmd, uint8_t *Body, uint16_t BodyLength);	// Zigbee Data Send - Status
int16_t ZigbeeDataSend(uint16_t Tid, uint8_t *Data, uint16_t DataSize, uint8_t DSeq);	// Zigbee Data Send
int16_t ZigbeeCmdSend(uint8_t Cmd, uint8_t * Data, uint16_t DataSize);	// Zigbee Command Send

/* --- zigbee data receive --- */
void ZigbeeFrameGet(uint8_t rxByte);		// Zigbee Frame Get



⌨️ 快捷键说明

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