main: fix group_gpio_config parsing
Fix incorrect parsing of GPIO "pin"/"num" in group_gpio_config.
Motivation:
The code mistakenly accessed "pin"/"num" from the outer gpioConfig
object instead of from each config entry in group_gpio_config.
When "pin"/"num" only existed in the inner config, this led to
std::out_of_range exceptions at runtime.
Design:
Changed the parsing logic to read "pin"/"num" from each individual
config entry inside group_gpio_config instead of the parent object.
Change-Id: Ie479a336fae5e67c47c458e031a4cb2e9d8954cf
Signed-off-by: Liora Guo <liora.guo.wiwynn@gmail.com>
diff --git a/src/main.cpp b/src/main.cpp
index 06e1c80..c715d5b 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -102,15 +102,15 @@
for (const auto& config : groupGpio)
{
GpioInfo gpioCfg;
- if (gpioConfig.contains("pin"))
+ if (config.contains("pin"))
{
// When "pin" key is used, parse as alphanumeric
- gpioCfg.number = getGpioNum(gpioConfig.at("pin"));
+ gpioCfg.number = getGpioNum(config.at("pin"));
}
else
{
// Without "pin", "num" is assumed and parsed as an integer
- gpioCfg.number = gpioConfig.at("num").get<uint32_t>();
+ gpioCfg.number = config.at("num").get<uint32_t>();
}
gpioCfg.direction = config["direction"];
gpioCfg.name = config["name"];