From: haken kim Date: Thu, 17 Apr 2014 11:04:18 +0000 (+0900) Subject: ecs: emulator input cli support keycode X-Git-Tag: TizenStudio_2.0_p2.3~268^2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=ad7d5f19b6635c3e74f923bfe158795a54b85d36;p=sdk%2Femulator%2Fqemu.git ecs: emulator input cli support keycode Change-Id: Idb44c743a9cedf331448f665806402ce7a659930 Signed-off-by: haken kim --- diff --git a/tizen/src/ecs/ecs.c b/tizen/src/ecs/ecs.c index 163c4cd..5ee3cf5 100644 --- a/tizen/src/ecs/ecs.c +++ b/tizen/src/ecs/ecs.c @@ -87,7 +87,7 @@ int ecs_get_suspend_state(void) } int ecs_write(int fd, const uint8_t *buf, int len) { - TRACE("write buflen : %d, buf : %s", len, (char*)buf); + TRACE("write buflen : %d, buf : %s\n", len, (char*)buf); if (fd < 0) { return -1; } @@ -102,7 +102,7 @@ void ecs_client_close(ECS_Client* clii) { pthread_mutex_lock(&mutex_clilist); if (clii->client_fd > 0) { - INFO("ecs client closed with fd: %d", clii->client_fd); + INFO("ecs client closed with fd: %d\n", clii->client_fd); closesocket(clii->client_fd); #ifndef CONFIG_LINUX FD_CLR(clii->client_fd, &clii->cs->reads); @@ -119,7 +119,7 @@ void ecs_client_close(ECS_Client* clii) { } bool send_to_all_client(const char* data, const int len) { - TRACE("data len: %d, data: %s", len, data); + TRACE("data len: %d, data: %s\n", len, data); pthread_mutex_lock(&mutex_clilist); ECS_Client *clii; @@ -189,7 +189,7 @@ static Monitor *monitor_create(void) { mon = g_malloc0(sizeof(*mon)); if (NULL == mon) { - ERR("monitor allocation failed."); + ERR("monitor allocation failed.\n"); return NULL; } @@ -198,13 +198,13 @@ static Monitor *monitor_create(void) { static void ecs_close(ECS_State *cs) { ECS_Client *clii; - INFO("### Good bye! ECS ###"); + INFO("### Good bye! ECS ###\n"); if (cs == NULL) return; if (0 <= cs->listen_fd) { - INFO("close listen_fd: %d", cs->listen_fd); + INFO("close listen_fd: %d\n", cs->listen_fd); closesocket(cs->listen_fd); cs->listen_fd = -1; } @@ -279,27 +279,27 @@ static void ecs_read(ECS_Client *cli) { if (cli == NULL) { - ERR("client is null."); + ERR("client is null.\n"); return; } #ifndef __WIN32 if (ioctl(cli->client_fd, FIONREAD, &to_read_bytes) < 0) { - ERR("ioctl failed"); + ERR("ioctl failed\n"); return; } #else unsigned long to_read_bytes_long = 0; if (ioctlsocket(cli->client_fd, FIONREAD, &to_read_bytes_long) < 0) { - ERR("ioctl failed"); + ERR("ioctl failed\n"); return; } to_read_bytes = (int)to_read_bytes_long; #endif if (to_read_bytes == 0) { - ERR("ioctl FIONREAD: 0\n"); + TRACE("ioctl FIONREAD: 0\n"); goto fail; } @@ -307,7 +307,7 @@ static void ecs_read(ECS_Client *cli) { { if (to_read_bytes < 4) { - //LOG("insufficient data size to read"); + //LOG("insufficient data size to read\n"); return; } @@ -316,7 +316,7 @@ static void ecs_read(ECS_Client *cli) { if (read < 4) { - ERR("insufficient header size"); + ERR("insufficient header size\n"); goto fail; } @@ -363,7 +363,7 @@ static void epoll_cli_add(ECS_State *cs, int fd) { events.data.fd = fd; if (epoll_ctl(cs->epoll_fd, EPOLL_CTL_ADD, fd, &events) < 0) { - ERR("Epoll control fails.in epoll_cli_add."); + ERR("Epoll control fails.in epoll_cli_add.\n"); } } #endif @@ -394,7 +394,7 @@ static int ecs_add_client(ECS_State *cs, int fd) { ECS_Client *clii = g_malloc0(sizeof(ECS_Client)); if (NULL == clii) { - ERR("ECS_Client allocation failed."); + ERR("ECS_Client allocation failed.\n"); return -1; } @@ -418,7 +418,7 @@ static int ecs_add_client(ECS_State *cs, int fd) { QTAILQ_INSERT_TAIL(&clients, clii, next); - INFO("Add an ecs client. fd: %d", fd); + TRACE("Add an ecs client. fd: %d\n", fd); pthread_mutex_unlock(&mutex_clilist); @@ -455,7 +455,7 @@ static void ecs_accept(ECS_State *cs) { } } if (0 > ecs_add_client(cs, fd)) { - ERR("failed to add client."); + ERR("failed to add client.\n"); } } @@ -501,7 +501,7 @@ static void make_keep_alive_msg(void) { keepalive_buf = g_malloc(len_pack + 4); if (!keepalive_buf) { - ERR("keep alive message creation is failed."); + ERR("keep alive message creation is failed.\n"); return; } @@ -522,17 +522,17 @@ static void alive_checker(void *opaque) { QTAILQ_FOREACH(clii, &clients, next) { if (1 == clii->keep_alive) { - INFO("get client fd %d - keep alive fail", clii->client_fd); + INFO("get client fd %d - keep alive fail\n", clii->client_fd); ecs_client_close(clii); continue; } - TRACE("set client fd %d - keep alive 1", clii->client_fd); + TRACE("set client fd %d - keep alive 1\n", clii->client_fd); clii->keep_alive = 1; send_keep_alive_msg(clii); } if (current_ecs == NULL) { - ERR("alive checking is failed because current ecs is null."); + ERR("alive checking is failed because current ecs is null.\n"); return; } @@ -552,7 +552,7 @@ static int socket_initialize(ECS_State *cs, QemuOpts *opts) { return -1; } - INFO("Listen fd is %d", fd); + INFO("Listen fd is %d\n", fd); qemu_set_nonblock(fd); @@ -612,7 +612,7 @@ static int ecs_loop(ECS_State *cs) timeout.tv_usec = 0; if (select(0, &temps, 0, 0, &timeout) < 0) { - ERR("select error."); + ERR("select error.\n"); return -1; } @@ -644,7 +644,7 @@ static int ecs_loop(ECS_State *cs) timeout.tv_usec = 0; if ((res = select(MAX_FD_NUM + 1, &temps, NULL, NULL, &timeout)) < 0) { - ERR("select failed.."); + ERR("select failed..\n"); return -1; } @@ -673,7 +673,7 @@ static void* ecs_initialize(void* args) { char host_port[16]; int port = 0; - INFO("ecs starts initializing."); + INFO("ecs starts initializing.\n"); opts = qemu_opts_create(qemu_find_opts(ECS_OPTS_NAME), ECS_OPTS_NAME, 1, &local_err); if (error_is_set(&local_err)) { @@ -686,24 +686,24 @@ static void* ecs_initialize(void* args) { cs = g_malloc0(sizeof(ECS_State)); if (NULL == cs) { - ERR("ECS_State allocation failed."); + ERR("ECS_State allocation failed.\n"); return NULL; } port = get_emul_ecs_port(); - INFO("ecs port: %d", port); + INFO("ecs port: %d\n", port); sprintf(host_port, "%d", port); qemu_opt_set(opts, "port", host_port); ret = socket_initialize(cs, opts); if (ret < 0) { - ERR("Socket initialization is failed."); + ERR("Socket initialization is failed.\n"); ecs_close(cs); return NULL; } mon = monitor_create(); if (NULL == mon) { - ERR("monitor initialization failed."); + ERR("monitor initialization failed.\n"); ecs_close(cs); return NULL; } @@ -712,7 +712,7 @@ static void* ecs_initialize(void* args) { current_ecs = cs; cs->ecs_running = 1; - TRACE("ecs_loop entered."); + TRACE("ecs_loop entered.\n"); while (cs->ecs_running) { ret = ecs_loop(cs); if (0 > ret) { @@ -720,13 +720,13 @@ static void* ecs_initialize(void* args) { break; } } - TRACE("ecs_loop exited."); + TRACE("ecs_loop exited.\n"); return NULL; } int stop_ecs(void) { - INFO("ecs is closing."); + INFO("ecs is closing.\n"); if (NULL != current_ecs) { current_ecs->ecs_running = 0; ecs_close(current_ecs); @@ -741,7 +741,7 @@ int start_ecs(void) { pthread_t thread_id; if (0 != pthread_create(&thread_id, NULL, ecs_initialize, NULL)) { - ERR("pthread creation failed."); + ERR("pthread creation failed.\n"); return -1; } return 0; @@ -803,7 +803,7 @@ bool handle_protobuf_msg(ECS_Client* cli, char* data, int len) QTAILQ_INSERT_TAIL(&clients, cli, next); } else { - ERR("unsupported category is found: %s", msg->category); + ERR("unsupported category is found: %s\n", msg->category); pthread_mutex_unlock(&mutex_clilist); goto fail; } @@ -839,7 +839,7 @@ bool handle_protobuf_msg(ECS_Client* cli, char* data, int len) ecs__master__free_unpacked(master, NULL); return true; fail: - ERR("invalid message type : %d", master->type); + ERR("invalid message type : %d\n", master->type); ecs__master__free_unpacked(master, NULL); return false; } diff --git a/tizen/src/ecs/ecs.h b/tizen/src/ecs/ecs.h index fac1c2c..94121a7 100644 --- a/tizen/src/ecs/ecs.h +++ b/tizen/src/ecs/ecs.h @@ -44,17 +44,6 @@ #define ECS_VERSION "1.0" -#define ECS_DEBUG 1 - -#ifdef ECS_DEBUG -#define LOG(fmt, arg...) \ - do { \ - fprintf(stdout,"[%s-%s:%d] "fmt"\n", get_timeofday(), __FUNCTION__, __LINE__, ##arg); \ - } while (0) -#else -#define LOG(fmt, arg...) -#endif - #define ECS_OPTS_NAME "ecs" #define HOST_LISTEN_ADDR "127.0.0.1" #define HOST_LISTEN_PORT 0 diff --git a/tizen/src/ecs/ecs_mon.c b/tizen/src/ecs/ecs_mon.c index 3f93536..1161e07 100644 --- a/tizen/src/ecs/ecs_mon.c +++ b/tizen/src/ecs/ecs_mon.c @@ -104,7 +104,7 @@ bool send_monitor_ntf(const char* data, int size) ECS__Master master = ECS__MASTER__INIT; ECS__MonitorNtf ntf = ECS__MONITOR_NTF__INIT; - TRACE("data size : %d, data : %s", size, data); + TRACE("data size : %d, data : %s\n", size, data); ntf.command = (char*) g_malloc(size + 1); memcpy(ntf.command, data, size); @@ -184,7 +184,7 @@ static void ecs_protocol_emitter(ECS_Client *clii, const char* type, QDict *qmp; QObject *obj; - TRACE("ecs_protocol_emitter called."); + TRACE("ecs_protocol_emitter called.\n"); //trace_monitor_protocol_emitter(clii->cs->mon); if (!monitor_has_error(clii->cs->mon)) { @@ -575,7 +575,7 @@ out: bool msgproc_monitor_req(ECS_Client *ccli, ECS__MonitorReq* msg) { - TRACE(">> monitor req: data = %s", msg->command); + TRACE(">> monitor req: data = %s\n", msg->command); ecs_json_message_parser_feed(&(ccli->parser), (const char *) msg->command, strlen(msg->command)); return true; } diff --git a/tizen/src/ecs/ecs_msg.c b/tizen/src/ecs/ecs_msg.c index d0c09f0..791296f 100644 --- a/tizen/src/ecs/ecs_msg.c +++ b/tizen/src/ecs/ecs_msg.c @@ -69,11 +69,11 @@ #include "skin/maruskin_operation.h" #include "skin/maruskin_server.h" #include "emulator.h" +#include "emul_state.h" #include "debug_ch.h" MULTI_DEBUG_CHANNEL(qemu, ecs); - #define MAX_BUF_SIZE 255 // utility functions @@ -86,7 +86,7 @@ static void* build_master(ECS__Master* master, int* payloadsize) { int len_pack = ecs__master__get_packed_size(master); *payloadsize = len_pack + 4; - TRACE("pack size=%d", len_pack); + TRACE("pack size=%d\n", len_pack); void* buf = g_malloc(len_pack + 4); if (!buf) return NULL; @@ -105,7 +105,7 @@ static bool send_single_msg(ECS__Master* master, ECS_Client *clii) void* buf = build_master(master, &payloadsize); if (!buf) { - ERR("invalid buf"); + ERR("invalid buf\n"); return false; } @@ -124,7 +124,7 @@ bool send_to_ecp(ECS__Master* master) void* buf = build_master(master, &payloadsize); if (!buf) { - ERR("invalid buf"); + ERR("invalid buf\n"); return false; } @@ -144,7 +144,7 @@ static bool send_to_single_client(ECS__Master* master, ECS_Client *ccli) void* buf = build_master(master, &payloadsize); if (!buf) { - ERR("invalid buf"); + ERR("invalid buf\n"); return false; } @@ -200,7 +200,7 @@ static void msgproc_injector_ans(ECS_Client* ccli, const char* category, bool su ECS__Master master = ECS__MASTER__INIT; ECS__InjectorAns ans = ECS__INJECTOR_ANS__INIT; - TRACE("injector ans - category : %s, succed : %d", category, succeed); + TRACE("injector ans - category : %s, succed : %d\n", category, succeed); catlen = strlen(category); ans.category = (char*) g_malloc0(catlen + 1); @@ -216,7 +216,7 @@ static void msgproc_injector_ans(ECS_Client* ccli, const char* category, bool su g_free(ans.category); } -static void msgproc_device_ans(ECS_Client* ccli, const char* category, bool succeed) +static void msgproc_device_ans(ECS_Client* ccli, const char* category, bool succeed, char* data) { if (ccli == NULL) { return; @@ -225,13 +225,26 @@ static void msgproc_device_ans(ECS_Client* ccli, const char* category, bool succ ECS__Master master = ECS__MASTER__INIT; ECS__DeviceAns ans = ECS__DEVICE_ANS__INIT; - TRACE("device ans - category : %s, succed : %d", category, succeed); + TRACE("device ans - category : %s, succed : %d\n", category, succeed); catlen = strlen(category); ans.category = (char*) g_malloc0(catlen + 1); memcpy(ans.category, category, catlen); ans.errcode = !succeed; + + if (data != NULL) { + ans.length = strlen(data); + + if (ans.length > 0) { + ans.has_data = 1; + ans.data.data = g_malloc(ans.length); + ans.data.len = ans.length; + memcpy(ans.data.data, data, ans.length); + TRACE("data = %s, length = %hu\n", data, ans.length); + } + } + master.type = ECS__MASTER__TYPE__DEVICE_ANS; master.device_ans = &ans; @@ -260,19 +273,19 @@ bool msgproc_injector_req(ECS_Client* ccli, ECS__InjectorReq* msg) { datalen = msg->data.len; } - //LOG(">> count= %d", ++ijcount); + //TRACE(">> count= %d", ++ijcount); - TRACE(">> header = cmd = %s, length = %d, action=%d, group=%d", cmd, length, + TRACE(">> header = cmd = %s, length = %d, action=%d, group=%d\n", cmd, length, action, group); /*SD CARD msg process*/ if (!strncmp(cmd, MSG_TYPE_SDCARD, strlen(MSG_TYPE_SDCARD))) { if (msg->has_data) { - TRACE("msg(%zu) : %s", msg->data.len, msg->data.data); + TRACE("msg(%zu) : %s\n", msg->data.len, msg->data.data); handle_sdcard((char*) msg->data.data, msg->data.len); } else { - ERR("has no msg"); + ERR("has no msg\n"); } } else if (!strncmp(cmd, MSG_TYPE_SENSOR, sizeof(MSG_TYPE_SENSOR))) { @@ -318,7 +331,7 @@ injector_send: { const char* data = (const char*)msg->data.data; memcpy(sndbuf + 14, data, datalen); - TRACE(">> print len = %zd, data\" %s\"", strlen(data), data); + TRACE(">> print len = %zd, data\" %s\"\n", strlen(data), data); } } @@ -405,7 +418,7 @@ void send_target_image_information(ECS_Client* ccli) { ans.data.len = length; memcpy(ans.data.data, tizen_target_img_path, length); - TRACE("data = %s, length = %hu", tizen_target_img_path, length); + TRACE("data = %s, length = %hu\n", tizen_target_img_path, length); } master.type = ECS__MASTER__TYPE__DEVICE_ANS; @@ -439,7 +452,7 @@ bool msgproc_device_req(ECS_Client* ccli, ECS__DeviceReq* msg) memcpy(data, msg->data.data, msg->data.len); } - TRACE(">> header = cmd = %s, length = %d, action=%d, group=%d", cmd, length, + TRACE(">> header = cmd = %s, length = %d, action=%d, group=%d\n", cmd, length, action, group); if (!strncmp(cmd, MSG_TYPE_SENSOR, 6)) { @@ -459,27 +472,27 @@ bool msgproc_device_req(ECS_Client* ccli, ECS__DeviceReq* msg) if (data != NULL) { set_injector_data(data); } else { - ERR("sensor set data is null"); + ERR("sensor set data is null\n"); } } - msgproc_device_ans(ccli, cmd, true); + msgproc_device_ans(ccli, cmd, true, NULL); } else if (!strncmp(cmd, "Network", 7)) { if (data != NULL) { - TRACE(">>> Network msg: '%s'", data); + TRACE(">>> Network msg: '%s'\n", data); if(net_slirp_redir(data) < 0) { - ERR( "redirect [%s] fail", data); + ERR( "redirect [%s] fail\n", data); } else { - TRACE("redirect [%s] success", data); + TRACE("redirect [%s] success\n", data); } } else { - ERR("Network redirection data is null."); + ERR("Network redirection data is null.\n"); } } else if (!strncmp(cmd, "HKeyboard", 8)) { if (group == MSG_GROUP_STATUS) { send_host_keyboard_ntf(mloop_evcmd_get_hostkbd_status()); } else { if (data == NULL) { - ERR("HKeyboard data is NULL"); + ERR("HKeyboard data is NULL\n"); return false; } @@ -500,7 +513,7 @@ bool msgproc_device_req(ECS_Client* ccli, ECS__DeviceReq* msg) #endif if (data == NULL) { - ERR("gesture data is NULL"); + ERR("gesture data is NULL\n"); return false; } @@ -533,8 +546,44 @@ bool msgproc_device_req(ECS_Client* ccli, ECS__DeviceReq* msg) } } else if (!strncmp(cmd, "info", 4)) { // check to emulator target image path - TRACE("receive info message %s", tizen_target_img_path); + TRACE("receive info message %s\n", tizen_target_img_path); send_target_image_information(ccli); + + } else if (!strncmp(cmd, "input", strlen("input"))) { + // cli input + TRACE("receive input message [%s]\n", data); + + if (group == 0) { + + TRACE("input keycode data : [%s]\n", data); + + char token[] = " "; + char *section = strtok(data, token); + int keycode = atoi(section); + if (action == 1) { + //action 1 press + do_hw_key_event(KEY_PRESSED, keycode); + + } else if (action == 2) { + //action 2 released + do_hw_key_event(KEY_RELEASED, keycode); + + } else { + ERR("unknown action : [%d]\n", (int)action); + } + } else if (group == 1) { + //spec out + TRACE("input category's group 1 is spec out\n"); + } else { + ERR("unknown group [%d]\n", (int)group); + } + msgproc_device_ans(ccli, cmd, true, NULL); + + } else if (!strncmp(cmd, "vmname", strlen("vmname"))) { + char* vmname = get_emul_vm_name(); + msgproc_device_ans(ccli, cmd, true, vmname); + } else{ + ERR("unknown cmd [%s]\n", cmd); } if (data) { @@ -549,7 +598,7 @@ bool msgproc_nfc_req(ECS_Client* ccli, ECS__NfcReq* msg) int datalen = msg->data.len; void* data = (void*)g_malloc(datalen); if(!data) { - ERR("g_malloc failed!"); + ERR("g_malloc failed!\n"); return false; } @@ -780,7 +829,7 @@ bool send_nfc_ntf(struct nfc_msg_info* msg) TRACE("header category = %s", cat); } else { - ERR("cannot find client!"); + ERR("cannot find client!\n"); } ECS__Master master = ECS__MASTER__INIT; diff --git a/tizen/src/ecs/ecs_tethering.c b/tizen/src/ecs/ecs_tethering.c index 4e98aa9..a703435 100644 --- a/tizen/src/ecs/ecs_tethering.c +++ b/tizen/src/ecs/ecs_tethering.c @@ -63,7 +63,7 @@ static int tethering_port = 0; void send_tethering_sensor_status_ecp(void) { - INFO(">> send tethering_event_status to ecp"); + INFO(">> send tethering_event_status to ecp\n"); send_tethering_status_ntf(ECS_TETHERING_MSG_GROUP_ECP, ECS_TETHERING_MSG_ACTION_SENSOR_STATUS); } @@ -76,7 +76,7 @@ void send_tethering_touch_status_ecp(void) void send_tethering_connection_status_ecp(void) { - INFO(">> send tethering_connection_status to ecp"); + INFO(">> send tethering_connection_status to ecp\n"); send_tethering_status_ntf(ECS_TETHERING_MSG_GROUP_ECP, ECS_TETHERING_MSG_ACTION_CONNECTION_STATUS); } @@ -94,7 +94,7 @@ static void send_tethering_port_ecp(void) return; } - TRACE(">> send port_num: %d", tethering_port); + TRACE(">> send port_num: %d\n", tethering_port); g_snprintf(data, sizeof(data) - 1, "%d", tethering_port); length = strlen(data); @@ -105,7 +105,7 @@ static void send_tethering_port_ecp(void) memcpy(msg + 13, &action, sizeof(unsigned char)); memcpy(msg + 14, data, length); - TRACE(">> send tethering_ntf to ecp. action=%d, group=%d, data=%s", + TRACE(">> send tethering_ntf to ecp. action=%d, group=%d, data=%s\n", action, group, data); // send_tethering_ntf((const char *)msg, MSG_BUF_SIZE); @@ -153,7 +153,7 @@ static void send_tethering_status_ntf(type_group group, type_action action) memcpy(msg + 13, &action, sizeof(unsigned char)); memcpy(msg + 14, data, 1); - TRACE(">> send tethering_ntf to ecp. action=%d, group=%d, data=%s", + TRACE(">> send tethering_ntf to ecp. action=%d, group=%d, data=%s\n", action, group, data); // send_tethering_ntf((const char *)msg, MSG_BUF_SIZE); @@ -182,7 +182,7 @@ static bool send_tethering_ntf(const char *data) const char* ijdata = (data + catsize + 2 + 1 + 1); - TRACE("<< header cat = %s, length = %d, action=%d, group=%d", cat, length,action, group); + TRACE("<< header cat = %s, length = %d, action=%d, group=%d\n", cat, length,action, group); ECS__Master master = ECS__MASTER__INIT; ECS__TetheringNtf ntf = ECS__TETHERING_NTF__INIT; @@ -201,7 +201,7 @@ static bool send_tethering_ntf(const char *data) ntf.data.len = length; memcpy(ntf.data.data, ijdata, length); - TRACE("data = %s, length = %hu", ijdata, length); + TRACE("data = %s, length = %hu\n", ijdata, length); } master.type = ECS__MASTER__TYPE__TETHERING_NTF; @@ -240,7 +240,7 @@ bool msgproc_tethering_req(ECS_Client* ccli, ECS__TetheringReq* msg) type_group group = (type_group) (msg->group & 0xff); type_action action = (type_action) (msg->action & 0xff); - TRACE(">> header = cmd = %s, length = %d, action=%d, group=%d", + TRACE(">> header = cmd = %s, length = %d, action=%d, group=%d\n", cmd, length, action, group); if (group == ECS_TETHERING_MSG_GROUP_ECP) { @@ -253,25 +253,25 @@ bool msgproc_tethering_req(ECS_Client* ccli, ECS__TetheringReq* msg) port = g_ascii_strtoull(data, NULL, 10); - TRACE(">> MSG_ACTION_CONNECT"); - TRACE(">> len = %zd, data\" %s\"", strlen(data), data); + TRACE(">> MSG_ACTION_CONNECT\n"); + TRACE(">> len = %zd, data\" %s\"\n", strlen(data), data); connect_tethering_app(port); tethering_port = port; - TRACE(">> port_num: %d, %d", port, tethering_port); + TRACE(">> port_num: %d, %d\n", port, tethering_port); } } break; case ECS_TETHERING_MSG_ACTION_DISCONNECT: - INFO(">> MSG_ACTION_DISCONNECT"); + INFO(">> MSG_ACTION_DISCONNECT\n"); disconnect_tethering_app(); tethering_port = 0; break; case ECS_TETHERING_MSG_ACTION_CONNECTION_STATUS: case ECS_TETHERING_MSG_ACTION_SENSOR_STATUS: case ECS_TETHERING_MSG_ACTION_TOUCH_STATUS: - TRACE(">> get_status_action"); + TRACE(">> get_status_action\n"); send_tethering_status_ntf(group, action); break; default: