spi_mem_worker.h 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. #pragma once
  2. #include <furi.h>
  3. #include "spi_mem_chip.h"
  4. typedef struct SPIMemWorker SPIMemWorker;
  5. typedef struct {
  6. void (*const process)(SPIMemWorker* worker);
  7. } SPIMemWorkerModeType;
  8. typedef enum {
  9. SPIMemCustomEventWorkerChipIdentified,
  10. SPIMemCustomEventWorkerChipUnknown,
  11. SPIMemCustomEventWorkerBlockReaded,
  12. SPIMemCustomEventWorkerChipFail,
  13. SPIMemCustomEventWorkerFileFail,
  14. SPIMemCustomEventWorkerDone,
  15. SPIMemCustomEventWorkerVerifyFail,
  16. } SPIMemCustomEventWorker;
  17. typedef void (*SPIMemWorkerCallback)(void* context, SPIMemCustomEventWorker event);
  18. SPIMemWorker* spi_mem_worker_alloc();
  19. void spi_mem_worker_free(SPIMemWorker* worker);
  20. void spi_mem_worker_start_thread(SPIMemWorker* worker);
  21. void spi_mem_worker_stop_thread(SPIMemWorker* worker);
  22. bool spi_mem_worker_check_for_stop(SPIMemWorker* worker);
  23. void spi_mem_worker_chip_detect_start(
  24. SPIMemChip* chip_info,
  25. found_chips_t* found_chips,
  26. SPIMemWorker* worker,
  27. SPIMemWorkerCallback callback,
  28. void* context);
  29. void spi_mem_worker_read_start(
  30. SPIMemChip* chip_info,
  31. SPIMemWorker* worker,
  32. SPIMemWorkerCallback callback,
  33. void* context);
  34. void spi_mem_worker_verify_start(
  35. SPIMemChip* chip_info,
  36. SPIMemWorker* worker,
  37. SPIMemWorkerCallback callback,
  38. void* context);
  39. void spi_mem_worker_erase_start(
  40. SPIMemChip* chip_info,
  41. SPIMemWorker* worker,
  42. SPIMemWorkerCallback callback,
  43. void* context);
  44. void spi_mem_worker_write_start(
  45. SPIMemChip* chip_info,
  46. SPIMemWorker* worker,
  47. SPIMemWorkerCallback callback,
  48. void* context);