From: kibak.yoon Date: Wed, 14 Jun 2017 10:13:14 +0000 (+0900) Subject: sensord: send accuracy changed event to listeners X-Git-Tag: accepted/tizen/unified/20170615.020741^2~1 X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fsystem%2Fsensord.git;a=commitdiff_plain;h=refs%2Fchanges%2F63%2F134063%2F3 sensord: send accuracy changed event to listeners Change-Id: Idfcf4217ef2694578857c032e60ad55950198452 Signed-off-by: kibak.yoon --- diff --git a/src/server/sensor_listener_proxy.cpp b/src/server/sensor_listener_proxy.cpp index 7c20c90..51b38a9 100644 --- a/src/server/sensor_listener_proxy.cpp +++ b/src/server/sensor_listener_proxy.cpp @@ -38,6 +38,7 @@ sensor_listener_proxy::sensor_listener_proxy(uint32_t id, , m_passive(false) , m_pause_policy(SENSORD_PAUSE_ALL) , m_axis_orientation(SENSORD_AXIS_DISPLAY_ORIENTED) +, m_last_accuracy(SENSOR_ACCURACY_UNDEFINED) { } @@ -55,13 +56,41 @@ int sensor_listener_proxy::update(const char *uri, ipc::message *msg) { retv_if(!m_ch || !m_ch->is_connected(), OP_CONTINUE); + update_event(msg); + update_accuracy(msg); + + return OP_CONTINUE; +} + +void sensor_listener_proxy::update_event(ipc::message *msg) +{ /* TODO: check axis orientation */ msg->header()->type = CMD_LISTENER_EVENT; msg->header()->err = OP_SUCCESS; m_ch->send(msg); +} - return OP_CONTINUE; +void sensor_listener_proxy::update_accuracy(ipc::message *msg) +{ + sensor_data_t *data = reinterpret_cast(msg->body()); + + if (data->accuracy == m_last_accuracy) + return; + + m_last_accuracy = data->accuracy; + + sensor_data_t acc_data; + acc_data.accuracy = m_last_accuracy; + + ipc::message *acc_msg = new(std::nothrow) ipc::message(); + retm_if(!acc_msg, "Failed to allocate memory"); + + acc_msg->header()->type = CMD_LISTENER_ACC_EVENT; + acc_msg->header()->err = OP_SUCCESS; + acc_msg->enclose(&acc_data, sizeof(acc_data)); + + m_ch->send(acc_msg); } int sensor_listener_proxy::start(void) diff --git a/src/server/sensor_listener_proxy.h b/src/server/sensor_listener_proxy.h index 05bc453..30e3976 100644 --- a/src/server/sensor_listener_proxy.h +++ b/src/server/sensor_listener_proxy.h @@ -52,6 +52,9 @@ public: std::string get_required_privileges(void); private: + void update_event(ipc::message *msg); + void update_accuracy(ipc::message *msg); + uint32_t m_id; std::string m_uri; @@ -61,6 +64,7 @@ private: bool m_passive; int m_pause_policy; int m_axis_orientation; + int m_last_accuracy; }; }