Beispiel #1
0
        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);
        }
Beispiel #2
0
        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);
        }