diff options
Diffstat (limited to 'event.h')
-rw-r--r-- | event.h | 81 |
1 files changed, 51 insertions, 30 deletions
@@ -3,6 +3,54 @@ #include "pcilib.h" +typedef struct { + size_t max_events; + pcilib_timeout_t duration; +} pcilib_autostop_parameters_t; + +typedef struct { + pcilib_event_rawdata_callback_t callback; + void *user; +} pcilib_rawdata_parameters_t; + +typedef struct { + size_t max_threads; +} pcilib_parallel_parameters_t; + +typedef struct { + pcilib_autostop_parameters_t autostop; + pcilib_rawdata_parameters_t rawdata; + pcilib_parallel_parameters_t parallel; +} pcilib_event_parameters_t; + +struct pcilib_event_context_s { + pcilib_event_parameters_t params; + pcilib_t *pcilib; +}; + +typedef struct { + pcilib_event_t evid; + const char *name; + const char *description; +} pcilib_event_description_t; + +typedef struct { + pcilib_event_data_type_t data_type; + pcilib_event_t evid; + const char *name; + const char *description; +} pcilib_event_data_type_description_t; + +typedef enum { + PCILIB_STREAMING_STOP = 0, /**< stop streaming */ + PCILIB_STREAMING_CONTINUE = 1, /**< wait the default DMA timeout for a new data */ + PCILIB_STREAMING_WAIT = 2, /**< wait the specified timeout for a new data */ + PCILIB_STREAMING_CHECK = 3, /**< do not wait for the data, bail out imideatly if no data ready */ + PCILIB_STREAMING_FAIL = 4, /**< fail if data is not available on timeout */ + PCILIB_STREAMING_REQ_FRAGMENT = 5, /**< only fragment of a packet is read, wait for next fragment and fail if no data during DMA timeout */ + PCILIB_STREAMING_REQ_PACKET = 6, /**< wait for next packet and fail if no data during the specified timeout */ + PCILIB_STREAMING_TIMEOUT_MASK = 3 /**< mask specifying all timeout modes */ +} pcilib_streaming_action_t; /* * get_data: This call is used by get_data and copy_data functions of public @@ -16,9 +64,7 @@ * returned instead. The copy can be managed by the envelope function. */ -struct pcilib_event_api_description_s { - const char *title; - +typedef struct { pcilib_context_t *(*init)(pcilib_t *ctx); void (*free)(pcilib_context_t *ctx); @@ -35,35 +81,10 @@ struct pcilib_event_api_description_s { int (*get_data)(pcilib_context_t *ctx, pcilib_event_id_t event_id, pcilib_event_data_type_t data_type, size_t arg_size, void *arg, size_t *size, void **data); int (*return_data)(pcilib_context_t *ctx, pcilib_event_id_t event_id, pcilib_event_data_type_t data_type, void *data); -}; - - -typedef struct { - size_t max_events; - pcilib_timeout_t duration; -} pcilib_autostop_parameters_t; - -typedef struct { - pcilib_event_rawdata_callback_t callback; - void *user; -} pcilib_rawdata_parameters_t; - -typedef struct { - size_t max_threads; -} pcilib_parallel_parameters_t; - -typedef struct { - pcilib_autostop_parameters_t autostop; - pcilib_rawdata_parameters_t rawdata; - pcilib_parallel_parameters_t parallel; -} pcilib_event_parameters_t; - -struct pcilib_event_context_s { - pcilib_event_parameters_t params; - pcilib_t *pcilib; -}; +} pcilib_event_api_description_t; int pcilib_init_event_engine(pcilib_t *ctx); + #endif /* _PCILIB_EVENT_H */ |