trade.hpp 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. #ifndef TRADE_HPP
  2. #define TRADE_HPP
  3. #pragma once
  4. #include <furi.h>
  5. #include <furi_hal.h>
  6. #include <furi_hal_light.h>
  7. #include <gui/view.h>
  8. #include <gui/view_dispatcher.h>
  9. #define GAME_BOY_CLK gpio_ext_pb2
  10. #define GAME_BOY_SI gpio_ext_pc3
  11. #define GAME_BOY_SO gpio_ext_pb3
  12. #define DELAY_MICROSECONDS 15
  13. #define PKMN_BLANK 0x00
  14. #define ITEM_1_HIGHLIGHTED 0xD0
  15. #define ITEM_2_HIGHLIGHTED 0xD1
  16. #define ITEM_3_HIGHLIGHTED 0xD2
  17. #define ITEM_1_SELECTED 0xD4
  18. #define ITEM_2_SELECTED 0xD5
  19. #define ITEM_3_SELECTED 0xD6
  20. #define PKMN_MASTER 0x01
  21. #define PKMN_SLAVE 0x02
  22. #define PKMN_CONNECTED 0x60
  23. #define PKMN_WAIT 0x7F
  24. #define PKMN_ACTION 0x60
  25. #define PKMN_TRADE_CENTRE ITEM_1_SELECTED
  26. #define PKMN_COLOSSEUM ITEM_2_SELECTED
  27. #define PKMN_BREAK_LINK ITEM_3_SELECTED
  28. #define TRADE_CENTRE_WAIT 0xFD
  29. typedef unsigned char byte;
  30. typedef enum { NOT_CONNECTED, CONNECTED, TRADE_CENTRE, COLOSSEUM } connection_state_t;
  31. typedef enum {
  32. INIT,
  33. READY_TO_GO,
  34. SEEN_FIRST_WAIT,
  35. SENDING_RANDOM_DATA,
  36. WAITING_TO_SEND_DATA,
  37. START_SENDING_DATA,
  38. SENDING_DATA,
  39. DATA_SENT,
  40. SENDING_PATCH_DATA,
  41. TRADE_PENDING,
  42. TRADE_CONFIRMATION,
  43. DONE
  44. } trade_centre_state_t;
  45. typedef struct App App;
  46. typedef struct {
  47. View* view;
  48. App* app;
  49. } Trade;
  50. Trade* trade_alloc(App* app);
  51. void trade_free(App* app);
  52. View* trade_get_view(App* app);
  53. extern unsigned char INPUT_BLOCK[405];
  54. extern unsigned char DATA_BLOCK[405];
  55. #endif /* TRADE_HPP */