@@ -10,26 +10,33 @@ extern WiFiClass WiFi;
1010#define SOCKET_TIMEOUT 1000
1111#endif
1212
13- arduino::WiFiClient::WiFiClient () {
13+ arduino::WiFiClient::WiFiClient ():
14+ _status(false )
15+ {
1416}
1517
1618uint8_t arduino::WiFiClient::status () {
1719return _status;
1820}
1921
2022void arduino::WiFiClient::getStatus () {
23+ if (sock == nullptr ) {
24+ _status = false ;
25+ return ;
26+ }
27+
2128 uint8_t data[256 ];
2229 int ret = sock->recv (data, rxBuffer.availableForStore ());
2330 for (int i = 0 ; i < ret; i++) {
2431 rxBuffer.store_char (data[i]);
2532 }
2633 if (ret < 0 && ret != NSAPI_ERROR_WOULD_BLOCK) {
27- _status = WL_CONNECTION_LOST ;
34+ _status = false ;
2835 }
2936}
3037
3138int arduino::WiFiClient::connect (SocketAddress socketAddress) {
32- if (sock == NULL ) {
39+ if (sock == nullptr ) {
3340sock = new TCPSocket ();
3441if (static_cast <TCPSocket*>(sock)->open (WiFi.getNetwork ()) != NSAPI_ERROR_OK){
3542return 0 ;
@@ -40,7 +47,18 @@ int arduino::WiFiClient::connect(SocketAddress socketAddress) {
4047address = socketAddress;
4148sock->set_timeout (SOCKET_TIMEOUT);
4249nsapi_error_t returnCode = static_cast <TCPSocket*>(sock)->connect (socketAddress);
43- return returnCode == NSAPI_ERROR_OK ? 1 : 0 ;
50+ int ret = 0 ;
51+ switch (returnCode) {
52+ case NSAPI_ERROR_IS_CONNECTED:
53+ case NSAPI_ERROR_OK: {
54+ ret = 1 ;
55+ break ;
56+ }
57+ }
58+ if (ret == 1 )
59+ _status = true ;
60+
61+ return ret;
4462}
4563
4664int arduino::WiFiClient::connect (IPAddress ip, uint16_t port) {
@@ -55,7 +73,7 @@ int arduino::WiFiClient::connect(const char *host, uint16_t port) {
5573}
5674
5775int arduino::WiFiClient::connectSSL (SocketAddress socketAddress){
58- if (sock == NULL ) {
76+ if (sock == nullptr ) {
5977sock = new TLSSocket ();
6078if (static_cast <TLSSocket*>(sock)->open (WiFi.getNetwork ()) != NSAPI_ERROR_OK){
6179return 0 ;
@@ -66,7 +84,18 @@ int arduino::WiFiClient::connectSSL(SocketAddress socketAddress){
6684}
6785sock->set_timeout (SOCKET_TIMEOUT);
6886nsapi_error_t returnCode = static_cast <TLSSocket*>(sock)->connect (socketAddress);
69- return returnCode == NSAPI_ERROR_OK ? 1 : 0 ;
87+ int ret = 0 ;
88+ switch (returnCode) {
89+ case NSAPI_ERROR_IS_CONNECTED:
90+ case NSAPI_ERROR_OK: {
91+ ret = 1 ;
92+ break ;
93+ }
94+ }
95+ if (ret == 1 )
96+ _status = true ;
97+
98+ return ret;
7099}
71100
72101int arduino::WiFiClient::connectSSL (IPAddress ip, uint16_t port) {
@@ -81,11 +110,18 @@ int arduino::WiFiClient::connectSSL(const char *host, uint16_t port) {
81110}
82111
83112size_t arduino::WiFiClient::write (uint8_t c) {
84- sock->send (&c, 1 );
113+ if (sock == nullptr )
114+ return -1 ;
115+ auto ret = sock->send (&c, 1 );
116+ return ret;
85117}
86118
87119size_t arduino::WiFiClient::write (const uint8_t *buf, size_t size) {
88- sock->send (buf, size);
120+ if (sock == nullptr )
121+ return -1 ;
122+
123+ auto ret = sock->send (buf, size);
124+ return ret;
89125}
90126
91127int arduino::WiFiClient::available () {
@@ -130,14 +166,16 @@ void arduino::WiFiClient::flush() {
130166}
131167
132168void arduino::WiFiClient::stop () {
133- if (sock != NULL ) {
169+ if (sock != nullptr ) {
134170sock->close ();
135- sock = NULL ;
171+ sock = nullptr ;
136172}
173+ _status = false ;
137174}
138175
139176uint8_t arduino::WiFiClient::connected () {
140- return _status != WL_CONNECTION_LOST;
177+ getStatus ();
178+ return _status;
141179}
142180
143181IPAddress arduino::WiFiClient::remoteIP () {
0 commit comments