in servo_pkg/src/servo_mgr.cpp [164:195]
void ServoMgr::getCalHdl(const std::shared_ptr<rmw_request_id_t> request_header,
const std::shared_ptr<deepracer_interfaces_pkg::srv::GetCalibrationSrv::Request> req,
std::shared_ptr<deepracer_interfaces_pkg::srv::GetCalibrationSrv::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()) {
RCLCPP_INFO(logger_, "Calibration values: Min: %d, Mid: %d, Max: %d, Polarity: %d", itMin->second, itMid->second, itMax->second, itPolar->second );
res->min = itMin->second;
res->mid = itMid->second;
res->max = itMax->second;
res->polarity = itPolar->second;
res->error = 0;
}
else {
RCLCPP_ERROR(logger_, "Invalid calibration fields");
res->error = 1;
}
}