Commit dfb828a6 authored by captainwong's avatar captainwong

update

parent b3052b0c
This diff is collapsed.
This diff is collapsed.
...@@ -45,7 +45,7 @@ struct Buffer ...@@ -45,7 +45,7 @@ struct Buffer
{ {
size_t rpos; size_t rpos;
size_t wpos; size_t wpos;
uint8_t buff[BUFF_SIZE]; char buff[BUFF_SIZE];
Buffer() { clear(); } Buffer() { clear(); }
void clear() { memset(this, 0, sizeof(Buffer)); } void clear() { memset(this, 0, sizeof(Buffer)); }
...@@ -139,7 +139,7 @@ int main(int argc, char** argv) ...@@ -139,7 +139,7 @@ int main(int argc, char** argv)
}; };
auto do_handle = []() -> AdemcoParseResult { auto do_handle = []() -> AdemcoParseResult {
AdemcoPacket pkt; int cb = 0; AdemcoPacket pkt; size_t cb = 0;
AdemcoParseResult result = ademcoPacketParse(clientBuffer.buff + clientBuffer.rpos, AdemcoParseResult result = ademcoPacketParse(clientBuffer.buff + clientBuffer.rpos,
clientBuffer.wpos - clientBuffer.rpos, clientBuffer.wpos - clientBuffer.rpos,
&pkt, &pkt,
...@@ -158,8 +158,8 @@ int main(int argc, char** argv) ...@@ -158,8 +158,8 @@ int main(int argc, char** argv)
case AID_NULL: // reply ack case AID_NULL: // reply ack
{ {
uint8_t ack[1024]; char ack[1024];
int len = ademcoMakeAckPacket((uint8_t*)ack, sizeof(ack), pkt.seq, pkt.acct, 0); int len = ademcoMakeAckPacket(ack, sizeof(ack), pkt.seq, pkt.acct, 0);
printf("S:"); ademcoPrint(ack, len); printf("S:"); ademcoPrint(ack, len);
send(clientSock, (const char*)ack, len, 0); send(clientSock, (const char*)ack, len, 0);
break; break;
...@@ -174,8 +174,8 @@ int main(int argc, char** argv) ...@@ -174,8 +174,8 @@ int main(int argc, char** argv)
// reply ack // reply ack
{ {
uint8_t ack[1024]; char ack[1024];
int len = ademcoMakeAckPacket((uint8_t*)ack, sizeof(ack), pkt.seq, pkt.acct, 0); int len = ademcoMakeAckPacket(ack, sizeof(ack), pkt.seq, pkt.acct, 0);
printf("S:"); ademcoPrint(ack, len); printf("S:"); ademcoPrint(ack, len);
send(clientSock, (const char*)ack, len, 0); send(clientSock, (const char*)ack, len, 0);
} }
...@@ -218,7 +218,7 @@ int main(int argc, char** argv) ...@@ -218,7 +218,7 @@ int main(int argc, char** argv)
int bRead = FD_ISSET(clientSock, &fd_read); int bRead = FD_ISSET(clientSock, &fd_read);
if (!bRead) { return; } if (!bRead) { return; }
uint8_t* temp = clientBuffer.buff + clientBuffer.wpos; char* temp = clientBuffer.buff + clientBuffer.wpos;
size_t dwLenToRead = BUFF_SIZE - clientBuffer.wpos; size_t dwLenToRead = BUFF_SIZE - clientBuffer.wpos;
int bytes_transfered = recv(clientSock, (char*)temp, (int)dwLenToRead, 0); int bytes_transfered = recv(clientSock, (char*)temp, (int)dwLenToRead, 0);
...@@ -268,11 +268,11 @@ int main(int argc, char** argv) ...@@ -268,11 +268,11 @@ int main(int argc, char** argv)
if (clientSock != INVALID_SOCKET && !evntsWaiting4Send.empty()) { if (clientSock != INVALID_SOCKET && !evntsWaiting4Send.empty()) {
std::lock_guard<std::mutex> lg(mutex); std::lock_guard<std::mutex> lg(mutex);
uint8_t buf[1024]; char buf[1024];
for (auto e : evntsWaiting4Send) { for (auto e : evntsWaiting4Send) {
if (e == EVENT_DISARM) { if (e == EVENT_DISARM) {
AdemcoXDataSegment xdata; AdemcoXDataSegment xdata;
ademcoMakeXData(&xdata, TWO_HEX, AdemcoXDataTransform::AdemcoXDataTransform_as_is, (const uint8_t*)pwd, 6); ademcoMakeXData(&xdata, TWO_HEX, AdemcoXDataTransform::AdemcoXDataTransform_as_is, pwd, 6);
int len = ademcoMakeHbPacket(buf, sizeof(buf), 1, clientAcct.c_str(), clientAdemcoId, e, 0, 0, &xdata); int len = ademcoMakeHbPacket(buf, sizeof(buf), 1, clientAcct.c_str(), clientAdemcoId, e, 0, 0, &xdata);
printf("S:"); ademcoPrint(buf, len); printf("S:"); ademcoPrint(buf, len);
send(clientSock, (const char*)buf, len, 0); send(clientSock, (const char*)buf, len, 0);
......
...@@ -467,7 +467,7 @@ const char* hbGetZoneFormatString(HbMachineType type) ...@@ -467,7 +467,7 @@ const char* hbGetZoneFormatString(HbMachineType type)
if (10 < zone && zone < 100) { return "%02d"; } else if (zone < 1000) { return "%03d"; } else { return "%d"; } if (10 < zone && zone < 100) { return "%02d"; } else if (zone < 1000) { return "%03d"; } else { return "%d"; }
} }
void hbSum(uint8_t* data, int len) void hbSum(uint8_t* data, size_t len)
{ {
uint8_t sum = 0; uint8_t sum = 0;
uint8_t* p = data; uint8_t* p = data;
...@@ -477,7 +477,7 @@ void hbSum(uint8_t* data, int len) ...@@ -477,7 +477,7 @@ void hbSum(uint8_t* data, int len)
*p = sum; *p = sum;
} }
int hbCheckSum(const uint8_t* data, int len) int hbCheckSum(const uint8_t* data, size_t len)
{ {
uint8_t sum = 0; uint8_t sum = 0;
const uint8_t* p = data; const uint8_t* p = data;
...@@ -489,11 +489,11 @@ int hbCheckSum(const uint8_t* data, int len) ...@@ -489,11 +489,11 @@ int hbCheckSum(const uint8_t* data, int len)
#define copy_data_to_com \ #define copy_data_to_com \
if (cd) { \ if (cd) { \
cd->len = len; \ cd->len = len & 0xFF; \
memcpy(cd->data, data, len); \ memcpy(cd->data, data, len & 0xFF); \
} }
HbComRequestType hbComParseRequest(const uint8_t* data, int len, HbComData* cd) HbComRequestType hbComParseRequest(const uint8_t* data, size_t len, HbComData* cd)
{ {
do { do {
if (len < 5) { break; } if (len < 5) { break; }
...@@ -614,7 +614,7 @@ ADEMCO_EXPORT_SYMBOL HbComRequestType hbComParseXDataRequest(const AdemcoXDataSe ...@@ -614,7 +614,7 @@ ADEMCO_EXPORT_SYMBOL HbComRequestType hbComParseXDataRequest(const AdemcoXDataSe
return hbComParseRequest(ademcoXDataGetValidContentAddr(xdata), ademcoXDataGetValidContentLen(xdata), cd); return hbComParseRequest(ademcoXDataGetValidContentAddr(xdata), ademcoXDataGetValidContentLen(xdata), cd);
} }
HbComResponseType hbComParseResponse(const uint8_t* data, int len, HbComData* cd) HbComResponseType hbComParseResponse(const uint8_t* data, size_t len, HbComData* cd)
{ {
do { do {
if (len < 7) { break; } // 所有的 response ,长度最小为 7 if (len < 7) { break; } // 所有的 response ,长度最小为 7
...@@ -869,18 +869,18 @@ void hbComMakeRespA0_getMachineStatus(HbComData* data, HbMachineStatus status, H ...@@ -869,18 +869,18 @@ void hbComMakeRespA0_getMachineStatus(HbComData* data, HbMachineStatus status, H
hbSum(data->data, data->len); hbSum(data->data, data->len);
} }
void hbComMakeRespA2_getMachineZones(HbComData* data, int count, AdemcoZone* zones, HbZoneProperty* props, HbComResp_A2_p1 p1) void hbComMakeRespA2_getMachineZones(HbComData* data, size_t count, AdemcoZone* zones, HbZoneProperty* props, HbComResp_A2_p1 p1)
{ {
if (count > HbComResp_A2_max_zone) { return; } if (count > HbComResp_A2_max_zone) { return; }
memcpy(data->data, HbComResp_A2_head, 6); memcpy(data->data, HbComResp_A2_head, 6);
data->data[3] = HbComResp_A2_len_min + count * 2; data->data[3] = (HbComResp_A2_len_min + count * 2) & 0xFF;
uint8_t* p = data->data + 6; uint8_t* p = data->data + 6;
for (int i = 0; i < count; i++) { for (size_t i = 0; i < count; i++) {
*p++ = zones[i] & 0xFF; *p++ = zones[i] & 0xFF;
*p++ = props[i]; *p++ = props[i];
} }
*p++ = (count > 0) ? p1 : HbComResp_A2_p1_nomore; *p++ = (count > 0) ? p1 : HbComResp_A2_p1_nomore;
data->len = ++p - data->data; data->len = (++p - data->data) & 0xFF;
hbSum(data->data, data->len); hbSum(data->data, data->len);
} }
...@@ -929,14 +929,14 @@ void hbComMakeRespAB_modifyMachineZoneLostConfig(HbComData* data, AdemcoZone zon ...@@ -929,14 +929,14 @@ void hbComMakeRespAB_modifyMachineZoneLostConfig(HbComData* data, AdemcoZone zon
hbSum(data->data, data->len); hbSum(data->data, data->len);
} }
void hbComMakeRespAD_getMachineZoneLostConfig(HbComData* data, HbComResp_AD_p1 p1, int count, AdemcoZone* zones, HbComResp_AD_p2 p2) void hbComMakeRespAD_getMachineZoneLostConfig(HbComData* data, HbComResp_AD_p1 p1, size_t count, AdemcoZone* zones, HbComResp_AD_p2 p2)
{ {
if (count > HbComResp_AD_max_zone) { return; } if (count > HbComResp_AD_max_zone) { return; }
memcpy(data->data, HbComResp_AD_head, 6); memcpy(data->data, HbComResp_AD_head, 6);
data->data[3] = HbComResp_AD_len_min + (p1 == HbComResp_AD_p1_single ? count : count * 2); data->data[3] = (HbComResp_AD_len_min + (p1 == HbComResp_AD_p1_single ? count : count * 2)) & 0xFF;
data->data[6] = p1; data->data[6] = p1;
uint8_t* p = data->data + 7; uint8_t* p = data->data + 7;
for (int i = 0; i < count; i++) { for (size_t i = 0; i < count; i++) {
if (p1 == HbComResp_AD_p1_single) { if (p1 == HbComResp_AD_p1_single) {
*p++ = zones[i] & 0xFF; *p++ = zones[i] & 0xFF;
} else { } else {
...@@ -945,7 +945,7 @@ void hbComMakeRespAD_getMachineZoneLostConfig(HbComData* data, HbComResp_AD_p1 p ...@@ -945,7 +945,7 @@ void hbComMakeRespAD_getMachineZoneLostConfig(HbComData* data, HbComResp_AD_p1 p
} }
} }
*p++ = (count > 0) ? p2 : HbComResp_AD_p2_nomore; *p++ = (count > 0) ? p2 : HbComResp_AD_p2_nomore;
data->len = ++p - data->data; data->len = (++p - data->data) & 0xFF;
hbSum(data->data, data->len); hbSum(data->data, data->len);
} }
......
...@@ -130,7 +130,7 @@ typedef union HbMachineTimer { ...@@ -130,7 +130,7 @@ typedef union HbMachineTimer {
// 串口透传数据 // 串口透传数据
typedef struct HbComData { typedef struct HbComData {
uint8_t data[HB_COM_DATA_MAX_LEN]; uint8_t data[HB_COM_DATA_MAX_LEN];
int len; uint8_t len;
}HbComData; }HbComData;
// 发给主机 // 发给主机
...@@ -192,7 +192,7 @@ typedef enum HbComResp_A2_p1 { ...@@ -192,7 +192,7 @@ typedef enum HbComResp_A2_p1 {
#define HbComResp_A2_head "\xEB\xBA\x3F\x08\xCC\xA2" #define HbComResp_A2_head "\xEB\xBA\x3F\x08\xCC\xA2"
typedef struct HbComResp_A2_Iter { typedef struct HbComResp_A2_Iter {
HbComData com; HbComData com;
int i, total; uint8_t i, total;
HbComResp_A2_p1 p1; HbComResp_A2_p1 p1;
}HbComResp_A2_Iter; }HbComResp_A2_Iter;
...@@ -397,13 +397,13 @@ ADEMCO_EXPORT_SYMBOL const char* hbZonePropertyToStringChinese(HbZoneProperty zp ...@@ -397,13 +397,13 @@ ADEMCO_EXPORT_SYMBOL const char* hbZonePropertyToStringChinese(HbZoneProperty zp
ADEMCO_EXPORT_SYMBOL const char* hbGetZoneFormatString(HbMachineType type); ADEMCO_EXPORT_SYMBOL const char* hbGetZoneFormatString(HbMachineType type);
// 累加校验,计算data[0] ~ data[len-2],校验和放在data[len-1] // 累加校验,计算data[0] ~ data[len-2],校验和放在data[len-1]
ADEMCO_EXPORT_SYMBOL void hbSum(uint8_t* data, int len); ADEMCO_EXPORT_SYMBOL void hbSum(uint8_t* data, size_t len);
// 校验和是否正确, return 0 for incorrect, otherwise correct // 校验和是否正确, return 0 for incorrect, otherwise correct
ADEMCO_EXPORT_SYMBOL int hbCheckSum(const uint8_t* data, int len); ADEMCO_EXPORT_SYMBOL int hbCheckSum(const uint8_t* data, size_t len);
ADEMCO_EXPORT_SYMBOL HbComRequestType hbComParseRequest(const uint8_t* buff, int 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);
ADEMCO_EXPORT_SYMBOL HbComResponseType hbComParseResponse(const uint8_t* buff, int len, HbComData* cd); ADEMCO_EXPORT_SYMBOL HbComResponseType hbComParseResponse(const uint8_t* buff, size_t len, HbComData* 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);
...@@ -429,7 +429,7 @@ ADEMCO_EXPORT_SYMBOL HbComResp_A2_p1 hbComResp_A2_Iter_next(HbComResp_A2_Iter* i ...@@ -429,7 +429,7 @@ ADEMCO_EXPORT_SYMBOL HbComResp_A2_p1 hbComResp_A2_Iter_next(HbComResp_A2_Iter* i
ADEMCO_EXPORT_SYMBOL void hbComMakeRespA0_getMachineStatus(HbComData* data, HbMachineStatus status, HbMachineType type); ADEMCO_EXPORT_SYMBOL void hbComMakeRespA0_getMachineStatus(HbComData* data, HbMachineStatus status, HbMachineType type);
// zones and props length is count // zones and props length is count
// if count is 0, p1 wil be set to HbComResp_A2_p1_nomore // 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 hbComMakeRespA2_getMachineZones(HbComData* data, size_t count, AdemcoZone* zones, HbZoneProperty* props, HbComResp_A2_p1 p1);
// 学码开始,等待探测器无线信号中 // 学码开始,等待探测器无线信号中
ADEMCO_EXPORT_SYMBOL void hbComMakeRespA3_waitingSignal(HbComData* data); ADEMCO_EXPORT_SYMBOL void hbComMakeRespA3_waitingSignal(HbComData* data);
ADEMCO_EXPORT_SYMBOL void hbComMakeRespA4_modifyMachineZone(HbComData* data, AdemcoZone zone, HbZoneProperty prop, HbComResp_A4_p3 p3); ADEMCO_EXPORT_SYMBOL void hbComMakeRespA4_modifyMachineZone(HbComData* data, AdemcoZone zone, HbZoneProperty prop, HbComResp_A4_p3 p3);
...@@ -440,7 +440,7 @@ ADEMCO_EXPORT_SYMBOL void hbComMakeRespA8_reject(HbComData* data); ...@@ -440,7 +440,7 @@ ADEMCO_EXPORT_SYMBOL void hbComMakeRespA8_reject(HbComData* data);
// ADEMCO_EXPORT_SYMBOL void hbComMakeRespA9_(HbComData* data); // ADEMCO_EXPORT_SYMBOL void hbComMakeRespA9_(HbComData* data);
ADEMCO_EXPORT_SYMBOL void hbComMakeRespAB_modifyMachineZoneLostConfig(HbComData* data, AdemcoZone zone, HbComResp_AB_p2 p2); ADEMCO_EXPORT_SYMBOL void hbComMakeRespAB_modifyMachineZoneLostConfig(HbComData* data, AdemcoZone zone, HbComResp_AB_p2 p2);
// 返回所有失联开的防区 // 返回所有失联开的防区
ADEMCO_EXPORT_SYMBOL void hbComMakeRespAD_getMachineZoneLostConfig(HbComData* data, HbComResp_AD_p1 p1, int count, AdemcoZone* zones, HbComResp_AD_p2 p2); ADEMCO_EXPORT_SYMBOL void hbComMakeRespAD_getMachineZoneLostConfig(HbComData* data, HbComResp_AD_p1 p1, size_t count, AdemcoZone* zones, HbComResp_AD_p2 p2);
ADEMCO_EXPORT_SYMBOL void hbComMakeRespAF_set3SectionMachineStatus(HbComData* data, HbCom_3sec_which p1, HbCom_3sec_status status); ADEMCO_EXPORT_SYMBOL void hbComMakeRespAF_set3SectionMachineStatus(HbComData* data, HbCom_3sec_which p1, HbCom_3sec_status status);
ADEMCO_EXPORT_SYMBOL void hbComMakeRespB1_get3SectionMachineStatus(HbComData* data, HbMachineStatus statusMachine, ADEMCO_EXPORT_SYMBOL void hbComMakeRespB1_get3SectionMachineStatus(HbComData* data, HbMachineStatus statusMachine,
HbMachineStatus statusSec1, HbMachineStatus statusSec2, HbMachineStatus statusSec3); HbMachineStatus statusSec1, HbMachineStatus statusSec2, HbMachineStatus statusSec3);
......
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