status.cpp
Go to the documentation of this file.
1 
34 #include <multisense_ros/status.h>
35 
36 #include <multisense_ros/DeviceStatus.h>
37 
38 namespace multisense_ros {
39 
41  driver_(driver),
42  device_nh_(""),
43  status_pub_(),
44  status_timer_(),
45  subscribers_(0)
46 {
47  status_pub_ = device_nh_.advertise<multisense_ros::DeviceStatus>("status", 5,
48  std::bind(&Status::connect, this),
49  std::bind(&Status::disconnect, this));
50 
52 }
53 
55 {
56 }
57 
59 {
60  (void) event;
61 
62  if (subscribers_ <= 0)
63  return;
64 
65  if (NULL != driver_)
66  {
68 
69  if (crl::multisense::Status_Ok == driver_->getDeviceStatus(statusMessage))
70  {
71  multisense_ros::DeviceStatus deviceStatus;
72 
73  deviceStatus.time = ros::Time::now();
74  deviceStatus.uptime = ros::Time(statusMessage.uptime);
75  deviceStatus.systemOk = statusMessage.systemOk;
76  deviceStatus.laserOk = statusMessage.laserOk;
77  deviceStatus.laserMotorOk = statusMessage.laserMotorOk;
78  deviceStatus.camerasOk = statusMessage.camerasOk;
79  deviceStatus.imuOk = statusMessage.imuOk;
80  deviceStatus.externalLedsOk = statusMessage.externalLedsOk;
81  deviceStatus.processingPipelineOk = statusMessage.processingPipelineOk;
82  deviceStatus.powerSupplyTemp = statusMessage.powerSupplyTemperature;
83  deviceStatus.fpgaTemp = statusMessage.fpgaTemperature;
84  deviceStatus.leftImagerTemp = statusMessage.leftImagerTemperature;
85  deviceStatus.rightImagerTemp = statusMessage.rightImagerTemperature;
86  deviceStatus.inputVoltage = statusMessage.inputVoltage;
87  deviceStatus.inputCurrent = statusMessage.inputCurrent;
88  deviceStatus.fpgaPower = statusMessage.fpgaPower;
89  deviceStatus.logicPower = statusMessage.logicPower;
90  deviceStatus.imagerPower = statusMessage.imagerPower;
91 
92  status_pub_.publish(deviceStatus);
93  }
94 
95  }
96 }
97 
99 {
100  __sync_fetch_and_add(&subscribers_, 1);
101 }
102 
104 {
105  __sync_fetch_and_sub(&subscribers_, 1);
106 }
107 
108 
109 }
crl::multisense::system::StatusMessage::rightImagerTemperature
float rightImagerTemperature
crl::multisense::system::StatusMessage::fpgaPower
float fpgaPower
crl::multisense::Status_Ok
static CRL_CONSTEXPR Status Status_Ok
crl::multisense::system::StatusMessage::externalLedsOk
bool externalLedsOk
crl::multisense::system::StatusMessage::inputCurrent
float inputCurrent
crl::multisense::system::StatusMessage::fpgaTemperature
float fpgaTemperature
multisense_ros::Status::connect
void connect()
Definition: status.cpp:98
ros::Publisher::publish
void publish(const boost::shared_ptr< M > &message) const
ros::NodeHandle::advertise
Publisher advertise(AdvertiseOptions &ops)
multisense_ros::Status::status_timer_
ros::Timer status_timer_
Definition: status.h:69
crl::multisense::Channel::getDeviceStatus
virtual Status getDeviceStatus(system::StatusMessage &status)=0
multisense_ros::Status::device_nh_
ros::NodeHandle device_nh_
Definition: status.h:59
crl::multisense::system::StatusMessage::processingPipelineOk
bool processingPipelineOk
multisense_ros::Status::disconnect
void disconnect()
Definition: status.cpp:103
multisense_ros
Definition: camera.h:58
crl::multisense::system::StatusMessage::powerSupplyTemperature
float powerSupplyTemperature
multisense_ros::Status::driver_
crl::multisense::Channel * driver_
Definition: status.h:54
crl::multisense::system::StatusMessage::systemOk
bool systemOk
crl::multisense::system::StatusMessage::imagerPower
float imagerPower
ros::TimerEvent
multisense_ros::Status::subscribers_
int32_t subscribers_
Definition: status.h:80
crl::multisense::system::StatusMessage::camerasOk
bool camerasOk
crl::multisense::system::StatusMessage::laserOk
bool laserOk
crl::multisense::system::StatusMessage::leftImagerTemperature
float leftImagerTemperature
multisense_ros::Status::~Status
~Status()
Definition: status.cpp:54
crl::multisense::system::StatusMessage::imuOk
bool imuOk
crl::multisense::Channel
ros::Time
multisense_ros::Status::status_pub_
ros::Publisher status_pub_
Definition: status.h:64
crl::multisense::system::StatusMessage::laserMotorOk
bool laserMotorOk
multisense_ros::Status::Status
Status(crl::multisense::Channel *driver)
Definition: status.cpp:40
crl::multisense::system::StatusMessage::inputVoltage
float inputVoltage
crl::multisense::system::StatusMessage::uptime
double uptime
ros::NodeHandle::createTimer
Timer createTimer(Duration period, const TimerCallback &callback, bool oneshot=false, bool autostart=true) const
ros::Duration
multisense_ros::Status::queryStatus
void queryStatus(const ros::TimerEvent &event)
Definition: status.cpp:58
status.h
crl::multisense::system::StatusMessage::logicPower
float logicPower
crl::multisense::system::StatusMessage
ros::Time::now
static Time now()


multisense_ros
Author(s):
autogenerated on Thu Feb 20 2025 03:51:03