- About This
- Languages
- Motivation
- MVP Requirements
- Design Decisions
- Formatting Guidelines
- Milestones
- Processes
- Folder Structure
This is the code repository for staging the Student Organisation for Aerospace Research (SOAR's) C++ rewrite.
The original code in this repository was written in C, The old repository can be found here.
By default we are using the STMCubeIDE.
Use the _IDE
folder to add support for your IDE of choice if needed.
Make sure to update the .gitignore
.
- Layout desired requirements
- Design and document architecture
- Diagram
- Reference other teams (if possible)
- Scope MVP
- Before September 6th (Classes begin)
- Build MVP
- PREREQ: Merge A3.3, Clang Format
- Integration test on hardware
- Full SW team approval
- Create tasks and documentation to update each code section
- Create on-boarding presentation
- What it is
- How it works
- Why decisions were made
- Merge MVP into master
- Design Freeze
- End of August
- Design Review
- July 30th
- Testing Schedule
- Build MVP
- Presentation
- Mid September
- Competition Data
- June 2023
The most relevant information from both documents is distributed in this repo.
Embedded software is written primarily in C/C++, using CMSIS with FreeRTOS as the underlying operating system.
Scripts and Tools are written in various languages, primarily Python.
Diagrams are designed with a variety of software, code based diagrams are written in PlantUML, other diagrams are designed in Diagrams.net
- Readable
- Robust
- Modular
- Consistent
- Easier for new members
- Documented from the start
- Test Driven Design
- Compile flags/
#ifdef
flag for solid vs hybrid. - Base Task Communication
- UART poll and debug logging
- Sensor log output over UART5
- Queue
- Abstractions for important systems
- Class Diagrams
- Module
- Well documented
- Testing Framework
- Tasks are contained and communicate using queues.
- Possibly look into a priority queue to handle queues getting too full.
- Abstract Base Classes for things like
Sensor
orTask
. - Pointer hierarchy
- References
- Smart Pointers
- Beware RTOS support
- Pointers
- Reduce cognitive overhead by documenting your thought process
for complicated tasks.
- Especially in non-trivial ifs or big loops.
- Functions are lowercase.
- Class related functions are uppercase.
- Infinite Loops are written with
while(1)
as oppose tofor(;;)
.
- Architecture Design Complete
- MVP Complete
- Rest of Codebase complete
- This should be improved in the future using a rename script, or by modifying CMake file if necessary. There may be a setting in CubeIDE
- Whenever you change the .ioc file the following must be done
- Rename Core/main.cpp to Core/main.c
- Generate code from .ioc change
- Rename back to Core/main.cpp
- The
Core
directory contains code primarily generated by STM32CubeIDE, or for other Middlewares such as FreeRTOS. - Most of the written code should go into
Components
under the most appropriate sub-directory.