in servo_pkg/src/servo_mgr.cpp [121:153]
void ServoMgr::setCalHdl(const std::shared_ptr<rmw_request_id_t> request_header,
const std::shared_ptr<deepracer_interfaces_pkg::srv::SetCalibrationSrv::Request> req,
std::shared_ptr<deepracer_interfaces_pkg::srv::SetCalibrationSrv::Response> res) {
(void)request_header;
auto itCal = calibrationMap_.find(req->cal_type);
if (itCal == calibrationMap_.end()) {
RCLCPP_ERROR(logger_, "Invalid calibration type");
res->error = 1;
return;
}
auto itMin = itCal->second.find(MIN_KEY);
auto itMid = itCal->second.find(MID_KEY);
auto itMax = itCal->second.find(MAX_KEY);
auto itPolar = itCal->second.find(POLARITY_KEY);
if (itMin != itCal->second.end() && itMid != itCal->second.end()
&& itMax != itCal->second.end() && itPolar != itCal->second.end()) {
itMin->second = req->min;
itMid->second = req->mid;
itMax->second = req->max;
itPolar->second = req->polarity;
writeCalJSON(calibrationMap_, CAL_PATH);
res->error = 0;
}
else {
RCLCPP_ERROR(logger_, "Invalid calibration fields");
res->error = 1;
}
}