#pragma once #ifndef _CRT_SECURE_NO_WARNINGS #define _CRT_SECURE_NO_WARNINGS #endif #ifndef NOMINMAX #define NOMINMAX #endif #include <stdint.h> #ifdef ENABLE_ADEMCO_EVENT_TO_STRING #include <string> #endif // ENABLE_ADEMCO_EVENT_TO_STRING namespace ademco { typedef uint32_t AdemcoId; typedef uint8_t AdemcoGG; typedef uint32_t AdemcoZone; //! 安定宝ID范围 constexpr AdemcoId AdemcoIdMin = 1; constexpr AdemcoId AdemcoIdMax = 999999; // 兼容性考虑,最大安定宝 ID 为 0x0F423F constexpr AdemcoId AdemcoIdSentinel = AdemcoIdMax + 1; inline bool isValidAdemcoId(AdemcoId ademcoId) { return AdemcoIdMin <= ademcoId && ademcoId <= AdemcoIdMax; } //! 防区号为0时表示主机自身 constexpr AdemcoZone Zone4MachineSelf = 0; //! 主机防区号范围 constexpr AdemcoZone ZoneMin = 1; //! 对任何主机类型,最大的防区号 constexpr AdemcoZone ZoneMax = 999; constexpr AdemcoZone ZoneSentinel = ZoneMax + 1; //! 对任何主机类型,防区号是否合法(可以包含0防区) inline bool isValidZone(AdemcoZone zone) { return Zone4MachineSelf <= zone && zone < ZoneSentinel; } //! 对任何主机类型,防区号是否合法(不可以包含0防区) inline bool isValidZoneStrict(AdemcoZone zone) { return ZoneMin <= zone && zone < ZoneSentinel; } //! 三防区主机状态GG范围 1~3 constexpr AdemcoGG GGMin4ThreeSectionMachine = 1; constexpr AdemcoGG GGMax4ThreeSectionMachine = 3; //! 是否合法的三防区主机状态GG inline bool isValidGG4ThreeSectionMachineStatus(AdemcoGG gg) { return GGMin4ThreeSectionMachine <= gg && gg <= GGMax4ThreeSectionMachine; } //! 安定宝事件代码 enum ADEMCO_EVENT : uint32_t { EVENT_INVALID_EVENT = 0, // -------------------标准安定宝协议事件-------------------------------- // 主机或分机状态报告 EVENT_ARM = 3400, // 布防 EVENT_DISARM = 1400, // 撤防 EVENT_HALFARM_1456 = 1456, // 半布防 EVENT_HALFARM = 3456, // 半布防 EVENT_EMERGENCY = 1120, // 紧急报警 // 防区报警 EVENT_BURGLAR = 1130, // 盗警 EVENT_DOORRINGING = 1134, // 门铃 EVENT_FIRE = 1110, // 火警 EVENT_DURESS = 1121, // 胁迫 EVENT_GAS = 1151, // 煤气 EVENT_WATER = 1113, // 水警 EVENT_TAMPER = 1137, // 主机防拆 EVENT_ZONE_TAMPER = 1383, // 防区防拆 EVENT_BYPASS = 1570, // 旁路 EVENT_BYPASS_RESUME = 3570, // 解除旁路 // 防区异常 EVENT_AC_BROKE = 1301, // 主机AC掉电 EVENT_AC_RECOVER = 3301, // 主机AC复电 EVENT_LOWBATTERY = 1302, // 低电 EVENT_BATTERY_RECOVER = 3302, // 复电 EVENT_BADBATTERY = 1311, // 坏电 EVENT_SOLARDISTURB = 1387, // 光扰 EVENT_SOLARDISTURB_RECOVER = 3387, // 光扰恢复 EVENT_DISCONNECT = 1381, // 失效 EVENT_RECONNECT = 3381, // 恢复 EVENT_BATTERY_EXCEPTION = 1384, // 电源故障 EVENT_BATTERY_EXCEPTION_RECOVER = 3384, // 电源故障恢复 EVENT_OTHER_EXCEPTION = 1380, // 其他故障 EVENT_OTHER_EXCEPTION_RECOVER = 3380, // 其他故障恢复 EVENT_LOST = 1393, // 失联 EVENT_LOST_RECOVER = 3393, // 失联恢复 // 标准事件,但不做处理 EVENT_3100 = 3100, // 液晶主机清除异常指示 // ------------------------------------------------------------------ // ------------------私有事件----------------------------------------- EVENT_SERIAL485DIS = 1485, // 网络模块与主机485串口连接断开 EVENT_SERIAL485CONN = 3485, // 网络模块与主机485串口连接恢复 EVENT_CONN_HANGUP = 1700, // 链路挂起 EVENT_CONN_RESUME = 3700, // 链路恢复 EVENT_DISARM_PWD_ERR = 1701, // 撤防密码错误 EVENT_SUB_MACHINE_SENSOR_EXCEPTION = 1702, // 分机探头异常 EVENT_SUB_MACHINE_SENSOR_RESUME = 3702, // 分机探头恢复 EVENT_SUB_MACHINE_POWER_EXCEPTION = 1703, // 分机电源异常 EVENT_SUB_MACHINE_POWER_RESUME = 3703, // 分机电源恢复 EVENT_COM_PASSTHROUGH = 1704, // 串口透传 EVENT_ENTER_SET_MODE = 2704, // 进入设置状态 EVENT_EXIT_SET_MODE = 3704, // 接警中心发送,为停止索要;报警主机发送,为拒绝索要 EVENT_QUERY_SUB_MACHINE = 1705, // 查询分机信息 EVENT_WRITE_TO_MACHINE = 1706, // 写入主机信息 EVENT_I_AM_NET_MODULE = 1707, // 主机类型--网络模块 EVENT_I_AM_GPRS = 1717, // 主机类型--GPRS主机 EVENT_I_AM_LCD_MACHINE = 1727, // 主机类型--液晶主机 EVENT_I_AM_WIRE_MACHINE = 1737, // 主机类型--网线主机 EVENT_I_AM_WIFI_MACHINE = 1747, // 主机类型--WiFi主机 EVENT_I_AM_3_SECTION_MACHINE = 1757, // 主机类型--三区段主机 EVENT_I_AM_IOT_MACHINE = 1767, // 主机类型--物联卡主机 EVENT_I_AM_TRUE_COLOR = 1777, // 主机类型--真彩主机 EVENT_I_AM_GPRS_IOT = 1787, // 主机类型--物联卡主机 EVENT_I_AM_GPRS_PHONE = 1797, // 主机类型--GRPS主机带电话功能 EVENT_I_AM_NB_MACHINE = 1807, // 主机类型--NB报警接收主机 EVENT_PHONE_USER_SOS = 1709, // 手机用户SOS EVENT_PHONE_USER_CANCLE_ALARM = 1711, // 手机用户消警 EVENT_ENTER_SETTING_MODE = 1712, // 主机进入设置状态 EVENT_EXIT_SETTING_MODE = 3712, // 主机退出设置状态 EVENT_RESTORE_FACTORY_SETTINGS_710 = 1710, // 主机恢复出厂设置 EVENT_RESTORE_FACTORY_SETTINGS = 1713, // 主机恢复出厂设置 // 此处电话设置仅为主机自身支持的电话设置,与阿里语音无关 EVENT_SIM_IS_IOT_CARD = 1756, // 主机SIM卡为物联卡,禁用主机侧电话设置 EVENT_SIM_IS_IOT_PLATFORM_CARD = 2756, // 主机SIM卡为平台物联卡,禁用主机侧电话设置 EVENT_SIM_IS_NOT_IOT_CARD = 3756, // 主机SIM卡为非物联卡,启用主机侧电话设置 EVENT_WHAT_IS_YOUR_TYPE = 1798, // 索要主机类型 EVENT_SIGNAL_STRENGTH_CHANGED = 1799, // 主机信号强度变化 // 2021年1月24日17:06:55修改,对标丛文3B0 3B2 EVENT_OFFLINE = 1944, // 主机断线 EVENT_ONLINE = 1946, // 主机上线 AdemcoEventSentinel = 10000, // -------------------接警中心内部使用事件------------------------------ EVENT_PRIVATE_EVENT_BASE = 0x00010000, EVENT_CLEARMSG, // 清除报警信息 EVENT_ZONE_CHANGED, // 防区数量变化 EVENT_SUBMACHINECNT, // 分机数量变化 EVENT_MACHINE_INFO_CHANGED, // 主机信息改变,需要界面刷新 EVENT_IM_GONNA_DIE, // 主机类已析构,通知界面 EVENT_LINK_TEST, // 主机心跳 EVENT_OP_FAILED, // 布撤防失败 EVENT_PRIVATE_EVENT_MAX, }; #ifdef ENABLE_ADEMCO_EVENT_TO_STRING static constexpr ADEMCO_EVENT AdemcoEvents[] = { EVENT_ARM, EVENT_DISARM, EVENT_HALFARM, EVENT_EMERGENCY, EVENT_BURGLAR, EVENT_DOORRINGING, EVENT_FIRE, EVENT_DURESS, EVENT_GAS, EVENT_WATER, EVENT_TAMPER, EVENT_ZONE_TAMPER, EVENT_BYPASS, EVENT_BYPASS_RESUME, EVENT_AC_BROKE, EVENT_AC_RECOVER, EVENT_LOWBATTERY, EVENT_BATTERY_RECOVER, EVENT_BADBATTERY, EVENT_SOLARDISTURB, EVENT_SOLARDISTURB_RECOVER, EVENT_DISCONNECT, EVENT_RECONNECT, EVENT_LOST, EVENT_LOST_RECOVER, EVENT_3100, EVENT_BATTERY_EXCEPTION, EVENT_BATTERY_EXCEPTION_RECOVER, EVENT_OTHER_EXCEPTION, EVENT_OTHER_EXCEPTION_RECOVER, EVENT_SERIAL485DIS, EVENT_SERIAL485CONN, EVENT_CONN_HANGUP, EVENT_CONN_RESUME, EVENT_DISARM_PWD_ERR, EVENT_SUB_MACHINE_SENSOR_EXCEPTION, EVENT_SUB_MACHINE_SENSOR_RESUME, EVENT_SUB_MACHINE_POWER_EXCEPTION, EVENT_SUB_MACHINE_POWER_RESUME, EVENT_COM_PASSTHROUGH, EVENT_ENTER_SET_MODE, EVENT_EXIT_SET_MODE, EVENT_QUERY_SUB_MACHINE, EVENT_WRITE_TO_MACHINE, EVENT_I_AM_NET_MODULE, EVENT_I_AM_GPRS, EVENT_I_AM_LCD_MACHINE, EVENT_I_AM_WIRE_MACHINE, EVENT_I_AM_WIFI_MACHINE, EVENT_I_AM_3_SECTION_MACHINE, EVENT_I_AM_IOT_MACHINE, EVENT_I_AM_TRUE_COLOR, EVENT_I_AM_GPRS_IOT, EVENT_I_AM_GPRS_PHONE, EVENT_I_AM_NB_MACHINE, EVENT_SIM_IS_IOT_CARD, EVENT_SIM_IS_IOT_PLATFORM_CARD, EVENT_SIM_IS_NOT_IOT_CARD, EVENT_PHONE_USER_SOS, EVENT_PHONE_USER_CANCLE_ALARM, EVENT_ENTER_SETTING_MODE, EVENT_EXIT_SETTING_MODE, EVENT_RESTORE_FACTORY_SETTINGS, EVENT_WHAT_IS_YOUR_TYPE, EVENT_SIGNAL_STRENGTH_CHANGED, }; inline std::string ademcoEventToStringEnglish(ADEMCO_EVENT ademco_event, bool with_event_number = true) { auto n_to_s = [&with_event_number](uint32_t n) ->std::string { if (with_event_number) { return std::to_string(n) + "--"; } return std::string(); }; switch (ademco_event) { case EVENT_ARM: return n_to_s(ademco_event) + "ARM"; case EVENT_BURGLAR: return n_to_s(ademco_event) + "BURGLAR"; case EVENT_DISARM: return n_to_s(ademco_event) + "DISARM"; case EVENT_DURESS: return n_to_s(ademco_event) + "DURESS"; case EVENT_EMERGENCY: return n_to_s(ademco_event) + "EMERGENCY"; case EVENT_FIRE: return n_to_s(ademco_event) + "FIRE"; case EVENT_GAS: return n_to_s(ademco_event) + "GAS"; case EVENT_HALFARM: case EVENT_HALFARM_1456: return n_to_s(ademco_event) + "HALFARM"; case EVENT_TAMPER: return n_to_s(ademco_event) + "TAMPER"; case EVENT_ZONE_TAMPER: return n_to_s(ademco_event) + "ZONE_TAMPER"; case EVENT_BYPASS: return n_to_s(ademco_event) + "BYPASS"; case EVENT_BYPASS_RESUME: return n_to_s(ademco_event) + "BYPASS_RESUME"; case EVENT_WATER: return n_to_s(ademco_event) + "WATER"; case EVENT_AC_BROKE: return n_to_s(ademco_event) + "AC BROKE"; case EVENT_AC_RECOVER: return n_to_s(ademco_event) + "AC RECOVER"; case EVENT_LOWBATTERY: return n_to_s(ademco_event) + "LOWBATTERY"; 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"; case EVENT_LOST_RECOVER: return n_to_s(ademco_event) + "LOST_RECOVER"; case EVENT_3100: return n_to_s(ademco_event) + "LCD CLEAR EXCEPTION"; case EVENT_BATTERY_EXCEPTION: return n_to_s(ademco_event) + "BATTERY_EXCEPTION"; case EVENT_BATTERY_EXCEPTION_RECOVER: return n_to_s(ademco_event) + "BATTERY_EXCEPTION_RECOVER"; case EVENT_OTHER_EXCEPTION: return n_to_s(ademco_event) + "OTHER_EXCEPTION"; case EVENT_OTHER_EXCEPTION_RECOVER: return n_to_s(ademco_event) + "OTHER_EXCEPTION_RECOVER"; case EVENT_SERIAL485DIS: return n_to_s(ademco_event) + "485DIS"; case EVENT_SERIAL485CONN: return n_to_s(ademco_event) + "485CONN"; case EVENT_DOORRINGING: return n_to_s(ademco_event) + "DOORRINGING"; case EVENT_CONN_HANGUP: return n_to_s(ademco_event) + "CONN_HANGUP"; case EVENT_CONN_RESUME: return n_to_s(ademco_event) + "CONN_RESUME"; case EVENT_DISARM_PWD_ERR: return n_to_s(ademco_event) + "DISARM_PWD_ERR"; case EVENT_SUB_MACHINE_SENSOR_EXCEPTION: return n_to_s(ademco_event) + "SUB_SENSOR_EXCEPTION"; case EVENT_SUB_MACHINE_SENSOR_RESUME: return n_to_s(ademco_event) + "SUB_SENSOR_RESUME"; case EVENT_SUB_MACHINE_POWER_EXCEPTION: return n_to_s(ademco_event) + "SUB_POWER_EXCEPTION"; case EVENT_SUB_MACHINE_POWER_RESUME: return n_to_s(ademco_event) + "SUB_POWER_RESUME"; case EVENT_COM_PASSTHROUGH: return n_to_s(ademco_event) + "COM_PASSTHROUGH"; case EVENT_ENTER_SET_MODE: return n_to_s(ademco_event) + "ENTER_SET_MODE"; case EVENT_EXIT_SET_MODE: return n_to_s(ademco_event) + "EXIT_SET_MODE"; case EVENT_QUERY_SUB_MACHINE: return n_to_s(ademco_event) + "QUERY"; case EVENT_WRITE_TO_MACHINE: return n_to_s(ademco_event) + "WRITE_TO_MACHINE"; case EVENT_I_AM_NET_MODULE: return n_to_s(ademco_event) + "I_AM_NET_MODULE"; case EVENT_PHONE_USER_SOS: return n_to_s(ademco_event) + "SOS"; case EVENT_PHONE_USER_CANCLE_ALARM: return n_to_s(ademco_event) + "PHONE_USER_CANCLE_ALARM"; case EVENT_I_AM_GPRS: return n_to_s(ademco_event) + "I_AM_GPRS_MACHINE"; case EVENT_I_AM_LCD_MACHINE: return n_to_s(ademco_event) + "I_AM_LCD_MACHINE"; case EVENT_I_AM_WIRE_MACHINE: return n_to_s(ademco_event) + "I_AM_WIRE_MACHINE"; case EVENT_I_AM_WIFI_MACHINE: return n_to_s(ademco_event) + "I_AM_WIFI_MACHINE"; case EVENT_I_AM_3_SECTION_MACHINE: return n_to_s(ademco_event) + "I_AM_3_SECTION_MACHINE"; case EVENT_I_AM_IOT_MACHINE: return n_to_s(ademco_event) + "I_AM_IOT_MACHINE"; case EVENT_I_AM_TRUE_COLOR: return n_to_s(ademco_event) + "I_AM_TRUE_COLOR"; case EVENT_I_AM_GPRS_IOT: return n_to_s(ademco_event) + "I_AM_GPRS_IOT"; case EVENT_I_AM_GPRS_PHONE: return n_to_s(ademco_event) + "I_AM_GPRS_PHONE"; case EVENT_I_AM_NB_MACHINE: return n_to_s(ademco_event) + "I_AM_NB_MACHINE"; case EVENT_SIM_IS_IOT_CARD: return n_to_s(ademco_event) + "SIM card is IOT"; case EVENT_SIM_IS_IOT_PLATFORM_CARD: return n_to_s(ademco_event) + "SIM card is Platform IOT"; case EVENT_SIM_IS_NOT_IOT_CARD: return n_to_s(ademco_event) + "SIM card is not IOT"; case EVENT_ENTER_SETTING_MODE: return n_to_s(ademco_event) + "ENTER_SETTING_MODE"; case EVENT_EXIT_SETTING_MODE: return n_to_s(ademco_event) + "EXIT_SETTING_MODE"; case EVENT_RESTORE_FACTORY_SETTINGS_710: case EVENT_RESTORE_FACTORY_SETTINGS: return n_to_s(ademco_event) + "RESTORE_FACTORY_SETTINGS"; case EVENT_WHAT_IS_YOUR_TYPE: return n_to_s(ademco_event) + "WHAT_IS_YOUR_TYPE"; case EVENT_SIGNAL_STRENGTH_CHANGED: return n_to_s(ademco_event) + "SIGNAL_STRENGTH_CHANGED"; case EVENT_OFFLINE: return n_to_s(ademco_event) + "EVENT_OFFLINE"; case EVENT_ONLINE: return n_to_s(ademco_event) + "EVENT_ONLINE"; default: with_event_number = true; return n_to_s(ademco_event) + "undefined"; } } inline const std::wstring ademcoEventToStringChinese(ADEMCO_EVENT ademco_event, bool with_event_number = true) { auto n_to_s = [&with_event_number](uint32_t n) ->std::wstring { if (with_event_number) { return std::to_wstring(n) + L"--"; } return std::wstring(); }; switch (ademco_event) { case EVENT_ARM: return n_to_s(ademco_event) + L"布防"; case EVENT_BURGLAR: return n_to_s(ademco_event) + L"盗警"; case EVENT_DISARM: return n_to_s(ademco_event) + L"撤防"; case EVENT_DURESS: return n_to_s(ademco_event) + L"胁迫"; case EVENT_EMERGENCY: return n_to_s(ademco_event) + L"紧急报警"; case EVENT_FIRE: return n_to_s(ademco_event) + L"火警"; case EVENT_GAS: return n_to_s(ademco_event) + L"煤气"; case EVENT_HALFARM: case EVENT_HALFARM_1456: return n_to_s(ademco_event) + L"半布防"; case EVENT_TAMPER: return n_to_s(ademco_event) + L"防拆"; case EVENT_ZONE_TAMPER: return n_to_s(ademco_event) + L"防区防拆"; case EVENT_WATER: return n_to_s(ademco_event) + L"水警"; case EVENT_BYPASS: return n_to_s(ademco_event) + L"旁路"; case EVENT_BYPASS_RESUME: return n_to_s(ademco_event) + L"解除旁路"; case EVENT_AC_BROKE: return n_to_s(ademco_event) + L"主机AC掉电"; case EVENT_AC_RECOVER: return n_to_s(ademco_event) + L"主机AC恢复"; case EVENT_LOWBATTERY: return n_to_s(ademco_event) + L"低电"; 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"失联"; case EVENT_LOST_RECOVER: return n_to_s(ademco_event) + L"恢复"; case EVENT_3100: return n_to_s(ademco_event) + L"液晶主机清除异常指示"; case EVENT_BATTERY_EXCEPTION: return n_to_s(ademco_event) + L"防区电源故障"; case EVENT_BATTERY_EXCEPTION_RECOVER: return n_to_s(ademco_event) + L"防区电源故障恢复"; case EVENT_OTHER_EXCEPTION: return n_to_s(ademco_event) + L"防区其他故障"; case EVENT_OTHER_EXCEPTION_RECOVER: return n_to_s(ademco_event) + L"防区其他故障恢复"; case EVENT_SERIAL485DIS: return n_to_s(ademco_event) + L"485断开"; case EVENT_SERIAL485CONN: return n_to_s(ademco_event) + L"485恢复"; case EVENT_DOORRINGING: return n_to_s(ademco_event) + L"门铃"; case EVENT_CONN_HANGUP: return n_to_s(ademco_event) + L"链路挂起"; case EVENT_CONN_RESUME: return n_to_s(ademco_event) + L"链路恢复"; case EVENT_DISARM_PWD_ERR: return n_to_s(ademco_event) + L"撤防密码错误"; case EVENT_SUB_MACHINE_SENSOR_EXCEPTION: return n_to_s(ademco_event) + L"分防区异常"; case EVENT_SUB_MACHINE_SENSOR_RESUME: return n_to_s(ademco_event) + L"分防区恢复"; case EVENT_SUB_MACHINE_POWER_EXCEPTION: return n_to_s(ademco_event) + L"分防区电源异常"; case EVENT_SUB_MACHINE_POWER_RESUME: return n_to_s(ademco_event) + L"分防区电源恢复"; case EVENT_COM_PASSTHROUGH: return n_to_s(ademco_event) + L"串口透传"; case EVENT_ENTER_SET_MODE: return n_to_s(ademco_event) + L"进入设置状态"; case EVENT_EXIT_SET_MODE: return n_to_s(ademco_event) + L"拒绝/停止设置"; case EVENT_QUERY_SUB_MACHINE: return n_to_s(ademco_event) + L"查询"; case EVENT_WRITE_TO_MACHINE: return n_to_s(ademco_event) + L"写入主机信息"; case EVENT_I_AM_NET_MODULE: return n_to_s(ademco_event) + L"我是网络模块"; case EVENT_PHONE_USER_SOS: return n_to_s(ademco_event) + L"手机用户SOS"; case EVENT_PHONE_USER_CANCLE_ALARM: return n_to_s(ademco_event) + L"手机用户消警"; case EVENT_I_AM_GPRS: return n_to_s(ademco_event) + L"我是GPRS主机"; case EVENT_I_AM_LCD_MACHINE: return n_to_s(ademco_event) + L"我是液晶主机"; case EVENT_I_AM_WIRE_MACHINE: return n_to_s(ademco_event) + L"我是网线主机"; case EVENT_I_AM_WIFI_MACHINE: return n_to_s(ademco_event) + L"我是WiFi主机"; case EVENT_I_AM_3_SECTION_MACHINE: return n_to_s(ademco_event) + L"我是三区段主机"; case EVENT_I_AM_IOT_MACHINE: return n_to_s(ademco_event) + L"我是物联卡主机"; case EVENT_I_AM_TRUE_COLOR: return n_to_s(ademco_event) + L"我是真彩主机"; case EVENT_I_AM_GPRS_IOT: return n_to_s(ademco_event) + L"我是简化版物联卡主机"; case EVENT_I_AM_GPRS_PHONE: return n_to_s(ademco_event) + L"我是GPRS主机能打电话"; case EVENT_I_AM_NB_MACHINE: return n_to_s(ademco_event) + L"我是NB报警接收主机"; case EVENT_SIM_IS_IOT_CARD: return n_to_s(ademco_event) + L"SIM卡为物联卡"; case EVENT_SIM_IS_IOT_PLATFORM_CARD: return n_to_s(ademco_event) + L"SIM卡为平台物联卡"; case EVENT_SIM_IS_NOT_IOT_CARD: return n_to_s(ademco_event) + L"SIM卡为非物联卡"; case EVENT_ENTER_SETTING_MODE: return n_to_s(ademco_event) + L"主机进入设置状态"; case EVENT_EXIT_SETTING_MODE: return n_to_s(ademco_event) + L"主机退出设置状态"; case EVENT_RESTORE_FACTORY_SETTINGS_710: case EVENT_RESTORE_FACTORY_SETTINGS: return n_to_s(ademco_event) + L"主机恢复出厂设置"; case EVENT_WHAT_IS_YOUR_TYPE: return n_to_s(ademco_event) + L"索要主机类型"; case EVENT_SIGNAL_STRENGTH_CHANGED: return n_to_s(ademco_event) + L"信号强度变化"; case EVENT_OFFLINE: return n_to_s(ademco_event) + L"上线"; case EVENT_ONLINE: return n_to_s(ademco_event) + L"离线"; default: with_event_number = true; return n_to_s(ademco_event) + L"未定义"; } } #endif //! 是否主机状态事件 inline bool isMachineStatusEvent(ADEMCO_EVENT ademco_event) { return ademco_event == EVENT_ARM || ademco_event == EVENT_HALFARM || ademco_event == EVENT_HALFARM_1456 || ademco_event == EVENT_DISARM; } //! 是否主机类型事件 inline bool isMachineTypeEvent(ADEMCO_EVENT ademco_event) { return ademco_event == EVENT_I_AM_NET_MODULE || ademco_event == EVENT_I_AM_GPRS || ademco_event == EVENT_I_AM_LCD_MACHINE || ademco_event == EVENT_I_AM_WIRE_MACHINE || ademco_event == EVENT_I_AM_WIFI_MACHINE || ademco_event == EVENT_I_AM_3_SECTION_MACHINE || ademco_event == EVENT_I_AM_IOT_MACHINE || ademco_event == EVENT_I_AM_TRUE_COLOR || ademco_event == EVENT_I_AM_GPRS_IOT || ademco_event == EVENT_I_AM_GPRS_PHONE || ademco_event == EVENT_I_AM_NB_MACHINE; } //! 事件是否需要控制源 inline bool isEventNeedControlSource(ADEMCO_EVENT ademco_event) { return ademco_event == EVENT_ARM || ademco_event == EVENT_HALFARM || ademco_event == EVENT_HALFARM_1456 || ademco_event == EVENT_DISARM || ademco_event == EVENT_EMERGENCY || ademco_event == EVENT_DURESS || ademco_event == EVENT_PHONE_USER_CANCLE_ALARM; } // 安定宝事件级别 enum EventLevel { EVENT_LEVEL_NULL, EVENT_LEVEL_STATUS, // 主机状态 EVENT_LEVEL_EXCEPTION_RESUME, // 黄色报警 EVENT_LEVEL_EXCEPTION, // 橙色报警 EVENT_LEVEL_ALARM, // 红色报警 }; //! 获取安定宝事件级别 inline EventLevel GetEventLevel(ADEMCO_EVENT ademco_event) { switch (ademco_event) { case EVENT_ARM: case EVENT_DISARM: case EVENT_HALFARM: case EVENT_HALFARM_1456: return EVENT_LEVEL_STATUS; case EVENT_AC_RECOVER: case EVENT_RECONNECT: case EVENT_LOST_RECOVER: case EVENT_SERIAL485CONN: case EVENT_SUB_MACHINE_SENSOR_RESUME: case EVENT_SUB_MACHINE_POWER_RESUME: 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: case EVENT_LOWBATTERY: case EVENT_BADBATTERY: case EVENT_SOLARDISTURB: case EVENT_DISCONNECT: case EVENT_LOST: //case EVENT_DOORRINGING: //case EVENT_CONN_HANGUP: //case EVENT_CONN_RESUME: case EVENT_SUB_MACHINE_SENSOR_EXCEPTION: case EVENT_SUB_MACHINE_POWER_EXCEPTION: case EVENT_BATTERY_EXCEPTION: case EVENT_OTHER_EXCEPTION: return EVENT_LEVEL_EXCEPTION; case EVENT_SERIAL485DIS: case EVENT_BURGLAR: case EVENT_DURESS: case EVENT_EMERGENCY: case EVENT_FIRE: case EVENT_GAS: case EVENT_TAMPER: case EVENT_ZONE_TAMPER: case EVENT_WATER: return EVENT_LEVEL_ALARM; default: return EVENT_LEVEL_NULL; } } //! 获取异常恢复事件所对应的异常事件 inline ADEMCO_EVENT getExceptionEventByResumeEvent(ADEMCO_EVENT resume_event) { switch (resume_event) { case EVENT_RECONNECT: return EVENT_DISCONNECT; case EVENT_LOST_RECOVER: return EVENT_LOST; case EVENT_SERIAL485CONN: return EVENT_SERIAL485DIS; case EVENT_SUB_MACHINE_SENSOR_RESUME: return EVENT_SUB_MACHINE_SENSOR_EXCEPTION; case EVENT_SUB_MACHINE_POWER_RESUME: return EVENT_SUB_MACHINE_POWER_EXCEPTION; 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_SOLARDISTURB_RECOVER: return EVENT_SOLARDISTURB; default: return EVENT_INVALID_EVENT; } } } // namespace ademco