#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_
#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"
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;
*/
#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
break;
case TWO_FINGERS_TRIPLE_TAP:
#ifndef SCREEN_READER_TV
- _read_quickpanel();
+ _read_quickpanel(nd);
#endif
break;
case TWO_FINGERS_FLICK_LEFT:
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);
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
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;
#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();
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);
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
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;
}
*/
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;
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;
}
}
}
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;
}
}
-void device_battery_get(void)
+static void device_battery_get(System_Data *system_data)
{
char *buffer = NULL;
char *charging_text = NULL;
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;
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;
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);
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;
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;
}
}
-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;
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;
return false;
}
-void device_bluetooth_get(void)
+static void device_bluetooth_get(System_Data *system_data)
{
char *buffer = NULL;
int device_count = 0;
}
}
-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