in servo_pkg/src/led_mgr.cpp [123:144]
void LedMgr::setLedValFromFile(std::unordered_map<std::string, int> &ledValuesMap,
const std::string &filePath) {
Json::Value ledJsonValue;
Json::Reader reader;
std::ifstream ifs(filePath);
if (!reader.parse(ifs, ledJsonValue)) {
RCLCPP_ERROR(logger_, "Error parsing led_value.json");
return;
}
if (!ledJsonValue.isMember(LED_HEADER_KEY)) {
RCLCPP_ERROR(logger_, "Led value file error: No led header");
return;
}
if (!ledJsonValue[LED_HEADER_KEY].isMember(RED_CHANNEL_KEY) || !ledJsonValue[LED_HEADER_KEY].isMember(GREEN_CHANNEL_KEY) || !ledJsonValue[LED_HEADER_KEY].isMember(BLUE_CHANNEL_KEY)) {
RCLCPP_ERROR(logger_, "Led value file error: Missing channel keys");
return;
}
ledValuesMap[RED_CHANNEL_KEY] = ledJsonValue[LED_HEADER_KEY][RED_CHANNEL_KEY].asInt();
ledValuesMap[GREEN_CHANNEL_KEY] = ledJsonValue[LED_HEADER_KEY][GREEN_CHANNEL_KEY].asInt();
ledValuesMap[BLUE_CHANNEL_KEY] = ledJsonValue[LED_HEADER_KEY][BLUE_CHANNEL_KEY].asInt();
}