mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-11-13 04:41:36 +08:00
Made setting of queue size in orb node based on topic definition
This commit is contained in:
@@ -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)
|
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)
|
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)
|
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,
|
orb_advert_t orb_advertise_multi_queue(const struct orb_metadata *meta, const void *data, int *instance,
|
||||||
|
|||||||
@@ -53,9 +53,7 @@ struct orb_metadata {
|
|||||||
const uint16_t o_size_no_padding; /**< object size w/o padding at the end (for logger) */
|
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 */
|
uint32_t message_hash; /**< Hash over all fields for message compatibility checks */
|
||||||
orb_id_size_t o_id; /**< ORB_ID enum */
|
orb_id_size_t o_id; /**< ORB_ID enum */
|
||||||
#ifdef CONFIG_ORB_COMMUNICATOR
|
|
||||||
uint8_t o_queue; /**< queue size */
|
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 _size_no_padding Struct size w/o padding at the end
|
||||||
* @param _message_hash 32 bit message hash over all fields
|
* @param _message_hash 32 bit message hash over all fields
|
||||||
* @param _orb_id_enum ORB ID enum e.g.: ORB_ID::vehicle_status
|
* @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) \
|
#define ORB_DEFINE(_name, _struct, _size_no_padding, _message_hash, _orb_id_enum, _queue_size) \
|
||||||
const struct orb_metadata __orb_##_name = { \
|
const struct orb_metadata __orb_##_name = { \
|
||||||
#_name, \
|
#_name, \
|
||||||
@@ -118,16 +115,6 @@ typedef const struct orb_metadata *orb_id_t;
|
|||||||
_orb_id_enum, \
|
_orb_id_enum, \
|
||||||
_queue_size \
|
_queue_size \
|
||||||
}; struct hack
|
}; 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
|
__BEGIN_DECLS
|
||||||
|
|
||||||
|
|||||||
@@ -630,7 +630,6 @@ int16_t uORB::Manager::process_remote_topic(const char *topic_name)
|
|||||||
|
|
||||||
if (node) {
|
if (node) {
|
||||||
PX4_DEBUG("Marking DeviceNode(%s) as advertised in process_remote_topic", topic_name);
|
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();
|
node->mark_as_advertised();
|
||||||
_remote_topics.insert(topic_name);
|
_remote_topics.insert(topic_name);
|
||||||
return 0;
|
return 0;
|
||||||
|
|||||||
Reference in New Issue
Block a user