suica_structs_i.h 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. #include <datetime.h>
  2. #include <stdbool.h>
  3. #include <furi.h>
  4. typedef enum {
  5. SuicaKeikyu,
  6. SuicaTokyoMetro,
  7. SuicaToei,
  8. SuicaJR,
  9. SuicaTWR,
  10. SuicaTokyoMonorail,
  11. SuicaRailwayTypeMax,
  12. } SuicaRailwayCompany;
  13. typedef enum {
  14. SuicaBalanceAdd,
  15. SuicaBalanceSub,
  16. SuicaBalanceEqual,
  17. } SuicaBalanceChangeSign;
  18. typedef struct {
  19. uint8_t station_code;
  20. uint8_t station_number;
  21. FuriString* name;
  22. FuriString* jr_header;
  23. } Station;
  24. typedef struct {
  25. uint8_t line_code;
  26. int logo_offset[2];
  27. const char* long_name;
  28. uint8_t station_num;
  29. SuicaRailwayCompany type;
  30. const char* short_name;
  31. const Icon* logo_icon;
  32. } Railway;
  33. typedef struct {
  34. Railway entry_line;
  35. Station entry_station;
  36. Railway exit_line;
  37. Station exit_station;
  38. uint8_t year;
  39. uint8_t month;
  40. uint8_t day;
  41. uint8_t hour;
  42. uint8_t minute;
  43. uint16_t balance;
  44. uint8_t history_type;
  45. uint8_t area_code;
  46. uint16_t previous_balance;
  47. uint16_t balance_change;
  48. SuicaBalanceChangeSign balance_sign;
  49. uint8_t* shop_code;
  50. } SuicaHistory;
  51. typedef struct {
  52. uint8_t entry; // Which entry we are currently viewing
  53. uint8_t page; // Which vertial page we are on
  54. uint8_t* travel_history; // Dynamic array for raw 16-byte entries
  55. size_t size; // Number of entries currently stored
  56. size_t capacity; // Allocated capacity
  57. uint8_t animator_tick; // Counter for the animations
  58. SuicaHistory history; // Current history entry
  59. } SuicaHistoryViewModel;