suica_structs_i.h 1.6 KB

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