@@ -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+
9597bool 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}
0 commit comments