📄 holley.h
字号:
/* HL_RESP_HW_VERSION 要求返回硬件版本号 */
/************************************************************************/
#define HL_RESP_TEMPERATURE 0x01
#define HL_RESP_NEIGHBOR_TABLE 0x02
#define HL_RESP_OD_VERSION 0x04
#define HL_RESP_SW_VERSION 0x08
#define HL_RESP_HW_VERSION 0x10
/************************************************************************/
/* 集中器抄表参数定义 OD 索引 HL_AMR_PARA_GATEWAY_INDEX = 1005 */
/************************************************************************/
typedef struct
{
int16u uiAD_Cycle; //发送声明集中器命令(即广告命令)的时间周期,单位是秒
int8u ucRespond_Timeout; //集中抄表的接收数据时间窗,单位是分钟
int8u ucRepeat_Time; //重复点抄的次数
HL_Mid_Time sUp_Load_Time; //集中器自动向上层数据管理软件上报冻结数据的时间
int8u ucCollect_Cycle; //集中器自动抄收冻结数据的时间周期,单位是小时
int8u ucRequire_Resp; //是否要求节点对广告帧进行应答
int8u ucResp_Contents; //要求广告命令应答帧中返回的数据信息
int8u ucAD_Radius; //广告命令的发送半径, 取值为 0 则说明半径为 EMBER_MAX_HOPS
BOOL bReturn_Flow_Ctrl; //是否返回流控
int8u aucReserved[27];
} HL_AMR_Para_Gateway;
/************************************************************************/
/* 采集器常量定义 */
/* HL_METER_APPLICATION 电表应用 */
/* HL_TERMINAL_APPLICATION 终端应用 */
/* HL_HANDSET_APPLICATION 手持应用 */
/* HL_CONN_TO_METER_RS485 与电表通过 RS485 连接 */
/* HL_CONN_TO_METER_RF 与电表通过 RF 连接 */
/************************************************************************/
#define HL_METER_APPLICATION 0x00
#define HL_TERMINAL_APPLICATION 0x01
#define HL_CONN_TO_METER_RS485 0x00
#define HL_CONN_TO_METER_RF 0x01
#define HL_SENSOR_STATE_NOMAL 0x00
#define HL_SENSOR_STATE_BACKOFF_FINISH 0x01
#define HL_SENSOR_STATE_BACKOFF_START 0x02
#define HL_SENSOR_STATE_MTR_DISCOVER 0x10
#define HL_SENSOR_STATE_DATA_FREEZE 0x11
#define HL_SENSOR_STATE_RESET 0xFF
#define DLT645_READ_METER_ID_CMD 0x32C0
#define HL_MAX_FROZEN_DATA_LENGTH 384
/****************************************************************************/
/* 采集器的基本信息配置参数定义, OD 索引 HL_AMR_PARA_CONFIG_INDEX = 1006 */
/****************************************************************************/
typedef struct
{
int8u ucBaud_Rate; //采集器与电表之间的通信速度, 见 serial.h
int8u ucReserved;
int16u uiRead_Cycle; //采集器自动抄收电表数据的周期,单位是分钟
HL_Mid_Time sTime_Stamp; //数据冻结开始时间
int16u uiUART_Frame_Gap; //UART 帧与帧之间的时间间隔,单位是毫秒,用于在从电表接收数据时判断是否接收完毕一帧
int16u uiUART_Resp_Timeout;//UART 帧与帧之间的时间间隔,单位是毫秒,向电表发送 UART 命令后, 需要等待电表响应超时的时间
int8u ucApplication; //用于指示当前的设备是与电表(0),终端(1),还是手持设备(2)连接
int8u ucConnection_To_Meter; //用于指示与电表连接的方式, RS485(0), RF(1),即ZigBee表
int8u ucRandom_Delay_Scale; //随机延时右移位数
int8u aucReserved[13];
} HL_AMR_Para_Config;
/************************************************************************/
/* 采集器需要冻结的数据标识, OD 索引 HL_AMR_DATA_IDS_INDEX = 1007 */
/************************************************************************/
typedef struct
{
int8u ucData_ID_Numb; //需要冻结的数据标识个数
int8u aucReserved[3];
int8u aucData_IDs[24]; //需要冻结的数据标识,每个数据标识是2个字节
} HL_AMR_Data_IDs;
/****************************************************************************/
/* 采集器下辖电表地址的低6位, OD 索引 HL_AMR_METER_ADDR_LOW_INDEX = 1008 */
/****************************************************************************/
typedef struct
{
int8u ucMeter_Numb; //采集器下辖的电表个数,最大为24
BOOL bDiscover_Meter; //自动发现电表
int8u aucReserved[2];
int8u aucMeter_Addr_Low_A[48]; //采集器下辖的电表地址的低6位
int8u aucMeter_Addr_Low_B[48];
} HL_AMR_Meter_Addr_Low;
/****************************************************************************/
/* 采集器下辖电表地址的高6位, OD 索引 HL_AMR_METER_ADDR_HIGH_INDEX = 1009 */
/****************************************************************************/
typedef struct
{
int8u ucMeter_Numb; //采集器下辖的电表个数
int8u aucReserved[3];
int8u aucMeter_Addr_High_A[48]; //采集器下辖的电表地址的高6位
int8u aucMeter_Addr_High_B[48];
} HL_AMR_Meter_Addr_High;
/************************************************************************/
/* 采集器下辖电表中,对抄表命令未响应的电表地址的低6位 */
/* OD 索引 HL_AMR_UNRESPOND_METERS_INDEX = 1010 */
/************************************************************************/
typedef struct
{
int8u ucUnrespond_Numb; //采集器下辖的电表中,没有响应的电表个数,最大为12。
int8u aucReserved[3];
int8u aucMeter_Addr_Low[36]; //采集器下辖的电表中,没有响应的电表地址的低6位
} HL_AMR_Unrespond_Meters;
/************************************************************************/
/* 对象字典相关定义 */
/* HL_OD_ENTRY_NUMBER : 目前 OD 入口数 */
/* HL_OD_MAX_ELEMENT : 每个结构参数中最多可包含的数据项数目 */
/* HL_OD_MAX_DATA_LENGTH : 每个结构参数的最大数据长度 */
/* HL_STRUCT_OD : 结构体 OD 类型 */
/************************************************************************/
#ifdef SINK_APP
#define HL_OD_ENTRY_NUMBER 5
#endif
#ifdef SENSOR_APP
#define HL_OD_ENTRY_NUMBER 9
#endif
#define HL_OD_MAX_ELEMENT 10
#define HL_OD_MAX_DATA_LENGTH 100
#define HL_STRUCT_OD 6
/************************************************************************/
/* 参数的 OD 索引定义 */
/************************************************************************/
#define HL_DEVICE_INFO_INDEX 0
#define HL_NETWORK_PARAMETER_INDEX 1001
#define HL_CURRENT_TIME_INDEX 1002
#define HL_NEIGHBOR_TABLE_INDEX 1003
#define HL_AMR_PARA_GATEWAY_INDEX 1005
#define HL_AMR_PARA_CONFIG_INDEX 1006
#define HL_AMR_DATA_IDS_INDEX 1007
#define HL_AMR_METER_ADDR_LOW_INDEX 1008
#define HL_AMR_METER_ADDR_HIGH_INDEX 1009
#define HL_AMR_UNRESPOND_METERS_INDEX 1010
/************************************************************************/
/* OD 操作错误码定义 */
/************************************************************************/
#define HL_OD_ERR_WRONG_INDEX 0x01
#define HL_OD_ERR_WRONG_SUB_INDEX 0x02
#define HL_OD_ERR_WRONG_ACCESS 0x03
#define HL_OD_ERR_WRONG_LENGTH 0x04
#define HL_OD_ERR_NOT_SUPPORT 0x05
/************************************************************************/
/* OD 数据类型定义 */
/************************************************************************/
#define HL_DT_BOOL 1
#define HL_DT_BCD 2
#define HL_DT_INTEGER_8 3
#define HL_DT_INTEGER_16 4
#define HL_DT_BIT_STRING 16
#define HL_DT_VIS_STRING 17
#define HL_DT_SHORT_TIME 25
#define HL_DT_MID_TIME 26
#define HL_DT_FULL_TIME 27
/************************************************************************/
/* OD 数据单位定义 */
/************************************************************************/
#define HL_UT_VOLTAGE 32
#define HL_UT_KILOVOLT 33
#define HL_UT_AMPERE 34
#define HL_UT_KILOWATT 35
#define HL_UT_KW_HOUR 36
#define HL_UT_KILOVAR 37
#define HL_UT_KVAR_HOUR 38
#define HL_UT_P_KWH 39
#define HL_UT_P_KVARH 40
#define HL_UT_YEAR 41
#define HL_UT_MONTH 42
#define HL_UT_DAY 43
#define HL_UT_WEEK 44
#define HL_UT_HOUR 45
#define HL_UT_MINUTE 46
#define HL_UT_SECOND 47
#define HL_UT_MILLI_SCND 48
/************************************************************************/
/* 访问权限定义 */
/************************************************************************/
#define HL_RO_ACCESS 1
#define HL_RW_ACCESS 2
#define HL_WO_ACCESS 3
#define HL_NON_ACCESS 4
/************************************************************************/
/* OD 入口结构定义 */
/************************************************************************/
typedef struct
{
int8u ucElement_Type;
int8u ucElement_Unit;
int8u ucElement_Length;
int8u ucDecimal_Point;
int8u ucAccess;
} Element_OD;
typedef struct
{
int16u uiIndex;
void * pvLocal_Address;
int8u ucElement_Number;
Element_OD sElement_Desc[HL_OD_MAX_ELEMENT];
} Struct_OD;
typedef struct
{
int8u ucOD_Type;
int16u uiOD_Index;
void * pvOD_Address;
} OD_Entry;
#endif // #ifndef HOLLEY_H
// typedef int8u EmberMessageBuffer; // in ember-type.h
// typedef struct {...} EmberApsFrame;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -