uart-proto-detector
Bibliothèque universelle
no_stdpour la détection et le découpage de trames UART sur systèmes embarqués.
Fonctionnalités
no_std— compatible avec tous les environnements bare-metal (ARM Cortex-M, RISC-V, Xtensa…)- Zéro dépendance externe : aucun HAL imposé, aucun allocateur requis
- Deux stratégies de longueur : taille fixe ou octet de longueur dynamique
- Gestion d'erreurs typée via
ParserError(pas de panic en production) - CRC volontairement exclu : chaque protocole définit son propre algorithme ; la validation se fait dans le code appelant
Installation
# Cargo.toml
[]
= "0.1"
Utilisation rapide
use ;
// Protocole avec en-tête fixe [0xAA, 0x55] et trame de 8 octets
let config = ParserConfig ;
let mut parser = new;
// Dans votre ISR ou boucle de lecture UART :
Stratégies de longueur
Fixed(n)
La trame fait toujours n octets (en-tête inclus).
Fixed
LengthByte { index, offset }
Un octet situé à la position index dans le buffer indique la taille du payload.
La longueur totale est calculée ainsi :
longueur_totale = buffer[index] + offset
Exemple : protocole [HDR1, HDR2, LEN, ...payload..., CRC]
// index = 2 (position de LEN), offset = 3 (HDR1 + HDR2 + octet LEN lui-même)
LengthByte
Validation CRC
La bibliothèque retourne la trame brute complète. La vérification du CRC est intentionnellement laissée au code appelant :
Ok =>
Gestion des erreurs
Toutes les erreurs réinitialisent automatiquement le parser.
Constantes configurables
| Constante | Valeur par défaut | Description |
|---|---|---|
BUFFER_SIZE |
128 |
Taille du buffer d'accumulation en octets |
Pour modifier BUFFER_SIZE, patchez la constante dans la bibliothèque ou ouvrez
une issue pour demander le support d'une feature de configuration générique.
Licence
Copyright (C) 2026 Jorge Andre Castro
Distribué sous les termes de la GNU General Public License v2.0 ou ultérieure.