From aeac7bf61d05b5f839225b365d224f55e2e2d45d Mon Sep 17 00:00:00 2001 From: i7-8700 <1281261856@qq.com> Date: Fri, 25 Sep 2020 06:54:58 +0800 Subject: [PATCH] update --- examples/bench_client_ex/bench_client_ex.cpp | 26 ++++++++++++++++++- .../server_demo_libevent.cpp | 2 +- 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/examples/bench_client_ex/bench_client_ex.cpp b/examples/bench_client_ex/bench_client_ex.cpp index fbd62b0..a5c4afc 100644 --- a/examples/bench_client_ex/bench_client_ex.cpp +++ b/examples/bench_client_ex/bench_client_ex.cpp @@ -157,6 +157,16 @@ void handle_ademco_msg(Session* session, bufferevent* bev) } char buf[1024]; auto output = bufferevent_get_output(bev); + + auto ack = [&]() { + AdemcoPacket pkt; + auto n = pkt.make_ack(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, pkt.toString().data()); + } + evbuffer_add(output, buf, n); + }; + switch (session->packet.id_.eid_) { case AdemcoMsgId::id_ack: /*if (load_test) { @@ -175,6 +185,7 @@ void handle_ademco_msg(Session* session, bufferevent* bev) switch (session->packet.ademcoData_.ademco_event_) { case EVENT_WHAT_IS_YOUR_TYPE: { + ack(); auto n = session->packet.make_hb(buf, sizeof(buf), session->packet.seq_.value_, session->acct, session->ademco_id, 0, ademcoEventFromMachineType(session->type), 0); @@ -206,6 +217,7 @@ void handle_ademco_msg(Session* session, bufferevent* bev) } else if (0 == session->packet.ademcoData_.gg_) { session->status = machineStatusFromAdemcoEvent(session->packet.ademcoData_.ademco_event_); } else { break; } + ack(); 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_); @@ -253,6 +265,7 @@ void handle_ademco_msg(Session* session, bufferevent* bev) } else if (0 == session->packet.ademcoData_.gg_) { session->status = MachineStatus::Disarm; } else { break; } + ack(); 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_); @@ -275,6 +288,17 @@ void handle_ademco_msg(Session* session, bufferevent* bev) break; } + case EVENT_EMERGENCY: + { + ack(); + auto n = session->packet.make_hb(buf, sizeof(buf), + session->packet.seq_.value_, session->acct, session->ademco_id, 0, EVENT_EMERGENCY, 0); + 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); + } + } } @@ -638,7 +662,7 @@ void commandcb(evutil_socket_t, short, void* user_data) // context->packet.toString(ademco::detail::ToStringOption::ALL_CHAR_AS_HEX).data()); // } //} else - if (client->type == EVENT_I_AM_3_SECTION_MACHINE && (e == EVENT_ARM || e == EVENT_DISARM)) { + if (client->type == MachineType::ThreeSection && (e == EVENT_ARM || e == EVENT_DISARM)) { for (AdemcoGG gg = 1; gg <= 3; gg++) { n = client->packet.make_hb(buf, sizeof(buf), client->nextSeq(), client->acct, client->ademco_id, gg, e, 0); evbuffer_add(output, buf, n); diff --git a/examples/server_demo_libevent/server_demo_libevent.cpp b/examples/server_demo_libevent/server_demo_libevent.cpp index 2896f3c..3f68d9f 100644 --- a/examples/server_demo_libevent/server_demo_libevent.cpp +++ b/examples/server_demo_libevent/server_demo_libevent.cpp @@ -371,7 +371,7 @@ void handle_ademco_msg(ThreadContext* context, bufferevent* bev) break; } } else if (ademco::isMachineStatusEvent(context->packet.ademcoData_.ademco_event_)) { - auto status = machienStatusFromAdemcoEvent(context->packet.ademcoData_.ademco_event_); + auto status = machineStatusFromAdemcoEvent(context->packet.ademcoData_.ademco_event_); if (context->packet.ademcoData_.gg_ == 0) { client.status = status; } else if (context->packet.ademcoData_.gg_ == 1) { client.status1 = status; } else if (context->packet.ademcoData_.gg_ == 2) { client.status2 = status; } -- 2.18.1