Skip to content

Commit 7da7e22

Browse files
committed
Merge branch 'master' into camera
2 parents 858c43a + 517d8b9 commit 7da7e22

File tree

9 files changed

+81
-45
lines changed

9 files changed

+81
-45
lines changed

libraries/WiFi/src/WiFi.cpp

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,11 @@ arduino::IPAddress arduino::WiFiClass::ipAddressFromSocketAddress(SocketAddress
1515
return IPAddress(address.bytes[0], address.bytes[1], address.bytes[2], address.bytes[3]);
1616
}
1717

18+
SocketAddress arduino::WiFiClass::socketAddressFromIpAddress(arduino::IPAddress ip, uint16_t port) {
19+
nsapi_addr_t convertedIP = {NSAPI_IPv4, {ip[0], ip[1], ip[2], ip[3]}};
20+
return SocketAddress(convertedIP, port);
21+
}
22+
1823
int arduino::WiFiClass::begin(const char* ssid, const char *passphrase) {
1924
if (_ssid) free(_ssid);
2025

@@ -197,6 +202,17 @@ uint8_t arduino::WiFiClass::status() {
197202
return _currentNetworkStatus;
198203
}
199204

205+
int arduino::WiFiClass::hostByName(const char* aHostname, IPAddress& aResult){
206+
SocketAddress socketAddress = SocketAddress();
207+
nsapi_error_t returnCode = getNetwork()->gethostbyname(aHostname, &socketAddress);
208+
nsapi_addr_t address = socketAddress.get_addr();
209+
aResult[0] = address.bytes[0];
210+
aResult[1] = address.bytes[1];
211+
aResult[2] = address.bytes[2];
212+
aResult[3] = address.bytes[3];
213+
return returnCode == NSAPI_ERROR_OK ? 1 : 0;
214+
}
215+
200216
uint8_t arduino::WiFiClass::encryptionType() {
201217
return sec2enum(ap_list[connected_ap].get_security());
202218
}

libraries/WiFi/src/WiFi.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -290,6 +290,7 @@ class WiFiClass
290290

291291
friend class WiFiClient;
292292
friend class WiFiServer;
293+
friend class WiFiUDP;
293294

294295
NetworkInterface *getNetwork();
295296

@@ -311,6 +312,7 @@ class WiFiClass
311312
void ensureDefaultAPNetworkConfiguration();
312313
bool isVisible(const char* ssid);
313314
arduino::IPAddress ipAddressFromSocketAddress(SocketAddress socketAddress);
315+
SocketAddress socketAddressFromIpAddress(arduino::IPAddress ip, uint16_t port);
314316
};
315317

316318
}

libraries/WiFi/src/WiFiClient.cpp

Lines changed: 40 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,10 @@ extern WiFiClass WiFi;
66
#define WIFI_TCP_BUFFER_SIZE 1508
77
#endif
88

9+
#ifndef SOCKET_TIMEOUT
10+
#define SOCKET_TIMEOUT 1000
11+
#endif
12+
913
arduino::WiFiClient::WiFiClient() {
1014
}
1115

@@ -24,48 +28,51 @@ void arduino::WiFiClient::getStatus() {
2428
}
2529
}
2630

27-
28-
int arduino::WiFiClient::connect(IPAddress ip, uint16_t port) {
29-
}
30-
31-
int arduino::WiFiClient::connect(const char *host, uint16_t port) {
31+
int arduino::WiFiClient::connect(SocketAddress socketAddress) {
3232
if (sock == NULL) {
33-
sock = new TCPSocket();
34-
((TCPSocket*)sock)->open(WiFi.getNetwork());
33+
sock = new TCPSocket();
34+
static_cast<TCPSocket*>(sock)->open(WiFi.getNetwork());
3535
}
3636
//sock->sigio(mbed::callback(this, &WiFiClient::getStatus));
3737
//sock->set_blocking(false);
38-
sock->set_timeout(1000);
39-
SocketAddress addr(host, port);
40-
WiFi.getNetwork()->gethostbyname(host, &addr);
41-
int ret = ((TCPSocket*)sock)->connect(addr);
42-
if (ret == 0) {
43-
return 1;
44-
} else {
45-
return 0;
46-
}
38+
sock->set_timeout(SOCKET_TIMEOUT);
39+
nsapi_error_t returnCode = static_cast<TCPSocket*>(sock)->connect(socketAddress);
40+
return returnCode == NSAPI_ERROR_OK ? 1 : 0;
4741
}
4842

49-
int arduino::WiFiClient::connectSSL(IPAddress ip, uint16_t port) {
43+
int arduino::WiFiClient::connect(IPAddress ip, uint16_t port) {
44+
return connect(WiFi.socketAddressFromIpAddress(ip, port));
5045
}
5146

52-
int arduino::WiFiClient::connectSSL(const char *host, uint16_t port) {
47+
int arduino::WiFiClient::connect(const char *host, uint16_t port) {
48+
SocketAddress socketAddress = SocketAddress();
49+
socketAddress.set_port(port);
50+
WiFi.getNetwork()->gethostbyname(host, &socketAddress);
51+
return connect(socketAddress);
52+
}
53+
54+
int arduino::WiFiClient::connectSSL(SocketAddress socketAddress){
5355
if (sock == NULL) {
5456
sock = new TLSSocket();
55-
((TLSSocket*)sock)->open(WiFi.getNetwork());
57+
static_cast<TLSSocket*>(sock)->open(WiFi.getNetwork());
5658
}
5759
if (beforeConnect) {
5860
beforeConnect();
5961
}
60-
sock->set_timeout(1000);
61-
SocketAddress addr(host, port);
62-
WiFi.getNetwork()->gethostbyname(host, &addr);
63-
int ret = ((TLSSocket*)sock)->connect(addr);
64-
if (ret == 0) {
65-
return 1;
66-
} else {
67-
return 0;
68-
}
62+
sock->set_timeout(SOCKET_TIMEOUT);
63+
nsapi_error_t returnCode = static_cast<TLSSocket*>(sock)->connect(socketAddress);
64+
return returnCode == NSAPI_ERROR_OK ? 1 : 0;
65+
}
66+
67+
int arduino::WiFiClient::connectSSL(IPAddress ip, uint16_t port) {
68+
return connectSSL(WiFi.socketAddressFromIpAddress(ip, port));
69+
}
70+
71+
int arduino::WiFiClient::connectSSL(const char *host, uint16_t port) {
72+
SocketAddress socketAddress = SocketAddress();
73+
socketAddress.set_port(port);
74+
WiFi.getNetwork()->gethostbyname(host, &socketAddress);
75+
return connectSSL(socketAddress);
6976
}
7077

7178
size_t arduino::WiFiClient::write(uint8_t c) {
@@ -118,9 +125,11 @@ void arduino::WiFiClient::flush() {
118125
}
119126

120127
void arduino::WiFiClient::stop() {
121-
sock->close();
122-
delete sock;
123-
sock = NULL;
128+
if (sock != NULL) {
129+
sock->close();
130+
//delete[] sock;
131+
sock = NULL;
132+
}
124133
}
125134

126135
uint8_t arduino::WiFiClient::connected() {

libraries/WiFi/src/WiFiClient.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,15 @@ class WiFiClient : public arduino::Client {
3333

3434
public:
3535
WiFiClient();
36+
~WiFiClient() {
37+
stop();
38+
}
3639

3740
uint8_t status();
41+
int connect(SocketAddress socketAddress);
3842
int connect(IPAddress ip, uint16_t port);
3943
int connect(const char *host, uint16_t port);
44+
int connectSSL(SocketAddress socketAddress);
4045
int connectSSL(IPAddress ip, uint16_t port);
4146
int connectSSL(const char *host, uint16_t port);
4247
size_t write(uint8_t);

libraries/WiFi/src/WiFiServer.cpp

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,12 @@ size_t arduino::WiFiServer::write(const uint8_t *buf, size_t size) {
3333
}
3434

3535
arduino::WiFiClient arduino::WiFiServer::available(uint8_t* status) {
36-
WiFiClient ret;
37-
TCPSocket* client = sock->accept();
38-
ret.setSocket(client);
39-
return ret;
40-
}
36+
WiFiClient client;
37+
nsapi_error_t error;
38+
TCPSocket* clientSocket = sock->accept(&error);
39+
if(status != nullptr) {
40+
*status = error == NSAPI_ERROR_OK ? 1 : 0;
41+
}
42+
client.setSocket(clientSocket);
43+
return client;
44+
}

libraries/WiFi/src/WiFiUdp.cpp

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -43,10 +43,10 @@ uint8_t arduino::WiFiUDP::beginMulticast(IPAddress ip, uint16_t port) {
4343
if(begin(port) != 1){
4444
return 0;
4545
}
46+
47+
SocketAddress socketAddress = WiFi.socketAddressFromIpAddress(ip, port);
4648

47-
nsapi_addr_t multicastGroup = {NSAPI_IPv4, {ip[0], ip[1], ip[2], ip[3]}};
48-
49-
if (_socket.join_multicast_group(SocketAddress(multicastGroup)) != NSAPI_ERROR_OK) {
49+
if (_socket.join_multicast_group(socketAddress) != NSAPI_ERROR_OK) {
5050
printf("Error joining the multicast group\n");
5151
return 0;
5252
}
@@ -58,9 +58,8 @@ void arduino::WiFiUDP::stop() {
5858
_socket.close();
5959
}
6060

61-
int arduino::WiFiUDP::beginPacket(IPAddress ip, uint16_t port) {
62-
nsapi_addr_t convertedIP = {NSAPI_IPv4, {ip[0], ip[1], ip[2], ip[3]}};
63-
_host = SocketAddress(convertedIP, port);
61+
int arduino::WiFiUDP::beginPacket(IPAddress ip, uint16_t port) {
62+
_host = WiFi.socketAddressFromIpAddress(ip, port);
6463
//If IP is null and port is 0 the initialization failed
6564
return (_host.get_ip_address() == nullptr && _host.get_port() == 0) ? 0 : 1;
6665
}

libraries/Wire/Wire.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
#include "Print.h"
2323
#include "drivers/I2C.h"
2424
#include "drivers/I2CSlave.h"
25+
#include "rtos.h"
2526

2627
typedef void (*voidFuncPtrParamInt)(int);
2728

platform.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
# https://github.com/arduino/Arduino/wiki/Arduino-IDE-1.5---3rd-party-Hardware-specification
66

77
name=Arduino Mbed OS Boards (nRF52840 / STM32H747)
8-
version=1.2.1
8+
version=1.2.2
99

1010
# Compile variables
1111
# ------------------------

variants/ARDUINO_NANO33BLE/pins_arduino.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -118,8 +118,8 @@ static const uint8_t SCK = PIN_SPI_SCK;
118118
#define PIN_WIRE_SDA1 (30u)
119119
#define PIN_WIRE_SCL1 (31u)
120120

121-
#define PIN_ENABLE_SENSORS_3V3 (32u)
122-
#define PIN_ENABLE_I2C_PULLUP (33u)
121+
#define PIN_ENABLE_I2C_PULLUP (32u)
122+
#define PIN_ENABLE_SENSORS_3V3 (33u)
123123

124124
#define PIN_INT_APDS (26u)
125125

0 commit comments

Comments
 (0)