Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: NaturalTinyShell_ice libmDot-12Sept mbed-rtos mbed
Fork of ICE by
Diff: src/ModbusMaster/ModbusMaster.cpp
- Revision:
- 237:ecf34419ce5d
- Parent:
- 235:ce028fbf054d
- Child:
- 282:2dc06137f1ec
--- a/src/ModbusMaster/ModbusMaster.cpp Thu Oct 20 12:39:05 2016 +0000
+++ b/src/ModbusMaster/ModbusMaster.cpp Thu Oct 20 14:10:19 2016 +0000
@@ -11,7 +11,7 @@
#include "ModbusMaster.h"
#include "ModbusMasterApi.h"
#include "mod.h"
-#include "MbedJSONValue.h"
+#include "cJSON.h"
DigitalOut dout1(PC_1);
DigitalOut dout2(PA_1);
@@ -246,23 +246,22 @@
void ModbusMasterExecCmd( char *cmd )
{
- MbedJSONValue json_cmd;
bool status;
int ret;
unsigned char rd_buf[16];
// printf("%s:%d: command=%s\r\n", __func__, __LINE__, cmd );
- parse( json_cmd, cmd );
-
- std::string id = json_cmd["id"].get<std::string>().c_str();
- int node = atoi(json_cmd["node"].get<std::string>().c_str());
- int func = atoi(json_cmd["func"].get<std::string>().c_str());
- int sreg = atoi(json_cmd["sreg"].get<std::string>().c_str());
- int nreg = atoi(json_cmd["nreg"].get<std::string>().c_str());
- int dtype = atoi(json_cmd["dtype"].get<std::string>().c_str());
- int order = atoi(json_cmd["order"].get<std::string>().c_str());
- float value = atof(json_cmd["value"].get<std::string>().c_str());
+ cJSON * root = cJSON_Parse(cmd);
+ std::string id = cJSON_GetObjectItem(root,"id")->valuestring;
+ int node = atoi(cJSON_GetObjectItem(root,"node")->valuestring);
+ int func = atoi(cJSON_GetObjectItem(root,"func")->valuestring);
+ int sreg = atoi(cJSON_GetObjectItem(root,"sreg")->valuestring);
+ int nreg = atoi(cJSON_GetObjectItem(root,"nreg")->valuestring);
+ int dtype = atoi(cJSON_GetObjectItem(root,"dtype")->valuestring);
+ int order = atoi(cJSON_GetObjectItem(root,"order")->valuestring);
+ float value = atof(cJSON_GetObjectItem(root,"value")->valuestring);
+ cJSON_Delete(root);
switch( func ) {
case MOD_FUNC_GET_HREG: // read holding register
@@ -369,17 +368,17 @@
} else {
printf("(%s:%d)loading File: %s\r\n", __func__, __LINE__, fileName );
}
- MbedJSONValue json_value;
- parse( json_value, ModbusMasterScratchBuf );
-
- std::string tag = json_value["tag"].get<std::string>().c_str();
- std::string id = json_value["id"].get<std::string>().c_str();
- VirtualCommandMap[tag][id].c = atof(json_value["c"].get<std::string>().c_str());
- VirtualCommandMap[tag][id].tag = json_value["tag"].get<std::string>().c_str();
- VirtualCommandMap[tag][id].opl = json_value["opl"].get<std::string>().c_str();
- VirtualCommandMap[tag][id].opr = json_value["opr"].get<std::string>().c_str();
- VirtualCommandMap[tag][id].op = json_value["op"].get<std::string>().c_str();
+
+ cJSON * root = cJSON_Parse(ModbusMasterScratchBuf);
+ std::string tag = cJSON_GetObjectItem(root,"tag")->valuestring;
+ std::string id = cJSON_GetObjectItem(root,"id")->valuestring;
+ VirtualCommandMap[tag][id].c = atof(cJSON_GetObjectItem(root,"c")->valuestring);
+ VirtualCommandMap[tag][id].tag = cJSON_GetObjectItem(root,"tag")->valuestring;
+ VirtualCommandMap[tag][id].opl = cJSON_GetObjectItem(root,"opl")->valuestring;
+ VirtualCommandMap[tag][id].opr = cJSON_GetObjectItem(root,"opr")->valuestring;
+ VirtualCommandMap[tag][id].op = cJSON_GetObjectItem(root,"op")->valuestring;
printf("Processd virtual command file: id=%s, tag=%s\r\n", id.c_str(), tag.c_str());
+ cJSON_Delete(root);
return;
}
@@ -396,7 +395,6 @@
}
if( regType != REG_TYPE_NONE ) {
- MbedJSONValue json_value;
status = GLOBAL_mdot->readUserFile(fileName, ModbusMasterScratchBuf, MAX_FILE_SIZE);
if( status != true ) {
logInfo("(%d)read file failed, status=%d", __LINE__, status);
@@ -404,28 +402,28 @@
} else {
logInfo("(%s:%d)loading File: %s", __func__, __LINE__, fileName );
}
-
- parse( json_value, ModbusMasterScratchBuf );
-
- std::string id = json_value["id"].get<std::string>().c_str();
- ModbusRegisterMap[id].name = json_value["name"].get<std::string>().c_str();
- ModbusRegisterMap[id].units = json_value["units"].get<std::string>().c_str();
- ModbusRegisterMap[id].min = atof(json_value["min"].get<std::string>().c_str());
- ModbusRegisterMap[id].max = atof(json_value["max"].get<std::string>().c_str());
- ModbusRegisterMap[id].node = atoi(json_value["node"].get<std::string>().c_str());
- ModbusRegisterMap[id].reg = atoi(json_value["reg"].get<std::string>().c_str());
- ModbusRegisterMap[id].rtype = atoi(json_value["rtype"].get<std::string>().c_str());
- ModbusRegisterMap[id].type = atoi(json_value["type"].get<std::string>().c_str());
- ModbusRegisterMap[id].size = atoi(json_value["size"].get<std::string>().c_str());
- ModbusRegisterMap[id].order = atoi(json_value["order"].get<std::string>().c_str());
- ModbusRegisterMap[id].fmt = json_value["fmt"].get<std::string>().c_str();
- ModbusRegisterMap[id].rfreq = atoi(json_value["rfreq"].get<std::string>().c_str());
+
+ cJSON * root = cJSON_Parse(ModbusMasterScratchBuf);
+ std::string id = cJSON_GetObjectItem(root,"id")->valuestring;
+ ModbusRegisterMap[id].name = cJSON_GetObjectItem(root,"name")->valuestring;
+ ModbusRegisterMap[id].units = cJSON_GetObjectItem(root,"units")->valuestring;
+ ModbusRegisterMap[id].min = atof(cJSON_GetObjectItem(root,"min")->valuestring);
+ ModbusRegisterMap[id].max = atof(cJSON_GetObjectItem(root,"max")->valuestring);
+ ModbusRegisterMap[id].node = atoi(cJSON_GetObjectItem(root,"node")->valuestring);
+ ModbusRegisterMap[id].reg = atoi(cJSON_GetObjectItem(root,"reg")->valuestring);
+ ModbusRegisterMap[id].rtype = atoi(cJSON_GetObjectItem(root,"rtype")->valuestring);
+ ModbusRegisterMap[id].type = atoi(cJSON_GetObjectItem(root,"type")->valuestring);
+ ModbusRegisterMap[id].size = atoi(cJSON_GetObjectItem(root,"size")->valuestring);
+ ModbusRegisterMap[id].order = atoi(cJSON_GetObjectItem(root,"order")->valuestring);
+ ModbusRegisterMap[id].fmt = cJSON_GetObjectItem(root,"fmt")->valuestring;
+ ModbusRegisterMap[id].rfreq = atoi(cJSON_GetObjectItem(root,"rfreq")->valuestring);
ModbusRegisterMap[id].regType = regType;
ModbusRegisterMap[id].simulated = false;
ModbusRegisterMap[id].errflag = 0;
if( (regType == REG_TYPE_VINPUT) || (regType == REG_TYPE_VOUTPUT) ) {
- ModbusRegisterMap[id].vcmd = json_value["vcmd"].get<std::string>().c_str();
+ ModbusRegisterMap[id].vcmd = cJSON_GetObjectItem(root,"vcmd")->valuestring;
}
+ cJSON_Delete(root);
}
return;
}
