Adding verbose logging

This commit is contained in:
Rodrigo Alfonso
2024-01-12 08:14:11 -03:00
parent 82a3a8cad7
commit f71cbccd2a
3 changed files with 36 additions and 4 deletions

View File

@@ -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();

View File

@@ -20,6 +20,7 @@ class DebugScene : public Scene {
private:
void processButtons(u16 keys);
void toggleLogLevel();
void resetAdapter();
};

View File

@@ -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;