From b4107d35e85cd29c4721437ee5b67b70b3d8586e Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Fri, 30 Mar 2012 16:53:50 +1100 Subject: [PATCH] MAVLink: raise the serial transmit buffer size to 256 bytes the 128 byte serial transmit buffer was causing significant problems with queueing of mavlink messages. With 256 bytes we can fit a lot more messages out in each pass of the code, which makes telemetry more efficient As we discussed on the dev call, we now have enough free ram for this to be worthwhile --- ArduCopter/system.pde | 27 +++++++-------------------- ArduPlane/system.pde | 23 ++++++----------------- 2 files changed, 13 insertions(+), 37 deletions(-) diff --git a/ArduCopter/system.pde b/ArduCopter/system.pde index 1debcdef96..273384606d 100644 --- a/ArduCopter/system.pde +++ b/ArduCopter/system.pde @@ -76,25 +76,12 @@ static void init_ardupilot() // Console serial port // // The console port buffers are defined to be sufficiently large to support - // the console's use as a logging device, optionally as the GPS port when - // GPS_PROTOCOL_IMU is selected, and as the telemetry port. - // - // XXX This could be optimised to reduce the buffer sizes in the cases - // where they are not otherwise required. - // - Serial.begin(SERIAL0_BAUD, 128, 128); + // the MAVLink protocol efficiently + // + Serial.begin(SERIAL0_BAUD, 128, 256); // GPS serial port. // - // Not used if the IMU/X-Plane GPS is in use. - // - // XXX currently the EM406 (SiRF receiver) is nominally configured - // at 57600, however it's not been supported to date. We should - // probably standardise on 38400. - // - // XXX the 128 byte receive buffer may be too small for NMEA, depending - // on the message set configured. - // #if GPS_PROTOCOL != GPS_PROTOCOL_IMU Serial1.begin(38400, 128, 16); #endif @@ -169,11 +156,11 @@ static void init_ardupilot() if (!usb_connected) { // we are not connected via USB, re-init UART0 with right // baud rate - Serial.begin(map_baudrate(g.serial3_baud, SERIAL3_BAUD), 128, 128); + Serial.begin(map_baudrate(g.serial3_baud, SERIAL3_BAUD)); } #else // we have a 2nd serial port for telemetry - Serial3.begin(map_baudrate(g.serial3_baud, SERIAL3_BAUD), 128, 128); + Serial3.begin(map_baudrate(g.serial3_baud, SERIAL3_BAUD), 128, 256); gcs3.init(&Serial3); #endif @@ -620,9 +607,9 @@ static void check_usb_mux(void) // the user has switched to/from the telemetry port usb_connected = usb_check; if (usb_connected) { - Serial.begin(SERIAL0_BAUD, 128, 128); + Serial.begin(SERIAL0_BAUD); } else { - Serial.begin(map_baudrate(g.serial3_baud, SERIAL3_BAUD), 128, 128); + Serial.begin(map_baudrate(g.serial3_baud, SERIAL3_BAUD)); } } #endif diff --git a/ArduPlane/system.pde b/ArduPlane/system.pde index 72584598fa..cb34a528b0 100644 --- a/ArduPlane/system.pde +++ b/ArduPlane/system.pde @@ -79,23 +79,12 @@ static void init_ardupilot() // Console serial port // // The console port buffers are defined to be sufficiently large to support - // the console's use as a logging device, optionally as the GPS port when - // GPS_PROTOCOL_IMU is selected, and as the telemetry port. + // the MAVLink protocol efficiently // - // XXX This could be optimised to reduce the buffer sizes in the cases - // where they are not otherwise required. - // - Serial.begin(SERIAL0_BAUD, 128, 128); + Serial.begin(SERIAL0_BAUD, 128, 256); // GPS serial port. // - // XXX currently the EM406 (SiRF receiver) is nominally configured - // at 57600, however it's not been supported to date. We should - // probably standardise on 38400. - // - // XXX the 128 byte receive buffer may be too small for NMEA, depending - // on the message set configured. - // // standard gps running Serial1.begin(38400, 128, 16); @@ -145,11 +134,11 @@ static void init_ardupilot() if (!usb_connected) { // we are not connected via USB, re-init UART0 with right // baud rate - Serial.begin(map_baudrate(g.serial3_baud, SERIAL3_BAUD), 128, 128); + Serial.begin(map_baudrate(g.serial3_baud, SERIAL3_BAUD)); } #else // we have a 2nd serial port for telemetry - Serial3.begin(map_baudrate(g.serial3_baud, SERIAL3_BAUD), 128, 128); + Serial3.begin(map_baudrate(g.serial3_baud, SERIAL3_BAUD), 128, 256); gcs3.init(&Serial3); #endif @@ -556,9 +545,9 @@ static void check_usb_mux(void) // the user has switched to/from the telemetry port usb_connected = usb_check; if (usb_connected) { - Serial.begin(SERIAL0_BAUD, 128, 128); + Serial.begin(SERIAL0_BAUD); } else { - Serial.begin(map_baudrate(g.serial3_baud, SERIAL3_BAUD), 128, 128); + Serial.begin(map_baudrate(g.serial3_baud, SERIAL3_BAUD)); } } #endif