Basic ecp message handler added
authorchoisjin80 <jinhyung2.choi@samsung.com>
Wed, 20 Mar 2013 12:11:56 +0000 (21:11 +0900)
committerchoisjin80 <jinhyung2.choi@samsung.com>
Wed, 20 Mar 2013 12:11:56 +0000 (21:11 +0900)
json-streamer.c
json-streamer.h
monitor.c
qapi-schema.json
qemu-config.c
qemu-ga.c
qemu-sockets.c
qjson.c
qmp-commands.hx
tizen/src/Makefile.tizen
tizen/src/emulator.c

index c255c7818f3af4c6cd9dfca71ee55e8dd63bbb7c..78b20b8460dd5b431274899e98cf3985268b3ae8 100644 (file)
@@ -84,7 +84,7 @@ out_emit:
     /* send current list of tokens to parser and reset tokenizer */
     parser->brace_count = 0;
     parser->bracket_count = 0;
-    parser->emit(parser, parser->tokens);
+    parser->emit(parser, parser->tokens, parser->opaque);
     if (parser->tokens) {
         QDECREF(parser->tokens);
     }
@@ -93,13 +93,14 @@ out_emit:
 }
 
 void json_message_parser_init(JSONMessageParser *parser,
-                              void (*func)(JSONMessageParser *, QList *))
+                              void (*func)(JSONMessageParser *, QList *, void *), void *opaque)
 {
     parser->emit = func;
     parser->brace_count = 0;
     parser->bracket_count = 0;
     parser->tokens = qlist_new();
     parser->token_size = 0;
+       parser->opaque = opaque;
 
     json_lexer_init(&parser->lexer, json_message_process_token);
 }
index f09bc4daec98aae800d86820d728e11336672f91..f6b8fd23c2b08e2cfe657bfcdb3d8b9c0a627c8b 100644 (file)
 
 typedef struct JSONMessageParser
 {
-    void (*emit)(struct JSONMessageParser *parser, QList *tokens);
+    void (*emit)(struct JSONMessageParser *parser, QList *tokens, void *);
     JSONLexer lexer;
     int brace_count;
     int bracket_count;
     QList *tokens;
     uint64_t token_size;
+       void *opaque;
 } JSONMessageParser;
 
 void json_message_parser_init(JSONMessageParser *parser,
-                              void (*func)(JSONMessageParser *, QList *));
+                              void (*func)(JSONMessageParser *, QList *, void *), void *opaque);
 
 int json_message_parser_feed(JSONMessageParser *parser,
                              const char *buffer, size_t size);
index b17b1bb84971042709e455f380ed6e62408cbe7e..f58bc5d631eb262442caa02b131358b18cfa6eff 100644 (file)
--- a/monitor.c
+++ b/monitor.c
@@ -4684,7 +4684,7 @@ static void qmp_call_cmd(Monitor *mon, const mon_cmd_t *cmd,
     qobject_decref(data);
 }
 
-static void handle_qmp_command(JSONMessageParser *parser, QList *tokens)
+static void handle_qmp_command(JSONMessageParser *parser, QList *tokens, void *opaque)
 {
     int err;
     QObject *obj;
@@ -4839,7 +4839,7 @@ static void monitor_control_event(void *opaque, int event)
         break;
     case CHR_EVENT_CLOSED:
         json_message_parser_destroy(&mon->mc->parser);
-        json_message_parser_init(&mon->mc->parser, handle_qmp_command);
+        json_message_parser_init(&mon->mc->parser, handle_qmp_command, NULL);
         mon_refcount--;
         monitor_fdsets_cleanup();
         break;
@@ -4947,7 +4947,7 @@ void monitor_init(CharDriverState *chr, int flags)
                               monitor_control_event, mon);
         qemu_chr_fe_set_echo(chr, true);
 
-        json_message_parser_init(&mon->mc->parser, handle_qmp_command);
+        json_message_parser_init(&mon->mc->parser, handle_qmp_command, NULL);
     } else {
         qemu_chr_add_handlers(chr, monitor_can_read, monitor_read,
                               monitor_event, mon);
index bd8ad74495b9e4d3c775e09b7a96af551555357c..acff0823f55b9c4937bba4984198165ab4d6f8ca 100644 (file)
 # Since: 1.2.0
 ##
 { 'type': 'FdsetInfo',
-  'data': {'fdset-id': 'int', 'fds': ['FdsetFdInfo']} }
+  'data': {'fdset-id': yy'int', 'fds': ['FdsetFdInfo']} }
 
 ##
 # @query-fdsets:
 # Since: 1.2.0
 ##
 { 'command': 'query-target', 'returns': 'TargetInfo' }
+
+
+
+## Eric 2013.3.7 ##
+
+##
+# @AccelInfo:
+#
+# Information describing the acceleration sensor value
+#
+# @Xaxis: x axis value of the acceleration sensor
+# @Yaxis: y axis value of the acceleration sensor
+# @Zaxis: z axis value of the acceleration sensor
+#
+# Since: 1.2.0
+##
+{ 'type': 'AccelInfo',
+  'data': { 'Xaxis': 'int', 'Yaxis': 'int', 'Zaxis' : 'int'} }
+
+##
+# @query-accel:
+#
+# Return information about the acceleration sensor value
+#
+# Returns: AccelInfo
+#
+# Since: 1.2.0
+##
+{ 'command': 'query-accel', 'returns': 'AccelInfo' }
index c05ffbc444ed50abaf69b343efb3d790b9757fa7..4a02189160f012953627569e29360e02da1e9fdb 100644 (file)
@@ -643,6 +643,27 @@ QemuOptsList qemu_boot_opts = {
     },
 };
 
+static QemuOptsList qemu_carrier_opts = {
+    .name = "carrier",
+    .head = QTAILQ_HEAD_INITIALIZER(qemu_carrier_opts.head),
+    .desc = {
+        {
+            .name = "host",
+            .type = QEMU_OPT_STRING,
+        },{
+            .name = "port",
+                       .type = QEMU_OPT_STRING,
+        },{
+            .name = "ipv4",
+            .type = QEMU_OPT_BOOL,
+        },{
+            .name = "ipv6",
+            .type = QEMU_OPT_BOOL,
+        },
+        { /* end of list */ }
+    },
+};
+
 static QemuOptsList *vm_config_groups[32] = {
     &qemu_drive_opts,
     &qemu_chardev_opts,
@@ -659,6 +680,7 @@ static QemuOptsList *vm_config_groups[32] = {
     &qemu_boot_opts,
     &qemu_iscsi_opts,
     &qemu_sandbox_opts,
+    &qemu_carrier_opts,
     NULL,
 };
 
index 762307988783256aa0361c1ad71da1af8133d9e3..f744a95c3c4a3f7b70c44bae34dfcf0eae7d202c 100644 (file)
--- a/qemu-ga.c
+++ b/qemu-ga.c
@@ -498,7 +498,7 @@ static void process_command(GAState *s, QDict *req)
 }
 
 /* handle requests/control events coming in over the channel */
-static void process_event(JSONMessageParser *parser, QList *tokens)
+static void process_event(JSONMessageParser *parser, QList *tokens, void *opaque)
 {
     GAState *s = container_of(parser, GAState, parser);
     QObject *obj;
@@ -861,7 +861,7 @@ int main(int argc, char **argv)
     s->command_state = ga_command_state_new();
     ga_command_state_init(s, s->command_state);
     ga_command_state_init_all(s->command_state);
-    json_message_parser_init(&s->parser, process_event);
+    json_message_parser_init(&s->parser, process_event, NULL);
     ga_state = s;
 #ifndef _WIN32
     if (!register_signal_handlers()) {
index 361d890da3e812abb6d2e09088bc2c0f6792d54d..a3ff18399bf30629b9b5998ec1066b548dfb5b81 100644 (file)
@@ -114,7 +114,6 @@ int inet_listen_opts(QemuOpts *opts, int port_offset, Error **errp)
     char uaddr[INET6_ADDRSTRLEN+1];
     char uport[33];
     int slisten, rc, to, port_min, port_max, p;
-
     memset(&ai,0, sizeof(ai));
     ai.ai_flags = AI_PASSIVE | AI_ADDRCONFIG;
     ai.ai_family = PF_UNSPEC;
@@ -549,7 +548,7 @@ int unix_listen_opts(QemuOpts *opts)
         fprintf(stderr, "bind(unix:%s): %s\n", un.sun_path, strerror(errno));
         goto err;
     }
-    if (listen(sock, 1) < 0) {
+    if (listen(sock, 5) < 0) {
         fprintf(stderr, "listen(unix:%s): %s\n", un.sun_path, strerror(errno));
         goto err;
     }
diff --git a/qjson.c b/qjson.c
index f9c8e77516160e9a254e711ed88ad1bb05dfc8f4..2025cbe88e697136dd819a0e0524cfc9718f194c 100644 (file)
--- a/qjson.c
+++ b/qjson.c
@@ -28,7 +28,7 @@ typedef struct JSONParsingState
     QObject *result;
 } JSONParsingState;
 
-static void parse_json(JSONMessageParser *parser, QList *tokens)
+static void parse_json(JSONMessageParser *parser, QList *tokens, void *opaque)
 {
     JSONParsingState *s = container_of(parser, JSONParsingState, parser);
     s->result = json_parser_parse(tokens, s->ap);
@@ -40,7 +40,7 @@ QObject *qobject_from_jsonv(const char *string, va_list *ap)
 
     state.ap = ap;
 
-    json_message_parser_init(&state.parser, parse_json);
+    json_message_parser_init(&state.parser, parse_json, NULL);
     json_message_parser_feed(&state.parser, string, strlen(string));
     json_message_parser_flush(&state.parser);
     json_message_parser_destroy(&state.parser);
index 3745a211999ac1e263d675cf2d45f966e9c92788..f954df5880f7d4ad9c6521fee683120684b3c018 100644 (file)
@@ -2514,3 +2514,33 @@ EQMP
         .args_type  = "",
         .mhandler.cmd_new = qmp_marshal_input_query_target,
     },
+
+SQMP
+Eric 2013.3.7
+EQMP
+
+SQMP
+query-accel
+-------------
+
+Show acceleration sensor information.
+
+Example:
+
+-> { "execute": "query-accel" }
+<- {
+      "return":{
+                "Xaxis":1,
+                "Yaxis":2, 
+                "Zaxis":3
+      }
+   }
+
+EQMP
+
+    {
+        .name       = "query-accel",
+        .args_type  = "",
+        .mhandler.cmd_new = qmp_marshal_input_query_accel,
+    },
+
index 292f4621a1ed2e4c52b4f7d22cb0d2a19d07c1f4..06fb470f1a6f0d41f6072f5816cb705dd1aec1a5 100755 (executable)
@@ -104,6 +104,9 @@ endif
 # debug channel
 obj-y += debug_ch.o
 
+# carrier
+obj-y += carrier.o qmp_handler.o
+
 # maru hardware
 include $(SRC_PATH)/tizen/src/Makefile.tizen.$(TARGET_BASE_ARCH)
 
index 9651feae7d6b8ce727bf8513edd35ac50812c271..30b9c1817fad434f5e5c234757a7906881fd7c57 100644 (file)
@@ -50,6 +50,7 @@
 #include "hw/maru_camera_common.h"
 #include "hw/gloffscreen_test.h"
 #include "debug_ch.h"
+#include "carrier.h"
 
 #include <stdlib.h>
 #ifdef CONFIG_SDL
@@ -109,6 +110,7 @@ void exit_emulator(void)
     mloop_ev_stop();
     shutdown_skin_server();
     shutdown_guest_server();
+       stop_carrier();
 
     maru_display_fini();
 }
@@ -487,6 +489,7 @@ void prepare_maru(void)
 
     int guest_server_port = tizen_base_port + SDB_UDP_SENSOR_INDEX;
     start_guest_server(guest_server_port);
+       start_carrier(guest_server_port+1);
 
     mloop_ev_init();
 }