mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-07-01 07:40:34 +08:00
Space optimized GenericSubscriber
This commit is contained in:
@@ -0,0 +1,37 @@
|
||||
/*
|
||||
* Copyright (C) 2014 Pavel Kirienko <pavel.kirienko@gmail.com>
|
||||
*/
|
||||
|
||||
#include <uavcan/node/generic_subscriber.hpp>
|
||||
|
||||
namespace uavcan
|
||||
{
|
||||
|
||||
int GenericSubscriberBase::genericStart(TransferListenerBase* listener,
|
||||
bool (Dispatcher::*registration_method)(TransferListenerBase*))
|
||||
{
|
||||
if (listener == NULL)
|
||||
{
|
||||
assert(0);
|
||||
return -ErrLogic;
|
||||
}
|
||||
stop(listener);
|
||||
if (!(node_.getDispatcher().*registration_method)(listener))
|
||||
{
|
||||
UAVCAN_TRACE("GenericSubscriber", "Failed to register transfer listener");
|
||||
return -ErrInvalidTransferListener;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
void GenericSubscriberBase::stop(TransferListenerBase* listener)
|
||||
{
|
||||
if (listener != NULL)
|
||||
{
|
||||
node_.getDispatcher().unregisterMessageListener(listener);
|
||||
node_.getDispatcher().unregisterServiceRequestListener(listener);
|
||||
node_.getDispatcher().unregisterServiceResponseListener(listener);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user