mag_state.h 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  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. typedef struct {
  34. MagTxState tx;
  35. MagTrackState track;
  36. MagReverseState reverse;
  37. uint32_t us_clock;
  38. uint32_t us_interpacket;
  39. MagPin pin_input;
  40. MagPin pin_output;
  41. MagPin pin_enable;
  42. bool is_debug;
  43. } MagState;
  44. const GpioPin* mag_state_enum_to_pin(MagPin pin);
  45. bool mag_state_gpio_is_valid(MagState* state);
  46. void mag_state_gpio_reset(MagState* state);
  47. bool mag_state_load(MagState* out_state);
  48. void mag_state_save(MagState* state);