New comer to RIOT, working on an LPCxpresso board, got RIOT running at some extend in the board. Now I’m interested on implementing a driver for this transceiver, hardware timers, rtc, spi, etc… but don’t really know which APIs should I use.
I have been digging the source, doxygen documentation, mailing list, issues, etc. and don’t have a clear vision of direction the development efforts are leaning to…
Should I start using the Peripheral drivers APIs? I think the APIs are some what clean and clear, but I can’t seem to find any consumers of those APIs in the main tree.
If those APIs are going to be the HAL for RIOT I could start using them and contribute some feedback and testing of hardware independent drivers with those APIs.
Implementing a good HAL is fundamental to a portable OS, like *BSDs ( I specially like the NetBSD APIs), and for making RIOT a big player in the IoT.
Yes you should use the peripheral driver APIs in RIOT/drivers/include/periph. The reason why there are not too many consumers for these APIs is, that this design is relatively new. But nevertheless, you can find some peripheral tests in RIOT/tests. They’re named like “periph_xyz”. Also in RIOT/drivers you can find one or two drivers which use these APIs, for example the isl29020 light sensor uses i2c. Also you’ll maybe find some interesting open pull requests. This would be a nice proof of concept in addition ! Cheers, Peter
welcome to RIOT also from my side! Can you maybe provide some more details on the specific LPCxpresso board you are targeting, especially on the radio that is included?
For you porting efforts, best keep close to the structure of the ARM Cortex-M based boards, as these are the newest and cleanest ports that keep to the intended board/cpu structure. For example the STM discovery or the iot-lab_M3 boards should give you a solid foundation. Be careful with the mbed_lpc1768 though, as this port is very rudimentary and does not fully comply with the structure we intend to use…