#include "core_msg.h" #pragma GCC diagnostic ignored "-Wunused-variable" #pragma GCC diagnostic ignored "-Wmissing-braces" #include <boost/array.hpp> // conflict of types #define socklen_t boost_socklen_t #include <boost/asio.hpp> #undef socklen_t #include <boost/system/system_error.hpp> namespace ip = boost::asio::ip; const sock_handle_t SOCKET_COUNT = sock_handle_t(8); const sock_handle_t SOCKET_MAX = SOCKET_COUNT*2; const sock_handle_t SOCKET_INVALID = (sock_handle_t)-1; boost::asio::io_service device_io_service; boost::system::error_code ec; boost::array<ip::tcp::socket, SOCKET_COUNT> tcp_handles = { ip::tcp::socket(device_io_service), ip::tcp::socket(device_io_service), ip::tcp::socket(device_io_service), ip::tcp::socket(device_io_service), ip::tcp::socket(device_io_service), ip::tcp::socket(device_io_service), ip::tcp::socket(device_io_service), ip::tcp::socket(device_io_service)
#include "socket_hal.h" struct Usart { virtual void init(Ring_Buffer *rx_buffer, Ring_Buffer *tx_buffer)=0; virtual void begin(uint32_t baud)=0; virtual void end()=0; virtual int32_t available()=0; virtual int32_t read()=0; virtual int32_t peek()=0; virtual uint32_t write(uint8_t byte)=0; virtual void flush()=0; bool enabled() { return true; } }; const sock_handle_t SOCKET_INVALID = sock_handle_t(-1); class SocketUsartBase : public Usart { private: Ring_Buffer* rx; Ring_Buffer* tx; protected: sock_handle_t socket; SocketUsartBase() : socket(SOCKET_INVALID) {} virtual bool initSocket()=0;