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
{
size_t rpos;
size_t wpos;
uint8_t buff[BUFF_SIZE];
char buff[BUFF_SIZE];
Buffer() { clear(); }
void clear() { memset(this, 0, sizeof(Buffer)); }
......@@ -139,7 +139,7 @@ int main(int argc, char** argv)
};
auto do_handle = []() -> AdemcoParseResult {
AdemcoPacket pkt; int cb = 0;
AdemcoPacket pkt; size_t cb = 0;
AdemcoParseResult result = ademcoPacketParse(clientBuffer.buff + clientBuffer.rpos,
clientBuffer.wpos - clientBuffer.rpos,
&pkt,
......@@ -158,8 +158,8 @@ int main(int argc, char** argv)
case AID_NULL: // reply ack
{
uint8_t ack[1024];
int len = ademcoMakeAckPacket((uint8_t*)ack, sizeof(ack), pkt.seq, pkt.acct, 0);
char ack[1024];
int len = ademcoMakeAckPacket(ack, sizeof(ack), pkt.seq, pkt.acct, 0);
printf("S:"); ademcoPrint(ack, len);
send(clientSock, (const char*)ack, len, 0);
break;
......@@ -174,8 +174,8 @@ int main(int argc, char** argv)
// reply ack
{
uint8_t ack[1024];
int len = ademcoMakeAckPacket((uint8_t*)ack, sizeof(ack), pkt.seq, pkt.acct, 0);
char ack[1024];
int len = ademcoMakeAckPacket(ack, sizeof(ack), pkt.seq, pkt.acct, 0);
printf("S:"); ademcoPrint(ack, len);
send(clientSock, (const char*)ack, len, 0);
}
......@@ -218,7 +218,7 @@ int main(int argc, char** argv)
int bRead = FD_ISSET(clientSock, &fd_read);
if (!bRead) { return; }
uint8_t* temp = clientBuffer.buff + clientBuffer.wpos;
char* temp = clientBuffer.buff + clientBuffer.wpos;
size_t dwLenToRead = BUFF_SIZE - clientBuffer.wpos;
int bytes_transfered = recv(clientSock, (char*)temp, (int)dwLenToRead, 0);
......@@ -268,11 +268,11 @@ int main(int argc, char** argv)
if (clientSock != INVALID_SOCKET && !evntsWaiting4Send.empty()) {
std::lock_guard<std::mutex> lg(mutex);
uint8_t buf[1024];
char buf[1024];
for (auto e : evntsWaiting4Send) {
if (e == EVENT_DISARM) {
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);
printf("S:"); ademcoPrint(buf, len);
send(clientSock, (const char*)buf, len, 0);
......
......@@ -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"; }
}
void hbSum(uint8_t* data, int len)
void hbSum(uint8_t* data, size_t len)
{
uint8_t sum = 0;
uint8_t* p = data;
......@@ -477,7 +477,7 @@ void hbSum(uint8_t* data, int len)
*p = sum;
}
int hbCheckSum(const uint8_t* data, int len)
int hbCheckSum(const uint8_t* data, size_t len)
{
uint8_t sum = 0;
const uint8_t* p = data;
......@@ -489,11 +489,11 @@ int hbCheckSum(const uint8_t* data, int len)
#define copy_data_to_com \
if (cd) { \
cd->len = len; \
memcpy(cd->data, data, len); \
cd->len = len & 0xFF; \
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 {
if (len < 5) { break; }
......@@ -614,7 +614,7 @@ ADEMCO_EXPORT_SYMBOL HbComRequestType hbComParseXDataRequest(const AdemcoXDataSe
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 {
if (len < 7) { break; } // 所有的 response ,长度最小为 7
......@@ -869,18 +869,18 @@ void hbComMakeRespA0_getMachineStatus(HbComData* data, HbMachineStatus status, H
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; }
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;
for (int i = 0; i < count; i++) {
for (size_t i = 0; i < count; i++) {
*p++ = zones[i] & 0xFF;
*p++ = props[i];
}
*p++ = (count > 0) ? p1 : HbComResp_A2_p1_nomore;
data->len = ++p - data->data;
data->len = (++p - data->data) & 0xFF;
hbSum(data->data, data->len);
}
......@@ -929,14 +929,14 @@ void hbComMakeRespAB_modifyMachineZoneLostConfig(HbComData* data, AdemcoZone zon
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; }
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;
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) {
*p++ = zones[i] & 0xFF;
} else {
......@@ -945,7 +945,7 @@ void hbComMakeRespAD_getMachineZoneLostConfig(HbComData* data, HbComResp_AD_p1 p
}
}
*p++ = (count > 0) ? p2 : HbComResp_AD_p2_nomore;
data->len = ++p - data->data;
data->len = (++p - data->data) & 0xFF;
hbSum(data->data, data->len);
}
......
......@@ -130,7 +130,7 @@ typedef union HbMachineTimer {
// 串口透传数据
typedef struct HbComData {
uint8_t data[HB_COM_DATA_MAX_LEN];
int len;
uint8_t len;
}HbComData;
// 发给主机
......@@ -192,7 +192,7 @@ typedef enum HbComResp_A2_p1 {
#define HbComResp_A2_head "\xEB\xBA\x3F\x08\xCC\xA2"
typedef struct HbComResp_A2_Iter {
HbComData com;
int i, total;
uint8_t i, total;
HbComResp_A2_p1 p1;
}HbComResp_A2_Iter;
......@@ -397,13 +397,13 @@ ADEMCO_EXPORT_SYMBOL const char* hbZonePropertyToStringChinese(HbZoneProperty zp
ADEMCO_EXPORT_SYMBOL const char* hbGetZoneFormatString(HbMachineType type);
// 累加校验,计算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
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 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 void hbComMakeReqA0_getMachineStatus(HbComData* data);
......@@ -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);
// 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 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 hbComMakeRespA4_modifyMachineZone(HbComData* data, AdemcoZone zone, HbZoneProperty prop, HbComResp_A4_p3 p3);
......@@ -440,7 +440,7 @@ ADEMCO_EXPORT_SYMBOL void hbComMakeRespA8_reject(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 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 hbComMakeRespB1_get3SectionMachineStatus(HbComData* data, HbMachineStatus statusMachine,
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