Comportamento anomalo su wokwi

Al momento non posso provare il codice sulla scheda fisica.

Questa porzione di codice quando abilitata funziona:

// stesso lavoro di ba_to_strx()
  // ma questo funziona
  char *p = str_buff;
  for (uint8_t i=0; i<16; i++) {
      sprintf(p, "%02x", bas[i]);
      p += 2;
  }

  Serial.println(str_buff);

e stampa correttamente 25f9e794323b453885f5181f1b624d0b
Io non ci vedo errori.

Lo stesso codice, ma messo dentro una funzione, compila senza errori ma da un output errato:

     ba_to_strx(str_buff, bas, sizeof(bas));
     Serial.println(str_buff);

output errato: 25ffffff323b4538ffff181f1b624d0b

Per testarlo basta:
#if(1) stampa errata
#if(0) stampa corretta

Cosa fanno le due funzioni?
ba_to_strx() converte un byte array in c string hex
strxX_to_ba() converte c string hex in byte array

Richiesta:
Ho sbaglio io senza capirlo oppure c'è un bug.
Potete provare lo sketch su arduino uno o altro per verificare se il bug
riguarda wokwi o altro.

Ciao.

Non chiedermi perchè, non saprei risponderti, ma è sbagliata la definizione della
ba_to_strx(), se la cambi in:

void ba_to_strx(char *s, const uint8_t *ba, const uint16_t ba_size);

funziona!

Ciao, Ale.

Mannaggia, non vedevo quel char *, che messo li non ci sta proprio. perché ba è un array di uint8_t, che rincoglionito che sono. :face_exhaling:

Grazie, ciao.