28 lines
942 B
Markdown
28 lines
942 B
Markdown
# NeoECU Firmware Coding Guidelines
|
|
|
|
These rules apply to the `CM7` engine-control firmware.
|
|
|
|
## Style
|
|
|
|
- Functions: `camelCase`
|
|
- Variables: `python_case`
|
|
- Constants and macros: `UPPER_CASE`
|
|
- Types: `python_case_t`
|
|
|
|
## Real-Time Code
|
|
|
|
- Do not allocate from the heap in the engine-control path.
|
|
- Prefer static task, buffer, and control-structure allocation.
|
|
- Keep ISRs short: capture data, update the minimum state, wake a task, return.
|
|
- Keep heavy validation, filtering, and scheduling logic in task context.
|
|
- Avoid avoidable copies, indirection, and generic `void *` plumbing.
|
|
|
|
## Structure
|
|
|
|
- Keep one source file per feature or subsystem where practical.
|
|
- Put shared engine state in `global_state.h`.
|
|
- Put shared helper macros in `macros.h`.
|
|
- Prefer explicit state machines over implicit control flow.
|
|
- Make ISR-to-task ownership obvious from names and file placement.
|
|
- Use named constants and enums instead of magic numbers.
|