aboutsummaryrefslogtreecommitdiff
path: root/src/modules/uORB/uORB.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/modules/uORB/uORB.cpp')
-rw-r--r--src/modules/uORB/uORB.cpp20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/modules/uORB/uORB.cpp b/src/modules/uORB/uORB.cpp
index b4f81d429..d531c6b0b 100644
--- a/src/modules/uORB/uORB.cpp
+++ b/src/modules/uORB/uORB.cpp
@@ -41,6 +41,7 @@
#include <drivers/device/device.h>
#include <sys/types.h>
+#include <sys/stat.h>
#include <stdint.h>
#include <stdbool.h>
#include <string.h>
@@ -1196,6 +1197,25 @@ node_open(Flavor f, const struct orb_metadata *meta, const void *data, bool adve
} // namespace
+int
+orb_exists(const struct orb_metadata *meta, int instance)
+{
+ /*
+ * Generate the path to the node and try to open it.
+ */
+ char path[orb_maxpath];
+ int inst = instance;
+ int ret = node_mkpath(path, PUBSUB, meta, &inst);
+
+ if (ret != OK) {
+ errno = -ret;
+ return ERROR;
+ }
+
+ struct stat buffer;
+ return stat(path, &buffer);
+}
+
orb_advert_t
orb_advertise(const struct orb_metadata *meta, const void *data)
{