2025-02-15 18:49:38 +08:00

91 lines
2.9 KiB
C++

#include <string.h>
#include "cmt_server.hpp"
#include "SH_LocalServer.hpp"
#include "../jsonparse/SH_JsonCmd.hpp"
#include "../common/SH_global.h"
void LocalServer::HandleTcp_cmd(const char* recv_data,char* send_data,uint8_t& rescmd,int& send_length,int recvbody_length)
{
PackageHead head;
memcpy(&head,recv_data,sizeof(PackageHead));
uint8_t cmd = head.cmd;
rescmd = head.cmd;
printf("cmd = %d\n",cmd);
JsonData jd;
switch (cmd)
{
case 1:{
Search search;
search.version = 1;
memcpy(search.mac,GlobalConfig::MacAddr_G.c_str(),sizeof(search.mac));
#ifdef IMX6UL_GATEWAY
search.gw_type = kGWTDG101;
#endif
#ifdef G2UL_GATEWAY
search.gw_type = kGWTDG102;
#endif
send_length = sizeof(Search);
memcpy(send_data,&search,sizeof(Search));
}break;
case kGateWayVersion: {
jd.CmtCmd_80(send_data,send_length);
}break;
case kSensorInfo:{
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);
}
}break;
case kSensorWave:{
WaveReq wave_req;
memcpy(&wave_req,recv_data + sizeof(PackageHead),sizeof(WaveReq));
jd.CmtCmd_82(wave_req.measurement_id,send_data,wave_req.channel,send_length);
}break;
case KDownloadConfig:{
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);
if (recv_body){
free(recv_body);
}
}break;
case KUploadConfig:{
UploadConfigReq upload_config;
memcpy(&upload_config,recv_data + sizeof(PackageHead),sizeof(UploadConfigReq));
printf("filename = %s\n",upload_config.filename);
jd.CmtCmd_84(upload_config.filename,upload_config.md5,send_data,send_length);
}break;
case KUpgadeGateway:{
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);
}break;
case KEigenvalue:{
GetEigenvalueReq get_eigenvalue;
memcpy(&get_eigenvalue,recv_data + sizeof(PackageHead),sizeof(GetEigenvalueReq));
jd.CmtCmd_87(get_eigenvalue.measurement_id,send_data,send_length);
}
break;
default:
break;
}
}