uorb: allow for more than 255 uORB messages

Increased size for ORB_ID from uint8_t to uint16_t

Created a type: orb_id_size_t = uint16_t.
There are still a couple of places where the size
of the ORB_ID is assumed to be less than 16-bits.
The places that I have found are commented regarding
this and can be found with a search on orb_id_size_t.
This commit is contained in:
hskrieg
2023-08-08 10:59:34 +02:00
committed by Beat Küng
parent e9fbb9a3ab
commit 64c21ad428
9 changed files with 26 additions and 16 deletions
+6 -5
View File
@@ -42,16 +42,17 @@
#include <stdint.h>
#include <stdbool.h>
typedef uint16_t orb_id_size_t;
/**
* Object metadata.
*/
struct orb_metadata {
const char *o_name; /**< unique object name */
const uint16_t o_size; /**< object size */
const uint16_t o_size_no_padding; /**< object size w/o padding at the end (for logger) */
const char *o_fields; /**< semicolon separated list of fields (with type) */
uint8_t o_id; /**< ORB_ID enum */
const char *o_name; /**< unique object name */
const uint16_t o_size; /**< object size */
const uint16_t o_size_no_padding; /**< object size w/o padding at the end (for logger) */
const char *o_fields; /**< semicolon separated list of fields (with type) */
orb_id_size_t o_id; /**< ORB_ID enum */
};
typedef const struct orb_metadata *orb_id_t;
+1 -1
View File
@@ -150,7 +150,7 @@ int uORB::DeviceMaster::advertise(const struct orb_metadata *meta, bool is_adver
// add to the node map.
_node_list.add(node);
_node_exists[node->get_instance()].set((uint8_t)node->id(), true);
_node_exists[node->get_instance()].set((orb_id_size_t)node->id(), true);
}
group_tries++;
+1 -1
View File
@@ -98,7 +98,7 @@ public:
return false;
}
return _node_exists[instance][(uint8_t)id];
return _node_exists[instance][(orb_id_size_t)id];
}
/**