PX4 Firmware
PX4 Autopilot Software http://px4.io
uORB::DeviceNode Class Reference

Per-object device instance. More...

#include <uORBDeviceNode.hpp>

Inheritance diagram for uORB::DeviceNode:
Collaboration diagram for uORB::DeviceNode:

Classes

struct  SubscriberData
 
struct  UpdateIntervalData
 

Public Member Functions

 DeviceNode (const struct orb_metadata *meta, const uint8_t instance, const char *path, uint8_t priority, uint8_t queue_size=1)
 
virtual ~DeviceNode ()
 
 DeviceNode (const DeviceNode &)=delete
 
DeviceNodeoperator= (const DeviceNode &)=delete
 
 DeviceNode (DeviceNode &&)=delete
 
DeviceNodeoperator= (DeviceNode &&)=delete
 
int open (cdev::file_t *filp) override
 Method to create a subscriber instance and return the struct pointing to the subscriber as a file pointer. More...
 
int close (cdev::file_t *filp) override
 Method to close a subscriber for this topic. More...
 
ssize_t read (cdev::file_t *filp, char *buffer, size_t buflen) override
 reads data from a subscriber node to the buffer provided. More...
 
ssize_t write (cdev::file_t *filp, const char *buffer, size_t buflen) override
 writes the published data to the internal buffer to be read by subscribers later. More...
 
int ioctl (cdev::file_t *filp, int cmd, unsigned long arg) override
 IOCTL control for the subscriber. More...
 
void add_internal_subscriber ()
 Add the subscriber to the node's list of subscriber. More...
 
void remove_internal_subscriber ()
 Removes the subscriber from the list. More...
 
bool is_advertised () const
 Return true if this topic has been advertised. More...
 
void mark_as_advertised ()
 
int update_queue_size (unsigned int queue_size)
 Try to change the size of the queue. More...
 
bool print_statistics (bool reset)
 Print statistics (nr of lost messages) More...
 
uint8_t get_queue_size () const
 
int8_t subscriber_count () const
 
uint32_t lost_message_count () const
 
unsigned published_message_count () const
 
const orb_metadataget_meta () const
 
const char * get_name () const
 
uint8_t get_instance () const
 
int get_priority () const
 
void set_priority (uint8_t priority)
 
bool copy (void *dst, unsigned &generation)
 Copies data and the corresponding generation from a node to the buffer provided. More...
 
uint64_t copy_and_get_timestamp (void *dst, unsigned &generation)
 Copies data and the corresponding generation from a node to the buffer provided. More...
 
bool register_callback (SubscriptionCallback *callback_sub)
 
void unregister_callback (SubscriptionCallback *callback_sub)
 
- Public Member Functions inherited from cdev::CDev
 CDev (const char *devname)
 Constructor. More...
 
 CDev (const CDev &)=delete
 
CDevoperator= (const CDev &)=delete
 
 CDev (CDev &&)=delete
 
CDevoperator= (CDev &&)=delete
 
virtual ~CDev ()
 
virtual int init ()
 
virtual off_t seek (file_t *filep, off_t offset, int whence)
 Perform a logical seek operation on the device. More...
 
virtual int poll (file_t *filep, px4_pollfd_struct_t *fds, bool setup)
 Perform a poll setup/teardown operation. More...
 
const char * get_devname () const
 Get the device name. More...
 
- Public Member Functions inherited from ListNode< uORB::DeviceNode *>
void setSibling (uORB::DeviceNode * sibling)
 
const uORB::DeviceNodegetSibling () const
 

Static Public Member Functions

static ssize_t publish (const orb_metadata *meta, orb_advert_t handle, const void *data)
 Method to publish a data to this node. More...
 
static int unadvertise (orb_advert_t handle)
 

Protected Member Functions

pollevent_t poll_state (cdev::file_t *filp) override
 Check the current state of the device for poll events from the perspective of the file. More...
 
void poll_notify_one (px4_pollfd_struct_t *fds, pollevent_t events) override
 Internal implementation of poll_notify. More...
 
- Protected Member Functions inherited from cdev::CDev
virtual void poll_notify (pollevent_t events)
 Report new poll events. More...
 
virtual int open_first (file_t *filep)
 Notification of the first open. More...
 
virtual int close_last (file_t *filep)
 Notification of the last close. More...
 
virtual int register_class_devname (const char *class_devname)
 Register a class device name, automatically adding device class instance suffix if need be. More...
 
virtual int unregister_class_devname (const char *class_devname, unsigned class_instance)
 Register a class device name, automatically adding device class instance suffix if need be. More...
 
void lock ()
 Take the driver lock. More...
 
void unlock ()
 Release the driver lock. More...
 
int unregister_driver_and_memory ()
 First, unregisters the driver. More...
 

Private Member Functions

bool copy_locked (void *dst, unsigned &generation)
 Copies data and the corresponding generation from a node to the buffer provided. More...
 
bool appears_updated (SubscriberData *sd)
 Check whether a topic appears updated to a subscriber. More...
 

Static Private Member Functions

static SubscriberDatafilp_to_sd (cdev::file_t *filp)
 

Private Attributes

const orb_metadata_meta
 object metadata information More...
 
const uint8_t _instance
 orb multi instance identifier More...
 
uint8_t * _data {nullptr}
 allocated object buffer More...
 
hrt_abstime _last_update {0}
 time the object was last updated More...
 
px4::atomic< unsigned > _generation {0}
 object generation count More...
 
List< uORB::SubscriptionCallback * > _callbacks
 
uint8_t _priority
 priority of the topic More...
 
bool _advertised {false}
 has ever been advertised (not necessarily published data yet) More...
 
uint8_t _queue_size
 maximum number of elements in the queue More...
 
int8_t _subscriber_count {0}
 
uint32_t _lost_messages = 0
 nr of lost messages for all subscribers. More...
 

Additional Inherited Members

- Protected Attributes inherited from cdev::CDev
px4_sem_t _lock
 lock to protect access to all class members (also for derived classes) More...
 
- Protected Attributes inherited from ListNode< uORB::DeviceNode *>
uORB::DeviceNode_list_node_sibling
 
- Static Protected Attributes inherited from cdev::CDev
static const px4_file_operations_t fops = {}
 Pointer to the default cdev file operations table; useful for registering clone devices etc. More...
 

Detailed Description

Per-object device instance.

Definition at line 55 of file uORBDeviceNode.hpp.

Constructor & Destructor Documentation

◆ DeviceNode() [1/3]

uORB::DeviceNode::DeviceNode ( const struct orb_metadata meta,
const uint8_t  instance,
const char *  path,
uint8_t  priority,
uint8_t  queue_size = 1 
)

Definition at line 57 of file uORBDeviceNode.cpp.

◆ ~DeviceNode()

uORB::DeviceNode::~DeviceNode ( )
virtual

Definition at line 67 of file uORBDeviceNode.cpp.

References _data.

◆ DeviceNode() [2/3]

uORB::DeviceNode::DeviceNode ( const DeviceNode )
delete

◆ DeviceNode() [3/3]

uORB::DeviceNode::DeviceNode ( DeviceNode &&  )
delete

Member Function Documentation

◆ add_internal_subscriber()

void uORB::DeviceNode::add_internal_subscriber ( )

Add the subscriber to the node's list of subscriber.

If there is remote proxy to which this subscription needs to be sent, it will done via uORBCommunicator::IChannel interface.

Parameters
sdthe subscriber to be added.

Definition at line 551 of file uORBDeviceNode.cpp.

References _meta, _subscriber_count, uORBCommunicator::IChannel::add_subscription(), uORB::Manager::get_instance(), cdev::CDev::lock(), orb_metadata::o_name, and cdev::CDev::unlock().

Referenced by open(), and uORB::Subscription::subscribe().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ appears_updated()

bool uORB::DeviceNode::appears_updated ( SubscriberData sd)
private

Check whether a topic appears updated to a subscriber.

Lock must already be held when calling this.

Parameters
sdThe subscriber for whom to check.
Returns
True if the topic should appear updated to the subscriber

Definition at line 512 of file uORBDeviceNode.cpp.

References _data, uORB::DeviceNode::SubscriberData::generation, hrt_elapsed_time(), uORB::DeviceNode::UpdateIntervalData::interval, uORB::DeviceNode::UpdateIntervalData::last_update, published_message_count(), and uORB::DeviceNode::SubscriberData::update_interval.

Referenced by ioctl(), poll_notify_one(), and poll_state().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ close()

int uORB::DeviceNode::close ( cdev::file_t filp)
overridevirtual

Method to close a subscriber for this topic.

Reimplemented from cdev::CDev.

Definition at line 125 of file uORBDeviceNode.cpp.

References cdev::file_t::f_oflags, filp_to_sd(), and remove_internal_subscriber().

Here is the call graph for this function:

◆ copy()

bool uORB::DeviceNode::copy ( void *  dst,
unsigned &  generation 
)

Copies data and the corresponding generation from a node to the buffer provided.

Parameters
dstThe buffer into which the data is copied.
generationThe generation that was copied.
Returns
bool Returns true if the data was copied.

Definition at line 175 of file uORBDeviceNode.cpp.

References ATOMIC_ENTER, ATOMIC_LEAVE, and copy_locked().

Referenced by uORB::Subscription::copy(), and set_priority().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ copy_and_get_timestamp()

uint64_t uORB::DeviceNode::copy_and_get_timestamp ( void *  dst,
unsigned &  generation 
)

Copies data and the corresponding generation from a node to the buffer provided.

Parameters
dstThe buffer into which the data is copied. If topic was not updated since last check it will return false but still copy the data.
generationThe generation that was copied.
Returns
uint64_t Returns the timestamp of the copied data.

Definition at line 187 of file uORBDeviceNode.cpp.

References _last_update, ATOMIC_ENTER, ATOMIC_LEAVE, copy_locked(), and hrt_abstime.

Referenced by set_priority(), and uORB::Subscription::update().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ copy_locked()

bool uORB::DeviceNode::copy_locked ( void *  dst,
unsigned &  generation 
)
private

Copies data and the corresponding generation from a node to the buffer provided.

Caller handles locking.

Parameters
dstThe buffer into which the data is copied.
generationThe generation that was copied.
Returns
bool Returns true if the data was copied.

Definition at line 142 of file uORBDeviceNode.cpp.

References _data, _generation, _lost_messages, _meta, _queue_size, and orb_metadata::o_size.

Referenced by copy(), copy_and_get_timestamp(), read(), and set_priority().

Here is the caller graph for this function:

◆ filp_to_sd()

uORB::DeviceNode::SubscriberData * uORB::DeviceNode::filp_to_sd ( cdev::file_t filp)
inlinestaticprivate

Definition at line 45 of file uORBDeviceNode.cpp.

References cdev::file_t::f_priv.

Referenced by close(), ioctl(), poll_notify_one(), poll_state(), and read().

Here is the caller graph for this function:

◆ get_instance()

uint8_t uORB::DeviceNode::get_instance ( ) const
inline

Definition at line 197 of file uORBDeviceNode.hpp.

References _instance.

Referenced by uORB::DeviceMaster::showTop().

Here is the caller graph for this function:

◆ get_meta()

const orb_metadata* uORB::DeviceNode::get_meta ( ) const
inline

Definition at line 193 of file uORBDeviceNode.hpp.

References _meta.

Referenced by uORB::DeviceMaster::addNewDeviceNodes(), and uORB::DeviceMaster::showTop().

Here is the caller graph for this function:

◆ get_name()

const char* uORB::DeviceNode::get_name ( ) const
inline

Definition at line 195 of file uORBDeviceNode.hpp.

References _meta, and orb_metadata::o_name.

◆ get_priority()

int uORB::DeviceNode::get_priority ( ) const
inline

Definition at line 199 of file uORBDeviceNode.hpp.

References _priority.

Referenced by ioctl().

Here is the caller graph for this function:

◆ get_queue_size()

uint8_t uORB::DeviceNode::get_queue_size ( ) const
inline

Definition at line 185 of file uORBDeviceNode.hpp.

References _queue_size.

Referenced by uORB::DeviceMaster::showTop(), and uORB::Subscription::subscribe().

Here is the caller graph for this function:

◆ ioctl()

int uORB::DeviceNode::ioctl ( cdev::file_t filp,
int  cmd,
unsigned long  arg 
)
overridevirtual

IOCTL control for the subscriber.

Reimplemented from cdev::CDev.

Definition at line 300 of file uORBDeviceNode.cpp.

References _advertised, _last_update, appears_updated(), ATOMIC_ENTER, ATOMIC_LEAVE, filp_to_sd(), get_priority(), hrt_abstime, uORB::DeviceNode::UpdateIntervalData::interval, cdev::CDev::lock(), OK, ORBIOCGADVERTISER, ORBIOCGETINTERVAL, ORBIOCGPRIORITY, ORBIOCISADVERTISED, ORBIOCLASTUPDATE, ORBIOCSETINTERVAL, ORBIOCSETQUEUESIZE, ORBIOCUPDATED, cdev::CDev::unlock(), uORB::DeviceNode::SubscriberData::update_interval, and update_queue_size().

Here is the call graph for this function:

◆ is_advertised()

bool uORB::DeviceNode::is_advertised ( ) const
inline

Return true if this topic has been advertised.

This is used in the case of multi_pub/sub to check if it's valid to advertise and publish to this node or if another node should be tried.

Definition at line 165 of file uORBDeviceNode.hpp.

References _advertised.

Referenced by uORB::DeviceMaster::advertise(), uORB::Subscription::advertised(), and uORB::Manager::orb_exists().

Here is the caller graph for this function:

◆ lost_message_count()

uint32_t uORB::DeviceNode::lost_message_count ( ) const
inline

Definition at line 189 of file uORBDeviceNode.hpp.

References _lost_messages.

Referenced by uORB::DeviceMaster::addNewDeviceNodes(), and uORB::DeviceMaster::showTop().

Here is the caller graph for this function:

◆ mark_as_advertised()

void uORB::DeviceNode::mark_as_advertised ( )
inline

Definition at line 167 of file uORBDeviceNode.hpp.

References _advertised, print_statistics(), lps22hb::reset(), and update_queue_size().

Referenced by uORB::DeviceMaster::advertise(), and open().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ open()

int uORB::DeviceNode::open ( cdev::file_t filp)
overridevirtual

Method to create a subscriber instance and return the struct pointing to the subscriber as a file pointer.

Reimplemented from cdev::CDev.

Definition at line 75 of file uORBDeviceNode.cpp.

References _queue_size, add_internal_subscriber(), cdev::file_t::f_oflags, cdev::file_t::f_priv, uORB::DeviceNode::SubscriberData::generation, cdev::CDev::lock(), mark_as_advertised(), published_message_count(), and cdev::CDev::unlock().

Here is the call graph for this function:

◆ operator=() [1/2]

DeviceNode& uORB::DeviceNode::operator= ( const DeviceNode )
delete

◆ operator=() [2/2]

DeviceNode& uORB::DeviceNode::operator= ( DeviceNode &&  )
delete

◆ poll_notify_one()

void uORB::DeviceNode::poll_notify_one ( px4_pollfd_struct_t *  fds,
pollevent_t  events 
)
overrideprotectedvirtual

Internal implementation of poll_notify.

Parameters
fdsA poll waiter to notify.
eventsThe event(s) to send to the waiter.

Reimplemented from cdev::CDev.

Definition at line 499 of file uORBDeviceNode.cpp.

References appears_updated(), and filp_to_sd().

Referenced by set_priority().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ poll_state()

pollevent_t uORB::DeviceNode::poll_state ( cdev::file_t filep)
overrideprotectedvirtual

Check the current state of the device for poll events from the perspective of the file.

This function is called by the default poll() implementation when a poll is set up to determine whether the poll should return immediately.

The default implementation returns no events.

Parameters
filepThe file that's interested.
Returns
The current set of poll events.

Reimplemented from cdev::CDev.

Definition at line 484 of file uORBDeviceNode.cpp.

References appears_updated(), and filp_to_sd().

Referenced by set_priority().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ print_statistics()

bool uORB::DeviceNode::print_statistics ( bool  reset)

Print statistics (nr of lost messages)

Parameters
resetif true, reset statistics afterwards
Returns
true if printed something, false otherwise (if no lost messages)

Definition at line 531 of file uORBDeviceNode.cpp.

References _lost_messages, _meta, cdev::CDev::lock(), orb_metadata::o_name, and cdev::CDev::unlock().

Referenced by mark_as_advertised(), and uORB::DeviceMaster::printStatistics().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ publish()

ssize_t uORB::DeviceNode::publish ( const orb_metadata meta,
orb_advert_t  handle,
const void *  data 
)
static

Method to publish a data to this node.

Definition at line 386 of file uORBDeviceNode.cpp.

References _meta, uORB::Manager::get_instance(), orb_metadata::o_name, orb_metadata::o_size, uORBCommunicator::IChannel::send_message(), and write().

Referenced by uORB::Manager::orb_publish().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ published_message_count()

unsigned uORB::DeviceNode::published_message_count ( ) const
inline

Definition at line 191 of file uORBDeviceNode.hpp.

References _generation.

Referenced by uORB::DeviceMaster::addNewDeviceNodes(), appears_updated(), open(), uORB::DeviceMaster::showTop(), uORB::Subscription::subscribe(), and uORB::Subscription::updated().

Here is the caller graph for this function:

◆ read()

ssize_t uORB::DeviceNode::read ( cdev::file_t filp,
char *  buffer,
size_t  buflen 
)
overridevirtual

reads data from a subscriber node to the buffer provided.

Parameters
filpThe subscriber from which the data needs to be read from.
bufferThe buffer into which the data is read into.
buflenthe length of the buffer
Returns
ssize_t the number of bytes read.

Reimplemented from cdev::CDev.

Definition at line 200 of file uORBDeviceNode.cpp.

References _data, _last_update, _meta, ATOMIC_ENTER, ATOMIC_LEAVE, copy_locked(), filp_to_sd(), uORB::DeviceNode::SubscriberData::generation, uORB::DeviceNode::UpdateIntervalData::last_update, orb_metadata::o_size, and uORB::DeviceNode::SubscriberData::update_interval.

Here is the call graph for this function:

◆ register_callback()

bool uORB::DeviceNode::register_callback ( uORB::SubscriptionCallback callback_sub)

Definition at line 651 of file uORBDeviceNode.cpp.

References _callbacks, ATOMIC_ENTER, and ATOMIC_LEAVE.

Referenced by uORB::SubscriptionCallback::registerCallback(), and set_priority().

Here is the caller graph for this function:

◆ remove_internal_subscriber()

void uORB::DeviceNode::remove_internal_subscriber ( )

Removes the subscriber from the list.

Also notifies the remote if there a uORBCommunicator::IChannel instance.

Parameters
sdthe Subscriber to be removed.

Definition at line 571 of file uORBDeviceNode.cpp.

References _data, _meta, _subscriber_count, data, uORB::Manager::get_instance(), cdev::CDev::lock(), orb_metadata::o_name, orb_metadata::o_size, uORBCommunicator::IChannel::remove_subscription(), uORBCommunicator::IChannel::send_message(), cdev::CDev::unlock(), and write().

Referenced by close(), and uORB::Subscription::unsubscribe().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ set_priority()

void uORB::DeviceNode::set_priority ( uint8_t  priority)
inline

Definition at line 200 of file uORBDeviceNode.hpp.

References _priority, copy(), copy_and_get_timestamp(), copy_locked(), poll_notify_one(), poll_state(), register_callback(), and unregister_callback().

Referenced by uORB::DeviceMaster::advertise().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ subscriber_count()

int8_t uORB::DeviceNode::subscriber_count ( ) const
inline

Definition at line 187 of file uORBDeviceNode.hpp.

References _subscriber_count.

Referenced by uORB::DeviceMaster::showTop().

Here is the caller graph for this function:

◆ unadvertise()

int uORB::DeviceNode::unadvertise ( orb_advert_t  handle)
static

Definition at line 434 of file uORBDeviceNode.cpp.

References _advertised, uORB::Manager::get_instance(), orb_metadata::o_name, and uORBCommunicator::IChannel::topic_advertised().

Referenced by uORB::Manager::orb_unadvertise().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ unregister_callback()

void uORB::DeviceNode::unregister_callback ( uORB::SubscriptionCallback callback_sub)

Definition at line 673 of file uORBDeviceNode.cpp.

References _callbacks, ATOMIC_ENTER, and ATOMIC_LEAVE.

Referenced by set_priority(), and uORB::SubscriptionCallback::unregisterCallback().

Here is the caller graph for this function:

◆ update_queue_size()

int uORB::DeviceNode::update_queue_size ( unsigned int  queue_size)

Try to change the size of the queue.

This can only be done as long as nobody published yet. This is the case, for example when orb_subscribe was called before an orb_advertise. The queue size can only be increased.

Parameters
queue_sizenew size of the queue
Returns
PX4_OK if queue size successfully set

Definition at line 635 of file uORBDeviceNode.cpp.

References _data, and _queue_size.

Referenced by ioctl(), and mark_as_advertised().

Here is the caller graph for this function:

◆ write()

ssize_t uORB::DeviceNode::write ( cdev::file_t filp,
const char *  buffer,
size_t  buflen 
)
overridevirtual

writes the published data to the internal buffer to be read by subscribers later.

Parameters
filpthe subscriber; this is not used.
bufferThe buffer for the input data
buflenthe length of the buffer.
Returns
ssize_t The number of bytes that are written

Reimplemented from cdev::CDev.

Definition at line 232 of file uORBDeviceNode.cpp.

References _callbacks, _data, _generation, _last_update, _meta, _queue_size, ATOMIC_ENTER, ATOMIC_LEAVE, hrt_absolute_time(), cdev::CDev::lock(), orb_metadata::o_size, cdev::CDev::poll_notify(), and cdev::CDev::unlock().

Referenced by publish(), and remove_internal_subscriber().

Here is the call graph for this function:
Here is the caller graph for this function:

Member Data Documentation

◆ _advertised

bool uORB::DeviceNode::_advertised {false}
private

has ever been advertised (not necessarily published data yet)

Definition at line 276 of file uORBDeviceNode.hpp.

Referenced by ioctl(), is_advertised(), mark_as_advertised(), and unadvertise().

◆ _callbacks

List<uORB::SubscriptionCallback *> uORB::DeviceNode::_callbacks
private

Definition at line 274 of file uORBDeviceNode.hpp.

Referenced by register_callback(), unregister_callback(), and write().

◆ _data

uint8_t* uORB::DeviceNode::_data {nullptr}
private

allocated object buffer

Definition at line 271 of file uORBDeviceNode.hpp.

Referenced by appears_updated(), copy_locked(), read(), remove_internal_subscriber(), update_queue_size(), write(), and ~DeviceNode().

◆ _generation

px4::atomic<unsigned> uORB::DeviceNode::_generation {0}
private

object generation count

Definition at line 273 of file uORBDeviceNode.hpp.

Referenced by copy_locked(), published_message_count(), and write().

◆ _instance

const uint8_t uORB::DeviceNode::_instance
private

orb multi instance identifier

Definition at line 270 of file uORBDeviceNode.hpp.

Referenced by get_instance().

◆ _last_update

hrt_abstime uORB::DeviceNode::_last_update {0}
private

time the object was last updated

Definition at line 272 of file uORBDeviceNode.hpp.

Referenced by copy_and_get_timestamp(), ioctl(), read(), and write().

◆ _lost_messages

uint32_t uORB::DeviceNode::_lost_messages = 0
private

nr of lost messages for all subscribers.

If two subscribers lose the same message, it is counted as two.

Definition at line 281 of file uORBDeviceNode.hpp.

Referenced by copy_locked(), lost_message_count(), and print_statistics().

◆ _meta

const orb_metadata* uORB::DeviceNode::_meta
private

◆ _priority

uint8_t uORB::DeviceNode::_priority
private

priority of the topic

Definition at line 275 of file uORBDeviceNode.hpp.

Referenced by get_priority(), and set_priority().

◆ _queue_size

uint8_t uORB::DeviceNode::_queue_size
private

maximum number of elements in the queue

Definition at line 277 of file uORBDeviceNode.hpp.

Referenced by copy_locked(), get_queue_size(), open(), update_queue_size(), and write().

◆ _subscriber_count

int8_t uORB::DeviceNode::_subscriber_count {0}
private

The documentation for this class was generated from the following files: