libuav original
Dependents: UAVCAN UAVCAN_Subscriber
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 }
Generated on Tue Jul 12 2022 17:17:35 by 1.7.2