mirror of
https://github.com/afska/gba-link-connection.git
synced 2026-10-02 13:56:42 -05:00
Adding verbose logging
This commit is contained in:
@@ -27,6 +27,7 @@ static std::unique_ptr<InputHandler> startHandler =
|
||||
|
||||
static std::vector<std::string> debugLines;
|
||||
static int currentDebugLine = 0;
|
||||
static bool useVerboseLog = true;
|
||||
|
||||
void print() {
|
||||
u32 drawLine = 2;
|
||||
@@ -88,6 +89,12 @@ void DebugScene::load() {
|
||||
SCENE_init();
|
||||
BACKGROUND_enable(true, false, false, false);
|
||||
|
||||
linkRawWireless->debug = [](std::string string) {
|
||||
if (useVerboseLog)
|
||||
log(string);
|
||||
};
|
||||
linkRawWireless->log = [](std::string string) { log(string); };
|
||||
|
||||
log("---");
|
||||
log("LinkRawWireless demo");
|
||||
log("");
|
||||
@@ -99,8 +106,7 @@ void DebugScene::load() {
|
||||
log("SELECT: clear");
|
||||
log("---");
|
||||
log("");
|
||||
log("! setting log level to NORMAL");
|
||||
log("");
|
||||
toggleLogLevel();
|
||||
}
|
||||
|
||||
void DebugScene::tick(u16 keys) {
|
||||
@@ -122,6 +128,9 @@ void DebugScene::processButtons(u16 keys) {
|
||||
selectHandler->setIsPressed(keys & KEY_SELECT);
|
||||
startHandler->setIsPressed(keys & KEY_START);
|
||||
|
||||
if (bHandler->hasBeenPressedNow())
|
||||
toggleLogLevel();
|
||||
|
||||
if (lHandler->hasBeenPressedNow())
|
||||
scrollToTop();
|
||||
|
||||
@@ -141,6 +150,16 @@ void DebugScene::processButtons(u16 keys) {
|
||||
resetAdapter();
|
||||
}
|
||||
|
||||
void DebugScene::toggleLogLevel() {
|
||||
if (useVerboseLog) {
|
||||
useVerboseLog = false;
|
||||
log("! setting log level to NORMAL");
|
||||
} else {
|
||||
useVerboseLog = true;
|
||||
log("! setting log level to VERBOSE");
|
||||
}
|
||||
log("");
|
||||
}
|
||||
void DebugScene::resetAdapter() {
|
||||
log("> resetting adapter...");
|
||||
bool success = linkRawWireless->activate();
|
||||
|
||||
@@ -20,6 +20,7 @@ class DebugScene : public Scene {
|
||||
|
||||
private:
|
||||
void processButtons(u16 keys);
|
||||
void toggleLogLevel();
|
||||
void resetAdapter();
|
||||
};
|
||||
|
||||
|
||||
@@ -13,7 +13,6 @@
|
||||
#include "LinkGPIO.hpp"
|
||||
#include "LinkSPI.hpp"
|
||||
|
||||
#include <functional>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
@@ -62,7 +61,12 @@ const u16 LINK_RAW_WIRELESS_TIMER_IRQ_IDS[] = {IRQ_TIMER0, IRQ_TIMER1,
|
||||
IRQ_TIMER2, IRQ_TIMER3};
|
||||
|
||||
class LinkRawWireless {
|
||||
typedef void (*Logger)(std::string);
|
||||
|
||||
public:
|
||||
Logger debug = [](std::string str) {};
|
||||
Logger log = [](std::string str) {};
|
||||
|
||||
enum State {
|
||||
NEEDS_RESET,
|
||||
AUTHENTICATED,
|
||||
@@ -456,6 +460,7 @@ class LinkRawWireless {
|
||||
|
||||
bool start() {
|
||||
pingAdapter();
|
||||
debug("setting SPI mode");
|
||||
linkSPI->activate(LinkSPI::Mode::MASTER_256KBPS);
|
||||
|
||||
if (!login())
|
||||
@@ -473,16 +478,21 @@ class LinkRawWireless {
|
||||
}
|
||||
|
||||
void pingAdapter() {
|
||||
debug("setting SO as OUTPUT");
|
||||
linkGPIO->setMode(LinkGPIO::Pin::SO, LinkGPIO::Direction::OUTPUT);
|
||||
debug("setting SD as OUTPUT");
|
||||
linkGPIO->setMode(LinkGPIO::Pin::SD, LinkGPIO::Direction::OUTPUT);
|
||||
debug("setting SD = HIGH");
|
||||
linkGPIO->writePin(LinkGPIO::SD, true);
|
||||
wait(LINK_RAW_WIRELESS_PING_WAIT);
|
||||
debug("setting SD = LOW");
|
||||
linkGPIO->writePin(LinkGPIO::SD, false);
|
||||
}
|
||||
|
||||
bool login() {
|
||||
LoginMemory memory;
|
||||
|
||||
debug("first login packet");
|
||||
if (!exchangeLoginPacket(LINK_RAW_WIRELESS_LOGIN_PARTS[0], 0, memory))
|
||||
return false;
|
||||
|
||||
@@ -502,8 +512,10 @@ class LinkRawWireless {
|
||||
u32 response = transfer(packet, false);
|
||||
|
||||
if (msB32(response) != expectedResponse ||
|
||||
lsB32(response) != (u16)~memory.previousGBAData)
|
||||
lsB32(response) != (u16)~memory.previousGBAData) {
|
||||
debug("! invalid response");
|
||||
return false;
|
||||
}
|
||||
|
||||
memory.previousGBAData = data;
|
||||
memory.previousAdapterData = expectedResponse;
|
||||
|
||||
Reference in New Issue
Block a user