91 lines
2.9 KiB
C++
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;
|
|
}
|
|
|
|
}
|