From eff2a8e3c95b2a8c68703724d842034070c9887c Mon Sep 17 00:00:00 2001 From: "kibak.yoon" Date: Fri, 14 Apr 2017 00:51:14 +0900 Subject: [PATCH 01/16] sensord: use int32_t instead size_t - compatibility with 64bit platform Change-Id: I16299dfe15418492506063ce6572e7cdf9502127 Signed-off-by: kibak.yoon --- src/client/sensor_manager.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/client/sensor_manager.cpp b/src/client/sensor_manager.cpp index 7d5197f..2d14a4d 100644 --- a/src/client/sensor_manager.cpp +++ b/src/client/sensor_manager.cpp @@ -220,22 +220,22 @@ void sensor_manager::decode_sensors(const char *buf, std::vector &i { int count = 0; sensor_info info; - const size_t *size; + const int32_t *size; const char *data; cmd_manager_sensor_list_t *raw; raw = (cmd_manager_sensor_list_t *)buf; count = raw->sensor_cnt; - size = (const size_t *)raw->data; - data = (const char *)raw->data + sizeof(size_t); + size = (const int32_t *)raw->data; + data = (const char *)raw->data + sizeof(int32_t); for (int i = 0; i < count; ++i) { info.clear(); info.deserialize(data, size[0]); infos.push_back(info); - size = (const size_t *)((const char *)data + size[0]); - data = (const char *)size + sizeof(size_t); + size = (const int32_t *)((const char *)data + size[0]); + data = (const char *)size + sizeof(int32_t); } _D("Sensor count : %d", count); -- 2.7.4 From 0c29aefea18c854e60b089f7550693e0de42c530 Mon Sep 17 00:00:00 2001 From: "kibak.yoon" Date: Fri, 14 Apr 2017 00:53:52 +0900 Subject: [PATCH 02/16] sensord: add required privilege to pre-defined types Change-Id: I0f08ad04497fa544318b1bd57dc7a2af470fa99a Signed-off-by: kibak.yoon --- src/server/physical_sensor_handler.cpp | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/server/physical_sensor_handler.cpp b/src/server/physical_sensor_handler.cpp index 00cf361..0fa3a2d 100644 --- a/src/server/physical_sensor_handler.cpp +++ b/src/server/physical_sensor_handler.cpp @@ -34,6 +34,21 @@ physical_sensor_handler::physical_sensor_handler(const sensor_info &info, , m_sensor(sensor) , m_hal_id(hal_id) { + /* TODO: temporary walkaround */ + switch (m_info.get_type()) { + case HRM_SENSOR: + case HRM_LED_GREEN_SENSOR: + case HRM_LED_IR_SENSOR: + case HRM_LED_RED_SENSOR: + case HUMAN_PEDOMETER_SENSOR: + case HUMAN_SLEEP_MONITOR_SENSOR: + case HUMAN_SLEEP_DETECTOR_SENSOR: + case HUMAN_STRESS_MONITOR_SENSOR: + m_info.set_privilege("http://tizen.org/privilege/healthinfo"); + break; + default: + break; + }; } physical_sensor_handler::~physical_sensor_handler() -- 2.7.4 From e3b33421686cbfa14cb99e1822789029fda1242f Mon Sep 17 00:00:00 2001 From: "kibak.yoon" Date: Fri, 14 Apr 2017 00:56:05 +0900 Subject: [PATCH 03/16] sensord: compare previous interval with current interval Change-Id: I65c56ce4a3757447fb1fdc61b344732fcd4dbc9b Signed-off-by: kibak.yoon --- src/server/physical_sensor_handler.cpp | 23 ++++++++++++++--------- src/server/physical_sensor_handler.h | 3 ++- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/src/server/physical_sensor_handler.cpp b/src/server/physical_sensor_handler.cpp index 0fa3a2d..3ee22b7 100644 --- a/src/server/physical_sensor_handler.cpp +++ b/src/server/physical_sensor_handler.cpp @@ -33,6 +33,7 @@ physical_sensor_handler::physical_sensor_handler(const sensor_info &info, , m_device(device) , m_sensor(sensor) , m_hal_id(hal_id) +, m_prev_interval(0) { /* TODO: temporary walkaround */ switch (m_info.get_type()) { @@ -166,22 +167,26 @@ int physical_sensor_handler::set_interval(sensor_observer *ob, int32_t interval) retv_if(!m_device, -EINVAL); bool ret = false; - int _interval = interval; + int32_t cur_interval = interval; int policy = OP_DEFAULT; if (m_sensor) { - policy = m_sensor->set_interval(ob, interval); + policy = m_sensor->set_interval(ob, cur_interval); retv_if(policy <= OP_ERROR, policy); } - m_interval_map[ob] = interval; + m_interval_map[ob] = cur_interval; if (policy == OP_DEFAULT) - _interval = get_min_interval(); + cur_interval = get_min_interval(); - ret = m_device->set_interval(m_hal_id, _interval); + retv_if(m_prev_interval == cur_interval, OP_SUCCESS); - return (ret ? OP_SUCCESS : OP_SUCCESS); + ret = m_device->set_interval(m_hal_id, cur_interval); + + m_prev_interval = cur_interval; + + return (ret ? OP_SUCCESS : OP_ERROR); } int physical_sensor_handler::get_min_batch_latency(void) @@ -221,7 +226,7 @@ int physical_sensor_handler::set_batch_latency(sensor_observer *ob, int32_t late ret = m_device->set_batch_latency(m_hal_id, _latency); - return (ret ? OP_SUCCESS : OP_SUCCESS); + return (ret ? OP_SUCCESS : OP_ERROR); } int physical_sensor_handler::set_attribute(sensor_observer *ob, int32_t attr, int32_t value) @@ -246,7 +251,7 @@ int physical_sensor_handler::set_attribute(sensor_observer *ob, int32_t attr, in ret = m_device->set_attribute_int(m_hal_id, attr, value); - return (ret ? OP_SUCCESS : OP_SUCCESS); + return (ret ? OP_SUCCESS : OP_ERROR); } int physical_sensor_handler::set_attribute(sensor_observer *ob, int32_t attr, const char *value, int len) @@ -271,7 +276,7 @@ int physical_sensor_handler::set_attribute(sensor_observer *ob, int32_t attr, co ret = m_device->set_attribute_str(m_hal_id, attr, const_cast(value), len); - return (ret ? OP_SUCCESS : OP_SUCCESS); + return (ret ? OP_SUCCESS : OP_ERROR); } int physical_sensor_handler::flush(sensor_observer *ob) diff --git a/src/server/physical_sensor_handler.h b/src/server/physical_sensor_handler.h index 1983dbd..edb29dd 100644 --- a/src/server/physical_sensor_handler.h +++ b/src/server/physical_sensor_handler.h @@ -62,7 +62,8 @@ private: sensor_info m_info; sensor_device *m_device; physical_sensor *m_sensor; - int m_hal_id; + uint32_t m_hal_id; + int32_t m_prev_interval; std::unordered_map m_interval_map; std::unordered_map m_batch_latency_map; -- 2.7.4 From 93dfbb164c2f19c015f32a02f9cde5adfcba0e24 Mon Sep 17 00:00:00 2001 From: "kibak.yoon" Date: Fri, 14 Apr 2017 01:00:56 +0900 Subject: [PATCH 04/16] sensord: separate channel for event and command - if the event occurs during sending command, a timing issue will occur. Change-Id: I8ed5ad2f7c6bcc9ea44641c619458639553822c2 Signed-off-by: kibak.yoon --- src/client/sensor_listener.cpp | 73 ++++++++++++++++++------------ src/client/sensor_listener.h | 3 +- src/server/server_channel_handler.cpp | 84 +++++++++++++++++++++-------------- src/server/server_channel_handler.h | 7 ++- 4 files changed, 101 insertions(+), 66 deletions(-) diff --git a/src/client/sensor_listener.cpp b/src/client/sensor_listener.cpp index a5c4af2..95c411c 100644 --- a/src/client/sensor_listener.cpp +++ b/src/client/sensor_listener.cpp @@ -66,7 +66,8 @@ sensor_listener::sensor_listener(sensor_t sensor) : m_id(0) , m_sensor(reinterpret_cast(sensor)) , m_client(NULL) -, m_channel(NULL) +, m_cmd_channel(NULL) +, m_evt_channel(NULL) , m_handler(NULL) , m_evt_handler(NULL) , m_acc_handler(NULL) @@ -148,8 +149,11 @@ void sensor_listener::restore(void) bool sensor_listener::connect(void) { - m_channel = m_client->connect(m_handler, &m_loop); - retvm_if(!m_channel, false, "Failed to connect to server"); + m_cmd_channel = m_client->connect(NULL); + retvm_if(!m_cmd_channel, false, "Failed to connect to server"); + + m_evt_channel = m_client->connect(m_handler, &m_loop); + retvm_if(!m_evt_channel, false, "Failed to connect to server"); ipc::message msg; ipc::message reply; @@ -158,9 +162,9 @@ bool sensor_listener::connect(void) memcpy(buf.sensor, m_sensor->get_uri().c_str(), m_sensor->get_uri().size()); msg.set_type(CMD_LISTENER_CONNECT); msg.enclose((const char *)&buf, sizeof(buf)); - m_channel->send_sync(&msg); + m_evt_channel->send_sync(&msg); - m_channel->read_sync(reply); + m_evt_channel->read_sync(reply); reply.disclose((char *)&buf); m_id = buf.listener_id; @@ -180,13 +184,17 @@ void sensor_listener::disconnect(void) ipc::message reply; msg.set_type(CMD_LISTENER_DISCONNECT); - m_channel->send_sync(&msg); + m_evt_channel->send_sync(&msg); + + m_evt_channel->read_sync(reply); + m_evt_channel->disconnect(); - m_channel->read_sync(reply); - m_channel->disconnect(); + delete m_evt_channel; + m_evt_channel = NULL; - delete m_channel; - m_channel = NULL; + m_cmd_channel->disconnect(); + delete m_cmd_channel; + m_cmd_channel = NULL; _I("Disconnected[%d]", get_id()); } @@ -234,14 +242,14 @@ int sensor_listener::start(void) ipc::message reply; cmd_listener_start_t buf; - retvm_if(!m_channel, -EINVAL, "Failed to connect to server"); + retvm_if(!m_cmd_channel, -EINVAL, "Failed to connect to server"); buf.listener_id = m_id; msg.set_type(CMD_LISTENER_START); msg.enclose((char *)&buf, sizeof(buf)); - m_channel->send_sync(&msg); - m_channel->read_sync(reply); + m_cmd_channel->send_sync(&msg); + m_cmd_channel->read_sync(reply); if (reply.header()->err < 0) return reply.header()->err; @@ -257,15 +265,15 @@ int sensor_listener::stop(void) ipc::message reply; cmd_listener_stop_t buf; - retvm_if(!m_channel, -EINVAL, "Failed to connect to server"); + retvm_if(!m_cmd_channel, -EINVAL, "Failed to connect to server"); retvm_if(!m_started.load(), -EAGAIN, "Already stopped"); buf.listener_id = m_id; msg.set_type(CMD_LISTENER_STOP); msg.enclose((char *)&buf, sizeof(buf)); - m_channel->send_sync(&msg); - m_channel->read_sync(reply); + m_cmd_channel->send_sync(&msg); + m_cmd_channel->read_sync(reply); if (reply.header()->err < 0) return reply.header()->err; @@ -343,7 +351,7 @@ int sensor_listener::set_attribute(int attribute, int value) ipc::message reply; cmd_listener_attr_int_t buf; - retvm_if(!m_channel, false, "Failed to connect to server"); + retvm_if(!m_cmd_channel, false, "Failed to connect to server"); buf.listener_id = m_id; buf.attribute = attribute; @@ -351,8 +359,8 @@ int sensor_listener::set_attribute(int attribute, int value) msg.set_type(CMD_LISTENER_ATTR_INT); msg.enclose((char *)&buf, sizeof(buf)); - m_channel->send_sync(&msg); - m_channel->read_sync(reply); + m_cmd_channel->send_sync(&msg); + m_cmd_channel->read_sync(reply); if (reply.header()->err < 0) return reply.header()->err; @@ -368,7 +376,7 @@ int sensor_listener::set_attribute(int attribute, const char *value, int len) ipc::message reply; cmd_listener_attr_str_t buf; - retvm_if(!m_channel, false, "Failed to connect to server"); + retvm_if(!m_cmd_channel, false, "Failed to connect to server"); msg.set_type(CMD_LISTENER_ATTR_STR); buf.listener_id = m_id; @@ -378,8 +386,8 @@ int sensor_listener::set_attribute(int attribute, const char *value, int len) msg.enclose((char *)&buf, sizeof(buf) + len); - m_channel->send_sync(&msg); - m_channel->read_sync(reply); + m_cmd_channel->send_sync(&msg); + m_cmd_channel->read_sync(reply); return reply.header()->err; } @@ -390,19 +398,26 @@ int sensor_listener::get_sensor_data(sensor_data_t *data) ipc::message reply; cmd_listener_get_data_t buf; - retvm_if(!m_channel, false, "Failed to connect to server"); + retvm_if(!m_cmd_channel, false, "Failed to connect to server"); buf.listener_id = m_id; msg.set_type(CMD_LISTENER_GET_DATA); msg.enclose((char *)&buf, sizeof(buf)); - m_channel->send_sync(&msg); - m_channel->read_sync(reply); - /* TODO */ - /* + m_cmd_channel->send_sync(&msg); + m_cmd_channel->read_sync(reply); + reply.disclose((char *)&buf); - memcpy(data, buf.data, sizeof(buf.len)); - */ + int size = sizeof(sensor_data_t); + + if (buf.len > size || buf.len < 0) { + data->accuracy = -1; + data->value_count = 0; + /* TODO: it should return OP_ERROR */ + return OP_SUCCESS; + } + + memcpy(data, &buf.data, buf.len); return OP_SUCCESS; } diff --git a/src/client/sensor_listener.h b/src/client/sensor_listener.h index ea30092..f0a1f1b 100644 --- a/src/client/sensor_listener.h +++ b/src/client/sensor_listener.h @@ -80,7 +80,8 @@ private: sensor_info *m_sensor; ipc::ipc_client *m_client; - ipc::channel *m_channel; + ipc::channel *m_cmd_channel; + ipc::channel *m_evt_channel; ipc::channel_handler *m_handler; ipc::channel_handler *m_evt_handler; ipc::channel_handler *m_acc_handler; diff --git a/src/server/server_channel_handler.cpp b/src/server/server_channel_handler.cpp index 1c18d1d..86abf93 100644 --- a/src/server/server_channel_handler.cpp +++ b/src/server/server_channel_handler.cpp @@ -47,13 +47,14 @@ void server_channel_handler::connected(channel *ch) void server_channel_handler::disconnected(channel *ch) { - auto it = m_listeners.find(ch); - ret_if(it == m_listeners.end()); + auto it = m_listener_ids.find(ch); + ret_if(it == m_listener_ids.end()); - _I("Disconnected listener[%u]", it->second->get_id()); + _I("Disconnected listener[%u]", it->second); - delete it->second; - m_listeners.erase(ch); + delete m_listeners[it->second]; + m_listeners.erase(it->second); + m_listener_ids.erase(ch); } void server_channel_handler::read(channel *ch, message &msg) @@ -104,6 +105,7 @@ int server_channel_handler::manager_get_sensor_list(channel *ch, message &msg) retv_if(size < 0, size); reply.enclose((const char *)bytes, size); + reply.header()->err = OP_SUCCESS; ch->send_sync(&reply); delete [] bytes; @@ -138,24 +140,26 @@ int server_channel_handler::listener_connect(channel *ch, message &msg) return OP_ERROR; _I("Connected sensor_listener[fd(%d) -> id(%u)]", ch->get_fd(), listener_id); + m_listeners[listener_id] = listener; + m_listener_ids[ch] = listener_id; listener_id++; - m_listeners[ch] = listener; return OP_SUCCESS; } int server_channel_handler::listener_disconnect(channel *ch, message &msg) { - auto it = m_listeners.find(ch); - retv_if(it == m_listeners.end(), -EINVAL); + auto it = m_listener_ids.find(ch); + retv_if(it == m_listener_ids.end(), -EINVAL); - uint32_t id = m_listeners[ch]->get_id(); + uint32_t id = it->second; - retvm_if(!has_privileges(ch->get_fd(), m_listeners[ch]->get_required_privileges()), + retvm_if(!has_privileges(ch->get_fd(), m_listeners[id]->get_required_privileges()), -EACCES, "Permission denied"); - delete m_listeners[ch]; - m_listeners.erase(ch); + delete m_listeners[id]; + m_listeners.erase(id); + m_listener_ids.erase(ch); _D("Disconnected sensor_listener[%u]", id); @@ -164,12 +168,16 @@ int server_channel_handler::listener_disconnect(channel *ch, message &msg) int server_channel_handler::listener_start(channel *ch, message &msg) { - auto it = m_listeners.find(ch); + cmd_listener_start_t buf; + msg.disclose((char *)&buf); + uint32_t id = buf.listener_id; + + auto it = m_listeners.find(id); retv_if(it == m_listeners.end(), -EINVAL); - retvm_if(!has_privileges(ch->get_fd(), m_listeners[ch]->get_required_privileges()), + retvm_if(!has_privileges(ch->get_fd(), m_listeners[id]->get_required_privileges()), -EACCES, "Permission denied"); - int ret = m_listeners[ch]->start(); + int ret = m_listeners[id]->start(); retv_if(ret < 0, ret); return send_reply(ch, OP_SUCCESS); @@ -177,12 +185,16 @@ int server_channel_handler::listener_start(channel *ch, message &msg) int server_channel_handler::listener_stop(channel *ch, message &msg) { - auto it = m_listeners.find(ch); + cmd_listener_stop_t buf; + msg.disclose((char *)&buf); + uint32_t id = buf.listener_id; + + auto it = m_listeners.find(id); retv_if(it == m_listeners.end(), -EINVAL); - retvm_if(!has_privileges(ch->get_fd(), m_listeners[ch]->get_required_privileges()), + retvm_if(!has_privileges(ch->get_fd(), m_listeners[id]->get_required_privileges()), -EACCES, "Permission denied"); - int ret = m_listeners[ch]->stop(); + int ret = m_listeners[id]->stop(); retv_if(ret < 0, ret); return send_reply(ch, OP_SUCCESS); @@ -190,44 +202,48 @@ int server_channel_handler::listener_stop(channel *ch, message &msg) int server_channel_handler::listener_attr_int(channel *ch, message &msg) { + cmd_listener_attr_int_t buf; + msg.disclose((char *)&buf); + uint32_t id = buf.listener_id; + int ret = OP_SUCCESS; - auto it = m_listeners.find(ch); + auto it = m_listeners.find(id); retv_if(it == m_listeners.end(), -EINVAL); - retvm_if(!has_privileges(ch->get_fd(), m_listeners[ch]->get_required_privileges()), + retvm_if(!has_privileges(ch->get_fd(), m_listeners[id]->get_required_privileges()), -EACCES, "Permission denied"); - cmd_listener_attr_int_t buf; - msg.disclose((char *)&buf); - switch (buf.attribute) { case SENSORD_ATTRIBUTE_INTERVAL: - ret = m_listeners[ch]->set_interval(buf.value); break; + ret = m_listeners[id]->set_interval(buf.value); break; case SENSORD_ATTRIBUTE_MAX_BATCH_LATENCY: - ret = m_listeners[ch]->set_max_batch_latency(buf.value); break; + ret = m_listeners[id]->set_max_batch_latency(buf.value); break; case SENSORD_ATTRIBUTE_PASSIVE_MODE: - ret = m_listeners[ch]->set_passive_mode(buf.value); break; + ret = m_listeners[id]->set_passive_mode(buf.value); break; case SENSORD_ATTRIBUTE_PAUSE_POLICY: case SENSORD_ATTRIBUTE_AXIS_ORIENTATION: default: - ret = m_listeners[ch]->set_attribute(buf.attribute, buf.value); + ret = m_listeners[id]->set_attribute(buf.attribute, buf.value); } - retv_if(ret < 0, ret); + /* TODO : check return value */ + if (ret < 0) + _W("Return : %d", ret); return send_reply(ch, OP_SUCCESS); } int server_channel_handler::listener_attr_str(channel *ch, message &msg) { - auto it = m_listeners.find(ch); - retv_if(it == m_listeners.end(), -EINVAL); - retvm_if(!has_privileges(ch->get_fd(), m_listeners[ch]->get_required_privileges()), - -EACCES, "Permission denied"); - cmd_listener_attr_str_t buf; msg.disclose((char *)&buf); + uint32_t id = buf.listener_id; + + auto it = m_listeners.find(id); + retv_if(it == m_listeners.end(), -EINVAL); + retvm_if(!has_privileges(ch->get_fd(), m_listeners[id]->get_required_privileges()), + -EACCES, "Permission denied"); - int ret = m_listeners[ch]->set_attribute(buf.attribute, buf.value, buf.len); + int ret = m_listeners[id]->set_attribute(buf.attribute, buf.value, buf.len); retv_if(ret < 0, ret); return send_reply(ch, OP_SUCCESS); diff --git a/src/server/server_channel_handler.h b/src/server/server_channel_handler.h index 1ccc998..a2d9fce 100644 --- a/src/server/server_channel_handler.h +++ b/src/server/server_channel_handler.h @@ -67,8 +67,11 @@ private: sensor_manager *m_manager; - /* {fd, listener} */ - std::unordered_map m_listeners; + /* {id, listener} */ + std::unordered_map m_listeners; + + /* {channel, id} */ + std::unordered_map m_listener_ids; /* {name, application_sensor_handler} */ /* TODO: move it to sensor_manager */ -- 2.7.4 From 5bc863fd19c73c047383009ca23f57f52eb6e290 Mon Sep 17 00:00:00 2001 From: "kibak.yoon" Date: Fri, 14 Apr 2017 01:07:36 +0900 Subject: [PATCH 05/16] sensord: support get_data() API simply - [TBD] it doesn't consider whether the value is normal or not. Change-Id: I5b5517c82d8282cf433fe6b7eb4b9a2956346d0b Signed-off-by: kibak.yoon --- src/server/fusion_sensor_handler.cpp | 5 +++-- src/server/server_channel_handler.cpp | 29 ++++++++++++++++++++++++++--- src/shared/command_types.h | 2 +- 3 files changed, 30 insertions(+), 6 deletions(-) diff --git a/src/server/fusion_sensor_handler.cpp b/src/server/fusion_sensor_handler.cpp index 05ab314..18ecd71 100644 --- a/src/server/fusion_sensor_handler.cpp +++ b/src/server/fusion_sensor_handler.cpp @@ -214,8 +214,9 @@ int fusion_sensor_handler::set_attribute(sensor_observer *ob, int32_t attr, cons int fusion_sensor_handler::get_data(sensor_data_t **data, int *len) { - /* TODO */ - return OP_SUCCESS; + retv_if(!m_sensor, -EINVAL); + + return m_sensor->get_data(data, len); } int fusion_sensor_handler::flush(sensor_observer *ob) diff --git a/src/server/server_channel_handler.cpp b/src/server/server_channel_handler.cpp index 86abf93..6fad489 100644 --- a/src/server/server_channel_handler.cpp +++ b/src/server/server_channel_handler.cpp @@ -251,12 +251,35 @@ int server_channel_handler::listener_attr_str(channel *ch, message &msg) int server_channel_handler::listener_get_data(channel *ch, message &msg) { - auto it = m_listeners.find(ch); + ipc::message reply; + cmd_listener_get_data_t buf; + sensor_data_t *data; + int len; + uint32_t id; + + msg.disclose((char *)&buf); + id = buf.listener_id; + + auto it = m_listeners.find(id); retv_if(it == m_listeners.end(), -EINVAL); - retvm_if(!has_privileges(ch->get_fd(), m_listeners[ch]->get_required_privileges()), + retvm_if(!has_privileges(ch->get_fd(), m_listeners[id]->get_required_privileges()), -EACCES, "Permission denied"); - return send_reply(ch, OP_ERROR); + int ret = m_listeners[id]->get_data(&data, &len); + retv_if(ret < 0, ret); + + memcpy(&buf.data, data, sizeof(sensor_data_t)); + buf.len = sizeof(sensor_data_t); + + reply.enclose((const char *)&buf, sizeof(cmd_listener_get_data_t)); + reply.header()->err = OP_SUCCESS; + reply.header()->type = CMD_LISTENER_GET_DATA; + + ch->send_sync(&reply); + + free(data); + + return OP_SUCCESS; } int server_channel_handler::provider_connect(channel *ch, message &msg) diff --git a/src/shared/command_types.h b/src/shared/command_types.h index 6b5e0c6..a75ef6e 100644 --- a/src/shared/command_types.h +++ b/src/shared/command_types.h @@ -94,7 +94,7 @@ typedef struct { typedef struct { int listener_id; int len; - char data[0]; + sensor_data_t data; } cmd_listener_get_data_t; typedef struct { -- 2.7.4 From e69c92e77630def6f7f131cf223ae90e44dd3cbd Mon Sep 17 00:00:00 2001 From: "kibak.yoon" Date: Fri, 14 Apr 2017 01:10:01 +0900 Subject: [PATCH 06/16] sensord: suppress verbos log message - highlight compile errors/warnings Change-Id: I19b34adff7fd0488109c6361dea70d0865f7a1db Signed-off-by: kibak.yoon --- CMakeLists.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 0f30d92..45e0775 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -7,7 +7,9 @@ INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include) # Common Options SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -O2 -omit-frame-pointer -std=gnu++0x") SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fdata-sections -ffunction-sections") +SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fdiagnostics-color") SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--gc-sections -Wl,--print-gc-sections") +SET(CMAKE_VERBOSE_MAKEFILE OFF) MESSAGE("FLAGS: ${CMAKE_CXX_FLAGS}") MESSAGE("FLAGS: ${CMAKE_EXE_LINKER_FLAGS}") -- 2.7.4 From 1bf0daf6be1856cf5d22ecbae078dd784d9552eb Mon Sep 17 00:00:00 2001 From: "kibak.yoon" Date: Thu, 6 Apr 2017 19:55:46 +0900 Subject: [PATCH 07/16] sensord: remove unnecessary socket log Change-Id: I7a7213ebd917ccf88172b159667ad8b9169daa63 Signed-off-by: kibak.yoon --- src/shared/socket.cpp | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/shared/socket.cpp b/src/shared/socket.cpp index b29ba96..871031f 100644 --- a/src/shared/socket.cpp +++ b/src/shared/socket.cpp @@ -254,10 +254,8 @@ bool socket::close(void) { retv_if(m_sock_fd < 0, false); - if (::close(m_sock_fd) < 0) { - _ERRNO(errno, _E, "Failed to close socket[%d]", m_sock_fd); + if (::close(m_sock_fd) < 0) return false; - } _D("Closed[%d]", m_sock_fd); -- 2.7.4 From c13290dcc185dd17aea4c4f00c443eba07ec445e Mon Sep 17 00:00:00 2001 From: "kibak.yoon" Date: Fri, 14 Apr 2017 12:24:47 +0900 Subject: [PATCH 08/16] sensord: add defensive code for blocking issue - this issue is related to hrm_raw sensor device driver Change-Id: Ib75c56b7847b4afe8aeb3a14609168a47a669b64 Signed-off-by: kibak.yoon --- src/server/physical_sensor_handler.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/server/physical_sensor_handler.cpp b/src/server/physical_sensor_handler.cpp index 3ee22b7..85a5515 100644 --- a/src/server/physical_sensor_handler.cpp +++ b/src/server/physical_sensor_handler.cpp @@ -75,11 +75,12 @@ int physical_sensor_handler::get_poll_fd(void) int physical_sensor_handler::read_fd(std::vector &ids) { + retv_if(observer_count() == 0, OP_ERROR); + retv_if(!m_device, -EINVAL); + int size; uint32_t *_ids; - retv_if(!m_device, -EINVAL); - size = m_device->read_fd(&_ids); retv_if(size == 0, -ENODATA); -- 2.7.4 From c4a3c8a910ec06ffe96917169d873bddc1026507 Mon Sep 17 00:00:00 2001 From: "kibak.yoon" Date: Fri, 14 Apr 2017 16:44:54 +0900 Subject: [PATCH 09/16] sensord: rename fusion sensors to proper name Change-Id: Ied998d22a50464a735b7f37a893c0de51c6d282f Signed-off-by: kibak.yoon --- src/sensor/auto_rotation/auto_rotation_sensor.cpp | 4 ++-- src/sensor/gravity/gravity_comp_sensor.cpp | 4 ++-- src/sensor/gravity/gravity_lowpass_sensor.cpp | 4 ++-- src/sensor/linear_accel/linear_accel_sensor.cpp | 4 ++-- src/sensor/orientation/orientation_sensor.cpp | 4 ++-- src/sensor/rotation_vector/gyro_rv_sensor.cpp | 4 ++-- src/sensor/rotation_vector/magnetic_rv_sensor.cpp | 4 ++-- src/sensor/rotation_vector/rv_sensor.cpp | 4 ++-- 8 files changed, 16 insertions(+), 16 deletions(-) diff --git a/src/sensor/auto_rotation/auto_rotation_sensor.cpp b/src/sensor/auto_rotation/auto_rotation_sensor.cpp index 2a6aa98..33f1fda 100644 --- a/src/sensor/auto_rotation/auto_rotation_sensor.cpp +++ b/src/sensor/auto_rotation/auto_rotation_sensor.cpp @@ -24,8 +24,8 @@ #include "auto_rotation_alg_emul.h" -#define NAME_SENSOR "http://tizen.org/sensor/auto_rotation/AUTO_ROTATION" -#define NAME_VENDOR "Samsung" +#define NAME_SENSOR "http://tizen.org/sensor/auto_rotation/tizen_default" +#define NAME_VENDOR "tizen.org" #define SRC_ID_ACC 0x1 #define SRC_STR_ACC "http://tizen.org/sensor/accelerometer" diff --git a/src/sensor/gravity/gravity_comp_sensor.cpp b/src/sensor/gravity/gravity_comp_sensor.cpp index 2a09115..9552e74 100644 --- a/src/sensor/gravity/gravity_comp_sensor.cpp +++ b/src/sensor/gravity/gravity_comp_sensor.cpp @@ -24,8 +24,8 @@ #include #include -#define NAME_SENSOR "http://tizen.org/sensor/gravity/complementary" -#define NAME_VENDOR "Samsung" +#define NAME_SENSOR "http://tizen.org/sensor/gravity/tizen_complementary" +#define NAME_VENDOR "tizen.org" #define SRC_ID_ACC 0x1 #define SRC_STR_ACC "http://tizen.org/sensor/accelerometer" diff --git a/src/sensor/gravity/gravity_lowpass_sensor.cpp b/src/sensor/gravity/gravity_lowpass_sensor.cpp index f3e7d7b..bc31ce2 100644 --- a/src/sensor/gravity/gravity_lowpass_sensor.cpp +++ b/src/sensor/gravity/gravity_lowpass_sensor.cpp @@ -24,8 +24,8 @@ #include #include -#define NAME_SENSOR "http://tizen.org/sensor/gravity/lowpass" -#define NAME_VENDOR "Samsung" +#define NAME_SENSOR "http://tizen.org/sensor/gravity/tizen_lowpass" +#define NAME_VENDOR "tizen.org" #define SRC_ID_ACC 0x1 #define SRC_STR_ACC "http://tizen.org/sensor/accelerometer" diff --git a/src/sensor/linear_accel/linear_accel_sensor.cpp b/src/sensor/linear_accel/linear_accel_sensor.cpp index e46f74a..27cce33 100644 --- a/src/sensor/linear_accel/linear_accel_sensor.cpp +++ b/src/sensor/linear_accel/linear_accel_sensor.cpp @@ -23,8 +23,8 @@ #include #include -#define NAME_SENSOR "http://tizen.org/sensor/linear_accel/linear_accel" -#define NAME_VENDOR "Samsung" +#define NAME_SENSOR "http://tizen.org/sensor/linear_accel/tizen_default" +#define NAME_VENDOR "tizen.org" #define SRC_ID_ACC 0x1 #define SRC_STR_ACC "http://tizen.org/sensor/accelerometer" diff --git a/src/sensor/orientation/orientation_sensor.cpp b/src/sensor/orientation/orientation_sensor.cpp index 393ec9a..551c73f 100644 --- a/src/sensor/orientation/orientation_sensor.cpp +++ b/src/sensor/orientation/orientation_sensor.cpp @@ -23,8 +23,8 @@ #include #include -#define NAME_SENSOR "http://tizen.org/sensor/orientation/orientation" -#define NAME_VENDOR "Samsung" +#define NAME_SENSOR "http://tizen.org/sensor/orientation/tizen_default" +#define NAME_VENDOR "tizen.org" #define SRC_ID_RV 0x1 #define SRC_STR_RV "http://tizen.org/sensor/rotation_vector" diff --git a/src/sensor/rotation_vector/gyro_rv_sensor.cpp b/src/sensor/rotation_vector/gyro_rv_sensor.cpp index 3a738d0..ccafce8 100644 --- a/src/sensor/rotation_vector/gyro_rv_sensor.cpp +++ b/src/sensor/rotation_vector/gyro_rv_sensor.cpp @@ -23,8 +23,8 @@ #include #include -#define NAME_SENSOR "http://tizen.org/sensor/gyro_rotation_vector/gyro_rv" -#define NAME_VENDOR "Samsung" +#define NAME_SENSOR "http://tizen.org/sensor/gyro_rotation_vector/tizen_default" +#define NAME_VENDOR "tizen.org" #define SRC_ID_ACC 0x1 #define SRC_STR_ACC "http://tizen.org/sensor/accelerometer" diff --git a/src/sensor/rotation_vector/magnetic_rv_sensor.cpp b/src/sensor/rotation_vector/magnetic_rv_sensor.cpp index 66c8808..fd9ad36 100644 --- a/src/sensor/rotation_vector/magnetic_rv_sensor.cpp +++ b/src/sensor/rotation_vector/magnetic_rv_sensor.cpp @@ -23,8 +23,8 @@ #include #include -#define NAME_SENSOR "http://tizen.org/sensor/mag_rotation_vector/mag_rv" -#define NAME_VENDOR "Samsung" +#define NAME_SENSOR "http://tizen.org/sensor/mag_rotation_vector/tizen_default" +#define NAME_VENDOR "tizen.org" #define SRC_ID_ACC 0x1 #define SRC_STR_ACC "http://tizen.org/sensor/accelerometer" diff --git a/src/sensor/rotation_vector/rv_sensor.cpp b/src/sensor/rotation_vector/rv_sensor.cpp index 6d69cda..116541f 100644 --- a/src/sensor/rotation_vector/rv_sensor.cpp +++ b/src/sensor/rotation_vector/rv_sensor.cpp @@ -23,8 +23,8 @@ #include #include -#define NAME_SENSOR "http://tizen.org/sensor/rotation_vector/rotation_vector" -#define NAME_VENDOR "Samsung" +#define NAME_SENSOR "http://tizen.org/sensor/rotation_vector/tizen_default" +#define NAME_VENDOR "tizen.org" #define SRC_ID_ACC 0x1 #define SRC_STR_ACC "http://tizen.org/sensor/accelerometer" -- 2.7.4 From 237aeb9c0a720c59a6881f0f7922f4ca4cd3540f Mon Sep 17 00:00:00 2001 From: "kibak.yoon" Date: Fri, 14 Apr 2017 17:22:54 +0900 Subject: [PATCH 10/16] sensord: fix bug with invalid character(!) Change-Id: Ib35b0f4c2ea3dc1d9c169ef24fa533a99d21c9c8 Signed-off-by: kibak.yoon --- src/shared/channel.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/shared/channel.cpp b/src/shared/channel.cpp index b56d49e..8dc25ac 100644 --- a/src/shared/channel.cpp +++ b/src/shared/channel.cpp @@ -25,6 +25,8 @@ #include "sensor_log.h" +#define SYSTEMD_SOCK_BUF_SIZE 40000 + using namespace ipc; class send_event_handler : public event_handler @@ -146,7 +148,7 @@ bool channel::send(message *msg) /* TODO: check buffer size(is there any linux api for this?) */ int cur_buffer_size = m_socket->get_current_buffer_size(); - retvm_if(!cur_buffer_size > 40000, false, "Failed to send data"); + retvm_if(cur_buffer_size > SYSTEMD_SOCK_BUF_SIZE, false, "Failed to send data"); send_event_handler *handler = new(std::nothrow) send_event_handler(this, msg); retvm_if(!handler, false, "Failed to allocate memory"); -- 2.7.4 From 734c56cd6d0e13c1d8fbd62a88bc55459707b533 Mon Sep 17 00:00:00 2001 From: "kibak.yoon" Date: Fri, 14 Apr 2017 17:58:03 +0900 Subject: [PATCH 11/16] sensord: use readdir() instead of deprecated readdir_r Change-Id: Iad45c3eea70923dc6f42a966b4ed0c62fcb3ebc4 Signed-off-by: kibak.yoon --- src/server/sensor_loader.cpp | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/src/server/sensor_loader.cpp b/src/server/sensor_loader.cpp index 9ea7e7f..9611b3a 100644 --- a/src/server/sensor_loader.cpp +++ b/src/server/sensor_loader.cpp @@ -107,10 +107,8 @@ bool sensor_loader::load(const std::string &dir_path, std::vector &paths) { - int ret; DIR *dir = NULL; - struct dirent entry; - struct dirent *result; + struct dirent *entry; struct stat buf; std::string filename; @@ -118,14 +116,10 @@ bool sensor_loader::get_module_paths(const std::string &dir_path, std::vectord_name); if (filename == "." || filename == "..") continue; -- 2.7.4 From c7648031b5c7a12a419018cdc9fc36e50bc26946 Mon Sep 17 00:00:00 2001 From: "kibak.yoon" Date: Thu, 20 Apr 2017 12:52:36 +0900 Subject: [PATCH 12/16] sensord: remove unnecessary usleep() Change-Id: I3190710465ea1dcdef396b84155403a6418fd210 Signed-off-by: kibak.yoon --- src/sensorctl/testcase/sensor_basic.cpp | 4 ---- src/sensorctl/testcase/unit_socket.cpp | 2 -- 2 files changed, 6 deletions(-) diff --git a/src/sensorctl/testcase/sensor_basic.cpp b/src/sensorctl/testcase/sensor_basic.cpp index 466b80a..cc56dec 100644 --- a/src/sensorctl/testcase/sensor_basic.cpp +++ b/src/sensorctl/testcase/sensor_basic.cpp @@ -92,7 +92,6 @@ static bool run_echo_command_test(const char *str, int size, int cout) 100, 1000, SENSOR_OPTION_ALWAYS_ON, basic_cb, NULL); sensor_adapter::get_handle(info, handle); - usleep(10000); for (int i = 0; i < 1024; ++i) ret &= sensor_adapter::set_attribute(handle, SENSOR_ATTR_ACCELEROMETER_INJECTION, buf, 4096); ASSERT_TRUE(ret); @@ -104,8 +103,6 @@ TESTCASE(echo_command_test, echo_command_p) { pid_t pid; - usleep(100000); - for (int i = 0; i < 100; ++i) { pid = run_process(run_echo_command_test, NULL, 0, 0); EXPECT_GE(pid, 0); @@ -115,7 +112,6 @@ TESTCASE(echo_command_test, echo_command_p) EXPECT_GE(pid, 0); ASSERT_TRUE(true); - usleep(100000); return true; } diff --git a/src/sensorctl/testcase/unit_socket.cpp b/src/sensorctl/testcase/unit_socket.cpp index 3b15b5a..2cb240f 100644 --- a/src/sensorctl/testcase/unit_socket.cpp +++ b/src/sensorctl/testcase/unit_socket.cpp @@ -130,8 +130,6 @@ static bool run_socket_client(const char *msg, int size, int count) sock.close(); - usleep(100000); - return true; } -- 2.7.4 From 678c26692677b14f3656192d6d7da42b25097886 Mon Sep 17 00:00:00 2001 From: "kibak.yoon" Date: Thu, 20 Apr 2017 12:53:51 +0900 Subject: [PATCH 13/16] sensord: replace usleep() code with sleep() - this patch makes it a one second delay instead of 100ms. It's no problem. Change-Id: I7f291e06247716a556a0bf8fa4e4293511beec59 Signed-off-by: kibak.yoon --- src/sensorctl/testcase/unit_ipc.cpp | 47 +++++++++++++++++----------------- src/sensorctl/testcase/unit_socket.cpp | 6 ++--- src/server/main.cpp | 2 +- 3 files changed, 28 insertions(+), 27 deletions(-) diff --git a/src/sensorctl/testcase/unit_ipc.cpp b/src/sensorctl/testcase/unit_ipc.cpp index 4528562..d820707 100644 --- a/src/sensorctl/testcase/unit_ipc.cpp +++ b/src/sensorctl/testcase/unit_ipc.cpp @@ -33,6 +33,7 @@ using namespace ipc; #define MAX_BUF_SIZE 4096 #define TEST_PATH "/run/.sensord_test.socket" +#define SLEEP_1S sleep(1) typedef bool (*process_func_t)(const char *msg, int size, int count); @@ -115,11 +116,11 @@ static bool run_ipc_client_sleep_10s(const char *str, int size, int count) msg.enclose(buf, MAX_BUF_SIZE); - usleep(10000); + SLEEP_1S; ch->send_sync(&msg); /* Test */ - sleep(1); + SLEEP_1S; ch->read_sync(reply); reply.disclose(buf); @@ -150,7 +151,7 @@ static bool run_ipc_client_small_buffer(const char *str, int size, int count) msg.enclose(buf, MAX_BUF_SIZE); - usleep(10000); + SLEEP_1S; int buf_size; ch->get_option(SO_RCVBUF, buf_size); @@ -193,7 +194,7 @@ static bool run_ipc_client_1M(const char *str, int size, int count) msg.enclose(buf, MAX_BUF_SIZE); - usleep(10000); + SLEEP_1S; for (int i = 0; i < 256; ++i) { ch->send_sync(&msg); @@ -278,7 +279,7 @@ static bool run_ipc_client_2_channel_message(const char *str, int size, int coun msg.enclose("TESTTESTTEST", 12); ch[0]->send_sync(&msg); - usleep(100000); + SLEEP_1S; ch[0]->read_sync(reply); reply.disclose(buf); ret = strncmp(buf, "TEXTTEXTTEXTTEXT", 16); @@ -289,7 +290,7 @@ static bool run_ipc_client_2_channel_message(const char *str, int size, int coun msg.enclose("TESTTESTTEST", 12); ch[1]->send_sync(&msg); - usleep(100000); + SLEEP_1S; ch[1]->read_sync(reply); reply.disclose(buf); ret = strncmp(buf, "TEXTTEXTTEXTTEXT", 16); @@ -339,7 +340,7 @@ static bool run_ipc_client(const char *str, int size, int count) msg.enclose("TESTTESTTEST", 12); ch->send_sync(&msg); - usleep(100000); + SLEEP_1S; ch->read_sync(reply); reply.disclose(buf); @@ -361,7 +362,7 @@ TESTCASE(sensor_ipc_client_sleep_1s, sleep_1s_p) pid_t pid = run_process(run_ipc_server_echo, NULL, 0, 0); EXPECT_GE(pid, 0); - usleep(100000); + SLEEP_1S; for (int i = 0; i < 3; ++i) { pid = run_process(run_ipc_client_1M, NULL, 0, 0); @@ -371,7 +372,7 @@ TESTCASE(sensor_ipc_client_sleep_1s, sleep_1s_p) bool ret = run_ipc_client_sleep_10s(NULL, 0, 0); ASSERT_TRUE(ret); - usleep(100000); + SLEEP_1S; return true; } @@ -384,7 +385,7 @@ TESTCASE(sensor_ipc_client_small_2240, ipc_client_small_2240_p) pid_t pid = run_process(run_ipc_server_echo, NULL, 0, 0); EXPECT_GE(pid, 0); - usleep(100000); + SLEEP_1S; for (int i = 0; i < 3; ++i) { pid = run_process(run_ipc_client_1M, NULL, 0, 0); @@ -394,7 +395,7 @@ TESTCASE(sensor_ipc_client_small_2240, ipc_client_small_2240_p) bool ret = run_ipc_client_small_buffer(NULL, 0, 0); ASSERT_TRUE(ret); - usleep(100000); + SLEEP_1S; return true; } @@ -407,7 +408,7 @@ TESTCASE(sensor_ipc_30_client_1M, ipc_client_p_30_1M) pid_t pid = run_process(run_ipc_server_echo, NULL, 0, 0); EXPECT_GE(pid, 0); - usleep(100000); + SLEEP_1S; for (int i = 0; i < 30; ++i) { pid = run_process(run_ipc_client_1M, NULL, 0, 0); @@ -417,7 +418,7 @@ TESTCASE(sensor_ipc_30_client_1M, ipc_client_p_30_1M) bool ret = run_ipc_client_1M(NULL, 0, 0); ASSERT_TRUE(ret); - usleep(100000); + SLEEP_1S; return true; } @@ -430,12 +431,12 @@ TESTCASE(sensor_ipc_client_2_channel_message, 2_channel_message_p) pid_t pid = run_process(run_ipc_server, NULL, 0, 0); EXPECT_GE(pid, 0); - usleep(100000); + SLEEP_1S; bool ret = run_ipc_client_2_channel_message(NULL, 0, 0); ASSERT_TRUE(ret); - usleep(100000); + SLEEP_1S; return true; } @@ -448,12 +449,12 @@ TESTCASE(sensor_ipc_client_2_channel, 2_channel_p) pid_t pid = run_process(run_ipc_server, NULL, 0, 0); EXPECT_GE(pid, 0); - usleep(100000); + SLEEP_1S; bool ret = run_ipc_client_2_channel(NULL, 0, 0); ASSERT_TRUE(ret); - usleep(100000); + SLEEP_1S; return true; } @@ -466,7 +467,7 @@ TESTCASE(sensor_ipc_100_client, ipc_client_p_100) pid_t pid = run_process(run_ipc_server, NULL, 0, 0); EXPECT_GE(pid, 0); - usleep(100000); + SLEEP_1S; for (int i = 0; i < 99; ++i) { pid = run_process(run_ipc_client, NULL, 0, 0); @@ -476,7 +477,7 @@ TESTCASE(sensor_ipc_100_client, ipc_client_p_100) bool ret = run_ipc_client(NULL, 0, 0); ASSERT_TRUE(ret); - usleep(100000); + SLEEP_1S; return true; } @@ -489,7 +490,7 @@ TESTCASE(sensor_ipc_2_client, ipc_client_p_2) pid_t pid = run_process(run_ipc_server, NULL, 0, 0); EXPECT_GE(pid, 0); - usleep(100000); + SLEEP_1S; pid = run_process(run_ipc_client, NULL, 0, 0); EXPECT_GE(pid, 0); @@ -497,7 +498,7 @@ TESTCASE(sensor_ipc_2_client, ipc_client_p_2) bool ret = run_ipc_client(NULL, 0, 0); ASSERT_TRUE(ret); - usleep(100000); + SLEEP_1S; return true; } @@ -513,12 +514,12 @@ TESTCASE(sensor_ipc_client_0, ipc_client_p_0) pid_t pid = run_process(run_ipc_server, NULL, 0, 0); EXPECT_GE(pid, 0); - usleep(100000); + SLEEP_1S; bool ret = run_ipc_client(NULL, 0, 0); ASSERT_TRUE(ret); - usleep(100000); + SLEEP_1S; return true; } diff --git a/src/sensorctl/testcase/unit_socket.cpp b/src/sensorctl/testcase/unit_socket.cpp index 2cb240f..261976f 100644 --- a/src/sensorctl/testcase/unit_socket.cpp +++ b/src/sensorctl/testcase/unit_socket.cpp @@ -76,7 +76,7 @@ static bool run_socket_echo_server(const char *msg, int size, int count) } ASSERT_EQ(total_recv_size, (size * count)); - usleep(10000); + sleep(1); /* echo message */ while (send_count++ < count) { send_size = client_sock.send(buf, size); @@ -105,7 +105,7 @@ static bool run_socket_client(const char *msg, int size, int count) int total_send_size = 0; stream_socket sock; - usleep(100000); + sleep(1); sock.create(TEST_PATH); sock.set_blocking_mode(true); @@ -197,4 +197,4 @@ TESTCASE(sensor_ipc_socket, socket_p_1000) ASSERT_TRUE(ret); return true; -} \ No newline at end of file +} diff --git a/src/server/main.cpp b/src/server/main.cpp index 90b6cf4..633630a 100644 --- a/src/server/main.cpp +++ b/src/server/main.cpp @@ -46,7 +46,7 @@ static void on_new_failed(void) return; } - usleep(100000); + sleep(1); } int main(int argc, char *argv[]) -- 2.7.4 From 86712a3de5b433121bdc457929015746b47d90d8 Mon Sep 17 00:00:00 2001 From: "kibak.yoon" Date: Thu, 20 Apr 2017 12:56:49 +0900 Subject: [PATCH 14/16] sensord: sleep 100ms instead of a very short time Change-Id: Ib6432a072cb59bf03803915c497916695993a340 Signed-off-by: kibak.yoon --- src/shared/stream_socket.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/shared/stream_socket.cpp b/src/shared/stream_socket.cpp index cdf8ccc..0191f05 100644 --- a/src/shared/stream_socket.cpp +++ b/src/shared/stream_socket.cpp @@ -24,6 +24,8 @@ #include "sensor_log.h" +#define SLEEP_100_MS usleep(100000) + using namespace ipc; stream_socket::stream_socket() @@ -52,7 +54,7 @@ ssize_t stream_socket::on_send(const void *buffer, size_t size) const if (len < 0) { if ((errno == EINTR) || (errno == EAGAIN) || (errno == EWOULDBLOCK)) { - usleep(1); + SLEEP_100_MS; continue; } @@ -86,7 +88,7 @@ ssize_t stream_socket::on_recv(void *buffer, size_t size) const if (len < 0) { if ((errno == EINTR) || (errno == EAGAIN) || (errno == EWOULDBLOCK)) { - usleep(10000); + SLEEP_100_MS; continue; } -- 2.7.4 From 386ea83b88820e27d112cfa315322a9342b63d2e Mon Sep 17 00:00:00 2001 From: "kibak.yoon" Date: Thu, 20 Apr 2017 12:58:44 +0900 Subject: [PATCH 15/16] sensord: initialize cynara conf pointer to NULL Change-Id: Ie80f3ad0053001424472bb03521450cebf5a6f92 Signed-off-by: kibak.yoon --- src/server/permission_checker.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/server/permission_checker.cpp b/src/server/permission_checker.cpp index 05ead10..bbb1ad2 100644 --- a/src/server/permission_checker.cpp +++ b/src/server/permission_checker.cpp @@ -45,7 +45,7 @@ permission_checker::~permission_checker() void permission_checker::init_cynara(void) { int err; - cynara_configuration *conf; + cynara_configuration *conf = NULL; err = cynara_configuration_create(&conf); retm_if(err != CYNARA_API_SUCCESS, "Failed to create cynara configuration"); -- 2.7.4 From 072b5143699ac00788f8ea1583d8523cb1049ab5 Mon Sep 17 00:00:00 2001 From: "kibak.yoon" Date: Thu, 20 Apr 2017 14:34:31 +0900 Subject: [PATCH 16/16] sensord: remove sleep() in new failed handler Change-Id: I74714fe67becd945d95e869f5de96241ebe3325e Signed-off-by: kibak.yoon --- src/server/main.cpp | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/server/main.cpp b/src/server/main.cpp index 633630a..8bb6cf3 100644 --- a/src/server/main.cpp +++ b/src/server/main.cpp @@ -17,7 +17,6 @@ * */ -#include #include #include #include @@ -45,8 +44,6 @@ static void on_new_failed(void) raise(SIGTERM); return; } - - sleep(1); } int main(int argc, char *argv[]) -- 2.7.4