mirror of
https://github.com/PX4/PX4-Autopilot.git
synced 2026-07-27 00:48:23 +08:00
feat(uORB): Add an own type, orb_sub_t, for subscription handles (#27457)
* platforms/common/uORB/uORB.h: Add definition for orb_sub_t and handle check functions Signed-off-by: Jukka Laitinen <jukkax@ssrc.tii.ae> * uORB: Change subscriber id:s from int to orb_sub_t Signed-off-by: Jukka Laitinen <jukkax@ssrc.tii.ae> * uxrce_dds_client: Change polling of transport device from px4_poll to poll Use posix poll directly, there is no need to use px4_poll unless uORBs are being polled. The one used here is a normal filesystem/device poll, so we can use normal "poll", this is the common pattern in the codebase. Signed-off-by: Jukka Laitinen <jukka.laitinen@tii.ae> * Fix linking for protected build This fixes errors for memalign not linking on some configurations. Memalign exists in nuttx kernel-side mm library and it may fail in configurations where kernel and userspace are separated. This has no effect on other than "CONFIG_BUILD_PROTECTED" or "CONFIG_BUILD_KERNEL" NuttX builds. Signed-off-by: Jukka Laitinen <jukkax@ssrc.tii.ae> --------- Signed-off-by: Jukka Laitinen <jukkax@ssrc.tii.ae> Signed-off-by: Jukka Laitinen <jukka.laitinen@tii.ae> Co-authored-by: Jukka Laitinen <jukkax@ssrc.tii.ae>
This commit is contained in:
@@ -344,18 +344,18 @@ int uORB::Manager::orb_unadvertise(orb_advert_t handle)
|
||||
return uORB::DeviceNode::unadvertise(handle);
|
||||
}
|
||||
|
||||
int uORB::Manager::orb_subscribe(const struct orb_metadata *meta)
|
||||
orb_sub_t uORB::Manager::orb_subscribe(const struct orb_metadata *meta)
|
||||
{
|
||||
return node_open(meta, false);
|
||||
}
|
||||
|
||||
int uORB::Manager::orb_subscribe_multi(const struct orb_metadata *meta, unsigned instance)
|
||||
orb_sub_t uORB::Manager::orb_subscribe_multi(const struct orb_metadata *meta, unsigned instance)
|
||||
{
|
||||
int inst = instance;
|
||||
return node_open(meta, false, &inst);
|
||||
}
|
||||
|
||||
int uORB::Manager::orb_unsubscribe(int fd)
|
||||
int uORB::Manager::orb_unsubscribe(orb_sub_t fd)
|
||||
{
|
||||
return px4_close(fd);
|
||||
}
|
||||
@@ -373,7 +373,7 @@ int uORB::Manager::orb_publish(const struct orb_metadata *meta, orb_advert_t han
|
||||
return uORB::DeviceNode::publish(meta, handle, data);
|
||||
}
|
||||
|
||||
int uORB::Manager::orb_copy(const struct orb_metadata *meta, int handle, void *buffer)
|
||||
int uORB::Manager::orb_copy(const struct orb_metadata *meta, orb_sub_t handle, void *buffer)
|
||||
{
|
||||
int ret;
|
||||
|
||||
@@ -391,19 +391,19 @@ int uORB::Manager::orb_copy(const struct orb_metadata *meta, int handle, void *b
|
||||
return PX4_OK;
|
||||
}
|
||||
|
||||
int uORB::Manager::orb_check(int handle, bool *updated)
|
||||
int uORB::Manager::orb_check(orb_sub_t handle, bool *updated)
|
||||
{
|
||||
/* Set to false here so that if `px4_ioctl` fails to false. */
|
||||
*updated = false;
|
||||
return px4_ioctl(handle, ORBIOCUPDATED, (unsigned long)(uintptr_t)updated);
|
||||
}
|
||||
|
||||
int uORB::Manager::orb_set_interval(int handle, unsigned interval)
|
||||
int uORB::Manager::orb_set_interval(orb_sub_t handle, unsigned interval)
|
||||
{
|
||||
return px4_ioctl(handle, ORBIOCSETINTERVAL, interval * 1000);
|
||||
}
|
||||
|
||||
int uORB::Manager::orb_get_interval(int handle, unsigned *interval)
|
||||
int uORB::Manager::orb_get_interval(orb_sub_t handle, unsigned *interval)
|
||||
{
|
||||
int ret = px4_ioctl(handle, ORBIOCGETINTERVAL, (unsigned long)interval);
|
||||
*interval /= 1000;
|
||||
|
||||
Reference in New Issue
Block a user