From 9cf768dc8e10c35d34c87d8f03d4436c34a84013 Mon Sep 17 00:00:00 2001 From: Patrick Balsiger Date: Sat, 30 Jun 2018 14:59:23 +0200 Subject: [PATCH] parse json --- src/examples/illucat/Illucat.h | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/src/examples/illucat/Illucat.h b/src/examples/illucat/Illucat.h index 83d86f7..56c1678 100644 --- a/src/examples/illucat/Illucat.h +++ b/src/examples/illucat/Illucat.h @@ -11,8 +11,8 @@ using namespace std::placeholders; #define ARRAY_LENGTH(array) sizeof(array)/sizeof(array[0]) -enum PIXEL_MODES {RED = 0xFF0000, GREEN = 0x00FF00, YELLOW = 0xffff00, BLUE = 0x0000FF, ORANGE = 0xffa500}; -int CAT_MODES[] = {RED, GREEN, YELLOW, BLUE, ORANGE}; +enum PIXEL_MODES {BLACK = 0x000000, RED = 0xFF0000, GREEN = 0x00FF00, YELLOW = 0xffff00, BLUE = 0x0000FF, ORANGE = 0xffa500}; +int CAT_MODES[] = {BLACK, RED, GREEN, YELLOW, BLUE, ORANGE}; struct NeoPixelConfig { int pin; @@ -25,6 +25,7 @@ class Illucat : public Sprocket { MeshNet* net; NeoPattern* pixels; int currentMode; + Illucat(SprocketConfig cfg, NeoPixelConfig pixelCfg) : Sprocket(cfg) { pixels = new NeoPattern(pixelCfg.length, pixelCfg.pin, NEO_GRB + NEO_KHZ800, [](int pixels){}); pixels->begin(); @@ -38,15 +39,24 @@ class Illucat : public Sprocket { void messageReceived( uint32_t from, String &msg ) { Serial.printf("illucat: received from %u msg=%s\n", from, msg.c_str()); - changeMode(msg.c_str()); + StaticJsonBuffer<200> jsonBuffer; + JsonObject& root = jsonBuffer.parseObject(msg); + if (!root.success()) { + Serial.println("parseObject() failed"); + return; + } + changeMode(root["severity"]); + /* if(root["action"] == "pressed") { + } + if(root["action"] == "dial") { + changeMode("0"); + } */ } void changeMode(const char *mode){ currentMode = atoi(mode); Serial.println(currentMode); - //if(ARRAY_LENGTH(CAT_MODES) >= (int) mode){ - pixels->ColorSet(CAT_MODES[currentMode]); - pixels->show(); - //} + pixels->ColorSet(CAT_MODES[currentMode]); + pixels->show(); } void setHexColor(const char *hex){ int r, g, b;