47 _newlineChar(newlineChar),
52 _delimiter[0] = delimiterChar;
69 _commandList = (SerialTerminalCallback *)realloc(_commandList,
70 sizeof(SerialTerminalCallback) * (_numCommands + 1));
74 _commandList[_numCommands].function =
function;
90 _defaultHandler =
function;
100 bool matched =
false;
104 while (Serial.available() > 0) {
106 c = (char)Serial.read();
109 if (c == _newlineChar) {
111 command = strtok_r(_rxBuffer, _delimiter, &_lastPos);
113 if (command != NULL) {
114 for (
int i = 0; i < _numCommands; i++) {
118 (*_commandList[i].function)();
124 if (!matched && (_defaultHandler != NULL)) {
125 (*_defaultHandler)(command);
129 }
else if (isprint(c)) {
132 _rxBuffer[_rxBufferIndex++] = c;
133 _rxBuffer[_rxBufferIndex] =
'\0';
156 return strtok_r(NULL, _delimiter, &_lastPos);
167 return strtok_r(NULL,
"", &_lastPos);
void setDefaultHandler(void(*function)(const char *))
Set default callback handler for unknown commands.
void clearBuffer()
Clear serial receive buffer.
char * getNext()
Get next argument.
void addCommand(const char *command, void(*function)())
Add command with callback handler.
#define ST_NUM_COMMAND_CHARS
Number of command characters.
void readSerial()
Read from serial port.
#define ST_RX_BUFFER_SIZE
Size of the serial receive buffer in bytes (Maximum length of one command plus arguments) ...
Serial terminal library for Arduino.
SerialTerminal(char newlineChar='\n', char delimiterChar=' ')
SerialTerminal constructor.
char * getRemaining()
Get all remaining characters from serial buffer.