mirror of https://github.com/ArduPilot/ardupilot
AntennaTracker: fixed APM2 serial speed handling
need to change based on USB mux status
This commit is contained in:
parent
3a3a074fab
commit
af2ae30b65
|
@ -108,6 +108,8 @@ static struct {
|
||||||
|
|
||||||
static uint32_t start_time_ms;
|
static uint32_t start_time_ms;
|
||||||
|
|
||||||
|
static bool usb_connected;
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
// prototypes
|
// prototypes
|
||||||
void gcs_send_text_fmt(const prog_char_t *fmt, ...);
|
void gcs_send_text_fmt(const prog_char_t *fmt, ...);
|
||||||
|
@ -216,6 +218,7 @@ static const AP_Scheduler::Task scheduler_tasks[] PROGMEM = {
|
||||||
{ compass_accumulate, 1, 1500 },
|
{ compass_accumulate, 1, 1500 },
|
||||||
{ barometer_accumulate, 1, 900 },
|
{ barometer_accumulate, 1, 900 },
|
||||||
{ update_notify, 1, 100 },
|
{ update_notify, 1, 100 },
|
||||||
|
{ check_usb_mux, 5, 300 },
|
||||||
{ gcs_retry_deferred, 1, 1000 },
|
{ gcs_retry_deferred, 1, 1000 },
|
||||||
{ one_second_loop, 50, 3900 }
|
{ one_second_loop, 50, 3900 }
|
||||||
};
|
};
|
||||||
|
|
|
@ -27,6 +27,11 @@ static void init_tracker()
|
||||||
// more than 5ms remaining in your call to hal.scheduler->delay
|
// more than 5ms remaining in your call to hal.scheduler->delay
|
||||||
hal.scheduler->register_delay_callback(mavlink_delay_cb, 5);
|
hal.scheduler->register_delay_callback(mavlink_delay_cb, 5);
|
||||||
|
|
||||||
|
// we start by assuming USB connected, as we initialed the serial
|
||||||
|
// port with SERIAL0_BAUD. check_usb_mux() fixes this if need be.
|
||||||
|
usb_connected = true;
|
||||||
|
check_usb_mux();
|
||||||
|
|
||||||
// we have a 2nd serial port for telemetry
|
// we have a 2nd serial port for telemetry
|
||||||
hal.uartC->begin(map_baudrate(g.serial1_baud, SERIAL1_BAUD),
|
hal.uartC->begin(map_baudrate(g.serial1_baud, SERIAL1_BAUD),
|
||||||
128, SERIAL1_BUFSIZE);
|
128, SERIAL1_BUFSIZE);
|
||||||
|
@ -235,3 +240,25 @@ static void set_mode(enum ControlMode mode)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void check_usb_mux(void)
|
||||||
|
{
|
||||||
|
bool usb_check = hal.gpio->usb_connected();
|
||||||
|
if (usb_check == usb_connected) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// the user has switched to/from the telemetry port
|
||||||
|
usb_connected = usb_check;
|
||||||
|
|
||||||
|
#if CONFIG_HAL_BOARD == HAL_BOARD_APM2
|
||||||
|
// the APM2 has a MUX setup where the first serial port switches
|
||||||
|
// between USB and a TTL serial connection. When on USB we use
|
||||||
|
// SERIAL0_BAUD, but when connected as a TTL serial port we run it
|
||||||
|
// at SERIAL1_BAUD.
|
||||||
|
if (usb_connected) {
|
||||||
|
hal.uartA->begin(SERIAL0_BAUD);
|
||||||
|
} else {
|
||||||
|
hal.uartA->begin(map_baudrate(g.serial1_baud, SERIAL1_BAUD));
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue