Ten projekt wykorzystuje w pełni zautomatyzowany potok (pipeline) budowania definicji MAVLink. Każda zmiana w pliku simba.xml jest automatycznie procesowana, wersjonowana i wydawana jako gotowa biblioteka.
Proces jest podzielony na dwa etapy (Joby) w GitHub Actions:
- Semantic Release (Analiza):
- Analizuje historię commitów od ostatniego wydania.
- Automatycznie wyznacza nowy numer wersji (SemVer).
- Generuje plik
CHANGELOG.md. - Tworzy nowy Tag i Release na GitHubie.
- Mavlink Build (Kompilacja):
- Odpala się tylko wtedy, gdy Job 1 wykryje istotne zmiany.
- Generuje nagłówki C, bibliotekę Python oraz skrypt Wireshark (LUA).
- Pakuje wszystko do ZIP i dołącza do wydania (Release Assets).
System opiera się na Conventional Commits. Aby automat poprawnie rozpoznał zmianę, tytuł Twojego Commita lub Pull Requesta musi zaczynać się od odpowiedniego prefixu.
| Prefix | Rodzaj zmiany | Skutek (SemVer) | Przykład |
|---|---|---|---|
feat: |
Nowa funkcjonalność | Podbija Minor (np. 1.1.0) | feat: dodano telemetrię temperatury |
fix: |
Poprawka błędu | Podbija Patch (np. 1.0.1) | fix: poprawka ID wiadomości IMU |
feat!: |
Zmiana niszcząca (Breaking) | Podbija Major (np. 2.0.0) | feat!: zmiana struktury nagłówka radia |
chore: |
Zmiany techniczne/dokumentacja | Brak nowej wersji | chore: aktualizacja README |
- Zaimplementuj zmiany w pliku
simba.xml. - Wyślij zmiany na branch typu
feature/lubfix/. - Otwórz Pull Request do gałęzi
main. - Upewnij się, że tytuł PR jest zgodny z powyższą tabelą (np.
feat: add pressure sensors). - Zrób Merge (zalecany Squash and Merge).
- Po ok. 2 minutach sprawdź zakładkę Releases w repozytorium – znajdziesz tam gotowe biblioteki.
W każdym Release znajdziesz:
simba_mavlink_vX.Y.Z.zip– Pełna paczka (C, Python, LUA).simba_dialects.py– Samodzielny dialekt do użycia w skryptach Python (pymavlink).simba_mavlink_wireshark.lua– Wtyczka do Wiresharka do debugowania ramek na żywo.simba.xml– Kopia definicji użytej do budowy danej wersji.
- Protokół: MAVLink 2.0 (ustawione w
release.yml). - Zależności:
pymavlink,lxml. - Standard:
--strict-units(wymusza poprawne jednostki w definicjach).
This repository contains the MAVLink dialect definition for the Simba rocket system. MAVLink is a lightweight, header-only message marshaling library for microcontrollers.
The Simba MAVLink dialect extends the standard MAVLink protocol with custom messages and enumerations specifically designed for rocket telemetry and control systems. It includes definitions for:
- Rocket flight states and actuator control
- Sensor data (IMU, GPS, temperature, pressure)
- Ground station commands and telemetry
- Radio link status monitoring
simba.xml- Main dialect definition with custom messages and enumssimba_radio.xml- Radio status message definition (included in main dialect)bin/- Directory for generated MAVLink libraries (currently empty)
For example:
- If a field comment shows
<!-- temp = float * 10 -->, it means the sender multiplied the temperature by 10 before sending - To get the actual temperature value, you must divide the received field by 10
<!-- pressure = float * 10 -->means divide received pressure by 10- IMU scaling factors are documented in the message comments
Always check the field comments and apply the inverse operation for decoding.
- SIMBA_TANK_TEMPERATURE (ID: 69) - Tank temperature sensors
- SIMBA_TANK_PRESSURE (ID: 70) - Tank pressure sensor
- SIMBA_IMU (ID: 71) - IMU data with scaling factors
- SIMBA_GPS (ID: 72) - GPS position data
- SIMBA_ROCKET_HEARTBEAT (ID: 73) - Rocket system status
- SIMBA_MAX_ALTITUDE (ID: 75) - Maximum recorded altitude
- SIMBA_COMPUTER_TEMPERATURE (ID: 76) - Computer temperatures and resource usage
- SIMBA_GS_HEARTBEAT (ID: 74) - Ground station commands
- SIMBA_ACTUATOR_CMD (ID: 147) - Direct actuator control (testing only)
- RADIO_STATUS (ID: 109) - Radio link status and quality metrics
- SIMBA_ROCKET_STATE - Rocket flight phases from initialization to landing
- SIMBA_ACTUATOR_FLAGS - Bitmask for rocket actuators (valves, servos, cameras)
- SIMBA_GS_FLAGS - Bitmask for ground station command buttons
- Include this dialect in your MAVLink implementation
- Generate MAVLink libraries using the official MAVLink generator
- Use the custom message IDs and enums in your rocket firmware and ground station software
- Remember to apply proper scaling when decoding received messages
- MAVLink protocol (https://mavlink.io/)
- MAVLink generator tools for code generation
[Add appropriate license information here]
[Add contribution guidelines here]