Merge branch 'feature/asio_update' into 'master'

asio: updated ASIO port to use latest asio and esp-idf features

See merge request espressif/esp-idf!6623
This commit is contained in:
Angus Gratton 2020-01-10 12:57:25 +08:00
commit a39e8e5de9
5 changed files with 36 additions and 22 deletions

@ -1 +1 @@
Subproject commit 55efc179b76139c8f9b44bf22a4aba4803f7a7bd
Subproject commit 3b66e5b051381fb70de9c2791df70a06181c64e3

View File

@ -22,8 +22,12 @@
# define ASIO_NO_EXCEPTIONS
# endif // CONFIG_COMPILER_CXX_EXCEPTIONS
# ifndef CONFIG_COMPILER_RTTI
# define ASIO_NO_TYPEID
# endif // CONFIG_COMPILER_RTTI
//
// LWIP compatifility inet and address macros/functions
// LWIP compatibility inet and address macros/functions
//
# define LWIP_COMPAT_SOCKET_INET 1
# define LWIP_COMPAT_SOCKET_ADDR 1
@ -34,12 +38,6 @@
# define ASIO_DISABLE_SERIAL_PORT
# define ASIO_SEPARATE_COMPILATION
# define ASIO_STANDALONE
# define ASIO_NO_TYPEID
# define ASIO_DISABLE_SIGNAL
# define ASIO_HAS_PTHREADS
# define ASIO_DISABLE_EPOLL
# define ASIO_DISABLE_EVENTFD
# define ASIO_DISABLE_SIGNAL
# define ASIO_DISABLE_SIGACTION
#endif // _ESP_ASIO_CONFIG_H_

View File

@ -15,6 +15,7 @@
#define _ESP_PLATFORM_NET_IF_H_
#include "lwip/sockets.h"
#include "lwip/if_api.h"
#define MSG_DONTROUTE 0x4 /* send without using routing tables */
#define SOCK_SEQPACKET 5 /* sequenced packet stream */
@ -22,8 +23,6 @@
#define SOCK_SEQPACKET 5 /* sequenced packet stream */
#define SOMAXCONN 128
#define IF_NAMESIZE 16
#define IPV6_UNICAST_HOPS 4 /* int; IP6 hops */
#define NI_MAXHOST 1025

View File

@ -5,7 +5,7 @@ const static char *TAG = "esp32_asio_pthread";
int pthread_condattr_setclock(pthread_condattr_t *attr, clockid_t clock_id)
{
ESP_LOGW(TAG, "%s: not yet supported!", __FUNCTION__);
ESP_LOGW(TAG, "%s: not yet supported!", __func__);
return 0;
}
@ -14,6 +14,24 @@ int pthread_setcancelstate(int state, int *oldstate)
return 0;
}
// This functions (pthread_sigmask(), sigfillset) are called from ASIO::signal_blocker to temporarily silence signals
// Since signals are not yet supported in ESP pthread these functions serve as no-ops
//
int pthread_sigmask(int how, const sigset_t *restrict set, sigset_t *restrict oset)
{
ESP_LOGD(TAG, "%s: Signals not supported in ESP pthread", __func__);
return 0;
}
int sigfillset(sigset_t *what)
{
ESP_LOGD(TAG, "%s: Signals not supported in ESP pthread", __func__);
if (what != NULL) {
*what = ~0;
}
return 0;
}
void newlib_include_pthread_impl(void)
{
// Linker hook, exists for no other purpose

View File

@ -15,18 +15,17 @@ Supported features
^^^^^^^^^^^^^^^^^^
ESP platform port currently supports only network asynchronous socket operations; does not support serial port and ssl.
Internal asio settings for ESP include
- EXCEPTIONS: Supported, choice in menuconfig
- SIGNAL, SIGACTION: Not supported
- EPOLL, EVENTFD: Not supported
- TYPEID: Disabled by default, but supported in toolchain and asio (provided stdlib recompiled with -frtti)
- EXCEPTIONS are enabled in ASIO if enabled in menuconfig
- TYPEID is enabled in ASIO if enabled in menuconfig
Application Example
-------------------
ESP examples are based on standard asio examples `examples/protocols/asio`:
- udp_echo_server
- tcp_echo_server
- chat_client
- chat_server
ESP examples are based on standard asio :example:`examples/protocols/asio`:
- :example:`examples/protocols/asio/udp_echo_server`
- :example:`examples/protocols/asio/tcp_echo_server`
- :example:`examples/protocols/asio/chat_client`
- :example:`examples/protocols/asio/chat_server`
Please refer to the specific example README.md for details