#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);
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;
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);
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);
}
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);
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)
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;
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;
}