Browse Source

mavlink: don't try broadcast 0, and less printfs

This removes a bunch of unneeded printfs and prevents broadcasting
packets of size 0 which just trigger a warning.
sbg
Julian Oes 9 years ago committed by Lorenz Meier
parent
commit
ec5b2adfc0
  1. 38
      src/modules/mavlink/mavlink_main.cpp
  2. 20
      src/modules/mavlink/mavlink_main.h

38
src/modules/mavlink/mavlink_main.cpp

@ -224,7 +224,6 @@ Mavlink::Mavlink() :
_src_addr_initialized(false), _src_addr_initialized(false),
_broadcast_address_found(false), _broadcast_address_found(false),
_broadcast_address_not_found_warned(false), _broadcast_address_not_found_warned(false),
_sendto_result(1),
_network_buf{}, _network_buf{},
_network_buf_len(0), _network_buf_len(0),
#endif #endif
@ -890,8 +889,16 @@ Mavlink::send_packet()
#ifdef __PX4_POSIX #ifdef __PX4_POSIX
/* Only send packets if there is something in the buffer. */
if (_network_buf_len == 0) {
return 0;
}
if (get_protocol() == UDP) { if (get_protocol() == UDP) {
ret = sendto(_socket_fd, _network_buf, _network_buf_len, 0, (struct sockaddr *)&_src_addr, sizeof(_src_addr));
ret = sendto(_socket_fd, _network_buf, _network_buf_len, 0,
(struct sockaddr *)&_src_addr, sizeof(_src_addr));
struct telemetry_status_s &tstatus = get_rx_status(); struct telemetry_status_s &tstatus = get_rx_status();
@ -904,20 +911,20 @@ Mavlink::send_packet()
find_broadcast_address(); find_broadcast_address();
} }
if (_broadcast_address_found) { if (_broadcast_address_found && _network_buf_len > 0) {
int bret = sendto(_socket_fd, _network_buf, _network_buf_len, 0, (struct sockaddr *)&_bcast_addr, sizeof(_bcast_addr)); int bret = sendto(_socket_fd, _network_buf, _network_buf_len, 0,
(struct sockaddr *)&_bcast_addr, sizeof(_bcast_addr));
if (bret <= 0 && _sendto_result > 0) { if (bret <= 0) {
PX4_ERR("sending broadcast failed, errno: %d: %s", errno, strerror(errno)); PX4_ERR("sending broadcast failed, errno: %d: %s", errno, strerror(errno));
} }
_sendto_result = bret;
} }
} }
} else if (get_protocol() == TCP) { } else if (get_protocol() == TCP) {
/* not implemented, but possible to do so */ /* not implemented, but possible to do so */
warnx("TCP transport pending implementation"); PX4_ERR("TCP transport pending implementation");
} }
_network_buf_len = 0; _network_buf_len = 0;
@ -1179,7 +1186,7 @@ Mavlink::init_udp()
{ {
#if defined (__PX4_LINUX) || defined (__PX4_DARWIN) #if defined (__PX4_LINUX) || defined (__PX4_DARWIN)
PX4_INFO("Setting up UDP w/port %d", _network_port); PX4_DEBUG("Setting up UDP with port %d", _network_port);
_myaddr.sin_family = AF_INET; _myaddr.sin_family = AF_INET;
_myaddr.sin_addr.s_addr = htonl(INADDR_ANY); _myaddr.sin_addr.s_addr = htonl(INADDR_ANY);
@ -1792,7 +1799,8 @@ Mavlink::task_main(int argc, char *argv[])
return ERROR; return ERROR;
} }
warnx("mode: %u, data rate: %d B/s on %s @ %dB", _mode, _datarate, _device_name, _baudrate); PX4_INFO("mode: %s, data rate: %d B/s on %s @ %dB",
mavlink_mode_str(_mode), _datarate, _device_name, _baudrate);
/* flush stdout in case MAVLink is about to take it over */ /* flush stdout in case MAVLink is about to take it over */
fflush(stdout); fflush(stdout);
@ -1814,7 +1822,8 @@ Mavlink::task_main(int argc, char *argv[])
return ERROR; return ERROR;
} }
warnx("mode: %u, data rate: %d B/s on udp port %hu", _mode, _datarate, _network_port); PX4_INFO("mode: %s, data rate: %d B/s on udp port %hu",
mavlink_mode_str(_mode), _datarate, _network_port);
} }
/* initialize send mutex */ /* initialize send mutex */
@ -2015,7 +2024,6 @@ Mavlink::task_main(int argc, char *argv[])
/* init socket if necessary */ /* init socket if necessary */
if (get_protocol() == UDP) { if (get_protocol() == UDP) {
find_broadcast_address();
init_udp(); init_udp();
} }
@ -2111,18 +2119,18 @@ Mavlink::task_main(int argc, char *argv[])
if (OK == configure_stream(_subscribe_to_stream, _subscribe_to_stream_rate)) { if (OK == configure_stream(_subscribe_to_stream, _subscribe_to_stream_rate)) {
if (_subscribe_to_stream_rate > 0.0f) { if (_subscribe_to_stream_rate > 0.0f) {
if ( get_protocol() == SERIAL ) { if ( get_protocol() == SERIAL ) {
PX4_INFO("stream %s on device %s enabled with rate %.1f Hz", _subscribe_to_stream, _device_name, PX4_DEBUG("stream %s on device %s enabled with rate %.1f Hz", _subscribe_to_stream, _device_name,
(double)_subscribe_to_stream_rate); (double)_subscribe_to_stream_rate);
} else if ( get_protocol() == UDP ) { } else if ( get_protocol() == UDP ) {
PX4_INFO("stream %s on UDP port %d enabled with rate %.1f Hz", _subscribe_to_stream, _network_port, PX4_DEBUG("stream %s on UDP port %d enabled with rate %.1f Hz", _subscribe_to_stream, _network_port,
(double)_subscribe_to_stream_rate); (double)_subscribe_to_stream_rate);
} }
} else { } else {
if ( get_protocol() == SERIAL ) { if ( get_protocol() == SERIAL ) {
PX4_WARN("stream %s on device %s disabled", _subscribe_to_stream, _device_name); PX4_INFO("stream %s on device %s disabled", _subscribe_to_stream, _device_name);
} else if ( get_protocol() == UDP ) { } else if ( get_protocol() == UDP ) {
PX4_WARN("stream %s on UDP port %d disabled", _subscribe_to_stream, _network_port); PX4_INFO("stream %s on UDP port %d disabled", _subscribe_to_stream, _network_port);
} }
} }

20
src/modules/mavlink/mavlink_main.h

@ -169,6 +169,25 @@ public:
BROADCAST_MODE_ON BROADCAST_MODE_ON
}; };
static const char *mavlink_mode_str(enum MAVLINK_MODE mode) {
switch (mode) {
case MAVLINK_MODE_NORMAL:
return "Normal";
case MAVLINK_MODE_CUSTOM:
return "Custom";
case MAVLINK_MODE_ONBOARD:
return "Onboard";
case MAVLINK_MODE_OSD:
return "OSD";
case MAVLINK_MODE_MAGIC:
return "Magic";
case MAVLINK_MODE_CONFIG:
return "Config";
default:
return "Unknown";
}
}
void set_mode(enum MAVLINK_MODE); void set_mode(enum MAVLINK_MODE);
enum MAVLINK_MODE get_mode() { return _mode; } enum MAVLINK_MODE get_mode() { return _mode; }
@ -486,7 +505,6 @@ private:
bool _src_addr_initialized; bool _src_addr_initialized;
bool _broadcast_address_found; bool _broadcast_address_found;
bool _broadcast_address_not_found_warned; bool _broadcast_address_not_found_warned;
int _sendto_result;
uint8_t _network_buf[MAVLINK_MAX_PACKET_LEN]; uint8_t _network_buf[MAVLINK_MAX_PACKET_LEN];
unsigned _network_buf_len; unsigned _network_buf_len;
#endif #endif

Loading…
Cancel
Save