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
03661efb
Commit
03661efb
authored
Jun 16, 2022
by
captainwong
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
resp
parent
11722358
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
117 additions
and
10 deletions
+117
-10
ademco.c
c/ademco.c
+112
-5
ademco.h
c/ademco.h
+5
-5
No files found.
c/ademco.c
View file @
03661efb
...
@@ -1497,8 +1497,8 @@ void hbComMakeReqA3_modifyMachineZone(HbComData* data, uint8_t zone, HbZonePrope
...
@@ -1497,8 +1497,8 @@ void hbComMakeReqA3_modifyMachineZone(HbComData* data, uint8_t zone, HbZonePrope
data
->
data
[
5
]
=
zone
;
data
->
data
[
5
]
=
zone
;
data
->
data
[
6
]
=
prop
;
data
->
data
[
6
]
=
prop
;
data
->
data
[
7
]
=
op
;
data
->
data
[
7
]
=
op
;
hbSum
(
data
->
data
,
HbComReq_A3_len
);
data
->
len
=
HbComReq_A3_len
;
data
->
len
=
HbComReq_A3_len
;
hbSum
(
data
->
data
,
data
->
len
);
}
}
void
hbComMakeReqA5_getMachineTimer
(
HbComData
*
data
)
void
hbComMakeReqA5_getMachineTimer
(
HbComData
*
data
)
...
@@ -1511,8 +1511,8 @@ void hbComMakeReqA7_setMachineTimer(HbComData* data, HbMachineTimer* timer)
...
@@ -1511,8 +1511,8 @@ void hbComMakeReqA7_setMachineTimer(HbComData* data, HbMachineTimer* timer)
{
{
memcpy
(
data
->
data
,
HbComReq_A7_head
,
5
);
memcpy
(
data
->
data
,
HbComReq_A7_head
,
5
);
memcpy
(
data
->
data
+
5
,
timer
,
sizeof
(
*
timer
));
memcpy
(
data
->
data
+
5
,
timer
,
sizeof
(
*
timer
));
hbSum
(
data
->
data
,
HbComReq_A7_len
);
data
->
len
=
HbComReq_A7_len
;
data
->
len
=
HbComReq_A7_len
;
hbSum
(
data
->
data
,
data
->
len
);
}
}
void
hbComMakeReqAA_modifyMachineZoneLostConfig
(
HbComData
*
data
,
uint8_t
zone
,
int
on
)
void
hbComMakeReqAA_modifyMachineZoneLostConfig
(
HbComData
*
data
,
uint8_t
zone
,
int
on
)
...
@@ -1520,8 +1520,8 @@ void hbComMakeReqAA_modifyMachineZoneLostConfig(HbComData* data, uint8_t zone, i
...
@@ -1520,8 +1520,8 @@ void hbComMakeReqAA_modifyMachineZoneLostConfig(HbComData* data, uint8_t zone, i
memcpy
(
data
->
data
,
HbComReq_AA_head
,
5
);
memcpy
(
data
->
data
,
HbComReq_AA_head
,
5
);
data
->
data
[
5
]
=
zone
;
data
->
data
[
5
]
=
zone
;
data
->
data
[
6
]
=
!!
on
;
data
->
data
[
6
]
=
!!
on
;
hbSum
(
data
->
data
,
HbComReq_AA_len
);
data
->
len
=
HbComReq_AA_len
;
data
->
len
=
HbComReq_AA_len
;
hbSum
(
data
->
data
,
data
->
len
);
}
}
void
hbComMakeReqAC_getMachineZoneLostConfig
(
HbComData
*
data
)
void
hbComMakeReqAC_getMachineZoneLostConfig
(
HbComData
*
data
)
...
@@ -1541,8 +1541,8 @@ void hbComMakeReqAE_set3SectionMachineStatus(HbComData* data, HbCom_3sec_which p
...
@@ -1541,8 +1541,8 @@ void hbComMakeReqAE_set3SectionMachineStatus(HbComData* data, HbCom_3sec_which p
memcpy
(
data
->
data
,
HbComReq_AE_head
,
5
);
memcpy
(
data
->
data
,
HbComReq_AE_head
,
5
);
data
->
data
[
5
]
=
p1
;
data
->
data
[
5
]
=
p1
;
data
->
data
[
6
]
=
status
;
data
->
data
[
6
]
=
status
;
hbSum
(
data
->
data
,
HbComReq_AE_len
);
data
->
len
=
HbComReq_AE_len
;
data
->
len
=
HbComReq_AE_len
;
hbSum
(
data
->
data
,
data
->
len
);
}
}
void
hbComMakeReqB0_get3SectionMachineStatus
(
HbComData
*
data
)
void
hbComMakeReqB0_get3SectionMachineStatus
(
HbComData
*
data
)
...
@@ -1561,8 +1561,115 @@ void hbComMakeReqWR_acct(HbComData* data, const char* acct)
...
@@ -1561,8 +1561,115 @@ void hbComMakeReqWR_acct(HbComData* data, const char* acct)
{
{
memcpy
(
data
->
data
,
HbComReq_WR_acct_head
,
5
);
memcpy
(
data
->
data
,
HbComReq_WR_acct_head
,
5
);
hbDecStrToHiLoArray
(
data
->
data
+
5
,
9
,
acct
);
hbDecStrToHiLoArray
(
data
->
data
+
5
,
9
,
acct
);
hbSum
(
data
->
data
,
HbComReq_WR_acct_len
);
data
->
len
=
HbComReq_WR_acct_len
;
data
->
len
=
HbComReq_WR_acct_len
;
hbSum
(
data
->
data
,
data
->
len
);
}
void
hbComMakeRespA0_getMachineStatus
(
HbComData
*
data
,
HbMachineStatus
status
,
HbMachineType
type
)
{
memcpy
(
data
->
data
,
HbComResp_A0_head
,
6
);
data
->
data
[
6
]
=
status
;
data
->
data
[
7
]
=
type
;
data
->
len
=
HbComResp_A0_len
;
hbSum
(
data
->
data
,
data
->
len
);
}
void
hbComMakeRespA2_getMachineZones
(
HbComData
*
data
,
int
count
,
AdemcoZone
*
zones
,
HbZoneProperty
*
props
,
HbComResp_A2_p1
p1
)
{
if
(
count
>
HbComResp_A2_max_zone
)
{
return
;
}
memcpy
(
data
->
data
,
HbComResp_A2_head
,
6
);
data
->
data
[
3
]
=
HbComResp_A2_len_min
+
count
*
2
;
uint8_t
*
p
=
data
->
data
+
6
;
for
(
int
i
=
0
;
i
<
count
;
i
++
)
{
*
p
++
=
zones
[
i
]
&
0xFF
;
*
p
++
=
props
[
i
];
}
*
p
++
=
(
count
>
0
)
?
p1
:
HbComResp_A2_p1_nomore
;
data
->
len
=
++
p
-
data
;
hbSum
(
data
->
data
,
data
->
len
);
}
void
hbComMakeRespA3_waitingSignal
(
HbComData
*
data
)
{
memcpy
(
data
->
data
,
HbComResp_A3_data
,
HbComResp_A3_len
);
data
->
len
=
HbComResp_A3_len
;
}
void
hbComMakeRespA4_modifyMachineZone
(
HbComData
*
data
,
AdemcoZone
zone
,
HbZoneProperty
prop
,
HbComResp_A4_p3
p3
)
{
memcpy
(
data
->
data
,
HbComResp_A4_head
,
6
);
data
->
data
[
6
]
=
zone
&
0xFF
;
data
->
data
[
7
]
=
prop
;
data
->
data
[
8
]
=
p3
;
data
->
len
=
HbComResp_A4_len
;
hbSum
(
data
->
data
,
data
->
len
);
}
void
hbComMakeRespA6_getMachineTimer
(
HbComData
*
data
,
HbMachineTimer
*
timer
)
{
memcpy
(
data
->
data
,
HbComResp_A6_head
,
6
);
memcpy
(
data
->
data
+
6
,
timer
,
sizeof
(
*
timer
));
data
->
len
=
HbComResp_A6_len
;
hbSum
(
data
->
data
,
data
->
len
);
}
void
hbComMakeRespA7_setMachineTimer
(
HbComData
*
data
)
{
memcpy
(
data
->
data
,
HbComResp_A7_data
,
HbComResp_A7_len
);
data
->
len
=
HbComResp_A7_len
;
}
void
hbComMakeRespA8_reject
(
HbComData
*
data
)
{
memcpy
(
data
->
data
,
HbComResp_A8_data
,
HbComResp_A8_len
);
data
->
len
=
HbComResp_A8_len
;
}
void
hbComMakeRespAB_modifyMachineZoneLostConfig
(
HbComData
*
data
,
AdemcoZone
zone
,
HbComResp_AB_p2
p2
)
{
memcpy
(
data
->
data
,
HbComResp_AB_head
,
6
);
data
->
data
[
6
]
=
zone
&
0xFF
;
data
->
data
[
7
]
=
p2
;
data
->
len
=
HbComResp_AB_len
;
hbSum
(
data
->
data
,
data
->
len
);
}
void
hbComMakeRespAD_getMachineZoneLostConfig
(
HbComData
*
data
,
HbComResp_AD_p1
p1
,
int
count
,
AdemcoZone
*
zones
,
HbComResp_AD_p2
p2
)
{
if
(
count
>
HbComResp_AD_max_zone
)
{
return
;
}
memcpy
(
data
->
data
,
HbComResp_AD_head
,
6
);
data
->
data
[
3
]
=
HbComResp_AD_len_min
+
(
p1
==
HbComResp_AD_p1_single
?
count
:
count
*
2
);
data
->
data
[
6
]
=
p1
;
uint8_t
*
p
=
data
->
data
+
7
;
for
(
int
i
=
0
;
i
<
count
;
i
++
)
{
if
(
p1
==
HbComResp_AD_p1_single
)
{
*
p
++
=
zones
[
i
]
&
0xFF
;
}
else
{
*
p
++
=
zones
[
i
]
>>
8
&
0xFF
;
*
p
++
=
zones
[
i
]
&
0xFF
;
}
}
*
p
++
=
(
count
>
0
)
?
p2
:
HbComResp_AD_p2_nomore
;
data
->
len
=
++
p
-
data
;
hbSum
(
data
->
data
,
data
->
len
);
}
void
hbComMakeRespAF_set3SectionMachineStatus
(
HbComData
*
data
,
HbCom_3sec_which
p1
,
HbCom_3sec_status
status
)
{
memcpy
(
data
->
data
,
HbComResp_AF_head
,
6
);
data
->
data
[
6
]
=
p1
;
data
->
data
[
7
]
=
status
;
data
->
len
=
HbComResp_AF_len
;
hbSum
(
data
->
data
,
data
->
len
);
}
void
hbComMakeRespB1_get3SectionMachineStatus
(
HbComData
*
data
,
HbMachineStatus
statusMachine
,
HbMachineStatus
statusSec1
,
HbMachineStatus
statusSec2
,
HbMachineStatus
statusSec3
)
{
memcpy
(
data
->
data
,
HbComResp_B1_head
,
6
);
data
->
data
[
6
]
=
(
statusMachine
<<
6
)
|
(
statusSec1
<<
4
)
|
(
statusSec2
<<
2
)
|
(
statusSec3
);
data
->
len
=
HbComResp_B1_len
;
hbSum
(
data
->
data
,
data
->
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 @
03661efb
...
@@ -544,7 +544,7 @@ typedef enum HbComResponseType {
...
@@ -544,7 +544,7 @@ typedef enum HbComResponseType {
//! 回应主机状态 EB BA 3F 07 P0 A0 P1 P2 P3 SUM
//! 回应主机状态 EB BA 3F 07 P0 A0 P1 P2 P3 SUM
#define HbComResp_A0_len 9
#define HbComResp_A0_len 9
#define HbComResp_A0_head "\xEB\xBA\x3F\x07"
#define HbComResp_A0_head "\xEB\xBA\x3F\x07
\xCC\xA0
"
//! 索要主机防区 EB AB 3F A1 76
//! 索要主机防区 EB AB 3F A1 76
#define HbComReq_A1_len 5
#define HbComReq_A1_len 5
...
@@ -558,6 +558,7 @@ typedef enum HbComResp_A2_p1 {
...
@@ -558,6 +558,7 @@ typedef enum HbComResp_A2_p1 {
HbComResp_A2_p1_nomore
=
0xFF
,
// 无更多防区
HbComResp_A2_p1_nomore
=
0xFF
,
// 无更多防区
HbComResp_A2_p1_more
=
0x00
,
// 还有更多防区
HbComResp_A2_p1_more
=
0x00
,
// 还有更多防区
}
HbComResp_A2_p1
;
}
HbComResp_A2_p1
;
#define HbComResp_A2_head "\xEB\xBA\x3F\x08\xCC\xA2"
//! 索要更多主机防区 EB AB 3F A2 77
//! 索要更多主机防区 EB AB 3F A2 77
//! 仅应在收到ZoneResponse的param非0xFF时发送,以索要全部防区
//! 仅应在收到ZoneResponse的param非0xFF时发送,以索要全部防区
...
@@ -588,7 +589,7 @@ typedef enum HbComResp_A4_p3 {
...
@@ -588,7 +589,7 @@ typedef enum HbComResp_A4_p3 {
HbComResp_A4_p3_ok
=
0x01
,
//! 成功
HbComResp_A4_p3_ok
=
0x01
,
//! 成功
HbComResp_A4_p3_dup
=
0x02
,
//! 失败--重码
HbComResp_A4_p3_dup
=
0x02
,
//! 失败--重码
HbComResp_A4_p3_ne
=
0x03
,
//! 失败--防区未对码 not exists
HbComResp_A4_p3_ne
=
0x03
,
//! 失败--防区未对码 not exists
}
HbComResp_A4_
code
;
}
HbComResp_A4_
p3
;
//! 获取主机定时器 EB AB 3F A5 7A
//! 获取主机定时器 EB AB 3F A5 7A
#define HbComReq_A5_len 5
#define HbComReq_A5_len 5
...
@@ -673,7 +674,7 @@ typedef enum HbCom_3sec_which {
...
@@ -673,7 +674,7 @@ typedef enum HbCom_3sec_which {
//! 三区段主机状态回应 EB BA 3F 08 P0 B1 P1 SUM
//! 三区段主机状态回应 EB BA 3F 08 P0 B1 P1 SUM
#define HbComResp_B1_len 8
#define HbComResp_B1_len 8
#define HbComResp_B1_head "\xEB\xBA\x3F\x08"
#define HbComResp_B1_head "\xEB\xBA\x3F\x08
\xCC\xB1
"
//! 读取主机账号
//! 读取主机账号
#define HbComReq_RD_acct_len 7
#define HbComReq_RD_acct_len 7
...
@@ -772,13 +773,12 @@ ADEMCO_EXPORT_SYMBOL void hbComMakeReqRD_acct(HbComData* data);
...
@@ -772,13 +773,12 @@ ADEMCO_EXPORT_SYMBOL void hbComMakeReqRD_acct(HbComData* data);
ADEMCO_EXPORT_SYMBOL
void
hbComMakeReqWR_acct
(
HbComData
*
data
,
const
char
*
acct
);
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
hbComMakeRespA0_getMachineStatus
(
HbComData
*
data
,
HbMachineStatus
status
,
HbMachineType
type
);
ADEMCO_EXPORT_SYMBOL
void
hbComMakeRespA2_getMachineZonesEmpty
(
HbComData
*
data
);
// zones and props length is count
// zones and props length is count
// if count is 0, p1 wil be set to HbComResp_A2_p1_nomore
// 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
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
hbComMakeRespA3_waitingSignal
(
HbComData
*
data
);
ADEMCO_EXPORT_SYMBOL
void
hbComMakeRespA4_modifyMachineZone
(
HbComData
*
data
,
AdemcoZone
zone
,
HbZoneProperty
prop
,
HbComResp_A4_
code
code
);
ADEMCO_EXPORT_SYMBOL
void
hbComMakeRespA4_modifyMachineZone
(
HbComData
*
data
,
AdemcoZone
zone
,
HbZoneProperty
prop
,
HbComResp_A4_
p3
p3
);
ADEMCO_EXPORT_SYMBOL
void
hbComMakeRespA6_getMachineTimer
(
HbComData
*
data
,
HbMachineTimer
*
timer
);
ADEMCO_EXPORT_SYMBOL
void
hbComMakeRespA6_getMachineTimer
(
HbComData
*
data
,
HbMachineTimer
*
timer
);
ADEMCO_EXPORT_SYMBOL
void
hbComMakeRespA7_setMachineTimer
(
HbComData
*
data
);
ADEMCO_EXPORT_SYMBOL
void
hbComMakeRespA7_setMachineTimer
(
HbComData
*
data
);
ADEMCO_EXPORT_SYMBOL
void
hbComMakeRespA8_reject
(
HbComData
*
data
);
ADEMCO_EXPORT_SYMBOL
void
hbComMakeRespA8_reject
(
HbComData
*
data
);
...
...
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