Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- typedef struct {
- unit8_t num;
- char** name;
- char** value;
- } HttpParams;
- typedef struct {
- char* name;
- void (*fn)(HttpParams*);
- } ActionCallback;
- #define MAX_CB 10
- ActionCallback cb[MAX_CB];
- uint8_t numCb = 0;
- void ShowParams(HttpParams* params) {
- for (int i = 0; i < params->num; ++i) {
- Serial.print(params->name[i]);
- Serial.print(": ");
- Serial.println(params->value[i]);
- }
- }
- void LedFunc(HttpParams* params) {
- for (int i = 0; i < params->num; ++i) {
- int val = strcmp(params->value[i], "LOW") == 0 ? 0 : 1;
- int pin = 0;
- if (strcmp(params->name[i], "P3") == 0) {
- pin = 3;
- } else if (strcmp(params->name[i], "P5") == 0) {
- pin = 5;
- }
- if (pin > 0) {
- digitalWrite(pin, val);
- }
- }
- }
- void registerFunc(char* key, void (*fn)(HttpParams*)) {
- cb[numCb].name = key;
- cb[numCb].fn = fn;
- }
- void setup() {
- Serial.begin(115200);
- registerFunc("echo", &ShowParams);
- registerFunc("led", &LedFunc);
- }
- void loop() {
- //stuff
- }
Add Comment
Please, Sign In to add comment