mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-07-01 07:10:35 +08:00
38 lines
982 B
C++
38 lines
982 B
C++
/*
|
|
* Copyright (C) 2014 Pavel Kirienko <pavel.kirienko@gmail.com>
|
|
*/
|
|
|
|
#include <uavcan/node/generic_subscriber.hpp>
|
|
|
|
namespace uavcan
|
|
{
|
|
|
|
int GenericSubscriberBase::genericStart(TransferListener* listener,
|
|
bool (Dispatcher::*registration_method)(TransferListener*))
|
|
{
|
|
if (listener == UAVCAN_NULLPTR)
|
|
{
|
|
UAVCAN_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(TransferListener* listener)
|
|
{
|
|
if (listener != UAVCAN_NULLPTR)
|
|
{
|
|
node_.getDispatcher().unregisterMessageListener(listener);
|
|
node_.getDispatcher().unregisterServiceRequestListener(listener);
|
|
node_.getDispatcher().unregisterServiceResponseListener(listener);
|
|
}
|
|
}
|
|
|
|
}
|