Commit a9f29aea authored by captainwong's avatar captainwong

signal strength codec

parent 759aba27
...@@ -39,6 +39,14 @@ void ademcoPrint(const ademco_char_t* p, size_t len) ...@@ -39,6 +39,14 @@ void ademcoPrint(const ademco_char_t* p, size_t len)
printf("\n"); printf("\n");
} }
uint8_t ademcoEncodeSignalStrength(int strength) {
return ((strength / 10) << 4) | (strength % 10);
}
int ademcoDecodeSignalStrength(uint8_t code) {
return ((code >> 4) & 0x0F) * 10 + (code & 0x0F);
}
int ademcoIsMachineStatusEvent(AdemcoEvent ademcoEvent) { int ademcoIsMachineStatusEvent(AdemcoEvent ademcoEvent) {
return ademcoEvent == EVENT_ARM return ademcoEvent == EVENT_ARM
|| ademcoEvent == EVENT_HALFARM || ademcoEvent == EVENT_HALFARM
...@@ -962,7 +970,7 @@ AdemcoParseResult ademcoPacketParse(const ademco_char_t* buff, size_t len, Ademc ...@@ -962,7 +970,7 @@ AdemcoParseResult ademcoPacketParse(const ademco_char_t* buff, size_t len, Ademc
valid_len = strtoul(temp, NULL, 16); valid_len = strtoul(temp, NULL, 16);
p += 4 + valid_len; p += 4 + valid_len;
} else { } else {
valid_len = pxdata[1] * 256 + pxdata[2]; valid_len = (pxdata[1] << 8) | pxdata[2];
p += 2 + valid_len; p += 2 + valid_len;
} }
......
...@@ -358,7 +358,8 @@ typedef struct AdemcoPacket { ...@@ -358,7 +358,8 @@ typedef struct AdemcoPacket {
//! print as HEX //! print as HEX
ADEMCO_EXPORT_SYMBOL void ademcoPrint(const ademco_char_t* buff, size_t len); ADEMCO_EXPORT_SYMBOL void ademcoPrint(const ademco_char_t* buff, size_t len);
ADEMCO_EXPORT_SYMBOL uint8_t ademcoEncodeSignalStrength(int strength);
ADEMCO_EXPORT_SYMBOL int ademcoDecodeSignalStrength(uint8_t code);
//////////////////////// AdemcoEvent functions //////////////////////// //////////////////////// AdemcoEvent functions ////////////////////////
......
...@@ -276,7 +276,7 @@ ...@@ -276,7 +276,7 @@
主机每隔一段时间向接警中心发送主机信号强度,数值由 `xdata` 传输。 主机每隔一段时间向接警中心发送主机信号强度,数值由 `xdata` 传输。
有效数据1字节,以 `BCD` 格式编码 有效数据1字节.
例: 例:
......
...@@ -403,7 +403,9 @@ ADEMCO_EXPORT_SYMBOL int hbCheckSum(const uint8_t* data, size_t len); ...@@ -403,7 +403,9 @@ ADEMCO_EXPORT_SYMBOL int hbCheckSum(const uint8_t* data, size_t len);
ADEMCO_EXPORT_SYMBOL HbComRequestType hbComParseRequest(const uint8_t* buff, size_t len, HbComData* cd); ADEMCO_EXPORT_SYMBOL HbComRequestType hbComParseRequest(const uint8_t* buff, size_t len, HbComData* cd);
ADEMCO_EXPORT_SYMBOL HbComRequestType hbComParseXDataRequest(const AdemcoXDataSegment* xdata, HbComData* cd); ADEMCO_EXPORT_SYMBOL HbComRequestType hbComParseXDataRequest(const AdemcoXDataSegment* xdata, HbComData* cd);
// parse COM response and return response type. If cd is non-NULL, valid data will be copied to cd
ADEMCO_EXPORT_SYMBOL HbComResponseType hbComParseResponse(const uint8_t* buff, size_t len, HbComData* cd); ADEMCO_EXPORT_SYMBOL HbComResponseType hbComParseResponse(const uint8_t* buff, size_t len, HbComData* cd);
// parse COM response and return response type. If cd is non-NULL, valid data will be copied to cd
ADEMCO_EXPORT_SYMBOL HbComResponseType hbComParseXDataResponse(const AdemcoXDataSegment* xdata, HbComData* cd); ADEMCO_EXPORT_SYMBOL HbComResponseType hbComParseXDataResponse(const AdemcoXDataSegment* xdata, HbComData* cd);
ADEMCO_EXPORT_SYMBOL void hbComMakeReqA0_getMachineStatus(HbComData* data); ADEMCO_EXPORT_SYMBOL void hbComMakeReqA0_getMachineStatus(HbComData* data);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment