Skip to content

Pre Release Version 3.1.8 #246

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Oct 3, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8,873 changes: 8,873 additions & 0 deletions Arduino_package/hardware/cores/ambd/ArduinoJson.h

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion Arduino_package/hardware/cores/ambd/ard_socket.c
Original file line number Diff line number Diff line change
Expand Up @@ -327,7 +327,7 @@ int get_available(int sock) {
} while (client_fd < 0);

if (client_fd < 0) {
printf("\r\n [ERROR] Accept connection failed\n");
// printf("\r\n [ERROR] Accept connection failed\n");
return -1;
} else {
timeout = 3000;
Expand Down
107 changes: 65 additions & 42 deletions Arduino_package/hardware/cores/ambd/server_drv.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -7,48 +7,39 @@ extern "C" {
}
#endif

int ServerDrv::startClient(uint32_t ipAddress, uint16_t port, uint8_t portMode) {
printf("\n\r[INFO]server_drv.cpp: start_client");
int ServerDrv::startClient(uint32_t ipAddress, uint16_t port, uint8_t portMode, tBlockingMode blockMode)
{
// printf("\n\r[INFO]server_drv.cpp: start_client");
int sock;

sock = start_client(ipAddress, port, portMode);

return sock;
}

int ServerDrv::startClientV6(const char *ipv6Address, uint16_t port, uint8_t portMode) {
printf("\n\r[INFO]server_drv.cpp startClientV6() ipv6 addr: %s\n\r", ipv6Address);
int sock;

sock = start_client_v6((char *)ipv6Address, port, portMode);

return sock;
}

int ServerDrv::startClientv6(uint32_t *ipv6Address, uint16_t port, uint8_t portMode) {
int sock;
sock = start_clientv6(ipv6Address, port, portMode);
printf("\n\r [INFO]server_drv.cpp: startClientv6() sock value: %x\n\r", sock);
if (blockMode == BLOCKING_MODE) {
// printf("\r\n[INFO] %s WiFi client is set to blocking mode \n", __FUNCTION__);
sock = start_client(ipAddress, port, portMode);
} else {
// printf("\r\n[INFO] %s WiFi client is set to non-blocking mode \n", __FUNCTION__);
sock = start_client(ipAddress, port, portMode);
set_nonblocking(sock);
}
return sock;
}

int ServerDrv::startServer(uint16_t port, uint8_t portMode, bool blockMode) {
int ServerDrv::startServer(uint16_t port, uint8_t portMode, tBlockingMode blockMode)
{
int sock;
if (blockMode) {
if (blockMode == BLOCKING_MODE) {
printf("\r\n [INFO] server_drv.cpp: WiFi server is set to blocking mode\r\n");
if (getIPv6Status() == 0) {
sock = start_server(port, portMode);
if (sock >= 0) {
if (portMode == TCP_MODE) {
//Make it listen to socket with max 20 connections
// Make it listen to socket with max 20 connections
sock_listen(sock, 1);
}
}
} else {
sock = start_server_v6(port, portMode);
if (sock >= 0) {
if (portMode == TCP_MODE) {
//Make it listen to socket with max 20 connections
// Make it listen to socket with max 20 connections
sock_listen(sock, 20);
}
}
Expand All @@ -60,7 +51,7 @@ int ServerDrv::startServer(uint16_t port, uint8_t portMode, bool blockMode) {
set_nonblocking(sock);
if (sock >= 0) {
if (portMode == TCP_MODE) {
//Make it listen to socket with max 20 connections
// Make it listen to socket with max 20 connections
sock_listen(sock, 1);
}
}
Expand All @@ -69,7 +60,7 @@ int ServerDrv::startServer(uint16_t port, uint8_t portMode, bool blockMode) {
set_nonblocking(sock);
if (sock >= 0) {
if (portMode == TCP_MODE) {
//Make it listen to socket with max 20 connections
// Make it listen to socket with max 20 connections
sock_listen(sock, 20);
}
}
Expand All @@ -78,15 +69,35 @@ int ServerDrv::startServer(uint16_t port, uint8_t portMode, bool blockMode) {
return sock;
}

int ServerDrv::getAvailable(int sock) {
int ServerDrv::startClientV6(const char *ipv6Address, uint16_t port, uint8_t portMode)
{
printf("\n\r[INFO]server_drv.cpp startClientV6() ipv6 addr: %s\n\r", ipv6Address);
int sock;

sock = start_client_v6((char *)ipv6Address, port, portMode);

return sock;
}

int ServerDrv::startClientv6(uint32_t *ipv6Address, uint16_t port, uint8_t portMode)
{
int sock;
sock = start_clientv6(ipv6Address, port, portMode);
printf("\n\r [INFO]server_drv.cpp: startClientv6() sock value: %x\n\r", sock);
return sock;
}

int ServerDrv::getAvailable(int sock)
{
if (getIPv6Status() == 0) {
return get_available(sock);
} else {
return get_available_v6(sock);
}
}

int ServerDrv::availData(int sock) {
int ServerDrv::availData(int sock)
{
int ret;
uint8_t c;
if (sock < 0) {
Expand All @@ -106,7 +117,8 @@ int ServerDrv::availData(int sock) {
}
}

bool ServerDrv::recvData(int sock, uint8_t *_data, uint16_t _dataLen) {
bool ServerDrv::recvData(int sock, uint8_t *_data, uint16_t _dataLen)
{
int ret;
_available = false;

Expand All @@ -115,7 +127,8 @@ bool ServerDrv::recvData(int sock, uint8_t *_data, uint16_t _dataLen) {
return ret;
}

bool ServerDrv::getData(int sock, uint8_t *data, uint8_t peek) {
bool ServerDrv::getData(int sock, uint8_t *data, uint8_t peek)
{
int ret = 0;
int flag = 0;

Expand All @@ -134,7 +147,8 @@ bool ServerDrv::getData(int sock, uint8_t *data, uint8_t peek) {
return false;
}

int ServerDrv::getDataBuf(int sock, uint8_t *_data, uint16_t _dataLen) {
int ServerDrv::getDataBuf(int sock, uint8_t *_data, uint16_t _dataLen)
{
int ret;
_available = false;

Expand All @@ -147,17 +161,20 @@ int ServerDrv::getDataBuf(int sock, uint8_t *_data, uint16_t _dataLen) {
return ret;
}

int ServerDrv::getLastErrno(int sock) {
int ServerDrv::getLastErrno(int sock)
{
return get_sock_errno(sock);
}

void ServerDrv::stopSocket(int sock) {
void ServerDrv::stopSocket(int sock)
{
close_socket(sock);
_available = false;
}

bool ServerDrv::sendData(int sock, const uint8_t *data, uint16_t len) {
//printf("[info] server_drv.cpp sendData()");
bool ServerDrv::sendData(int sock, const uint8_t *data, uint16_t len)
{
// printf("[info] server_drv.cpp sendData()");

int ret;
int flag = 0;
Expand All @@ -173,7 +190,8 @@ bool ServerDrv::sendData(int sock, const uint8_t *data, uint16_t len) {
return true;
}

bool ServerDrv::sendtoData(int sock, const uint8_t *data, uint16_t len, uint32_t peer_ip, uint16_t peer_port) {
bool ServerDrv::sendtoData(int sock, const uint8_t *data, uint16_t len, uint32_t peer_ip, uint16_t peer_port)
{
int ret;

if (sock < 0) {
Expand All @@ -191,24 +209,29 @@ bool ServerDrv::sendtoData(int sock, const uint8_t *data, uint16_t len, uint32_t
return true;
}

void ServerDrv::getRemoteData(int sock, uint32_t *ip, uint16_t *port) {
void ServerDrv::getRemoteData(int sock, uint32_t *ip, uint16_t *port)
{
sock = sock;
*ip = _peer_addr;
*port = _peer_port;
}

int ServerDrv::setSockRecvTimeout(int sock, int timeout) {
int ServerDrv::setSockRecvTimeout(int sock, int timeout)
{
return set_sock_recv_timeout(sock, timeout);
}

int ServerDrv::enableIPv6() {
int ServerDrv::enableIPv6()
{
return enable_ipv6();
}

int ServerDrv::getIPv6Status() {
int ServerDrv::getIPv6Status()
{
return get_ipv6_status();
}

void ServerDrv::setIPv6UDPServer(void) {
void ServerDrv::setIPv6UDPServer(void)
{
ipv6_udp_server();
}
54 changes: 25 additions & 29 deletions Arduino_package/hardware/cores/ambd/server_drv.h
Original file line number Diff line number Diff line change
Expand Up @@ -21,37 +21,33 @@
#define SERVER_DRV_H

#include <inttypes.h>

typedef enum eProtMode {
TCP_MODE,
UDP_MODE
} tProtMode;
#include "wl_definitions.h"

#define DATA_LENTH 128
class ServerDrv {
public:
int startClient(uint32_t ipAddress, uint16_t port, uint8_t portMode = TCP_MODE);
int startServer(uint16_t port, uint8_t portMode = TCP_MODE, bool blockMode = false);
int startClientv6(uint32_t *ipv6Address, uint16_t port, uint8_t portMode = TCP_MODE);
int startClientV6(const char *ipv6Address, uint16_t port, uint8_t portMode);
int getAvailable(int sock);
int availData(int sock);
bool recvData(int sock, uint8_t *_data, uint16_t _dataLen);
bool getData(int sock, uint8_t *data, uint8_t peek = 0);
int getDataBuf(int sock, uint8_t *_data, uint16_t _dataLen);
int getLastErrno(int sock);
void stopSocket(int sock);
bool sendData(int sock, const uint8_t *data, uint16_t len);
bool sendtoData(int sock, const uint8_t *data, uint16_t len, uint32_t peer_ip, uint16_t peer_port);
void getRemoteData(int sock, uint32_t *ip, uint16_t *port);
int setSockRecvTimeout(int sock, int timeout);
static int enableIPv6();
static int getIPv6Status();
void setIPv6UDPServer(void);

private:
bool _available;
uint32_t _peer_addr;
uint16_t _peer_port;
public:
int startClient(uint32_t ipAddress, uint16_t port, uint8_t portMode = TCP_MODE, tBlockingMode blockMode = NON_BLOCKING_MODE);
int startServer(uint16_t port, uint8_t portMode = TCP_MODE, tBlockingMode blockMode = NON_BLOCKING_MODE);
int startClientv6(uint32_t *ipv6Address, uint16_t port, uint8_t portMode = TCP_MODE);
int startClientV6(const char *ipv6Address, uint16_t port, uint8_t portMode);
int getAvailable(int sock);
int availData(int sock);
bool recvData(int sock, uint8_t *_data, uint16_t _dataLen);
bool getData(int sock, uint8_t *data, uint8_t peek = 0);
int getDataBuf(int sock, uint8_t *_data, uint16_t _dataLen);
int getLastErrno(int sock);
void stopSocket(int sock);
bool sendData(int sock, const uint8_t *data, uint16_t len);
bool sendtoData(int sock, const uint8_t *data, uint16_t len, uint32_t peer_ip, uint16_t peer_port);
void getRemoteData(int sock, uint32_t *ip, uint16_t *port);
int setSockRecvTimeout(int sock, int timeout);
static int enableIPv6();
static int getIPv6Status();
void setIPv6UDPServer(void);

private:
bool _available;
uint32_t _peer_addr;
uint16_t _peer_port;
};
#endif
62 changes: 36 additions & 26 deletions Arduino_package/hardware/cores/ambd/wl_definitions.h
Original file line number Diff line number Diff line change
Expand Up @@ -27,25 +27,25 @@
#define WL_DEFINITIONS_H

// Maximum size of a SSID
#define WL_SSID_MAX_LENGTH 32
#define WL_SSID_MAX_LENGTH 32
// Length of passphrase. Valid lengths are 8-63.
#define WL_WPA_KEY_MAX_LENGTH 63
#define WL_WPA_KEY_MAX_LENGTH 63
// Length of key in bytes. Valid values are 5 and 13.
#define WL_WEP_KEY_MAX_LENGTH 13
#define WL_WEP_KEY_MAX_LENGTH 13
// Size of a MAC-address or BSSID
#define WL_MAC_ADDR_LENGTH 6
#define WL_MAC_ADDR_LENGTH 6
// Size of a MAC-address or BSSID
#define WL_IPV4_LENGTH 4
#define WL_IPV4_LENGTH 4
// Maximum size of a SSID list
#define WL_NETWORKS_LIST_MAXNUM 50
#define WL_NETWORKS_LIST_MAXNUM 50
// Maximum number of socket
#define MAX_SOCK_NUM 4
#define MAX_SOCK_NUM 4
// Socket not available constant
#define SOCK_NOT_AVAIL 255
#define SOCK_NOT_AVAIL 255
// Default state value for Wifi state field
#define NA_STATE -1
#define NA_STATE -1
// Maximum number of attempts to establish wifi connection
#define WL_MAX_ATTEMPT_CONNECTION 10
#define WL_MAX_ATTEMPT_CONNECTION 10

typedef enum {
WL_NO_SHIELD = 255,
Expand All @@ -59,9 +59,9 @@ typedef enum {
} wl_status_t;

/* Encryption modes */
enum wl_enc_type { /* Values map to 802.11 encryption suites... */
ENC_TYPE_WEP = 5,
ENC_TYPE_WPA = 2,
enum wl_enc_type { /* Values map to 802.11 encryption suites... */
ENC_TYPE_WEP = 5,
ENC_TYPE_WPA = 2,
ENC_TYPE_WPA3 = 3,
ENC_TYPE_WPA2 = 4,
/* ... except these two, 7 and 8 are reserved in 802.11-2007 */
Expand All @@ -72,30 +72,40 @@ enum wl_enc_type { /* Values map to 802.11 encryption suites... */
/* RTK added type */
#ifndef WEP_ENABLED

#define WEP_ENABLED 0x0001
#define TKIP_ENABLED 0x0002
#define AES_ENABLED 0x0004
#define WSEC_SWFLAG 0x0008
#define WEP_ENABLED 0x0001
#define TKIP_ENABLED 0x0002
#define AES_ENABLED 0x0004
#define WSEC_SWFLAG 0x0008

#define SHARED_ENABLED 0x00008000
#define WPA_SECURITY 0x00200000
#define WPA2_SECURITY 0x00400000
#define WPA3_SECURITY 0x00800000
#define WPS_ENABLED 0x10000000
#define SHARED_ENABLED 0x00008000
#define WPA_SECURITY 0x00200000
#define WPA2_SECURITY 0x00400000
#define WPA3_SECURITY 0x00800000
#define WPS_ENABLED 0x10000000

#endif // #ifndef WEP_ENABLED
#endif // #ifndef WEP_ENABLED

/* redefined from enum rtw_security_t */
#define SECURITY_OPEN (0)
#define SECURITY_WEP_PSK (WEP_ENABLED)
#define SECURITY_WEP_SHARED (WEP_ENABLED | SHARED_ENABLED)
#define SECURITY_WPA_TKIP_PSK (WPA_SECURITY | TKIP_ENABLED)
#define SECURITY_WPA_AES_PSK (WPA_SECURITY | AES_ENABLED)
#define SECURITY_WPA_TKIP_PSK (WPA_SECURITY | TKIP_ENABLED)
#define SECURITY_WPA_AES_PSK (WPA_SECURITY | AES_ENABLED)
#define SECURITY_WPA2_AES_PSK (WPA2_SECURITY | AES_ENABLED)
#define SECURITY_WPA2_TKIP_PSK (WPA2_SECURITY | TKIP_ENABLED)
#define SECURITY_WPA2_MIXED_PSK (WPA2_SECURITY | AES_ENABLED | TKIP_ENABLED)
#define SECURITY_WPA_WPA2_MIXED (WPA_SECURITY | WPA2_SECURITY)
#define SECURITY_WPA_WPA2_MIXED (WPA_SECURITY | WPA2_SECURITY)
#define SECURITY_WPA3_AES_PSK (WPA3_SECURITY | AES_ENABLED)
#define SECURITY_WPA2_WPA3_MIXED (WPA2_SECURITY | WPA3_SECURITY | AES_ENABLED)

typedef enum eProtMode {
TCP_MODE,
UDP_MODE
} tPortMode;

typedef enum eBlockingMode {
BLOCKING_MODE,
NON_BLOCKING_MODE
} tBlockingMode;

#endif /* WL_DEFINITIONS_H_ */
Loading