134 new_subscrip->
slot = isr;
144 while(remove->slot != isr) {++
remove;}
158 while(subscrip && subscrip != new_subscrip) {
159 subscrip->
slot(note);
160 new_subscrip = subscrip->
next;
167 subscrip = new_subscrip;
static uint8_t UART0_RX_BUFFER_SIZE
void hw_notify(HW_TYPE type, hw_metadata metadata, notification note)
static hw_driver HW_TIMER_DRIVER
void GPIOPortF_Handler(void)
#define notification_init(_type, _value)
static volatile semaphore_t HW_SEM_UART0
tcb_t * os_add_thread(task_t task)
bool single_shot_subscription
bool UARTCharsAvail(uint32_t ui32Base)
void hw_notify_uart(hw_metadata uart_metadata)
static hw_driver HW_UART_DRIVER
static uint8_t UART0_TX_BUFFER_SIZE
#define SYSCTL_PERIPH_GPIOF
void(* slot)(notification)
void TIMER1A_Handler(void)
void ADC0Seq2_Handler(void)
#define TIMER_TIMA_TIMEOUT
void UARTIntClear(uint32_t ui32Base, uint32_t ui32IntFlags)
#define UART_DEFAULT_BAUD_RATE
#define SYSCTL_PERIPH_UART0
static uint8_t UART0_RX_BUFFER[BUFFER_MAX_LENGTH]
#define BUFFER_MAX_LENGTH
_isr_subscription * free_slots
int32_t ADCSequenceDataGet(uint32_t ui32Base, uint32_t ui32SequenceNum, uint32_t *pui32Buffer)
int32_t UARTCharGetNonBlocking(uint32_t ui32Base)
#define HW_DRIVER_MAX_SUBSCRIPTIONS
#define SYSCTL_PERIPH_GPIOA
#define CDL_DELETE(head, del)
void ADC0Seq1_Handler(void)
uint32_t UARTIntStatus(uint32_t ui32Base, bool bMasked)
void TIMER0A_Handler(void)
void hw_driver_init(HW_TYPE type, hw_metadata metadata)
uint32_t ADC0_SEQ3_SAMPLES[4]
void TimerIntClear(uint32_t ui32Base, uint32_t ui32IntFlags)
#define SYSCTL_PERIPH_TIMER0
void SysCtlPeripheralEnable(uint32_t ui32Peripheral)
#define uart_metadata_init(_baud_rate, _channel, _interrupt)
void ADCIntClear(uint32_t ui32Base, uint32_t ui32SequenceNum)
uint32_t ADC0_SEQ2_SAMPLES[4]
void timer_add_interrupt(hw_metadata metadata)
hw_driver * hw_driver_singleton(HW_TYPE type)
void _hw_subscribe(HW_TYPE type, hw_metadata metadata, void(*isr)(notification note), bool single_shot)
_isr_subscription * full_slots
semaphore_t HW_ADC_SEQ2_SEM
#define buffer_add(buf, elt)
void ADC0Seq3_Handler(void)
void TIMER2A_Handler(void)
#define timer_metadata_init(_base, _frequency, _interrupt, _periodic)
#define os_surrender_context()
static hw_driver HW_BUTTON_DRIVER
#define buffer_empty(buf)
void uart_init(hw_metadata metadata)
void hw_unsubscribe(HW_TYPE type, hw_metadata metadata, void(*isr)(notification note))
void UARTCharPut(uint32_t ui32Base, unsigned char ucData)
void hw_channel_init(HW_TYPE type, hw_metadata metadata)
void GPIOIntClear(uint32_t ui32Port, uint32_t ui32IntFlags)
uint32_t ADC0_SEQ1_SAMPLES[4]
static bool UART_LAST_WAS_CR
int32_t GPIOPinRead(uint32_t ui32Port, uint8_t ui8Pins)
static uint8_t UART0_TX_BUFFER[BUFFER_MAX_LENGTH]
hw_channel * _hw_get_channel(HW_TYPE type, hw_metadata metadata)
_isr_subscription isr_subscriptions[8]
uint32_t ADC0_SEQ0_SAMPLES[4]
#define CDL_PREPEND(head, add)
void ADC0Seq0_Handler(void)