Bonjour,
Je réalise un project embarqué et cette fois en C au lieu d’Ada où les problèmes de boutisme sont très bien gérés par le compilateur. Je travaille sur une STM32F7 (ARM M7) qui est donc en petit boutisme.
Je reçois un paquet UDP dont la charge utile est encodée en gros boutisme. Il faut donc que je "convertisse" ces données pour mon microcontrôleur… Seulement, sauf incompréhension de ma part, il me semblait que le boutisme ne s’appliquait qu’à l’échelle de l’octet (et que donc que l’ordre des bits était conservé). Or ici, en utilisant le debugger de mon microcontrôleur je remarque que lorsque que le premier octet de mon paquet est 0x21 (vérifié sur Wireshark) la valeur lue par le microcontrôleur est différente (je ne me souviens plus de cette valeur…) et j’ai beau essayer de faire un calcul savant pour essayer de retrouver la valeur je me perd de plus en plus rien ne fais sens aha.
En gros, en analysant la payload de mon message UDP avec le debugger (pour ceux qui connaissent : lorsque LwIP appel ma callback UDP, j’analyse la payload du pbuf) les valeurs n’ont rien a voir avec mon paquet sur Wireshark. Pourtant l’adresse IP, le port et la taille du paquet lus par LwIP sont corrects (la bibliothèque utilise ntohs
).
Ma question est comment je fais pour lire ce tableau d’octets qui est encodé en gros boutisme ?
// Sur wireshark message comme par 0x21 0x08
uint8_t * message = pbuf->payload; // Les valeurs de message n'ont aucun sens !!
// message[0] /= 0x21 !!!
Merci pour votre aide