Applied changes from EFL and wifi-direct APIS
[apps/native/ug-wifi-direct.git] / ug-wifidirect / include / wfd_ug.h
index be905df..bf6d3f0 100755 (executable)
 #include <dlog.h>
 #include <ui-gadget-module.h>
 #include <tethering.h>
+#include <wifi-direct.h>
 
 #define PACKAGE "ug-setting-wifidirect-efl"
 #define LOCALEDIR "/usr/ug/res/locale"
 
 #define DIRECT_TAG  "wfd_ug"
 #define DBG(log_level, format, args...) \
-       LOG(log_level, DIRECT_TAG, "[%s()][%d] " format, __FUNCTION__, __LINE__, ##args)
+       LOG(log_level, DIRECT_TAG, "[%s()][%d] " format, __FUNCTION__, __LINE__, ##args)
 
 #define __FUNC_ENTER__  DBG(LOG_VERBOSE, "+\n")
 #define __FUNC_EXIT__   DBG(LOG_VERBOSE, "-\n")
 
-#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
+       } \
+} while (0)
 
 #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
+#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        "Tizen"
 #define MAC_LENGTH  18
 #define SSID_LENGTH 32
 #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_NO_ACTION_TIME_OUT 300            /*5min*/
+#define MAX_SCAN_TIME_OUT 30
 
 #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?"
+#if 1
+/* To-Do : Text should be translated. */
+#define IDS_WFD_POP_SCAN_AGAIN "Current connection will be disconnected so that scanning can start.Continue?"
 #define IDS_WFD_POP_WARN_BUSY_DEVICE "Unavailable device. Device is connected to another device."
+#define IDS_WFD_POP_AUTOMATIC_TURN_OFF "There has been no activity for 5 minutes since Wi-Fi Direct was enabled. To extend battery life, Wi-Fi Direct has been disabled."
 #define IDS_WFD_BODY_FAILED_DEVICES "Failed Devices"
+#define IDS_WFD_TITLE_ABOUT_WIFI_DIRECT "About Wi-Fi Direct"
 #endif
 
 
@@ -82,145 +85,142 @@ 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 struct {
+       char ssid[SSID_LENGTH];
+       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;
 } device_type_s;
 
-typedef struct
-{
-    bool dev_sel_state;
-    device_type_s peer;
+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 *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;
+struct ug_data {
+       Evas_Object *base;
+       ui_gadget_h ug;
 
-    Elm_Object_Item *about_wfd_item;
-    Elm_Object_Item *about_wfdsp_sep_end_item;
+       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 *conn_wfd_item;
+       Elm_Object_Item *head;
+       Evas_Object *scan_btn;
+       Evas_Object *multi_scan_btn;
+       Evas_Object *multi_connect_btn;
 
-    Elm_Object_Item *conn_failed_wfd_item;
-    Elm_Object_Item *conn_failed_wfd_sep_item;
+       Elm_Object_Item *nodevice_title_item;
+       Elm_Object_Item *nodevice_item;
 
-    Elm_Object_Item *avlbl_wfd_item;
+       Elm_Object_Item *about_wfd_item;
+       Elm_Object_Item *about_wfd_sep_high_item;
+       Elm_Object_Item *about_wfd_sep_low_item;
 
-    Elm_Object_Item *busy_wfd_item;
-    Elm_Object_Item *busy_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 *multi_connect_wfd_item;
+       Elm_Object_Item *multi_button_item;
+       Elm_Object_Item *multi_button_sep_item;
 
-    Elm_Object_Item *multi_button_item;
-    Elm_Object_Item *multi_button_sep_high_item;
-    Elm_Object_Item *multi_button_sep_low_item;
+       Elm_Object_Item *mcview_select_all_item;
+       Elm_Object_Item *mcview_title_item;
+       Elm_Object_Item *mcview_nodevice_item;
 
+       Evas_Object *back_btn;
+       Evas_Object *multi_btn;
 
-    Elm_Object_Item *mcview_select_all_item;
-    Elm_Object_Item *mcview_title_item;
-    Elm_Object_Item *mcview_nodevice_item;
+       // Notify
+       Evas_Object *notify;
+       Evas_Object *notify_layout;
 
+       int head_text_mode;
 
-    Evas_Object *multi_btn;
+       // 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;
 
-    int head_text_mode;
+       // Peer data in the Genlist
+       device_type_s gl_connected_peers[MAX_PEER_NUM];
+       int gl_connected_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;
+       device_type_s gl_connected_failed_peers[MAX_PEER_NUM];
+       int gl_connected_failed_peer_cnt;
 
-    // Peer data in the Genlist
-    device_type_s gl_connected_peers[MAX_PEER_NUM];
-    int gl_connected_peer_cnt;
+       device_type_s gl_available_peers[MAX_PEER_NUM];
+       int gl_available_peer_cnt;
 
-    device_type_s gl_connected_failed_peers[MAX_PEER_NUM];
-    int gl_connected_failed_peer_cnt;
+       device_type_s gl_busy_peers[MAX_PEER_NUM];
+       int gl_busy_peer_cnt;
 
-    device_type_s gl_available_peers[MAX_PEER_NUM];
-    int gl_available_peer_cnt;
+       device_type_s raw_multi_selected_peers[MAX_PEER_NUM];
+       int raw_multi_selected_peer_cnt;
 
-    device_type_s gl_busy_peers[MAX_PEER_NUM];
-    int gl_busy_peer_cnt;
+       device_type_s gl_multi_connect_peers[MAX_PEER_NUM];
+       int gl_multi_connect_peer_cnt;
 
-    device_type_s raw_multi_selected_peers[MAX_PEER_NUM];
-    int raw_multi_selected_peer_cnt;
+       // My status
+       bool I_am_group_owner;
+       bool I_am_connected;
 
-    device_type_s gl_multi_connect_peers[MAX_PEER_NUM];
-    int gl_multi_connect_peer_cnt;
+       // 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;
 
-    // My status
-    bool I_am_group_owner;
-    bool I_am_connected;
+       int wfd_onoff;
+       wifi_direct_state_e wfd_status;
+       char *dev_name;
+       char *dev_pass;
 
-    // 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;
+       // For connect failed peers
+       int last_display_time;
+       Ecore_Timer *display_timer;
 
-    int wfd_onoff;
-    int wfd_status;
-    char *dev_name;
-    char *dev_pass;
+       // Tethering
+       bool is_hotspot_off;
+       tethering_h hotspot_handle;
 
-    // For connect failed peers
-    int last_display_time;
-    Ecore_Timer *display_timer;
+       // Used for automatic turn off
+       int last_wfd_status;
+       int last_wfd_time;
+       Ecore_Timer *monitor_timer;
 
-    //tethering
-    tethering_h hotspot_handle;
-    
+       // Re-discover or not
+       bool is_re_discover;
 };
 
-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 title_itc;
 extern Elm_Gen_Item_Class peer_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_conn_itc;