123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- #pragma once
- #include "AP_HAL_ChibiOS.h"
- #ifndef HAL_GPIO_LED_ON
- #define HAL_GPIO_LED_ON 0
- #endif
- #ifndef HAL_GPIO_LED_OFF
- #define HAL_GPIO_LED_OFF 1
- #endif
- class ChibiOS::GPIO : public AP_HAL::GPIO {
- public:
- GPIO();
- void init() override;
- void pinMode(uint8_t pin, uint8_t output) override;
- uint8_t read(uint8_t pin) override;
- void write(uint8_t pin, uint8_t value) override;
- void toggle(uint8_t pin) override;
-
- AP_HAL::DigitalSource* channel(uint16_t n) override;
-
- bool attach_interrupt(uint8_t interrupt_num,
- AP_HAL::Proc p,
- INTERRUPT_TRIGGER_TYPE mode) override;
-
- bool attach_interrupt(uint8_t pin,
- irq_handler_fn_t fn,
- INTERRUPT_TRIGGER_TYPE mode) override;
-
- bool usb_connected(void) override;
- void set_usb_connected() { _usb_connected = true; }
-
- bool _attach_interrupt(ioline_t line, AP_HAL::Proc p, uint8_t mode);
-
- private:
- bool _usb_connected;
- bool _ext_started;
- bool _attach_interrupt(ioline_t line, palcallback_t cb, void *p, uint8_t mode);
- };
- class ChibiOS::DigitalSource : public AP_HAL::DigitalSource {
- public:
- DigitalSource(ioline_t line);
- void mode(uint8_t output) override;
- uint8_t read() override;
- void write(uint8_t value) override;
- void toggle() override;
- private:
- ioline_t line;
- };
|