34 lines
718 B
C
34 lines
718 B
C
|
#pragma once
|
||
|
#include <Arduino.h>
|
||
|
|
||
|
class Args {
|
||
|
private:
|
||
|
String *str;
|
||
|
public:
|
||
|
Args(String *str) : str(str) {}
|
||
|
String operator[](int pos) {
|
||
|
char buf[64];
|
||
|
strncpy(buf, str->c_str(), sizeof(buf));
|
||
|
char *args = strtok(buf, " ");
|
||
|
while (pos > 0 && args != NULL) {
|
||
|
args = strtok(NULL, " ");
|
||
|
pos--;
|
||
|
}
|
||
|
if (args == NULL) {
|
||
|
return String();
|
||
|
}
|
||
|
return String(args);
|
||
|
}
|
||
|
};
|
||
|
|
||
|
struct CommandList;
|
||
|
|
||
|
struct Command {
|
||
|
using Executor = std::function<void(Args&, Print& output)>;
|
||
|
Executor func;
|
||
|
const char* name = NULL;
|
||
|
|
||
|
Command();
|
||
|
Command(const char* name, Executor func) : name(name), func(func) {}
|
||
|
};
|