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: */
|
/* Interrupt interface: */
|
||||||
virtual bool attach_interrupt(uint8_t interrupt_num, AP_HAL::Proc p,
|
virtual bool attach_interrupt(uint8_t interrupt_num, AP_HAL::Proc p,
|
||||||
uint8_t mode) = 0;
|
uint8_t mode) = 0;
|
||||||
|
|
||||||
|
/* return true if USB cable is connected */
|
||||||
|
virtual bool usb_connected(void) = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // __AP_HAL_GPIO_H__
|
#endif // __AP_HAL_GPIO_H__
|
||||||
|
@ -202,5 +202,18 @@ void AVRDigitalSource::toggle() {
|
|||||||
SREG = oldSREG;
|
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
|
#endif
|
||||||
|
@ -11,12 +11,14 @@
|
|||||||
# define HAL_GPIO_C_LED_PIN 35
|
# define HAL_GPIO_C_LED_PIN 35
|
||||||
# define HAL_GPIO_LED_ON HIGH
|
# define HAL_GPIO_LED_ON HIGH
|
||||||
# define HAL_GPIO_LED_OFF LOW
|
# define HAL_GPIO_LED_OFF LOW
|
||||||
|
# define HAL_GPIO_USB_MUX_PIN -1
|
||||||
#elif CONFIG_HAL_BOARD == HAL_BOARD_APM2
|
#elif CONFIG_HAL_BOARD == HAL_BOARD_APM2
|
||||||
# define HAL_GPIO_A_LED_PIN 27
|
# define HAL_GPIO_A_LED_PIN 27
|
||||||
# define HAL_GPIO_B_LED_PIN 26
|
# define HAL_GPIO_B_LED_PIN 26
|
||||||
# define HAL_GPIO_C_LED_PIN 25
|
# define HAL_GPIO_C_LED_PIN 25
|
||||||
# define HAL_GPIO_LED_ON LOW
|
# define HAL_GPIO_LED_ON LOW
|
||||||
# define HAL_GPIO_LED_OFF HIGH
|
# define HAL_GPIO_LED_OFF HIGH
|
||||||
|
# define HAL_GPIO_USB_MUX_PIN 23
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
class AP_HAL_AVR::AVRDigitalSource : public AP_HAL::DigitalSource {
|
class AP_HAL_AVR::AVRDigitalSource : public AP_HAL::DigitalSource {
|
||||||
@ -44,6 +46,10 @@ public:
|
|||||||
AP_HAL::DigitalSource* channel(uint16_t);
|
AP_HAL::DigitalSource* channel(uint16_t);
|
||||||
bool attach_interrupt(uint8_t interrupt_num, AP_HAL::Proc proc,
|
bool attach_interrupt(uint8_t interrupt_num, AP_HAL::Proc proc,
|
||||||
uint8_t mode);
|
uint8_t mode);
|
||||||
|
|
||||||
|
/* return true if USB cable is connected */
|
||||||
|
bool usb_connected(void);
|
||||||
|
|
||||||
/* private-ish: only to be used from the appropriate interrupt */
|
/* private-ish: only to be used from the appropriate interrupt */
|
||||||
static AP_HAL::Proc _interrupt_6;
|
static AP_HAL::Proc _interrupt_6;
|
||||||
};
|
};
|
||||||
|
@ -39,6 +39,10 @@ bool EmptyGPIO::attach_interrupt(uint8_t interrupt_num, AP_HAL::Proc p,
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool EmptyGPIO::usb_connected(void)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
EmptyDigitalSource::EmptyDigitalSource(uint8_t v) :
|
EmptyDigitalSource::EmptyDigitalSource(uint8_t v) :
|
||||||
_v(v)
|
_v(v)
|
||||||
|
@ -21,6 +21,8 @@ public:
|
|||||||
bool attach_interrupt(uint8_t interrupt_num, AP_HAL::Proc p,
|
bool attach_interrupt(uint8_t interrupt_num, AP_HAL::Proc p,
|
||||||
uint8_t mode);
|
uint8_t mode);
|
||||||
|
|
||||||
|
/* return true if USB cable is connected */
|
||||||
|
bool usb_connected(void);
|
||||||
};
|
};
|
||||||
|
|
||||||
class Empty::EmptyDigitalSource : public AP_HAL::DigitalSource {
|
class Empty::EmptyDigitalSource : public AP_HAL::DigitalSource {
|
||||||
|
@ -16,6 +16,8 @@
|
|||||||
#include <drivers/drv_tone_alarm.h>
|
#include <drivers/drv_tone_alarm.h>
|
||||||
#include <drivers/drv_gpio.h>
|
#include <drivers/drv_gpio.h>
|
||||||
#include <modules/px4iofirmware/protocol.h>
|
#include <modules/px4iofirmware/protocol.h>
|
||||||
|
#include <arch/board/board.h>
|
||||||
|
#include <board_config.h>
|
||||||
|
|
||||||
#define LOW 0
|
#define LOW 0
|
||||||
#define HIGH 1
|
#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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
return true when USB connected
|
||||||
|
*/
|
||||||
|
bool PX4GPIO::usb_connected(void)
|
||||||
|
{
|
||||||
|
return stm32_gpioread(GPIO_OTGFS_VBUS);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
PX4DigitalSource::PX4DigitalSource(uint8_t v) :
|
PX4DigitalSource::PX4DigitalSource(uint8_t v) :
|
||||||
_v(v)
|
_v(v)
|
||||||
|
@ -37,6 +37,9 @@ public:
|
|||||||
/* Interrupt interface: */
|
/* Interrupt interface: */
|
||||||
bool attach_interrupt(uint8_t interrupt_num, AP_HAL::Proc p, uint8_t mode);
|
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:
|
private:
|
||||||
int _led_fd;
|
int _led_fd;
|
||||||
int _tone_alarm_fd;
|
int _tone_alarm_fd;
|
||||||
|
@ -33,6 +33,11 @@ void SMACCMGPIO::toggle(uint8_t pin)
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool SMACCMGPIO::usb_connected(void)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
/* Alternative interface: */
|
/* Alternative interface: */
|
||||||
AP_HAL::DigitalSource* SMACCMGPIO::channel(uint16_t n)
|
AP_HAL::DigitalSource* SMACCMGPIO::channel(uint16_t n)
|
||||||
{
|
{
|
||||||
@ -68,4 +73,4 @@ void SMACCMDigitalSource::write(uint8_t value)
|
|||||||
void SMACCMDigitalSource::toggle()
|
void SMACCMDigitalSource::toggle()
|
||||||
{
|
{
|
||||||
_v = !_v;
|
_v = !_v;
|
||||||
}
|
}
|
||||||
|
@ -30,6 +30,8 @@ public:
|
|||||||
bool attach_interrupt(uint8_t interrupt_num, AP_HAL::Proc p,
|
bool attach_interrupt(uint8_t interrupt_num, AP_HAL::Proc p,
|
||||||
uint8_t mode);
|
uint8_t mode);
|
||||||
|
|
||||||
|
/* return true if USB cable is connected */
|
||||||
|
bool usb_connected(void);
|
||||||
};
|
};
|
||||||
|
|
||||||
class SMACCM::SMACCMDigitalSource : public AP_HAL::DigitalSource {
|
class SMACCM::SMACCMDigitalSource : public AP_HAL::DigitalSource {
|
||||||
|
Loading…
Reference in New Issue
Block a user