+/**
+ * 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);
+
+#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);