Using transfer priorities in protocol:: classes

This commit is contained in:
Pavel Kirienko
2015-04-30 14:19:52 +03:00
parent 2bfadc46b4
commit 20feaba1de
8 changed files with 47 additions and 14 deletions
+7 -4
View File
@@ -145,8 +145,10 @@ public:
* Once started, the node can't stop.
* If the node failed to start up, it's recommended to destroy the current node instance and start over.
* Returns negative error code.
* @param node_status_transfer_priority Transfer priority that will be used for outgoing NodeStatus messages.
* Normal priority is used by default.
*/
int start();
int start(const TransferPriority node_status_transfer_priority = TransferPriorityNormal);
#if !UAVCAN_TINY
/**
@@ -260,7 +262,8 @@ public:
template <std::size_t MemPoolSize_, unsigned OutgoingTransferRegistryStaticEntries,
unsigned OutgoingTransferMaxPayloadLen>
int Node<MemPoolSize_, OutgoingTransferRegistryStaticEntries, OutgoingTransferMaxPayloadLen>::start()
int Node<MemPoolSize_, OutgoingTransferRegistryStaticEntries, OutgoingTransferMaxPayloadLen>::start(
const TransferPriority priority)
{
if (started_)
{
@@ -274,7 +277,7 @@ int Node<MemPoolSize_, OutgoingTransferRegistryStaticEntries, OutgoingTransferMa
{
goto fail;
}
res = proto_nsp_.startAndPublish();
res = proto_nsp_.startAndPublish(priority);
if (res < 0)
{
goto fail;
@@ -322,7 +325,7 @@ checkNetworkCompatibility(NetworkCompatibilityCheckResult& result)
}
NetworkCompatibilityChecker checker(*this);
StaticAssert<(sizeof(checker) < 2048)>::check();
StaticAssert<(sizeof(checker) < 2048)>::check(); // Making sure that the code footprint doesn't explode
res = checker.execute();
result = checker.getResult();
return res;
+9 -5
View File
@@ -100,22 +100,26 @@ public:
/**
* Allows to change the priority of outgoing transfers.
* Note that only High, Normal and Low priorities can be used; Service priority is not available for messages.
* Attempt to use Service priority will result in assertion failure in debug builds, and it will have no
* effect in release builds.
* Returns negative error code if priority cannot be set, non-negative on success.
*/
void setPriority(const TransferPriority prio)
int setPriority(const TransferPriority prio)
{
if (prio < NumTransferPriorities && prio != TransferPriorityService)
{
TransferSender* const ts = getTransferSender();
TransferSender* const ts = getTransferSender(); // TODO: Static TransferSender?
if (ts != NULL)
{
ts->setPriority(prio);
return 0;
}
else
{
return -ErrLogic;
}
}
else
{
UAVCAN_ASSERT(0);
return -ErrInvalidParam;
}
}