In an Actalent embedded firmware prototype, a microcontroller interrupt status register can report several pending sources at once. Implement an interrupt handler that decodes the status bits and appends one event for each recognized source to a bounded FIFO queue.
Implement handle_interrupt(status, timestamp, queue, capacity, dropped). status and timestamp are integers. queue is a list of event dictionaries in chronological order, and capacity is its maximum length. dropped is the number of events previously rejected because the queue was full.
Use these status bits:
1: timer interrupt, event type "TIMER"2: receive interrupt, event type "RX"4: error interrupt, event type "ERROR"For every recognized bit, create {"type": event_type, "timestamp": timestamp}. Process events in priority order: ERROR, RX, then TIMER. If the queue is full, do not remove existing events and increment dropped for each rejected event. Ignore unknown bits. Return (queue, dropped).
def handle_interrupt(status, timestamp, queue, capacity, dropped):