Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
A
ademco_hb
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
captainwong
ademco_hb
Commits
11722358
Commit
11722358
authored
Jun 16, 2022
by
captainwong
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
HbComData
parent
12f3d345
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
138 additions
and
82 deletions
+138
-82
ademco.c
c/ademco.c
+53
-45
ademco.h
c/ademco.h
+85
-37
No files found.
c/ademco.c
View file @
11722358
...
@@ -1473,88 +1473,96 @@ HbComResponseType hbComParseResponse(const uint8_t* data, int len)
...
@@ -1473,88 +1473,96 @@ HbComResponseType hbComParseResponse(const uint8_t* data, int len)
return
HbComResp_Invalid
;
return
HbComResp_Invalid
;
}
}
void
hbComMakeReqA0_getMachineStatus
(
AdemcoXDataSegment
*
x
data
)
void
hbComMakeReqA0_getMachineStatus
(
HbComData
*
data
)
{
{
ademcoMakeXData
(
xdata
,
TWO_HEX
,
HbComReq_A0_data
,
HbComReq_A0_len
);
memcpy
(
data
->
data
,
HbComReq_A0_data
,
HbComReq_A0_len
);
data
->
len
=
HbComReq_A0_len
;
}
}
void
hbComMakeReqA1_getMachineZones
(
AdemcoXDataSegment
*
x
data
)
void
hbComMakeReqA1_getMachineZones
(
HbComData
*
data
)
{
{
ademcoMakeXData
(
xdata
,
TWO_HEX
,
HbComReq_A1_data
,
HbComReq_A1_len
);
memcpy
(
data
->
data
,
HbComReq_A1_data
,
HbComReq_A1_len
);
data
->
len
=
HbComReq_A1_len
;
}
}
void
hbComMakeReqA2_getMoreMachineZones
(
AdemcoXDataSegment
*
x
data
)
void
hbComMakeReqA2_getMoreMachineZones
(
HbComData
*
data
)
{
{
ademcoMakeXData
(
xdata
,
TWO_HEX
,
HbComReq_A2_data
,
HbComReq_A2_len
);
memcpy
(
data
->
data
,
HbComReq_A2_data
,
HbComReq_A2_len
);
data
->
len
=
HbComReq_A2_len
;
}
}
void
hbComMakeReqA3_modifyMachineZone
(
AdemcoXDataSegment
*
x
data
,
uint8_t
zone
,
HbZoneProperty
prop
,
HbComReq_A3_op
op
)
void
hbComMakeReqA3_modifyMachineZone
(
HbComData
*
data
,
uint8_t
zone
,
HbZoneProperty
prop
,
HbComReq_A3_op
op
)
{
{
uint8_t
req
[
HbComReq_A3_len
]
=
HbComReq_A3_head
;
memcpy
(
data
->
data
,
HbComReq_A3_head
,
5
)
;
req
[
5
]
=
zone
;
data
->
data
[
5
]
=
zone
;
req
[
6
]
=
prop
;
data
->
data
[
6
]
=
prop
;
req
[
7
]
=
op
;
data
->
data
[
7
]
=
op
;
hbSum
(
req
,
HbComReq_A3_len
);
hbSum
(
data
->
data
,
HbComReq_A3_len
);
ademcoMakeXData
(
xdata
,
TWO_HEX
,
req
,
HbComReq_A3_len
)
;
data
->
len
=
HbComReq_A3_len
;
}
}
void
hbComMakeReqA5_getMachineTimer
(
AdemcoXDataSegment
*
x
data
)
void
hbComMakeReqA5_getMachineTimer
(
HbComData
*
data
)
{
{
ademcoMakeXData
(
xdata
,
TWO_HEX
,
HbComReq_A5_data
,
HbComReq_A5_len
);
memcpy
(
data
->
data
,
HbComReq_A5_data
,
HbComReq_A5_len
);
data
->
len
=
HbComReq_A5_len
;
}
}
void
hbComMakeReqA7_setMachineTimer
(
AdemcoXDataSegment
*
x
data
,
HbMachineTimer
*
timer
)
void
hbComMakeReqA7_setMachineTimer
(
HbComData
*
data
,
HbMachineTimer
*
timer
)
{
{
uint8_t
req
[
HbComReq_A7_len
]
=
HbComReq_A7_head
;
memcpy
(
data
->
data
,
HbComReq_A7_head
,
5
)
;
memcpy
(
req
+
5
,
timer
,
sizeof
(
*
timer
));
memcpy
(
data
->
data
+
5
,
timer
,
sizeof
(
*
timer
));
hbSum
(
req
,
HbComReq_A7_len
);
hbSum
(
data
->
data
,
HbComReq_A7_len
);
ademcoMakeXData
(
xdata
,
TWO_HEX
,
req
,
HbComReq_A7_len
)
;
data
->
len
=
HbComReq_A7_len
;
}
}
void
hbComMakeReqAA_modifyMachineZoneLostConfig
(
AdemcoXDataSegment
*
x
data
,
uint8_t
zone
,
int
on
)
void
hbComMakeReqAA_modifyMachineZoneLostConfig
(
HbComData
*
data
,
uint8_t
zone
,
int
on
)
{
{
uint8_t
req
[
HbComReq_AA_len
]
=
HbComReq_AA_head
;
memcpy
(
data
->
data
,
HbComReq_AA_head
,
5
)
;
req
[
5
]
=
zone
;
data
->
data
[
5
]
=
zone
;
req
[
6
]
=
!!
on
;
data
->
data
[
6
]
=
!!
on
;
hbSum
(
req
,
HbComReq_AA_len
);
hbSum
(
data
->
data
,
HbComReq_AA_len
);
ademcoMakeXData
(
xdata
,
TWO_HEX
,
req
,
HbComReq_AA_len
)
;
data
->
len
=
HbComReq_AA_len
;
}
}
void
hbComMakeReqAC_getMachineZoneLostConfig
(
AdemcoXDataSegment
*
x
data
)
void
hbComMakeReqAC_getMachineZoneLostConfig
(
HbComData
*
data
)
{
{
ademcoMakeXData
(
xdata
,
TWO_HEX
,
HbComReq_AC_data
,
HbComReq_AC_len
);
memcpy
(
data
->
data
,
HbComReq_AC_data
,
HbComReq_AC_len
);
data
->
len
=
HbComReq_AC_len
;
}
}
void
hbComMakeReqAD_getMoreMachineZoneLostConfig
(
AdemcoXDataSegment
*
x
data
)
void
hbComMakeReqAD_getMoreMachineZoneLostConfig
(
HbComData
*
data
)
{
{
ademcoMakeXData
(
xdata
,
TWO_HEX
,
HbComReq_AD_data
,
HbComReq_AD_len
);
memcpy
(
data
->
data
,
HbComReq_AD_data
,
HbComReq_AD_len
);
data
->
len
=
HbComReq_AD_len
;
}
}
void
hbComMakeReqAE_set3SectionMachineStatus
(
AdemcoXDataSegment
*
xdata
,
HbComReq_AE_P1
p1
,
uint8_t
p2
)
void
hbComMakeReqAE_set3SectionMachineStatus
(
HbComData
*
data
,
HbCom_3sec_which
p1
,
HbCom_3sec_status
status
)
{
{
uint8_t
req
[
HbComReq_AE_len
]
=
HbComReq_AE_head
;
memcpy
(
data
->
data
,
HbComReq_AE_head
,
5
)
;
req
[
5
]
=
p1
;
data
->
data
[
5
]
=
p1
;
req
[
6
]
=
p2
;
data
->
data
[
6
]
=
status
;
hbSum
(
req
,
HbComReq_AE_len
);
hbSum
(
data
->
data
,
HbComReq_AE_len
);
ademcoMakeXData
(
xdata
,
TWO_HEX
,
req
,
HbComReq_AE_len
)
;
data
->
len
=
HbComReq_AE_len
;
}
}
void
hbComMakeReqB0_get3SectionMachineStatus
(
AdemcoXDataSegment
*
x
data
)
void
hbComMakeReqB0_get3SectionMachineStatus
(
HbComData
*
data
)
{
{
ademcoMakeXData
(
xdata
,
TWO_HEX
,
HbComReq_B0_data
,
HbComReq_B0_len
);
memcpy
(
data
->
data
,
HbComReq_B0_data
,
HbComReq_B0_len
);
data
->
len
=
HbComReq_B0_len
;
}
}
void
hbComMakeReqRD_acct
(
AdemcoXDataSegment
*
x
data
)
void
hbComMakeReqRD_acct
(
HbComData
*
data
)
{
{
ademcoMakeXData
(
xdata
,
TWO_HEX
,
HbComReq_RD_acct_data
,
HbComReq_RD_acct_len
);
memcpy
(
data
->
data
,
HbComReq_RD_acct_data
,
HbComReq_RD_acct_len
);
data
->
len
=
HbComReq_RD_acct_len
;
}
}
void
hbComMakeReqWR_acct
(
AdemcoXDataSegment
*
x
data
,
const
char
*
acct
)
void
hbComMakeReqWR_acct
(
HbComData
*
data
,
const
char
*
acct
)
{
{
uint8_t
req
[
HbComReq_WR_acct_len
]
=
HbComReq_WR_acct_head
;
memcpy
(
data
->
data
,
HbComReq_WR_acct_head
,
5
)
;
hbDecStrToHiLoArray
(
req
+
5
,
9
,
acct
);
hbDecStrToHiLoArray
(
data
->
data
+
5
,
9
,
acct
);
hbSum
(
req
,
HbComReq_AE
_len
);
hbSum
(
data
->
data
,
HbComReq_WR_acct
_len
);
ademcoMakeXData
(
xdata
,
TWO_HEX
,
req
,
HbComReq_AE_len
)
;
data
->
len
=
HbComReq_WR_acct_len
;
}
}
int
hbHiLoArrayToDecStr
(
char
*
str
,
const
uint8_t
*
arr
,
int
len
)
int
hbHiLoArrayToDecStr
(
char
*
str
,
const
uint8_t
*
arr
,
int
len
)
...
...
c/ademco.h
View file @
11722358
...
@@ -494,7 +494,13 @@ typedef union HbMachineTimer {
...
@@ -494,7 +494,13 @@ typedef union HbMachineTimer {
}
HbMachineTimer
;
}
HbMachineTimer
;
// 串口透传数据最大长度
// 串口透传数据最大长度
#define HB_COM_DATA_MAX_LEN 32
#define HB_COM_DATA_MAX_LEN 64
// 串口透传数据
typedef
struct
HbComData
{
uint8_t
data
[
HB_COM_DATA_MAX_LEN
];
int
len
;
}
HbComData
;
// 发给主机
// 发给主机
typedef
enum
HbComRequestType
{
typedef
enum
HbComRequestType
{
...
@@ -548,8 +554,10 @@ typedef enum HbComResponseType {
...
@@ -548,8 +554,10 @@ typedef enum HbComResponseType {
#define HbComResp_A2_len_min 8 // 无防区数据时长度最小为8
#define HbComResp_A2_len_min 8 // 无防区数据时长度最小为8
#define HbComResp_A2_max_zone 20 // 最多可以包含 20 个防区
#define HbComResp_A2_max_zone 20 // 最多可以包含 20 个防区
#define HbComResp_A2_len_max (HbComResp_A2_len_min + HbComResp_A2_max_zone * 2) // 一包数据最多有8+20*2=48个字节
#define HbComResp_A2_len_max (HbComResp_A2_len_min + HbComResp_A2_max_zone * 2) // 一包数据最多有8+20*2=48个字节
#define HbComResp_A2_nomore 0xFF // P1 无更多防区
typedef
enum
HbComResp_A2_p1
{
#define HbComResp_A2_hasmore 0x00 // P1 还有更多防区
HbComResp_A2_p1_nomore
=
0xFF
,
// 无更多防区
HbComResp_A2_p1_more
=
0x00
,
// 还有更多防区
}
HbComResp_A2_p1
;
//! 索要更多主机防区 EB AB 3F A2 77
//! 索要更多主机防区 EB AB 3F A2 77
//! 仅应在收到ZoneResponse的param非0xFF时发送,以索要全部防区
//! 仅应在收到ZoneResponse的param非0xFF时发送,以索要全部防区
...
@@ -560,11 +568,11 @@ typedef enum HbComResponseType {
...
@@ -560,11 +568,11 @@ typedef enum HbComResponseType {
#define HbComReq_A3_len 9
#define HbComReq_A3_len 9
#define HbComReq_A3_head "\xEB\xCB\x3F\x09\xA3"
#define HbComReq_A3_head "\xEB\xCB\x3F\x09\xA3"
typedef
enum
HbComReq_A3_
op
{
typedef
enum
HbComReq_A3_
p3
{
HbComReq_A3_
op
_del
=
0x00
,
//! 删除防区
HbComReq_A3_
p3
_del
=
0x00
,
//! 删除防区
HbComReq_A3_
op
_learn
=
0x01
,
//! 学码
HbComReq_A3_
p3
_learn
=
0x01
,
//! 学码
HbComReq_A3_
op
_stop
=
0x02
,
//! 停止学码
HbComReq_A3_
p3
_stop
=
0x02
,
//! 停止学码
HbComReq_A3_
op
_modify
=
0x04
,
//! 修改防区属性
HbComReq_A3_
p3
_modify
=
0x04
,
//! 修改防区属性
}
HbComReq_A3_op
;
}
HbComReq_A3_op
;
//! 学码开始回应 EB BA 3F 07 P0 A3 5A
//! 学码开始回应 EB BA 3F 07 P0 A3 5A
...
@@ -575,10 +583,12 @@ typedef enum HbComReq_A3_op {
...
@@ -575,10 +583,12 @@ typedef enum HbComReq_A3_op {
//! 修改防区回应 EB BA 3F 0A P0 A4 P1 P2 P3 SUM
//! 修改防区回应 EB BA 3F 0A P0 A4 P1 P2 P3 SUM
#define HbComResp_A4_len 10
#define HbComResp_A4_len 10
#define HbComResp_A4_head "\xEB\xBA\x3F\x0A\xCC\xA4"
#define HbComResp_A4_head "\xEB\xBA\x3F\x0A\xCC\xA4"
#define HbComResp_A4_fail 0x00 //! 失败
typedef
enum
HbComResp_A4_p3
{
#define HbComResp_A4_ok 0x01 //! 成功
HbComResp_A4_p3_fail
=
0x00
,
//! 失败
#define HbComResp_A4_dup 0x02 //! 失败--重码
HbComResp_A4_p3_ok
=
0x01
,
//! 成功
#define HbComResp_A4_ne 0x03 //! 失败--防区未对码 not exists
HbComResp_A4_p3_dup
=
0x02
,
//! 失败--重码
HbComResp_A4_p3_ne
=
0x03
,
//! 失败--防区未对码 not exists
}
HbComResp_A4_code
;
//! 获取主机定时器 EB AB 3F A5 7A
//! 获取主机定时器 EB AB 3F A5 7A
#define HbComReq_A5_len 5
#define HbComReq_A5_len 5
...
@@ -608,6 +618,11 @@ typedef enum HbComReq_A3_op {
...
@@ -608,6 +618,11 @@ typedef enum HbComReq_A3_op {
//! 修改防区探头遗失/失联回应 EB BA 3F 09 P0 AB P1 P2 SUM
//! 修改防区探头遗失/失联回应 EB BA 3F 09 P0 AB P1 P2 SUM
#define HbComResp_AB_len 9
#define HbComResp_AB_len 9
#define HbComResp_AB_head "\xEB\xBA\x3F\x09\xCC\xAB"
#define HbComResp_AB_head "\xEB\xBA\x3F\x09\xCC\xAB"
typedef
enum
HbComResp_AB_p2
{
HbComResp_AB_p2_close
=
0
,
// 防区失联关
HbComResp_AB_p2_open
=
1
,
// 防区失联开
HbComResp_AB_p2_reject
=
2
,
// 拒绝操作
}
HbComResp_AB_p2
;
//! 索要防区探头遗失/失联 第一次索要 EB AB 3F AC 81
//! 索要防区探头遗失/失联 第一次索要 EB AB 3F AC 81
#define HbComReq_AC_len 5
#define HbComReq_AC_len 5
...
@@ -621,22 +636,32 @@ typedef enum HbComReq_A3_op {
...
@@ -621,22 +636,32 @@ typedef enum HbComReq_A3_op {
#define HbComResp_AD_len_min 9 // 无防区失联数据时一包长度最小为9
#define HbComResp_AD_len_min 9 // 无防区失联数据时一包长度最小为9
#define HbComResp_AD_max_zone 20 // 一包最多包含20个防区
#define HbComResp_AD_max_zone 20 // 一包最多包含20个防区
#define HbComResp_AD_len_max (HbComResp_AD_len_min + HbComResp_AD_max_zone * 2) // 一包最多有 9 + 20 *2 = 49 个字节
#define HbComResp_AD_len_max (HbComResp_AD_len_min + HbComResp_AD_max_zone * 2) // 一包最多有 9 + 20 *2 = 49 个字节
#define HbComResp_AD_p1_single 0xF0 // 防区号以单字节表示
typedef
enum
HbComResp_AD_p1
{
#define HbComResp_AD_p1_double 0xF1 // 防区号以双字节表示
HbComResp_AD_p1_single
=
0xF0
,
// 防区号以单字节表示
HbComResp_AD_p1_double
=
0xF1
,
// 防区号以双字节表示
}
HbComResp_AD_p1
;
typedef
enum
HbComResp_AD_p2
{
HbComResp_AD_p2_nomore
=
0xFF
,
// 无更多防区
HbComResp_AD_p2_more
=
0x00
,
// 还有更多防区
}
HbComResp_AD_p2
;
#define HbComResp_AD_head "\xEB\xBA\x3F\x09\xCC\xAD"
#define HbComResp_AD_head "\xEB\xBA\x3F\x09\xCC\xAD"
#define HbCom_3sec_arm 0x00 // 三区段主机布防(命令或状态)
typedef
enum
HbCom_3sec_status
{
#define HbCom_3sec_disarm 0x01 // 三区段主机撤防(命令或状态)
HbCom_3sec_arm
=
0x00
,
// 布防(成功)
HbCom_3sec_disarm
=
0x01
,
// 撤防(成功)
}
HbCom_3sec_status
;
typedef
enum
HbCom_3sec_which
{
HbCom_3sec_machine
,
// 主机
HbCom_3sec_section1
,
// 区段1
HbCom_3sec_section2
,
// 区段2
HbCom_3sec_section3
,
// 区段3
}
HbCom_3sec_which
;
//! 三区段主机布撤防命令 EB CB 3F 08 AE P1 P2 SUM
//! 三区段主机布撤防命令 EB CB 3F 08 AE P1 P2 SUM
#define HbComReq_AE_len 8
#define HbComReq_AE_len 8
#define HbComReq_AE_head "\xEB\xCB\x3F\x08\xAE"
#define HbComReq_AE_head "\xEB\xCB\x3F\x08\xAE"
typedef
enum
HbComReq_AE_P1
{
HbComReq_AE_P1_machine
,
// 对主机布撤防
HbComReq_AE_P1_section1
,
// 对区段1布撤防
HbComReq_AE_P1_section2
,
// 对区段2布撤防
HbComReq_AE_P1_section3
,
// 对区段3布撤防
}
HbComReq_AE_P1
;
//! 三区段主机布撤防命令回应 EB BA 3F 08 P0 AF P1 P2 SUM
//! 三区段主机布撤防命令回应 EB BA 3F 08 P0 AF P1 P2 SUM
#define HbComResp_AF_len 9
#define HbComResp_AF_len 9
...
@@ -720,28 +745,51 @@ ADEMCO_EXPORT_SYMBOL const char* hbZonePropertyToString(HbZoneProperty zp);
...
@@ -720,28 +745,51 @@ ADEMCO_EXPORT_SYMBOL const char* hbZonePropertyToString(HbZoneProperty zp);
ADEMCO_EXPORT_SYMBOL
const
wchar_t
*
hbZonePropertyToStringChinese
(
HbZoneProperty
zp
);
ADEMCO_EXPORT_SYMBOL
const
wchar_t
*
hbZonePropertyToStringChinese
(
HbZoneProperty
zp
);
ADEMCO_EXPORT_SYMBOL
const
char
*
hbGetZoneFormatString
(
HbMachineType
type
);
ADEMCO_EXPORT_SYMBOL
const
char
*
hbGetZoneFormatString
(
HbMachineType
type
);
ADEMCO_EXPORT_SYMBOL
const
wchar_t
*
hbGetZoneFormatStringW
(
HbMachineType
type
);
ADEMCO_EXPORT_SYMBOL
const
wchar_t
*
hbGetZoneFormatStringW
(
HbMachineType
type
);
// 累加校验,计算data[0] ~ data[len-2],校验和放在data[len-1]
// 累加校验,计算data[0] ~ data[len-2],校验和放在data[len-1]
ADEMCO_EXPORT_SYMBOL
void
hbSum
(
uint8_t
*
data
,
int
len
);
ADEMCO_EXPORT_SYMBOL
void
hbSum
(
uint8_t
*
data
,
int
len
);
// 校验和是否正确, return 0 for incorrect, otherwise correct
// 校验和是否正确, return 0 for incorrect, otherwise correct
ADEMCO_EXPORT_SYMBOL
int
hbCheckSum
(
const
uint8_t
*
data
,
int
len
);
ADEMCO_EXPORT_SYMBOL
int
hbCheckSum
(
const
uint8_t
*
data
,
int
len
);
ADEMCO_EXPORT_SYMBOL
HbComRequestType
hbComParseRequest
(
const
uint8_t
*
buff
,
int
len
);
ADEMCO_EXPORT_SYMBOL
HbComRequestType
hbComParseRequest
(
const
uint8_t
*
buff
,
int
len
);
ADEMCO_EXPORT_SYMBOL
HbComResponseType
hbComParseResponse
(
const
uint8_t
*
buff
,
int
len
);
ADEMCO_EXPORT_SYMBOL
HbComResponseType
hbComParseResponse
(
const
uint8_t
*
buff
,
int
len
);
ADEMCO_EXPORT_SYMBOL
void
hbComMakeReqA0_getMachineStatus
(
AdemcoXDataSegment
*
xdata
);
ADEMCO_EXPORT_SYMBOL
void
hbComMakeReqA1_getMachineZones
(
AdemcoXDataSegment
*
xdata
);
ADEMCO_EXPORT_SYMBOL
void
hbComMakeReqA2_getMoreMachineZones
(
AdemcoXDataSegment
*
xdata
);
ADEMCO_EXPORT_SYMBOL
void
hbComMakeReqA3_modifyMachineZone
(
AdemcoXDataSegment
*
xdata
,
uint8_t
zone
,
HbZoneProperty
prop
,
HbComReq_A3_op
op
);
ADEMCO_EXPORT_SYMBOL
void
hbComMakeReqA5_getMachineTimer
(
AdemcoXDataSegment
*
xdata
);
ADEMCO_EXPORT_SYMBOL
void
hbComMakeReqA7_setMachineTimer
(
AdemcoXDataSegment
*
xdata
,
HbMachineTimer
*
timer
);
//ADEMCO_EXPORT_SYMBOL void hbComMakeReqA9(AdemcoXDataSegment* xdata, HbMachineStatus status, HbMachineType type);
ADEMCO_EXPORT_SYMBOL
void
hbComMakeReqAA_modifyMachineZoneLostConfig
(
AdemcoXDataSegment
*
xdata
,
uint8_t
zone
,
int
on
);
ADEMCO_EXPORT_SYMBOL
void
hbComMakeReqAC_getMachineZoneLostConfig
(
AdemcoXDataSegment
*
xdata
);
ADEMCO_EXPORT_SYMBOL
void
hbComMakeReqAD_getMoreMachineZoneLostConfig
(
AdemcoXDataSegment
*
xdata
);
// p2 must be HbCom_3sec_arm or HbCom_3sec_disarm
ADEMCO_EXPORT_SYMBOL
void
hbComMakeReqAE_set3SectionMachineStatus
(
AdemcoXDataSegment
*
xdata
,
HbComReq_AE_P1
p1
,
uint8_t
p2
);
ADEMCO_EXPORT_SYMBOL
void
hbComMakeReqB0_get3SectionMachineStatus
(
AdemcoXDataSegment
*
xdata
);
ADEMCO_EXPORT_SYMBOL
void
hbComMakeReqRD_acct
(
AdemcoXDataSegment
*
xdata
);
ADEMCO_EXPORT_SYMBOL
void
hbComMakeReqWR_acct
(
AdemcoXDataSegment
*
xdata
,
const
char
*
acct
);
ADEMCO_EXPORT_SYMBOL
void
hbComMakeReqA0_getMachineStatus
(
HbComData
*
data
);
ADEMCO_EXPORT_SYMBOL
void
hbComMakeReqA1_getMachineZones
(
HbComData
*
data
);
ADEMCO_EXPORT_SYMBOL
void
hbComMakeReqA2_getMoreMachineZones
(
HbComData
*
data
);
ADEMCO_EXPORT_SYMBOL
void
hbComMakeReqA3_modifyMachineZone
(
HbComData
*
data
,
uint8_t
zone
,
HbZoneProperty
prop
,
HbComReq_A3_op
op
);
ADEMCO_EXPORT_SYMBOL
void
hbComMakeReqA5_getMachineTimer
(
HbComData
*
data
);
ADEMCO_EXPORT_SYMBOL
void
hbComMakeReqA7_setMachineTimer
(
HbComData
*
data
,
HbMachineTimer
*
timer
);
// TODO
// ADEMCO_EXPORT_SYMBOL void hbComMakeReqA9(HbComData* data, HbMachineStatus status, HbMachineType type);
ADEMCO_EXPORT_SYMBOL
void
hbComMakeReqAA_modifyMachineZoneLostConfig
(
HbComData
*
data
,
uint8_t
zone
,
int
on
);
ADEMCO_EXPORT_SYMBOL
void
hbComMakeReqAC_getMachineZoneLostConfig
(
HbComData
*
data
);
ADEMCO_EXPORT_SYMBOL
void
hbComMakeReqAD_getMoreMachineZoneLostConfig
(
HbComData
*
data
);
// p2 must be HbCom_3sec_arm or HbCom_3sec_disarm
ADEMCO_EXPORT_SYMBOL
void
hbComMakeReqAE_set3SectionMachineStatus
(
HbComData
*
data
,
HbCom_3sec_which
p1
,
HbCom_3sec_status
status
);
ADEMCO_EXPORT_SYMBOL
void
hbComMakeReqB0_get3SectionMachineStatus
(
HbComData
*
data
);
ADEMCO_EXPORT_SYMBOL
void
hbComMakeReqRD_acct
(
HbComData
*
data
);
ADEMCO_EXPORT_SYMBOL
void
hbComMakeReqWR_acct
(
HbComData
*
data
,
const
char
*
acct
);
ADEMCO_EXPORT_SYMBOL
void
hbComMakeRespA0_getMachineStatus
(
HbComData
*
data
,
HbMachineStatus
status
,
HbMachineType
type
);
ADEMCO_EXPORT_SYMBOL
void
hbComMakeRespA2_getMachineZonesEmpty
(
HbComData
*
data
);
// zones and props length is count
// if count is 0, p1 wil be set to HbComResp_A2_p1_nomore
ADEMCO_EXPORT_SYMBOL
void
hbComMakeRespA2_getMachineZones
(
HbComData
*
data
,
int
count
,
AdemcoZone
*
zones
,
HbZoneProperty
*
props
,
HbComResp_A2_p1
p1
);
// 学码开始,等待探测器无线信号中
ADEMCO_EXPORT_SYMBOL
void
hbComMakeRespA3_waitingSignal
(
HbComData
*
data
);
ADEMCO_EXPORT_SYMBOL
void
hbComMakeRespA4_modifyMachineZone
(
HbComData
*
data
,
AdemcoZone
zone
,
HbZoneProperty
prop
,
HbComResp_A4_code
code
);
ADEMCO_EXPORT_SYMBOL
void
hbComMakeRespA6_getMachineTimer
(
HbComData
*
data
,
HbMachineTimer
*
timer
);
ADEMCO_EXPORT_SYMBOL
void
hbComMakeRespA7_setMachineTimer
(
HbComData
*
data
);
ADEMCO_EXPORT_SYMBOL
void
hbComMakeRespA8_reject
(
HbComData
*
data
);
// TODO
// ADEMCO_EXPORT_SYMBOL void hbComMakeRespA9_(HbComData* data);
ADEMCO_EXPORT_SYMBOL
void
hbComMakeRespAB_modifyMachineZoneLostConfig
(
HbComData
*
data
,
AdemcoZone
zone
,
HbComResp_AB_p2
p2
);
// 返回所有失联开的防区
ADEMCO_EXPORT_SYMBOL
void
hbComMakeRespAD_getMachineZoneLostConfig
(
HbComData
*
data
,
HbComResp_AD_p1
p1
,
int
count
,
AdemcoZone
*
zones
,
HbComResp_AD_p2
p2
);
ADEMCO_EXPORT_SYMBOL
void
hbComMakeRespAF_set3SectionMachineStatus
(
HbComData
*
data
,
HbCom_3sec_which
p1
,
HbCom_3sec_status
status
);
ADEMCO_EXPORT_SYMBOL
void
hbComMakeRespB1_get3SectionMachineStatus
(
HbComData
*
data
,
HbMachineStatus
statusMachine
,
HbMachineStatus
statusSec1
,
HbMachineStatus
statusSec2
,
HbMachineStatus
statusSec3
);
// 将一串以高低字节表示的十六进制数组转换为10进制数字符串,遇0xf或非'0'~'9'字符停止,返回字符串长度
// 将一串以高低字节表示的十六进制数组转换为10进制数字符串,遇0xf或非'0'~'9'字符停止,返回字符串长度
// 示例:输入数组:0x18 0x24 0x08 0x88 0x10 0x1f 0xff,输出字符串"18240888101"
// 示例:输入数组:0x18 0x24 0x08 0x88 0x10 0x1f 0xff,输出字符串"18240888101"
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment