// scrivi bac nel serial input
// prova anche scrivere una sequenza di caratteri differente
// solo se inserisci la sequenza bac questo nodo verrà interrogato
// se al posto di bac scrivi KGB
// allora dovrai inserire KGB nel serial input
// uint8_t miAspetto[] = "bac";
// se vuoi un protocollo più lungo commenta la precedenta
// e decommenta la seguente
uint8_t miAspetto[] = "#M>ab<";
uint16_t result = 0;
uint8_t lenCode = strlen(miAspetto);
bool haveQuestionedMe = false;
#include "serialin.h"
#define BUFF_SIZE 64
char buffer[BUFF_SIZE];
extern byte CRC8(const byte *data, size_t len);
const byte slaveId = 48;
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
SI_setBuffer(buffer, BUFF_SIZE);
if (SI_getError() == SI_SIZEBUFFER) {
Serial.println("errore: Dimensione del buffer troppo grande.");
}
Serial.println("hello world!");
}
char *line = nullptr;
struct SDP {
byte messageType;
byte devId;
byte LDP;
byte crc;
};
SDP sdp = {0, 0, 0, 0};
void loop() {
line = SI_read();
if (line) {
Serial.print("> ");
Serial.println(line);
if (line[0] == '#') {
sdp.messageType = line[1];
sdp.devId = line[2];
sdp.LDP = line[3];
sdp.crc = line[4];//CRC8(line, 4);
//crc = 181 non posso inviarlo dal serial monitor
Serial.println(sdp.crc);
Serial.print((char)180);
} else {
sdp = {0, 0, 0, 0};
}
if (sdp.messageType == 48) {
Serial.println("Message Broadcast");
} else if (sdp.devId == slaveId) {
Serial.println("have select me");
}
Serial.println(sdp.LDP);
Serial.println(sdp.crc);
}
}
#if(0)
void loop() {
result = 0;
// modificato == lenCode + 1
if ((haveQuestionedMe == false) && (Serial.available() == lenCode+1)) {
for (uint8_t i=0; i<lenCode-1; i++) {
result += (uint8_t)(miAspetto[i] - Serial.read());
Serial.println(result);
}
// per pulire il buffer serve un delay
while (true) {
delay(10);
int dummy = Serial.read();
if (dummy == -1)
break;
}
if (result == 0)
haveQuestionedMe = true;
}
if (haveQuestionedMe) {
Serial.println("sono stato interrogato");
haveQuestionedMe = false;
// faccio il mio lavoro, rispondo e ci metto t tempo
delay(250);
// e adesso torna in ascolto
}
}
#endif