:)

Dependencies:   MbedJSONValue DebounceIn TextLCD USBDevice mbed WebSocketClient cc3000_hostdriver_mbedsocket Adafruit_LEDBackpack_2

Files at this revision

API Documentation at this revision

Comitter:
jn80842
Date:
Tue Dec 02 23:55:01 2014 +0000
Parent:
8:725d938b301b
Child:
13:209da1dcb6e1
Commit message:
add in json formatting code

Changed in this revision

Adafruit_LEDBackpack_2.lib Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
--- a/Adafruit_LEDBackpack_2.lib	Mon Dec 01 18:27:08 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-http://developer.mbed.org/users/ddrew73/code/Adafruit_LEDBackpack_2/#0491b3f9a639
--- a/main.cpp	Mon Dec 01 18:27:08 2014 +0000
+++ b/main.cpp	Tue Dec 02 23:55:01 2014 +0000
@@ -6,7 +6,6 @@
 #include "DebounceIn.h"
 #include "cc3000.h"
 #include "Websocket.h"
-#include "MbedJSONValue.h"
 
 //Debug
 Serial pc(USBTX, USBRX); // tx, rx
@@ -64,7 +63,44 @@
                          "SSID", "PASSWORD", WPA2, false);
 Websocket ws("ws://sockets.mbed.org/ws/toastboard/rw");
 
-MbedJSONValue demo;
+// json encoding
+std::string s;
+std::string t;
+std::back_insert_iterator<std::string> json_str = std::back_inserter(t);
+char row[1] = ""; // holder for row tokens
+char rowvoltage[4] = ""; // holder for voltage values
+
+void jsoncopy(const std::string& s, std::back_insert_iterator<std::string> oi) {
+    std::copy(s.begin(), s.end(), oi);
+}
+
+void add_to_json(const std::string& s, std::back_insert_iterator<std::string> oi) {
+    // this chunk of code lifted from the MbedJSONValue library
+    for (std::string::const_iterator i = s.begin(); i != s.end(); ++i) {
+        switch (*i) {
+#define MAP(val, sym) case val: jsoncopy(sym, oi); break
+                MAP('"', "\\\"");
+                MAP('\\', "\\\\");
+                MAP('/', "\\/");
+                MAP('\b', "\\b");
+                MAP('\f', "\\f");
+                MAP('\n', "\\n");
+                MAP('\r', "\\r");
+                MAP('\t', "\\t");
+#undef MAP
+            default:
+                if ((unsigned char)*i < 0x20 || *i == 0x7f) {
+                    char buf[7];
+                    sprintf(buf, "\\u%04x", *i & 0xff);
+                    copy(buf, buf + 6, oi);
+                } else {
+                    *oi++ = *i;
+                }
+                break;
+        }
+    }
+}
+
 
 int main()
 {
@@ -229,18 +265,30 @@
                } } //END OF ROWSCAN FOR LOOP
                 
                 //STUFF INTO JSON FORMAT
+                add_to_json("{\"vddval\":",json_str);
+                sprintf(rowvoltage,"%.f",vddval);
+                add_to_json(rowvoltage,json_str);
+                add_to_json(", \"selected\":",json_str);
+                selected = rowselect;
+                if (colselect == 1){
+                    selected = selected+24;
+                }
+                sprintf(rowvoltage,"%d",selected);
+                add_to_json(", \"rows\": [",json_str);
+                
                 char str[1];
                 for (int i= 0; i < 48; i++) {
-                sprintf(str, "%d", i);
-                demo[str] = clientdata[i];
+                    if (i != 0) {
+                        add_to_json(",",json_str);
                     }
-                demo["vdd"] = vddval;
-                demo["rowval"] = rowval;
-                selected = rowselect;
-                    if (colselect == 1){
-                      selected = selected+24;
-                      }
-                demo["selected"] = selected;
+                    add_to_json("{\"",json_str);
+                    sprintf(str, "%d", i);
+                    add_to_json(str,json_str);
+                    add_to_json("\":",json_str);
+                    sprintf(rowvoltage,"%.f",clientdata[i]);
+                    add_to_json(rowvoltage,json_str);
+                    add_to_json("}",json_str);
+                }
                 
                 
                 moved = 0;