> 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.
> 

Reply via email to