# ARK C++ SDK Board Support Contribution Guidelines ## Contribution Steps 1) Determine what's needed. 2) Open an Issue in the relevant Repo (either or both C++ SDK repos). - Include the Requirements/Milestones. 3) Once discussed and approved, PR's should target a designated branch off `develop` created by the team. - branch naming: - `github.com/cpp-xxxxx/feat/boards/esp32` 4) Update the designated branch as needed. 5) Once the final code is ready, open a PR to merge the designated branch to the primary repo's `develop` branch. ## Milestones A checklist of requirements needed to consider the implementation complete. - [ ] [Board Information](#Board-Information) - [ ] [External Libraries](#External-Libraries) - [ ] [C++ SDK Building and Flashing](#C-SDK-Building-and-Flashing) - [ ] [Unit Testing](#Unit-Testing) - [ ] [CI Support](#CI-Support) - [ ] [Example Sketch](#Example-Sketch) - [ ] [Documentation](#Documentation) Add any additional requirements or considerations to the ones listed above as-needed. --- example: ``` - [x] ESP32 - [x] Milestones - [x] External Libraries - [x] <Cross Platform Library> - [x] <Some Library> - [x] PlatformIO - [x] Arduino IDE - [x] <Some Other Library> - [x] Linux/macOS/Windows - [x] C++ SDK Building and Flashing - [x] Building - [x] Flashing - [x] Unit Testing - [x] Full Tests - [ ] Partial Tests - [x] CI Support - [x] PlatformIO - [x] Arduino IDE - [x] Example Sketch - [x] Documentation ``` --- ### Board Information List the architecture/board as well as its specs. example: ``` ESP32 - dev: Adafruit HUZZAH32 Feather - cpu: 240 MHz dual core - mem: 520 KB SRAM | 4 MByte flash - comm: USB, WiFi, BlueTooth, SPI, I2C, SDIO ``` --- ### External Libraries If required. For IoT libraries, they must be accessible to the PlatformIO and Arduino IDE library managers. Installation of the library must also be tied to a release tag. > _**Are any additional libraries needed?**_ > _**If so, which libraries?**_ > _**Is the additional library Cross Platform?**_ > _**If not, which platform does it target?**_ > _**Is the library available via the PIO and Arduino Library Managers?**_ > _**Is the library integration tied to a release version?**_ example: ``` <Some Library> - Required for: - [x] PlatformIO - [x] Arduino IDE - Available via: - [x] PlatformIO Library Manager - [x] Arduino IDE Library Manager ``` ### C++ SDK Building and Flashing > _**Does the binary build successfully for the target platform?**_ > _**Does the binary flast successfully to the target platform/does it fit?**_ --- ### Unit Testing > _**Does this work with our Unit tests as is?**_ > _**If not, does it require new unit tests?**_ > _**...does it only work with some of the unit tests?**_ This step is considered complete when test cases have been discussed, and all unit tests are passing successfully on the device. --- ### CI Support > _**Does it pass the Arduino IDE workflow successfully?**_ > _**Does it pass the PlatformIO workflow successfully?**_ > _**Are any additional workflows needed?**_ --- ### Example Sketch > _**Has a sketch been created?**_ > _**Does it build for the target platform?**_ > _**Does it flash to the target platform?**_ > _**Does the example sketch run successfully on the target platform?**_ --- ### Documentation > _**Has the relevant documentation been updated?**_ > _e.g. requirements, building, flashing, running, etc._ The final PR to merge the designated feature branch into `develop` should also include updates to the Changelog.