mirror of
https://github.com/ArduPilot/ardupilot
synced 2025-02-05 07:28:29 -04:00
AP_HAL: added hal.gpio->usb_connected() function
this replaces the USB_MUX_PIN on APM2, and works on PX4 and FMUv2
This commit is contained in:
parent
59943bad26
commit
a5b29f44d5
@ -37,6 +37,9 @@ public:
|
||||
/* Interrupt interface: */
|
||||
virtual bool attach_interrupt(uint8_t interrupt_num, AP_HAL::Proc p,
|
||||
uint8_t mode) = 0;
|
||||
|
||||
/* return true if USB cable is connected */
|
||||
virtual bool usb_connected(void) = 0;
|
||||
};
|
||||
|
||||
#endif // __AP_HAL_GPIO_H__
|
||||
|
@ -202,5 +202,18 @@ void AVRDigitalSource::toggle() {
|
||||
SREG = oldSREG;
|
||||
}
|
||||
|
||||
/*
|
||||
return true when USB is connected
|
||||
*/
|
||||
bool AVRGPIO::usb_connected(void)
|
||||
{
|
||||
#if HAL_GPIO_USB_MUX_PIN != -1
|
||||
pinMode(HAL_GPIO_USB_MUX_PIN, GPIO_INPUT);
|
||||
return !read(HAL_GPIO_USB_MUX_PIN);
|
||||
#else
|
||||
return false;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
#endif
|
||||
|
@ -11,12 +11,14 @@
|
||||
# define HAL_GPIO_C_LED_PIN 35
|
||||
# define HAL_GPIO_LED_ON HIGH
|
||||
# define HAL_GPIO_LED_OFF LOW
|
||||
# define HAL_GPIO_USB_MUX_PIN -1
|
||||
#elif CONFIG_HAL_BOARD == HAL_BOARD_APM2
|
||||
# define HAL_GPIO_A_LED_PIN 27
|
||||
# define HAL_GPIO_B_LED_PIN 26
|
||||
# define HAL_GPIO_C_LED_PIN 25
|
||||
# define HAL_GPIO_LED_ON LOW
|
||||
# define HAL_GPIO_LED_OFF HIGH
|
||||
# define HAL_GPIO_USB_MUX_PIN 23
|
||||
#endif
|
||||
|
||||
class AP_HAL_AVR::AVRDigitalSource : public AP_HAL::DigitalSource {
|
||||
@ -44,6 +46,10 @@ public:
|
||||
AP_HAL::DigitalSource* channel(uint16_t);
|
||||
bool attach_interrupt(uint8_t interrupt_num, AP_HAL::Proc proc,
|
||||
uint8_t mode);
|
||||
|
||||
/* return true if USB cable is connected */
|
||||
bool usb_connected(void);
|
||||
|
||||
/* private-ish: only to be used from the appropriate interrupt */
|
||||
static AP_HAL::Proc _interrupt_6;
|
||||
};
|
||||
|
@ -39,6 +39,10 @@ bool EmptyGPIO::attach_interrupt(uint8_t interrupt_num, AP_HAL::Proc p,
|
||||
return true;
|
||||
}
|
||||
|
||||
bool EmptyGPIO::usb_connected(void)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
EmptyDigitalSource::EmptyDigitalSource(uint8_t v) :
|
||||
_v(v)
|
||||
|
@ -21,6 +21,8 @@ public:
|
||||
bool attach_interrupt(uint8_t interrupt_num, AP_HAL::Proc p,
|
||||
uint8_t mode);
|
||||
|
||||
/* return true if USB cable is connected */
|
||||
bool usb_connected(void);
|
||||
};
|
||||
|
||||
class Empty::EmptyDigitalSource : public AP_HAL::DigitalSource {
|
||||
|
@ -16,6 +16,8 @@
|
||||
#include <drivers/drv_tone_alarm.h>
|
||||
#include <drivers/drv_gpio.h>
|
||||
#include <modules/px4iofirmware/protocol.h>
|
||||
#include <arch/board/board.h>
|
||||
#include <board_config.h>
|
||||
|
||||
#define LOW 0
|
||||
#define HIGH 1
|
||||
@ -203,6 +205,14 @@ bool PX4GPIO::attach_interrupt(uint8_t interrupt_num, AP_HAL::Proc p, uint8_t mo
|
||||
return true;
|
||||
}
|
||||
|
||||
/*
|
||||
return true when USB connected
|
||||
*/
|
||||
bool PX4GPIO::usb_connected(void)
|
||||
{
|
||||
return stm32_gpioread(GPIO_OTGFS_VBUS);
|
||||
}
|
||||
|
||||
|
||||
PX4DigitalSource::PX4DigitalSource(uint8_t v) :
|
||||
_v(v)
|
||||
|
@ -37,6 +37,9 @@ public:
|
||||
/* Interrupt interface: */
|
||||
bool attach_interrupt(uint8_t interrupt_num, AP_HAL::Proc p, uint8_t mode);
|
||||
|
||||
/* return true if USB cable is connected */
|
||||
bool usb_connected(void);
|
||||
|
||||
private:
|
||||
int _led_fd;
|
||||
int _tone_alarm_fd;
|
||||
|
@ -33,6 +33,11 @@ void SMACCMGPIO::toggle(uint8_t pin)
|
||||
{
|
||||
}
|
||||
|
||||
bool SMACCMGPIO::usb_connected(void)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
/* Alternative interface: */
|
||||
AP_HAL::DigitalSource* SMACCMGPIO::channel(uint16_t n)
|
||||
{
|
||||
@ -68,4 +73,4 @@ void SMACCMDigitalSource::write(uint8_t value)
|
||||
void SMACCMDigitalSource::toggle()
|
||||
{
|
||||
_v = !_v;
|
||||
}
|
||||
}
|
||||
|
@ -30,6 +30,8 @@ public:
|
||||
bool attach_interrupt(uint8_t interrupt_num, AP_HAL::Proc p,
|
||||
uint8_t mode);
|
||||
|
||||
/* return true if USB cable is connected */
|
||||
bool usb_connected(void);
|
||||
};
|
||||
|
||||
class SMACCM::SMACCMDigitalSource : public AP_HAL::DigitalSource {
|
||||
|
Loading…
Reference in New Issue
Block a user