예제 #1
0
#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)
예제 #2
0
#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;