feat(grade_calculator) implement grade_calculator

Implemented working version of grade_calculator, can be tested using
service call
This commit is contained in:
2025-10-01 11:47:36 +02:00
parent c0980819bc
commit 42aadfb0ce
2 changed files with 33 additions and 4 deletions

View File

@@ -2,10 +2,36 @@
namespace assignments::one::grade_calculator
{
GradeCalculator::GradeCalculator() : Node("grade_calculator"){
grade_calculator_serviceserver_ = this -> create_service<g2_2025_interfaces::srv::Exams>("grade_calculator_service",
std::bind(&GradeCalculator::grade_calculator_callback,this,std::placeholders::_1,std::placeholders::_2));
GradeCalculator::GradeCalculator() : Node("grade_calculator") {
grade_calculator_serviceserver_ = this->create_service<g2_2025_interfaces::srv::Exams>("grade_calculator_service",
std::bind(&GradeCalculator::grade_calculator_callback, this, std::placeholders::_1, std::placeholders::_2));
RCLCPP_INFO(this->get_logger(), "Grade calculator service server started");
}
void GradeCalculator::grade_calculator_callback(const g2_2025_interfaces::srv::Exams::Request::SharedPtr request, const g2_2025_interfaces::srv::Exams::Response::SharedPtr response) {
if (request->exam_grades.size() != 0){
gradesTotal_ = std::accumulate(request->exam_grades.begin(), request->exam_grades.end(), 0);
lowercase_ = request->student_name;
std::transform(lowercase_.begin(), lowercase_.end(), lowercase_.begin(), ::tolower);
gradeResult_ = (gradesTotal_) / request->exam_grades.size();
if (lowercase_.compare("wessel") == 0){
gradeResult_ += 10;
}
if (gradeResult_ > 100) {
gradeResult_ = 100;
} else if (gradeResult_ < 10){
gradeResult_ = 10;
}
}
response->result = gradeResult_;
}
} // namespace assignments::one::grade_calculator

View File

@@ -18,8 +18,11 @@ public:
GradeCalculator();
private:
rclcpp::Service<g2_2025_interfaces::srv::Exams>::SharedPtr grade_calculator_serviceserver_;
int gradesTotal_;
std::string lowercase_;
int gradeResult_ = 0;
void grade_calculator_callback(const g2_2025_interfaces::msg::Exam::SharedPtr msg);
void grade_calculator_callback(const g2_2025_interfaces::srv::Exams::Request::SharedPtr request, const g2_2025_interfaces::srv::Exams::Response::SharedPtr response);
};
}