diff options
Diffstat (limited to 'ug-wifidirect/include')
-rw-r--r-- | ug-wifidirect/include/wfd_client.h | 156 | ||||
-rw-r--r-- | ug-wifidirect/include/wfd_motion_control.h | 43 | ||||
-rw-r--r--[-rwxr-xr-x] | ug-wifidirect/include/wfd_ug.h | 431 | ||||
-rw-r--r--[-rwxr-xr-x] | ug-wifidirect/include/wfd_ug_view.h | 494 |
4 files changed, 891 insertions, 233 deletions
diff --git a/ug-wifidirect/include/wfd_client.h b/ug-wifidirect/include/wfd_client.h index 2e65b2e..e8b6c5e 100644 --- a/ug-wifidirect/include/wfd_client.h +++ b/ug-wifidirect/include/wfd_client.h @@ -22,44 +22,150 @@ #define __WFD_CLIENT_H__ -typedef enum -{ - WFD_DEVICE_TYPE_COMPUTER = WIFI_DIRECT_PRIMARY_DEVICE_TYPE_COMPUTER, // 1 - WFD_DEVICE_TYPE_INPUT_DEVICE= WIFI_DIRECT_PRIMARY_DEVICE_TYPE_INPUT_DEVICE, - WFD_DEVICE_TYPE_PRINTER = WIFI_DIRECT_PRIMARY_DEVICE_TYPE_PRINTER, - WFD_DEVICE_TYPE_CAMERA = WIFI_DIRECT_PRIMARY_DEVICE_TYPE_CAMERA, - WFD_DEVICE_TYPE_STORAGE = WIFI_DIRECT_PRIMARY_DEVICE_TYPE_STORAGE, // 5 - WFD_DEVICE_TYPE_NW_INFRA = WIFI_DIRECT_PRIMARY_DEVICE_TYPE_NETWORK_INFRA, - WFD_DEVICE_TYPE_DISPLAYS = WIFI_DIRECT_PRIMARY_DEVICE_TYPE_DISPLAY, - WFD_DEVICE_TYPE_MM_DEVICES = WIFI_DIRECT_PRIMARY_DEVICE_TYPE_MULTIMEDIA_DEVICE, - WFD_DEVICE_TYPE_GAME_DEVICES = WIFI_DIRECT_PRIMARY_DEVICE_TYPE_GAME_DEVICE, - WFD_DEVICE_TYPE_TELEPHONE = WIFI_DIRECT_PRIMARY_DEVICE_TYPE_TELEPHONE, // 10 - WFD_DEVICE_TYPE_AUDIO = WIFI_DIRECT_PRIMARY_DEVICE_TYPE_AUDIO, - WFD_DEVICE_TYPE_OTHER = WIFI_DIRECT_PRIMARY_DEVICE_TYPE_OTHER, // 255 +typedef enum { + WFD_DEVICE_TYPE_COMPUTER = WIFI_DIRECT_PRIMARY_DEVICE_TYPE_COMPUTER, + WFD_DEVICE_TYPE_INPUT_DEVICE = WIFI_DIRECT_PRIMARY_DEVICE_TYPE_INPUT_DEVICE, + WFD_DEVICE_TYPE_PRINTER = WIFI_DIRECT_PRIMARY_DEVICE_TYPE_PRINTER, + WFD_DEVICE_TYPE_CAMERA = WIFI_DIRECT_PRIMARY_DEVICE_TYPE_CAMERA, + WFD_DEVICE_TYPE_STORAGE = WIFI_DIRECT_PRIMARY_DEVICE_TYPE_STORAGE, + WFD_DEVICE_TYPE_NW_INFRA = WIFI_DIRECT_PRIMARY_DEVICE_TYPE_NETWORK_INFRA, + WFD_DEVICE_TYPE_DISPLAYS = WIFI_DIRECT_PRIMARY_DEVICE_TYPE_DISPLAY, + WFD_DEVICE_TYPE_MM_DEVICES = WIFI_DIRECT_PRIMARY_DEVICE_TYPE_MULTIMEDIA_DEVICE, + WFD_DEVICE_TYPE_GAME_DEVICES = WIFI_DIRECT_PRIMARY_DEVICE_TYPE_GAME_DEVICE, + WFD_DEVICE_TYPE_TELEPHONE = WIFI_DIRECT_PRIMARY_DEVICE_TYPE_TELEPHONE, + WFD_DEVICE_TYPE_AUDIO = WIFI_DIRECT_PRIMARY_DEVICE_TYPE_AUDIO, + WFD_DEVICE_TYPE_OTHER = WIFI_DIRECT_PRIMARY_DEVICE_TYPE_OTHER, } device_type_e; typedef enum { - WFD_LINK_STATUS_DEACTIVATED = WIFI_DIRECT_STATE_DEACTIVATED, // 0 - WFD_LINK_STATUS_DEACTIVATING = WIFI_DIRECT_STATE_DEACTIVATING, - WFD_LINK_STATUS_ACTIVATING = WIFI_DIRECT_STATE_ACTIVATING, - WFD_LINK_STATUS_ACTIVATED = WIFI_DIRECT_STATE_ACTIVATED, - WFD_LINK_STATUS_DISCOVERING = WIFI_DIRECT_STATE_DISCOVERING, - WFD_LINK_STATUS_CONNECTING = WIFI_DIRECT_STATE_CONNECTING, // 5 - WFD_LINK_STATUS_DISCONNECTING = WIFI_DIRECT_STATE_DISCONNECTING, - WFD_LINK_STATUS_CONNECTED = WIFI_DIRECT_STATE_CONNECTED, - WFD_LINK_STATUS_GROUP_OWNER = WIFI_DIRECT_STATE_GROUP_OWNER, + WFD_LINK_STATUS_DEACTIVATED = WIFI_DIRECT_STATE_DEACTIVATED, + WFD_LINK_STATUS_DEACTIVATING = WIFI_DIRECT_STATE_DEACTIVATING, + WFD_LINK_STATUS_ACTIVATING = WIFI_DIRECT_STATE_ACTIVATING, + WFD_LINK_STATUS_ACTIVATED = WIFI_DIRECT_STATE_ACTIVATED, + WFD_LINK_STATUS_DISCOVERING = WIFI_DIRECT_STATE_DISCOVERING, + WFD_LINK_STATUS_CONNECTING = WIFI_DIRECT_STATE_CONNECTING, + WFD_LINK_STATUS_DISCONNECTING = WIFI_DIRECT_STATE_DISCONNECTING, + WFD_LINK_STATUS_CONNECTED = WIFI_DIRECT_STATE_CONNECTED, + WFD_LINK_STATUS_GROUP_OWNER = WIFI_DIRECT_STATE_GROUP_OWNER, } link_status_e; -int wfd_get_vconf_status(void *data); +/** + * This function let the ug get wi-fi direct status from vconf + * @return If success, return the wfd status, else return -1 + * @param[in] void + */ +int wfd_get_vconf_status(); + +/** + * This function let the ug get device name from vconf + * @return If success, return 0, else return -1 + * @param[in] data the pointer to the main data structure + */ +int wfd_get_vconf_device_name(void *data); + +#ifndef MODEL_BUILD_FEATURE_WLAN_CONCURRENT_MODE +/** + * This function let the ug turn wifi off + * @return If success, return 0, else return -1 + * @param[in] data the pointer to the main data structure + */ int wfd_wifi_off(void *data); +#endif /* MODEL_BUILD_FEATURE_WLAN_CONCURRENT_MODE */ + +/** + * This function let the ug turn AP on + * @return If success, return 0, else return -1 + * @param[in] data the pointer to the main data structure + */ +int wfd_mobile_ap_on(void *data); + +/** + * This function let the ug turn AP off + * @return If success, return 0, else return -1 + * @param[in] data the pointer to the main data structure + */ +int wfd_mobile_ap_off(void *data); + +/** + * This function let the ug do initialization + * @return If success, return 0, else return -1 + * @param[in] data the pointer to the main data structure + */ int init_wfd_client(void *data); + + +/** + * This function let the ug load wfd manager + * @return If success, return 0, else return -1 + * @param[in] data the pointer to the main data structure + */ +int launch_wifi_direct_manager(void *data); + +/** + * This function let the ug do de-initialization + * @return If success, return 0, else return -1 + * @param[in] data the pointer to the main data structure + */ int deinit_wfd_client(void *data); -int wfd_client_start_discovery(void *data); + +/** + * This function let the ug turn wi-fi direct on + * @return If success, return 0, else return -1 + * @param[in] data the pointer to the main data structure + */ int wfd_client_switch_on(void *data); + +/** + * This function let the ug turn wi-fi direct off + * @return If success, return 0, else return -1 + * @param[in] data the pointer to the main data structure + */ int wfd_client_switch_off(void *data); + +#ifdef WFD_ON_OFF_GENLIST +/** + * This function let the ug turn wi-fi direct on/off forcely + * @return If success, return 0, else return -1 + * @param[in] data the pointer to the main data structure + * @param[in] onoff whether to turn on/off wi-fi direct + */ int wfd_client_swtch_force(void *data, int onoff); +#endif + +/** + * This function let the ug create a group + * @return If success, return 0, else return -1 + */ +int wfd_client_group_add(); + +/** + * This function let the ug connect to the device by mac address + * @return If success, return 0, else return -1 + * @param[in] mac_addr the pointer to the mac address of device + */ int wfd_client_connect(const char *mac_addr); + +/** + * This function let the ug disconnect to the device by mac address + * @return If success, return 0, else return -1 + * @param[in] mac_addr the pointer to the mac address of device + */ int wfd_client_disconnect(const char *mac_addr); + +/** + * This function let the ug set the intent of a group owner + * @return If success, return 0, else return -1 + * @param[in] go_intent the intent parameter + */ int wfd_client_set_p2p_group_owner_intent(int go_intent); +/** + * This function let the ug destroy tethering + * @return void + * @param[in] ugd the pointer to the main data structure + */ +void wfd_client_destroy_tethering(struct ug_data *ugd); + +void wfd_client_free_raw_discovered_peers(struct ug_data *ugd); + #endif /* __WFD_CLIENT_H__ */ diff --git a/ug-wifidirect/include/wfd_motion_control.h b/ug-wifidirect/include/wfd_motion_control.h new file mode 100644 index 0000000..f3f5bd3 --- /dev/null +++ b/ug-wifidirect/include/wfd_motion_control.h @@ -0,0 +1,43 @@ +/* + * Wi-Fi Direct + * + * Copyright 2012 Samsung Electronics Co., Ltd + * + * Licensed under the Flora License, Version 1.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.tizenopensource.org/license + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#ifndef __MOTION_CONTROL_H__ +#define __MOTION_CONTROL_H__ + +#ifdef __cplusplus +extern "C" +{ +#endif + +#include <Evas.h> +#include "wfd_ug.h" + +typedef enum { + MOTION_TARGET_VIEW_FOCUS_ON = 0, + MOTION_TARGET_VIEW_FOCUS_OFF +}TARGET_VIEW_FOCUS; + +void motion_create(struct ug_data *); +void motion_destroy(void); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/ug-wifidirect/include/wfd_ug.h b/ug-wifidirect/include/wfd_ug.h index c24b1ee..306d178 100755..100644 --- a/ug-wifidirect/include/wfd_ug.h +++ b/ug-wifidirect/include/wfd_ug.h @@ -22,58 +22,118 @@ #define __WFD_UG_H__ #include <dlog.h> +#include <notification.h> #include <ui-gadget-module.h> + #include <tethering.h> +#include <wifi-direct.h> +#include <efl-assist/efl_assist.h> + +#include <glib-object.h> +#include <gio/gio.h> +#include <glib.h> +#include <assert.h> + #define PACKAGE "ug-setting-wifidirect-efl" -#define LOCALEDIR "/opt/ug/res/locale" +#define LOCALEDIR "/usr/share/locale" +#define COLOR_TABLE "/usr/apps/setting-wifidirect-efl/shared/res/tables/setting-wifidirect-efl_ChangeableColorTable.xml" +#define FONT_TABLE "/usr/apps/setting-wifidirect-efl/shared/res/tables/setting-wifidirect-efl_FontInfoTable.xml" #define DIRECT_TAG "wfd_ug" +/* TODO:: To change the log level as LOG_INFO */ #define DBG(log_level, format, args...) \ - LOG(log_level, DIRECT_TAG, "[%s()][%d] " format, __FUNCTION__, __LINE__, ##args) + LOG(LOG_ERROR, DIRECT_TAG, "[%s()][%d] " format, __FUNCTION__, __LINE__, ##args) +#define DBG_SECURE(log_level, format, args...) \ + SECURE_LOG(LOG_ERROR, DIRECT_TAG, "[%s()][%d] " format, __FUNCTION__, __LINE__, ##args) + +#define MAC2SECSTR(a) (a)[0], (a)[4], (a)[5] +#define MACSECSTR "%02x:%02x:%02x" +#if 0 +#define IP2SECSTR(a) (a)[0], (a)[3] +#define IPSECSTR "%d..%d" +#endif -#define __FUNC_ENTER__ DBG(LOG_VERBOSE, "+\n") -#define __FUNC_EXIT__ DBG(LOG_VERBOSE, "-\n") +#define __FUNC_ENTER__ DBG(LOG_INFO, "+\n") +#define __FUNC_EXIT__ DBG(LOG_INFO, "-\n") +#if 0 +#define __FUNC_ENTER__ +#define __FUNC_EXIT__ +#endif -#define VCONF_WFD_APNAME "db/setting/device_name" +#define VCONF_WFD_APNAME "db/setting/device_name" #define assertm_if(expr, fmt, arg...) do { \ - if(expr) { \ + if (expr) { \ DBG(LOG_VERBOSE, " ##(%s) -> %s() assert!!## "fmt, #expr, __FUNCTION__, ##arg); \ assert(1); \ - } \ -} while (0) // retvm if - -#define MAC2STR(a) (a)[0], (a)[1], (a)[2], (a)[3], (a)[4], (a)[5] -#define MACSTR "%02x:%02x:%02x:%02x:%02x:%02x" - -#define AP_NAME_LENGTH_MAX 32 //allowed lenght is 31 + '\0' -#define AP_PASSWORD_LENGTH_MAX 64 //allowed lenght is 63 + '\0' -#define AP_PASSWORD_LENGTH_MIN 8 //min limit + } \ +} while (0) + +#define WFD_IF_DEL_OBJ(obj) \ + do { \ + if(obj) { \ + evas_object_del(obj); \ + obj = NULL; \ + } \ + } while (0) + +#define WFD_IF_DEL_ITEM(obj) \ + do { \ + if(obj) { \ + elm_object_item_del(obj); \ + obj = NULL; \ + } \ + } while (0) + +#define WFD_RET_IF(expr, fmt, args...) \ + do { \ + if(expr) { \ + DBG(LOG_ERROR, "[%s] Return, message "fmt, #expr, ##args );\ + return; \ + } \ + } while (0) + +#define WFD_RETV_IF(expr, val, fmt, args...) \ + do { \ + if(expr) { \ + DBG(LOG_ERROR,"[%s] Return value, message "fmt, #expr, ##args );\ + return (val); \ + } \ + } while (0) + +#define WFD_IF_FREE_MEM(mem) \ + do { \ + if(mem) { \ + free(mem); \ + mem = NULL; \ + } \ + } while (0) + +#define AP_NAME_LENGTH_MAX 32 +#define AP_PASSWORD_LENGTH_MAX 64 +#define AP_PASSWORD_LENGTH_MIN 8 #define AP_REJECT_CHAR_LIST "=," -#define DEFAULT_DEV_NAME "GT_I9500" +#define DEFAULT_DEV_NAME "ZEQ" #define MAC_LENGTH 18 #define SSID_LENGTH 32 +#define MAX_CONNECTED_PEER_NUM 7 #define MAX_PEER_NUM 10 -#define MAX_POPUP_PEER_NUM 7 #define MAX_POPUP_TEXT_SIZE 256 -#define MAX_DISPLAY_TIME_OUT 30 +#define MAX_DISPLAY_TIME_OUT 3 +#define MAX_NO_ACTION_TIME_OUT 300 /*5min*/ +#define MAX_SCAN_TIME_OUT 0 + +#define GENLIST_HEADER_POS 1 +#define SR_CHECKBOX_ON_MSG "on/off button on" +#define SR_CHECKBOX_OFF_MSG "on/off button off" +#define SR_BUTTON_MSG "multiple connect button" #define _(s) dgettext(PACKAGE, s) #define N_(s) dgettext_noop(s) #define S_(s) dgettext("sys_string", s) - -#if 1 //To-Do : Text should be translated. - -#define IDS_WFD_POP_SCAN_AGAIN "To start new scanning,<br>current connection will be<br>ended.Continue?" -#define IDS_WFD_POP_WARN_BUSY_DEVICE "Unavailable device. Device is connected to another device." -#define IDS_WFD_BODY_FAILED_DEVICES "Failed Devices" - -#endif - - #define WFD_GLOBALIZATION_STR_LENGTH 256 typedef enum { @@ -82,146 +142,234 @@ typedef enum { WFD_MULTI_CONNECT_MODE_COMPLETED, } wfd_multi_connect_mode_e; -typedef enum -{ - PEER_CONN_STATUS_DISCONNECTED, - PEER_CONN_STATUS_DISCONNECTING, - PEER_CONN_STATUS_CONNECTING = PEER_CONN_STATUS_DISCONNECTING, - PEER_CONN_STATUS_CONNECTED, - PEER_CONN_STATUS_FAILED_TO_CONNECT, - PEER_CONN_STATUS_WAIT_FOR_CONNECT, +typedef enum { + PEER_CONN_STATUS_DISCONNECTED, + PEER_CONN_STATUS_DISCONNECTING, + PEER_CONN_STATUS_CONNECTING = PEER_CONN_STATUS_DISCONNECTING, + PEER_CONN_STATUS_CONNECTED, + PEER_CONN_STATUS_FAILED_TO_CONNECT, + PEER_CONN_STATUS_WAIT_FOR_CONNECT, } conn_status_e; - -typedef struct -{ - char ssid[SSID_LENGTH]; // 31 + 1('\0') - unsigned int category; - char mac_addr[MAC_LENGTH]; - char if_addr[MAC_LENGTH]; - conn_status_e conn_status; - bool is_group_owner; /** Is an active P2P Group Owner */ - bool is_persistent_group_owner; /** Is a stored Persistent GO */ - bool is_connected; /** Is peer connected*/ - Elm_Object_Item *gl_item; +typedef enum { + WIFI_DIRECT_DISCOVERY_NONE, + WIFI_DIRECT_DISCOVERY_SOCIAL_CHANNEL_START, + WIFI_DIRECT_DISCOVERY_FULL_SCAN_START, + WIFI_DIRECT_DISCOVERY_STOPPED, + WIFI_DIRECT_DISCOVERY_BACKGROUND, +} discovery_status_e; + + +typedef struct device_type_s_{ + char ssid[SSID_LENGTH]; + unsigned int category; + unsigned int sub_category; + char mac_addr[MAC_LENGTH]; + char if_addr[MAC_LENGTH]; + conn_status_e conn_status; + bool is_group_owner; /** Is an active P2P Group Owner */ + bool is_persistent_group_owner; /** Is a stored Persistent GO */ + bool is_connected; /** Is peer connected*/ + bool is_alive; + bool dev_sel_state; + Elm_Object_Item *gl_item; + struct device_type_s_ *next; } device_type_s; -typedef struct -{ - bool dev_sel_state; - device_type_s peer; -} wfd_multi_sel_data_s; +struct ug_data { + Evas_Object *base; + ui_gadget_h ug; + + Evas_Object *win; + Evas_Object *bg; + Evas_Object *layout; + Evas_Object *naviframe; + Elm_Object_Item *navi_item; + Elm_Object_Item *multi_navi_item; + Elm_Object_Item *head; + Evas_Object *genlist; + Evas_Object *multiconn_view_genlist; + Evas_Object *multiconn_layout; + Evas_Object *popup; + Evas_Object *act_popup; + Evas_Object *warn_popup; + Evas_Object *rename_popup; + Evas_Object *ctxpopup; + Evas_Object *scan_btn; + Evas_Object *disconnect_btn; + Evas_Object *toolbar; + Evas_Object *rename_entry; + Evas_Object *rename_button; + +#ifdef WFD_ON_OFF_GENLIST + Evas_Object *on_off_check; +#endif -struct ug_data -{ - Evas_Object *base; - ui_gadget_h ug; + Evas_Object *scan_toolbar; + Evas_Object *multiconn_scan_stop_btn; + Evas_Object *multiconn_conn_btn; + Evas_Object *select_all_icon; - Evas_Object *win; - Evas_Object *bg; - Evas_Object *naviframe; - Evas_Object *genlist; - Evas_Object *multiconn_view_genlist; - Evas_Object *popup; - Evas_Object *act_popup; - Evas_Object *warn_popup; - Elm_Object_Item *head; - Elm_Object_Item *scan_btn; - Elm_Object_Item *multi_scan_btn; - Elm_Object_Item *multi_connect_btn; - Elm_Object_Item *nodevice_title_item; - Elm_Object_Item *nodevice_item; - Elm_Object_Item *nodevice_sep_low_item; + Elm_Object_Item *multi_connect_toolbar_item; + Elm_Object_Item *multi_view_connect_toolbar_item; - Elm_Object_Item *about_wfd_item; - Elm_Object_Item *about_wfdsp_sep_end_item; + Elm_Object_Item *select_all_view_genlist; +#ifdef WFD_ON_OFF_GENLIST + Elm_Object_Item *item_wifi_onoff; +#endif + Elm_Object_Item *device_name_item; + Elm_Genlist_Item_Class *rename_entry_itc; + Elm_Genlist_Item_Class *rename_desc_itc; + Elm_Object_Item *multi_connect_sep_item; - Elm_Object_Item *conn_wfd_item; + Elm_Object_Item *nodevice_title_item; + Elm_Object_Item *nodevice_item; - Elm_Object_Item *conn_failed_wfd_item; - Elm_Object_Item *conn_failed_wfd_sep_item; + Elm_Object_Item *conn_wfd_item; + Elm_Object_Item *conn_failed_wfd_item; + Elm_Object_Item *avlbl_wfd_item; + Elm_Object_Item *busy_wfd_item; + Elm_Object_Item *multi_connect_wfd_item; - Elm_Object_Item *avlbl_wfd_item; + Elm_Object_Item *mcview_title_item; + Elm_Object_Item *mcview_nodevice_item; + Elm_Object_Item *more_btn_multiconnect_item; - Elm_Object_Item *busy_wfd_item; - Elm_Object_Item *busy_wfd_sep_item; + Evas_Object *back_btn; - Elm_Object_Item *multi_connect_wfd_item; + // Notify + Evas_Object *notify; + Evas_Object *notify_layout; - Elm_Object_Item *multi_button_item; - Elm_Object_Item *multi_button_sep_high_item; - Elm_Object_Item *multi_button_sep_low_item; + int head_text_mode; + char *mac_addr_connecting; + char *mac_addr_req; - Elm_Object_Item *mcview_select_all_item; - Elm_Object_Item *mcview_title_item; - Elm_Object_Item *mcview_nodevice_item; + //Connection is incoming or not + bool is_conn_incoming; - Evas_Object *multi_btn; + // title mode of device list + int title_content_mode; - int head_text_mode; + // Raw peer data + device_type_s raw_connected_peers[MAX_CONNECTED_PEER_NUM]; + int raw_connected_peer_cnt; + GList *raw_discovered_peer_list; + int raw_discovered_peer_cnt; - // Raw peer data - device_type_s raw_connected_peers[MAX_PEER_NUM]; - int raw_connected_peer_cnt; - device_type_s raw_discovered_peers[MAX_PEER_NUM]; - int raw_discovered_peer_cnt; + // Peer data in the Genlist + int gl_connected_peer_cnt; + device_type_s *gl_conn_peers_start; - // Peer data in the Genlist - device_type_s gl_connected_peers[MAX_PEER_NUM]; - int gl_connected_peer_cnt; + int gl_connected_failed_peer_cnt; + device_type_s *gl_failed_peers_start; - device_type_s gl_connected_failed_peers[MAX_PEER_NUM]; - int gl_connected_failed_peer_cnt; + int gl_available_peer_cnt; + device_type_s *gl_avlb_peers_start; - device_type_s gl_available_peers[MAX_PEER_NUM]; - int gl_available_peer_cnt; + int gl_busy_peer_cnt; + device_type_s *gl_busy_peers_start; - device_type_s gl_busy_peers[MAX_PEER_NUM]; - int gl_busy_peer_cnt; + device_type_s raw_multi_selected_peers[MAX_PEER_NUM]; + int raw_multi_selected_peer_cnt; - device_type_s raw_multi_selected_peers[MAX_PEER_NUM]; - int raw_multi_selected_peer_cnt; + int gl_multi_connect_peer_cnt; + device_type_s *gl_mul_conn_peers_start; - device_type_s gl_multi_connect_peers[MAX_PEER_NUM]; - int gl_multi_connect_peer_cnt; + // My status + bool I_am_group_owner; + bool I_am_connected; - // My status - bool I_am_group_owner; - bool I_am_connected; + // Following variables are used at the Multi connect view. + wfd_multi_connect_mode_e multi_connect_mode; + device_type_s *multi_conn_dev_list_start; + int gl_available_dev_cnt_at_multiconn_view; + int g_source_multi_connect_next; - // Following variables are used at the Multi connect view. - wfd_multi_connect_mode_e multi_connect_mode; - wfd_multi_sel_data_s multi_conn_dev_list[MAX_PEER_NUM]; - int gl_available_dev_cnt_at_multiconn_view; - int g_source_multi_connect_next; +#ifdef WFD_ON_OFF_GENLIST + int wfd_onoff; +#endif + wifi_direct_state_e wfd_status; + char *dev_name; + char *dev_pass; - int wfd_onoff; - int wfd_status; - char *dev_name; - char *dev_pass; + // For connect failed peers + int last_display_time; + Ecore_Timer *display_timer; - // For connect failed peers - int last_display_time; - Ecore_Timer *display_timer; + // Tethering + bool is_hotspot_off; + bool is_hotspot_locally_disabled; + tethering_h hotspot_handle; - //tethering - tethering_h hotspot_handle; - + // wfds service + char *wfds; + + // Device filter + int device_filter; + + // Whether support auto exit after successed connection + bool is_auto_exit; + + //Whether support multi connection + bool is_multi_connect; + bool is_select_all_checked; + + //view type for search + char *view_type; + + //Title of UG + char *title; + + // The ip address of connected peer + char *peer_ip_address; + + // The service name that supported WFDSP + char *service_name; + + // Whether initialize wfd-namager ok + bool is_init_ok; + + //timer for deleting progress bar + int timer_stop_progress_bar; + + //timer for multi connect reset + int timer_multi_reset; + + //if all the items are selected or not + bool is_multi_check_all_selected; + + //timer for remove not alive peer + int timer_delete_not_alive_peer; + + //wifi direct discovery status + int wfd_discovery_status; + + bool is_paused; + +#ifdef WFD_DBUS_LAUNCH + GCancellable *dbus_cancellable; + GDBusConnection *conn; +#endif + Ea_Theme_Color_Table *color_table; + Ea_Theme_Font_Table *font_table; }; -extern Elm_Gen_Item_Class sep_itc; -extern Elm_Gen_Item_Class sep_itc_end; -extern Elm_Gen_Item_Class head_itc; -extern Elm_Gen_Item_Class name_itc; +extern Elm_Gen_Item_Class device_name_title_itc; +#ifdef WFD_ON_OFF_GENLIST +extern Elm_Gen_Item_Class wfd_onoff_itc; +#endif +extern Elm_Gen_Item_Class device_name_itc; extern Elm_Gen_Item_Class title_itc; +extern Elm_Gen_Item_Class multi_view_title_itc; extern Elm_Gen_Item_Class peer_itc; +extern Elm_Gen_Item_Class title_no_device_itc; extern Elm_Gen_Item_Class noitem_itc; -extern Elm_Gen_Item_Class help_itc; -extern Elm_Gen_Item_Class button_itc; +extern Elm_Gen_Item_Class title_available_itc; extern Elm_Gen_Item_Class title_conn_itc; extern Elm_Gen_Item_Class peer_conn_itc; @@ -231,9 +379,30 @@ extern Elm_Gen_Item_Class peer_busy_itc; extern Elm_Gen_Item_Class title_multi_connect_itc; extern Elm_Gen_Item_Class peer_multi_connect_itc; +extern Elm_Gen_Item_Class select_all_multi_connect_itc; extern Elm_Gen_Item_Class title_conn_failed_itc; extern Elm_Gen_Item_Class peer_conn_failed_itc; +/** + * This function let the ug destroy the ug + * @return void + * @param[in] data the pointer to the main data structure + */ +void wfd_destroy_ug(void *data); + +/** + * This function is called when ON/OFF button is turned ON/OFF + * @return void + * @param[in] data the pointer to the main data structure + * @param[in] object + * @param[in] event + */ +void _onoff_changed_cb(void *data, Evas_Object *obj, void *event_info); +void toolbar_language_changed(void *data, Evas_Object *obj, void *event_info); +void ctxpopup_dismissed_cb(void *data, Evas_Object *obj, void *event_info); +void wfd_free_nodivice_item(struct ug_data *ugd); +void discover_cb(int error_code, wifi_direct_discovery_state_e discovery_state, void *user_data); + #endif /* __WFD_UG_H__ */ diff --git a/ug-wifidirect/include/wfd_ug_view.h b/ug-wifidirect/include/wfd_ug_view.h index 2a35949..d4ec29e 100755..100644 --- a/ug-wifidirect/include/wfd_ug_view.h +++ b/ug-wifidirect/include/wfd_ug_view.h @@ -21,119 +21,459 @@ #define __WFD_UG_VIEW_H__ #include <glib.h> -#include <syspopup_caller.h> -#define EDJDIR "/opt/ug/res/edje/ug-setting-wifidirect-efl" +#define EDJDIR "/usr/apps/setting-wifidirect-efl/res/edje/ug-setting-wifidirect-efl" #define WFD_UG_EDJ_PATH EDJDIR"/wfd_ug.edj" -#define WFD_IMG_DIR "/opt/ug/res/images/ug-setting-wifidirect-efl" -#define TICKERNOTI_SYSPOPUP "tickernoti-syspopup" - +#define WFD_IMG_DIR "/usr/apps/setting-wifidirect-efl/res/images/ug-setting-wifidirect-efl" /* Define icons */ +#define WFD_ICON_DEVICE_COMPUTER "A09_device_computer.png" +#define WFD_ICON_DEVICE_INPUT_DEVICE "A09_device_input_device.png" +#define WFD_ICON_DEVICE_PRINTER "A09_device_printer.png" +#define WFD_ICON_DEVICE_CAMERA "A09_device_camera.png" +#define WFD_ICON_DEVICE_STORAGE "A09_device_storage.png" +#define WFD_ICON_DEVICE_NETWORK_INFRA "A09_device_network_infrastructure.png" +#define WFD_ICON_DEVICE_DISPLAY "A09_device_display.png" +#define WFD_ICON_DEVICE_MULTIMEDIA "A09_device_multimedia.png" +#define WFD_ICON_DEVICE_GAMING "A09_device_gaming.png" +#define WFD_ICON_DEVICE_TELEPHONE "A09_device_telephone.png" +#define WFD_ICON_DEVICE_HEADSET "A09_device_headset.png" +#define WFD_ICON_DEVICE_UNKNOWN "A09_device_unknown.png" +#define WFD_ICON_DEVICE_BD "U04_device_BD.png" +#define WFD_ICON_DEVICE_DONGLE "U04_device_Dongle.png" +#define WFD_ICON_DEVICE_HOME_THEATER "U04_device_Home_Theater.png" +#define WFD_ICON_DEVICE_STB "U04_device_STB.png" + +/* Not support */ +#define WFD_ICON_DEVICE_HEADPHONE "A09_device_headphone.png" +#define WFD_ICON_DEVICE_MEDICAL "A09_device_Medical.png" +#define WFD_ICON_DEVICE_MOUSE "A09_device_mouse.png" -#define WFD_ICON_DEVICE_COMPUTER WFD_IMG_DIR"/A09_device_computer.png" -#define WFD_ICON_DEVICE_INPUT_DEVICE WFD_IMG_DIR"/A09_device_input_device.png" -#define WFD_ICON_DEVICE_PRINTER WFD_IMG_DIR"/A09_device_printer.png" -#define WFD_ICON_DEVICE_CAMERA WFD_IMG_DIR"/A09_device_camera.png" -#define WFD_ICON_DEVICE_STORAGE WFD_IMG_DIR"/A09_device_storage.png" -#define WFD_ICON_DEVICE_NETWORK_INFRA WFD_IMG_DIR"/A09_device_network_infrastructure.png" -#define WFD_ICON_DEVICE_DISPLAY WFD_IMG_DIR"/A09_device_display.png" -#define WFD_ICON_DEVICE_MULTIMEDIA_DEVICE WFD_IMG_DIR"/A09_device_multimedia_devices.png" -#define WFD_ICON_DEVICE_GAMING_DEVICE WFD_IMG_DIR"/A09_device_gaming_devices.png" -#define WFD_ICON_DEVICE_TELEPHONE WFD_IMG_DIR"/A09_device_telephone.png" -#define WFD_ICON_DEVICE_AUDIO_DEVICE WFD_IMG_DIR"/A09_device_audio_devices.png" - -#define WFD_ICON_DEVICE_COMPUTER_CONNECT WFD_IMG_DIR"/A09_device_computer_connect.png" -#define WFD_ICON_DEVICE_INPUT_DEVICE_CONNECT WFD_IMG_DIR"/A09_device_input_device_connect.png" -#define WFD_ICON_DEVICE_PRINTER_CONNECT WFD_IMG_DIR"/A09_device_printer_connect.png" -#define WFD_ICON_DEVICE_CAMERA_CONNECT WFD_IMG_DIR"/A09_device_camera_connect.png" -#define WFD_ICON_DEVICE_STORAGE_CONNECT WFD_IMG_DIR"/A09_device_storage_connect.png" -#define WFD_ICON_DEVICE_NETWORK_INFRA_CONNECT WFD_IMG_DIR"/A09_device_network_infrastructure_connect.png" -#define WFD_ICON_DEVICE_DISPLAY_CONNECT WFD_IMG_DIR"/A09_device_display_connect.png" -#define WFD_ICON_DEVICE_MULTIMEDIA_DEVICE_CONNECT WFD_IMG_DIR"/A09_device_multimedia_devices_connect.png" -#define WFD_ICON_DEVICE_GAMING_DEVICE_CONNECT WFD_IMG_DIR"/A09_device_gaming_devices_connect.png" -#define WFD_ICON_DEVICE_TELEPHONE_CONNECT WFD_IMG_DIR"/A09_device_telephone_connect.png" -#define WFD_ICON_DEVICE_AUDIO_DEVICE_CONNECT WFD_IMG_DIR"/A09_device_audio_devices_connect.png" - -#define WFD_ICON_CONNECTED WFD_IMG_DIR"/A09_Connect.png" - - -enum -{ - HEAD_TEXT_TYPE_DIRECT, - HEAD_TEXT_TYPE_DEACTIVATING, - HEAD_TEXT_TYPE_ACTIVATING, - HEAD_TEXT_TYPE_ACTIVATED, - HEAD_TEXT_TYPE_SCANING, +#define WFD_ICON_DEVICE_MORE_HELP "A09_popup_help.png" + +enum { + HEAD_TEXT_TYPE_DIRECT, + HEAD_TEXT_TYPE_DEACTIVATING, + HEAD_TEXT_TYPE_ACTIVATING, + HEAD_TEXT_TYPE_ACTIVATED, }; -enum -{ - /* User confirm */ - POPUP_TYPE_WIFI_OFF, - POPUP_TYPE_HOTSPOT_OFF, +enum { + TITLE_CONTENT_TYPE_NONE, + TITLE_CONTENT_TYPE_SCANNING, + TITLE_CONTENT_TYPE_FOUND, +}; + + +enum { + /* User confirm */ +#ifndef MODEL_BUILD_FEATURE_WLAN_CONCURRENT_MODE + POPUP_TYPE_WIFI_OFF, +#endif + + POPUP_TYPE_HOTSPOT_OFF = 1, - /* Activation */ - POPUP_TYPE_ACTIVATE_FAIL, - POPUP_TYPE_DEACTIVATE_FAIL, + /* Activation */ + POPUP_TYPE_ACTIVATE_FAIL, + POPUP_TYPE_ACTIVATE_FAIL_POLICY_RESTRICTS, + POPUP_TYPE_DEACTIVATE_FAIL, - /* Connection */ - POPUP_TYPE_LINK_TIMEOUT, - POPUP_TYPE_AUTH_FAIL, - POPUP_TYPE_LINK_FAIL, - POPUP_TYPE_UNKNOWN_ERROR, + /* Connection */ + POPUP_TYPE_LINK_TIMEOUT, + POPUP_TYPE_AUTH_FAIL, + POPUP_TYPE_LINK_FAIL, + POPUP_TYPE_UNKNOWN_ERROR, - POPUP_TYPE_TERMINATE, + POPUP_TYPE_INFO, + POPUP_TYPE_TERMINATE, + POPUP_TYPE_TERMINATE_DEACTIVATE_FAIL, + POPUP_TYPE_TERMINATE_NOT_SUPPORT, - /* Disconnect */ - POP_TYPE_DISCONNECT, + /* Disconnect */ + POP_TYPE_DISCONNECT, - /* Disconnect All*/ - POP_TYPE_DISCONNECT_ALL, + POP_TYPE_CANCEL_CONNECT, - /* Scan again */ - POP_TYPE_SCAN_AGAIN, + POP_TYPE_ACCEPT_CONNECTION, - /* multi connect */ - POP_TYPE_MULTI_CONNECT_POPUP, + /* Scan again */ + POP_TYPE_SCAN_AGAIN, - /* Busy device */ - POP_TYPE_BUSY_DEVICE_POPUP, + /* multi connect */ + POP_TYPE_MULTI_CONNECT_POPUP, + + /* Busy device */ + POP_TYPE_BUSY_DEVICE_POPUP, + + /* Automaticlly turn off */ + POP_TYPE_AUTOMATIC_TURN_OFF, }; struct ug_data *wfd_get_ug_data(); + +/** + * This function let the ug create the main view + * @return void + * @param[in] data the pointer to the main data structure + */ void create_wfd_ug_view(void *data); + +/** + * This function let the ug destroy the main view + * @return void + * @param[in] data the pointer to the main data structure + */ void destroy_wfd_ug_view(void *data); -void wfd_ug_view_refresh_glitem(void *obj); -void wfd_ug_view_refresh_button(void *obj, const char *text, int enable); + +/** + * This function let the ug update the genlist item + * @return void + * @param[in] gl_item the pointer to genlist item + */ +void wfd_ug_view_refresh_glitem(Elm_Object_Item *gl_item); + +/** + * This function let the ug refresh the attributes of button + * @return void + * @param[in] tb_item the pointer to the toolbar button + * @param[in] text the pointer to the text of button + * @param[in] enable whether the button is disabled + */ +void wfd_ug_view_refresh_button(Evas_Object *tb_item, const char *text, + int enable); + +/** + * This function let the ug update the peers + * @return void + * @param[in] data the pointer to the main data structure + */ void wfd_ug_view_update_peers(void *data); + +/** + * This function let the ug free the peers + * @return void + * @param[in] data the pointer to the main data structure + */ void wfd_ug_view_free_peers(void *data); + +/** + * This function let the ug create a action popup + * @return void + * @param[in] data the pointer to the main data structure + * @param[in] message the pointer to the text of popup + * @param[in] popup_type the message type + */ void wfd_ug_act_popup(void *data, const char *message, int popup_type); + +/** + * This function let the ug remove the action popup + * @return void + * @param[in] data the pointer to the main data structure + */ void wfg_ug_act_popup_remove(void *data); + +/** + * This function let the ug create a warning popup + * @return void + * @param[in] data the pointer to the main data structure + * @param[in] message the pointer to the text of popup + * @param[in] popup_type the message type + */ void wfd_ug_warn_popup(void *data, const char *message, int popup_type); -void wfg_ug_warn_popup_remove(void *data); -int _create_connected_dev_list(void *data); -int _change_multi_button_title(void *data); -void _wifid_create_about_view(struct ug_data *ugd); +/** + * This function let the ug create the view for multi connection + * @return void + * @param[in] ugd the pointer to the main data structure + */ void _wifid_create_multiconnect_view(struct ug_data *ugd); -void _sub_view_back_btn_cb(void *data, Evas_Object * obj, void *event_info); -void _back_btn_cb(void *data, Evas_Object * obj, void *event_info); +/** + * This function let the ug call it when click 'back' button + * @return void + * @param[in] data the pointer to the main data structure + * @param[in] obj the pointer to the evas object + * @param[in] event_info the pointer to the event information + */ +Eina_Bool _back_btn_cb(void *data, Elm_Object_Item *it); + +/** + * This function let the ug call it when click 'scan' button + * @return void + * @param[in] data the pointer to the main data structure + * @param[in] obj the pointer to the evas object + * @param[in] event_info the pointer to the event information + */ void _scan_btn_cb(void *data, Evas_Object * obj, void *event_info); -void _wfd_onoff_btn_cb(void *data, Evas_Object *obj, void *event_info); -void _wifid_create_multibutton_cb(void *data, Evas_Object * obj, void *event_info); +/** + * This function let the ug call it when click 'disconnect' button + * @return void + * @param[in] data the pointer to the main data structure + * @param[in] obj the pointer to the evas object + * @param[in] event_info the pointer to the event information + */ +void _wfd_ug_disconnect_button_cb(void *data, Evas_Object *obj, void *event_info); + +/** + * This function let the ug call it when click "Cancel Connection" button + * @return void + * @param[in] data the pointer to the main data structure + * @param[in] obj the pointer to the evas object + * @param[in] event_info the pointer to the event information + */ +void _wfd_ug_cancel_connection_button_cb(void *data, Evas_Object *obj, void *event_info); +/** + * This function let the ug get the found peers + * @return If success, return 0, else return -1 + * @param[in] ugd the pointer to the main data structure + */ int wfd_ug_get_discovered_peers(struct ug_data *ugd); + +/** + * This function let the ug get the connecting peer mac + * @return If success, return 0, else return -1 + * @param[in] ugd the pointer to the main data structure + */ +int wfd_ug_get_connecting_peer(struct ug_data *ugd); + +/** + * This function let the ug get the connected peers + * @return If success, return 0, else return -1 + * @param[in] ugd the pointer to the main data structure + */ int wfd_ug_get_connected_peers(struct ug_data *ugd); -int wfd_refresh_wifi_direct_state(void* data); -int wfd_multi_connect_next(void* data); +/** + * This function let the ug get the device status + * @return If success, return 0-3(available: 0, connected: 1, busy: 2, connected failed: 3), else return -1 + * @param[in] ugd the pointer to the main data structure + * @param[in] device the pointer to the number of connected failed devices + */ +//int wfd_get_device_status(void *data, device_type_s *device); + +/** + * This function let the ug refresh current status of wi-fi direct + * @return If success, return 0, else return -1 + * @param[in] data the pointer to the main data structure + */ +int wfd_refresh_wifi_direct_state(void *data); + +/** + * This function let the ug free the selected peers in multi connect view + * @return void + * @param[in] data the pointer to the main data structure + */ +void wfd_free_multi_selected_peers(void *data); + +/** + * This function let the ug stop to connect to selected peer + * @return If success, return 0, else return -1 + * @param[in] data the pointer to the main data structure + */ int wfd_stop_multi_connect(void *data); -gboolean wfd_multi_connect_next_cb(void* data); +/** + * This function let the ug connect to the next selected peer automatically + * @return If stop the timer, return false, else return true + * @param[in] data the pointer to the main data structure + */ +gboolean wfd_multi_connect_next_cb(void *data); + +/** + * This function let the ug add a dialogue separator + * @return the separator item + * @param[in] genlist the pointer to the genlist + * @param[in] separator_style the style of separator + */ +Elm_Object_Item *wfd_add_dialogue_separator(Evas_Object *genlist, + const char *separator_style); + +/** + * This function let the ug free the multi connect devices + * @return 0 + * @param[in] data the pointer to the main data structure + */ +int wfd_free_multiconnect_device(struct ug_data *ugd); + +/** + * This function let the ug update the multi connect devices + * @return 0 + * @param[in] ugd the pointer to the main data structure + * @param[in] is_free_all_peers true to free all peers + */ +int wfd_update_multiconnect_device(struct ug_data *ugd, bool is_free_all_peers); + +/** + * This function let the ug create the view for multi connection + * @return void + * @param[in] ugd the pointer to the main data structure + */ +void wfd_create_multiconnect_view(struct ug_data *ugd); + +/** + * This function let the ug delete search progressbar + * @return void + * @param[in] user_data the pointer to the main data structure + */ +int wfd_delete_progressbar_cb(void *user_data); + +/** + * This function let the ug insert peer item to genlist + * @return int + * @param[in] genlist the pointer to genlist + * @param[in] item the pointer to item to insert after + * @param[in] itc Elm_Gen_Item_Class + * @param[in] start_pos the pointer to the start position of peer array + * @param[in] peer_for_insert the pointer to the peer to insert + * @param[in] callback callback for peer select + */ +int insert_gl_item(Evas_Object *genlist, Elm_Object_Item *item, + Elm_Gen_Item_Class *itc, device_type_s **start_pos, + device_type_s *peer_for_insert, void *callback); + +/** + * This function let the ug get the insert position for next item + * @return item the position to insert after + * @param[in] peer the pointer to peer to search + * @param[in] pre_item the title item of peer list + * @param[in] peer_cnt the count of gl peers + */ +Elm_Object_Item *get_insert_postion(device_type_s *peer, + Elm_Object_Item *pre_item, int peer_cnt); + +/** + * This function let the ug find a peer in genlist + * @return peer the pointer of peer that found + * @param[in] start_pos the start position of peers list + * @param[in] mac_addr the mac_addr of peer for search + */ +device_type_s *find_peer_in_glist(device_type_s *start_pos, const char *mac_addr); + +/** + * This function let the ug free gl peers + * @return void + * @param[in] gl_peers_start the start pointer of peer list that for free + */ +void wfd_ug_view_free_peer(device_type_s *gl_peers_start); + +/** + * This function let the ug exits automatically after successed connection + * @return void + * @param[in] user_data the pointer to the main data structure + */ +void _wfd_ug_auto_exit(void *user_data); + +/** + * This function let the ug update the buttons of toolbar + * @return void + * @param[in] ugd the pointer to the main data structure + */ +void wfd_ug_update_toolbar(struct ug_data *ugd); + +/** + * This function let the ug update the available and busy peers + * @return void + * @param[in] data the pointer to the main data structure + */ +void wfd_ug_update_available_peers(void *data); + +/** + * This function let the ug init the genlist + * @return void + * @param[in] data the pointer to the main data structure + * @param[in] is_free_all_peers true to free all peer items + */ +void wfd_ug_view_init_genlist(void *data, bool is_free_all_peers); + +/** + * This function let the ug delete dead peers + * @return void + * @param[in] ugd the pointer to the main data structure + * @param[in] start_pos the pointer to start of peer list + * @param[in] cnt the pointer to the number of peets in list + */ +void delete_not_alive_peers(struct ug_data *ugd, device_type_s **start_pos, + int *cnt); + +/** + * This function let the ug mark up the dead peers + * @return void + * @param[in] ugd the pointer to the main data structure + * @param[in] start_pos the pointer to start of peer list + */ +void set_not_alive_peers(device_type_s *start_pos); + +/** + * This function let the ug update connected peers + * @return void + * @param[in] data the pointer to the main data structure + */ +void wfd_ug_update_connected_peers(void *data); + +/** + * This function let the ug update the multi-connect peers + * @return void + * @param[in] data the pointer to the main data structure + */ +void wfd_ug_view_update_multiconn_peers(void *data); + +/** + * This function let the ug update the failed peers + * @return void + * @param[in] data the pointer to the main data structure + */ +void wfd_ug_update_failed_peers(void *data); + +/** + * This function let the ug cancel progressbar stop timer + * @return void + * @param[in] ugd the pointer to the main data structure + */ +void wfd_cancel_progressbar_stop_timer(struct ug_data *ugd); + +/** + * This function let the ug cancel not-alive devices delete timer + * @return void + * @param[in] ugd the pointer to the main data structure + */ +void wfd_cancel_not_alive_delete_timer(struct ug_data *ugd); + +/** + * This function let the ug move ctxpopup to specified location + * @return void + */ +void _ctxpopup_move(); + +int _create_available_dev_genlist(void *data); + +Evas_Object *_create_no_device_genlist(void *data); + +Evas_Object *_create_no_device_multiconnect_genlist(struct ug_data *ugd); + +/** + * This function let the ug create rename popup + * @return void + * @param[in] data the pointer to the main data structure + */ + +void _gl_rename_device_sel(void *data, Evas_Object *obj, void *event_info); -void wfd_ug_tickernoti_popup(char *msg); +#ifdef WFD_ON_OFF_GENLIST +/** + * This function let the ug create on off check + * @return void + * @param[in] parent the pointer to the naviframe + */ +void wfd_ug_create_on_off_check(struct ug_data *ugd); +#endif +/** + * This function is called after select all button is checked to select all available devices + * @return void + * @param[in] data the pointer to the main data structure + */ +void wfd_genlist_select_all_check_changed_cb(void *data, Evas_Object *obj, + void *event_info); #endif /* __WFD_UG_VIEW_H__ */ |