53 lines
1.7 KiB
C++
53 lines
1.7 KiB
C++
#include "LogService.h"
|
|
#include "Static.h"
|
|
#include <ArduinoLog.h>
|
|
|
|
static const char* eventValue(const InputEvent& evt);
|
|
|
|
char LogService::s_valueBuf[255];
|
|
|
|
const char*
|
|
LogService::eventValue(const InputEvent& evt)
|
|
{
|
|
switch(evt.type) {
|
|
case InputEvent::Null:
|
|
snprintf(s_valueBuf, sizeof(s_valueBuf), "null");break;
|
|
case InputEvent::Integer:
|
|
snprintf(s_valueBuf, sizeof(s_valueBuf), "%d %02x", evt.asInt(), evt.asInt());break;
|
|
case InputEvent::String:
|
|
snprintf(s_valueBuf, sizeof(s_valueBuf), "\"%s\"", evt.asString());break;
|
|
case InputEvent::Color:
|
|
snprintf(s_valueBuf, sizeof(s_valueBuf), "[%d, %d, %d]", evt.asRGB().r, evt.asRGB().g, evt.asRGB().b);break;
|
|
case InputEvent::Pointer:
|
|
snprintf(s_valueBuf, sizeof(s_valueBuf), "*%p", evt.as<void*>());break;
|
|
default:
|
|
snprintf(s_valueBuf, sizeof(s_valueBuf), "CORRUPTED");break;
|
|
}
|
|
return s_valueBuf;
|
|
}
|
|
|
|
void
|
|
LogService::handleEvent(const InputEvent& evt) {
|
|
if (evt.intent != InputEvent::None) {
|
|
if (evt.intent != m_lastEvent.intent) {
|
|
if (m_duplicateEvents > 0) {
|
|
Log.trace("Suppressed reporting %d duplicate events.", m_duplicateEvents);
|
|
}
|
|
const char* sourceName = evt.name();
|
|
const char* valueBuf = eventValue(evt);
|
|
if (sourceName == 0) {
|
|
Log.trace("Event: intent: %d value: %s", evt.intent, valueBuf);
|
|
} else {
|
|
Log.trace("Event: intent: %s value: %s", sourceName, valueBuf);
|
|
}
|
|
m_duplicateEvents = 0;
|
|
m_lastEvent = evt;
|
|
} else {
|
|
m_duplicateEvents++;
|
|
}
|
|
}
|
|
}
|
|
|
|
STATIC_ALLOC(LogService);
|
|
STATIC_TASK(LogService);
|