Hide some M0 EventDispatcher event masks.

This commit is contained in:
Jared Boone 2016-06-19 11:41:38 -07:00
parent dbc2a5c9ea
commit f731366248
3 changed files with 14 additions and 5 deletions

View File

@ -38,12 +38,9 @@
#include <cstdint> #include <cstdint>
constexpr auto EVT_MASK_RTC_TICK = EVENT_MASK(0);
constexpr auto EVT_MASK_LCD_FRAME_SYNC = EVENT_MASK(1);
constexpr auto EVT_MASK_SWITCHES = EVENT_MASK(3); constexpr auto EVT_MASK_SWITCHES = EVENT_MASK(3);
constexpr auto EVT_MASK_ENCODER = EVENT_MASK(4); constexpr auto EVT_MASK_ENCODER = EVENT_MASK(4);
constexpr auto EVT_MASK_TOUCH = EVENT_MASK(5); constexpr auto EVT_MASK_TOUCH = EVENT_MASK(5);
constexpr auto EVT_MASK_APPLICATION = EVENT_MASK(6);
class EventDispatcher { class EventDispatcher {
public: public:
@ -63,6 +60,14 @@ public:
} }
} }
static inline void event_isr_rtc_tick() {
events_flag_isr(EVT_MASK_RTC_TICK);
}
static inline void event_isr_lcd_frame_sync() {
events_flag_isr(EVT_MASK_LCD_FRAME_SYNC);
}
static inline void events_flag(const eventmask_t events) { static inline void events_flag(const eventmask_t events) {
if( thread_event_loop ) { if( thread_event_loop ) {
chEvtSignal(thread_event_loop, events); chEvtSignal(thread_event_loop, events);
@ -80,6 +85,10 @@ public:
} }
private: private:
static constexpr auto EVT_MASK_RTC_TICK = EVENT_MASK(0);
static constexpr auto EVT_MASK_LCD_FRAME_SYNC = EVENT_MASK(1);
static constexpr auto EVT_MASK_APPLICATION = EVENT_MASK(6);
static MessageHandlerMap message_map_; static MessageHandlerMap message_map_;
static Thread* thread_event_loop; static Thread* thread_event_loop;

View File

@ -54,7 +54,7 @@ CH_IRQ_HANDLER(PIN_INT4_IRQHandler) {
CH_IRQ_PROLOGUE(); CH_IRQ_PROLOGUE();
chSysLockFromIsr(); chSysLockFromIsr();
EventDispatcher::events_flag_isr(EVT_MASK_LCD_FRAME_SYNC); EventDispatcher::event_isr_lcd_frame_sync();
chSysUnlockFromIsr(); chSysUnlockFromIsr();
LPC_GPIO_INT->IST = (1U << 4); LPC_GPIO_INT->IST = (1U << 4);

View File

@ -39,7 +39,7 @@ CH_IRQ_HANDLER(RTC_IRQHandler) {
CH_IRQ_PROLOGUE(); CH_IRQ_PROLOGUE();
chSysLockFromIsr(); chSysLockFromIsr();
EventDispatcher::events_flag_isr(EVT_MASK_RTC_TICK); EventDispatcher::event_isr_rtc_tick();
chSysUnlockFromIsr(); chSysUnlockFromIsr();
rtc::interrupt::clear_all(); rtc::interrupt::clear_all();