Program Listing for File sensing_subsystem.hpp

Return to documentation for file (cosm/hal/ros/subsystem/sensing_subsystem.hpp)

#pragma once

/*******************************************************************************
 * Includes
 ******************************************************************************/
#include <utility>

#include "cosm/hal/subsystem/base_sensing_subsystem.hpp"
#include "cosm/hal/ros/subsystem/robot_available_sensors.hpp"

/*******************************************************************************
 * Namespaces
 ******************************************************************************/
namespace cosm::hal::ros::subsystem {

/*******************************************************************************
 * Class Definitions
 ******************************************************************************/
class sensing_subsystem :
    public chsubsystem::base_sensing_subsystem<COSM_HAL_ROBOT_AVAILABLE_SENSORS> {
 public:
  explicit sensing_subsystem(sensor_map&& sensors)
      : base_sensing_subsystem(std::move(sensors)) {}


  COSM_HAL_SENSOR_ACCESSOR(chros::sensors::light_sensor, light);
  COSM_HAL_SENSOR_ACCESSOR(chros::sensors::light_sensor, light, const);

  COSM_HAL_SENSOR_ACCESSOR(chros::sensors::sonar_sensor, sonar);
  COSM_HAL_SENSOR_ACCESSOR(chros::sensors::sonar_sensor, sonar, const);

  COSM_HAL_SENSOR_ACCESSOR(chros::sensors::lidar_sensor, lidar);
  COSM_HAL_SENSOR_ACCESSOR(chros::sensors::lidar_sensor, lidar, const);

  COSM_HAL_SENSOR_ACCESSOR(chsensors::battery_sensor, battery);
  COSM_HAL_SENSOR_ACCESSOR(chsensors::battery_sensor, battery, const);

  COSM_HAL_SENSOR_ACCESSOR(chros::sensors::odometry_sensor, odometry);
  COSM_HAL_SENSOR_ACCESSOR(chros::sensors::odometry_sensor, odometry, const);

  COSM_HAL_SENSOR_ACCESSOR(chsensors::proximity_sensor, proximity);
  COSM_HAL_SENSOR_ACCESSOR(chsensors::proximity_sensor, proximity, const);

  COSM_HAL_SENSOR_ACCESSOR(chsensors::env_sensor, env);
  COSM_HAL_SENSOR_ACCESSOR(chsensors::env_sensor, env, const);
};

} /* namespace cosm::hal::ros::subsystem */