WLG/localserver/cmt_cmd.cpp

110 lines
3.9 KiB
C++
Raw Normal View History

2025-01-09 20:00:34 +08:00
#include "local_server.hpp"
#include "jsonparse/communication_cmd.hpp"
#include "common/global.hpp"
#include <string.h>
#include "zlog.h"
extern zlog_category_t *zct;
2025-01-22 17:13:45 +08:00
void LocalServer::HandleTcp_cmd(const char* recv_data,char* send_data,uint8_t& rescmd,int& send_length,int recvbody_length)
2025-01-09 20:00:34 +08:00
{
zlog_info(zct,"HandleTcp_cmd");
2025-01-22 17:13:45 +08:00
PackageHead head;
memcpy(&head,recv_data,sizeof(PackageHead));
2025-01-09 20:00:34 +08:00
uint8_t cmd = head.cmd;
rescmd = head.cmd;
2025-01-13 20:11:40 +08:00
printf("cmd = %d\n",cmd);
2025-01-09 20:00:34 +08:00
JsonData jd;
switch (cmd)
{
2025-01-13 20:11:40 +08:00
case 1:{
2025-01-09 20:00:34 +08:00
Search search;
2025-01-13 20:11:40 +08:00
search.version = 1;
2025-01-09 20:00:34 +08:00
memcpy(search.mac,GlobalConfig::MacAddr_G.c_str(),sizeof(search.mac));
search.gw_type = kGWTDG102;
2025-01-13 20:11:40 +08:00
send_length = sizeof(Search);
printf("send length = %d\n",send_length);
memcpy(send_data,&search,sizeof(Search));
}break;
2025-01-09 20:00:34 +08:00
case kGateWayVersion: {
2025-01-13 20:11:40 +08:00
jd.CmtCmd_80(send_data,send_length);
}break;
2025-01-09 20:00:34 +08:00
case kSensorInfo:{
2025-01-22 17:13:45 +08:00
char *recv_body = NULL;
if (recvbody_length > 0){
recv_body = (char*)malloc(recvbody_length - 4);
memcpy(recv_body,recv_data + sizeof(PackageHead) + 4,recvbody_length - 4);
}
int count = 0;
memcpy((char*)&count,recv_data + sizeof(PackageHead),4);
jd.CmtCmd_81(recv_body,count,send_data,send_length);
if (recv_body){
free(recv_body);
}
2025-01-13 20:11:40 +08:00
}break;
case kSensorWave:{
2025-01-09 20:00:34 +08:00
WaveReq wave_req;
2025-01-22 17:13:45 +08:00
memcpy(&wave_req,recv_data + sizeof(PackageHead),sizeof(WaveReq));
2025-01-13 20:11:40 +08:00
jd.CmtCmd_82(wave_req.measurement_id,send_data,wave_req.channel,send_length);
}break;
case KDownloadConfig:{
2025-01-22 17:13:45 +08:00
char *recv_body = NULL;
int count = 0;
if (recvbody_length > 0){
recv_body = (char*)malloc(recvbody_length - 4);
memcpy((char*)&count,(char*)recv_data + sizeof(PackageHead),4);
memcpy(recv_body,recv_data + sizeof(PackageHead) + 4,recvbody_length - 4);
}
jd.CmtCmd_83(recv_body,count,send_data,send_length);
2025-01-13 20:11:40 +08:00
zlog_info(zct, "CmtCmd_83 = %d",send_length);
2025-01-22 17:13:45 +08:00
if (recv_body){
free(recv_body);
}
2025-01-13 20:11:40 +08:00
}break;
case KUploadConfig:{
2025-01-14 14:27:20 +08:00
UploadConfigReq upload_config;
2025-01-22 17:13:45 +08:00
memcpy(&upload_config,recv_data + sizeof(PackageHead),sizeof(UploadConfigReq));
2025-01-14 14:27:20 +08:00
jd.CmtCmd_84(upload_config.filename);
2025-01-13 20:11:40 +08:00
}break;
case KUpgadeGateway:{
2025-01-22 17:13:45 +08:00
UpgradeGwReq upgrade_gw;
memcpy(&upgrade_gw,recv_data + sizeof(PackageHead),sizeof(UpgradeGwReq));
jd.CmtCmd_85(upgrade_gw.filename,upgrade_gw.md5,send_data,send_length);
2025-01-13 20:11:40 +08:00
}break;
case KUpgradeSensor:{
2025-01-22 17:13:45 +08:00
char *recv_body = NULL;
int count = 0;
if (recvbody_length > 0){
recv_body = (char*)malloc(recvbody_length - sizeof(UpgradeSensorReq) - 4);
memcpy((char*)&count,(char*)recv_data + sizeof(PackageHead) + sizeof(UpgradeSensorReq) ,4);
memcpy(recv_body,recv_data + sizeof(PackageHead) + sizeof(UpgradeSensorReq) + 4,recvbody_length - sizeof(UpgradeSensorReq) - 4);
}
2025-01-14 14:27:20 +08:00
UpgradeSensorReq upgrade_sensor;
2025-01-22 17:13:45 +08:00
memcpy(&upgrade_sensor,recv_data + sizeof(PackageHead),sizeof(UpgradeSensorReq));
jd.CmtCmd_86(recv_body,count,upgrade_sensor.filename,upgrade_sensor.md5,send_data,send_length);
2025-01-14 14:27:20 +08:00
}break;
2025-01-13 20:11:40 +08:00
case KEigenvalue:{
}
break;
case KUpgradeSensorStop:{
2025-01-22 17:13:45 +08:00
char *recv_body = NULL;
int count = 0;
if (recvbody_length > 0){
recv_body = (char*)malloc(recvbody_length - 4);
memcpy((char*)&count,(char*)recv_data + sizeof(PackageHead) ,4);
memcpy(recv_body,recv_data + sizeof(PackageHead) + 4 ,recvbody_length - 4);
}
UpgradeSensorReq upgrade_sensor;
memcpy(&upgrade_sensor,recv_data + sizeof(PackageHead),sizeof(UpgradeSensorReq));
jd.CmtCmd_88(recv_body,count);
2025-01-13 20:11:40 +08:00
}
2025-01-09 20:00:34 +08:00
break;
default:
break;
}
}