in servo_pkg/src/led_mgr.cpp [75:101]
bool LedMgr::setLedCtrlHdl(const std::shared_ptr<rmw_request_id_t> request_header,
const std::shared_ptr<deepracer_interfaces_pkg::srv::SetLedCtrlSrv::Request> req,
std::shared_ptr<deepracer_interfaces_pkg::srv::SetLedCtrlSrv::Response> res) {
(void)request_header;
RCLCPP_INFO(logger_, "LedMgr pwm channel on R-G-B %d-%d-%d", req->red, req->green, req->blue);
res->error = 0;
if (req->red < 0 || req->red > 10000000 ||
req->green < 0 || req->green > 10000000 ||
req->blue < 0 || req->blue > 10000000) {
RCLCPP_ERROR(logger_, "Invalid LED color combination: R-G-B %d-%d-%d", req->red, req->green, req->blue);
res->error = 1;
return false;
}
ledVec_[red]->setDuty(req->red);
ledVec_[green]->setDuty(req->green);
ledVec_[blue]->setDuty(req->blue);
// Write the updated values in the file
ledValuesMap_[RED_CHANNEL_KEY] = req->red;
ledValuesMap_[GREEN_CHANNEL_KEY] = req->green;
ledValuesMap_[BLUE_CHANNEL_KEY] = req->blue;
writeLedValJSON(ledValuesMap_, LED_VAL_PATH);
return true;
}