> On Nov 9, 2016, at 5:59 PM, Kevin Townsend <ke...@adafruit.com> wrote: > > There are no sensor drivers in the system at present, but now that the HAL > rework is complete I wanted to port a few drivers over to Mynewt just to > properly test the HW and HAL out. Existing sensor drivers is one of the key > factors to draw people into any embedded RTOS/system, so I think it's > important to get this right to pull people into the Mynewt ecosystem. > > I'm curious what kind of organization would make the most sense moving > forward, though. Assuming some drivers are included in the core mynewt repo > instead of being in independent libraries, what would be an ideal root > location to place them in the file structure? > > - hw/drivers/sensors ? > +1 this is where I would put them > The problem is that hw/drivers already has things like adc and uart > implementations or nimble which is quite a different concept, though it's not > entirely inappropriate all the same. > > And inside sensors (or wherever) you'll have another problem: should you have > a single flat list of all drivers by device name, or do you want to organize > them by type/manufacturer/etc.: > > * hw/drivers/sensors/bmp085/* > * hw/drivers/sensors/bmp280/* > * hw/drivers/sensors/tsl2651/* > * hw/drivers/sensors/lsm303dlhc/* > * hw/drivers/sensors/bno055/* > +1 although manufacturer is OK as well. I dont like by family but dont have really strong feelings.
> Or do you want to organize them by family (which is nice in some ways but > very awkward in others with certain SoCs): > > * hw/drivers/sensors/pressure/bmp085/* > * hw/drivers/sensors/pressure/bmp280/* > * hw/drivers/sensors/light/tsl2561/* > * hw/drivers/sensors/accelerometers/lsm303dlhc/* <-- This is also a > magnetometer! > * hw/drivers/sensors/orientation???/bno055/* <-- this is an accel, mag > and gyro with sensor fusion for orientation > > Or does manufacturer make more sense: > > * hw/drivers/sensors/bosch/bmp085/* > * hw/drivers/sensors/bosch/bmp280/* > * hw/drivers/sensors/bosch/bno055/* > * hw/drivers/sensors/taos/tsl2561/* <-- Complicated since Taos was > purchased and is now AMS, which is a recurring theme these days > * hw/drivers/sensors/st/lsm303dlhc/* > > It would likely be useful to have some sort of basic meta-data as well about > the sensor types since some ICs can contain multiple sensors, such as the > bmp280 being a pressure sensor but also having temperature data, or the > lsm303dlhc being a 3 axis accelerometer and magnetometer. This meta-data > isn't critical, but could be useful as a filter at some point using the newt > tool or the newt 'newt vals' type functionality. > > Adding drivers to the core repo is problematic in that it creates a > maintenance burden, but I think drivers are also a huge pull for people to > use the system and an important reference to keep up to date with changes in > the HAL over time. There should at least be one reference for each bus like > I2C, SPI, ADC and UART (GPS etc.) that makes use of the power management API, > etc. Having a maintained reference driver will reduce support requirements > long term, and ensure best practices are followed by people contributing > other drivers in the future. > +1 for reference drivers in core repo. Hopefully these are not a huge maintenance burden. We should pick these wisely though. > Kevin > > PS: Some sort of sensor API is also worth considering to have a common data > type and standard SI units and meta-data for all sensors (min/max data > values, output speed, etc.), but that's another discussion entirely. >