mag_device.h 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. #pragma once
  2. #include <stdint.h>
  3. #include <stdbool.h>
  4. #include <storage/storage.h>
  5. #include <dialogs/dialogs.h>
  6. #include "mag_icons.h"
  7. #define MAG_DEV_NAME_MAX_LEN 22
  8. #define MAG_DEV_TRACKS 3
  9. #define MAG_APP_FOLDER ANY_PATH("mag")
  10. #define MAG_APP_EXTENSION ".mag"
  11. typedef void (*MagLoadingCallback)(void* context, bool state);
  12. typedef struct {
  13. FuriString* str;
  14. size_t len;
  15. } MagTrack;
  16. typedef struct {
  17. MagTrack track[MAG_DEV_TRACKS];
  18. } MagDeviceData;
  19. typedef struct {
  20. Storage* storage;
  21. DialogsApp* dialogs;
  22. MagDeviceData dev_data;
  23. char dev_name[MAG_DEV_NAME_MAX_LEN + 1];
  24. FuriString* load_path;
  25. MagLoadingCallback loading_cb;
  26. void* loading_cb_ctx;
  27. } MagDevice;
  28. MagDevice* mag_device_alloc();
  29. void mag_device_free(MagDevice* mag_dev);
  30. void mag_device_set_name(MagDevice* mag_dev, const char* name);
  31. bool mag_device_save(MagDevice* mag_dev, const char* dev_name);
  32. bool mag_file_select(MagDevice* mag_dev);
  33. void mag_device_data_clear(MagDeviceData* dev_data);
  34. void mag_device_clear(MagDevice* mag_dev);
  35. bool mag_device_delete(MagDevice* mag_dev, bool use_load_path);
  36. bool mag_device_parse_card_string(MagDevice* mag_dev, FuriString* card_str);
  37. void mag_device_set_loading_callback(
  38. MagDevice* mag_dev,
  39. MagLoadingCallback callback,
  40. void* context);