mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-10-22 05:13:33 +08:00
Type safe DataTypeID class
This commit is contained in:
@@ -26,9 +26,9 @@ class Dispatcher : Noncopyable
|
||||
|
||||
class DataTypeIDInsertionComparator
|
||||
{
|
||||
const uint16_t id_;
|
||||
const DataTypeID id_;
|
||||
public:
|
||||
DataTypeIDInsertionComparator(uint16_t id) : id_(id) { }
|
||||
DataTypeIDInsertionComparator(DataTypeID id) : id_(id) { }
|
||||
bool operator()(const TransferListenerBase* listener) const
|
||||
{
|
||||
assert(listener);
|
||||
|
||||
@@ -20,7 +20,7 @@ class Frame
|
||||
{
|
||||
uint8_t payload_[sizeof(CanFrame::data)];
|
||||
TransferType transfer_type_;
|
||||
uint_fast16_t data_type_id_;
|
||||
DataTypeID data_type_id_;
|
||||
uint_fast8_t payload_len_;
|
||||
NodeID src_node_id_;
|
||||
NodeID dst_node_id_;
|
||||
@@ -33,14 +33,13 @@ public:
|
||||
|
||||
Frame()
|
||||
: transfer_type_(TransferType(NumTransferTypes)) // That is invalid value
|
||||
, data_type_id_(0)
|
||||
, payload_len_(0)
|
||||
, frame_index_(0)
|
||||
, transfer_id_(0)
|
||||
, last_frame_(false)
|
||||
{ }
|
||||
|
||||
Frame(uint_fast16_t data_type_id, TransferType transfer_type, NodeID src_node_id, NodeID dst_node_id,
|
||||
Frame(DataTypeID data_type_id, TransferType transfer_type, NodeID src_node_id, NodeID dst_node_id,
|
||||
uint_fast8_t frame_index, TransferID transfer_id, bool last_frame = false)
|
||||
: transfer_type_(transfer_type)
|
||||
, data_type_id_(data_type_id)
|
||||
@@ -52,7 +51,7 @@ public:
|
||||
, last_frame_(last_frame)
|
||||
{
|
||||
assert((transfer_type == TransferTypeMessageBroadcast) == dst_node_id.isBroadcast());
|
||||
assert(data_type_id <= DataTypeDescriptor::MaxDataTypeID);
|
||||
assert(data_type_id.isValid());
|
||||
assert(src_node_id != dst_node_id);
|
||||
assert(frame_index <= MaxIndex);
|
||||
}
|
||||
@@ -64,7 +63,7 @@ public:
|
||||
const uint8_t* getPayloadPtr() const { return payload_; }
|
||||
|
||||
TransferType getTransferType() const { return transfer_type_; }
|
||||
uint_fast16_t getDataTypeID() const { return data_type_id_; }
|
||||
DataTypeID getDataTypeID() const { return data_type_id_; }
|
||||
NodeID getSrcNodeID() const { return src_node_id_; }
|
||||
NodeID getDstNodeID() const { return dst_node_id_; }
|
||||
TransferID getTransferID() const { return transfer_id_; }
|
||||
|
||||
@@ -17,17 +17,16 @@ namespace uavcan
|
||||
UAVCAN_PACKED_BEGIN
|
||||
class OutgoingTransferRegistryKey
|
||||
{
|
||||
uint16_t data_type_id_;
|
||||
DataTypeID data_type_id_;
|
||||
uint8_t transfer_type_;
|
||||
NodeID destination_node_id_; ///< Not applicable for message broadcasting
|
||||
|
||||
public:
|
||||
OutgoingTransferRegistryKey()
|
||||
: data_type_id_(0xFFFF)
|
||||
, transfer_type_(0xFF)
|
||||
: transfer_type_(0xFF)
|
||||
{ }
|
||||
|
||||
OutgoingTransferRegistryKey(uint16_t data_type_id, TransferType transfer_type, NodeID destination_node_id)
|
||||
OutgoingTransferRegistryKey(DataTypeID data_type_id, TransferType transfer_type, NodeID destination_node_id)
|
||||
: data_type_id_(data_type_id)
|
||||
, transfer_type_(transfer_type)
|
||||
, destination_node_id_(destination_node_id)
|
||||
|
||||
Reference in New Issue
Block a user