00001 00028 #ifndef _SHADOW_PSTS_HPP_ 00029 #define _SHADOW_PSTS_HPP_ 00030 00031 #include <vector> 00032 #include <sr_robot_msgs/ShadowPST.h> 00033 #include <realtime_tools/realtime_publisher.h> 00034 00035 #include <sr_hardware_interface/tactile_sensors.hpp> 00036 #include "sr_robot_lib/generic_tactiles.hpp" 00037 #include "sr_robot_lib/generic_updater.hpp" 00038 00039 namespace tactiles 00040 { 00041 template <class StatusType, class CommandType> 00042 class ShadowPSTs : 00043 public GenericTactiles<StatusType, CommandType> 00044 { 00045 public: 00046 ShadowPSTs(std::vector<generic_updater::UpdateConfig> update_configs_vector, operation_mode::device_update_state::DeviceUpdateState update_state); 00047 ShadowPSTs(std::vector<generic_updater::UpdateConfig> update_configs_vector, operation_mode::device_update_state::DeviceUpdateState update_state, boost::shared_ptr< std::vector<GenericTactileData> > init_tactiles_vector); 00048 00049 virtual ~ShadowPSTs() {} 00050 00051 void init(std::vector<generic_updater::UpdateConfig> update_configs_vector, operation_mode::device_update_state::DeviceUpdateState update_state); 00052 00060 virtual void update(StatusType* status_data); 00061 00066 virtual void publish(); 00067 00072 virtual void add_diagnostics(std::vector<diagnostic_msgs::DiagnosticStatus> &vec, 00073 diagnostic_updater::DiagnosticStatusWrapper &d); 00074 00076 boost::shared_ptr< std::vector<PST3Data> > tactiles_vector; 00077 00078 virtual std::vector<AllTactileData>* get_tactile_data(); 00079 00080 protected: 00081 00082 // Tactile sensor real time publisher 00083 boost::shared_ptr<realtime_tools::RealtimePublisher<sr_robot_msgs::ShadowPST> > tactile_publisher; 00084 };//end class 00085 }//end namespace 00086 00087 /* For the emacs weenies in the crowd. 00088 Local Variables: 00089 c-basic-offset: 2 00090 End: 00091 */ 00092 00093 #endif /* _SHADOW_PSTS_HPP_ */