sump.h 1011 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. #pragma once
  2. #include <stdint.h>
  3. #include <stdbool.h>
  4. #include <stdio.h>
  5. #define MAX_SAMPLE_MEM 16384
  6. typedef enum {
  7. SUMP_CMD_RESET = 0x00,
  8. SUMP_CMD_ARM = 0x01,
  9. SUMP_CMD_QUERY_ID = 0x02,
  10. SUMP_CMD_SELF_TEST = 0x03,
  11. SUMP_CMD_GET_METADATA = 0x04,
  12. SUMP_CMD_FINISH_NOW = 0x05,
  13. SUMP_CMD_XON = 0x11,
  14. SUMP_CMD_XOFF = 0x13,
  15. SUMP_CMD_SET_DIVIDER = 0x80,
  16. SUMP_CMD_SET_READ_DELAY_COUNT = 0x81,
  17. SUMP_CMD_SET_FLAGS = 0x82,
  18. SUMP_CMD_TRIGGER_MASK = 0xC0,
  19. SUMP_CMD_TRIGGER_VALUES = 0xC1,
  20. SUMP_CMD_TRIGGER_CONFIG = 0xC2,
  21. } SumpCommands;
  22. typedef struct {
  23. bool armed;
  24. uint8_t flags;
  25. uint32_t divider;
  26. uint32_t read_count;
  27. uint32_t delay_count;
  28. uint16_t trig_delay;
  29. uint16_t trig_config;
  30. uint32_t trig_mask;
  31. uint32_t trig_values;
  32. void (*tx_data)(void* ctx, uint8_t* data, size_t length);
  33. void* tx_data_ctx;
  34. } Sump;
  35. Sump* sump_alloc();
  36. void sump_free(Sump* sump);
  37. size_t sump_handle(Sump* sump, uint8_t* data, size_t length);