mag_state.h 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. #pragma once
  2. #include <string.h>
  3. #include <stddef.h>
  4. #include <stdint.h>
  5. #include <stdbool.h>
  6. #include <furi_hal_resources.h>
  7. #include <furi_hal_rtc.h>
  8. #include <storage/storage.h>
  9. #include <flipper_format/flipper_format.h>
  10. #include "helpers/mag_types.h"
  11. #define MAG_STATE_HEADER "Mag State"
  12. #define MAG_STATE_VER 1
  13. #define MAG_STATE_DIR STORAGE_APP_DATA_PATH_PREFIX
  14. #define MAG_STATE_PATH MAG_STATE_DIR "/mag_state.txt"
  15. typedef enum {
  16. MagPinA7,
  17. MagPinA6,
  18. MagPinA4,
  19. MagPinB3,
  20. MagPinB2,
  21. MagPinC3,
  22. MagPinC1,
  23. MagPinC0,
  24. } MagPin;
  25. #define MAG_STATE_DEFAULT_REVERSE MagReverseStateOff
  26. #define MAG_STATE_DEFAULT_TRACK MagTrackStateOneAndTwo
  27. #define MAG_STATE_DEFAULT_TX MagTxStateGPIO
  28. #define MAG_STATE_DEFAULT_US_CLOCK 240
  29. #define MAG_STATE_DEFAULT_US_INTERPACKET 10
  30. #define MAG_STATE_DEFAULT_PIN_INPUT MagPinA7
  31. #define MAG_STATE_DEFAULT_PIN_OUTPUT MagPinA6
  32. #define MAG_STATE_DEFAULT_PIN_ENABLE MagPinA4
  33. #define MAG_STATE_DEFAULT_ALLOW_UART false
  34. typedef struct {
  35. MagTxState tx;
  36. MagTrackState track;
  37. MagReverseState reverse;
  38. uint32_t us_clock;
  39. uint32_t us_interpacket;
  40. MagPin pin_input;
  41. MagPin pin_output;
  42. MagPin pin_enable;
  43. bool allow_uart;
  44. bool is_debug;
  45. } MagState;
  46. const GpioPin* mag_state_enum_to_pin(MagPin pin);
  47. bool mag_state_gpio_is_valid(MagState* state);
  48. void mag_state_gpio_reset(MagState* state);
  49. bool mag_state_load(MagState* out_state);
  50. void mag_state_save(MagState* state);