Skip to content

Commit 5f802c1

Browse files
facchinmmanchoz
authored andcommitted
WiFi: Cleanup libraries and error handling
1 parent 4aad72b commit 5f802c1

File tree

5 files changed

+32
-9
lines changed

5 files changed

+32
-9
lines changed

libraries/WiFi/src/WiFiClient.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ void arduino::WiFiClient::getStatus() {
3333
if (ret < 0 && ret != NSAPI_ERROR_WOULD_BLOCK) {
3434
_status = false;
3535
}
36+
_status = true;
3637
}
3738

3839
int arduino::WiFiClient::connect(SocketAddress socketAddress) {
@@ -111,14 +112,14 @@ int arduino::WiFiClient::connectSSL(const char *host, uint16_t port) {
111112

112113
size_t arduino::WiFiClient::write(uint8_t c) {
113114
if (sock == nullptr)
114-
return -1;
115+
return 0;
115116
auto ret = sock->send(&c, 1);
116117
return ret;
117118
}
118119

119120
size_t arduino::WiFiClient::write(const uint8_t *buf, size_t size) {
120121
if (sock == nullptr)
121-
return -1;
122+
return 0;
122123

123124
auto ret = sock->send(buf, size);
124125
return ret;

libraries/WiFi/src/WiFiClient.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ class WiFiClient : public arduino::Client {
3333

3434
public:
3535
WiFiClient();
36-
~WiFiClient() {
36+
virtual ~WiFiClient() {
3737
stop();
3838
}
3939

libraries/WiFi/src/WiFiSSLClient.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,9 @@ class WiFiSSLClient : public arduino::WiFiClient {
3030

3131
public:
3232
WiFiSSLClient();
33+
virtual ~WiFiSSLClient() {
34+
stop();
35+
}
3336

3437
int connect(IPAddress ip, uint16_t port) {
3538
return connectSSL(ip, port);

libraries/WiFi/src/WiFiServer.cpp

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,25 +16,38 @@ uint8_t arduino::WiFiServer::status() {
1616
}
1717

1818
void arduino::WiFiServer::begin() {
19-
if (sock == NULL) {
19+
if (sock == nullptr) {
2020
sock = new TCPSocket();
2121
((TCPSocket*)sock)->open(WiFi.getNetwork());
2222
}
23-
sock->bind(_port);
24-
sock->listen(5);
23+
if (sock) {
24+
sock->bind(_port);
25+
sock->listen(5);
26+
}
2527
}
2628

2729
size_t arduino::WiFiServer::write(uint8_t c) {
28-
sock->send(&c, 1);
30+
if (sock) {
31+
sock->send(&c, 1);
32+
return 1;
33+
}
34+
return 0;
2935
}
3036

3137
size_t arduino::WiFiServer::write(const uint8_t *buf, size_t size) {
32-
sock->send(buf, size);
38+
if (sock) {
39+
sock->send(buf, size);
40+
return size;
41+
}
42+
return 0;
3343
}
3444

3545
arduino::WiFiClient arduino::WiFiServer::available(uint8_t* status) {
3646
WiFiClient client;
3747
nsapi_error_t error;
48+
if (sock == nullptr) {
49+
return client;
50+
}
3851
TCPSocket* clientSocket = sock->accept(&error);
3952
if(status != nullptr) {
4053
*status = error == NSAPI_ERROR_OK ? 1 : 0;

libraries/WiFi/src/WiFiServer.h

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,15 @@ class WiFiClient;
3131
class WiFiServer : public arduino::Server {
3232
private:
3333
uint16_t _port;
34-
TCPSocket* sock;
34+
TCPSocket* sock = nullptr;
3535
public:
3636
WiFiServer(uint16_t);
37+
virtual ~WiFiServer() {
38+
if (sock) {
39+
delete sock;
40+
sock = nullptr;
41+
}
42+
}
3743
arduino::WiFiClient available(uint8_t* status = NULL);
3844
void begin();
3945
virtual size_t write(uint8_t);

0 commit comments

Comments
 (0)