diff --git a/examples/LinkCard_demo/src/main.cpp b/examples/LinkCard_demo/src/main.cpp index b935cad..b7ff5d3 100644 --- a/examples/LinkCard_demo/src/main.cpp +++ b/examples/LinkCard_demo/src/main.cpp @@ -47,11 +47,13 @@ int main() { std::string output = "LinkCard_demo (v8.0.0)\n\n"; output += "Device: "; + // (2) Probe the connected device u32 initialVCount = REG_VCOUNT; auto device = linkCard->getConnectedDevice([&initialVCount]() { u32 elapsed = (REG_VCOUNT - initialVCount + 228) % 228; return elapsed > 30; }); + switch (device) { case LinkCard::ConnectedDevice::E_READER_JAP: case LinkCard::ConnectedDevice::E_READER_USA: { @@ -66,7 +68,7 @@ int main() { u32 loaderSize; const u8* loader = (const u8*)gbfs_get_obj(fs, fileName, &loaderSize); - // (2) Send the DLC loader program + // (3) Send the DLC loader program auto result = linkCard->sendLoader(loader, loaderSize, []() { u16 keys = ~REG_KEYS & KEY_ANY; return keys & KEY_B; @@ -89,7 +91,7 @@ int main() { if (Common::didPress(KEY_A, a)) { Common::log("Receiving...\n\nPress B to cancel"); - // (3) Receive scanned cards + // (4) Receive scanned cards u8 card[LINK_CARD_SIZE + 1]; // +1 to interpret contents as a string auto result = linkCard->receiveCard(card, []() { u16 keys = ~REG_KEYS & KEY_ANY; diff --git a/lib/LinkCard.hpp b/lib/LinkCard.hpp index 2c586fa..5878491 100644 --- a/lib/LinkCard.hpp +++ b/lib/LinkCard.hpp @@ -9,15 +9,15 @@ // LinkCard* linkCard = new LinkCard(); // - 2) Probe the connected device: // auto device = getConnectedDevice(); -// - 2) Send the DLC loader program: +// - 3) Send the DLC loader program: // if (device == LinkCard::ConnectedDevice::E_READER_USA) // LinkCard::SendResult result = linkCard->sendLoader(loader, []() { // u16 keys = ~REG_KEYS & KEY_ANY; // return keys & KEY_START; // })); -// - 3) Receive scanned cards: -// if (device == LinkCard::ConnectedDevice::CARD_SCANNER) { -// u8 card[LINK_CARD_CARD_SIZE]; +// - 4) Receive scanned cards: +// if (device == LinkCard::ConnectedDevice::DLC_LOADER) { +// u8 card[LINK_CARD_SIZE]; // bool received = linkCard->receiveCard(card, []() { // u16 keys = ~REG_KEYS & KEY_ANY; // return keys & KEY_START; @@ -84,6 +84,14 @@ class LinkCard { static constexpr int PRE_TRANSFER_WAIT = 2 + 1; public: + enum class ConnectedDevice { + E_READER_USA, + E_READER_JAP, + DLC_LOADER, + WRONG_CONNECTION, + UNKNOWN_DEVICE + }; + enum class SendResult { SUCCESS, UNALIGNED, @@ -92,6 +100,7 @@ class LinkCard { WRONG_DEVICE, FAILURE_DURING_TRANSFER }; + enum class ReceiveResult { SUCCESS, CANCELED, @@ -99,13 +108,6 @@ class LinkCard { BAD_CHECKSUM, UNEXPECTED_FAILURE, }; - enum class ConnectedDevice { - E_READER_USA, - E_READER_JAP, - DLC_LOADER, - WRONG_CONNECTION, - UNKNOWN_DEVICE - }; /** * Returns the connected device. diff --git a/lib/c_bindings/C_LinkCard.h b/lib/c_bindings/C_LinkCard.h index 52156b3..26b3463 100644 --- a/lib/c_bindings/C_LinkCard.h +++ b/lib/c_bindings/C_LinkCard.h @@ -9,6 +9,16 @@ extern "C" { typedef void* C_LinkCardHandle; +#define C_LINK_CARD_SIZE 1998 + +typedef enum { + C_LINK_CARD_CONNECTED_DEVICE_E_READER_USA, + C_LINK_CARD_CONNECTED_DEVICE_E_READER_JAP, + C_LINK_CARD_CONNECTED_DEVICE_DLC_LOADER, + C_LINK_CARD_CONNECTED_DEVICE_WRONG_CONNECTION, + C_LINK_CARD_CONNECTED_DEVICE_UNKNOWN_DEVICE +} C_LinkCard_ConnectedDevice; + typedef enum { C_LINK_CARD_SEND_RESULT_SUCCESS, C_LINK_CARD_SEND_RESULT_UNALIGNED, @@ -26,14 +36,6 @@ typedef enum { C_LINK_CARD_RECEIVE_RESULT_UNEXPECTED_FAILURE } C_LinkCard_ReceiveResult; -typedef enum { - C_LINK_CARD_CONNECTED_DEVICE_E_READER_USA, - C_LINK_CARD_CONNECTED_DEVICE_E_READER_JAP, - C_LINK_CARD_CONNECTED_DEVICE_DLC_LOADER, - C_LINK_CARD_CONNECTED_DEVICE_WRONG_CONNECTION, - C_LINK_CARD_CONNECTED_DEVICE_UNKNOWN_DEVICE -} C_LinkCard_ConnectedDevice; - C_LinkCardHandle C_LinkCard_createDefault(); void C_LinkCard_destroy(C_LinkCardHandle handle);