Skip to content

Commit

Permalink
Stabilize uavcan.node.port.List (#138)
Browse files Browse the repository at this point in the history
Stabilize uavcan.node.port.List
  • Loading branch information
pavel-kirienko authored Feb 16, 2023
1 parent 16b4f31 commit 935973b
Show file tree
Hide file tree
Showing 6 changed files with 57 additions and 0 deletions.
2 changes: 2 additions & 0 deletions uavcan/node/port/7510.List.0.1.dsdl
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@
# - At the OPTIONAL priority level at least every MAX_PUBLICATION_PERIOD seconds.
# - At the OPTIONAL or SLOW priority level within MAX_PUBLICATION_PERIOD after the port configuration is changed.

@deprecated # Replaced with v1.

uint8 MAX_PUBLICATION_PERIOD = 10 # [seconds]
# If the port configuration is not updated in this amount of time, the node should publish this message anyway.

Expand Down
20 changes: 20 additions & 0 deletions uavcan/node/port/7510.List.1.0.dsdl
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# A list of ports that this node is using:
# - Subjects published by this node (whether periodically or ad-hoc).
# - Subjects that this node is subscribed to (a datalogger or a debugger would typically subscribe to all subjects).
# - RPC services consumed by this node (i.e., service clients).
# - RPC services provided by this node (i.e., service servers).
#
# All nodes should implement this capability to provide network introspection and diagnostic capabilities.
# This message should be published using the fixed subject-ID as follows:
# - At the OPTIONAL priority level at least every MAX_PUBLICATION_PERIOD seconds.
# - At the OPTIONAL or SLOW priority level within MAX_PUBLICATION_PERIOD after the port configuration is changed.

uint8 MAX_PUBLICATION_PERIOD = 10 # [seconds]
# If the port configuration is not updated in this amount of time, the node should publish this message anyway.

SubjectIDList.1.0 publishers
SubjectIDList.1.0 subscribers
ServiceIDList.1.0 clients
ServiceIDList.1.0 servers

@sealed
2 changes: 2 additions & 0 deletions uavcan/node/port/ServiceIDList.0.1.dsdl
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@
# This is a trivial constant-size bitmask with some reserved space in case the range of service-ID is increased
# in a future revision of the protocol.

@deprecated # Replaced with v1.

uint16 CAPACITY = ServiceID.1.0.MAX + 1

bool[CAPACITY] mask
Expand Down
13 changes: 13 additions & 0 deletions uavcan/node/port/ServiceIDList.1.0.dsdl
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# A list of service identifiers.
# This is a trivial constant-size bitmask with some reserved space in case the range of service-ID is increased
# in a future revision of the protocol.

uint16 CAPACITY = ServiceID.1.0.MAX + 1

bool[CAPACITY] mask
# The index represents the identifier value. True -- present/used. False -- absent/unused.

@extent 1024 # Reserve space in case the range is extended in the future.

@assert CAPACITY % 8 == 0
@assert _offset_ == {CAPACITY}
1 change: 1 addition & 0 deletions uavcan/node/port/SubjectIDList.0.1.dsdl
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
# resource-constrained systems. To address that, we provide two extra options: a simple variable-length list,
# and a special case that indicates that every subject-ID is in use.

@deprecated # Replaced with v1.
@union

uint16 CAPACITY = SubjectID.1.0.MAX + 1
Expand Down
19 changes: 19 additions & 0 deletions uavcan/node/port/SubjectIDList.1.0.dsdl
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# A list of subject identifiers.
# The range of subject-ID is large, so using a fixed-size bitmask would make this type difficult to handle on
# resource-constrained systems. To address that, we provide two extra options: a simple variable-length list,
# and a special case that indicates that every subject-ID is in use.

@union

uint16 CAPACITY = SubjectID.1.0.MAX + 1

bool[CAPACITY] mask
# The index represents the identifier value. True -- present/used. False -- absent/unused.

SubjectID.1.0[<256] sparse_list
# A list of identifiers that can be used instead of the mask if most of the identifiers are unused.

uavcan.primitive.Empty.1.0 total
# A special case indicating that all identifiers are in use.

@extent 8 + 2 ** 15 # Reserve space in case the range is extended in the future.

0 comments on commit 935973b

Please sign in to comment.