DataTypeDescriptor got name_

This commit is contained in:
Pavel Kirienko
2014-02-27 09:29:58 +04:00
parent bc54015265
commit d71ec29fcf
11 changed files with 87 additions and 40 deletions
+20 -1
View File
@@ -2,7 +2,8 @@
* Copyright (C) 2014 Pavel Kirienko <pavel.kirienko@gmail.com>
*/
#include <cstdio>
#include <sstream>
#include <iomanip>
#include <cassert>
#include <uavcan/data_type.hpp>
@@ -34,4 +35,22 @@ TransferCRC DataTypeSignature::toTransferCRC() const
return tcrc;
}
/*
* DataTypeDescriptor
*/
std::string DataTypeDescriptor::toString() const
{
char kindch = '?';
switch (kind_)
{
case DataTypeKindMessage: kindch = 'm'; break;
case DataTypeKindService: kindch = 's'; break;
default: assert(0);
}
std::ostringstream os;
os << name_ << ":" << id_ << kindch << ":" << std::hex << std::setfill('0') << std::setw(16) << signature_.get();
return os.str();
}
}
+7 -7
View File
@@ -18,13 +18,13 @@ bool Dispatcher::ListenerRegister::add(TransferListenerBase* listener, Mode mode
TransferListenerBase* p = list_.get();
while (p)
{
if (p->getDataTypeDescriptor().id == listener->getDataTypeDescriptor().id)
if (p->getDataTypeDescriptor().getID() == listener->getDataTypeDescriptor().getID())
return false;
p = p->getNextListNode();
}
}
// Objective is to arrange entries by Data Type ID in ascending order from root.
list_.insertBefore(listener, DataTypeIDInsertionComparator(listener->getDataTypeDescriptor().id));
list_.insertBefore(listener, DataTypeIDInsertionComparator(listener->getDataTypeDescriptor().getID()));
return true;
}
@@ -48,9 +48,9 @@ void Dispatcher::ListenerRegister::handleFrame(const RxFrame& frame)
TransferListenerBase* p = list_.get();
while (p)
{
if (p->getDataTypeDescriptor().id == frame.getDataTypeID())
if (p->getDataTypeDescriptor().getID() == frame.getDataTypeID())
p->handleFrame(frame);
else if (p->getDataTypeDescriptor().id < frame.getDataTypeID()) // Listeners are ordered by data type id!
else if (p->getDataTypeDescriptor().getID() < frame.getDataTypeID()) // Listeners are ordered by data type id!
break;
p = p->getNextListNode();
}
@@ -145,7 +145,7 @@ void Dispatcher::cleanup(uint64_t ts_monotonic)
bool Dispatcher::registerMessageListener(TransferListenerBase* listener)
{
if (listener->getDataTypeDescriptor().kind != DataTypeKindMessage)
if (listener->getDataTypeDescriptor().getKind() != DataTypeKindMessage)
{
assert(0);
return false;
@@ -155,7 +155,7 @@ bool Dispatcher::registerMessageListener(TransferListenerBase* listener)
bool Dispatcher::registerServiceRequestListener(TransferListenerBase* listener)
{
if (listener->getDataTypeDescriptor().kind != DataTypeKindService)
if (listener->getDataTypeDescriptor().getKind() != DataTypeKindService)
{
assert(0);
return false;
@@ -165,7 +165,7 @@ bool Dispatcher::registerServiceRequestListener(TransferListenerBase* listener)
bool Dispatcher::registerServiceResponseListener(TransferListenerBase* listener)
{
if (listener->getDataTypeDescriptor().kind != DataTypeKindService)
if (listener->getDataTypeDescriptor().getKind() != DataTypeKindService)
{
assert(0);
return false;
+4 -3
View File
@@ -14,7 +14,7 @@ int TransferSender::send(const uint8_t* payload, int payload_len, uint64_t monot
uint64_t monotonic_blocking_deadline, TransferType transfer_type, NodeID dst_node_id,
TransferID tid)
{
Frame frame(data_type_.id, transfer_type, dispatcher_.getSelfNodeID(), dst_node_id, 0, tid);
Frame frame(data_type_.getID(), transfer_type, dispatcher_.getSelfNodeID(), dst_node_id, 0, tid);
if (frame.getMaxPayloadLen() >= payload_len) // Single Frame Transfer
{
@@ -87,7 +87,7 @@ int TransferSender::send(const uint8_t* payload, int payload_len, uint64_t monot
int TransferSender::send(const uint8_t* payload, int payload_len, uint64_t monotonic_tx_deadline,
uint64_t monotonic_blocking_deadline, TransferType transfer_type, NodeID dst_node_id)
{
const OutgoingTransferRegistryKey otr_key(data_type_.id, transfer_type, dst_node_id);
const OutgoingTransferRegistryKey otr_key(data_type_.getID(), transfer_type, dst_node_id);
assert(monotonic_tx_deadline > 0);
const uint64_t otr_deadline = monotonic_tx_deadline + max_transfer_interval_;
@@ -95,7 +95,8 @@ int TransferSender::send(const uint8_t* payload, int payload_len, uint64_t monot
TransferID* const tid = dispatcher_.getOutgoingTransferRegistry().accessOrCreate(otr_key, otr_deadline);
if (tid == NULL)
{
UAVCAN_TRACE("TransferSender", "OTR access failure, dtid=%i tt=%i", int(data_type_.id), int(transfer_type));
UAVCAN_TRACE("TransferSender", "OTR access failure, dtd=%s tt=%i",
data_type_.toString().c_str(), int(transfer_type));
return -1;
}