Although having the family in the path would have been nice but it seems as 
though the sensors performing multiple functions could be confusing. 

so, +1 for either "hw/drivers/sensors/<manufacturer>/<sensor_name>” and 
"hw/drivers/sensors/<sensor_name>”. Reference drivers are nice to have.

Meta-data and SI units can be part of the description in each package but 
conversion factors could be sys cfg settings.

Regards,
Vipul Rahane

> On Nov 9, 2016, at 7:03 PM, will sanfilippo <wi...@runtime.io> wrote:
> 
>> 
>> On Nov 9, 2016, at 5:59 PM, Kevin Townsend <ke...@adafruit.com 
>> <mailto: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