fakeBeacon / serial.h /
68b6b43 5 years ago
1 contributor
81 lines | 2.533kb
#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