diff --git a/README.md b/README.md index e69de29..a4c79b5 100644 --- a/README.md +++ b/README.md @@ -0,0 +1 @@ +make clean;make Cable diff --git a/app/lib/a_process/ca_csg.c b/app/lib/a_process/ca_csg.c index c374205..2175b01 100755 --- a/app/lib/a_process/ca_csg.c +++ b/app/lib/a_process/ca_csg.c @@ -24,6 +24,9 @@ #include "debug.h" #include "ca_cau.h" #include "ca_dbg.h" +#include "ca_param.h" +#include "ca_network.h" + /* Private define ------------------------------------------------------------*/ @@ -34,7 +37,7 @@ /* Private variables ---------------------------------------------------------*/ csg_t csg; int csg_reconn_times = 0; -extern cau_collect_flag; +extern int cau_collect_flag; //extern int upg_state; //char csg_deliver_path[128] = {0}; @@ -376,29 +379,129 @@ int _csg_response_realtime_data(int sendtype) return 0; } -int _csg_query_device_config() +int _csg_get_system_config() +{ + struct in_addr addr; + + strncpy((char *)pparam_config->gateway.DeviceNum, host.name, 15); + + inet_pton(AF_INET, device_info.host_ip, &addr); + memcpy(pparam_config->gateway.LocalIP1, &addr.s_addr, 4); + + memcpy(pparam_config->gateway.ServerIP1, &csg.server.sin_addr.s_addr, 4); + pparam_config->gateway.ServerIP1_Port = csg.server_port; + + char buf[64] = {0}; + sprintf(buf, "V%s", host.version); + strcpy((char *)pparam_config->gateway.reserved, buf); + + _csg_send_packet(Res_ReqSysCfg, (char *)&pparam_config->gateway, sizeof(GateWay_t)); + return 0; +} + +int _csg_set_system_config(char *databuf, int datalen) +{ + if (datalen != sizeof(GateWay_t)) + { + int result = 0; + DBG(DBG_M_CA_CSG_ERR, "msg reallen:%d,expect len:%d\n", datalen, sizeof(GateWay_t)); + return _csg_send_packet(Res_SetSysCfg, (char *)&result, sizeof(result)); + } + + GateWay_t *pcfg = (GateWay_t *)databuf; + if (strncmp((char *)pcfg->apn, (char *)pparam_config->gateway.apn, + sizeof(pparam_config->gateway.apn)) != 0) + { + _network_change_apn((char *)pcfg->apn); + } + + strncpy(host.name, (char *)pcfg->DeviceNum, 15); + sysctrl.dev_hex_id = dev_id_2_hex(host.name); + + + sprintf(device_info.host_ip, "%d.%d.%d.%d", pcfg->LocalIP1[0], + pcfg->LocalIP1[1], pcfg->LocalIP1[2], pcfg->LocalIP1[3]); + + char serverip[16] = {0}; + sprintf(serverip, "%d.%d.%d.%d", pcfg->ServerIP1[0], + pcfg->ServerIP1[1], pcfg->ServerIP1[2], pcfg->ServerIP1[3]); + csg.server_ip = inet_addr(serverip); + LOG("serverip=0x%x", csg.server_ip); + LOG("%d %d %d %d", csg.server_ip & 0xff, (csg.server_ip >> 8) & 0xff, + (csg.server_ip >> 16) & 0xff, (csg.server_ip >> 24) & 0xff); + csg.server_port = (uint16_t)pcfg->ServerIP1_Port; + + memcpy(&pparam_config->gateway, databuf, datalen); + + param_save(); + + vtysh_config_save(); + uint8_t mac[MAC_ADDR_LEN] = {0}; + mac_generate_from_ip(device_info.host_ip, mac); + memcpy(device_info.mac, mac, MAC_ADDR_LEN); + vtysh_eth0_save(); + vtysh_device_save(); + reboot_system(LOG_DEBUG, BOOT_REMOTE_IP_CHANGE); + return 0; +} + + +int _csg_get_device_config() { _csg_send_packet(Res_ReqDevCfg, (char *)&pparam_config->landHexCfg, sizeof(LandDevCfg_t)); - LOG("cau1En:%d", pparam_config->landHexCfg.cau1En); - LOG("cau1level:%d", pparam_config->landHexCfg.cau1level); - LOG("cau1Space:%d", pparam_config->landHexCfg.cau1Space); - LOG("cau1Ch1:%d", pparam_config->landHexCfg.cau1Ch1); - LOG("cau1Ch2:%d", pparam_config->landHexCfg.cau1Ch2); - LOG("cau1Ch3:%d", pparam_config->landHexCfg.cau1Ch3); - LOG("cau1Ch4:%d", pparam_config->landHexCfg.cau1Ch4); - LOG("cau1Ch5:%d", pparam_config->landHexCfg.cau1Ch5); - LOG("cau1Ch6:%d", pparam_config->landHexCfg.cau1Ch6); - LOG("cau1Ch7:%d", pparam_config->landHexCfg.cau1Ch7); - LOG("cau1Ch8:%d", pparam_config->landHexCfg.cau1Ch8); return 0; } -int _csg_set_device_config() +int _csg_set_device_config(char *databuf, int datalen) { - + if (datalen != sizeof(LandDevCfg_t)) + { + int result = 0; + DBG(DBG_M_CA_CSG_ERR, "msg reallen:%d,expect len:%d\n", datalen, sizeof(LandDevCfg_t)); + return _csg_send_packet(Res_SetDevCfg, (char *)&result, sizeof(result)); + } + + memcpy(&pparam_config->landHexCfg, databuf, sizeof(LandDevCfg_t)); + + param_save(); return 0; } +int _csg_get_cau_cfg() +{ + char buf[1024] = {0}; + int i; + int len; + for (i = 0; i < 24; i++) + { + memcpy(buf + i * 32, &pparam_config->cauParam[i], 24); + } + len = 32 * 24; + _csg_send_packet(Res_ReqCauCfg, buf, len); + return 0; +} + +int _csg_set_cau_cfg(char *databuf, int datalen) +{ + int i; + + if (datalen != 1024) + { + DBG(DBG_M_CA_CSG_ERR, "msg reallen:%d,expect len:1024\n", datalen); + int result = 0; + return _csg_send_packet(Res_SetCauCfg, (char *)&result, sizeof(result)); + } + + for (i = 0; i < 24; i++) + { + memcpy(&pparam_config->cauParam[i], databuf + i * 32, 24); + } + param_save(); + + int result = 1; + return _csg_send_packet(Res_SetCauCfg, (char *)&result, sizeof(result)); +} + #if 0 int _csg_upload_realtime_data() { @@ -453,7 +556,9 @@ int _csg_recv_process(char *buf) //---------------------------- char str[128] = {0}; time2str(str); - DBG(DBG_M_CA_CSG, "%s cmd=0x%x\n", str, head->Type); + int dataLen = head->Len - LandPackHeadTailLen; + char *pdata = buf + sizeof(LandPkHead); + DBG(DBG_M_CA_CSG, "%s cmd=0x%x len=%d\n", str, head->Type, dataLen); //---------------------------- switch (head->Type) { @@ -463,11 +568,23 @@ int _csg_recv_process(char *buf) case Cmd_ReqRTD2: _csg_response_realtime_data(1); break; + case Cmd_ReqSysCfg: + _csg_get_system_config(); + break; + case Cmd_SetSysCfg: + _csg_set_system_config(pdata, dataLen); + break; case Cmd_ReqDevCfg: - _csg_query_device_config(); + _csg_get_device_config(); break; case Cmd_SetDevCfg: - _csg_set_device_config(); + _csg_set_device_config(pdata, dataLen); + break; + case Cmd_ReqCauCfg: + _csg_get_cau_cfg(); + break; + case Cmd_SetCauCfg: + _csg_set_cau_cfg(pdata, dataLen); break; default: break; diff --git a/app/lib/a_process/ca_dbg.c b/app/lib/a_process/ca_dbg.c index 6076dbf..95e602c 100755 --- a/app/lib/a_process/ca_dbg.c +++ b/app/lib/a_process/ca_dbg.c @@ -105,7 +105,7 @@ int _dbg_pkt_config_get(debug_msg_info_t *msg) // device_info.id_major, device_info.id_minor); strncpy((char *)pparam_config->gateway.DeviceNum, host.name, 15); - sysctrl.dev_hex_id = sysctrl.dev_hex_id; + //sysctrl.dev_hex_id = sysctrl.dev_hex_id; inet_pton(AF_INET, device_info.host_ip, &addr); memcpy(pparam_config->gateway.LocalIP1, &addr.s_addr, 4);