void ServoMgr::getCalHdl()

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;
        }
    }