Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: MbedJSONValue mbed
Diff: main.cpp
- Revision:
- 2:5c531dfe890b
- Parent:
- 1:2b61ae8e6f94
- Child:
- 3:9c3169e549f0
diff -r 2b61ae8e6f94 -r 5c531dfe890b main.cpp
--- a/main.cpp Sun Feb 04 11:43:12 2018 +0000
+++ b/main.cpp Sun Feb 04 15:24:26 2018 +0000
@@ -93,7 +93,12 @@
// #defines //
///////////////
-#define DEBUG_MOD1
+//#define DEBUG_MOD1 // json packet recognise
+//#define DEBUG_MOD2 // json parse
+//#define DEBUG_MOD3 // switch handler
+
+#define DEBUG_MOD10 // responsivity msges to gui
+
#define MSG_BUFFER_SIZE 512
#define HEADER_SIZE 5
#define FOOTER_SIZE 2
@@ -101,6 +106,9 @@
// Objects //
/////////////
+// json
+MbedJSONValue guiCmd;
+
// uart
Serial pc(USBTX, USBRX);
@@ -174,6 +182,9 @@
// Packet Parser
void parsePacket(void);
+// switch Packet Handler
+void switchPacket(void);
+
// initialize switch
void initSwitch(void);
////////////////////////
@@ -342,54 +353,72 @@
// Packet Parser
void parsePacket(void)
{
- static int micChannle = 0;
- static bool spkChannle[5]= {0};
-#ifdef DEBUG_MOD1
+ string targetName;
+#ifdef DEBUG_MOD2
// write buffer to screen
//pc.printf("%d, %.*s", packetMSG.bufferIndex ,packetMSG.bufferIndex, packetMSG.buffer );
- //pc.printf("%s", json);
+ pc.printf("%s", json);
+#endif
+
+ // GUI message format Switch: {"name":"switch","mic":0, "spk": [0,1,0,0,0]}
+ parse(guiCmd, json);
+
+ // get target:
+ targetName = guiCmd["name"].get<string>(); // switch / dsp
+
+#ifdef DEBUG_MOD2
+ // send parsed values
+ pc.printf("targetName: %s \r\n", targetName.c_str());
#endif
- MbedJSONValue guiCmd;
+ // select handler based on target mcu
+ if (targetName == "switch") {
+ switchPacket();
+ } else if (targetName == "dsp") {
+ // send msg to dsp
+ pc.printf("json:%s", json);
+ } else {
+#ifdef DEBUG_MOD2
+ // unrecognised target
+ pc.printf("unrecognised target: %s \r\n", targetName.c_str());
+#endif
+ }
+ // led blink
+ led = !led;
+}// end parse
- //const char * json = "{\"my_array\": [\"demo_string\", 10], \"my_boolean\": true}";
- // json:{"my_array": ["demo_string", 10], "my_boolean": true}
- //parse the previous string and fill the object demo
+// switch Packet Handler
+void switchPacket(void)
+{
+ int micChannle = 0;
+ bool spkChannle[5]= {0};
- // GUI message format: {"mic":0, "spk": [0,1,0,0,0]}
- parse(guiCmd, json);
-
+ // get mic channle
micChannle = guiCmd["mic"].get<int>();
+ // get speakers output
for (int ii=0 ; ii < 5 ; ii++) {
spkChannle[ii] = guiCmd["spk"][ii].get<bool>();
}
-
-#ifdef DEBUG_MOD1
+#ifndef DEBUG_MOD10
// send parsed values
- printf("mic: %d , spk: [%d,%d,%d,%d,%d]\r\n", micChannle,spkChannle[0],spkChannle[1],spkChannle[2],spkChannle[3],spkChannle[4]);
-#endif
-
-
+ pc.printf("mic: %d , spk: [%d,%d,%d,%d,%d]\r\n", micChannle,spkChannle[0],spkChannle[1],spkChannle[2],spkChannle[3],spkChannle[4]);
+#endif
// update hardware
-
// update mic select mux
uint8_t micByte = (uint8_t) micChannle;
mux_s0.write((bool)(micByte & 0b00000001));
mux_s1.write((bool)(micByte & 0b00000010));
mux_s2.write((bool)(micByte & 0b00000100));
mux_s3.write((bool)(micByte & 0b00001000));
-
// update speakers:
en_spk_1.write(spkChannle[0]);
en_spk_2.write(spkChannle[1]);
en_spk_3.write(spkChannle[2]);
en_spk_4.write(spkChannle[3]);
en_spk_5.write(spkChannle[4]);
-
- // led blink
- led = !led;
-}// end parse
+ // end switch target parse
+}// end switch packet
//// Serial Event function simple byte parser