generated from wessel/boilerplate
feat(grade_calculator) implement grade_calculator
Implemented working version of grade_calculator, can be tested using service call
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
|
||||
@@ -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);
|
||||
};
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user