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
76cceefd
Commit
76cceefd
authored
Jul 22, 2021
by
captainwong
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
g250 sound
parent
dc916d08
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
297 additions
and
30 deletions
+297
-30
hb_detail.h
include/hb_detail.h
+297
-30
No files found.
include/hb_detail.h
View file @
76cceefd
...
@@ -1197,8 +1197,8 @@ constexpr hb::Char hb::common::com::ReadMachineAcctRequest::data[];
...
@@ -1197,8 +1197,8 @@ constexpr hb::Char hb::common::com::ReadMachineAcctRequest::data[];
}
// namespace com
}
// namespace com
}
// namespace common
}
// namespace common
//!
barely used, everybody loves common machine
//!
工程主机G250相关
namespace
old
namespace
g250
{
{
//! 键盘按键码
//! 键盘按键码
...
@@ -1599,10 +1599,266 @@ enum Sound : Char {
...
@@ -1599,10 +1599,266 @@ enum Sound : Char {
SOUND_NET_MACHINE
,
SOUND_NET_MACHINE
,
//! 已断开连接 87
//! 已断开连接 87
SOUND_DISCONNECT
,
SOUND_DISCONNECT
,
//! 88
//! 88
SOUND_COUNT
,
SOUND_COUNT
,
SOUND_INVALID_SOUND
=
255
,
};
};
#ifdef EANBLE_SOUND_ENUM_STRING
inline
const
char
*
soundEnumString
(
Sound
snd
)
{
switch
(
snd
)
{
case
SOUND_BUTTON_PRESSED
:
return
"SOUND_BUTTON_PRESSED"
;
case
SOUND_SUCCESS
:
return
"SOUND_SUCCESS"
;
case
SOUND_DINGDONG
:
return
"SOUND_DINGDONG"
;
case
SOUND_ILLEGAL_OPERATION
:
return
"SOUND_ILLEGAL_OPERATION"
;
case
SOUND_SECOND
:
return
"SOUND_SECOND"
;
case
SOUND_EXCEPTION
:
return
"SOUND_EXCEPTION"
;
case
SOUND_QUIT_CONFIG
:
return
"SOUND_QUIT_CONFIG"
;
case
SOUND_INPUT_CONFIG_PSW
:
return
"SOUND_INPUT_CONFIG_PSW"
;
case
SOUND_INPUT_NEW_PSW
:
return
"SOUND_INPUT_NEW_PSW"
;
case
SOUND_INPUT_USER_PSW
:
return
"SOUND_INPUT_USER_PSW"
;
case
SOUND_INPUT_AGAIN
:
return
"SOUND_INPUT_AGAIN"
;
case
SOUND_ALARM_PHONE
:
return
"SOUND_ALARM_PHONE"
;
case
SOUND_ALARM_SOUNDTE
:
return
"SOUND_ALARM_SOUNDTE"
;
case
SOUND_SECURE_HALF
:
return
"SOUND_SECURE_HALF"
;
case
SOUND_SECURE_ALL
:
return
"SOUND_SECURE_ALL"
;
case
SOUND_SECURE_CANCEL
:
return
"SOUND_SECURE_CANCEL"
;
case
SOUND_INPUT_PHONE_ALARM
:
return
"SOUND_INPUT_PHONE_ALARM"
;
case
SOUND_DEL_ALL_PHONE
:
return
"SOUND_DEL_ALL_PHONE"
;
case
SOUND_INPUT_ALARM_TIME
:
return
"SOUND_INPUT_ALARM_TIME"
;
case
SOUND_INPUT_LEAVE_TIME
:
return
"SOUND_INPUT_LEAVE_TIME"
;
case
SOUND_INPUT_ENTER_TIME
:
return
"SOUND_INPUT_ENTER_TIME"
;
case
SOUND_INPUT_IN_DIAL_TIMES
:
return
"SOUND_INPUT_IN_DIAL_TIMES"
;
case
SOUND_INPUT_OUT_DIAL_TIMES
:
return
"SOUND_INPUT_OUT_DIAL_TIMES"
;
case
SOUND_HOST_DUIMA
:
return
"SOUND_HOST_DUIMA"
;
case
SOUND_PRESS_RC_SECURE_ALL
:
return
"SOUND_PRESS_RC_SECURE_ALL"
;
case
SOUND_TRIGGER_DETECTOR
:
return
"SOUND_TRIGGER_DETECTOR"
;
case
SOUND_DEL_DETECTOR
:
return
"SOUND_DEL_DETECTOR"
;
case
SOUND_DEL_ALL_DETECTOR
:
return
"SOUND_DEL_ALL_DETECTOR"
;
case
SOUND_AREA_GLOBAL
:
return
"SOUND_AREA_GLOBAL"
;
case
SOUND_AREA_HALF
:
return
"SOUND_AREA_HALF"
;
case
SOUND_AREA_EMERGENCY
:
return
"SOUND_AREA_EMERGENCY"
;
case
SOUND_AREA_SHIELD
:
return
"SOUND_AREA_SHIELD"
;
case
SOUND_AREA_DOORRING
:
return
"SOUND_AREA_DOORRING"
;
case
SOUND_NEXT
:
return
"SOUND_NEXT"
;
case
SOUND_SYSTEM_MALFUNTION
:
return
"SOUND_SYSTEM_MALFUNTION"
;
case
SOUND_HOST_MODULATION
:
return
"SOUND_HOST_MODULATION"
;
case
SOUND_BACK
:
return
"SOUND_BACK"
;
case
SOUND_ERROR_INPUT_AGAIN
:
return
"SOUND_ERROR_INPUT_AGAIN"
;
case
SOUND_INPUT_AREA_PROPERTY
:
return
"SOUND_INPUT_AREA_PROPERTY"
;
case
SOUND_AREA_ALREADY_EXISTS
:
return
"SOUND_AREA_ALREADY_EXISTS"
;
case
SOUND_RC_ALREADY_EXISTS
:
return
"SOUND_RC_ALREADY_EXISTS"
;
case
SOUND_WELCOM
:
return
"SOUND_WELCOM"
;
case
SOUND_DEL_AREA_FIRST
:
return
"SOUND_DEL_AREA_FIRST"
;
case
SOUND_DETECTOR_INVALID
:
return
"SOUND_DETECTOR_INVALID"
;
case
SOUND_PHONE_LINE_DISCONNECT
:
return
"SOUND_PHONE_LINE_DISCONNECT"
;
case
SOUND_HOST_REMOTE_CONTROL
:
return
"SOUND_HOST_REMOTE_CONTROL"
;
case
SOUND_START_LISTEN
:
return
"SOUND_START_LISTEN"
;
case
SOUND_SOUNDTE_MUTE
:
return
"SOUND_SOUNDTE_MUTE"
;
case
SOUND_ON_THE_WAY_DISCONNECT
:
return
"SOUND_ON_THE_WAY_DISCONNECT"
;
case
SOUND_ALARM_WISTLE
:
return
"SOUND_ALARM_WISTLE"
;
case
SOUND_ALARM_RECORD
:
return
"SOUND_ALARM_RECORD"
;
case
SOUND_CLEAR_EXCEPTION
:
return
"SOUND_CLEAR_EXCEPTION"
;
case
SOUND_ALARM
:
return
"SOUND_ALARM"
;
case
SOUND_INPUT_PHONE_CENTER
:
return
"SOUND_INPUT_PHONE_CENTER"
;
case
SOUND_INPUT_ADEMCO_ID
:
return
"SOUND_INPUT_ADEMCO_ID"
;
case
SOUND_VIALATION_ENTER
:
return
"SOUND_VIALATION_ENTER"
;
case
SOUND_ATTENTION_ALARMING
:
return
"SOUND_ATTENTION_ALARMING"
;
case
SOUND_DELETE_PHONE
:
return
"SOUND_DELETE_PHONE"
;
case
SOUND_DELETE_REMOTE_RC
:
return
"SOUND_DELETE_REMOTE_RC"
;
case
SOUND_DELETE_ALL_RC
:
return
"SOUND_DELETE_ALL_RC"
;
case
SOUND_WARNING
:
return
"SOUND_WARNING"
;
case
SOUND_AREA_FIRE
:
return
"SOUND_AREA_FIRE"
;
case
SOUND_AREA_DURESS
:
return
"SOUND_AREA_DURESS"
;
case
SOUND_AREA_GAS
:
return
"SOUND_AREA_GAS"
;
case
SOUND_AREA_WATER
:
return
"SOUND_AREA_WATER"
;
case
SOUND_AREA
:
return
"SOUND_AREA"
;
case
SOUND_GAS_LEAKAGE
:
return
"SOUND_GAS_LEAKAGE"
;
case
SOUND_PLEASE_HELP
:
return
"SOUND_PLEASE_HELP"
;
case
SOUND_WATER_LEAKAGE
:
return
"SOUND_WATER_LEAKAGE"
;
case
SOUND_FIRE
:
return
"SOUND_FIRE"
;
case
SOUND_FIRE_TRUCK_SOUND
:
return
"SOUND_FIRE_TRUCK_SOUND"
;
case
SOUND_GAS_SOUND
:
return
"SOUND_GAS_SOUND"
;
case
SOUND_WATER_SOUND
:
return
"SOUND_WATER_SOUND"
;
case
SOUND_ALL_ALARM
:
return
"SOUND_ALL_ALARM"
;
case
SOUND_PART_ALARM
:
return
"SOUND_PART_ALARM"
;
case
SOUND_SEL_ALARM_CENTER
:
return
"SOUND_SEL_ALARM_CENTER"
;
case
SOUND_NET_MACHINE
:
return
"SOUND_NET_MACHINE"
;
case
SOUND_DISCONNECT
:
return
"SOUND_DISCONNECT"
;
case
SOUND_COUNT
:
return
"SOUND_COUNT"
;
case
SOUND_0
:
return
"SOUND_0"
;
case
SOUND_1
:
return
"SOUND_1"
;
case
SOUND_2
:
return
"SOUND_2"
;
case
SOUND_3
:
return
"SOUND_3"
;
case
SOUND_4
:
return
"SOUND_4"
;
case
SOUND_5
:
return
"SOUND_5"
;
case
SOUND_6
:
return
"SOUND_6"
;
case
SOUND_7
:
return
"SOUND_7"
;
case
SOUND_8
:
return
"SOUND_8"
;
case
SOUND_9
:
return
"SOUND_9"
;
default:
return
"Invalid sound"
;
}
}
#endif
#ifdef ENABLE_SOUND_TO_STRING
inline
const
wchar_t
*
soundToString
(
Sound
snd
)
{
switch
(
snd
)
{
case
SOUND_BUTTON_PRESSED
:
return
L"按键音"
;
case
SOUND_SUCCESS
:
return
L"成功"
;
case
SOUND_DINGDONG
:
return
L"叮咚"
;
case
SOUND_ILLEGAL_OPERATION
:
return
L"非法操作"
;
case
SOUND_SECOND
:
return
L"读秒"
;
case
SOUND_EXCEPTION
:
return
L"异常"
;
case
SOUND_QUIT_CONFIG
:
return
L"退出设置"
;
case
SOUND_INPUT_CONFIG_PSW
:
return
L"输入设置密码"
;
case
SOUND_INPUT_NEW_PSW
:
return
L"输入新密码"
;
case
SOUND_INPUT_USER_PSW
:
return
L"输入用户密码"
;
case
SOUND_INPUT_AGAIN
:
return
L"再次输入"
;
case
SOUND_ALARM_PHONE
:
return
L"电话报警"
;
case
SOUND_ALARM_SOUNDTE
:
return
L"现场报警"
;
case
SOUND_SECURE_HALF
:
return
L"半布防"
;
case
SOUND_SECURE_ALL
:
return
L"全局布防"
;
case
SOUND_SECURE_CANCEL
:
return
L"撤防"
;
case
SOUND_INPUT_PHONE_ALARM
:
return
L"请输入报警电话"
;
case
SOUND_DEL_ALL_PHONE
:
return
L"删除所有电话"
;
case
SOUND_INPUT_ALARM_TIME
:
return
L"输入报警声响时间"
;
case
SOUND_INPUT_LEAVE_TIME
:
return
L"输入离开时间"
;
case
SOUND_INPUT_ENTER_TIME
:
return
L"请输入进入时间"
;
case
SOUND_INPUT_IN_DIAL_TIMES
:
return
L"请输入振铃次数"
;
case
SOUND_INPUT_OUT_DIAL_TIMES
:
return
L"请输入拨号循环次数"
;
case
SOUND_HOST_DUIMA
:
return
L"主机进入对码状态"
;
case
SOUND_PRESS_RC_SECURE_ALL
:
return
L"请按遥控器布防键"
;
case
SOUND_TRIGGER_DETECTOR
:
return
L"请触发探头"
;
case
SOUND_DEL_DETECTOR
:
return
L"删除探头"
;
case
SOUND_DEL_ALL_DETECTOR
:
return
L"删除所有探头"
;
case
SOUND_AREA_GLOBAL
:
return
L"全局防区"
;
case
SOUND_AREA_HALF
:
return
L"半局防区"
;
case
SOUND_AREA_EMERGENCY
:
return
L"紧急报警防区"
;
case
SOUND_AREA_SHIELD
:
return
L"屏蔽防区"
;
case
SOUND_AREA_DOORRING
:
return
L"门铃防区"
;
case
SOUND_NEXT
:
return
L"下一个"
;
case
SOUND_SYSTEM_MALFUNTION
:
return
L"请注意,有非法进入"
;
case
SOUND_HOST_MODULATION
:
return
L"主机进入调整状态"
;
case
SOUND_BACK
:
return
L"退回"
;
case
SOUND_ERROR_INPUT_AGAIN
:
return
L"错误请重新输入"
;
case
SOUND_INPUT_AREA_PROPERTY
:
return
L"请输入防区属性"
;
case
SOUND_AREA_ALREADY_EXISTS
:
return
L"该防区已存在"
;
case
SOUND_RC_ALREADY_EXISTS
:
return
L"该遥控器已存在"
;
case
SOUND_WELCOM
:
return
L"欢迎使用"
;
case
SOUND_DEL_AREA_FIRST
:
return
L"请先删除该防区"
;
case
SOUND_DETECTOR_INVALID
:
return
L"请注意有探头无效"
;
case
SOUND_PHONE_LINE_DISCONNECT
:
return
L"电话线断了"
;
case
SOUND_HOST_REMOTE_CONTROL
:
return
L"主机远程控制"
;
case
SOUND_START_LISTEN
:
return
L"开始监听"
;
case
SOUND_SOUNDTE_MUTE
:
return
L"现场静音"
;
case
SOUND_ON_THE_WAY_DISCONNECT
:
return
L"即将断线"
;
case
SOUND_ALARM_WISTLE
:
return
L"警笛报警声"
;
case
SOUND_ALARM_RECORD
:
return
L"录音报警声"
;
case
SOUND_CLEAR_EXCEPTION
:
return
L"清异常指示"
;
case
SOUND_ALARM
:
return
L"报警"
;
case
SOUND_INPUT_PHONE_CENTER
:
return
L"输入接警中心电话"
;
case
SOUND_INPUT_ADEMCO_ID
:
return
L"请输入用户号"
;
case
SOUND_VIALATION_ENTER
:
return
L"请注意,你已非法进入"
;
case
SOUND_ATTENTION_ALARMING
:
return
L"请注意,报警了"
;
case
SOUND_DELETE_PHONE
:
return
L"删除此电话"
;
case
SOUND_DELETE_REMOTE_RC
:
return
L"删除此遥控"
;
case
SOUND_DELETE_ALL_RC
:
return
L"删除所有遥控"
;
case
SOUND_WARNING
:
return
L"提示"
;
case
SOUND_AREA_FIRE
:
return
L"火警防区"
;
case
SOUND_AREA_DURESS
:
return
L"胁迫防区"
;
case
SOUND_AREA_GAS
:
return
L"煤气防区"
;
case
SOUND_AREA_WATER
:
return
L"水警防区"
;
case
SOUND_AREA
:
return
L"防区"
;
case
SOUND_GAS_LEAKAGE
:
return
L"”煤气泄漏"
;
case
SOUND_PLEASE_HELP
:
return
L"请救助"
;
case
SOUND_WATER_LEAKAGE
:
return
L"水泄漏"
;
case
SOUND_FIRE
:
return
L"有火情"
;
case
SOUND_FIRE_TRUCK_SOUND
:
return
L"消防车音效"
;
case
SOUND_GAS_SOUND
:
return
L"煤气音效"
;
case
SOUND_WATER_SOUND
:
return
L"水警音效"
;
case
SOUND_ALL_ALARM
:
return
L"全部报警"
;
case
SOUND_PART_ALARM
:
return
L"部分报警"
;
case
SOUND_SEL_ALARM_CENTER
:
return
L"接警中心报警选择"
;
case
SOUND_NET_MACHINE
:
return
L"网络主机"
;
case
SOUND_DISCONNECT
:
return
L"已断开连接"
;
case
SOUND_0
:
return
L"0"
;
case
SOUND_1
:
return
L"1"
;
case
SOUND_2
:
return
L"2"
;
case
SOUND_3
:
return
L"3"
;
case
SOUND_4
:
return
L"4"
;
case
SOUND_5
:
return
L"5"
;
case
SOUND_6
:
return
L"6"
;
case
SOUND_7
:
return
L"7"
;
case
SOUND_8
:
return
L"8"
;
case
SOUND_9
:
return
L"9"
;
default:
return
L"Invalid sound"
;
}
}
#endif
//! 数字0~9的声音
inline
Sound
numberToSound
(
int
n
)
{
if
(
0
<=
n
&&
n
<=
9
)
{
return
static_cast
<
Sound
>
(
Sound
::
SOUND_0
+
n
);
}
else
{
return
Sound
::
SOUND_INVALID_SOUND
;
}
}
//! 主机模式
enum
MahcineMode
:
Char
{
//! 普通模式
ModeNormal
,
//! 设置模式
ModeConfig
,
//! 对码模式
ModeDuima
,
};
//! 主机(或分主机)状态码
enum
MachineStatus
:
Char
{
Arm
=
0x01
,
Disarm
=
0x02
,
HalfArm
=
0X04
,
MachineStatusInvalid
=
0xFF
,
};
//! 主机状态到声音
inline
Sound
machineStatusToSound
(
MachineStatus
status
)
{
switch
(
status
)
{
case
MachineStatus
:
:
Arm
:
return
Sound
::
SOUND_SECURE_ALL
;
case
MachineStatus
:
:
Disarm
:
return
Sound
::
SOUND_SECURE_CANCEL
;
case
MachineStatus
:
:
HalfArm
:
return
Sound
::
SOUND_SECURE_HALF
;
default:
return
Sound
::
SOUND_INVALID_SOUND
;
}
}
//! 根据声音判断是否需要按键输入
inline
bool
needKeyInput
(
Sound
snd
)
{
return
snd
==
Sound
::
SOUND_INPUT_CONFIG_PSW
||
snd
==
Sound
::
SOUND_INPUT_NEW_PSW
||
snd
==
Sound
::
SOUND_INPUT_USER_PSW
//|| si == SI_INPUT_PHONE_ALARM
//|| si == SI_INPUT_ALARM_TIME
//|| si == SI_INPUT_LEAVE_TIME
//|| si == SI_INPUT_ENTER_TIME
//|| si == SI_INPUT_IN_DIAL_TIMES
//|| si == SI_INPUT_OUT_DIAL_TIMES
//|| si == SI_INPUT_PHONE_CENTER
||
snd
==
Sound
::
SOUND_INPUT_AGAIN
//|| si == SI_INPUT_ADEMCO_ID
||
snd
==
Sound
::
SOUND_ERROR_INPUT_AGAIN
;
}
//! 根据声音判断是否有输入错误
inline
bool
isBadInput
(
Sound
snd
)
{
return
snd
==
Sound
::
SOUND_ERROR_INPUT_AGAIN
;
}
//! 主机到键盘显示 9字节
//! 主机到键盘显示 9字节
struct
MachineInfoToKeyboard
{
struct
MachineInfoToKeyboard
{
static
constexpr
Char
len
=
9
;
static
constexpr
Char
len
=
9
;
...
@@ -1727,23 +1983,6 @@ struct MachineInfoToKeyboard {
...
@@ -1727,23 +1983,6 @@ struct MachineInfoToKeyboard {
#endif // WIN32
#endif // WIN32
};
};
//! 主机模式
enum
MahcineMode
:
Char
{
//! 普通模式
ModeNormal
,
//! 设置模式
ModeConfig
,
//! 对码模式
ModeDuima
,
};
//! 主机(或分主机)状态码
enum
MachineStatus
:
Char
{
Arm
=
0x01
,
Disarm
=
0x02
,
HalfArm
=
0X04
,
MachineStatusInvalid
=
0xFF
,
};
//! 报警码
//! 报警码
enum
AlarmCode
:
Char
{
enum
AlarmCode
:
Char
{
...
@@ -1907,12 +2146,14 @@ struct WirelessAddress {
...
@@ -1907,12 +2146,14 @@ struct WirelessAddress {
};
};
//! 主机有线防区范围
1
~7
//! 主机有线防区范围
0
~7
constexpr
ademco
::
AdemcoZone
ZoneMinWired
=
1
;
constexpr
ademco
::
AdemcoZone
ZoneMinWired
=
0
;
// 0防区默认为紧急防区,报警时产生紧急报警警情
constexpr
ademco
::
AdemcoZone
ZoneMaxWired
=
8
;
constexpr
ademco
::
AdemcoZone
ZoneMaxWired
=
7
;
//! 主机无线防区
最小值
//! 主机无线防区
范围8~999
constexpr
ademco
::
AdemcoZone
ZoneMinWireless
=
9
;
constexpr
ademco
::
AdemcoZone
ZoneMinWireless
=
8
;
constexpr
ademco
::
AdemcoZone
ZoneMaxWireless
=
999
;
constexpr
ademco
::
AdemcoZone
ZoneMaxWireless
=
999
;
//! 主机防区数量,算上0防区,共1000个
constexpr
ademco
::
AdemcoZone
ZoneCount
=
1000
;
//! 分主机防区号范围1~99
//! 分主机防区号范围1~99
constexpr
ademco
::
AdemcoZone
ZoneMinSubMachine
=
1
;
constexpr
ademco
::
AdemcoZone
ZoneMinSubMachine
=
1
;
constexpr
ademco
::
AdemcoZone
ZoneMaxSubMachine
=
99
;
constexpr
ademco
::
AdemcoZone
ZoneMaxSubMachine
=
99
;
...
@@ -1928,12 +2169,38 @@ struct ZoneAsTwoChar {
...
@@ -1928,12 +2169,38 @@ struct ZoneAsTwoChar {
ZoneAsTwoChar
&
operator
=
(
const
ZoneAsTwoChar
&
)
=
default
;
ZoneAsTwoChar
&
operator
=
(
const
ZoneAsTwoChar
&
)
=
default
;
ZoneAsTwoChar
(
Char
hi
,
Char
lo
)
:
hi
(
hi
),
lo
(
lo
)
{}
ZoneAsTwoChar
(
Char
hi
,
Char
lo
)
:
hi
(
hi
),
lo
(
lo
)
{}
uint16_t
toUInt16
()
const
{
return
static_cast
<
Char
>
(((
hi
<<
8
)
&
0xFF00
)
|
lo
);
}
uint16_t
toUInt16
()
const
{
void
fromUInt16
(
uint16_t
zone
)
{
hi
=
static_cast
<
Char
>
((
zone
>>
8
)
&
0xFF
);
lo
=
static_cast
<
Char
>
(
zone
&
0xFF
);
}
uint16_t
val
=
static_cast
<
uint16_t
>
(((
hi
<<
8
)
&
0xFF00
)
|
lo
);
ZoneAsTwoChar
&
operator
=
(
uint16_t
zone
)
{
fromUInt16
(
zone
);
return
*
this
;
}
return
val
;
ZoneAsTwoChar
&
operator
++
()
{
if
(
++
lo
==
0xFF
)
{
lo
=
0
;
if
(
++
hi
==
0xFF
)
{
assert
(
0
);
}
}
return
*
this
;
}
}
bool
operator
==
(
const
ZoneAsTwoChar
&
rhs
)
const
{
return
hi
==
rhs
.
hi
&&
lo
==
rhs
.
lo
;
}
bool
operator
==
(
uint16_t
zone
)
const
{
return
toUInt16
()
==
zone
;
}
void
fromUInt16
(
uint16_t
zone
)
{
hi
=
static_cast
<
Char
>
((
zone
>>
8
)
&
0xFF
);
lo
=
static_cast
<
Char
>
(
zone
&
0xFF
);
}
ZoneAsTwoChar
&
operator
=
(
uint16_t
zone
)
{
fromUInt16
(
zone
);
return
*
this
;
}
ZoneAsTwoChar
&
operator
++
()
{
if
(
++
lo
==
0xFF
)
{
lo
=
0
;
if
(
++
hi
==
0xFF
)
{
assert
(
0
);
}
}
return
*
this
;
}
bool
operator
==
(
const
ZoneAsTwoChar
&
rhs
)
const
{
return
hi
==
rhs
.
hi
&&
lo
==
rhs
.
lo
;
}
bool
operator
==
(
uint16_t
zone
)
const
{
return
toUInt16
()
==
zone
;
}
};
};
//! 防区信息
//! 防区信息
...
...
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