Browse Source

AP_IOMCU: support oneshot mode

master
Andrew Tridgell 7 years ago
parent
commit
30903f2acb
  1. 14
      libraries/AP_IOMCU/AP_IOMCU.cpp
  2. 5
      libraries/AP_IOMCU/AP_IOMCU.h

14
libraries/AP_IOMCU/AP_IOMCU.cpp

@ -67,7 +67,6 @@ enum ioevents {
IOEVENT_FORCE_SAFETY_OFF, IOEVENT_FORCE_SAFETY_OFF,
IOEVENT_FORCE_SAFETY_ON, IOEVENT_FORCE_SAFETY_ON,
IOEVENT_SET_ONESHOT_ON, IOEVENT_SET_ONESHOT_ON,
IOEVENT_SET_ONESHOT_OFF,
IOEVENT_SET_RATES, IOEVENT_SET_RATES,
IOEVENT_GET_RCIN, IOEVENT_GET_RCIN,
IOEVENT_ENABLE_SBUS, IOEVENT_ENABLE_SBUS,
@ -217,6 +216,13 @@ void AP_IOMCU::thread_main(void)
continue; continue;
} }
} }
if (mask & EVENT_MASK(IOEVENT_SET_ONESHOT_ON)) {
if (!modify_register(PAGE_SETUP, PAGE_REG_SETUP_FEATURES, 0, P_SETUP_FEATURES_ONESHOT)) {
event_failed(IOEVENT_SET_ONESHOT_ON);
continue;
}
}
// check for regular timed events // check for regular timed events
uint32_t now = AP_HAL::millis(); uint32_t now = AP_HAL::millis();
@ -548,4 +554,10 @@ void AP_IOMCU::set_default_rate(uint16_t rate_hz)
trigger_event(IOEVENT_SET_DEFAULT_RATE); trigger_event(IOEVENT_SET_DEFAULT_RATE);
} }
// setup for oneshot mode
void AP_IOMCU::set_oneshot_mode(void)
{
trigger_event(IOEVENT_SET_ONESHOT_ON);
}
#endif // HAL_WITH_IO_MCU #endif // HAL_WITH_IO_MCU

5
libraries/AP_IOMCU/AP_IOMCU.h

@ -69,7 +69,10 @@ public:
// set default output rate // set default output rate
void set_default_rate(uint16_t rate_hz); void set_default_rate(uint16_t rate_hz);
// set to oneshot mode
void set_oneshot_mode(void);
private: private:
AP_HAL::UARTDriver &uart; AP_HAL::UARTDriver &uart;

Loading…
Cancel
Save