Tau ReSpeaker Setup V01

Dependencies:   MbedJSONValue mbed

Fork of TAU_ReSpeaker_DSP_Test by Yossi_Students

Committer:
Arkadi
Date:
Sun Feb 11 15:13:52 2018 +0000
Revision:
1:574b54755983
Parent:
0:bfac05b2d50f
Child:
2:59c1a24aed7c
Added GUI control for HPF and no filter modes

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Arkadi 0:bfac05b2d50f 1 ////////////////////////////////////////
Arkadi 1:574b54755983 2 // Tau_ReSpeaker_DSP V01 //
Arkadi 1:574b54755983 3 // Arkadiraf@gmail.com - 11/02/2018 //
Arkadi 0:bfac05b2d50f 4 ////////////////////////////////////////
Arkadi 0:bfac05b2d50f 5 /*
Arkadi 1:574b54755983 6
Arkadi 0:bfac05b2d50f 7 */
Arkadi 0:bfac05b2d50f 8
Arkadi 0:bfac05b2d50f 9 /*
Arkadi 0:bfac05b2d50f 10 Board : Nucleo STM32F446RE
Arkadi 0:bfac05b2d50f 11 Power Source : USB
Arkadi 0:bfac05b2d50f 12 */
Arkadi 0:bfac05b2d50f 13
Arkadi 0:bfac05b2d50f 14 /*
Arkadi 0:bfac05b2d50f 15 Pinout:
Arkadi 0:bfac05b2d50f 16 PC - Serial 2
Arkadi 0:bfac05b2d50f 17 PA_2 (Tx) --> STLINK
Arkadi 0:bfac05b2d50f 18 PA_3 (Rx) --> STLINK
Arkadi 0:bfac05b2d50f 19
Arkadi 0:bfac05b2d50f 20 Switch - Serial 3
Arkadi 0:bfac05b2d50f 21 PC_10 (Tx) --> SW_Rx
Arkadi 0:bfac05b2d50f 22 PC_11 (Rx) --> SW_Tx
Arkadi 0:bfac05b2d50f 23
Arkadi 0:bfac05b2d50f 24 I2C_Bus
Arkadi 0:bfac05b2d50f 25 PB_8 --> SCL
Arkadi 0:bfac05b2d50f 26 PB_9 --> SDA
Arkadi 0:bfac05b2d50f 27
Arkadi 0:bfac05b2d50f 28 Digital output
Arkadi 0:bfac05b2d50f 29 PA_5 --> led (DigitalOut)
Arkadi 0:bfac05b2d50f 30
Arkadi 0:bfac05b2d50f 31 Digital Input
Arkadi 0:bfac05b2d50f 32 PA_10 --> SW_Trigger
Arkadi 0:bfac05b2d50f 33 PC_13 --> BTN (Blue)
Arkadi 0:bfac05b2d50f 34
Arkadi 1:574b54755983 35 PA_6 --> Toggle Pin (Loop Freq D12)
Arkadi 1:574b54755983 36
Arkadi 0:bfac05b2d50f 37 Analog Input
Arkadi 1:574b54755983 38 PA_0 --> SIG_IN_DSP (A0)
Arkadi 0:bfac05b2d50f 39
Arkadi 0:bfac05b2d50f 40 Analog Output
Arkadi 1:574b54755983 41 PA_4 --> SIG_OUT_DSP (A2)
Arkadi 0:bfac05b2d50f 42
Arkadi 0:bfac05b2d50f 43 */
Arkadi 0:bfac05b2d50f 44
Arkadi 0:bfac05b2d50f 45 ///////////////
Arkadi 0:bfac05b2d50f 46 // Libraries //
Arkadi 0:bfac05b2d50f 47 ///////////////
Arkadi 0:bfac05b2d50f 48 #include "mbed.h"
Arkadi 1:574b54755983 49 #include "MbedJSONValue.h"
Arkadi 0:bfac05b2d50f 50
Arkadi 0:bfac05b2d50f 51 ///////////////
Arkadi 0:bfac05b2d50f 52 // #defines //
Arkadi 0:bfac05b2d50f 53 ///////////////
Arkadi 1:574b54755983 54 // UART debug modes:
Arkadi 1:574b54755983 55 //#define DEBUG_MOD1 // json packet recognise
Arkadi 1:574b54755983 56 #define DEBUG_MOD2 // json parse
Arkadi 1:574b54755983 57 #define DEBUG_MOD3 // dsp handler
Arkadi 1:574b54755983 58 #define DEBUG_MOD10 // responsivity msges to gui
Arkadi 1:574b54755983 59 //#define DEBUG_MOD11 // loop frequency indicator
Arkadi 0:bfac05b2d50f 60
Arkadi 0:bfac05b2d50f 61 // Sine generator
Arkadi 1:574b54755983 62 #define PI_DOUBLE (3.141592653589793238462)
Arkadi 1:574b54755983 63 #define PI_FLOAT (3.14159f)
Arkadi 1:574b54755983 64
Arkadi 1:574b54755983 65 // json commad
Arkadi 1:574b54755983 66 #define MSG_BUFFER_SIZE 512
Arkadi 1:574b54755983 67 #define HEADER_SIZE 5
Arkadi 1:574b54755983 68 #define FOOTER_SIZE 2
Arkadi 0:bfac05b2d50f 69
Arkadi 0:bfac05b2d50f 70 /////////////
Arkadi 0:bfac05b2d50f 71 // Objects //
Arkadi 0:bfac05b2d50f 72 /////////////
Arkadi 1:574b54755983 73 // json
Arkadi 1:574b54755983 74 MbedJSONValue guiCmd;
Arkadi 0:bfac05b2d50f 75
Arkadi 0:bfac05b2d50f 76 // uart
Arkadi 1:574b54755983 77 Serial pc(USBTX, USBRX);
Arkadi 0:bfac05b2d50f 78
Arkadi 0:bfac05b2d50f 79 // digital
Arkadi 0:bfac05b2d50f 80 DigitalIn user_button(PC_13);
Arkadi 0:bfac05b2d50f 81 DigitalIn sw_trigger(PA_10);
Arkadi 0:bfac05b2d50f 82 DigitalOut led(PA_5);
Arkadi 1:574b54755983 83 DigitalOut mytoggle(PA_6);
Arkadi 0:bfac05b2d50f 84
Arkadi 1:574b54755983 85 // analog / define to init at mbed initialization. work directly with registers
Arkadi 0:bfac05b2d50f 86 AnalogOut dsp_output(PA_4);
Arkadi 0:bfac05b2d50f 87 AnalogIn dsp_input(PA_0);
Arkadi 0:bfac05b2d50f 88
Arkadi 1:574b54755983 89
Arkadi 1:574b54755983 90 // ADC/DAC declarations
Arkadi 1:574b54755983 91 ADC_HandleTypeDef hadc1;
Arkadi 1:574b54755983 92 DAC_HandleTypeDef hdac1;
Arkadi 1:574b54755983 93
Arkadi 0:bfac05b2d50f 94 ///////////////
Arkadi 0:bfac05b2d50f 95 // variables //
Arkadi 0:bfac05b2d50f 96 ///////////////
Arkadi 0:bfac05b2d50f 97
Arkadi 1:574b54755983 98 // json buffer
Arkadi 1:574b54755983 99 char json[MSG_BUFFER_SIZE];
Arkadi 1:574b54755983 100
Arkadi 1:574b54755983 101 // packet variables
Arkadi 1:574b54755983 102 struct packetMSG_struct {
Arkadi 1:574b54755983 103 // recieve message variables
Arkadi 1:574b54755983 104 uint8_t header[HEADER_SIZE];
Arkadi 1:574b54755983 105 uint8_t footer[FOOTER_SIZE];
Arkadi 1:574b54755983 106 uint8_t syncIndex; // sync index for header / footer
Arkadi 1:574b54755983 107 uint8_t syncFlag; // 0 - waiting for header, 1 - waiting for footer, 2 - verify footer, 3 - finish footer send to parser, flash buffer
Arkadi 1:574b54755983 108 // buffer
Arkadi 1:574b54755983 109 uint16_t bufferIndex; // buffer index
Arkadi 1:574b54755983 110 uint8_t buffer[MSG_BUFFER_SIZE];
Arkadi 1:574b54755983 111 } ;
Arkadi 1:574b54755983 112 packetMSG_struct packetMSG;
Arkadi 1:574b54755983 113
Arkadi 1:574b54755983 114
Arkadi 1:574b54755983 115 // Dac Register for direct method of setting DAC value`s
Arkadi 1:574b54755983 116 __IO uint32_t Dac_Reg = 0;
Arkadi 1:574b54755983 117
Arkadi 0:bfac05b2d50f 118 // analog input
Arkadi 0:bfac05b2d50f 119 uint16_t adc_in=0;
Arkadi 0:bfac05b2d50f 120
Arkadi 1:574b54755983 121 // toogle pin state
Arkadi 1:574b54755983 122 bool toggelState=0;
Arkadi 1:574b54755983 123
Arkadi 1:574b54755983 124 // create function pointer
Arkadi 1:574b54755983 125 typedef void(*functionPtr)(void);
Arkadi 1:574b54755983 126 functionPtr FilterFunction;
Arkadi 1:574b54755983 127
Arkadi 0:bfac05b2d50f 128 ///////////////
Arkadi 0:bfac05b2d50f 129 // Functions //
Arkadi 0:bfac05b2d50f 130 ///////////////
Arkadi 0:bfac05b2d50f 131
Arkadi 1:574b54755983 132 // init functions header //hadc1 needs to be defined preiod #incude
Arkadi 1:574b54755983 133 #include "adc_init.h" // initialize adc/dac directly for continious sample
Arkadi 1:574b54755983 134 #include "filters.h"
Arkadi 1:574b54755983 135
Arkadi 1:574b54755983 136 // nop operation
Arkadi 1:574b54755983 137 inline void NOP()
Arkadi 1:574b54755983 138 {
Arkadi 1:574b54755983 139 __ASM volatile ("nop"); // one tick operation, Use to adjust frequency by slowing down the proccess
Arkadi 1:574b54755983 140 }
Arkadi 1:574b54755983 141
Arkadi 1:574b54755983 142 // Serial Event function
Arkadi 1:574b54755983 143 void rxCallback(void);
Arkadi 1:574b54755983 144
Arkadi 1:574b54755983 145 // initialize packet struct
Arkadi 1:574b54755983 146 void initPacket(void);
Arkadi 1:574b54755983 147
Arkadi 1:574b54755983 148 // Packet Parser
Arkadi 1:574b54755983 149 void parsePacket(void);
Arkadi 1:574b54755983 150
Arkadi 1:574b54755983 151 // DSP Packet Handler
Arkadi 1:574b54755983 152 void dspPacket(void);
Arkadi 1:574b54755983 153
Arkadi 1:574b54755983 154 // initialize DSP
Arkadi 1:574b54755983 155 void initDSP(void);
Arkadi 0:bfac05b2d50f 156
Arkadi 0:bfac05b2d50f 157 ////////////////////////
Arkadi 0:bfac05b2d50f 158 // Main Code Setup : //
Arkadi 0:bfac05b2d50f 159 ////////////////////////
Arkadi 0:bfac05b2d50f 160 int main()
Arkadi 0:bfac05b2d50f 161 {
Arkadi 1:574b54755983 162 // init packet:
Arkadi 1:574b54755983 163 initPacket();
Arkadi 1:574b54755983 164
Arkadi 1:574b54755983 165 // initialize DSP
Arkadi 1:574b54755983 166 initDSP();
Arkadi 1:574b54755983 167
Arkadi 0:bfac05b2d50f 168 pc.baud(57600);
Arkadi 1:574b54755983 169 // attach serial event interrupt
Arkadi 1:574b54755983 170 pc.attach(&rxCallback, Serial::RxIrq);
Arkadi 0:bfac05b2d50f 171 #ifdef DEBUG_MOD1
Arkadi 0:bfac05b2d50f 172 pc.printf("ReSpeaker Test \r\n");
Arkadi 0:bfac05b2d50f 173 #endif
Arkadi 0:bfac05b2d50f 174
Arkadi 0:bfac05b2d50f 175 ///////////////////////
Arkadi 0:bfac05b2d50f 176 // Main Code Loop : //
Arkadi 0:bfac05b2d50f 177 ///////////////////////
Arkadi 0:bfac05b2d50f 178 while(1) {
Arkadi 1:574b54755983 179 // run selected filter
Arkadi 1:574b54755983 180 FilterFunction();
Arkadi 1:574b54755983 181
Arkadi 1:574b54755983 182 #ifdef DEBUG_MOD11
Arkadi 1:574b54755983 183 // toggle pin, Loop frequency indicator
Arkadi 1:574b54755983 184 toggelState=!toggelState;
Arkadi 1:574b54755983 185 mytoggle.write(toggelState);
Arkadi 1:574b54755983 186 #endif
Arkadi 0:bfac05b2d50f 187 }
Arkadi 0:bfac05b2d50f 188 }
Arkadi 0:bfac05b2d50f 189
Arkadi 0:bfac05b2d50f 190 ///////////////
Arkadi 0:bfac05b2d50f 191 // Functions //
Arkadi 0:bfac05b2d50f 192 ///////////////
Arkadi 0:bfac05b2d50f 193
Arkadi 1:574b54755983 194 // initialize DSP
Arkadi 1:574b54755983 195 void initDSP(void)
Arkadi 1:574b54755983 196 {
Arkadi 1:574b54755983 197 // init dac
Arkadi 1:574b54755983 198 ADC1_Init();
Arkadi 1:574b54755983 199 DAC1_Init();
Arkadi 1:574b54755983 200
Arkadi 1:574b54755983 201 HAL_ADC_Start(&hadc1);
Arkadi 1:574b54755983 202 HAL_DAC_Start(&hdac1, DAC_CHANNEL_1);
Arkadi 1:574b54755983 203
Arkadi 1:574b54755983 204 // define Dac Register for direct method of setting DAC value`s
Arkadi 1:574b54755983 205 Dac_Reg = (uint32_t) (hdac1.Instance);
Arkadi 1:574b54755983 206 Dac_Reg += __HAL_DHR12R1_ALIGNEMENT(DAC_ALIGN_12B_R);
Arkadi 1:574b54755983 207
Arkadi 1:574b54755983 208 // intialize filter function pointer
Arkadi 1:574b54755983 209 FilterFunction = no_filter;
Arkadi 1:574b54755983 210
Arkadi 1:574b54755983 211 }
Arkadi 1:574b54755983 212
Arkadi 1:574b54755983 213 // Serial Event function
Arkadi 1:574b54755983 214 void rxCallback(void)
Arkadi 0:bfac05b2d50f 215 {
Arkadi 1:574b54755983 216 while (pc.readable()) {
Arkadi 1:574b54755983 217 // read icoming
Arkadi 1:574b54755983 218 //led = !led;
Arkadi 1:574b54755983 219 uint8_t in_byte = pc.getc();
Arkadi 1:574b54755983 220 #ifdef DEBUG_MOD1
Arkadi 1:574b54755983 221 pc.putc(in_byte);
Arkadi 1:574b54755983 222 #endif
Arkadi 1:574b54755983 223 // detect start message , end message
Arkadi 1:574b54755983 224 switch (packetMSG.syncFlag) {
Arkadi 1:574b54755983 225 // waiting for header
Arkadi 1:574b54755983 226 case 0: {
Arkadi 1:574b54755983 227 if (packetMSG.header[packetMSG.syncIndex] == in_byte) {
Arkadi 1:574b54755983 228 packetMSG.syncIndex++;
Arkadi 1:574b54755983 229 if (packetMSG.syncIndex == HEADER_SIZE) { // finish header SYNC
Arkadi 1:574b54755983 230 packetMSG.syncFlag = 1; // start collecting data, wait for footer
Arkadi 1:574b54755983 231 packetMSG.bufferIndex = 0;
Arkadi 1:574b54755983 232 packetMSG.syncIndex=0;
Arkadi 1:574b54755983 233 }
Arkadi 1:574b54755983 234 } else { // reinit sync
Arkadi 1:574b54755983 235 packetMSG.syncIndex=0;
Arkadi 1:574b54755983 236 }
Arkadi 1:574b54755983 237 //pc.printf("case 0 , %d \r\n",packetMSG.syncIndex);
Arkadi 1:574b54755983 238 break;
Arkadi 1:574b54755983 239 }
Arkadi 1:574b54755983 240 // waiting for footer
Arkadi 1:574b54755983 241 case 1: {
Arkadi 1:574b54755983 242 // add byte to buffer
Arkadi 1:574b54755983 243 packetMSG.buffer[packetMSG.bufferIndex] = in_byte;
Arkadi 1:574b54755983 244 packetMSG.bufferIndex++;
Arkadi 1:574b54755983 245 if (packetMSG.bufferIndex >= MSG_BUFFER_SIZE) { // buffer overflow
Arkadi 1:574b54755983 246 // reset buffer
Arkadi 1:574b54755983 247 packetMSG.bufferIndex = 0;
Arkadi 1:574b54755983 248 packetMSG.syncIndex = 0;
Arkadi 1:574b54755983 249 packetMSG.syncFlag = 0;
Arkadi 1:574b54755983 250 } else if (packetMSG.footer[packetMSG.syncIndex] == in_byte) { // footer char recieved
Arkadi 1:574b54755983 251 packetMSG.syncIndex++;
Arkadi 1:574b54755983 252 packetMSG.syncFlag=2; // move to verify footer
Arkadi 1:574b54755983 253 }
Arkadi 1:574b54755983 254 //pc.printf("case 2 , %d \r\n",packetMSG.syncIndex);
Arkadi 1:574b54755983 255 break;
Arkadi 1:574b54755983 256 }
Arkadi 1:574b54755983 257 // verify footer
Arkadi 1:574b54755983 258 case 2: {
Arkadi 1:574b54755983 259 // add byte to buffer
Arkadi 1:574b54755983 260 packetMSG.buffer[packetMSG.bufferIndex] = in_byte;
Arkadi 1:574b54755983 261 packetMSG.bufferIndex++;
Arkadi 1:574b54755983 262 if (packetMSG.bufferIndex >= MSG_BUFFER_SIZE) { // buffer overflow
Arkadi 1:574b54755983 263 // reset buffer
Arkadi 1:574b54755983 264 packetMSG.bufferIndex = 0;
Arkadi 1:574b54755983 265 packetMSG.syncIndex = 0;
Arkadi 1:574b54755983 266 packetMSG.syncFlag = 0;
Arkadi 1:574b54755983 267 } else if (packetMSG.footer[packetMSG.syncIndex] == in_byte) { // footer char recieved
Arkadi 1:574b54755983 268 packetMSG.syncIndex++;
Arkadi 1:574b54755983 269 if (packetMSG.syncIndex == FOOTER_SIZE) { // finish footer SYNC
Arkadi 1:574b54755983 270 packetMSG.syncFlag = 3;
Arkadi 1:574b54755983 271 // copy packet to json buffer
Arkadi 1:574b54755983 272 memcpy (&json, &packetMSG.buffer, packetMSG.bufferIndex);
Arkadi 1:574b54755983 273 json[packetMSG.bufferIndex]=NULL; // end with NULL to indicate end of string
Arkadi 1:574b54755983 274 // copy packet to json buffer with sprintf
Arkadi 1:574b54755983 275 //sprintf(json, "%.*s", packetMSG.bufferIndex, packetMSG.buffer );
Arkadi 1:574b54755983 276 // send msg to parse.
Arkadi 1:574b54755983 277 parsePacket();
Arkadi 1:574b54755983 278 // reset buffer
Arkadi 1:574b54755983 279 packetMSG.bufferIndex = 0;
Arkadi 1:574b54755983 280 packetMSG.syncIndex = 0;
Arkadi 1:574b54755983 281 packetMSG.syncFlag = 0;
Arkadi 1:574b54755983 282 }
Arkadi 1:574b54755983 283 } else { // footer broke restart wait for footer
Arkadi 1:574b54755983 284 packetMSG.syncFlag=1;
Arkadi 1:574b54755983 285 // verify that it didnt broke on first footer char
Arkadi 1:574b54755983 286 if (packetMSG.footer[0] == in_byte) {
Arkadi 1:574b54755983 287 packetMSG.syncIndex=1;
Arkadi 1:574b54755983 288 } else {
Arkadi 1:574b54755983 289 packetMSG.syncIndex=0;
Arkadi 1:574b54755983 290 }
Arkadi 1:574b54755983 291 }
Arkadi 1:574b54755983 292 break;
Arkadi 1:574b54755983 293 }
Arkadi 1:574b54755983 294 default: {
Arkadi 1:574b54755983 295 pc.printf("Sonmething went wrong \r\n");
Arkadi 1:574b54755983 296 break;
Arkadi 1:574b54755983 297 }
Arkadi 1:574b54755983 298 } // end switch
Arkadi 1:574b54755983 299 }// end uart readable
Arkadi 1:574b54755983 300 } // end rxCallback
Arkadi 1:574b54755983 301
Arkadi 1:574b54755983 302 // initialize packet struct
Arkadi 1:574b54755983 303 void initPacket(void)
Arkadi 1:574b54755983 304 {
Arkadi 1:574b54755983 305 // init variables to default:
Arkadi 1:574b54755983 306 packetMSG.header[0] = 'j';
Arkadi 1:574b54755983 307 packetMSG.header[1] = 's';
Arkadi 1:574b54755983 308 packetMSG.header[2] = 'o';
Arkadi 1:574b54755983 309 packetMSG.header[3] = 'n';
Arkadi 1:574b54755983 310 packetMSG.header[4] = ':';
Arkadi 1:574b54755983 311
Arkadi 1:574b54755983 312 packetMSG.footer[0]= 13; // /r
Arkadi 1:574b54755983 313 packetMSG.footer[1]= 10; // /n
Arkadi 1:574b54755983 314
Arkadi 1:574b54755983 315 packetMSG.syncIndex=0; // sync index for header / footer
Arkadi 1:574b54755983 316 packetMSG.syncFlag=0; // 0 - waiting for header, 1 - waiting for footer, 2 - verify footer, 3 - finish footer send to parser, flash buffer
Arkadi 1:574b54755983 317 packetMSG.bufferIndex=0; // buffer index
Arkadi 1:574b54755983 318 }// end init Packet struct
Arkadi 1:574b54755983 319
Arkadi 1:574b54755983 320
Arkadi 1:574b54755983 321
Arkadi 1:574b54755983 322 // Packet Parser
Arkadi 1:574b54755983 323 void parsePacket(void)
Arkadi 1:574b54755983 324 {
Arkadi 1:574b54755983 325 string targetName;
Arkadi 1:574b54755983 326 #ifdef DEBUG_MOD2
Arkadi 1:574b54755983 327 // write buffer to screen
Arkadi 1:574b54755983 328 //pc.printf("%d, %.*s", packetMSG.bufferIndex ,packetMSG.bufferIndex, packetMSG.buffer );
Arkadi 1:574b54755983 329 pc.printf("%s", json);
Arkadi 1:574b54755983 330 #endif
Arkadi 1:574b54755983 331
Arkadi 1:574b54755983 332 // GUI message format Switch: {"name":"switch","mic":0, "spk": [0,1,0,0,0]}
Arkadi 1:574b54755983 333 parse(guiCmd, json);
Arkadi 1:574b54755983 334
Arkadi 1:574b54755983 335 // get target:
Arkadi 1:574b54755983 336 targetName = guiCmd["name"].get<string>(); // switch / dsp
Arkadi 1:574b54755983 337
Arkadi 1:574b54755983 338 #ifdef DEBUG_MOD2
Arkadi 1:574b54755983 339 // send parsed values
Arkadi 1:574b54755983 340 pc.printf("targetName: %s \r\n", targetName.c_str());
Arkadi 1:574b54755983 341 #endif
Arkadi 1:574b54755983 342
Arkadi 1:574b54755983 343 // select handler based on target mcu
Arkadi 1:574b54755983 344 if (targetName == "dsp") {
Arkadi 1:574b54755983 345 dspPacket();
Arkadi 1:574b54755983 346 } else {
Arkadi 1:574b54755983 347 #ifdef DEBUG_MOD2
Arkadi 1:574b54755983 348 // unrecognised target
Arkadi 1:574b54755983 349 pc.printf("unrecognised target: %s \r\n", targetName.c_str());
Arkadi 1:574b54755983 350 #endif
Arkadi 0:bfac05b2d50f 351 }
Arkadi 1:574b54755983 352 // led blink
Arkadi 1:574b54755983 353 led = !led;
Arkadi 1:574b54755983 354 }// end parse
Arkadi 1:574b54755983 355
Arkadi 1:574b54755983 356 // DSP Packet Handler
Arkadi 1:574b54755983 357 void dspPacket(void)
Arkadi 1:574b54755983 358 {
Arkadi 1:574b54755983 359 string filterType;
Arkadi 1:574b54755983 360 string modeType;
Arkadi 1:574b54755983 361 // get mic channle
Arkadi 1:574b54755983 362 filterType = guiCmd["filter"].get<string>();
Arkadi 1:574b54755983 363 modeType = guiCmd["mode"].get<string>();
Arkadi 1:574b54755983 364
Arkadi 1:574b54755983 365 #ifdef DEBUG_MOD10
Arkadi 1:574b54755983 366 // send parsed values
Arkadi 1:574b54755983 367 pc.printf("filter: %s , mode: %s\r\n", filterType.c_str(),modeType.c_str());
Arkadi 1:574b54755983 368 #endif
Arkadi 1:574b54755983 369 // selected operation mode
Arkadi 1:574b54755983 370 if ( filterType == "none" ) {
Arkadi 1:574b54755983 371 FilterFunction = no_filter;
Arkadi 1:574b54755983 372 } else if( filterType == "hpf" ) {
Arkadi 1:574b54755983 373 FilterFunction = highpath_filter;
Arkadi 1:574b54755983 374 } else {
Arkadi 1:574b54755983 375 pc.printf("fundefined filter %s \r\n", filterType.c_str());
Arkadi 1:574b54755983 376 FilterFunction = no_filter;
Arkadi 1:574b54755983 377 }
Arkadi 1:574b54755983 378
Arkadi 1:574b54755983 379 // selected operation mode
Arkadi 1:574b54755983 380 if ( modeType == "off" ) {
Arkadi 1:574b54755983 381 } else if( modeType == "on" ) {
Arkadi 1:574b54755983 382 } else {
Arkadi 1:574b54755983 383 pc.printf("fundefined filter %s \r\n", modeType.c_str());
Arkadi 1:574b54755983 384 }
Arkadi 1:574b54755983 385
Arkadi 1:574b54755983 386 }// end dspPacket