sensord: reduce sensor logs which is printed when event is occurred 49/65949/3
authorkibak.yoon <kibak.yoon@samsung.com>
Tue, 12 Apr 2016 15:35:55 +0000 (00:35 +0900)
committerkibak.yoon <kibak.yoon@samsung.com>
Thu, 14 Apr 2016 08:32:35 +0000 (17:32 +0900)
- there are so many logs when event is occurred.
  so it is changed that the almost of event(like on_continuous event) is logged
  once per 25.
  if it is on_changed event, it is logged every event.
- removed the useless codes anymore in client_common.h

Change-Id: I403fe0c6efab8073a5380aab18c37fd10b83b503
Signed-off-by: kibak.yoon <kibak.yoon@samsung.com>
src/client/client_common.cpp
src/client/client_common.h
src/client/sensor_event_listener.cpp
src/server/sensor_event_dispatcher.cpp
src/shared/sensor_deprecated.h

index 8d96a0b..ce0eab2 100644 (file)
 #include <sys/types.h>
 #include <unistd.h>
 #include <stdlib.h>
+#include <sensor_types.h>
+#include <string>
 #include <map>
 
-typedef std::map<sensor_type_t, log_attr> sensor_type_map;
-static sensor_type_map g_log_maps = {
-       {UNKNOWN_SENSOR, {"UNKNOWN", "UNKNOWN_EVENT"}},
-       {ACCELEROMETER_SENSOR, {"ACCELEROMETER", "ACCELEROMETER_RAW_DATA_EVENT"}},
-       {GRAVITY_SENSOR, {"GRAVITY", "GRAVITY_RAW_DATA_EVENT"}},
-       {LINEAR_ACCEL_SENSOR, {"LINEAR_ACCEL", "LINEAR_ACCEL_RAW_DATA_EVENT"}},
-       {GEOMAGNETIC_SENSOR, {"GEOMAGNETIC SENSOR", "GEOMAGNETIC SENSOR_RAW_DATA_EVENT"}},
-       {ROTATION_VECTOR_SENSOR, {"ROTATION VECTOR", "ROTATION VECTOR_RAW_DATA_EVENT"}},
-       {ORIENTATION_SENSOR, {"ORIENTATION", "ORIENTATION_RAW_DATA_EVENT"}},
-       {GYROSCOPE_SENSOR, {"GYROSCOPE", "GYROSCOPE_RAW_DATA_EVENT"}},
-       {LIGHT_SENSOR, {"LIGHT", "LIGHT_RAW_DATA_EVENT"}},
-       {PROXIMITY_SENSOR, {"PROXIMITY", "PROXIMITY_RAW_DATA_EVENT"}},
-       {PRESSURE_SENSOR, {"PRESSURE", "PRESSURE_RAW_DATA_EVENT"}},
-       {ULTRAVIOLET_SENSOR, {"ULTRAVIOLET", "ULTRAVIOLET_RAW_DATA_EVENT"}},
-       {TEMPERATURE_SENSOR, {"TEMPERATURE", "TEMPERATURE_RAW_DATA_EVENT"}},
-       {HUMIDITY_SENSOR, {"HUMIDITY", "HUMIDITY_RAW_DATA_EVENT"}},
-       {BIO_HRM_SENSOR, {"BIO_HRM", "BIO_HRM_RAW_DATA_EVENT"}},
-       {BIO_LED_GREEN_SENSOR, {"BIO_LED_GREEN", "BIO_LED_GREEN_RAW_DATA_EVENT"}},
-       {BIO_LED_IR_SENSOR, {"BIO_LED_IR", "BIO_LED_IR_RAW_DATA_EVENT"}},
-       {BIO_LED_RED_SENSOR, {"BIO_LED_RED", "BIO_LED_RED_RAW_DATA_EVENT"}},
-       {GYROSCOPE_UNCAL_SENSOR, {"GYROSCOPE_UNCAL", "GYROSCOPE_UNCAL_RAW_DATA_EVENT"}},
-       {GEOMAGNETIC_UNCAL_SENSOR, {"GEOMAGNETIC_UNCAL", "GEOMAGNETIC_UNCAL_RAW_DATA_EVENT"}},
-       {GYROSCOPE_RV_SENSOR, {"GYROSCOPE_RV", "GYROSCOPE_RV_RAW_DATA_EVENT"}},
-       {GEOMAGNETIC_RV_SENSOR, {"GEOMAGNETIC_RV", "GEOMAGNETIC_RV_RAW_DATA_EVENT"}},
-       {CONTEXT_SENSOR, {"CONTEXT", "CONTEXT_RAW_DATA_EVENT"}},
-       {EXERCISE_SENSOR, {"EXERCISE", "EXERCISE_RAW_DATA_EVENT"}},
-       {HUMAN_PEDOMETER_SENSOR, {"HUMAN_PEDOMETER", "HUMAN_PEDOMETER_EVENT_CHANGE_STATE"}},
-       {HUMAN_SLEEP_MONITOR_SENSOR, {"HUMAN_SLEEP_MONITOR", "HUMAN_SLEEP_MONITOR_EVENT"}},
-       {AUTO_ROTATION_SENSOR, {"AUTO_ROTATION", "AUTO_ROTATION_EVENT_CHANGE_STATE"}},
-       {GESTURE_MOVEMENT_SENSOR, {"GESTURE_MOVEMENT", "GESTURE_MOVEMENT_EVENT_CHANGE_STATE"}},
-       {GESTURE_WRIST_UP_SENSOR, {"GESTURE_WRIST_UP", "GESTURE_WRIST_UP_EVENT_CHANGE_STATE"}},
-       {GESTURE_WRIST_DOWN_SENSOR, {"GESTURE_WRIST_DOWN", "GESTURE_WRIST_DOWN_EVENT_CHANGE_STATE"}},
-       {GESTURE_MOVEMENT_STATE_SENSOR, {"GESTURE_MOVEMENT_STATE", "GESTURE_MOVEMENT_STATE_EVENT"}},
-
-       {WEAR_STATUS_SENSOR, {"WEAR_STATUS", "WEAR_STATUS_EVENT_CHANGE_STATE"}},
-       {WEAR_ON_MONITOR_SENSOR, {"WEAR_ON_MONITOR", "WEAR_ON_EVENT_CHANGE_STATE"}},
-       {GPS_BATCH_SENSOR, {"GPS_BATCH", "GPS_BATCH_EVENT_CHANGE_STATE"}},
-       {ACTIVITY_TRACKER_SENSOR, {"ACTIVITY_TRACKER", "ACTIVITY_TRACKER_EVENT_CHANGE_STATE"}},
-       {SLEEP_DETECTOR_SENSOR, {"SLEEP_DETECTOR", "SLEEP_DETECTOR_EVENT_CHANGE_STATE"}},
-};
-
-const char* get_sensor_name(sensor_id_t sensor_id)
-{
-       const char* p_unknown = "UNKNOWN";
-       sensor_type_t sensor_type = (sensor_type_t) (sensor_id >> SENSOR_TYPE_SHIFT);
+#define LOG_PER_COUNT_EVERY_EVENT 1
+#define LOG_PER_COUNT_MAX 25
 
-       auto iter = g_log_maps.find(sensor_type);
+static std::map<sensor_id_t, unsigned int> sensor_log_count;
 
-       if (iter == g_log_maps.end()) {
-               _I("Unknown type value: %#x", sensor_type);
-               return p_unknown;
-       }
+const char* get_sensor_name(sensor_id_t id)
+{
+       sensor_type_t type = (sensor_type_t) (id >> SENSOR_TYPE_SHIFT);
 
-       return iter->second.sensor_name;
+       return util_sensor_type_t::get_string(type);
 }
 
 const char* get_event_name(unsigned int event_type)
 {
-       const char* p_unknown = "UNKNOWN";
-       sensor_type_t sensor_type = (sensor_type_t) (event_type >> EVENT_TYPE_SHIFT);
-
-       auto iter = g_log_maps.find(sensor_type);
-
-       if (iter == g_log_maps.end()) {
-               _I("Unknown type value: %#x", sensor_type);
-               return p_unknown;
-       }
-
-       return iter->second.event_name;
-}
+       sensor_type_t type = (sensor_type_t) (event_type >> EVENT_TYPE_SHIFT);
+       std::string name(util_sensor_type_t::get_string(type));
 
-bool is_one_shot_event(unsigned int event_type)
-{
-       return false;
+       return name.append("_EVENT").c_str();
 }
 
-bool is_ontime_event(unsigned int event_type)
+unsigned int get_calibration_event_type(unsigned int event_type)
 {
-       switch (event_type ) {
-       case ACCELEROMETER_RAW_DATA_EVENT:
-       case PROXIMITY_STATE_EVENT:
-       case GYROSCOPE_RAW_DATA_EVENT:
-       case LIGHT_LEVEL_DATA_EVENT:
-       case GEOMAGNETIC_RAW_DATA_EVENT:
-       case LIGHT_LUX_DATA_EVENT:
-       case PROXIMITY_DISTANCE_DATA_EVENT:
-       case GRAVITY_RAW_DATA_EVENT:
-       case LINEAR_ACCEL_RAW_DATA_EVENT:
-       case ORIENTATION_RAW_DATA_EVENT:
-       case PRESSURE_RAW_DATA_EVENT:
-               return true;
-               break;
+       sensor_type_t type = (sensor_type_t)(event_type >> EVENT_TYPE_SHIFT);
+
+       switch (type) {
+       case GEOMAGNETIC_SENSOR:
+       case ROTATION_VECTOR_SENSOR:
+       case RV_RAW_SENSOR:
+       case ORIENTATION_SENSOR:
+               return CALIBRATION_EVENT(type);
+       default:
+               return 0;
        }
-
-       return false;
 }
 
-bool is_panning_event(unsigned int event_type)
+unsigned int get_log_per_count(sensor_id_t id)
 {
-       return false;
-}
-
-bool is_single_state_event(unsigned int event_type)
-{
-       switch (event_type) {
-       case LIGHT_CHANGE_LEVEL_EVENT:
-       case PROXIMITY_CHANGE_STATE_EVENT:
-       case AUTO_ROTATION_CHANGE_STATE_EVENT:
-               return true;
+       sensor_type_t type = (sensor_type_t)(id >> SENSOR_TYPE_SHIFT);
+
+       switch (type) {
+       /* on_changed_event type sensors */
+       case PROXIMITY_SENSOR:
+       case GESTURE_WRIST_UP_SENSOR:
+       case GESTURE_WRIST_DOWN_SENSOR:
+       case GESTURE_MOVEMENT_SENSOR:
+       case WEAR_STATUS_SENSOR:
+               return LOG_PER_COUNT_EVERY_EVENT;
+       default:
                break;
        }
-
-       return false;
+       return LOG_PER_COUNT_MAX;
 }
 
-unsigned int get_calibration_event_type(unsigned int event_type)
+void print_event_occurrence_log(sensor_handle_info &info)
 {
-       sensor_type_t sensor;
+       unsigned int count;
+       unsigned int log_per_count;
 
-       sensor = (sensor_type_t)(event_type >> EVENT_TYPE_SHIFT);
+       auto it_count = sensor_log_count.find(info.m_sensor_id);
+       if (it_count == sensor_log_count.end())
+               sensor_log_count[info.m_sensor_id] = 0;
 
-       switch (sensor) {
-       default:
-               return 0;
-       }
-}
+       count = ++sensor_log_count[info.m_sensor_id];
+       log_per_count = get_log_per_count(info.m_sensor_id);
 
-unsigned long long get_timestamp(void)
-{
-       struct timespec t;
-       clock_gettime(CLOCK_MONOTONIC, &t);
-       return ((unsigned long long)(t.tv_sec)*1000000000LL + t.tv_nsec) / 1000;
-}
+       if ((count != 1) && (count % log_per_count != 0))
+               return;
 
-void print_event_occurrence_log(sensor_handle_info &sensor_handle_info, const reg_event_info *event_info)
-{
-       _D("%s receives %s[%d]", get_client_name(),
-                       get_sensor_name(sensor_handle_info.m_sensor_id), sensor_handle_info.m_handle);
+       _D("%s receives %s[%d][state: %d, option: %d, count: %d]", get_client_name(),
+                       get_sensor_name(info.m_sensor_id), info.m_handle,
+                       info.m_sensor_state, info.m_sensor_option, count);
 }
 
 /*
index ff6eb2c..3d68883 100644 (file)
 
 #define BASE_GATHERING_INTERVAL        100
 
-#define CLIENT_NAME_SIZE NAME_MAX+10
+const char *get_sensor_name(sensor_id_t sensor_id);
+const char *get_event_name(unsigned int event_type);
 
-struct log_attr {
-       const char *sensor_name;
-       const char *event_name;
-};
-
-bool is_one_shot_event(unsigned int event_type);
-bool is_ontime_event(unsigned int event_type);
-bool is_panning_event(unsigned int event_type);
-bool is_single_state_event(unsigned int event_type);
 unsigned int get_calibration_event_type(unsigned int event_type);
-unsigned long long get_timestamp(void);
+unsigned int get_log_per_count(sensor_id_t id);
 
-const char* get_sensor_name(sensor_id_t sensor_id);
-const char* get_event_name(unsigned int event_type);
-void print_event_occurrence_log(sensor_handle_info &sensor_handle_info, const reg_event_info *event_info);
+void print_event_occurrence_log(sensor_handle_info &sensor_handle_info);
 
 class sensor_info;
 sensor_info *sensor_to_sensor_info(sensor_t sensor);
index 46ea3e8..63e51d9 100644 (file)
@@ -126,7 +126,7 @@ client_callback_info* sensor_event_listener::handle_calibration_cb(sensor_handle
 
                m_client_info.set_bad_accuracy(handle_info.m_handle, true);
 
-               print_event_occurrence_log(handle_info, cal_event_info);
+               print_event_occurrence_log(handle_info);
        }
 
        if ((accuracy != SENSOR_ACCURACY_BAD) && handle_info.m_bad_accuracy)
@@ -196,10 +196,7 @@ void sensor_event_listener::handle_events(void* event)
 
                        client_callback_infos.push_back(callback_info);
 
-                       if (is_one_shot_event(event_type))
-                               event_info->m_fired = true;
-
-                       print_event_occurrence_log(sensor_handle_info, event_info);
+                       print_event_occurrence_log(sensor_handle_info);
                }
        }
 
index c1c401a..52c65d9 100644 (file)
@@ -168,9 +168,7 @@ void sensor_event_dispatcher::send_sensor_events(vector<void *> &events)
 
                        ret = (ret & (client_socket.send(sensor_event->data, sensor_event->data_length) > 0));
 
-                       if (ret)
-                               _D("Event[%#x] sent to %s on socket[%d]", event_type, client_info_manager.get_client_info(*it_client_id), client_socket.get_socket_fd());
-                       else
+                       if (!ret)
                                _E("Failed to send event[%#x] to %s on socket[%d]", event_type, client_info_manager.get_client_info(*it_client_id), client_socket.get_socket_fd());
 
                        ++it_client_id;
index 41b7945..a9481a5 100644 (file)
@@ -25,6 +25,8 @@ extern "C"
 {
 #endif
 
+#define CALIBRATION_EVENT(sensor_type) (((sensor_type) << 16) | 0x2)
+
 #define ACCELEROMETER_EVENT_ROTATION_CHECK ((ACCELEROMETER_SENSOR << 16) | 0x0100)
 
 #define ACCELEROMETER_ORIENTATION_DATA_SET (ACCELEROMETER_SENSOR << 16) | 0x0002