Hello mynewt community, I am new to mynewt , and at this point I have just managed to get mynewt running on an Arduino M0 Pro, with an attached pushbutton on one GPIO and an LED with resistor attached on another GPIO pin. My first test program just monitors the button and turns the LED on whenever the switch is closed. And that all works fine. I also have another supported board that I will be introducing to mynewt soon.
My first impressions are very positive. I think I understand what you are trying to create with this platform and it's great. Thanks for building this! I'd like to also add that I think the mynewt documentation is really excellent in general and I feel I have very quickly been able to absorb a good introduction to the platform and get my hands dirty. Thank you! At this point I'd like to make a couple of suggestions based on my initial experience. I found it very difficult to determine the appropriate integer to pass to the code to identify a particular GPIO pin on my hardware. I Googled for it without success. Eventually I went to the source code and found this file in my project "repos/mynewt_arduino_zero/hw/mcu/atmel/samd21xx/src/hal_gpio.c". That file has a comment that attempts to clarify the numeric mapping, but I was unable to follow what it was saying. Eventually after hours of hunting I gave up and resorted to trial and error and I was able to identify the integers to pass for a handful of the GPIO pins. I found this experience to be pretty frustrating. I think I understand that this comment buried deep in the code is where I was expected to get the information I needed. However, it was difficult to find, and when found I did not think it did a very good job of conveying the information that any developer will require to use mynewt on this board to access GPIO pins. I'd like to identify this as a weakness in both usability and documentation for mynewt that I hope the community will consider addressing. To be more specific about what I think is missing, I believe any developer coming to the mynewt platform with a supported board will want to know what pin number to use in the code for a particular physical pin on the board. I think only the MCU pins are known in mynewt (never the board pins -- okay) and one must consult the schematic to find the board pin corresponding to the desired MCU pin (okay). However, it's not really the MCU pins that mynewt knows about. Mynewt only knows about raw integers that are mapped in some ad-hoc way on each board, such that a new mynewt developer will need to search the code to discover and then comprehend that mapping before they can target a specific MCU pin. In my opinion, it would be much more helpful if: 1. the mynewt MCU support code could expose symbolic names for MCU pins (e.g., for Cortex M0: PA0, PB0, ...) that could be used in the code so developers would not need to dig through mynewt board support code to discover and comprehend those numeric mappings, and 2. the mynewt board support code could offer a board-silkscreen-pin-number-to-MCU-pin-number mapping (and perhaps define names based on the board silkscreen). I think these changes would make a huge improvement to the mynewt developer experience. I also believe there would be very little coding work required for the above, and the information required would be well known by anyone writing the MCU support code and the board support code. Thanks again for this project and all the good documentation, Glen.