Skip to content

Commit 6eeee5e

Browse files
authored
Merge pull request #6292 from juhaylinen/rtw-fixes
rtl8195am - improve credentials handling
2 parents abb74e8 + 1a5e751 commit 6eeee5e

File tree

1 file changed

+19
-11
lines changed

1 file changed

+19
-11
lines changed

targets/TARGET_Realtek/TARGET_AMEBA/RTWInterface.cpp

Lines changed: 19 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ static rtw_result_t scan_result_handler( rtw_scan_handler_result_t* malloced_sca
8686
}
8787

8888
RTWInterface::RTWInterface(bool debug)
89-
: _dhcp(true), _ip_address(), _netmask(), _gateway()
89+
: _dhcp(true), _ssid(), _pass(), _ip_address(), _netmask(), _gateway()
9090
{
9191
emac_interface_t *emac;
9292
int ret;
@@ -135,7 +135,7 @@ nsapi_error_t RTWInterface::set_dhcp(bool dhcp)
135135
*/
136136
nsapi_error_t RTWInterface::set_credentials(const char *ssid, const char *pass, nsapi_security_t security)
137137
{
138-
if(!ssid) {
138+
if(!ssid || (strlen(ssid) == 0)) {
139139
return NSAPI_ERROR_PARAMETER;
140140
}
141141

@@ -149,6 +149,9 @@ nsapi_error_t RTWInterface::set_credentials(const char *ssid, const char *pass,
149149
}
150150
break;
151151
case NSAPI_SECURITY_NONE:
152+
if(pass && strlen(pass) > 0) {
153+
return NSAPI_ERROR_PARAMETER;
154+
}
152155
break;
153156
default:
154157
return NSAPI_ERROR_PARAMETER;
@@ -166,7 +169,8 @@ nsapi_error_t RTWInterface::connect()
166169
int ret;
167170
rtw_security_t sec;
168171

169-
if (!_ssid || (!_pass && _security != NSAPI_SECURITY_NONE)) {
172+
if (!_ssid || (strlen(_ssid) == 0) ||
173+
(!_pass && _security != NSAPI_SECURITY_NONE)) {
170174
printf("Invalid credentials\r\n");
171175
return NSAPI_ERROR_PARAMETER;
172176
}
@@ -187,11 +191,6 @@ nsapi_error_t RTWInterface::connect()
187191
return NSAPI_ERROR_PARAMETER;
188192
}
189193

190-
if(_channel > 0 && _channel < 14){
191-
uint8_t pscan_config = PSCAN_ENABLE;
192-
wifi_set_pscan_chan(&_channel, &pscan_config, 1);
193-
}
194-
195194
ret = wifi_connect(_ssid, sec, _pass, strlen(_ssid), strlen(_pass), 0, (void *)NULL);
196195
if (ret != RTW_SUCCESS) {
197196
printf("failed: %d\r\n", ret);
@@ -229,7 +228,10 @@ nsapi_error_t RTWInterface::scan(WiFiAccessPoint *res, unsigned count)
229228

230229
nsapi_error_t RTWInterface::set_channel(uint8_t channel)
231230
{
232-
_channel = channel;
231+
// Not supported for STA mode wifi driver
232+
if (channel != 0)
233+
return NSAPI_ERROR_UNSUPPORTED;
234+
233235
return NSAPI_ERROR_OK;
234236
}
235237

@@ -244,8 +246,14 @@ int8_t RTWInterface::get_rssi()
244246
nsapi_error_t RTWInterface::connect(const char *ssid, const char *pass,
245247
nsapi_security_t security, uint8_t channel)
246248
{
247-
set_credentials(ssid, pass, security);
248-
set_channel(channel);
249+
nsapi_error_t ret;
250+
251+
ret = set_credentials(ssid, pass, security);
252+
if(ret != NSAPI_ERROR_OK) return ret;
253+
254+
ret = set_channel(channel);
255+
if(ret != NSAPI_ERROR_OK) return ret;
256+
249257
return connect();
250258
}
251259

0 commit comments

Comments
 (0)