/** * @brief Create a new profile * * For open networks we only need to add its ssid and generate a profile ID * However more fields to be added when supporting secured wifi networks. */ void create_new_profile(gchar *ssid, GStrv security, gboolean hidden) { if(NULL == ssid) return; wifi_profile_t *new_profile = g_new0(wifi_profile_t, 1); if(NULL == new_profile) { WCA_LOG_FATAL("Out of memory!"); return; } new_profile->profile_id = gprofile_id++; new_profile->ssid = g_strdup(ssid); new_profile->hidden = hidden; if(NULL != security) { gsize i; new_profile->security = (GStrv) g_new0(GStrv, 1); for (i = 0; i < g_strv_length(security); i++) { new_profile->security[i] = g_strdup(security[i]); } } wifi_profile_list = g_slist_append(wifi_profile_list, (gpointer)new_profile); /* Store wifi profiles */ store_wifi_setting(WIFI_PROFILELIST_SETTING, NULL); }
void delete_profile(wifi_profile_t *profile) { if(NULL == profile) return; /* Delete the link from the list */ GSList *node = g_slist_find(wifi_profile_list, profile); if(NULL != node) { wifi_profile_list = g_slist_remove_link( wifi_profile_list, g_slist_find(wifi_profile_list, profile)); } g_free(profile->ssid); g_free(profile); profile = NULL; store_wifi_setting(WIFI_PROFILELIST_SETTING, NULL); }
void move_profile_to_head(wifi_profile_t *profile) { if(NULL == profile) return; GSList *node = g_slist_find(wifi_profile_list, profile); if(NULL != node) { /* If the given profile is already the head, return */ if(node == wifi_profile_list) return; /* Delete the link from the list */ wifi_profile_list = g_slist_remove_link( wifi_profile_list, g_slist_find(wifi_profile_list, profile)); /* Then add it to start of the list */ wifi_profile_list = g_slist_prepend( wifi_profile_list, profile); } store_wifi_setting(WIFI_PROFILELIST_SETTING, NULL); }
/** * @brief Create a new profile * * For open networks we only need to add its ssid and generate a profile ID * However more fields to be added when supporting secured wifi networks. */ void create_new_profile(gchar *ssid) { if(NULL == ssid) return; wifi_profile_t *new_profile = g_new0(wifi_profile_t, 1); if(NULL == new_profile) { g_error("Out of memory!"); return; } new_profile->profile_id = gprofile_id++; new_profile->ssid = g_strdup(ssid); wifi_profile_list = g_slist_append(wifi_profile_list, (gpointer)new_profile); /* Store wifi profiles */ store_wifi_setting(WIFI_PROFILELIST_SETTING, NULL); }