Merge pull request #6292 from juhaylinen/rtw-fixes

rtl8195am - improve credentials handling
pull/6211/merge
Cruz Monrreal 2018-03-15 10:57:39 -05:00 committed by GitHub
commit 6eeee5e49f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 19 additions and 11 deletions

View File

@ -86,7 +86,7 @@ static rtw_result_t scan_result_handler( rtw_scan_handler_result_t* malloced_sca
} }
RTWInterface::RTWInterface(bool debug) RTWInterface::RTWInterface(bool debug)
: _dhcp(true), _ip_address(), _netmask(), _gateway() : _dhcp(true), _ssid(), _pass(), _ip_address(), _netmask(), _gateway()
{ {
emac_interface_t *emac; emac_interface_t *emac;
int ret; int ret;
@ -135,7 +135,7 @@ nsapi_error_t RTWInterface::set_dhcp(bool dhcp)
*/ */
nsapi_error_t RTWInterface::set_credentials(const char *ssid, const char *pass, nsapi_security_t security) nsapi_error_t RTWInterface::set_credentials(const char *ssid, const char *pass, nsapi_security_t security)
{ {
if(!ssid) { if(!ssid || (strlen(ssid) == 0)) {
return NSAPI_ERROR_PARAMETER; return NSAPI_ERROR_PARAMETER;
} }
@ -149,6 +149,9 @@ nsapi_error_t RTWInterface::set_credentials(const char *ssid, const char *pass,
} }
break; break;
case NSAPI_SECURITY_NONE: case NSAPI_SECURITY_NONE:
if(pass && strlen(pass) > 0) {
return NSAPI_ERROR_PARAMETER;
}
break; break;
default: default:
return NSAPI_ERROR_PARAMETER; return NSAPI_ERROR_PARAMETER;
@ -166,7 +169,8 @@ nsapi_error_t RTWInterface::connect()
int ret; int ret;
rtw_security_t sec; rtw_security_t sec;
if (!_ssid || (!_pass && _security != NSAPI_SECURITY_NONE)) { if (!_ssid || (strlen(_ssid) == 0) ||
(!_pass && _security != NSAPI_SECURITY_NONE)) {
printf("Invalid credentials\r\n"); printf("Invalid credentials\r\n");
return NSAPI_ERROR_PARAMETER; return NSAPI_ERROR_PARAMETER;
} }
@ -187,11 +191,6 @@ nsapi_error_t RTWInterface::connect()
return NSAPI_ERROR_PARAMETER; return NSAPI_ERROR_PARAMETER;
} }
if(_channel > 0 && _channel < 14){
uint8_t pscan_config = PSCAN_ENABLE;
wifi_set_pscan_chan(&_channel, &pscan_config, 1);
}
ret = wifi_connect(_ssid, sec, _pass, strlen(_ssid), strlen(_pass), 0, (void *)NULL); ret = wifi_connect(_ssid, sec, _pass, strlen(_ssid), strlen(_pass), 0, (void *)NULL);
if (ret != RTW_SUCCESS) { if (ret != RTW_SUCCESS) {
printf("failed: %d\r\n", ret); printf("failed: %d\r\n", ret);
@ -229,7 +228,10 @@ nsapi_error_t RTWInterface::scan(WiFiAccessPoint *res, unsigned count)
nsapi_error_t RTWInterface::set_channel(uint8_t channel) nsapi_error_t RTWInterface::set_channel(uint8_t channel)
{ {
_channel = channel; // Not supported for STA mode wifi driver
if (channel != 0)
return NSAPI_ERROR_UNSUPPORTED;
return NSAPI_ERROR_OK; return NSAPI_ERROR_OK;
} }
@ -244,8 +246,14 @@ int8_t RTWInterface::get_rssi()
nsapi_error_t RTWInterface::connect(const char *ssid, const char *pass, nsapi_error_t RTWInterface::connect(const char *ssid, const char *pass,
nsapi_security_t security, uint8_t channel) nsapi_security_t security, uint8_t channel)
{ {
set_credentials(ssid, pass, security); nsapi_error_t ret;
set_channel(channel);
ret = set_credentials(ssid, pass, security);
if(ret != NSAPI_ERROR_OK) return ret;
ret = set_channel(channel);
if(ret != NSAPI_ERROR_OK) return ret;
return connect(); return connect();
} }