📄 zigbee.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 + -