A modular embedded C simulation of avionics communication and control software. Includes both modular simulation and task-based real-time extension
- Language: C
- Architecture: Modular Embedded System
- Protocols: ARINC429, CAN
- Control: PID Altitude Hold
- Testing: Unit Tests
flowchart LR
S[Altitude Sensor<br/>Sensor Simulator] -->|ARINC429 Message| A[ARINC429 Driver]
A --> B[System Message Bus]
B --> F[Flight Control Unit<br/>PID Controller]
B --> M[Monitoring Module]
F -->|CAN Message| C[CAN Bus]
C --> D[Actuator Driver]
C --> T[Telemetry Node]
D --> E[Elevator Actuator]
-
ARINC429 encoding and decoding
-
parity validation
-
CAN bus queue simulation
-
PID-based altitude hold controller
-
modular subsystem structure
-
unit tests
This project can be compiled with a C compiler or Visual Studio C++ compiler.
Build main application:
cl /EHsc /I include src\main.c src\arinc429.c src\can_bus.c src\flight_control.c src\sensor_sim.c src\actuator.c src\system_bus.cBuild tests:
- ARINC429
cl /EHsc /I include tests\test_arinc429.c src\arinc429.c- CAN test
cl /EHsc /I include tests\test_can.c src\can_bus.c
- Flight control test
cl /EHsc /I include tests\test_flight_control.c src\flight_control.c
Includes tests for:
-
ARINC429
-
CAN bus
-
flight control
Example simulation output:
Decoded altitude from ARINC429: 1200 ft
Target altitude: 1500.0 ft
Altitude error: 300.0 ft
Actuator elevator command: 81
Unit test status:
test_arinc429: PASS
test_can: PASS
test_flight_control: PASS
A task-based simulation was added to approximate real-time embedded behavior.
The system includes:
- Sensor task (100 ms)
- Flight control task (50 ms)
- Actuator task (100 ms)
Tasks communicate using message queues and run concurrently using threads.
This demonstrates a simplified RTOS-style architecture.
- AFDX (Avionics Ethernet) communication simulation
- ARINC653 partitioning
- RTOS-based task scheduling (QNX / FreeRTOS)
- Extended Kalman Filter navigation
Designed with safety-oriented embedded software practices such as explicit status codes, defensive checks, modular interfaces, requirement-tagged comments, and unit tests.The simulator is inspired by avionics software architecture, the repo uses DO-178-like practices but not a certified DO-178 artifact.
Vasan Iyer
Embedded Software / Flight Controls Engineer
Focus areas:
- Embedded C
- Flight controls and flight dynamics
- Avionics protocols: ARINC 429, CAN
- Navigation and control
- PID-based control systems
GitHub: https://github.com/Vaiy108