Skip to content

Commit 6d56ffe

Browse files
committed
rg_network: Added rg_network_wifi_delete_config
1 parent c46db02 commit 6d56ffe

3 files changed

Lines changed: 42 additions & 39 deletions

File tree

components/retro-go/rg_gui.c

Lines changed: 8 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1702,7 +1702,7 @@ static rg_gui_event_t wifi_status_cb(rg_gui_option_t *option, rg_gui_event_t eve
17021702
static rg_gui_event_t wifi_manage_slot_cb(rg_gui_option_t *option, rg_gui_event_t event)
17031703
{
17041704
int slot = option->arg;
1705-
1705+
17061706
if (event == RG_DIALOG_ENTER)
17071707
{
17081708
rg_wifi_config_t config;
@@ -1724,15 +1724,15 @@ static rg_gui_event_t wifi_manage_slot_cb(rg_gui_option_t *option, rg_gui_event_
17241724
};
17251725

17261726
int action = rg_gui_dialog(title, slot_options, 0);
1727-
1727+
17281728
switch (action)
17291729
{
17301730
case 1: // Connect
17311731
rg_settings_set_boolean(NS_WIFI, SETTING_WIFI_ENABLE, true);
17321732
rg_settings_set_number(NS_WIFI, SETTING_WIFI_SLOT, slot);
17331733
wifi_toggle_interactive(true, slot);
17341734
break;
1735-
1735+
17361736
case 2: // Edit SSID
17371737
{
17381738
char *new_ssid = rg_gui_input_str(_("Edit SSID"), _("Enter new network name:"), config.ssid);
@@ -1747,7 +1747,7 @@ static rg_gui_event_t wifi_manage_slot_cb(rg_gui_option_t *option, rg_gui_event_
17471747
free(new_ssid);
17481748
break;
17491749
}
1750-
1750+
17511751
case 3: // Edit Password
17521752
{
17531753
char *new_password = rg_gui_input_str(_("Edit Password"), _("Enter new password:"), config.password);
@@ -1762,28 +1762,20 @@ static rg_gui_event_t wifi_manage_slot_cb(rg_gui_option_t *option, rg_gui_event_
17621762
free(new_password);
17631763
break;
17641764
}
1765-
1765+
17661766
case 4: // Delete
17671767
if (rg_gui_confirm(_("Delete Network"), _("Are you sure you want to delete this network configuration?"), false))
17681768
{
1769-
char key[16];
1770-
snprintf(key, sizeof(key), "ssid%d", slot);
1771-
rg_settings_delete(NS_WIFI, key);
1772-
snprintf(key, sizeof(key), "password%d", slot);
1773-
rg_settings_delete(NS_WIFI, key);
1774-
snprintf(key, sizeof(key), "channel%d", slot);
1775-
rg_settings_delete(NS_WIFI, key);
1776-
snprintf(key, sizeof(key), "mode%d", slot);
1777-
rg_settings_delete(NS_WIFI, key);
1769+
rg_network_wifi_delete_config(slot);
17781770
rg_settings_commit();
17791771
rg_gui_alert(_("Success"), _("Network configuration deleted"));
17801772
}
17811773
break;
17821774
}
1783-
1775+
17841776
return RG_DIALOG_REDRAW;
17851777
}
1786-
1778+
17871779
return RG_DIALOG_VOID;
17881780
}
17891781

components/retro-go/rg_network.c

Lines changed: 29 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -92,31 +92,29 @@ static void network_event_handler(void *arg, esp_event_base_t event_base, int32_
9292
}
9393
#endif
9494

95+
#define CFG_KEY(key, slot) ({snprintf(key_buffer, sizeof(key_buffer), "%s%d", key, slot); key_buffer;})
96+
9597
bool rg_network_wifi_read_config(int slot, rg_wifi_config_t *out)
9698
{
9799
if (slot < 0 || slot > 99)
98100
return false;
99101

100-
char key_ssid[16], key_password[16], key_channel[16], key_mode[16];
101102
rg_wifi_config_t config = {0};
103+
char key_buffer[64] = {0};
102104
char *ptr;
103105

104-
snprintf(key_ssid, 16, "%s%d", SETTING_WIFI_SSID, slot);
105-
snprintf(key_password, 16, "%s%d", SETTING_WIFI_PASSWORD, slot);
106-
snprintf(key_channel, 16, "%s%d", SETTING_WIFI_CHANNEL, slot);
107-
snprintf(key_mode, 16, "%s%d", SETTING_WIFI_MODE, slot);
108-
109-
RG_LOGD("Looking for '%s' (slot %d)\n", key_ssid, slot);
106+
RG_LOGD("Looking for '%s' (slot %d)", CFG_KEY(SETTING_WIFI_SSID, slot), slot);
110107

111-
if ((ptr = rg_settings_get_string(NS_WIFI, key_ssid, NULL)))
108+
if ((ptr = rg_settings_get_string(NS_WIFI, CFG_KEY(SETTING_WIFI_SSID, slot), NULL)))
112109
memccpy(config.ssid, ptr, 0, 32), free(ptr);
113-
if ((ptr = rg_settings_get_string(NS_WIFI, key_password, NULL)))
110+
if ((ptr = rg_settings_get_string(NS_WIFI, CFG_KEY(SETTING_WIFI_PASSWORD, slot), NULL)))
114111
memccpy(config.password, ptr, 0, 64), free(ptr);
115-
config.channel = rg_settings_get_number(NS_WIFI, key_channel, 0);
116-
config.ap_mode = rg_settings_get_number(NS_WIFI, key_mode, 0);
112+
config.channel = rg_settings_get_number(NS_WIFI, CFG_KEY(SETTING_WIFI_CHANNEL, slot), 0);
113+
config.ap_mode = rg_settings_get_number(NS_WIFI, CFG_KEY(SETTING_WIFI_MODE, slot), 0);
117114

118115
if (!config.ssid[0] && slot == 0)
119116
{
117+
RG_LOGD("Looking for '%s' (slot %d)", SETTING_WIFI_SSID, slot);
120118
if ((ptr = rg_settings_get_string(NS_WIFI, SETTING_WIFI_SSID, NULL)))
121119
memccpy(config.ssid, ptr, 0, 32), free(ptr);
122120
if ((ptr = rg_settings_get_string(NS_WIFI, SETTING_WIFI_PASSWORD, NULL)))
@@ -137,19 +135,29 @@ bool rg_network_wifi_write_config(int slot, const rg_wifi_config_t *config)
137135
if (slot < 0 || slot > 99 || !config)
138136
return false;
139137

140-
char key_ssid[16], key_password[16], key_channel[16], key_mode[16];
138+
RG_LOGD("Writing config to slot %d", slot);
139+
140+
char key_buffer[64] = {0};
141+
rg_settings_set_string(NS_WIFI, CFG_KEY(SETTING_WIFI_SSID, slot), config->ssid);
142+
rg_settings_set_string(NS_WIFI, CFG_KEY(SETTING_WIFI_PASSWORD, slot), config->password);
143+
rg_settings_set_number(NS_WIFI, CFG_KEY(SETTING_WIFI_CHANNEL, slot), config->channel);
144+
rg_settings_set_number(NS_WIFI, CFG_KEY(SETTING_WIFI_MODE, slot), config->ap_mode);
141145

142-
snprintf(key_ssid, 16, "%s%d", SETTING_WIFI_SSID, slot);
143-
snprintf(key_password, 16, "%s%d", SETTING_WIFI_PASSWORD, slot);
144-
snprintf(key_channel, 16, "%s%d", SETTING_WIFI_CHANNEL, slot);
145-
snprintf(key_mode, 16, "%s%d", SETTING_WIFI_MODE, slot);
146+
return true;
147+
}
148+
149+
bool rg_network_wifi_delete_config(int slot)
150+
{
151+
if (slot < 0 || slot > 99)
152+
return false;
146153

147-
RG_LOGD("Writing to '%s' (slot %d)\n", key_ssid, slot);
154+
RG_LOGD("Deleting config in slot %d", slot);
148155

149-
rg_settings_set_string(NS_WIFI, key_ssid, config->ssid);
150-
rg_settings_set_string(NS_WIFI, key_password, config->password);
151-
rg_settings_set_number(NS_WIFI, key_channel, config->channel);
152-
rg_settings_set_number(NS_WIFI, key_mode, config->ap_mode);
156+
char key_buffer[64] = {0};
157+
rg_settings_delete(NS_WIFI, CFG_KEY(SETTING_WIFI_SSID, slot));
158+
rg_settings_delete(NS_WIFI, CFG_KEY(SETTING_WIFI_PASSWORD, slot));
159+
rg_settings_delete(NS_WIFI, CFG_KEY(SETTING_WIFI_CHANNEL, slot));
160+
rg_settings_delete(NS_WIFI, CFG_KEY(SETTING_WIFI_MODE, slot));
153161

154162
return true;
155163
}

components/retro-go/rg_network.h

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,12 +33,15 @@ typedef struct
3333
bool rg_network_init(void);
3434
void rg_network_deinit(void);
3535
bool rg_network_wifi_set_config(const rg_wifi_config_t *config);
36-
bool rg_network_wifi_read_config(int slot, rg_wifi_config_t *out);
37-
bool rg_network_wifi_write_config(int slot, const rg_wifi_config_t *config);
3836
bool rg_network_wifi_start(void);
3937
void rg_network_wifi_stop(void);
4038
rg_network_t rg_network_get_info(void);
4139

40+
// Configuration slots management
41+
bool rg_network_wifi_read_config(int slot, rg_wifi_config_t *out);
42+
bool rg_network_wifi_write_config(int slot, const rg_wifi_config_t *config);
43+
bool rg_network_wifi_delete_config(int slot);
44+
4245
typedef struct
4346
{
4447
int max_redirections;

0 commit comments

Comments
 (0)