[screen reader] Code refactoring: screen reader system 31/238231/13
authorBartlomiej Grzelewski <b.grzelewski@samsung.com>
Thu, 9 Jul 2020 14:14:04 +0000 (16:14 +0200)
committerBartlomiej Grzelewski <b.grzelewski@samsung.com>
Tue, 14 Jul 2020 09:27:32 +0000 (11:27 +0200)
* reduce number of global values inside screen reader system

Change-Id: I4ae595311daaf6cfad21559fe267d3d8542f27fd

include/navigator.h
include/screen_reader.h
include/screen_reader_system.h
src/main.c
src/navigator.c
src/screen_reader.c
src/screen_reader_system.c
src/screen_reader_tts.c

index 2b01b7ccd18df628f7c10a023192cbcf96d9cd1b..721686403ba8bf1065b483e56711cd5a0e590eb5 100644 (file)
@@ -50,6 +50,13 @@ void navigator_reading_material_free(AtspiAccessibleReadingMaterial *rm);
 
 void sound_n_vibration_feedback_generate(AtspiAccessible *obj);
 
+/**
+ * @brief Function used to remove dependencies from system module.
+ */
+typedef void(*read_quickpanel_cb_t)(void*);
+void navigator_set_read_quickpanel_cb(Navigator_Data *nd, read_quickpanel_cb_t callback, void *user_data);
+void* navigator_remove_read_quickpanel_cb(Navigator_Data *nd);
+
 /* This is required by app_tracker */
 FlatNaviContext* navigator_get_flat_navi_context(Navigator_Data *nd);
 
index e1f5d63e6b7655bff0d1ac4d98fa3de1b8f6799d..8500b8ee1fa21c0f6f2d3240986a7382d0d72808 100644 (file)
@@ -28,10 +28,13 @@ typedef enum {
 
 typedef struct _Navigator_Data Navigator_Data;
 typedef struct _Reading_Adapter_Data Reading_Adapter_Data;
+typedef struct _System_Data System_Data;
 
-typedef struct _Service_Data {
+typedef struct _Service_Data
+{
        Navigator_Data *navigator_data;
        Reading_Adapter_Data *reading_adapter_data;
+       System_Data *system_data;
 
        //Set by vconf
        bool run_service;
@@ -65,17 +68,13 @@ typedef struct _Service_Data {
        char **last_tokens;
        char *available_requests;
        char **available_apps;
-
-       //Set by system
-       bool display_locked;
-
 } Service_Data;
 
 Service_Data *get_pointer_to_service_data_struct(void);
 
-int screen_reader_create_service(void *data);
+int screen_reader_create_service(Service_Data *data);
 
-int screen_reader_terminate_service(void *data);
+int screen_reader_terminate_service(Service_Data *data);
 
 void screen_reader_ui_launch(const char *type_name);
 
index a1cd045fc17350d2e8721e764da07f1635a88299..bd59ad5d489d51e530199805df53e50b067a88ed 100644 (file)
@@ -3,60 +3,38 @@
 
 #ifndef SCREEN_READER_TV
 
+typedef struct _System_Data System_Data;
+
 /**
  * @brief Initializes smart notification system
  *
  * @note Adds callbacks for battery level, battery charging and display state, initializes bluetooth and wifi
  */
-void system_notifications_init(void);
+System_Data *system_notifications_init(void);
 
 /*
  * @brief Deactivates smart notification system
  *
  * @note Deinitializes bluetooth and wifi, removes callbacks for battery level, battery charging and display state
  */
-void system_notifications_shutdown(void);
-
-/*
- * @brief Sends actual time to TTS system
- */
-void device_time_get(void);
-
-/*
- * @brief Sends battery status to TTS system
- */
-void device_battery_get(void);
-
-/*
- * @brief Sends cellular and wifi signal strength status to TTS system
- */
-void device_signal_strenght_get(void);
+void system_notifications_shutdown(System_Data *system_data);
 
 /*
- * @brief Sends to TTS system information about number of missed events
- */
-void device_missed_events_get(void);
-
-/*
- * @brief Sends actual date to TTS system
- */
-void device_date_get(void);
-
-/*
- * @brief Sends to TTS system information if bluetooth is switched on and about number of connected devices
+ * @brief Requests display lock to device manager
  */
-void device_bluetooth_get(void);
+void device_display_lock_request(System_Data *system_data);
 
 /*
- * @brief Requests display lock to device manager
+ * @brief Releases display lock
  */
-void device_display_lock_request(void);
+void device_display_lock_release(System_Data *system_data);
 
 /*
- * @brief Releases display lock
+ * @brief Sends actual time, battery status, celluar and wifi signal strength,
+ * system information about number of missed events, actual date to TTS system.
  */
-void device_display_lock_release(void);
+void system_status_get(void *system_data);
 
 #endif //SCREEN_READER_TV
 
-#endif //SCREEN_READER_SYSTEM_H_
+#endif // _SCREEN_READER_SYSTEM_H_
index f353daaf5d64e4831bb3d967958e0f44c9ce98e3..37a20c5bf6528f7197bb4f123d5e8315fe0baa25 100644 (file)
@@ -31,6 +31,7 @@
 #include "logger.h"
 #include "screen_reader.h"
 #include "screen_reader_switch.h"
+#include <screen_reader_system.h>
 #include "dbus_direct_reading_adapter.h"
 #include "screen_reader_tts.h"
 
@@ -210,11 +211,11 @@ void set_signal_handler()
 
 static int app_create(void *data)
 {
-       Service_Data *sd UNUSED = get_pointer_to_service_data_struct();
+       Service_Data *sd = (Service_Data*)data;
 
        elm_init(0, NULL);
        atspi_init();
-       screen_reader_create_service(data);
+       screen_reader_create_service(sd);
        DEBUG("[START] init direct reading");
        sd->reading_adapter_data = dbus_direct_reading_init();
        if (!sd->reading_adapter_data) {
@@ -229,6 +230,9 @@ static int app_create(void *data)
                return -1;
        }
 
+       sd->system_data = system_notifications_init();
+       navigator_set_read_quickpanel_cb(sd->navigator_data, system_status_get, sd->system_data);
+
        keyboard_tracker_init();
        granularity_read_init();
 #endif
@@ -240,7 +244,7 @@ static int app_create(void *data)
 
 static int app_terminate(void *data)
 {
-       Service_Data *sd UNUSED = get_pointer_to_service_data_struct();
+       Service_Data *sd = (Service_Data*)data;
 
        DEBUG("screen reader terminating");
        screen_reader_switch_wm_enabled_set(EINA_FALSE);
@@ -253,6 +257,9 @@ static int app_terminate(void *data)
        granularity_read_terminate();
        DEBUG("terminate keyboard tracker");
        keyboard_tracker_shutdown();
+       DEBUG("terminate system_notifications");
+       navigator_remove_read_quickpanel_cb(sd->navigator_data);
+       system_notifications_shutdown(sd->system_data);
        DEBUG("terminate navigator");
        navigator_shutdown(sd->navigator_data);
        DEBUG("terminate gestures");
@@ -260,7 +267,7 @@ static int app_terminate(void *data)
        DEBUG("terminate direct reading");
        dbus_direct_reading_shutdown(sd->reading_adapter_data);
        DEBUG("terminate service");
-       screen_reader_terminate_service(data);
+       screen_reader_terminate_service(sd);
        DEBUG("libatspi terminated");
        atspi_exit();
        elm_exit();
index 662f729de2115852299fedf70c9f5e5bf2aa6dc8..7c06171ab77c265daf99f9cb96673b4355bed4ed 100644 (file)
@@ -33,7 +33,6 @@
 #include "app_tracker.h"
 #include "smart_notification.h"
 #include "screen_reader.h"
-#include "screen_reader_system.h"
 #include "screen_reader_haptic.h"
 #include "screen_reader_tts.h"
 #include "granularity_read.h"
@@ -98,6 +97,8 @@ struct _Navigator_Data {
        Eina_Bool ignore_keyboard_feedback;
        FlatNaviContext *flat_navi_context;
        char *supported_gestures;
+       void (*read_quickpanel_cb)(void*);
+       void *read_quickpanel_data;
 };
 
 static Eldbus_Connection *connection = NULL;
@@ -2257,19 +2258,15 @@ static void _widget_scroll(Navigator_Data *nd, Gesture_Info *gi)
 */
 
 #ifndef SCREEN_READER_TV
-static void _read_quickpanel(void)
-{
+static void _read_quickpanel(Navigator_Data *nd) {
        DEBUG("START");
 
-       device_time_get();
-       device_battery_get();
-       device_bluetooth_get();
-       device_signal_strenght_get();
+       if (nd->read_quickpanel_cb)
+               nd->read_quickpanel_cb(nd->read_quickpanel_data);
 
-       device_date_get();
-       device_missed_events_get();
        if (sound_feedback)
                smart_notification(CONTEXTUAL_MENU_NOTIFICATION_EVENT, 0, 0);
+
        DEBUG("END");
 }
 #endif
@@ -3111,7 +3108,7 @@ static void on_gesture_detected(void *data, const Eldbus_Message *msg)
                break;
        case TWO_FINGERS_TRIPLE_TAP:
 #ifndef SCREEN_READER_TV
-               _read_quickpanel();
+               _read_quickpanel(nd);
 #endif
                break;
        case TWO_FINGERS_FLICK_LEFT:
@@ -3401,6 +3398,8 @@ Navigator_Data *navigator_init()
        nd->ignore_keyboard_feedback = EINA_FALSE;
        nd->flat_navi_context = NULL;
        nd->supported_gestures = NULL;
+       nd->read_quickpanel_cb = NULL;
+       nd->read_quickpanel_data = NULL;
 
        set_utterance_cb(_on_utterance, nd);
 
@@ -3411,7 +3410,6 @@ Navigator_Data *navigator_init()
        app_tracker_new_obj_highlighted_callback_register(_new_highlighted_obj_changed, nd);
        smart_notification_init();
 #ifndef SCREEN_READER_TV
-       system_notifications_init();
        symbol_text_hash_init();
 #endif
 
@@ -3449,13 +3447,28 @@ void navigator_shutdown(Navigator_Data *nd)
        app_tracker_shutdown();
        smart_notification_shutdown();
 #ifndef SCREEN_READER_TV
-       system_notifications_shutdown();
        symbol_text_hash_destroy();
 #endif
 
        free(nd);
 }
 
+void navigator_set_read_quickpanel_cb(
+               Navigator_Data *nd,
+               read_quickpanel_cb_t cb,
+               void *user_data)
+{
+       nd->read_quickpanel_cb = cb;
+       nd->read_quickpanel_data = user_data;
+}
+
+void* navigator_remove_read_quickpanel_cb(Navigator_Data *nd) {
+       void *res = nd->read_quickpanel_data;
+       nd->read_quickpanel_cb = NULL;
+       nd->read_quickpanel_data = NULL;
+       return res;
+}
+
 FlatNaviContext* navigator_get_flat_navi_context(Navigator_Data *nd) {
        if (!nd) { ERROR("Navigator_Data is NULL!"); }
        return nd ? nd->flat_navi_context : NULL;
index 43b4026f0cb9bbf820990b07c106a0dca74ac05e..a3beec678d279ad2f970ccd4d5f0fb9e1eae2310 100644 (file)
@@ -34,6 +34,7 @@ static int pid = 0;
 Service_Data service_data = {
        .navigator_data = NULL,
        .reading_adapter_data = NULL,
+       .system_data = NULL,
 
        //Set by vconf
        .run_service = 1,
@@ -47,9 +48,6 @@ Service_Data service_data = {
        .tts = NULL,
        .available_languages = NULL,
        .text_to_say_info = NULL,
-
-       //Set by system
-       .display_locked = false
 };
 
 Service_Data *get_pointer_to_service_data_struct()
@@ -57,10 +55,8 @@ Service_Data *get_pointer_to_service_data_struct()
        return &service_data;
 }
 
-int screen_reader_create_service(void *data)
+int screen_reader_create_service(Service_Data *service_data)
 {
-       Service_Data *service_data = data;
-
        vconf_init(service_data);
        tts_init(service_data);
 
@@ -70,12 +66,10 @@ int screen_reader_create_service(void *data)
        return 0;
 }
 
-int screen_reader_terminate_service(void *data)
+int screen_reader_terminate_service(Service_Data *service_data)
 {
        DEBUG("Service Terminate Callback \n");
 
-       Service_Data *service_data = data;
-
 #ifdef SCREEN_READER_TV
        spi_shutdown(service_data);
 #endif
index 0cdfef110bc8250b2251dea2dd9f7e08f42529a0..8c663647427fec310c1d4d033ca0bdb8d096b783 100644 (file)
 #include <notification.h>
 #include <notification_list.h>
 
-#include "screen_reader.h"
+#include <screen_reader_system.h>
 #include "screen_reader_tts.h"
-#include "smart_notification.h"
 #include "logger.h"
 
 #define MAX_SIM_COUNT 2
 #define DATE_TIME_BUFFER_SIZE 26
 
-TapiHandle *tapi_handle[MAX_SIM_COUNT + 1] = { 0, };
-static Eina_Bool _is_display_state_screen_off = EINA_FALSE;
-static wifi_manager_h wifi = NULL;
+struct _System_Data {
+       TapiHandle *tapi_handle[MAX_SIM_COUNT + 1];
+       Eina_Bool is_display_state_screen_off;
+       wifi_manager_h wifi;
+       bool display_locked;
+};
 
 static void device_system_cb(device_callback_e type, void *value, void *user_data);
 
-static void tapi_init(void)
+static void tapi_init(System_Data *system_data)
 {
        int i = 0;
        char **cp_list = tel_get_cp_name_list();
@@ -56,33 +58,43 @@ static void tapi_init(void)
 
        DEBUG("TAPI INIT");
        for (i = 0; cp_list[i]; ++i) {
-               tapi_handle[i] = tel_init(cp_list[i]);
+               system_data->tapi_handle[i] = tel_init(cp_list[i]);
                DEBUG("CP_LIST %d = %s", i, cp_list[i]);
        }
-
 }
 
 /**
  * @brief Initializer for smart notifications
  *
  */
-void system_notifications_init(void)
+System_Data *system_notifications_init(void)
 {
        DEBUG("******************** START ********************");
+
        int ret = -1;
+       System_Data *system_data = malloc(sizeof(System_Data));
+
+       if (!system_data) {
+               ERROR("malloc(%d) failed", sizeof(System_Data));
+               return NULL;
+       }
+
+       system_data->is_display_state_screen_off = EINA_FALSE;
+       system_data->wifi = NULL;
+       system_data->display_locked = false;
 
        // BATTERY LOW/FULL
-       ret = device_add_callback(DEVICE_CALLBACK_BATTERY_LEVEL, device_system_cb, NULL);
+       ret = device_add_callback(DEVICE_CALLBACK_BATTERY_LEVEL, device_system_cb, system_data);
        if (DEVICE_ERROR_NONE != ret)
                ERROR("fail to add battery level cb (%d)", ret);
 
        // BATTERY CHARGING/NOT-CHARGING
-       ret = device_add_callback(DEVICE_CALLBACK_BATTERY_CHARGING, device_system_cb, NULL);
+       ret = device_add_callback(DEVICE_CALLBACK_BATTERY_CHARGING, device_system_cb, system_data);
        if (DEVICE_ERROR_NONE != ret)
                ERROR("fail to add battery charging cb (%d)", ret);
 
        // SCREEN OFF/ON
-       ret = device_add_callback(DEVICE_CALLBACK_DISPLAY_STATE, device_system_cb, NULL);
+       ret = device_add_callback(DEVICE_CALLBACK_DISPLAY_STATE, device_system_cb, system_data);
        if (DEVICE_ERROR_NONE != ret)
                ERROR("fail to add display state cb (%d)", ret);
 
@@ -90,25 +102,30 @@ void system_notifications_init(void)
        if (ret != BT_ERROR_NONE)
                ERROR("ret == %d", ret);
 
-       ret = wifi_manager_initialize(&wifi);
+       ret = wifi_manager_initialize(&(system_data->wifi));
        if (ret != WIFI_MANAGER_ERROR_NONE) {
-               wifi = NULL;
+               system_data->wifi = NULL;
                ERROR("ret == %d", ret);
        }
 
-       tapi_init();
+       tapi_init(system_data);
 
        DEBUG(" ********************* END ********************* ");
+
+       return system_data;
 }
 
 /**
  * @brief Initializer for smart notifications
  *
  */
-void system_notifications_shutdown(void)
+void system_notifications_shutdown(System_Data *system_data)
 {
        int ret = -1;
 
+       if (system_data)
+               free(system_data);
+
        // BATTERY LOW/FULL
        device_remove_callback(DEVICE_CALLBACK_BATTERY_LEVEL, device_system_cb);
        // BATTERY CHARGING/NOT-CHARGING
@@ -120,10 +137,10 @@ void system_notifications_shutdown(void)
        if (ret != BT_ERROR_NONE)
                ERROR("ret == %d", ret);
 
-       ret = wifi_manager_deinitialize(wifi);
+       ret = wifi_manager_deinitialize(system_data->wifi);
        if (ret != WIFI_MANAGER_ERROR_NONE)
                ERROR("ret == %d", ret);
-       wifi = NULL;
+       system_data->wifi = NULL;
 
        return;
 }
@@ -137,8 +154,16 @@ void system_notifications_shutdown(void)
  */
 static void device_system_cb(device_callback_e type, void *value, void *user_data)
 {
+       if (!user_data) {
+               ERROR("Invalid parameter");
+               return;
+       }
+
+       System_Data *system_data = (System_Data *)user_data;
+
        if (type == DEVICE_CALLBACK_BATTERY_LEVEL) {
                device_battery_level_e status;
+
                if (device_battery_get_level_status(&status)) {
                        ERROR("Cannot get battery level status");
                        return;
@@ -152,23 +177,24 @@ static void device_system_cb(device_callback_e type, void *value, void *user_dat
                        tts_speak(_IGNORE_ON_TV("IDS_QP_MBODY_BATTERY_FULLY_CHARGED_ABB"), EINA_TRUE);
        } else if (type == DEVICE_CALLBACK_DISPLAY_STATE) {
                display_state_e state;
+
                if (device_display_get_state(&state)) {
                        ERROR("Cannot check if battery is charging");
                        return;
                }
 
                if (state == DISPLAY_STATE_SCREEN_OFF) {
-                       if (!_is_display_state_screen_off) {
-                               _is_display_state_screen_off = EINA_TRUE;
+                       if (!system_data->is_display_state_screen_off) {
+                               system_data->is_display_state_screen_off = EINA_TRUE;
                                /* TODO: need to check if device_power_request_lock and device_power_release_lock
                                while turning off display affects or not. If it has a problem we need to use
-                               following is_screen_turn_off, and above _is_display_state_screen_off */
+                               following is_screen_turn_off, and above system_data->is_display_state_screen_off */
                                Read_Command *rc = NULL;
                                rc = tts_speak(_("IDS_GCTS_OPT_SCREEN_TURNED_OFF_TTS"), EINA_FALSE);
                                if (rc) rc->is_screen_turn_off = EINA_TRUE;
                        }
                } else {
-                       _is_display_state_screen_off = EINA_FALSE;
+                       system_data->is_display_state_screen_off = EINA_FALSE;
                }
        }
 }
@@ -189,7 +215,7 @@ static int _read_text_get(char *key)
        return read_text;
 }
 
-void device_time_get(void)
+static void device_time_get(System_Data *system_data)
 {
        char buffer[DATE_TIME_BUFFER_SIZE];
        int disp_12_24 = VCONFKEY_TIME_FORMAT_12;
@@ -261,7 +287,7 @@ char *device_error_to_string(int e)
        }
 }
 
-void device_battery_get(void)
+static void device_battery_get(System_Data *system_data)
 {
        char *buffer = NULL;
        char *charging_text = NULL;
@@ -319,7 +345,7 @@ void device_battery_get(void)
        g_free(buffer);
 }
 
-static void _signal_strength_sim_get(void)
+static void _signal_strength_sim_get(System_Data *system_data)
 {
        int i = 0;
        int val = 0;
@@ -330,13 +356,18 @@ static void _signal_strength_sim_get(void)
        int service_type = TAPI_NETWORK_SERVICE_TYPE_UNKNOWN;
        char *service_type_text = NULL;
 
+       if (!system_data) {
+               ERROR("system data is null");
+               return;
+       }
+
        str_buf = eina_strbuf_new();
 
-       for (i = 0; tapi_handle[i]; ++i)
+       for (i = 0; system_data->tapi_handle[i]; ++i)
                ++sim_card_count;
 
-       for (i = 0; tapi_handle[i]; ++i) {
-               ret = tel_get_property_int(tapi_handle[i], TAPI_PROP_NETWORK_SIGNALSTRENGTH_LEVEL, &val);
+       for (i = 0; system_data->tapi_handle[i]; ++i) {
+               ret = tel_get_property_int(system_data->tapi_handle[i], TAPI_PROP_NETWORK_SIGNALSTRENGTH_LEVEL, &val);
                if (ret != TAPI_API_SUCCESS) {
                        ERROR("Can not get %s", TAPI_PROP_NETWORK_SIGNALSTRENGTH_LEVEL);
                        val = 0;
@@ -348,7 +379,7 @@ static void _signal_strength_sim_get(void)
                        eina_strbuf_append_printf(str_buf, "%s %d; ", _("IDS_ACCS_BODY_SIGNAL_STRENGTH_TTS"), val);
                DEBUG("sim: %d TAPI_PROP_NETWORK_SIGNALSTRENGTH_LEVEL %d", i, val);
 
-               ret = tel_get_property_int(tapi_handle[i], TAPI_PROP_NETWORK_SERVICE_TYPE, &service_type);
+               ret = tel_get_property_int(system_data->tapi_handle[i], TAPI_PROP_NETWORK_SERVICE_TYPE, &service_type);
                if (ret != TAPI_API_SUCCESS)
                        ERROR("Can not get %s", TAPI_PROP_NETWORK_SERVICE_TYPE);
 
@@ -394,7 +425,7 @@ static void _signal_strength_sim_get(void)
        g_free(buffer);
 }
 
-static void _signal_strength_wifi_get(void)
+static void _signal_strength_wifi_get(System_Data *system_data)
 {
        int val = 0;
        int ret = -1;
@@ -403,19 +434,19 @@ static void _signal_strength_wifi_get(void)
        bool wifi_activated = false;
        wifi_manager_ap_h ap = NULL;
 
-       if (!wifi) {
+       if (!system_data->wifi) {
                ERROR("Wi-Fi manager is not initialized");
                return;
        }
 
-       ret = wifi_manager_is_activated(wifi, &wifi_activated);
+       ret = wifi_manager_is_activated(system_data->wifi, &wifi_activated);
        if (ret != WIFI_MANAGER_ERROR_NONE) {
                ERROR("ret == %d", ret);
                return;
        }
 
        if (wifi_activated) {
-               ret = wifi_manager_get_connected_ap(wifi, &ap);
+               ret = wifi_manager_get_connected_ap(system_data->wifi, &ap);
                if (ret != WIFI_MANAGER_ERROR_NONE) {
                        ERROR("ret == %d", ret);
                        return;
@@ -472,15 +503,16 @@ static void _signal_strength_wifi_get(void)
        }
 }
 
-void device_signal_strenght_get(void)
+static void device_signal_strenght_get(System_Data *system_data)
 {
        if (!_read_text_get(VCONFKEY_SETAPPL_ACCESSIBILITY_TTS_INDICATOR_INFORMATION_SIGNAL_STRENGHT))
                return;
-       _signal_strength_sim_get();
-       _signal_strength_wifi_get();
+       _signal_strength_sim_get(system_data);
+       _signal_strength_wifi_get(system_data);
 }
 
-void device_missed_events_get(void)
+
+static void device_missed_events_get(System_Data *system_data)
 {
        notification_list_h list = NULL;
        notification_list_h elem = NULL;
@@ -537,7 +569,7 @@ void device_missed_events_get(void)
                ERROR("ret == %d", ret);
 }
 
-void device_date_get(void)
+static void device_date_get(System_Data *system_data)
 {
        char buffer[DATE_TIME_BUFFER_SIZE];
        int date_format = SETTING_DATE_FORMAT_DD_MM_YYYY;
@@ -602,7 +634,7 @@ static bool EINA_UNUSED bonded_device_get_cb(bt_device_info_s *device_info, void
        return false;
 }
 
-void device_bluetooth_get(void)
+static void device_bluetooth_get(System_Data *system_data)
 {
        char *buffer = NULL;
        int device_count = 0;
@@ -646,48 +678,64 @@ void device_bluetooth_get(void)
        }
 }
 
-void device_display_lock_request(void)
+void device_display_lock_request(System_Data *system_data)
 {
-       if (_is_display_state_screen_off) {
-               DEBUG("Middle Of Screen Off");
+       if (!system_data) {
+               ERROR("System_Data could not be NULL");
                return;
        }
 
-       Service_Data *sd;
-       sd = get_pointer_to_service_data_struct();
-       if (!sd) {
-               ERROR("Service Data is not available");
+       if (system_data->is_display_state_screen_off) {
+               DEBUG("Middle Of Screen Off");
                return;
        }
 
-       if (!sd->display_locked) {
+       if (!system_data->display_locked) {
                int ret;
                ret = device_power_request_lock(POWER_LOCK_DISPLAY, 0);
                if (ret >= 0)
-                       sd->display_locked = true;
+                       system_data->display_locked = true;
                else
                        ERROR("Display Lock Request Failed");
        }
-
 }
 
-void device_display_lock_release(void)
+void device_display_lock_release(System_Data *system_data)
 {
-       Service_Data *sd;
-
-       sd = get_pointer_to_service_data_struct();
-       if (!sd) {
-               ERROR("Service Data is not available");
+       if (!system_data) {
+               ERROR("System Data is not available");
                return;
        }
 
-       if (sd->display_locked) {
+       if (system_data->display_locked) {
                int ret;
                ret = device_power_release_lock(POWER_LOCK_DISPLAY);
                if (ret >= 0)
-                       sd->display_locked = false;
+                       system_data->display_locked = false;
                else
                        ERROR("Display Lock Release Failed");
        }
 }
+
+void system_status_get(void *user_data)
+{
+       DEBUG("START");
+
+       System_Data *system_data = (System_Data*)user_data;
+
+       if (!system_data) {
+               ERROR("System_Data could not be NULL");
+               return;
+       }
+
+       device_time_get(system_data);
+       device_battery_get(system_data);
+       device_bluetooth_get(system_data);
+       device_signal_strenght_get(system_data);
+
+       device_date_get(system_data);
+       device_missed_events_get(system_data);
+       DEBUG("END");
+}
+
 #endif
index d98457dc32d3db3948c3f2984f2fa2ad949dd9e9..46eb5617fbb5c0c5696bbc3d22aa3027ab68b245 100644 (file)
@@ -501,7 +501,7 @@ send_command_to_tts(Service_Data *sd, Read_Command *command, tts_state_e state)
                        if (state == TTS_STATE_READY) tts_play(sd->tts);
 
 #ifndef SCREEN_READER_TV
-                       device_display_lock_request();
+                       device_display_lock_request(sd->system_data);
                        if (display_lock_release_timer)
                                ecore_timer_reset(display_lock_release_timer);
 #endif
@@ -792,11 +792,16 @@ static void tts_utt_started_cb(tts_h tts, int utt_id, void *user_data)
 #ifndef SCREEN_READER_TV
 static Eina_Bool _display_lock_release_timer_cb(void *data)
 {
+       Service_Data *sd = (Service_Data *)data;
+
        if (last_read_command && last_read_command->is_playing) {
                return ECORE_CALLBACK_RENEW;
        }
 
-       device_display_lock_release();
+       if (!sd || !sd->system_data) {
+               ERROR("Critical: Service_Data or System_Data is null");
+       } else
+               device_display_lock_release(sd->system_data);
 
        display_lock_release_timer = NULL;
        return ECORE_CALLBACK_CANCEL;
@@ -818,7 +823,7 @@ static void tts_utt_completed_cb(tts_h tts, int utt_id, void *user_data)
                        if (display_lock_release_timer) ecore_timer_del(display_lock_release_timer);
                        DEBUG("resetting timer");
                        display_lock_release_timer = ecore_timer_add(lcd_backlight_timeout < 0.01 ? 0.01 : lcd_backlight_timeout,
-                               _display_lock_release_timer_cb, NULL);
+                               _display_lock_release_timer_cb, user_data);
                }
                pause_state = EINA_FALSE;