mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-11-02 09:01:36 +08:00
Mavlink: ifdef networking code
This commit is contained in:
@@ -84,14 +84,20 @@
|
||||
#include "mavlink_ulog.h"
|
||||
|
||||
#define DEFAULT_BAUD_RATE 57600
|
||||
#define DEFAULT_REMOTE_PORT_UDP 14550 ///< GCS port per MAVLink spec
|
||||
#define DEFAULT_DEVICE_NAME "/dev/ttyS1"
|
||||
|
||||
#define HASH_PARAM "_HASH_CHECK"
|
||||
|
||||
enum Protocol {
|
||||
#if defined(CONFIG_NET) || defined(__PX4_POSIX)
|
||||
# define MAVLINK_UDP
|
||||
# define DEFAULT_REMOTE_PORT_UDP 14550 ///< GCS port per MAVLink spec
|
||||
#endif // CONFIG_NET || __PX4_POSIX
|
||||
|
||||
enum class Protocol {
|
||||
SERIAL = 0,
|
||||
#if defined(MAVLINK_UDP)
|
||||
UDP,
|
||||
TCP,
|
||||
#endif // MAVLINK_UDP
|
||||
};
|
||||
|
||||
using namespace time_literals;
|
||||
@@ -137,8 +143,6 @@ public:
|
||||
|
||||
static Mavlink *get_instance_for_device(const char *device_name);
|
||||
|
||||
static Mavlink *get_instance_for_network_port(unsigned long port);
|
||||
|
||||
mavlink_message_t *get_buffer() { return &_mavlink_buffer; }
|
||||
|
||||
mavlink_status_t *get_status() { return &_mavlink_status; }
|
||||
@@ -259,9 +263,11 @@ public:
|
||||
|
||||
bool is_connected() { return (hrt_elapsed_time(&_tstatus.heartbeat_time) < 3_s); }
|
||||
|
||||
#if defined(CONFIG_NET) || defined(__PX4_POSIX)
|
||||
#if defined(MAVLINK_UDP)
|
||||
static Mavlink *get_instance_for_network_port(unsigned long port);
|
||||
|
||||
bool broadcast_enabled() { return _param_mav_broadcast.get() == BROADCAST_MODE_ON; }
|
||||
#endif
|
||||
#endif // MAVLINK_UDP
|
||||
|
||||
/**
|
||||
* Set the boot complete flag on all instances
|
||||
@@ -450,30 +456,26 @@ public:
|
||||
|
||||
unsigned get_system_type() { return _param_mav_type.get(); }
|
||||
|
||||
Protocol get_protocol() { return _protocol; }
|
||||
|
||||
unsigned short get_network_port() { return _network_port; }
|
||||
|
||||
unsigned short get_remote_port() { return _remote_port; }
|
||||
Protocol get_protocol() const { return _protocol; }
|
||||
|
||||
int get_socket_fd() { return _socket_fd; };
|
||||
|
||||
bool _task_should_exit{false}; /**< Mavlink task should exit iff true. */
|
||||
|
||||
#ifdef __PX4_POSIX
|
||||
#if defined(MAVLINK_UDP)
|
||||
unsigned short get_network_port() { return _network_port; }
|
||||
|
||||
unsigned short get_remote_port() { return _remote_port; }
|
||||
|
||||
const in_addr query_netmask_addr(const int socket_fd, const ifreq &ifreq);
|
||||
|
||||
const in_addr compute_broadcast_addr(const in_addr &host_addr, const in_addr &netmask_addr);
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_NET) || defined(__PX4_POSIX)
|
||||
struct sockaddr_in &get_client_source_address() { return _src_addr; }
|
||||
|
||||
void set_client_source_initialized() { _src_addr_initialized = true; }
|
||||
|
||||
bool get_client_source_initialized() { return _src_addr_initialized; }
|
||||
#else
|
||||
bool get_client_source_initialized() { return true; }
|
||||
#endif
|
||||
|
||||
uint64_t get_start_time() { return _mavlink_start_time; }
|
||||
@@ -618,7 +620,7 @@ private:
|
||||
unsigned _bytes_rx{0};
|
||||
uint64_t _bytes_timestamp{0};
|
||||
|
||||
#if defined(CONFIG_NET) || defined(__PX4_POSIX)
|
||||
#if defined(MAVLINK_UDP)
|
||||
sockaddr_in _myaddr {};
|
||||
sockaddr_in _src_addr {};
|
||||
sockaddr_in _bcast_addr {};
|
||||
@@ -629,14 +631,15 @@ private:
|
||||
bool _broadcast_failed_warned{false};
|
||||
uint8_t _network_buf[MAVLINK_MAX_PACKET_LEN] {};
|
||||
unsigned _network_buf_len{0};
|
||||
#endif
|
||||
|
||||
unsigned short _network_port{14556};
|
||||
unsigned short _remote_port{DEFAULT_REMOTE_PORT_UDP};
|
||||
#endif // MAVLINK_UDP
|
||||
|
||||
const char *_interface_name{nullptr};
|
||||
|
||||
int _socket_fd{-1};
|
||||
Protocol _protocol{SERIAL};
|
||||
unsigned short _network_port{14556};
|
||||
unsigned short _remote_port{DEFAULT_REMOTE_PORT_UDP};
|
||||
Protocol _protocol{Protocol::SERIAL};
|
||||
|
||||
radio_status_s _rstatus {};
|
||||
telemetry_status_s _tstatus {};
|
||||
@@ -663,9 +666,9 @@ private:
|
||||
(ParamInt<px4::params::MAV_TYPE>) _param_mav_type,
|
||||
(ParamBool<px4::params::MAV_USEHILGPS>) _param_mav_usehilgps,
|
||||
(ParamBool<px4::params::MAV_FWDEXTSP>) _param_mav_fwdextsp,
|
||||
#if defined(CONFIG_NET) || defined(__PX4_POSIX)
|
||||
#if defined(MAVLINK_UDP)
|
||||
(ParamInt<px4::params::MAV_BROADCAST>) _param_mav_broadcast,
|
||||
#endif
|
||||
#endif // MAVLINK_UDP
|
||||
(ParamBool<px4::params::MAV_HASH_CHK_EN>) _param_mav_hash_chk_en,
|
||||
(ParamBool<px4::params::MAV_HB_FORW_EN>) _param_mav_hb_forw_en,
|
||||
(ParamBool<px4::params::MAV_ODOM_LP>) _param_mav_odom_lp,
|
||||
@@ -730,9 +733,12 @@ private:
|
||||
*/
|
||||
void update_rate_mult();
|
||||
|
||||
#if defined(MAVLINK_UDP)
|
||||
void find_broadcast_address();
|
||||
|
||||
void init_udp();
|
||||
#endif // MAVLINK_UDP
|
||||
|
||||
|
||||
void set_channel();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user