Newer
Older
casic_unitree_dog / src / methane_serial_port.hpp
//
// Created by pengx on 2025/3/18.
//

#ifndef METHANE_SERIAL_PORT_HPP
#define METHANE_SERIAL_PORT_HPP

#include <boost/asio.hpp>
#include <boost/asio/steady_timer.hpp>

using boost::asio::serial_port_base;
using boost::asio::steady_timer;

class MethaneSerialPort {
public:
    explicit MethaneSerialPort(boost::asio::io_service &io_service, const std::string &port_name, int baud_rate);

    boost::asio::serial_port &get() { return port_; }

    void read_from_port();

private:
    boost::asio::io_service &io_service_;
    boost::asio::serial_port port_;
    boost::asio::deadline_timer timer_;
    boost::asio::streambuf buffer_;

    void start_timer();

    void handle_response(const std::vector<uint8_t> &buffer);

    void upload_to_server_async(int value);
};


#endif //METHANE_SERIAL_PORT_HPP