ESP32 sentCallBack & receiveCallBack, si ma quanti?

Salve ragazzi, ho una domanda apparentemente stupida in merito alle funzioni di sentCallBack e receiveCallBack dell'ESP32.
Quanti ne posso registrare??? solo uno o più di uno?
Scusate se vi ho sparato subito la domanda, ma adesso faccio un breve passo indietro e mi spiego meglio.
Vorrei mettere in comunicazione 3 ESP32 con protocollo ESP-NOW. Chiamiamo i 3 ESP32 con i nomi A,B e C
A deve ricevere ed inviare una struttura di dati (pochi byte niente di che) con B
A deve ricevere una struttura di dati diversa da quella utilizzata con B da C (senza mai inviare nulla a C, tre float)
Di qui la mia domanda...
Quanti

esp_now_register_send_cb(sentCallback);
esp_now_register_recv_cb(receiveCallback);

posso registrare?
Presuppongo che se aggiungo tipo

esp_now_register_send_cb(sentCallback1);
esp_now_register_recv_cb(receiveCallback1);

esp_now_register_send_cb(sentCallback2);
esp_now_register_recv_cb(receiveCallback2);

il secondo va a sovrascrivere il primo. Intuisco bene o sbaglio miseramente?
Grazie in anticipo.

EDIT: ovviamente il problema me lo sto ponendo sull'ESP32 A

EDIT2: ragionando sul fatto che esp_now_register_send_cb(SCB) e esp_now_register_recv_cb(RCB) sono delle funzioni presuppongo che non si possono registrare diversi SCB/RCB per diversi tipi di dati, o meglio dovrei variare ogni volta che ricevo i dati in base all'ESP32 che sta comunicando, cosa impossibile perché le comunicazioni sono asincrone. Questo mi induce a pensare che devo creare un unica struttura di dati per tutti indipendentemente per chi o da chi sto ricevendo i dati. Questo non mi impedisce di creare due strutture di dati da riempire in base per chi o da chi li stia ricevendo/trasmettendo...
Giusto?

A che serve registrare più funzioni di callback?
A parte che non avrebbe senso: le funzioni di CB possono essere associate all'evento di TX (dopo che è stato eseguito e quindi già sai a chi inviare) oppure di RX (non avresti modo di sapere CHI sta trasmettendo prima di esaminare il payload).

Semplicemente quando ricevi i dati, li elabori e poi agisci di conseguenza.
Io creerei un'unica struct con tutto quello che ti serve; hai disponibile un payload massimo di 250 byte ampiamente sufficiente per le tue esigenze.

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.