ReSpeaker Switch V02
Dependencies: mbed MbedJSONValue
Diff: main.cpp
- Revision:
- 2:5c531dfe890b
- Parent:
- 1:2b61ae8e6f94
- Child:
- 3:9c3169e549f0
--- 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