Explication FR

Bonjour tout le monde ^^ j’espère ne pas vous dérangez j'aimerais que quelqu'un m'explique chaque ligne de ce code avec un langage assez facile (ne vous inquiétez pas j'ai quand même des base) :

include "Arduino.h"

uint8_t calc_checksum(uint8_t* data_ptr, uint16_t length) { uint8_t checksum = 0; while(length--) checksum ^= *data_ptr++; return checksum; }

Merci !!!

Cette fonction fait le ou exclusif des éléments pointés par data_ptr sur length éléments et elle retourne le résultat

oui justement je voudrais comprendre ce que sont ces 'data_ptr' length ect je sais que ce programme permet de calculer le checksum (dans mon cas en tout cas) mais je sais pas comment ce programme procède car je ne suis pas bon en ARDUINO ^^ merci de ta réponse cela dit !

uint16_t ength est une simple variable, en l'occurrence un entier (int) non signé (u pour unsigned) de 16 bits, qui attend un nombre (que je suppose être le nombre de variables dont il faut faire le checksum). Elle est évaluée et décrémentée à chaque boucle while.

while(length--){}

est équivalent à

while (length){
  length--;
}

uint8_t* data_ptr est un [u]pointeur[/u] vers un entier non signé de 8 bits. C'est à dire que lors de l'appel de la fonction, on passera, non pas une variable comme c'est la plupart du temps le cas

checksum(var1, var2);

mais l'adresse d'une variable:

checksum(&var1, var2);

Ainsi data_ptr contient l'adresse mémoire d'une variable, et *data_ptr la valeur qui est mémorisée à cette adresse mémoire.

Je t'invite à faire une recherche sur les pointeurs en C++ si tu veux en savoir plus. Ne pas hésiter à lire plusieurs articles, tous ne sont pas aussi pédagogues. J'ai compris avec celui-là: Pointeurs C++

Merci beaucoup de ta réponse troisiemetype , un peu technique serte , mais il en faut bien :smiley:
sa m’aide beaucoup , merci encore ^^ !