ecs: set earjack & usb value before passing to emuld 31/151631/3
authorjinh0.choi <jinh0.choi@samsung.com>
Thu, 21 Sep 2017 09:45:28 +0000 (18:45 +0900)
committerSeokYeon Hwang <syeon.hwang@samsung.com>
Fri, 22 Sep 2017 05:46:59 +0000 (05:46 +0000)
Change-Id: Id83b7fcdb80be9c02db0d54dbfaf7af8db80f83a
Signed-off-by: jinh0.choi <jinh0.choi@samsung.com>
tizen/src/ecs/ecs.c
tizen/src/ecs/ecs_internal.h
tizen/src/ecs/ecs_msg.c
tizen/src/ecs/ecs_msg_injector.c
tizen/src/ecs/ecs_sensor.c
tizen/src/ecs/ecs_sensor.h
tizen/src/util/net_helper.c

index 7585792..209d557 100644 (file)
@@ -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
index 4d0c0e9..5b4e3ee 100644 (file)
@@ -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);
index 305eb77..97c68c7 100644 (file)
 
 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);
index f85b1c3..7c11918 100644 (file)
@@ -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);
     }
 
index dfa2e7a..f05a60c 100644 (file)
 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;
index 31802b2..4b07745 100644 (file)
 #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)
index b97acbf..9444a47 100644 (file)
@@ -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)
 {