#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