:)
Dependencies: MbedJSONValue DebounceIn TextLCD USBDevice mbed WebSocketClient cc3000_hostdriver_mbedsocket Adafruit_LEDBackpack_2
Revision 12:c4b046975527, committed 2014-12-02
- 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;