112 #define HW_DRIVER_MAX_CHANNELS 8
116 #define HW_DRIVER_MAX_SUBSCRIPTIONS 8
143 #define hw_init(type, metadata) \
144 hw_driver_init(type, metadata); \
145 hw_channel_init(type, metadata)
149 #define hw_init_and_subscribe(type, metadata, pseudo_isr) \
150 hw_init(type, metadata); \
151 hw_subscribe(type, metadata, pseudo_isr)
178 #define hw_subscribe(type, metadata, isr) \
179 _hw_subscribe(type, metadata, isr, false)
190 #define hw_subscribe_single_shot(type, metadata, isr) \
191 _hw_subscribe(type, metadata, isr, true)
static volatile semaphore_t HW_SEM_UART0
bool single_shot_subscription
void hw_notify(HW_TYPE, hw_metadata, notification)
hw_channel * _hw_get_channel(HW_TYPE, hw_metadata)
void(* slot)(notification)
uint32_t * get_adc_samples()
void hw_notify_uart(hw_metadata uart_metadata)
void hw_unsubscribe(HW_TYPE, hw_metadata, void(*isr)(notification note))
hw_driver * hw_driver_singleton(HW_TYPE)
_isr_subscription * free_slots
#define HW_DRIVER_MAX_SUBSCRIPTIONS
_isr_subscription * full_slots
void hw_driver_init(HW_TYPE, hw_metadata)
#define HW_DRIVER_MAX_CHANNELS
void hw_channel_init(HW_TYPE, hw_metadata)
void _hw_subscribe(HW_TYPE, hw_metadata, void(*isr)(notification note), bool)