logicanalyzer

24 channel, 100Msps logic analyzer hardware and software

#ifndef __EVENTMACHINE__
    #define __EVENTMACHINE__

    #include "pico/stdlib.h"
    #include "pico/util/queue.h"

    //Event handler function declaration
    typedef void(*EVENT_HANDLER)(void*);

    //Event machine struct
    typedef struct _EVENT_MACHINE
    {
        //Queue to store events
        queue_t queue;
        //Function to process the events
        EVENT_HANDLER handler;

    } EVENT_MACHINE;

    void event_machine_init(EVENT_MACHINE* machine, EVENT_HANDLER handler, uint8_t args_size, uint8_t queue_depth);
    bool event_has_events(EVENT_MACHINE* machine);
    void event_push(EVENT_MACHINE* machine, void* event);
    void event_process_queue(EVENT_MACHINE* machine, void* event_buffer, uint8_t max_events);
    void event_clear(EVENT_MACHINE* machine);
    void event_free(EVENT_MACHINE* machine);

#endif