+1 on the more 'generic' data types. With this, *any* sensor can simply return a SENSOR_VALUE_TYPE_FLOAT_TRIPLET whereas if we use SENSOR_VALUE_TYPE_MS2_TRIPLET then a sensor that wants to return a float triplet that ISN'T M/s^2 would either have to define its own data type or would use a rather confusing data type. And even if a sensor DID want to define it's own data type, it could simple be
#define MY_SENSOR_FLOAT_TRIPLET SENSOR_VALUE_TYPE_FLOAT_TRIPLET and I'm done. dg > On Dec 13, 2016, at 1:07 AM, Kevin Townsend <[email protected]> wrote: > > We can just have the following: > > /** > * Triplet of INT32 values. > */ > #define SENSOR_VALUE_TYPE_INT32_TRIPLET (4) > /** > * Triplet of 32-bit float values. > */ > #define SENSOR_VALUE_TYPE_FLOAT_TRIPLET (5) > > The rationale here is that we will know based on the sensor type what kind of > data we have, and this might be more concise than having multiple entries > like rad/s, uTesla, etc., for every sensor type or vector type output. Just > detecting the sensor type should be enough if we standardize sensors to > output the same value types, which I think adds value to the system as well. > > If every accelerometer driver outputs m/s^2, and every magnetometer outputs > uTesla, it means you can drop in any other accel/mag/etc. if a part becomes > EOL, and other than changing the driver there should be very little implact > on the rest of the system. It also simplifies the sensor value types above > since the values types can be inferred from the sensor type, and we just need > to know if it's INT32, FLOAT, FLOAT TRIPLET, (16Q16 fixed???, DOUBLE???), etc. > > The only gotcha for vectors is that the order will need be be defined so that > 0 = X, 1 = Y and 2 = Z for triples, etc., and we'll probably also want a > quaternion/quadruplet type though that's down the road: > > /** > * 32-bit float based quaternion quadruplet. > */ > #define SENSOR_VALUE_TYPE_QUATERNION (6) -- David G. Simmons (919) 534-5099 Web <https://davidgs.com/> • Blog <https://davidgs.com/davidgs_blog> • Linkedin <http://linkedin.com/in/davidgsimmons> • Twitter <http://twitter.com/TechEvangelist1> • GitHub <http://github.com/davidgs> /** Message digitally signed for security and authenticity. * If you cannot read the PGP.sig attachment, please go to * http://www.gnupg.com/ <http://www.gnupg.com/> Secure your email!!! * Public key available at keyserver.pgp.com <http://keyserver.pgp.com/> **/ ♺ This email uses 100% recycled electrons. Don't blow it by printing! There are only 2 hard things in computer science: Cache invalidation, naming things, and off-by-one errors.
