# Protocole between FPGA and ESP32 Ce protocole permet la communication entre le FPGA et l'ESP32 via UART, principalement pour transférer des données ou des commandes de contrôle simples. --- ## Structure générale des trames Chaque trame est encadrée par des caractères spéciaux : - **ESCAPE** (Before special char) : `0x1B` - **STX** (Start of Text) : `0x02` - **ETX** (End of Text) : `0x03` **Format de trame :** ``` 0x02 OP_CODE VALUE_1 VALUE_2 ... 0x1B 0x03 ``` --- ## Détail des commandes | OP_CODE | Nom | Description | Format | |---------|---------------------------|---------------------------------------------------------|-------------------------------------------------------------------------------| | 0x00 | Error | Indique une erreur | `0x02 0x00 [ERROR_CODE] 0x1B 0x03` | | 0x01 | Wi-Fi State | Indique l'état du Wi-Fi (0 = down, 1 = up) | `0x02 0x01 [0x00/0x01] 0x1B 0x03` | | 0x02 | Connection Update | Notification de connexion ou déconnexion d’un appareil | `0x02 0x02 [0x00/0x01] [MAC_ADDR (6 bytes)] 0x1B 0x03` | | 0x03 | Request Connected Devices | Demande la liste des appareils connectés | `0x02 0x03 0x1B 0x03` | | 0x04 | Send Connected Devices | Envoie la liste des appareil connecter | `0x02 0x04 [LEN (1 byte)] [MAC_LIST (n bytes)[MAC_ADDR (6 bytes)]] 0x1B 0x03` | | 0x05 | Send Message | Envoie un message à un appareil connecté via son MAC | `0x02 0x05 [MAC_ADDR (6 bytes)] [LEN (1 byte)] [MESSAGE] 0x1B 0x03` | --- ## Détail des code erreur | ERROR_CODE | Description | |---------------|---------------------------------------------------------------| | 0x00 | | | 0x01 | Unknow command | | 0x02 | Args error | | 0x03 | Invalid Trame | | 0x04 | Too long trame | --- ## Détails des champs - **MAC_ADDR** : 6 octets représentant l’adresse MAC du destinataire. - **LEN** : Longueur du message à envoyer (1 octet). - **MESSAGE** : Suite d’octets de taille `LEN` représentant le message (binaire ou texte selon le contexte). --- ## Exemples ### Exemple 1 : Wi-Fi actif ``` 0x02 0x01 0x01 0x03 ``` → Indique que le Wi-Fi est actif. ### Exemple 2 : Connexion d'un appareil ``` 0x02 0x02 0x01 0x12 0x34 0x56 0x78 0x9A 0xBC 0x03 ``` → Un appareil avec l’adresse MAC `12:34:56:78:9A:BC` vient de se connecter. ### Exemple 3 : Envoi de message ``` 0x02 0x04 0x12 0x34 0x56 0x78 0x9A 0xBC 0x05 0x48 0x65 0x6C 0x6C 0x6F 0x03 ``` → Envoi du message `"Hello"` à l’appareil `12:34:56:78:9A:BC`. --- ## Remarques - Aucune vérification CRC/Checksum n’est ajoutée pour le moment (possible amélioration future). - Le protocole est extensible : il suffit d’ajouter de nouveaux OP_CODEs au besoin.