Go to the documentation of this file.
33 UAVCAN_TRACE(
"NodeStatusProvider",
"NodeStatus pub skipped - passive mode");
51 protocol::GetNodeInfo::Response& rsp)
53 UAVCAN_TRACE(
"NodeStatusProvider",
"Got GetNodeInfo request");
62 UAVCAN_TRACE(
"NodeStatusProvider",
"Node info was not initialized");
101 period =
min(period, maximum);
102 period =
max(period, minimum);
108 UAVCAN_TRACE(
"NodeStatusProvider",
"Status pub period: %s, TX timeout: %s",
134 node_info_.status.vendor_specific_status_code = code;
147 if (
node_info_.software_version == protocol::SoftwareVersion())
155 if (
node_info_.hardware_version == protocol::HardwareVersion())
void setHealth(uint8_t code)
void setHardwareVersion(const protocol::HardwareVersion &version)
void setVendorSpecificStatusCode(VendorSpecificStatusCode code)
MonotonicDuration getPeriod() const
MonotonicTime getMonotonicTime() const
StorageType< typename protocol::NodeStatus::FieldTypes::vendor_specific_status_code >::Type VendorSpecificStatusCode
void setTxTimeout(MonotonicDuration tx_timeout)
static MonotonicDuration fromMSec(int64_t ms)
MethodBinder< NodeStatusProvider *, void(NodeStatusProvider::*)(const protocol::GetNodeInfo::Request &, protocol::GetNodeInfo::Response &)> GetNodeInfoCallback
#define UAVCAN_TRACE(...)
void startPeriodic(MonotonicDuration period)
void setAdHocNodeStatusUpdater(IAdHocNodeStatusUpdater *updater)
IAdHocNodeStatusUpdater * ad_hoc_status_updater_
virtual void handleTimerEvent(const TimerEvent &)
virtual void registerInternalFailure(const char *msg)=0
void setName(const NodeName &name)
const UAVCAN_EXPORT T & max(const T &a, const T &b)
ServiceServer< protocol::GetNodeInfo, GetNodeInfoCallback > gni_srv_
void setStatusPublicationPeriod(uavcan::MonotonicDuration period)
virtual void updateNodeStatus()=0
const UAVCAN_EXPORT T & min(const T &a, const T &b)
StorageType< typename protocol::GetNodeInfo::Response::FieldTypes::name >::Type NodeName
void setMode(uint8_t code)
void handleGetNodeInfoRequest(const protocol::GetNodeInfo::Request &, protocol::GetNodeInfo::Response &rsp)
void toString(char buf[StringBufSize]) const
Prints time in seconds with microsecond resolution.
int startAndPublish(const TransferPriority priority=TransferPriority::Default)
protocol::GetNodeInfo::Response node_info_
bool isNodeInfoInitialized() const
void setSoftwareVersion(const protocol::SoftwareVersion &version)
uavcan::MonotonicDuration getStatusPublicationPeriod() const
MonotonicDuration getTxTimeout() const
int broadcast(const DataType &message)
const MonotonicTime creation_timestamp_
void setPriority(const TransferPriority prio)
Publisher< protocol::NodeStatus > node_status_pub_
static MonotonicDuration fromUSec(int64_t us)