diff --git a/dsdl/uavcan/protocol/552.GetDataTypeInfo.uavcan b/dsdl/uavcan/protocol/552.GetDataTypeInfo.uavcan index bc08c23849..e584b97e6d 100644 --- a/dsdl/uavcan/protocol/552.GetDataTypeInfo.uavcan +++ b/dsdl/uavcan/protocol/552.GetDataTypeInfo.uavcan @@ -7,8 +7,8 @@ DataTypeKind kind --- -DataTypeSignature signature # Data type hash as computed by DSDL compiler (type name + each field) -DataTypeName name # Full data type name, e.g. "std.node.GetDataTypeInfo" +uint64 signature # Data type signature +uint8[<=80] name # Full data type name, e.g. "uavcan.protocol.GetDataTypeInfo" uint8 MASK_KNOWN = 1 # This data type is defined uint8 MASK_SUBSCRIBED = 2 # Subscribed to messages of this type diff --git a/dsdl/uavcan/protocol/554.ComputeAggregateTypeSignature.uavcan b/dsdl/uavcan/protocol/554.ComputeAggregateTypeSignature.uavcan index 112eb52f4c..71537f2934 100644 --- a/dsdl/uavcan/protocol/554.ComputeAggregateTypeSignature.uavcan +++ b/dsdl/uavcan/protocol/554.ComputeAggregateTypeSignature.uavcan @@ -2,10 +2,10 @@ # This service allows to detect type compatibility between two nodes in one request. # -DataTypeIDMask known_ids +bool[1024] known_ids DataTypeKind kind --- -DataTypeIDMask mutually_known_ids -DataTypeSignature aggregate_signature +bool[1024] mutually_known_ids +uint64 aggregate_signature diff --git a/dsdl/uavcan/protocol/DataTypeIDMask.uavcan b/dsdl/uavcan/protocol/DataTypeIDMask.uavcan deleted file mode 100644 index 74cce5828e..0000000000 --- a/dsdl/uavcan/protocol/DataTypeIDMask.uavcan +++ /dev/null @@ -1,5 +0,0 @@ -# -# Data type ID mask; 1 - known, 0 - unknown. -# - -bool[1024] value diff --git a/dsdl/uavcan/protocol/DataTypeName.uavcan b/dsdl/uavcan/protocol/DataTypeName.uavcan deleted file mode 100644 index 575678e93c..0000000000 --- a/dsdl/uavcan/protocol/DataTypeName.uavcan +++ /dev/null @@ -1,5 +0,0 @@ -# -# Full data type name. -# - -uint8[<=80] value diff --git a/dsdl/uavcan/protocol/DataTypeSignature.uavcan b/dsdl/uavcan/protocol/DataTypeSignature.uavcan deleted file mode 100644 index d07714b6ab..0000000000 --- a/dsdl/uavcan/protocol/DataTypeSignature.uavcan +++ /dev/null @@ -1,5 +0,0 @@ -# -# Data type signature value, 64 bit. -# - -uint64 value diff --git a/libuavcan/include/uavcan/data_type.hpp b/libuavcan/include/uavcan/data_type.hpp index 83ed51d0f5..9c662fe35d 100644 --- a/libuavcan/include/uavcan/data_type.hpp +++ b/libuavcan/include/uavcan/data_type.hpp @@ -5,6 +5,7 @@ #pragma once #include +#include #include #include #include @@ -92,6 +93,7 @@ class DataTypeDescriptor public: enum { MaxDataTypeID = Frame::MaxDataTypeID }; + enum { MaxFullNameLen = 80 }; DataTypeDescriptor() : kind_(DataTypeKind(0)) @@ -108,6 +110,7 @@ public: assert(id <= MaxDataTypeID); assert(kind < NumDataTypeKinds); assert(name); + assert(std::strlen(name) <= MaxFullNameLen); } DataTypeKind getKind() const { return kind_; }