#ifndef TRADE_HPP #define TRADE_HPP #pragma once #include #include #include #include #include #define GAME_BOY_CLK gpio_ext_pb2 #define GAME_BOY_SI gpio_ext_pc3 #define GAME_BOY_SO gpio_ext_pb3 #define DELAY_MICROSECONDS 15 #define PKMN_BLANK 0x00 #define ITEM_1_HIGHLIGHTED 0xD0 #define ITEM_2_HIGHLIGHTED 0xD1 #define ITEM_3_HIGHLIGHTED 0xD2 #define ITEM_1_SELECTED 0xD4 #define ITEM_2_SELECTED 0xD5 #define ITEM_3_SELECTED 0xD6 #define PKMN_MASTER 0x01 #define PKMN_SLAVE 0x02 #define PKMN_CONNECTED 0x60 #define PKMN_WAIT 0x7F #define PKMN_ACTION 0x60 #define PKMN_TRADE_CENTRE ITEM_1_SELECTED #define PKMN_COLOSSEUM ITEM_2_SELECTED #define PKMN_BREAK_LINK ITEM_3_SELECTED #define TRADE_CENTRE_WAIT 0xFD typedef unsigned char byte; typedef enum { NOT_CONNECTED, CONNECTED, TRADE_CENTRE, COLOSSEUM } connection_state_t; typedef enum { INIT, READY_TO_GO, SEEN_FIRST_WAIT, SENDING_RANDOM_DATA, WAITING_TO_SEND_DATA, START_SENDING_DATA, SENDING_DATA, DATA_SENT, SENDING_PATCH_DATA, TRADE_PENDING, TRADE_CONFIRMATION, DONE } trade_centre_state_t; typedef struct App App; typedef struct { View* view; App* app; } Trade; Trade* trade_alloc(App* app); void trade_free(App* app); View* trade_get_view(App* app); extern unsigned char INPUT_BLOCK[405]; extern unsigned char DATA_BLOCK[405]; #endif /* TRADE_HPP */