public void decode_iot_cmd(char[] cmd_buffer, ref IoT_Command cmd) { const int max_value_size = 100; JsFileParser jsParser = new JsFileParser(); JsonData json_obj = new JsonData(); json_obj.content = cmd_buffer; //strcpy(json_obj.content, cmd_buffer); jsParser.init_token(ref json_obj); char[][] keys = new char[2][]; keys[0] = "IOTCMD\0".ToCharArray(); char[] tempValue = new char[max_value_size]; //memset(tempValue, '\0', max_value_size); keys[1] = "Type\0".ToCharArray(); jsParser.get_jsfile_value(keys, 2, json_obj, ref tempValue); if (jsParser.getFixString(tempValue) == "Req") { cmd.cmd_type = command_t.ReadRequest; } else if (jsParser.getFixString(tempValue) == "Res") { cmd.cmd_type = command_t.ReadResponse; } else if (jsParser.getFixString(tempValue) == "Wri") { cmd.cmd_type = command_t.Write; } else if (jsParser.getFixString(tempValue) == "Man") { cmd.cmd_type = command_t.Management; } else { throw new Exception("Invalid Command type"); } //memset(tempValue, '\0', max_value_size); keys[1] = "ID\0".ToCharArray(); jsParser.get_jsfile_value(keys, 2, json_obj, ref tempValue); cmd.ID = jsParser.getFixString(tempValue); keys[1] = "Value\0".ToCharArray(); jsParser.get_jsfile_value(keys, 2, json_obj, ref tempValue); cmd.Value = jsParser.getFixString(tempValue); }
public int encode_iot_cmd(ref char[] cmd_buffer, IoT_Command cmd) { int empty_length = 0; char[][] keys = new char[2][]; //char *empty_cmd = "{\"IOTCMD\":{\"CommandType\":None,\"ReadRequest\":{\"ID\":0},\"ReadResponse\":{\"ID\":0,\"Text\":\"None\"},\"Write\":{\"ID\":0,\"Data\":0}} }"; string empty_cmd_str = "{\"IOTCMD\":{\"Type\":None,\"ID\":0,\"Value\":0}}\0"; char[] empty_cmd = new char[JsFileParser.MAXPACKETSIZE]; empty_cmd_str.CopyTo(0, empty_cmd, 0, empty_cmd_str.Length); keys[0] = "IOTCMD\0".ToArray(); empty_length = empty_cmd.Length; JsonData json_obj = new JsonData(); json_obj.content = empty_cmd; //strcpy(json_obj.content, empty_cmd); jsParser.init_token(ref json_obj); //PrintAllToken(json); char[] value; keys[1] = "Type\0".ToCharArray(); switch (cmd.cmd_type) { case command_t.ReadRequest: value = "Req\0".ToCharArray(); jsParser.set_jsfile_single_value(value, keys, 2, ref json_obj); break; case command_t.ReadResponse: value = "Res\0".ToCharArray(); jsParser.set_jsfile_single_value(value, keys, 2, ref json_obj); break; case command_t.Write: value = "Wri\0".ToCharArray(); jsParser.set_jsfile_single_value(value, keys, 2, ref json_obj); break; case command_t.Management: value = "Man\0".ToCharArray(); jsParser.set_jsfile_single_value(value, keys, 2, ref json_obj); break; default: throw new Exception("Invalid command type"); } if (cmd.ID != null) { keys[1] = "ID\0".ToCharArray(); jsParser.set_jsfile_single_value((cmd.ID + "\0").ToCharArray(), keys, 2, ref json_obj); } if (cmd.Value != null) { keys[1] = "Value\0".ToCharArray(); jsParser.set_jsfile_single_value((cmd.Value + "\0").ToCharArray(), keys, 2, ref json_obj); } cmd_buffer = json_obj.content; return(json_obj.content_size + 1); }