Commit 03661efb authored by captainwong's avatar captainwong

resp

parent 11722358
......@@ -1497,8 +1497,8 @@ void hbComMakeReqA3_modifyMachineZone(HbComData* data, uint8_t zone, HbZonePrope
data->data[5] = zone;
data->data[6] = prop;
data->data[7] = op;
hbSum(data->data, HbComReq_A3_len);
data->len = HbComReq_A3_len;
hbSum(data->data, data->len);
}
void hbComMakeReqA5_getMachineTimer(HbComData* data)
......@@ -1511,8 +1511,8 @@ void hbComMakeReqA7_setMachineTimer(HbComData* data, HbMachineTimer* timer)
{
memcpy(data->data, HbComReq_A7_head, 5);
memcpy(data->data + 5, timer, sizeof(*timer));
hbSum(data->data, HbComReq_A7_len);
data->len = HbComReq_A7_len;
hbSum(data->data, data->len);
}
void hbComMakeReqAA_modifyMachineZoneLostConfig(HbComData* data, uint8_t zone, int on)
......@@ -1520,8 +1520,8 @@ void hbComMakeReqAA_modifyMachineZoneLostConfig(HbComData* data, uint8_t zone, i
memcpy(data->data, HbComReq_AA_head, 5);
data->data[5] = zone;
data->data[6] = !!on;
hbSum(data->data, HbComReq_AA_len);
data->len = HbComReq_AA_len;
hbSum(data->data, data->len);
}
void hbComMakeReqAC_getMachineZoneLostConfig(HbComData* data)
......@@ -1541,8 +1541,8 @@ void hbComMakeReqAE_set3SectionMachineStatus(HbComData* data, HbCom_3sec_which p
memcpy(data->data, HbComReq_AE_head, 5);
data->data[5] = p1;
data->data[6] = status;
hbSum(data->data, HbComReq_AE_len);
data->len = HbComReq_AE_len;
hbSum(data->data, data->len);
}
void hbComMakeReqB0_get3SectionMachineStatus(HbComData* data)
......@@ -1561,8 +1561,115 @@ void hbComMakeReqWR_acct(HbComData* data, const char* acct)
{
memcpy(data->data, HbComReq_WR_acct_head, 5);
hbDecStrToHiLoArray(data->data + 5, 9, acct);
hbSum(data->data, HbComReq_WR_acct_len);
data->len = HbComReq_WR_acct_len;
hbSum(data->data, data->len);
}
void hbComMakeRespA0_getMachineStatus(HbComData* data, HbMachineStatus status, HbMachineType type)
{
memcpy(data->data, HbComResp_A0_head, 6);
data->data[6] = status;
data->data[7] = type;
data->len = HbComResp_A0_len;
hbSum(data->data, data->len);
}
void hbComMakeRespA2_getMachineZones(HbComData* data, int count, AdemcoZone* zones, HbZoneProperty* props, HbComResp_A2_p1 p1)
{
if (count > HbComResp_A2_max_zone) { return; }
memcpy(data->data, HbComResp_A2_head, 6);
data->data[3] = HbComResp_A2_len_min + count * 2;
uint8_t* p = data->data + 6;
for (int i = 0; i < count; i++) {
*p++ = zones[i] & 0xFF;
*p++ = props[i];
}
*p++ = (count > 0) ? p1 : HbComResp_A2_p1_nomore;
data->len = ++p - data;
hbSum(data->data, data->len);
}
void hbComMakeRespA3_waitingSignal(HbComData* data)
{
memcpy(data->data, HbComResp_A3_data, HbComResp_A3_len);
data->len = HbComResp_A3_len;
}
void hbComMakeRespA4_modifyMachineZone(HbComData* data, AdemcoZone zone, HbZoneProperty prop, HbComResp_A4_p3 p3)
{
memcpy(data->data, HbComResp_A4_head, 6);
data->data[6] = zone & 0xFF;
data->data[7] = prop;
data->data[8] = p3;
data->len = HbComResp_A4_len;
hbSum(data->data, data->len);
}
void hbComMakeRespA6_getMachineTimer(HbComData* data, HbMachineTimer* timer)
{
memcpy(data->data, HbComResp_A6_head, 6);
memcpy(data->data + 6, timer, sizeof(*timer));
data->len = HbComResp_A6_len;
hbSum(data->data, data->len);
}
void hbComMakeRespA7_setMachineTimer(HbComData* data)
{
memcpy(data->data, HbComResp_A7_data, HbComResp_A7_len);
data->len = HbComResp_A7_len;
}
void hbComMakeRespA8_reject(HbComData* data)
{
memcpy(data->data, HbComResp_A8_data, HbComResp_A8_len);
data->len = HbComResp_A8_len;
}
void hbComMakeRespAB_modifyMachineZoneLostConfig(HbComData* data, AdemcoZone zone, HbComResp_AB_p2 p2)
{
memcpy(data->data, HbComResp_AB_head, 6);
data->data[6] = zone & 0xFF;
data->data[7] = p2;
data->len = HbComResp_AB_len;
hbSum(data->data, data->len);
}
void hbComMakeRespAD_getMachineZoneLostConfig(HbComData* data, HbComResp_AD_p1 p1, int count, AdemcoZone* zones, HbComResp_AD_p2 p2)
{
if (count > HbComResp_AD_max_zone) { return; }
memcpy(data->data, HbComResp_AD_head, 6);
data->data[3] = HbComResp_AD_len_min + (p1 == HbComResp_AD_p1_single ? count : count * 2);
data->data[6] = p1;
uint8_t* p = data->data + 7;
for (int i = 0; i < count; i++) {
if (p1 == HbComResp_AD_p1_single) {
*p++ = zones[i] & 0xFF;
} else {
*p++ = zones[i] >> 8 & 0xFF;
*p++ = zones[i] & 0xFF;
}
}
*p++ = (count > 0) ? p2 : HbComResp_AD_p2_nomore;
data->len = ++p - data;
hbSum(data->data, data->len);
}
void hbComMakeRespAF_set3SectionMachineStatus(HbComData* data, HbCom_3sec_which p1, HbCom_3sec_status status)
{
memcpy(data->data, HbComResp_AF_head, 6);
data->data[6] = p1;
data->data[7] = status;
data->len = HbComResp_AF_len;
hbSum(data->data, data->len);
}
void hbComMakeRespB1_get3SectionMachineStatus(HbComData* data, HbMachineStatus statusMachine,
HbMachineStatus statusSec1, HbMachineStatus statusSec2, HbMachineStatus statusSec3)
{
memcpy(data->data, HbComResp_B1_head, 6);
data->data[6] = (statusMachine << 6) | (statusSec1 << 4) | (statusSec2 << 2) | (statusSec3);
data->len = HbComResp_B1_len;
hbSum(data->data, data->len);
}
int hbHiLoArrayToDecStr(char* str, const uint8_t* arr, int len)
......
......@@ -544,7 +544,7 @@ typedef enum HbComResponseType {
//! 回应主机状态 EB BA 3F 07 P0 A0 P1 P2 P3 SUM
#define HbComResp_A0_len 9
#define HbComResp_A0_head "\xEB\xBA\x3F\x07"
#define HbComResp_A0_head "\xEB\xBA\x3F\x07\xCC\xA0"
//! 索要主机防区 EB AB 3F A1 76
#define HbComReq_A1_len 5
......@@ -558,6 +558,7 @@ typedef enum HbComResp_A2_p1 {
HbComResp_A2_p1_nomore = 0xFF, // 无更多防区
HbComResp_A2_p1_more = 0x00, // 还有更多防区
}HbComResp_A2_p1;
#define HbComResp_A2_head "\xEB\xBA\x3F\x08\xCC\xA2"
//! 索要更多主机防区 EB AB 3F A2 77
//! 仅应在收到ZoneResponse的param非0xFF时发送,以索要全部防区
......@@ -588,7 +589,7 @@ typedef enum HbComResp_A4_p3 {
HbComResp_A4_p3_ok = 0x01, //! 成功
HbComResp_A4_p3_dup = 0x02, //! 失败--重码
HbComResp_A4_p3_ne = 0x03, //! 失败--防区未对码 not exists
}HbComResp_A4_code;
}HbComResp_A4_p3;
//! 获取主机定时器 EB AB 3F A5 7A
#define HbComReq_A5_len 5
......@@ -673,7 +674,7 @@ typedef enum HbCom_3sec_which {
//! 三区段主机状态回应 EB BA 3F 08 P0 B1 P1 SUM
#define HbComResp_B1_len 8
#define HbComResp_B1_head "\xEB\xBA\x3F\x08"
#define HbComResp_B1_head "\xEB\xBA\x3F\x08\xCC\xB1"
//! 读取主机账号
#define HbComReq_RD_acct_len 7
......@@ -772,13 +773,12 @@ ADEMCO_EXPORT_SYMBOL void hbComMakeReqRD_acct(HbComData* data);
ADEMCO_EXPORT_SYMBOL void hbComMakeReqWR_acct(HbComData* data, const char* acct);
ADEMCO_EXPORT_SYMBOL void hbComMakeRespA0_getMachineStatus(HbComData* data, HbMachineStatus status, HbMachineType type);
ADEMCO_EXPORT_SYMBOL void hbComMakeRespA2_getMachineZonesEmpty(HbComData* data);
// zones and props length is count
// if count is 0, p1 wil be set to HbComResp_A2_p1_nomore
ADEMCO_EXPORT_SYMBOL void hbComMakeRespA2_getMachineZones(HbComData* data, int count, AdemcoZone* zones, HbZoneProperty* props, HbComResp_A2_p1 p1);
// 学码开始,等待探测器无线信号中
ADEMCO_EXPORT_SYMBOL void hbComMakeRespA3_waitingSignal(HbComData* data);
ADEMCO_EXPORT_SYMBOL void hbComMakeRespA4_modifyMachineZone(HbComData* data, AdemcoZone zone, HbZoneProperty prop, HbComResp_A4_code code);
ADEMCO_EXPORT_SYMBOL void hbComMakeRespA4_modifyMachineZone(HbComData* data, AdemcoZone zone, HbZoneProperty prop, HbComResp_A4_p3 p3);
ADEMCO_EXPORT_SYMBOL void hbComMakeRespA6_getMachineTimer(HbComData* data, HbMachineTimer* timer);
ADEMCO_EXPORT_SYMBOL void hbComMakeRespA7_setMachineTimer(HbComData* data);
ADEMCO_EXPORT_SYMBOL void hbComMakeRespA8_reject(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