11#include " WiFi.h"
22
3+ #define SSID_MAX_LENGTH 32
4+
35bool arduino::WiFiClass::isVisible (const char * ssid) {
46 for (int i=0 ; i<10 ; i++) {
5- if (strncmp (ap_list[i].get_ssid (), ssid, 32 ) == 0 ) {
7+ if (strncmp (ap_list[i].get_ssid (), ssid, SSID_MAX_LENGTH ) == 0 ) {
68 connected_ap = i;
79 return true ;
810 }
@@ -21,34 +23,22 @@ SocketAddress arduino::WiFiClass::socketAddressFromIpAddress(arduino::IPAddress
2123}
2224
2325int arduino::WiFiClass::begin (const char * ssid, const char *passphrase) {
24- if (_ssid) free (_ssid);
25-
26- _ssid = (char *)malloc (33 );
27- if (!_ssid) {
28- // tr_error("Could not allocate ssid buffer");
29- return WL_CONNECT_FAILED;
30- }
31-
3226 if (wifi_if == nullptr ) {
3327 // Q: What is the callback for?
3428 _initializerCallback ();
3529 if (wifi_if == nullptr ) return WL_CONNECT_FAILED;
36- }
37-
38- memcpy (_ssid, ssid, 33 );
39- // too long? break it off
40- if (strlen (ssid) > 32 ) _ssid[32 ] = 0 ;
30+ }
4131
4232 scanNetworks ();
4333 // use scan result to populate security field
44- if (!isVisible (_ssid )) {
34+ if (!isVisible (ssid )) {
4535 _currentNetworkStatus = WL_CONNECT_FAILED;
4636 return _currentNetworkStatus;
4737 }
4838
49- nsapi_error_t ret = wifi_if->connect (_ssid , passphrase, ap_list[connected_ap].get_security ());
50-
51- _currentNetworkStatus = ret == NSAPI_ERROR_OK ? WL_CONNECTED : WL_CONNECT_FAILED;
39+ nsapi_error_t result = wifi_if->connect (ssid , passphrase, ap_list[connected_ap].get_security ());
40+
41+ _currentNetworkStatus = (result == NSAPI_ERROR_OK && setSSID (ssid)) ? WL_CONNECTED : WL_CONNECT_FAILED;
5242 return _currentNetworkStatus;
5343}
5444
@@ -59,16 +49,17 @@ int arduino::WiFiClass::beginAP(const char* ssid, const char *passphrase, uint8_
5949#endif
6050
6151 if (_softAP == NULL ) {
62- return WL_CONNECT_FAILED ;
52+ return WL_AP_FAILED ;
6353 }
6454
6555 ensureDefaultAPNetworkConfiguration ();
6656
6757 // Set ap ssid, password and channel
6858 static_cast <WhdSoftAPInterface*>(_softAP)->set_network (_ip, _netmask, _gateway);
69- nsapi_error_t ret = static_cast <WhdSoftAPInterface*>(_softAP)->start (ssid, passphrase, NSAPI_SECURITY_WPA2, channel, true /* dhcp server */ , NULL , true /* cohexistance */ );
70-
71- return ret == NSAPI_ERROR_OK ? WL_AP_LISTENING : WL_CONNECT_FAILED;
59+ nsapi_error_t result = static_cast <WhdSoftAPInterface*>(_softAP)->start (ssid, passphrase, NSAPI_SECURITY_WPA2, channel, true /* dhcp server */ , NULL , true /* cohexistance */ );
60+
61+ _currentNetworkStatus = (result == NSAPI_ERROR_OK && setSSID (ssid)) ? WL_AP_LISTENING : WL_AP_FAILED;
62+ return _currentNetworkStatus;
7263}
7364
7465void arduino::WiFiClass::ensureDefaultAPNetworkConfiguration () {
@@ -136,6 +127,21 @@ char* arduino::WiFiClass::SSID() {
136127 return _ssid;
137128}
138129
130+ int arduino::WiFiClass::setSSID (const char * ssid){
131+ if (_ssid) free (_ssid);
132+
133+ _ssid = (char *)malloc (SSID_MAX_LENGTH + 1 );
134+ if (!_ssid) {
135+ // tr_error("Could not allocate ssid buffer");
136+ return 0 ;
137+ }
138+
139+ memcpy (_ssid, ssid, SSID_MAX_LENGTH + 1 );
140+ // too long? break it off
141+ if (strlen (ssid) > SSID_MAX_LENGTH) _ssid[SSID_MAX_LENGTH] = 0 ;
142+ return 1 ;
143+ }
144+
139145static const char *sec2str (nsapi_security_t sec)
140146{
141147 switch (sec) {
0 commit comments