void ServoMgr::setCalHdl()

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