1 contributor
#ifndef _MY_SERIAL_H
#define _MY_SERIAL_H
#include "my_constants.h"
#define SERIAL_MAX_LINES 32
void serialHelp() {
Serial.println("Available commands: ");
Serial.println("- help: Display this screen");
Serial.println("- scan XX : Set scan time to XX (default: 10s)");
Serial.println("- window XX : Set scan window to XX (default: 192)");
Serial.println("- interval XX : Set scan window to XX (default: 200)");
Serial.println("- filter none : remove all filters");
Serial.println("- filter 00:11:22:33:44:55 : filter only on 00:11:22:33:44:55 (works on prefix too)");
}
void serialFilter(char *newFilter) {
String serialOut = "serialFilter() : ";
memset(gFilter,0,18);
strncpy(gFilter,newFilter,strlen(newFilter));
serialOut += gFilter;
if( 0 == strcmp(newFilter,"none") ) {
gNoFilter = true;
} else {
gNoFilter = false;
}
Serial.println(serialOut);
}
void serialScanTime(uint8_t newTime) {
String serialOut = "{\"command\": \"scan\", \"status\": { ";
serialOut += "\"value\": \""+String(newTime)+"\"";
serialOut += "}";
gScanTime = newTime;
Serial.println(serialOut);
}
void serialWindow(uint16_t newTime) {
String serialOut = "{\"command\": \"window\", \"status\": { ";
serialOut += "\"value\": \""+String(newTime)+"\"";
serialOut += "}";
gWindow = newTime;
Serial.println(serialOut);
}
void serialInterval(uint16_t newTime) {
String serialOut = "{\"command\": \"interval\", \"status\": { ";
serialOut += "\"value\": \""+String(newTime)+"\"";
serialOut += "}";
gInterval = newTime;
Serial.println(serialOut);
}
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 == strncmp(command,"filter",6) ) {
char *newFilter = (command+7);
serialFilter(newFilter);
} else if( 0 == strncmp(command,"scan",4) ) {
int newTime = atoi((command+5));
if( newTime < SCAN_TIME_MIN ) newTime = SCAN_TIME_MIN;
serialScanTime(newTime);
} else if( 0 == strncmp(command,"window",6) ) {
uint16_t newTime = atoi(&command[7]);
if( newTime < WINDOW_TIME_MIN ) newTime = WINDOW_TIME_MIN;
serialWindow(newTime);
} else if( 0 == strncmp(command,"interval",8) ) {
uint16_t newTime = atoi(&command[9]);
if( newTime < INTERVAL_TIME_MIN ) newTime = INTERVAL_TIME_MIN;
serialInterval(newTime);
} else {
Serial.println("{\"command\": \""+String(command)+"\", \"status\": \"error\" }");
}
}
}
#endif //_MY_SERIAL_H