#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