Vendor-specific status code support

This commit is contained in:
Pavel Kirienko
2015-03-20 00:24:53 +03:00
parent 3b3c0d3b9e
commit a63c9510fc
5 changed files with 50 additions and 9 deletions
+8
View File
@@ -180,6 +180,14 @@ public:
(void)proto_nsp_.forcePublish();
}
/**
* Updates the vendor-specific status code.
*/
void setVendorSpecificStatusCode(NodeStatusProvider::VendorSpecificStatusCode code)
{
proto_nsp_.setVendorSpecificStatusCode(code);
}
/**
* Sets the node version information.
*/
@@ -49,6 +49,9 @@ class UAVCAN_EXPORT NodeStatusProvider : private TimerBase
void handleGetNodeInfoRequest(const protocol::GetNodeInfo::Request&, protocol::GetNodeInfo::Response& rsp);
public:
typedef typename StorageType<typename protocol::NodeStatus::FieldTypes::vendor_specific_status_code>::Type
VendorSpecificStatusCode;
explicit NodeStatusProvider(INode& node)
: TimerBase(node)
, creation_timestamp_(node.getMonotonicTime())
@@ -92,6 +95,15 @@ public:
void setStatusCritical() { setStatusCode(protocol::NodeStatus::STATUS_CRITICAL); }
void setStatusOffline() { setStatusCode(protocol::NodeStatus::STATUS_OFFLINE); }
/**
* Local node vendor-specific status code control.
*/
void setVendorSpecificStatusCode(VendorSpecificStatusCode code);
VendorSpecificStatusCode getVendorSpecificStatusCode() const
{
return node_info_.status.vendor_specific_status_code;
}
/**
* Local node name control.
* Can be set only once before the provider is started.