Skip to content

Commit

Permalink
implement get/setPinMappingsV2 which includes the new masks
Browse files Browse the repository at this point in the history
  • Loading branch information
bsstephan committed Feb 22, 2024
1 parent 08628c7 commit 33607b1
Showing 1 changed file with 74 additions and 0 deletions.
74 changes: 74 additions & 0 deletions src/configs/webconfig.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -970,6 +970,31 @@ std::string setPinMappings()
return serialize_json(doc);
}

std::string setPinMappingsV2()
{
DynamicJsonDocument doc = get_post_data();

GpioMappingInfo* gpioMappings = Storage::getInstance().getGpioMappings().pins;

char pinName[6];
for (Pin_t pin = 0; pin < (Pin_t)NUM_BANK0_GPIOS; pin++) {
snprintf(pinName, 6, "pin%0*d", 2, pin);
// setting a pin shouldn't change a new existing addon/reserved pin
if (gpioMappings[pin].action != GpioAction::RESERVED &&
gpioMappings[pin].action != GpioAction::ASSIGNED_TO_ADDON &&
(GpioAction)doc[pinName] != GpioAction::RESERVED &&
(GpioAction)doc[pinName] != GpioAction::ASSIGNED_TO_ADDON) {
gpioMappings[pin].action = (GpioAction)doc[pinName]["action"];
gpioMappings[pin].customButtonMask = (GpioAction)doc[pinName]["customButtonMask"];
gpioMappings[pin].customDpadMask = (GpioAction)doc[pinName]["customDpadMask"];
}
}

Storage::getInstance().save();

return serialize_json(doc);
}

std::string getPinMappings()
{
DynamicJsonDocument doc(LWIP_HTTPD_POST_MAX_PAYLOAD_LEN);
Expand Down Expand Up @@ -1010,6 +1035,53 @@ std::string getPinMappings()
return serialize_json(doc);
}

std::string getPinMappingsV2()
{
DynamicJsonDocument doc(LWIP_HTTPD_POST_MAX_PAYLOAD_LEN);

GpioMappingInfo* gpioMappings = Storage::getInstance().getGpioMappings().pins;

const auto writePinDoc = [&](const char* key, const GpioMappingInfo& value) -> void
{
writeDoc(doc, key, "action", value.action);
writeDoc(doc, key, "customButtonMask", value.customButtonMask);
writeDoc(doc, key, "customDpadMask", value.customDpadMask);
};

writePinDoc("pin00", gpioMappings[0]);
writePinDoc("pin01", gpioMappings[1]);
writePinDoc("pin02", gpioMappings[2]);
writePinDoc("pin03", gpioMappings[3]);
writePinDoc("pin04", gpioMappings[4]);
writePinDoc("pin05", gpioMappings[5]);
writePinDoc("pin06", gpioMappings[6]);
writePinDoc("pin07", gpioMappings[7]);
writePinDoc("pin08", gpioMappings[8]);
writePinDoc("pin09", gpioMappings[9]);
writePinDoc("pin10", gpioMappings[10]);
writePinDoc("pin11", gpioMappings[11]);
writePinDoc("pin12", gpioMappings[12]);
writePinDoc("pin13", gpioMappings[13]);
writePinDoc("pin14", gpioMappings[14]);
writePinDoc("pin15", gpioMappings[15]);
writePinDoc("pin16", gpioMappings[16]);
writePinDoc("pin17", gpioMappings[17]);
writePinDoc("pin18", gpioMappings[18]);
writePinDoc("pin19", gpioMappings[19]);
writePinDoc("pin20", gpioMappings[20]);
writePinDoc("pin21", gpioMappings[21]);
writePinDoc("pin22", gpioMappings[22]);
writePinDoc("pin23", gpioMappings[23]);
writePinDoc("pin24", gpioMappings[24]);
writePinDoc("pin25", gpioMappings[25]);
writePinDoc("pin26", gpioMappings[26]);
writePinDoc("pin27", gpioMappings[27]);
writePinDoc("pin28", gpioMappings[28]);
writePinDoc("pin29", gpioMappings[29]);

return serialize_json(doc);
}

std::string setKeyMappings()
{
DynamicJsonDocument doc = get_post_data();
Expand Down Expand Up @@ -1999,6 +2071,7 @@ static const std::pair<const char*, HandlerFuncPtr> handlerFuncs[] =
{ "/api/setCustomTheme", setCustomTheme },
{ "/api/getCustomTheme", getCustomTheme },
{ "/api/setPinMappings", setPinMappings },
{ "/api/setPinMappingsV2", setPinMappingsV2 },
{ "/api/setProfileOptions", setProfileOptions },
{ "/api/setPeripheralOptions", setPeripheralOptions },
{ "/api/getPeripheralOptions", getPeripheralOptions },
Expand All @@ -2013,6 +2086,7 @@ static const std::pair<const char*, HandlerFuncPtr> handlerFuncs[] =
{ "/api/getGamepadOptions", getGamepadOptions },
{ "/api/getLedOptions", getLedOptions },
{ "/api/getPinMappings", getPinMappings },
{ "/api/getPinMappingsV2", getPinMappingsV2 },
{ "/api/getProfileOptions", getProfileOptions },
{ "/api/getKeyMappings", getKeyMappings },
{ "/api/getAddonsOptions", getAddonOptions },
Expand Down

0 comments on commit 33607b1

Please sign in to comment.