/**
 * @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);
}