1 contributor
#ifndef _SERIAL_H
#define _SERIAL_H
#include "beacon.h"
#define SERIAL_MAX_LINES 32
void serialHelp() {
Serial.println("Available commands: ");
Serial.println("- help: Display this screen");
Serial.println("- beacon: Display beacon details");
Serial.println("- type X: Set type of Beacon");
}
void serialBeacon() {
String serialOut = "{\"command\": \"beacon\", \"status\": { ";
serialOut += "\"mac\": \""+String(macStr)+"\", ";
serialOut += "\"instance\": \""+String(instanceStr)+"\", ";
serialOut += "\"count\": \""+String(beacon_count)+"\", ";
serialOut += "\"type\": \""+beaconTypeStr+"\"";
serialOut += "}";
serialOut += "}";
Serial.println(serialOut);
}
void serialType(EN_BEACON_TYPE type) {
beacon_type = type;
switch( type ) {
case EN_BEACON_TYPE_entry:
beaconTypeStr="Entry ";
break;
case EN_BEACON_TYPE_hazard:
beaconTypeStr="Hazard ";
break;
case EN_BEACON_TYPE_safe:
beaconTypeStr="Safe ";
break;
case EN_BEACON_TYPE_exit:
beaconTypeStr="Exit ";
break;
case EN_BEACON_TYPE_other:
beaconTypeStr="Other ";
break;
default:
beaconTypeStr="Safe ";
break;
}
String serialOut = "{\"command\": \"beacon\", \"status\": { ";
serialOut += "\"type\": \""+String(beaconTypeStr)+"\"";
serialOut += "}";
Serial.println(serialOut);
EEPROM.write(0, beacon_type);
EEPROM.commit();
}
void pollSerial() {
if (Serial.available() > 0) {
char command[SERIAL_MAX_LINES];
int sizeCommand = Serial.readBytesUntil('\r', command, sizeof(command) / sizeof(char) );
command[sizeCommand]='\0';
if(command[sizeCommand-1]=='\n') command[sizeCommand-1]='\0';
Serial.println("[CMD] received: "+String(command));
if( 0 == strcmp(command,"help") ) {
serialHelp();
} else if( 0 == strcmp(command,"beacon") ) {
serialBeacon();
} else if( 0 == strcmp(command,"type 1") ) {
serialType(EN_BEACON_TYPE_entry);
} else if( 0 == strcmp(command,"type 2") ) {
serialType(EN_BEACON_TYPE_exit);
} else if( 0 == strcmp(command,"type 3") ) {
serialType(EN_BEACON_TYPE_hazard);
} else if( 0 == strcmp(command,"type 4") ) {
serialType(EN_BEACON_TYPE_safe);
} else if( 0 == strcmp(command,"type 5") ) {
serialType(EN_BEACON_TYPE_other);
} else {
Serial.println("{\"command\": \""+String(command)+"\", \"status\": \"error\" }");
}
}
}
#endif //_SERIAL_H