From 2229930f95279e8b768fab72f8397ce8833fd838 Mon Sep 17 00:00:00 2001 From: "jinh0.choi" Date: Thu, 21 Sep 2017 18:45:28 +0900 Subject: [PATCH] ecs: set earjack & usb value before passing to emuld Change-Id: Id83b7fcdb80be9c02db0d54dbfaf7af8db80f83a Signed-off-by: jinh0.choi --- tizen/src/ecs/ecs.c | 4 +- tizen/src/ecs/ecs_internal.h | 19 ++++++++++ tizen/src/ecs/ecs_msg.c | 33 ++++++++++++++++ tizen/src/ecs/ecs_msg_injector.c | 81 ++++++++++++++++++++++++++++++++++++++++ tizen/src/ecs/ecs_sensor.c | 69 ---------------------------------- tizen/src/ecs/ecs_sensor.h | 15 -------- tizen/src/util/net_helper.c | 21 ----------- 7 files changed, 136 insertions(+), 106 deletions(-) diff --git a/tizen/src/ecs/ecs.c b/tizen/src/ecs/ecs.c index 7585792..209d557 100644 --- a/tizen/src/ecs/ecs.c +++ b/tizen/src/ecs/ecs.c @@ -218,7 +218,9 @@ int ecs_write(int fd, const uint8_t *buf, int len) } #else if (errno != EINTR && errno != EAGAIN) { - LOG_SEVERE("write error: %d\n", errno); + if (errno != EPIPE) { + LOG_SEVERE("write error: %d\n", errno); + } return -1; } #endif diff --git a/tizen/src/ecs/ecs_internal.h b/tizen/src/ecs/ecs_internal.h index 4d0c0e9..5b4e3ee 100644 --- a/tizen/src/ecs/ecs_internal.h +++ b/tizen/src/ecs/ecs_internal.h @@ -70,6 +70,23 @@ enum message_action { MSG_ACT_NETBRIDGE = 123 }; +enum injector_level { + level_accel = 1, + level_proxi = 2, + level_light = 3, + level_gyro = 4, + level_geo = 5, + level_battery = 8, + level_earjack = 9, + level_usb= 10, + level_tilt = 12, + level_magnetic = 13, + level_pressure = 20, + level_uv = 21, + level_hrm = 22, + level_pedo = 23, +}; + typedef struct sbuf { int _netlen; int _use; @@ -125,6 +142,8 @@ typedef unsigned short type_length; typedef unsigned char type_group; typedef unsigned char type_action; +int parse_val(const char *buff, unsigned char data, char *parsbuf); +int get_parse_val(const char *buf, char *tmp); void read_val_short(const char *data, unsigned short *ret_val); void read_val_char(const char *data, unsigned char *ret_val); diff --git a/tizen/src/ecs/ecs_msg.c b/tizen/src/ecs/ecs_msg.c index 305eb77..97c68c7 100644 --- a/tizen/src/ecs/ecs_msg.c +++ b/tizen/src/ecs/ecs_msg.c @@ -67,6 +67,39 @@ MULTI_DEBUG_CHANNEL(qemu, ecs); +int parse_val(const char *buff, unsigned char data, char *parsbuf) +{ + int count = 0; + + while (1) { + if (count > 40) { + return -1; + } + if (buff[count] == data) { + count++; + strncpy(parsbuf, buff, count); + return count; + } + count++; + } + + return 0; +} + +int get_parse_val(const char *buf, char *tmp) +{ + int index = 0; + + memset(tmp, 0, strlen(tmp)); + + index = parse_val(buf, 0x0a, tmp); + if (index > 1) { + tmp[index - 1] = 0; + } + + return index; +} + static void *build_master(ECS__Master *master, int *payloadsize) { int len_pack = ecs__master__get_packed_size(master); diff --git a/tizen/src/ecs/ecs_msg_injector.c b/tizen/src/ecs/ecs_msg_injector.c index f85b1c3..7c11918 100644 --- a/tizen/src/ecs/ecs_msg_injector.c +++ b/tizen/src/ecs/ecs_msg_injector.c @@ -176,6 +176,86 @@ static void send_status_injector_ntf(const char *cmd, int cmdlen, int act, char free(status_msg); } +static void set_battery_data(int len, const char *data) +{ + char tmp[MAX_INJECTOR_REQ_DATA]; + int id = 0, status = 0, level = 0; + + /* remove item size */ + len += get_parse_val(data + len, tmp); + + /* id */ + len += get_parse_val(data + len, tmp); + id = atoi(tmp); + + /* status */ + len += get_parse_val(data + len, tmp); + status = atoi(tmp); + + if (id == 1) { + set_power_capacity(status); + if (status == 100) { + set_power_charge_full(1); + } else { + set_power_charge_full(0); + } + } else if (id == 2) { + level = get_power_capacity(); + set_jack_charger(status); + if (level != 100 && status == 1) { + set_power_charge_now(1); + } else { + set_power_charge_now(0); + } + } +} + +static void set_earjack_data(int len, const char *data) +{ + char tmpbuf[MAX_INJECTOR_REQ_DATA]; + int x; + + len += get_parse_val(data + len, tmpbuf); + len += get_parse_val(data + len, tmpbuf); + + x = atoi(tmpbuf); + + set_jack_earjack(x); +} + +static void set_usb_data(int len, const char *data) +{ + char tmpbuf[MAX_INJECTOR_REQ_DATA]; + int x; + + len += get_parse_val(data + len, tmpbuf); + len += get_parse_val(data + len, tmpbuf); + + x = atoi(tmpbuf); + + set_jack_usb(x); +} + +static void ecs_device_set_injector_data(const char *data) +{ + char tmpbuf[MAX_INJECTOR_REQ_DATA]; + int len = get_parse_val(data, tmpbuf); + + switch (atoi(tmpbuf)) { + case level_battery: + set_battery_data(len, data); + break; + case level_earjack: + set_earjack_data(len, data); + break; + case level_usb: + set_usb_data(len, data); + break; + default: + break; + } +} + static bool injector_req_sensor(ECS_Client *ccli, ECS__InjectorReq *msg, char *cmd) { char data[MAX_INJECTOR_REQ_DATA]; @@ -213,6 +293,7 @@ static bool injector_req_sensor(ECS_Client *ccli, ECS__InjectorReq *msg, char *c return true; } else if (msg->data.data && msg->data.len > 0) { ecs_sensor_set_injector_data((char *) msg->data.data); + ecs_device_set_injector_data((char *) msg->data.data); return injector_send(ccli, msg, cmd); } diff --git a/tizen/src/ecs/ecs_sensor.c b/tizen/src/ecs/ecs_sensor.c index dfa2e7a..f05a60c 100644 --- a/tizen/src/ecs/ecs_sensor.c +++ b/tizen/src/ecs/ecs_sensor.c @@ -44,44 +44,12 @@ MULTI_DEBUG_CHANNEL(qemu, ecs); #define TEMP_BUF_SIZE 255 -#define MAX_VAL_LENGTH 40 #define ACCEL_MAX 1961330 #define SENSOR_ANGLE_MIN 0 #define SENSOR_ANGLE_MAX 360 -static int parse_val(const char *buff, unsigned char data, char *parsbuf) -{ - int count = 0; - - while (1) { - if (count > MAX_VAL_LENGTH) { - return -1; - } - if (buff[count] == data) { - count++; - strncpy(parsbuf, buff, count); - return count; - } - count++; - } - - return 0; -} - -static int get_parse_val(const char *buf, char *tmp) -{ - int index = 0; - - memset(tmp, 0, strlen(tmp)); - - index = parse_val(buf, 0x0a, tmp); - tmp[index - 1] = 0; - - return index; -} - int accel_min_max(double value) { int result = (int)value; @@ -456,40 +424,6 @@ static void _req_set_sensor_pedo(int len, const char *data) set_sensor_pedo(tmp, strlen(tmp)); } -static void set_battery_data(int len, const char *data) -{ - char tmp[TEMP_BUF_SIZE]; - int id = 0, status = 0, level = 0; - - /* remove item size */ - len += get_parse_val(data + len, tmp); - - /* id */ - len += get_parse_val(data + len, tmp); - id = atoi(tmp); - - /* status */ - len += get_parse_val(data + len, tmp); - status = atoi(tmp); - - if (id == 1) { - set_power_capacity(status); - if (status == 100) { - set_power_charge_full(1); - } else { - set_power_charge_full(0); - } - } else if (id == 2) { - level = get_power_capacity(); - set_jack_charger(status); - if (level != 100 && status == 1) { - set_power_charge_now(1); - } else { - set_power_charge_now(0); - } - } -} - void ecs_sensor_set_injector_data(const char *data) { char tmpbuf[TEMP_BUF_SIZE]; @@ -511,9 +445,6 @@ void ecs_sensor_set_injector_data(const char *data) case level_geo: _req_set_sensor_geo(len, data); break; - case level_battery: - set_battery_data(len, data); - break; case level_tilt: _req_set_sensor_tilt(len, data); break; diff --git a/tizen/src/ecs/ecs_sensor.h b/tizen/src/ecs/ecs_sensor.h index 31802b2..4b07745 100644 --- a/tizen/src/ecs/ecs_sensor.h +++ b/tizen/src/ecs/ecs_sensor.h @@ -31,21 +31,6 @@ #ifndef __ECS_SENSOR_H__ #define __ECS_SENSOR_H__ -enum injector_level { - level_accel = 1, - level_proxi = 2, - level_light = 3, - level_gyro = 4, - level_geo = 5, - level_battery = 8, - level_tilt = 12, - level_magnetic = 13, - level_pressure = 20, - level_uv = 21, - level_hrm = 22, - level_pedo = 23, -}; - /* skin rotation request */ int accel_min_max(double value); #if defined(CONFIG_QT) diff --git a/tizen/src/util/net_helper.c b/tizen/src/util/net_helper.c index b97acbf..9444a47 100644 --- a/tizen/src/util/net_helper.c +++ b/tizen/src/util/net_helper.c @@ -327,27 +327,6 @@ static void add_sdb_client(struct sockaddr_in* addr, int port, const char* seria send_to_sdb_client(client, runstate_check(RUN_STATE_SUSPENDED)); } -static int parse_val(char* buff, unsigned char data, char* parsbuf) -{ - int count = 0; - - while (1) { - if (count > 12) { - return -1; - } - - if (buff[count] == data) { - count++; - strncpy(parsbuf, buff, count); - return count; - } - - count++; - } - - return 0; -} - #define SDB_SERVER_PORT 26097 static void register_sdb_server(char* readbuf, struct sockaddr_in* client_addr) { -- 2.7.4