diff --git a/examples/LinkWireless_demo/src/main.cpp b/examples/LinkWireless_demo/src/main.cpp index ad5aaaf..2a5b1ac 100644 --- a/examples/LinkWireless_demo/src/main.cpp +++ b/examples/LinkWireless_demo/src/main.cpp @@ -280,15 +280,10 @@ void messageLoop() { u32 lastLostPacketReceived = 0; u32 lastLostPacketReceivedPacketId = 0; #else - u32 vblanks = 0; - u32 totalVBlankTime = 0; - u32 totalSerialTime = 0; - u32 totalTimerTime = 0; - u32 totalSerialIRQs = 0; - u32 totalTimerIRQs = 0; u32 avgVBlankTime = 0; u32 avgSerialTime = 0; u32 avgTimerTime = 0; + u32 avgTime = 0; u32 avgSerialIRQs = 0; u32 avgTimerIRQs = 0; #endif @@ -390,26 +385,22 @@ void messageLoop() { // Normal output #ifdef PROFILING_ENABLED - vblanks++; - totalVBlankTime += linkWireless->lastVBlankTime; - totalSerialTime += linkWireless->lastSerialTime; - totalTimerTime += linkWireless->lastTimerTime; - totalSerialIRQs += linkWireless->lastFrameSerialIRQs; - totalTimerIRQs += linkWireless->lastFrameTimerIRQs; + if (linkWireless->vblankIRQs >= 60) { + avgVBlankTime = linkWireless->vblankTime / 60; + avgSerialTime = linkWireless->serialTime / 60; + avgTimerTime = linkWireless->timerTime / 60; + avgSerialIRQs = linkWireless->serialIRQs / 60; + avgTimerIRQs = linkWireless->timerIRQs / 60; + avgTime = (linkWireless->vblankTime + linkWireless->serialTime + + linkWireless->timerTime) / + 60; - if (vblanks >= 60) { - avgVBlankTime = totalVBlankTime / 60; - avgSerialTime = totalSerialTime / 60; - avgTimerTime = totalTimerTime / 60; - avgSerialIRQs = totalSerialIRQs / 60; - avgTimerIRQs = totalTimerIRQs / 60; - - vblanks = 0; - totalVBlankTime = 0; - totalSerialTime = 0; - totalTimerTime = 0; - totalSerialIRQs = 0; - totalTimerIRQs = 0; + linkWireless->vblankIRQs = 0; + linkWireless->vblankTime = 0; + linkWireless->serialTime = 0; + linkWireless->timerTime = 0; + linkWireless->serialIRQs = 0; + linkWireless->timerIRQs = 0; } #endif std::string output = @@ -460,9 +451,7 @@ void messageLoop() { output += "\n_onTimer: " + std::to_string(avgTimerTime); output += "\n_serialIRQs: " + std::to_string(avgSerialIRQs); output += "\n_timerIRQs: " + std::to_string(avgTimerIRQs); - output += "\n_ms: " + std::to_string(linkWireless->toMs( - avgVBlankTime + avgSerialTime * avgSerialIRQs + - avgTimerTime * avgTimerIRQs)); + output += "\n_ms: " + std::to_string(linkWireless->toMs(avgTime)); #else if (lostPackets > 0) { output += "\n\n_lostPackets: " + std::to_string(lostPackets) + "\n"; diff --git a/lib/LinkWireless.hpp b/lib/LinkWireless.hpp index db35f49..9842813 100644 --- a/lib/LinkWireless.hpp +++ b/lib/LinkWireless.hpp @@ -229,13 +229,12 @@ class LinkWireless { // std::function debug; // #define PROFILING_ENABLED #ifdef PROFILING_ENABLED - u32 lastVBlankTime = 0; - u32 lastSerialTime = 0; - u32 lastTimerTime = 0; - u32 lastFrameSerialIRQs = 0; - u32 lastFrameTimerIRQs = 0; - u32 serialIRQCount = 0; - u32 timerIRQCount = 0; + u32 vblankTime = 0; + u32 serialTime = 0; + u32 timerTime = 0; + u32 vblankIRQs = 0; + u32 serialIRQs = 0; + u32 timerIRQs = 0; #endif enum State { @@ -854,11 +853,8 @@ class LinkWireless { sessionState.pingSent = false; #ifdef PROFILING_ENABLED - lastVBlankTime = profileStop(); - lastFrameSerialIRQs = serialIRQCount; - lastFrameTimerIRQs = timerIRQCount; - serialIRQCount = 0; - timerIRQCount = 0; + vblankTime += profileStop(); + vblankIRQs++; #endif } @@ -908,8 +904,8 @@ class LinkWireless { } #ifdef PROFILING_ENABLED - lastSerialTime = profileStop(); - serialIRQCount++; + serialTime += profileStop(); + serialIRQs++; #endif } @@ -932,8 +928,8 @@ class LinkWireless { acceptConnectionsOrTransferData(); #ifdef PROFILING_ENABLED - lastTimerTime = profileStop(); - timerIRQCount++; + timerTime += profileStop(); + timerIRQs++; #endif }