Hello,

I have no qualms with renaming the existing type to just be temperature, I
just figured that renaming this macro might break some existing user code.
If the NuttX team thinks renaming is a better solution then I'd be happy to
go that route!

Matteo

On Sat, Jan 18, 2025, 2:30 AM raiden00pl <raiden0...@gmail.com> wrote:

> Can we just rename `SENSOR_TYPE_AMBIENT_TEMPERATURE` to
> `SENSOR_TYPE_TEMPERATURE`
> and update the comments that this type is "a general temperature sensor"?
> The current definition is taken from Android, but NuttX is a more general
> OS, used in various embedded
> scenarios that go far beyond those of Android, like in this specific case:
> rocket science :)
>
> Is there any reason for keeping it perfectly compatible with Android?
>
> Regarding setting the thermocouple type - using a dedicated SNIOC is OK.
> There is no command available for this purpose yet.
>
>
> sob., 18 sty 2025 o 04:05 董九柱 <dongjiuzhu0...@gmail.com> napisał(a):
>
> > hello  Matteo Golin:
> >
> >  I'm Donny. About these questions, i have some suggestions.
> >
> > Regarding the first question, we first need to clarify what data the
> sensor
> > reports. Can only temperature and time suffice? If they can, try to reuse
> > the sensor_temp structure instead of introducing a new type. If they
> cannot
> > suffice, there are two solutions.
> > 1>. The first is to populate the sensor_temp structure, but only add
> > members related to temperature. If the additional data is highly
> unrelated,
> > you have to choose the other approach:
> > 2>. Using custom_sensor. With this, you can fully define your own
> structure
> > and size. Register it through sensor_custom_register and specify a name,
> > which is usually the name of the structure and also the topic name for
> > subscription through the ORB API.
> >
> > Questions 3 and 4:
> >
> > For multiple thermocouples, uORB supports multiple instances of topics.
> You
> > need to specify the driver type and device number when registering the
> > driver, which will register them as different nodes. When subscribing
> using
> > uORB, you can specify which sensor entity to subscribe to using something
> > like uorb_subscribe_multi. These entities can all have data structures
> that
> > are either sensor_temp or a custom structure you have defined. For
> example:
> > /dev/uorb/temp0, /dev/uorb/temp1, etc. You can subscribe to specific
> > instances using:
> >
> > c复制代码
> > uorb_subscribe_multi(ORB_ID(SENSOR_TEMPERATURE), 0);
> >
> > uorb_subscribe_multi(ORB_ID(SENSOR_TEMPERATURE), 1);
> >
> > Actually, when registering the driver, you should know which device uses
> > which devno, so you can differentiate based on devno. However, if you are
> > unsure, you can retrieve the info of each sensor to make a judgment. But
> > regardless, you still need to populate different info for different
> sensors
> > when registering the driver.
> >
> > Donny.
> >
> >
> >
> >
> > Matteo Golin <matteo.go...@gmail.com> 于2025年1月17日周五 11:16写道:
> >
> > > Hello everyone,
> > >
> > > I am working on writing drivers for some of InSpace's new sensors for
> our
> > > hybrid control system. Of these sensors, one
> > > of them is the MCP9600 thermocouple amplifier for reading temperatures
> > off
> > > of our oxidizer tank and combustion chamber.
> > >
> > > I wrote this driver using the legacy format here:
> > > https://github.com/apache/nuttx/pull/15525
> > >
> > > I want to adapt it to UORB now because that is the direction NuttX is
> > > moving in and because that framework provides
> > > InSpace with a lot of nice features like mocking, buffering,
> configurable
> > > sampling rate, etc. for free.
> > >
> > > The UORB implementation as it stands only has one sensor type for
> > > temperature, and it is ambient temperature.
> > > Thermocouples are measuring the temperature of a specific object. I
> will
> > > need to extend the framework for this
> > > functionality, and I have a few questions to consult the community on
> > > beforehand so I follow the idiomatic "UORB way".
> > >
> > > 1) I would add a new type, of which I'm thinking of calling
> > > `SENSOR_TYPE_OBJECT_TEMPERATURE`. Are there any name
> > > suggestions that might be more intuitive and which convey that this
> type
> > > is for the temperature of a specific
> > > object/entity, not ambient?
> > >
> > > 2) In the same way, I am thinking of calling the topic `therm<n>`
> instead
> > > of `temp<n>` that is used for ambient
> > > temperature. This conveys that we are measuring the therm(als) using a
> > > therm(ocoupler). Any comments on this name
> > > selection?
> > >
> > > 3) Is it possible to re-use the `struct sensor_temp` data type for this
> > > sensor type since a timestamp and temperature
> > > `float` are all that's required for both thermocouple temperature and
> > > ambient temperature? Or should I add another
> > > datatype with a different name but the same members?
> > >
> > > 4) In a system with thermocouples there are likely to be more than one,
> > > each one measuring a different entity. In our
> > > case there would be one for an oxidizer tank, source tank, combustion
> > > chamber, etc. How should I structure this
> > > extension of UORB to allow differentiation between the
> > > `/dev/uorb/therm<n>` topics so they can be associated with the
> > > entity in question? I don't think I could encode this within the
> > > `sensor_device_info_s` struct since that is reserved
> > > for sensor and vendor info. Do you think differentiating by `devno` is
> > > fine? I.e. user must know that `therm0` is
> > > connected to the oxidizer tank, `therm1` is the combustion chamber,
> etc.
> > >
> > > If you have any other suggestions for me, please let me know. I'll
> > > probably reach out again in this thread once I get
> > > started with the implementation.
> > >
> > > Thank you!
> > >
> > > --
> > > Matteo Golin
> > >
> >
>

Reply via email to