From c2ebe84e8efe3f94051d4dfa3c935dfa96bd736b Mon Sep 17 00:00:00 2001 From: Jinhyung Choi Date: Mon, 16 Jun 2014 10:42:43 +0900 Subject: [PATCH] ecs: added guest emuld connection message handling Change-Id: I48d6ae2aa7c033a52cf45dfd7ce11d0e082aef6d Signed-off-by: Jinhyung Choi --- tizen/src/ecs/ecs.h | 1 + tizen/src/ecs/ecs_msg.c | 62 +++++++++++++++++++++++++++-------------- 2 files changed, 42 insertions(+), 21 deletions(-) diff --git a/tizen/src/ecs/ecs.h b/tizen/src/ecs/ecs.h index a3297c38e9..7f912a2073 100644 --- a/tizen/src/ecs/ecs.h +++ b/tizen/src/ecs/ecs.h @@ -64,6 +64,7 @@ #define MSG_TYPE_NFC "nfc" #define MSG_TYPE_SIMUL_NFC "simul_nfc" #define MSG_TYPE_SDCARD "sdcard" +#define MSG_TYPE_GUEST "guest" #define MSG_GROUP_STATUS 15 diff --git a/tizen/src/ecs/ecs_msg.c b/tizen/src/ecs/ecs_msg.c index f8bc660445..bebb5d8c1b 100644 --- a/tizen/src/ecs/ecs_msg.c +++ b/tizen/src/ecs/ecs_msg.c @@ -72,9 +72,11 @@ #include "emul_state.h" #include "debug_ch.h" -MULTI_DEBUG_CHANNEL(qemu, ecs); +MULTI_DEBUG_CHANNEL(qemu, ecs-msg); // utility functions +static int guest_connection = 0; +static pthread_mutex_t mutex_guest = PTHREAD_MUTEX_INITIALIZER; /*static function define*/ static void handle_sdcard(char* dataBuf, size_t dataLen); @@ -165,13 +167,18 @@ static void send_status_injector_ntf(const char* cmd, int cmdlen, int act, char* type_group group = GROUP_STATUS; type_action action = act; - if (cmd == NULL || on == NULL || cmdlen > 10) + if (cmd == NULL || cmdlen > 10) return; - datalen = strlen(on); - length = (unsigned short)datalen; + if (on == NULL) { + msglen = 14; + } else { + datalen = strlen(on); + length = (unsigned short)datalen; + + msglen = datalen + 15; + } - msglen = datalen + 15; char* status_msg = (char*) malloc(msglen); if(!status_msg) return; @@ -182,7 +189,10 @@ static void send_status_injector_ntf(const char* cmd, int cmdlen, int act, char* memcpy(status_msg + 10, &length, sizeof(unsigned short)); memcpy(status_msg + 12, &group, sizeof(unsigned char)); memcpy(status_msg + 13, &action, sizeof(unsigned char)); - memcpy(status_msg + 14, on, datalen); + + if (on != NULL) { + memcpy(status_msg + 14, on, datalen); + } send_injector_ntf(status_msg, msglen); @@ -259,6 +269,7 @@ bool msgproc_injector_req(ECS_Client* ccli, ECS__InjectorReq* msg) char data[10]; bool ret = false; int sndlen = 0; + int value = 0; char* sndbuf; memset(cmd, 0, 10); strncpy(cmd, msg->category, sizeof(cmd) -1); @@ -299,20 +310,27 @@ bool msgproc_injector_req(ECS_Client* ccli, ECS__InjectorReq* msg) } TRACE("status : %s", data); send_status_injector_ntf(MSG_TYPE_SENSOR, 6, action, data); - ret = true; - goto injector_req_success; + msgproc_injector_ans(ccli, cmd, true); + return true; } else { if (msg->data.data && datalen > 0) { set_injector_data((char*) msg->data.data); } } + } else if (!strncmp(cmd, MSG_TYPE_GUEST, 5)) { + pthread_mutex_lock(&mutex_guest); + value = guest_connection; + pthread_mutex_unlock(&mutex_guest); + send_status_injector_ntf(MSG_TYPE_GUEST, 5, value, NULL); + return true; } injector_send: sndlen = datalen + 14; sndbuf = (char*) g_malloc(sndlen + 1); if (!sndbuf) { - goto injector_req_fail; + msgproc_injector_ans(ccli, cmd, ret); + return false; } memset(sndbuf, 0, sndlen + 1); @@ -338,16 +356,13 @@ injector_send: g_free(sndbuf); - if (!ret) - goto injector_req_fail; - -injector_req_success: msgproc_injector_ans(ccli, cmd, ret); - return true; -injector_req_fail: - msgproc_injector_ans(ccli, cmd, ret); - return false; + if (!ret) { + return false; + } + + return true; } void ecs_suspend_lock_state(int state) @@ -689,16 +704,21 @@ bool ntf_to_injector(const char* data, const int len) { return true; } -static bool injector_req_handle(const char* cat) +static bool injector_req_handle(const char* cat, type_action action) { /*SD CARD msg process*/ if (!strncmp(cat, MSG_TYPE_SDCARD, strlen(MSG_TYPE_SDCARD))) { return false; - }else - if (!strncmp(cat, "suspend", 7)) { + } else if (!strncmp(cat, "suspend", 7)) { ecs_suspend_lock_state(ecs_get_suspend_state()); return true; + } else if (!strncmp(cat, MSG_TYPE_GUEST, 5)) { + INFO("emuld connection is %d\n", action); + pthread_mutex_lock(&mutex_guest); + guest_connection = action; + pthread_mutex_unlock(&mutex_guest); + return false; } return false; @@ -719,7 +739,7 @@ bool send_injector_ntf(const char* data, const int len) read_val_char(data + catsize + 2, &group); read_val_char(data + catsize + 2 + 1, &action); - if (injector_req_handle(cat)) { + if (injector_req_handle(cat, action)) { return true; } -- 2.34.1