?? holley.h
字號:
// 還有以下工作沒完成:
// 1. neighbor table 的處理, 2006-12-6已完成
// 2. 加密/是否需要
// 3. 壓縮
// 4. 數據凍結
// 5. 集中抄表命令,點抄命令
// 6. 隨機延時, 2006-12-25
// 7. 流控, 2006-12-15已完成
// 8. 時間同步, 2006-12-6已完成
// 9. 隨機延時多長時間較為合適, 2006-12-25
// 10.增加1000索引,讀操作可以獲得 neighbor table 等信息, 2006-12-25
// 11.write_od/read_od時,如果sub_index為0,需要逐一判斷各個參數的可讀可寫性, 2006-12-8完成
// 12.轉發的幀結構中, 數據總長度改為2個字節, 2006-12-25
// 13.電表號的自動搜索, 2006-12-25
// 14.可配置:[1]是電表應用還是終端應用;2006-12-25
// [2]采集器是通過RS485還是RF與電表連接;
// [3]在響應廣播時,是否進行隨機延時;2006-12-25
// [4]隨機延時左移的位數, 2006-12-25
// 15.增加CTS控制, 2006-12-25
// 16.MEMSET, MEMCOPY 時, 注意對長度的判斷, 2006-12-25
#ifndef HOLLEY_H
#define HOLLEY_H
#ifndef TOKEN_INCLUDE
#include "app/sensor/common.h"
#endif
typedef unsigned char BOOL;
/************************************************************************/
/* 原先在 common.h 中定義的宏 */
/************************************************************************/
#define APP_CHANNEL 13
#define APP_PANID 0x01f0
#define APP_POWER 3
// #define APP_POWER (-1)
/************************************************************************/
/* 條件編譯宏定義 */
/************************************************************************/
#define HL_OUTPUT_DEBUG_INFO_VIA_SERIAL
// #define EXCHANGE_INT
/************************************************************************/
/* UART 口接收和發送數據幀的格式為 */
/* ----------------------------------- */
/* | * | L | ... PayLoad ... | S | # | */
/* ----------------------------------- */
/* 其中: */
/* *: 幀頭 */
/* L: 數據長度, 僅是 PayLoad 部分數據的長度 */
/* PayLoad: 數據 */
/* S: 校驗和, 僅是 PayLoad 部分數據之和 */
/* #: 幀尾 */
/* HL_UART_MAX_FRAME_LENGTH : SINK 或終端從串口接收 UART 數據 */
/* 幀最大長度 */
/************************************************************************/
#define HL_UART_FRAME_HEADER 0x2a
#define HL_UART_FRAME_END 0x23
#define HL_UART_MAX_FRAME_LENGTH 80
/************************************************************************/
/* 集中器端一些常量宏定義 */
/* HL_COLLECTOR_BAUD_RATE :集中器端串口波特率 */
/* HL_COLLECTOR_UART_FRAME_GAP :集中器端串口數據幀與數據幀之間 */
/* 的時間間隔, 單位是毫秒 */
/* HL_BIND_TABLE_RELEASE_GAP :綁定表釋放時間,如果在這個時間 */
/* 內沒有接收到數據,則釋放綁定表 */
/* 單位是秒*4. 120 即 30 秒 */
/* HL_BROADCAST_RADIUS :廣播發送半徑 */
/* 0 means EMBER_MAX_HOPS */
/************************************************************************/
#define HL_COLLECTOR_BAUD_RATE BAUD_19200
#define HL_COLLECTOR_UART_FRAME_GAP 30
#define HL_BIND_TABLE_RELEASE_GAP 120
#ifdef HANDSET_APP
#define HL_BROADCAST_RADIUS 1
#else
#define HL_BROADCAST_RADIUS 0
#endif
/************************************************************************/
/* 采集器端一些常量宏定義 */
/* HL_RF_PAYLOAD_LENGTH :在分包發送時,單包數據的長度 */
/* HL_UNICAST_AD_BIND_INDEX :Sensor 端應答廣告時 Unicast */
/* 使用的綁定表索引 */
/* HL_UNICAST_DATA_BIND_INDEX :Sensor 端應答轉發命令時 Unicast */
/* 使用的綁定表索引 */
/* HL_LONG_ADDRESS_IN_FRAME :在帶地址的廣播幀中, 最大帶有長 */
/* 地址的個數 */
/* HL_SHORT_ADDRESS_IN_FRAME :在帶地址的廣播幀中, 最大帶有短 */
/* 地址的個數 */
/************************************************************************/
#define HL_RF_PAYLOAD_LENGTH 50
#define HL_UNICAST_AD_BIND_INDEX 0
#define HL_UNICAST_DATA_BIND_INDEX 1
#define HL_LONG_ADDRESS_IN_FRAME 7
#define HL_SHORT_ADDRESS_IN_FRAME 31
/************************************************************************/
/* 命令字定義 */
/************************************************************************/
#define HL_CMD_GET_OD 0x00
#define HL_CMD_READ_OD 0x01
#define HL_CMD_WRITE_OD 0x02
#define HL_CMD_STATEMENT 0x05
#define HL_CMD_STATEMENT_ACK 0x05
#define HL_CMD_COLLECT_DATA 0x06
#define HL_CMD_TRANSFER_MTR 0x07
#define HL_CMD_FORCE_SEND_AD 0x21
#define HL_CMD_FORCE_RESET 0x22
#define HL_CMD_BUF_STATUS 0x23
#define HL_CMD_RESET_TOKEN 0x24
// #define HL_CMD_STATEMENT_ACK 0x45
#define HL_CMD_TRANSFER_TMNL 0x47
#define HL_CMD_READ_OD_ERR 0x81
#define HL_CMD_WRITE_OD_ERR 0x82
#define HL_CMD_COLLECT_DATA_ERR 0x86
#define HL_CMD_TRANSFER_MTR_ERR 0x87
/************************************************************************/
/* 日期、時間格式定義 */
/************************************************************************/
typedef struct
{
int8u ucDate;
int8u ucHour;
} HL_Short_Time;
typedef struct
{
int8u ucMonth;
int8u ucDate;
int8u ucHour;
int8u ucMinute;
} HL_Mid_Time;
/************************************************************************/
/* 緩沖區大小定義 */
/* HL_SWAM_SIZE 通用緩沖區的大小 */
/* HL_BUFFER_SIZE UART, RF 的接收緩沖區大小 */
/* HL_UART_BUFFER_SIZE 儀表側 UART 緩沖區大小 */
/* HL_MAX_PACKAGE_NUMBER 最大可緩存 RF 包的個數 */
/************************************************************************/
#define HL_SWAM_SIZE 128
#define HL_BUFFER_SIZE 256
#define HL_UART_BUFFER_SIZE 200
#define HL_MAX_PACKAGE_NUMBER 10
typedef struct
{
int8u acBuffer[HL_BUFFER_SIZE]; /* 接收到的數據緩沖區 */
int16u uiPoint; /* 數據指針 */
int16u uiValid_Frames; /* 緩沖區中有效的數據幀數 */
int16u uiStart_Of_First_Frame; /* 第一個有效幀的幀頭 */
int16u uiEnd_Of_Last_Frame; /* 最后一個有效幀的幀尾 */
} HL_Buffered_Data;
/************************************************************************/
/* 設備信息參數定義 OD 索引 HL_DEVICE_INFO_INDEX = 0 */
/************************************************************************/
typedef struct
{
int8u aucSoftware_Version[4];
int8u aucHardware_Version[4];
int8u aucOD_Version[4];
int8u aucManufacture[12];
int16u uiProfile_ID;
int8u aucReserved[22];
} HL_Device_Info;
/************************************************************************/
/* 網絡參數定義 OD 索引 HL_NETWORK_PARAMETER_INDEX = 1001 */
/************************************************************************/
typedef struct
{
int8u ucCurrent_Channel;
BOOL bCompress_Enable;
BOOL bEncrypt_Enable;
int8s cTransmit_Power;
int8u aucPWD[16];
int16u uiPAN_ID;
int8u ucGroup_ID; // 2007-2-7 lvyong add
int8u aucReserved[25];
} HL_Network_Para;
/************************************************************************/
/* 當前時間參數定義 OD 索引 HL_CURRENT_TIME_INDEX = 1002 */
/************************************************************************/
typedef struct
{
int8u ucYear;
int8u ucMonth;
int8u ucDate;
int8u ucWeek;
int8u ucHour;
int8u ucMinute;
int8u ucSecond;
int8u ucReserved;
} HL_Full_Time;
/************************************************************************/
/* 鄰居表參數定義 OD 索引 HL_NEIGHBOR_TABLE_INDEX = 1003 */
/************************************************************************/
typedef struct
{
int8u aucLong_Address[8];
int16u uiShort_Address;
int8u ucNeighbor_Numb;
int8u ucReserved;
int8u aucNeighbor_Table[36];
} HL_Neighbor_Table;
/************************************************************************/
/* 集中器參數缺省常量定義 */
/* HL_RESP_TEMPERATURE 要求儀表側返回當前溫度 */
/* HL_RESP_NEIGHBOR_TABLE 要求儀表側返回鄰居表 */
/* HL_RESP_OD_VERSION 要求返回 OD 版本號 */
/* HL_RESP_SW_VERSION 要求返回軟件版本號 */
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -