Skip to content

Commit

Permalink
add event solar disturb recover 3387; update g250
Browse files Browse the repository at this point in the history
  • Loading branch information
captainwong committed Jul 23, 2021
1 parent 76cceef commit 8bf24ba
Show file tree
Hide file tree
Showing 5 changed files with 71 additions and 28 deletions.
1 change: 1 addition & 0 deletions docs/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,7 @@
|3302|复电|BATATTERY_RECOVER|
|1311|坏电|BADBATTERY|
|1387|光扰|SOLARDISTURB|
|3387|光扰恢复|SOLARDISTURB_RECOVER|
|1381|失效|DISCONNECT|
|3381|恢复|RECONNECT|
|1384|防区电源故障|BATTERY_EXCEPTION|
Expand Down
1 change: 1 addition & 0 deletions examples/gen_event_md/gen_event_md.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@ ADEMCO_EVENT excepEvents[] = {
EVENT_BATTERY_RECOVER,
EVENT_BADBATTERY,
EVENT_SOLARDISTURB,
EVENT_SOLARDISTURB_RECOVER,
EVENT_DISCONNECT,
EVENT_RECONNECT,
EVENT_BATTERY_EXCEPTION,
Expand Down
8 changes: 7 additions & 1 deletion include/ademco_event.h
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,7 @@ enum ADEMCO_EVENT : uint32_t {
EVENT_BATTERY_RECOVER = 3302, // 复电
EVENT_BADBATTERY = 1311, // 坏电
EVENT_SOLARDISTURB = 1387, // 光扰
EVENT_SOLARDISTURB_RECOVER = 3387, // 光扰恢复
EVENT_DISCONNECT = 1381, // 失效
EVENT_RECONNECT = 3381, // 恢复
EVENT_BATTERY_EXCEPTION = 1384, // 电源故障
Expand Down Expand Up @@ -196,6 +197,7 @@ static constexpr ADEMCO_EVENT AdemcoEvents[] = {
EVENT_BATTERY_RECOVER,
EVENT_BADBATTERY,
EVENT_SOLARDISTURB,
EVENT_SOLARDISTURB_RECOVER,
EVENT_DISCONNECT,
EVENT_RECONNECT,
EVENT_LOST,
Expand Down Expand Up @@ -277,6 +279,7 @@ inline std::string ademcoEventToStringEnglish(ADEMCO_EVENT ademco_event, bool wi
case EVENT_BATTERY_RECOVER: return n_to_s(ademco_event) + "BATATTERY_RECOVER";
case EVENT_BADBATTERY: return n_to_s(ademco_event) + "BADBATTERY";
case EVENT_SOLARDISTURB: return n_to_s(ademco_event) + "SOLARDISTURB";
case EVENT_SOLARDISTURB_RECOVER: return n_to_s(ademco_event) + "SOLARDISTURB_RECOVER";
case EVENT_DISCONNECT: return n_to_s(ademco_event) + "DISCONNECT";
case EVENT_RECONNECT: return n_to_s(ademco_event) + "RECONNECT";
case EVENT_LOST: return n_to_s(ademco_event) + "LOST";
Expand Down Expand Up @@ -361,6 +364,7 @@ inline const std::wstring ademcoEventToStringChinese(ADEMCO_EVENT ademco_event,
case EVENT_BATTERY_RECOVER: return n_to_s(ademco_event) + L"复电";
case EVENT_BADBATTERY: return n_to_s(ademco_event) + L"坏电";
case EVENT_SOLARDISTURB: return n_to_s(ademco_event) + L"光扰";
case EVENT_SOLARDISTURB_RECOVER: return n_to_s(ademco_event) + L"光扰恢复";
case EVENT_DISCONNECT: return n_to_s(ademco_event) + L"失效";
case EVENT_RECONNECT: return n_to_s(ademco_event) + L"恢复";
case EVENT_LOST: return n_to_s(ademco_event) + L"失联";
Expand Down Expand Up @@ -482,6 +486,7 @@ inline EventLevel GetEventLevel(ADEMCO_EVENT ademco_event)
case EVENT_BATTERY_RECOVER:
case EVENT_BATTERY_EXCEPTION_RECOVER:
case EVENT_OTHER_EXCEPTION_RECOVER:
case EVENT_SOLARDISTURB_RECOVER:
return EVENT_LEVEL_EXCEPTION_RESUME;

case EVENT_AC_BROKE:
Expand Down Expand Up @@ -525,7 +530,8 @@ inline ADEMCO_EVENT getExceptionEventByResumeEvent(ADEMCO_EVENT resume_event)
case EVENT_BATTERY_RECOVER: return EVENT_LOWBATTERY;
case EVENT_BATTERY_EXCEPTION_RECOVER: return EVENT_BATTERY_EXCEPTION;
case EVENT_OTHER_EXCEPTION_RECOVER: return EVENT_OTHER_EXCEPTION;
case EVENT_AC_RECOVER: return EVENT_AC_BROKE;
case EVENT_AC_RECOVER: return EVENT_AC_BROKE;
case EVENT_SOLARDISTURB_RECOVER: return EVENT_SOLARDISTURB;
default: return EVENT_INVALID_EVENT;
}
}
Expand Down
67 changes: 51 additions & 16 deletions include/hb_detail.h
Original file line number Diff line number Diff line change
Expand Up @@ -1595,9 +1595,9 @@ enum Sound : Char {
SOUND_PART_ALARM,
//! "接警中心报警选择" 85
SOUND_SEL_ALARM_CENTER,
//! "网络主机" 86
//! "网络主机" 86 没有资源
SOUND_NET_MACHINE,
//! 已断开连接 87
//! 已断开连接 87 没有资源
SOUND_DISCONNECT,

//! 88
Expand Down Expand Up @@ -2005,7 +2005,7 @@ enum AlarmCode : Char {
//! 关机
ALARM_SHUTDOWN = 0xED,
//! 防拆
ALARM_TEMPER = 0xBA,
ALARM_TAMPER = 0xBA,
//! 发低电
ALARM_S_BATTERY_LOW = 0xAB,
//! 收低电
Expand Down Expand Up @@ -2250,14 +2250,6 @@ struct AllZoneInfo {
}
};

/**
* @brief 串口透传协议
* @note 网络传输模块与主机模块通信协议
* @note 客户端(手机APP、接警中心等)会用到一些透传数据
*/
namespace com
{

//! PC到主机,查询主机(自身或防区)或分机(自身或防区)状态
struct Query {
static constexpr Char len = 8;
Expand Down Expand Up @@ -2314,12 +2306,22 @@ struct Query {
return queryZoneStatusOfSubMachine(ademco::Zone4MachineSelf);
}

static Query queryZoneStatusOfSubMachine(Char zone) {
static Query queryZoneStatusOfSubMachine(uint16_t zone) {
Query query;
query.setZone(zone);
query.data[5] = Param::Get::P1::QuerySubMachine;
query.data[6] = 0xEE;
sum(query); return query;
sum(query);
return query;
}

static Query setQuery(uint16_t zone = 0, Param::Set::P1 action = Param::Set::P1::SetArm) {
Query query;
query.setZone(zone);
query.data[5] = action;
query.data[6] = 0xEE;
sum(query);
return query;
}
};

Expand Down Expand Up @@ -2352,8 +2354,41 @@ struct WriteToMachineRequest {
}
};

} // namespace com
} // namespace old

//! 从 EB B1 。。。命令[5]提取的事件码
ademco::ADEMCO_EVENT ademcoEventFromCode(Char code) {
switch (code) {
case MachineStatus::Arm: return ademco::ADEMCO_EVENT::EVENT_ARM;
case MachineStatus::Disarm: return ademco::ADEMCO_EVENT::EVENT_DISARM;
case MachineStatus::HalfArm: return ademco::ADEMCO_EVENT::EVENT_HALFARM;

case AlarmCode::MACHINE_EMERGENCY: return ademco::ADEMCO_EVENT::EVENT_EMERGENCY;
case AlarmCode::ALARM_BURGLAR: return ademco::ADEMCO_EVENT::EVENT_BURGLAR;
case AlarmCode::ALARM_FIRE: return ademco::ADEMCO_EVENT::EVENT_FIRE;
case AlarmCode::ALARM_DURESS: return ademco::ADEMCO_EVENT::EVENT_DURESS;
case AlarmCode::ALARM_GAS: return ademco::ADEMCO_EVENT::EVENT_GAS;
case AlarmCode::ALARM_WATER: return ademco::ADEMCO_EVENT::EVENT_WATER;
case AlarmCode::ALARM_TAMPER: return ademco::ADEMCO_EVENT::EVENT_TAMPER;
case AlarmCode::ALARM_S_BATTERY_LOW:
case AlarmCode::ALARM_R_BATTERY_LOW: return ademco::ADEMCO_EVENT::EVENT_LOWBATTERY;
case AlarmCode::ALARM_S_BATTERY_BROKE:
case AlarmCode::ALARM_R_BATTERY_BROKE: return ademco::ADEMCO_EVENT::EVENT_BADBATTERY;
case AlarmCode::ALARM_BETTERY_RECOVER: return ademco::ADEMCO_EVENT::EVENT_BATTERY_RECOVER;
case AlarmCode::ALARM_SOLAR_DISTURB: return ademco::ADEMCO_EVENT::EVENT_SOLARDISTURB;
case AlarmCode::ALARM_SOLAR_RECOVER: return ademco::ADEMCO_EVENT::EVENT_SOLARDISTURB_RECOVER;
case AlarmCode::ALARM_LONGTIME_DISCONN: return ademco::ADEMCO_EVENT::EVENT_DISCONNECT;
case AlarmCode::ALARM_LONGTIME_RECOVER: return ademco::ADEMCO_EVENT::EVENT_RECONNECT;
case AlarmCode::ALARM_DOOR_RING: return ademco::ADEMCO_EVENT::EVENT_DOORRINGING;
case AlarmCode::ALARM_SM_EXCEPTION: return ademco::ADEMCO_EVENT::EVENT_SUB_MACHINE_SENSOR_EXCEPTION;
case AlarmCode::ALARM_SM_EXCEPT_RESUME: return ademco::ADEMCO_EVENT::EVENT_SUB_MACHINE_SENSOR_RESUME;
case AlarmCode::ALARM_SM_POWER_EXCEPT: return ademco::ADEMCO_EVENT::EVENT_SUB_MACHINE_POWER_EXCEPTION;
case AlarmCode::ALARM_SM_POWER_RESUME: return ademco::ADEMCO_EVENT::EVENT_SUB_MACHINE_POWER_RESUME;

case AlarmCode::ALARM_STARTUP:
case AlarmCode::ALARM_SHUTDOWN:
case AlarmCode::ALARM_SENDER_REBOOT:
default: return ademco::ADEMCO_EVENT::EVENT_INVALID_EVENT;
}
}

} // namespace g250
} // namespace hb
22 changes: 11 additions & 11 deletions include/hb_helper.h
Original file line number Diff line number Diff line change
Expand Up @@ -103,19 +103,19 @@ static ademco::ADEMCO_EVENT ademcoEventFromZoneProperty(common::ZoneProperty zp)
}

//! 从防区属性推出应该发送什么警情事件码
static ademco::ADEMCO_EVENT ademcoEventFromZonePropertyOld(old::ZoneProperty zp)
static ademco::ADEMCO_EVENT ademcoEventFromZonePropertyOld(g250::ZoneProperty zp)
{
switch (zp) {
case hb::old::ZP_GLOBAL: return ademco::EVENT_BURGLAR;
case hb::old::ZP_HALF: return ademco::EVENT_BURGLAR;
case hb::old::ZP_EMERGENCY: return ademco::EVENT_EMERGENCY;
case hb::old::ZP_DOORRING: return ademco::EVENT_DOORRINGING;
case hb::old::ZP_FIRE: return ademco::EVENT_FIRE;
case hb::old::ZP_DURESS: return ademco::EVENT_DURESS;
case hb::old::ZP_GAS: return ademco::EVENT_GAS;
case hb::old::ZP_WATER: return ademco::EVENT_WATER;
case hb::old::ZP_SHIELD:
default: return ademco::EVENT_INVALID_EVENT;
case hb::g250::ZP_GLOBAL: return ademco::EVENT_BURGLAR;
case hb::g250::ZP_HALF: return ademco::EVENT_BURGLAR;
case hb::g250::ZP_EMERGENCY: return ademco::EVENT_EMERGENCY;
case hb::g250::ZP_DOORRING: return ademco::EVENT_DOORRINGING;
case hb::g250::ZP_FIRE: return ademco::EVENT_FIRE;
case hb::g250::ZP_DURESS: return ademco::EVENT_DURESS;
case hb::g250::ZP_GAS: return ademco::EVENT_GAS;
case hb::g250::ZP_WATER: return ademco::EVENT_WATER;
case hb::g250::ZP_SHIELD:
default: return ademco::EVENT_INVALID_EVENT;
}
}

Expand Down

0 comments on commit 8bf24ba

Please sign in to comment.