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
b8ff9c3e
Commit
b8ff9c3e
authored
Sep 23, 2020
by
captainwong
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
update
parent
ca3d9f7e
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
86 additions
and
2 deletions
+86
-2
bench_client_ex.cpp
examples/bench_client_ex/bench_client_ex.cpp
+85
-1
hb_helper.h
include/hb_helper.h
+1
-1
No files found.
examples/bench_client_ex/bench_client_ex.cpp
View file @
b8ff9c3e
...
...
@@ -186,11 +186,95 @@ void handle_ademco_msg(Session* session, bufferevent* bev)
}
case
EVENT_ARM
:
case
EVENT_HALFARM
:
case
EVENT_HALFARM_1456
:
{
if
(
session
->
type
==
MachineType
::
ThreeSection
&&
1
<=
session
->
packet
.
ademcoData_
.
gg_
&&
session
->
packet
.
ademcoData_
.
gg_
<=
3
)
{
do
{
if
(
session
->
packet
.
ademcoData_
.
ademco_event_
!=
EVENT_ARM
)
{
if
(
!
machineCanHalfArm
(
session
->
type
))
{
break
;
}
}
if
(
session
->
type
==
MachineType
::
ThreeSection
)
{
if
(
1
==
session
->
packet
.
ademcoData_
.
gg_
)
{
session
->
status1
=
machineStatusFromAdemcoEvent
(
session
->
packet
.
ademcoData_
.
ademco_event_
);
}
else
if
(
2
==
session
->
packet
.
ademcoData_
.
gg_
)
{
session
->
status2
=
machineStatusFromAdemcoEvent
(
session
->
packet
.
ademcoData_
.
ademco_event_
);
}
else
if
(
3
==
session
->
packet
.
ademcoData_
.
gg_
)
{
session
->
status3
=
machineStatusFromAdemcoEvent
(
session
->
packet
.
ademcoData_
.
ademco_event_
);
}
else
{
break
;
}
}
else
if
(
0
==
session
->
packet
.
ademcoData_
.
gg_
)
{
session
->
status
=
machineStatusFromAdemcoEvent
(
session
->
packet
.
ademcoData_
.
ademco_event_
);
}
else
{
break
;
}
auto
n
=
session
->
packet
.
make_hb
(
buf
,
sizeof
(
buf
),
session
->
packet
.
seq_
.
value_
,
session
->
acct
,
session
->
ademco_id
,
session
->
packet
.
ademcoData_
.
gg_
,
session
->
packet
.
ademcoData_
.
ademco_event_
,
session
->
packet
.
ademcoData_
.
zone_
);
if
(
print_data
)
{
printf
(
"T#%d C#%d send:%s
\n
"
,
session
->
thread_id
,
session
->
id
,
session
->
packet
.
toString
().
data
());
}
evbuffer_add
(
output
,
buf
,
n
);
return
;
}
while
(
0
);
// nak
{
auto
n
=
session
->
packet
.
make_nak
(
buf
,
sizeof
(
buf
),
session
->
packet
.
seq_
.
value_
,
session
->
acct
,
session
->
ademco_id
);
if
(
print_data
)
{
printf
(
"T#%d C#%d send:%s
\n
"
,
session
->
thread_id
,
session
->
id
,
session
->
packet
.
toString
().
data
());
}
evbuffer_add
(
output
,
buf
,
n
);
}
break
;
}
case
EVENT_DISARM
:
{
if
(
!
session
->
packet
.
xdata_
||
ademco
::
detail
::
toString
(
session
->
packet
.
xdata_
->
data_
)
!=
"123456"
)
{
printf
(
"Wrong disarm password: %s
\n
"
,
ademco
::
detail
::
toString
(
session
->
packet
.
xdata_
->
data_
).
data
());
auto
n
=
session
->
packet
.
make_hb
(
buf
,
sizeof
(
buf
),
session
->
packet
.
seq_
.
value_
,
session
->
acct
,
session
->
ademco_id
,
session
->
packet
.
ademcoData_
.
gg_
,
EVENT_DISARM_PWD_ERR
,
session
->
packet
.
ademcoData_
.
zone_
);
if
(
print_data
)
{
printf
(
"T#%d C#%d send:%s
\n
"
,
session
->
thread_id
,
session
->
id
,
session
->
packet
.
toString
().
data
());
}
evbuffer_add
(
output
,
buf
,
n
);
break
;
}
do
{
if
(
session
->
type
==
MachineType
::
ThreeSection
)
{
if
(
1
==
session
->
packet
.
ademcoData_
.
gg_
)
{
session
->
status1
=
MachineStatus
::
Disarm
;
}
else
if
(
2
==
session
->
packet
.
ademcoData_
.
gg_
)
{
session
->
status2
=
MachineStatus
::
Disarm
;
}
else
if
(
3
==
session
->
packet
.
ademcoData_
.
gg_
)
{
session
->
status3
=
MachineStatus
::
Disarm
;
}
else
{
break
;
}
}
else
if
(
0
==
session
->
packet
.
ademcoData_
.
gg_
)
{
session
->
status
=
MachineStatus
::
Disarm
;
}
else
{
break
;
}
auto
n
=
session
->
packet
.
make_hb
(
buf
,
sizeof
(
buf
),
session
->
packet
.
seq_
.
value_
,
session
->
acct
,
session
->
ademco_id
,
session
->
packet
.
ademcoData_
.
gg_
,
EVENT_DISARM
,
session
->
packet
.
ademcoData_
.
zone_
);
if
(
print_data
)
{
printf
(
"T#%d C#%d send:%s
\n
"
,
session
->
thread_id
,
session
->
id
,
session
->
packet
.
toString
().
data
());
}
evbuffer_add
(
output
,
buf
,
n
);
return
;
}
while
(
0
);
// nak
{
auto
n
=
session
->
packet
.
make_nak
(
buf
,
sizeof
(
buf
),
session
->
packet
.
seq_
.
value_
,
session
->
acct
,
session
->
ademco_id
);
if
(
print_data
)
{
printf
(
"T#%d C#%d send:%s
\n
"
,
session
->
thread_id
,
session
->
id
,
session
->
packet
.
toString
().
data
());
}
evbuffer_add
(
output
,
buf
,
n
);
}
break
;
}
}
}
...
...
include/hb_helper.h
View file @
b8ff9c3e
...
...
@@ -43,7 +43,7 @@ static ademco::ADEMCO_EVENT ademcoEventFromMachineType(common::MachineType type)
}
//! 从事件码推出主机状态
static
common
::
MachineStatus
machi
en
StatusFromAdemcoEvent
(
ademco
::
ADEMCO_EVENT
e
)
static
common
::
MachineStatus
machi
ne
StatusFromAdemcoEvent
(
ademco
::
ADEMCO_EVENT
e
)
{
switch
(
e
)
{
case
ademco
:
:
EVENT_ARM
:
return
common
::
MachineStatus
::
Arm
;
...
...
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