mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-10-29 04:43:34 +08:00
mavlink: option to specify the UDP remote port
This enables using several mavlink instances for SITL.
This commit is contained in:
@@ -185,6 +185,7 @@ Mavlink::Mavlink() :
|
|||||||
_socket_fd(-1),
|
_socket_fd(-1),
|
||||||
_protocol(SERIAL),
|
_protocol(SERIAL),
|
||||||
_network_port(14556),
|
_network_port(14556),
|
||||||
|
_remote_port(DEFAULT_REMOTE_PORT_UDP),
|
||||||
_rstatus {},
|
_rstatus {},
|
||||||
_message_buffer {},
|
_message_buffer {},
|
||||||
_message_buffer_mutex {},
|
_message_buffer_mutex {},
|
||||||
@@ -1056,7 +1057,7 @@ Mavlink::init_udp()
|
|||||||
if (_mode != MAVLINK_MODE_ONBOARD) {
|
if (_mode != MAVLINK_MODE_ONBOARD) {
|
||||||
_src_addr.sin_family = AF_INET;
|
_src_addr.sin_family = AF_INET;
|
||||||
inet_aton("127.0.0.1", &_src_addr.sin_addr);
|
inet_aton("127.0.0.1", &_src_addr.sin_addr);
|
||||||
_src_addr.sin_port = htons(DEFAULT_REMOTE_PORT_UDP);
|
_src_addr.sin_port = htons(_remote_port);
|
||||||
set_client_source_initialized();
|
set_client_source_initialized();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1064,7 +1065,7 @@ Mavlink::init_udp()
|
|||||||
memset((char *)&_bcast_addr, 0, sizeof(_bcast_addr));
|
memset((char *)&_bcast_addr, 0, sizeof(_bcast_addr));
|
||||||
_bcast_addr.sin_family = AF_INET;
|
_bcast_addr.sin_family = AF_INET;
|
||||||
inet_aton("255.255.255.255", &_bcast_addr.sin_addr);
|
inet_aton("255.255.255.255", &_bcast_addr.sin_addr);
|
||||||
_bcast_addr.sin_port = htons(DEFAULT_REMOTE_PORT_UDP);
|
_bcast_addr.sin_port = htons(_remote_port);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
@@ -1521,7 +1522,7 @@ Mavlink::task_main(int argc, char *argv[])
|
|||||||
char* eptr;
|
char* eptr;
|
||||||
int temp_int_arg;
|
int temp_int_arg;
|
||||||
|
|
||||||
while ((ch = px4_getopt(argc, argv, "b:r:d:u:m:fpvwx", &myoptind, &myoptarg)) != EOF) {
|
while ((ch = px4_getopt(argc, argv, "b:r:d:u:o:m:fpvwx", &myoptind, &myoptarg)) != EOF) {
|
||||||
switch (ch) {
|
switch (ch) {
|
||||||
case 'b':
|
case 'b':
|
||||||
_baudrate = strtoul(myoptarg, NULL, 10);
|
_baudrate = strtoul(myoptarg, NULL, 10);
|
||||||
@@ -1559,6 +1560,18 @@ Mavlink::task_main(int argc, char *argv[])
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case 'o':
|
||||||
|
temp_int_arg = strtoul(myoptarg, &eptr, 10);
|
||||||
|
if ( *eptr == '\0' ) {
|
||||||
|
warnx("set remote port %d", temp_int_arg);
|
||||||
|
_remote_port = temp_int_arg;
|
||||||
|
set_protocol(UDP);
|
||||||
|
} else {
|
||||||
|
warnx("invalid remote udp_port '%s'", myoptarg);
|
||||||
|
err_flag = true;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
// case 'e':
|
// case 'e':
|
||||||
// mavlink_link_termination_allowed = true;
|
// mavlink_link_termination_allowed = true;
|
||||||
// break;
|
// break;
|
||||||
@@ -2320,7 +2333,7 @@ Mavlink::stream_command(int argc, char *argv[])
|
|||||||
|
|
||||||
static void usage()
|
static void usage()
|
||||||
{
|
{
|
||||||
warnx("usage: mavlink {start|stop-all|stream} [-d device] [-u udp_port] [-b baudrate]\n\t[-r rate][-m mode] [-s stream] [-f] [-p] [-v] [-w] [-x]");
|
warnx("usage: mavlink {start|stop-all|stream} [-d device] [-u network_port] [-o remote_port] [-b baudrate]\n\t[-r rate][-m mode] [-s stream] [-f] [-p] [-v] [-w] [-x]");
|
||||||
}
|
}
|
||||||
|
|
||||||
int mavlink_main(int argc, char *argv[])
|
int mavlink_main(int argc, char *argv[])
|
||||||
|
|||||||
@@ -337,6 +337,8 @@ public:
|
|||||||
|
|
||||||
unsigned short get_network_port() { return _network_port; }
|
unsigned short get_network_port() { return _network_port; }
|
||||||
|
|
||||||
|
unsigned short get_remote_port() { return _remote_port; }
|
||||||
|
|
||||||
int get_socket_fd () { return _socket_fd; };
|
int get_socket_fd () { return _socket_fd; };
|
||||||
#ifdef __PX4_POSIX
|
#ifdef __PX4_POSIX
|
||||||
struct sockaddr_in * get_client_source_address() { return &_src_addr; }
|
struct sockaddr_in * get_client_source_address() { return &_src_addr; }
|
||||||
@@ -441,6 +443,7 @@ private:
|
|||||||
int _socket_fd;
|
int _socket_fd;
|
||||||
Protocol _protocol;
|
Protocol _protocol;
|
||||||
unsigned short _network_port;
|
unsigned short _network_port;
|
||||||
|
unsigned short _remote_port;
|
||||||
|
|
||||||
struct telemetry_status_s _rstatus; ///< receive status
|
struct telemetry_status_s _rstatus; ///< receive status
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user