Made setting of queue size in orb node based on topic definition

This commit is contained in:
Eric Katzfey 2024-03-01 14:18:52 -08:00
parent 4a043a80f1
commit dd67766f6c
3 changed files with 3 additions and 17 deletions

View File

@ -115,7 +115,7 @@ int uorb_top(char **topic_filter, int num_filters)
orb_advert_t orb_advertise(const struct orb_metadata *meta, const void *data)
{
return uORB::Manager::get_instance()->orb_advertise(meta, data);
return uORB::Manager::get_instance()->orb_advertise(meta, data, meta->o_queue);
}
orb_advert_t orb_advertise_queue(const struct orb_metadata *meta, const void *data, unsigned int queue_size)
@ -125,7 +125,7 @@ orb_advert_t orb_advertise_queue(const struct orb_metadata *meta, const void *da
orb_advert_t orb_advertise_multi(const struct orb_metadata *meta, const void *data, int *instance)
{
return uORB::Manager::get_instance()->orb_advertise_multi(meta, data, instance);
return uORB::Manager::get_instance()->orb_advertise_multi(meta, data, instance, meta->o_queue);
}
orb_advert_t orb_advertise_multi_queue(const struct orb_metadata *meta, const void *data, int *instance,

View File

@ -53,9 +53,7 @@ struct orb_metadata {
const uint16_t o_size_no_padding; /**< object size w/o padding at the end (for logger) */
uint32_t message_hash; /**< Hash over all fields for message compatibility checks */
orb_id_size_t o_id; /**< ORB_ID enum */
#ifdef CONFIG_ORB_COMMUNICATOR
uint8_t o_queue; /**< queue size */
#endif
};
@ -106,9 +104,8 @@ typedef const struct orb_metadata *orb_id_t;
* @param _size_no_padding Struct size w/o padding at the end
* @param _message_hash 32 bit message hash over all fields
* @param _orb_id_enum ORB ID enum e.g.: ORB_ID::vehicle_status
* @param _queue_size Queue size for remote topics in communicator interface
* @param _queue_size Queue size from topic definition
*/
#ifdef CONFIG_ORB_COMMUNICATOR
#define ORB_DEFINE(_name, _struct, _size_no_padding, _message_hash, _orb_id_enum, _queue_size) \
const struct orb_metadata __orb_##_name = { \
#_name, \
@ -118,16 +115,6 @@ typedef const struct orb_metadata *orb_id_t;
_orb_id_enum, \
_queue_size \
}; struct hack
#else
#define ORB_DEFINE(_name, _struct, _size_no_padding, _message_hash, _orb_id_enum, _queue_size) \
const struct orb_metadata __orb_##_name = { \
#_name, \
sizeof(_struct), \
_size_no_padding, \
_message_hash, \
_orb_id_enum \
}; struct hack
#endif
__BEGIN_DECLS

View File

@ -630,7 +630,6 @@ int16_t uORB::Manager::process_remote_topic(const char *topic_name)
if (node) {
PX4_DEBUG("Marking DeviceNode(%s) as advertised in process_remote_topic", topic_name);
node->update_queue_size(topic_ptr->o_queue);
node->mark_as_advertised();
_remote_topics.insert(topic_name);
return 0;