Hi Matteo Golin:

I see under `uorb/sensors` there are
> lots of header and C files that just contain declarations for uORB types,
> but these declarations already exist in the kernel. Why are they duplicated
> in nuttx-apps?


1.We define all the uORB-related metadata for physical sensors under the
directory nuttx-apps/system/uorb/sensor(by using ORB macro
function:ORB_DEFINE、ORB_DECLARE). This metadata primarily describes the
name of each topic, the size of its associated structure, and debug
callback functions.
And the structure definitions for these topics are placed in
nuttx/include/nuttx/uorb.h, allowing kernel drivers to utilize them
directly.

2. When we want to use a specific topic, such as the accelerometer topic,
we simply need to include <sensor/accel.h> in our application and then use
APIs like orb_subscribe to subscribe to it. However, this assumes that the
accelerometer driver is functioning correctly.

The main reason for separating them is that uORB is a user-layer SDK and is
not utilized by the kernel. However, the structure definitions are required
by both the kernel and user-space applications. Hence, they are placed
within the kernel.

Can anyone shine some light on why the `uorb/sensor` declarations are
> necessary, and if it would be possible for me to create user space fusion
> drivers in `uorb/fusion` with their own Kconfig file?


 Previously,  xiangxiao suggested moving all sensor-related components to
the *apps/sensor* directory. So, We could create a separate
*apps/sensor/fusion/* directory under it, and within the fusion directory,
we could establish our own Kconfig file. This fusion directory would be at
the same level as the apps/sensor/uorb directory.
I will submit a PR to move them, and we can have discussions under that PR.


Matteo Golin <matteo.go...@gmail.com> 于2025年6月18日周三 02:34写道:

> Hello,
>
> Was starting to work more on this today, but I'm confused about how the
> `uorb` directory is currently set up. I see under `uorb/sensors` there are
> lots of header and C files that just contain declarations for uORB types,
> but these declarations already exist in the kernel. Why are they duplicated
> in nuttx-apps?
>
> I was hoping to create a "fusion library", with userspace implementations
> of uORB drivers using `usensor`. Something where the user can include this
> library and choose which fusion nodes they want to register in their
> application, *not* an example program that just runs and registers a
> sensor. This way the user has full control. I was thinking about putting
> this under `uorb/fusion`, but I want to include a Kconfig file so users can
> enable/disable fusion drivers that they want to include using `menuconfig`.
> I don't think I can put another Kconfig file in `uorb/fusion` since there's
> already a Kconfig file in `uorb`, but I could be wrong. To me, this
> location seems like the intuitive place to put fusion libraries, but I
> don't want it conflated with the `uorb_listener` application since it's a
> user-available library.
>
> Can anyone shine some light on why the `uorb/sensor` declarations are
> necessary, and if it would be possible for me to create user space fusion
> drivers in `uorb/fusion` with their own Kconfig file?
>
> Matteo
>
> On Fri, Jan 31, 2025 at 5:52 PM Tomek CEDRO <to...@cedro.info> wrote:
>
> > On Fri, Jan 31, 2025 at 10:56 PM Matteo Golin <matteo.go...@gmail.com>
> > wrote:
> > > Given the discourse around breakages in synchronization between the
> > > nuttx-apps and nuttx repositories, I think I may begin adding new
> > > applications to `apps/sensors` but I will hold off on moving any
> already
> > > existing sensor examples. In the coming days I expect to have something
> > > functional for determining altitude from barometer data.
> >
> > Looks like someone missed something, or we didn't catch the problem on
> > time with PR/CI, its clearly a bug not by design, but it seems easier
> > to write emails than send actual patches :-)
> >
> > Keep your repos in sync, fear not, share your stuff, report problems
> > when found any, have fun, if you plan to break existing stuff just
> > create a separate application so everyone is safe :-)
> >
> > --
> > CeDeROM, SQ7MHZ, http://www.tomek.cedro.info
> >
>

Reply via email to