suica_structs_i.h 1.6 KB

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