libuav original

Dependents:   UAVCAN UAVCAN_Subscriber

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers uc_generic_subscriber.cpp Source File

uc_generic_subscriber.cpp

00001 /*
00002  * Copyright (C) 2014 Pavel Kirienko <pavel.kirienko@gmail.com>
00003  */
00004 
00005 #include <uavcan/node/generic_subscriber.hpp>
00006 
00007 namespace uavcan
00008 {
00009 
00010 int GenericSubscriberBase::genericStart(TransferListener* listener,
00011                                         bool (Dispatcher::*registration_method)(TransferListener*))
00012 {
00013     if (listener == UAVCAN_NULLPTR)
00014     {
00015         UAVCAN_ASSERT(0);
00016         return -ErrLogic;
00017     }
00018     stop(listener);
00019     if (!(node_.getDispatcher().*registration_method)(listener))
00020     {
00021         UAVCAN_TRACE("GenericSubscriber", "Failed to register transfer listener");
00022         return -ErrInvalidTransferListener;
00023     }
00024     return 0;
00025 }
00026 
00027 void GenericSubscriberBase::stop(TransferListener* listener)
00028 {
00029     if (listener != UAVCAN_NULLPTR)
00030     {
00031         node_.getDispatcher().unregisterMessageListener(listener);
00032         node_.getDispatcher().unregisterServiceRequestListener(listener);
00033         node_.getDispatcher().unregisterServiceResponseListener(listener);
00034     }
00035 }
00036 
00037 }