Copter: use new usb_connected() HAL function

This commit is contained in:
Andrew Tridgell 2013-09-19 16:24:23 +10:00
parent 4bd6b2f428
commit 754bdbd25f
4 changed files with 15 additions and 40 deletions

View File

@ -1292,9 +1292,7 @@ static void slow_loop()
if(g.radio_tuning > 0) if(g.radio_tuning > 0)
tuning(); tuning();
#if USB_MUX_PIN > 0
check_usb_mux(); check_usb_mux();
#endif
break; break;
default: default:

View File

@ -488,25 +488,16 @@ static void NOINLINE send_statustext(mavlink_channel_t chan)
static bool telemetry_delayed(mavlink_channel_t chan) static bool telemetry_delayed(mavlink_channel_t chan)
{ {
uint32_t tnow = millis() >> 10; uint32_t tnow = millis() >> 10;
if (tnow > (uint8_t)g.telem_delay) { if (tnow > (uint32_t)g.telem_delay) {
return false; return false;
} }
#if USB_MUX_PIN > 0 if (chan == MAVLINK_COMM_0 && hal.gpio->usb_connected()) {
if (chan == MAVLINK_COMM_0 && ap_system.usb_connected) { // this is USB telemetry, so won't be an Xbee
// this is an APM2 with USB telemetry
return false; return false;
} }
// we're either on the 2nd UART, or no USB cable is connected // we're either on the 2nd UART, or no USB cable is connected
// we need to delay telemetry // we need to delay telemetry by the TELEM_DELAY time
return true; return true;
#else
if (chan == MAVLINK_COMM_0) {
// we're on the USB port
return false;
}
// don't send telemetry yet
return true;
#endif
} }
@ -2168,9 +2159,7 @@ static void mavlink_delay_cb()
last_5s = tnow; last_5s = tnow;
gcs_send_text_P(SEVERITY_LOW, PSTR("Initialising APM...")); gcs_send_text_P(SEVERITY_LOW, PSTR("Initialising APM..."));
} }
#if USB_MUX_PIN > 0
check_usb_mux(); check_usb_mux();
#endif
in_mavlink_delay = false; in_mavlink_delay = false;
} }

View File

@ -171,28 +171,24 @@
# define LED_ON HIGH # define LED_ON HIGH
# define LED_OFF LOW # define LED_OFF LOW
# define PUSHBUTTON_PIN 41 # define PUSHBUTTON_PIN 41
# define USB_MUX_PIN -1
# define BATTERY_VOLT_PIN 0 // Battery voltage on A0 # define BATTERY_VOLT_PIN 0 // Battery voltage on A0
# define BATTERY_CURR_PIN 1 // Battery current on A1 # define BATTERY_CURR_PIN 1 // Battery current on A1
#elif CONFIG_HAL_BOARD == HAL_BOARD_APM2 #elif CONFIG_HAL_BOARD == HAL_BOARD_APM2
# define LED_ON LOW # define LED_ON LOW
# define LED_OFF HIGH # define LED_OFF HIGH
# define PUSHBUTTON_PIN (-1) # define PUSHBUTTON_PIN (-1)
# define USB_MUX_PIN 23
# define BATTERY_VOLT_PIN 1 // Battery voltage on A1 # define BATTERY_VOLT_PIN 1 // Battery voltage on A1
# define BATTERY_CURR_PIN 2 // Battery current on A2 # define BATTERY_CURR_PIN 2 // Battery current on A2
#elif CONFIG_HAL_BOARD == HAL_BOARD_AVR_SITL #elif CONFIG_HAL_BOARD == HAL_BOARD_AVR_SITL
# define LED_ON LOW # define LED_ON LOW
# define LED_OFF HIGH # define LED_OFF HIGH
# define PUSHBUTTON_PIN (-1) # define PUSHBUTTON_PIN (-1)
# define USB_MUX_PIN -1
# define BATTERY_VOLT_PIN 1 // Battery voltage on A1 # define BATTERY_VOLT_PIN 1 // Battery voltage on A1
# define BATTERY_CURR_PIN 2 // Battery current on A2 # define BATTERY_CURR_PIN 2 // Battery current on A2
#elif CONFIG_HAL_BOARD == HAL_BOARD_PX4 #elif CONFIG_HAL_BOARD == HAL_BOARD_PX4
# define LED_ON LOW # define LED_ON LOW
# define LED_OFF HIGH # define LED_OFF HIGH
# define PUSHBUTTON_PIN (-1) # define PUSHBUTTON_PIN (-1)
# define USB_MUX_PIN -1
# define BATTERY_VOLT_PIN -1 # define BATTERY_VOLT_PIN -1
# define BATTERY_CURR_PIN -1 # define BATTERY_CURR_PIN -1
#elif CONFIG_HAL_BOARD == HAL_BOARD_SMACCM #elif CONFIG_HAL_BOARD == HAL_BOARD_SMACCM
@ -200,7 +196,6 @@
# define LED_ON LOW # define LED_ON LOW
# define LED_OFF HIGH # define LED_OFF HIGH
# define PUSHBUTTON_PIN (-1) # define PUSHBUTTON_PIN (-1)
# define USB_MUX_PIN -1
# define BATTERY_VOLT_PIN -1 # define BATTERY_VOLT_PIN -1
# define BATTERY_CURR_PIN -1 # define BATTERY_CURR_PIN -1
#endif #endif

View File

@ -75,14 +75,7 @@ static void run_cli(AP_HAL::UARTDriver *port)
static void init_ardupilot() static void init_ardupilot()
{ {
#if USB_MUX_PIN > 0 ap_system.usb_connected = hal.gpio->usb_connected();
// on the APM2 board we have a mux thet switches UART0 between
// USB and the board header. If the right ArduPPM firmware is
// installed we can detect if USB is connected using the
// USB_MUX_PIN
pinMode(USB_MUX_PIN, INPUT);
ap_system.usb_connected = !digitalRead(USB_MUX_PIN);
if (!ap_system.usb_connected) { if (!ap_system.usb_connected) {
// USB is not connected, this means UART0 may be a Xbee, with // USB is not connected, this means UART0 may be a Xbee, with
// its darned bricking problem. We can't write to it for at // its darned bricking problem. We can't write to it for at
@ -91,7 +84,6 @@ static void init_ardupilot()
// added later // added later
delay(1000); delay(1000);
} }
#endif
// Console serial port // Console serial port
// //
@ -144,14 +136,17 @@ static void init_ardupilot()
// hal.scheduler->delay. // hal.scheduler->delay.
hal.scheduler->register_delay_callback(mavlink_delay_cb, 5); hal.scheduler->register_delay_callback(mavlink_delay_cb, 5);
#if USB_MUX_PIN > 0 ap_system.usb_connected = hal.gpio->usb_connected();
if (!ap_system.usb_connected) { if (!ap_system.usb_connected) {
// we are not connected via USB, re-init UART0 with right // we are not connected via USB, re-init UART0 with right
// baud rate // baud rate
hal.uartA->begin(map_baudrate(g.serial3_baud, SERIAL3_BAUD)); hal.uartA->begin(map_baudrate(g.serial3_baud, SERIAL3_BAUD));
} }
#else
// we have a 2nd serial port for telemetry #if CONFIG_HAL_BOARD != HAL_BOARD_APM2
// we have a 2nd serial port for telemetry on all boards except
// APM2. We actually do have one on APM2 but it isn't necessary as
// a MUX is used
hal.uartC->begin(map_baudrate(g.serial3_baud, SERIAL3_BAUD), 128, 128); hal.uartC->begin(map_baudrate(g.serial3_baud, SERIAL3_BAUD), 128, 128);
gcs3.init(hal.uartC); gcs3.init(hal.uartC);
#endif #endif
@ -216,9 +211,9 @@ static void init_ardupilot()
#if CLI_ENABLED == ENABLED #if CLI_ENABLED == ENABLED
const prog_char_t *msg = PSTR("\nPress ENTER 3 times to start interactive setup\n"); const prog_char_t *msg = PSTR("\nPress ENTER 3 times to start interactive setup\n");
cliSerial->println_P(msg); cliSerial->println_P(msg);
#if USB_MUX_PIN == 0 if (gcs3.initialised) {
hal.uartC->println_P(msg); hal.uartC->println_P(msg);
#endif }
#endif // CLI_ENABLED #endif // CLI_ENABLED
#if HIL_MODE != HIL_MODE_DISABLED #if HIL_MODE != HIL_MODE_DISABLED
@ -549,10 +544,9 @@ static uint32_t map_baudrate(int8_t rate, uint32_t default_baud)
return default_baud; return default_baud;
} }
#if USB_MUX_PIN > 0
static void check_usb_mux(void) static void check_usb_mux(void)
{ {
bool usb_check = !digitalRead(USB_MUX_PIN); bool usb_check = hal.gpio->usb_connected();
if (usb_check == ap_system.usb_connected) { if (usb_check == ap_system.usb_connected) {
return; return;
} }
@ -565,7 +559,6 @@ static void check_usb_mux(void)
hal.uartA->begin(map_baudrate(g.serial3_baud, SERIAL3_BAUD)); hal.uartA->begin(map_baudrate(g.serial3_baud, SERIAL3_BAUD));
} }
} }
#endif
/* /*
* called by gyro/accel init to flash LEDs so user * called by gyro/accel init to flash LEDs so user