serial.h
Go to the documentation of this file.
1 
9 /*
10  * libmavconn
11  * Copyright 2013,2014,2015,2016 Vladimir Ermakov, All rights reserved.
12  *
13  * This file is part of the mavros package and subject to the license terms
14  * in the top-level LICENSE file of the mavros repository.
15  * https://github.com/mavlink/mavros/tree/master/LICENSE.md
16  */
17 
18 #pragma once
19 
20 #include <atomic>
21 #include <boost/asio.hpp>
22 #include <mavconn/interface.h>
23 #include <mavconn/msgbuffer.h>
24 
25 namespace mavconn {
30  public std::enable_shared_from_this<MAVConnSerial> {
31 public:
32  static constexpr auto DEFAULT_DEVICE = "/dev/ttyACM0";
33  static constexpr auto DEFAULT_BAUDRATE = 57600;
34 
41  MAVConnSerial(uint8_t system_id = 1, uint8_t component_id = MAV_COMP_ID_UDP_BRIDGE,
42  std::string device = DEFAULT_DEVICE, unsigned baudrate = DEFAULT_BAUDRATE, bool hwflow = false);
43  virtual ~MAVConnSerial();
44 
45  void connect(
46  const ReceivedCb &cb_handle_message,
47  const ClosedCb &cb_handle_closed_port = ClosedCb()) override;
48  void close() override;
49 
50  void send_message(const mavlink::mavlink_message_t *message) override;
51  void send_message(const mavlink::Message &message, const uint8_t source_compid) override;
52  void send_bytes(const uint8_t *bytes, size_t length) override;
53 
54  inline bool is_open() override {
55  return serial_dev.is_open();
56  }
57 
58 private:
59  boost::asio::io_service io_service;
60  std::thread io_thread;
61  boost::asio::serial_port serial_dev;
62 
63  std::atomic<bool> tx_in_progress;
64  std::deque<MsgBuffer> tx_q;
65  std::array<uint8_t, MsgBuffer::MAX_SIZE> rx_buf;
66  std::recursive_mutex mutex;
67 
68  void do_read();
69  void do_write(bool check_tx_state);
70 };
71 } // namespace mavconn
mavconn::MAVConnSerial::do_read
void do_read()
Definition: serial.cpp:213
mavconn::MAVConnSerial::close
void close() override
Close connection.
Definition: serial.cpp:133
mavconn::MAVConnSerial::io_service
boost::asio::io_service io_service
Definition: serial.h:59
mavconn::MAVConnSerial::serial_dev
boost::asio::serial_port serial_dev
Definition: serial.h:61
mavconn::MAVConnSerial::tx_q
std::deque< MsgBuffer > tx_q
Definition: serial.h:64
mavconn::MAVConnSerial::is_open
bool is_open() override
Definition: serial.h:54
mavconn::MAVConnSerial::MAVConnSerial
MAVConnSerial(uint8_t system_id=1, uint8_t component_id=MAV_COMP_ID_UDP_BRIDGE, std::string device=DEFAULT_DEVICE, unsigned baudrate=DEFAULT_BAUDRATE, bool hwflow=false)
Definition: serial.cpp:40
mavconn::MAVConnSerial::mutex
std::recursive_mutex mutex
Definition: serial.h:66
mavconn::MAVConnSerial::DEFAULT_DEVICE
static constexpr auto DEFAULT_DEVICE
Definition: serial.h:32
mavconn::MAVConnSerial::do_write
void do_write(bool check_tx_state)
Definition: serial.cpp:230
mavconn::MAVConnSerial::tx_in_progress
std::atomic< bool > tx_in_progress
Definition: serial.h:63
mavconn::MAVConnInterface
Generic mavlink interface.
Definition: interface.h:97
mavconn::MAVConnSerial::send_message
void send_message(const mavlink::mavlink_message_t *message) override
Send message (mavlink_message_t)
interface.h
MAVConn class interface.
mavconn::MAVConnSerial::DEFAULT_BAUDRATE
static constexpr auto DEFAULT_BAUDRATE
Definition: serial.h:33
mavconn::MAVConnSerial::rx_buf
std::array< uint8_t, MsgBuffer::MAX_SIZE > rx_buf
Definition: serial.h:65
mavconn::MAV_COMP_ID_UDP_BRIDGE
static constexpr auto MAV_COMP_ID_UDP_BRIDGE
Same as mavlink::common::MAV_COMPONENT::COMP_ID_UDP_BRIDGE.
Definition: interface.h:45
mavconn::MAVConnSerial::~MAVConnSerial
virtual ~MAVConnSerial()
Definition: serial.cpp:111
mavconn::MAVConnInterface::ClosedCb
std::function< void(void)> ClosedCb
Definition: interface.h:103
mavconn::MAVConnSerial
Serial interface.
Definition: serial.h:29
msgbuffer.h
MAVConn message buffer class (internal)
mavconn
Definition: interface.h:40
mavconn::MAVConnSerial::connect
void connect(const ReceivedCb &cb_handle_message, const ClosedCb &cb_handle_closed_port=ClosedCb()) override
Establish connection, automatically called by open_url()
Definition: serial.cpp:116
mavconn::MAVConnSerial::send_bytes
void send_bytes(const uint8_t *bytes, size_t length) override
Send raw bytes (for some quirks)
Definition: serial.cpp:153
mavconn::MAVConnSerial::io_thread
std::thread io_thread
Definition: serial.h:60
mavconn::MAVConnInterface::ReceivedCb
std::function< void(const mavlink::mavlink_message_t *message, const Framing framing)> ReceivedCb
Definition: interface.h:102


libmavconn
Author(s): Vladimir Ermakov
autogenerated on Tue May 6 2025 02:34:01