5 #ifndef UAVCAN_PROTOCOL_DYNAMIC_NODE_ID_SERVER_CENTRALIZED_SERVER_HPP_INCLUDED 6 #define UAVCAN_PROTOCOL_DYNAMIC_NODE_ID_SERVER_CENTRALIZED_SERVER_HPP_INCLUDED 17 namespace dynamic_node_id_server
67 const NodeID allocated_node_id =
72 const int res = storage_.
add(allocated_node_id, unique_id);
85 UAVCAN_TRACE(
"dynamic_node_id_server::distributed::Server",
"Request ignored - no free node ID left");
133 int res = storage_.
init();
153 if (stored_own_node_id.
isValid())
157 return -ErrInvalidConfiguration;
180 #endif // UAVCAN_PROTOCOL_DYNAMIC_NODE_ID_SERVER_CENTRALIZED_SERVER_HPP_INCLUDED
int init(const UniqueID &own_unique_id, const TransferPriority priority=TransferPriority::OneHigherThanLowest)
virtual bool canDiscoverNewNodes() const
const UniqueID & getOwnUniqueID() const
virtual void onEvent(TraceCode event_code, int64_t event_argument)=0
Server(INode &node, IStorageBackend &storage, IEventTracer &tracer)
int init(const UniqueID &own_unique_id, const TransferPriority priority)
#define UAVCAN_TRACE(...)
virtual void handleAllocationRequest(const UniqueID &unique_id, const NodeID preferred_node_id)
int add(const NodeID node_id, const UniqueID &unique_id)
virtual bool canPublishFollowupAllocationResponse() const
void tryPublishAllocationResult(const NodeID node_id, const UniqueID &unique_id)
protocol::dynamic_node_id::server::Entry::FieldTypes::unique_id UniqueID
virtual void registerInternalFailure(const char *msg)=0
NodeID getNodeIDForUniqueID(const UniqueID &unique_id) const
virtual void handleNewNodeDiscovery(const UniqueID *unique_id_or_null, NodeID node_id)
bool isNodeIDOccupied(NodeID node_id) const
int broadcastAllocationResponse(const UniqueID &unique_id, NodeID allocated_node_id)
virtual NodeAwareness checkNodeAwareness(NodeID node_id) const
uint8_t getNumAllocations() const
bool isNodeIDTaken(const NodeID node_id) const
static const TransferPriority OneHigherThanLowest
AllocationRequestManager allocation_request_manager_