Mercurial > hg > beaglert
comparison projects/d-box/main.cpp @ 50:be427da6fb9c newapi
Removed old testing code that stopped audio after 10 seconds; command line parameter updates; D-Box updates (not fully working yet)
author | andrewm |
---|---|
date | Sat, 30 May 2015 12:34:32 -0500 |
parents | 901d205d1a3c |
children | 3c3a1357657d |
comparison
equal
deleted
inserted
replaced
49:bb40e7e06b8c | 50:be427da6fb9c |
---|---|
31 #include <sched.h> | 31 #include <sched.h> |
32 | 32 |
33 // get_opt_long | 33 // get_opt_long |
34 #include <getopt.h> | 34 #include <getopt.h> |
35 | 35 |
36 #include "../../include/RTAudio.h" | 36 #include "../../include/BeagleRT.h" |
37 #include "config.h" | 37 #include "config.h" |
38 #include "sensors.h" | 38 #include "sensors.h" |
39 #include "OscillatorBank.h" | 39 #include "OscillatorBank.h" |
40 #include "StatusLED.h" | 40 #include "StatusLED.h" |
41 #include "logger.h" | 41 #include "logger.h" |
260 | 260 |
261 gShouldStop = true; | 261 gShouldStop = true; |
262 } | 262 } |
263 | 263 |
264 | 264 |
265 void parseArguments(arg_data args, RTAudioSettings *settings) | 265 void parseArguments(arg_data args, BeagleRTInitSettings *settings) |
266 { | 266 { |
267 // Default filename; | 267 // Default filename; |
268 gPartialFilename = strdup("D-Box_sound_250_60_40_h88_2.txt"); | 268 gPartialFilename = strdup("D-Box_sound_250_60_40_h88_2.txt"); |
269 | |
270 const int kOptionAudioTest = 1000; | |
269 | 271 |
270 // TODO: complete this | 272 // TODO: complete this |
271 struct option long_option[] = | 273 struct option long_option[] = |
272 { | 274 { |
273 {"help", 0, NULL, 'h'}, | 275 {"help", 0, NULL, 'h'}, |
274 {"audioin", 1, NULL, 'i'}, | 276 {"audioin", 1, NULL, 'i'}, |
275 {"file", 1, NULL, 'f'}, | 277 {"file", 1, NULL, 'f'}, |
276 {"keyboard", 1, NULL, 'k'}, | 278 {"keyboard", 1, NULL, 'k'}, |
277 {"audio-test", 0, NULL, 'T'}, | 279 {"audio-test", 0, NULL, kOptionAudioTest}, |
278 {"sensor-type", 1, NULL, 'S'}, | 280 {"sensor-type", 1, NULL, 't'}, |
279 {"sensor0", 1, NULL, 'Q'}, | 281 {"sensor0", 1, NULL, 'q'}, |
280 {"sensor1", 1, NULL, 'R'}, | 282 {"sensor1", 1, NULL, 'r'}, |
281 {"log", 1, NULL, 'l'}, | 283 {"log", 1, NULL, 'l'}, |
282 {"usesd", 1, NULL, 'u'}, | 284 {"usesd", 1, NULL, 'u'}, |
283 {"oversamp", 1, NULL, 'o'}, | 285 {"oversamp", 1, NULL, 'o'}, |
284 {"boxnumber", 1, NULL, 'n'}, | 286 {"boxnumber", 1, NULL, 'n'}, |
285 {"group", 1, NULL, 'g'}, | 287 {"group", 1, NULL, 'g'}, |
291 BeagleRT_defaultSettings(settings); | 293 BeagleRT_defaultSettings(settings); |
292 | 294 |
293 while (1) | 295 while (1) |
294 { | 296 { |
295 int c; | 297 int c; |
296 if ((c = BeagleRT_getopt_long(args.argc, args.argv, "hf:ki:sTQ:R:S:l:u:o:n:g:", long_option, settings)) < 0) | 298 if ((c = BeagleRT_getopt_long(args.argc, args.argv, "hf:ki:sq:r:t:l:u:o:n:g:", long_option, settings)) < 0) |
297 break; | 299 break; |
298 switch (c) | 300 switch (c) |
299 { | 301 { |
300 case 'h': | 302 case 'h': |
301 morehelp++; | 303 morehelp++; |
311 gAudioIn = (atoi(optarg)==0) ? false : true; | 313 gAudioIn = (atoi(optarg)==0) ? false : true; |
312 break; | 314 break; |
313 case 's': | 315 case 's': |
314 forceSensors = true; | 316 forceSensors = true; |
315 break; | 317 break; |
316 case 'T': | 318 case kOptionAudioTest: |
317 useAudioTest = true; | 319 useAudioTest = true; |
318 break; | 320 break; |
319 case 'S': | 321 case 't': |
320 sensorType = atoi(optarg); | 322 sensorType = atoi(optarg); |
321 break; | 323 break; |
322 case 'Q': | 324 case 'q': |
323 touchSensor0Address = atoi(optarg); | 325 touchSensor0Address = atoi(optarg); |
324 break; | 326 break; |
325 case 'R': | 327 case 'r': |
326 touchSensor1Address = atoi(optarg); | 328 touchSensor1Address = atoi(optarg); |
327 break; | 329 break; |
328 case 'l': | 330 case 'l': |
329 tmp = atoi(optarg); | 331 tmp = atoi(optarg); |
330 if(tmp==0) | 332 if(tmp==0) |
359 gVerbose = settings->verbose; | 361 gVerbose = settings->verbose; |
360 } | 362 } |
361 | 363 |
362 int main(int argc, char *argv[]) | 364 int main(int argc, char *argv[]) |
363 { | 365 { |
364 RTAudioSettings settings; // Standard audio settings | 366 BeagleRTInitSettings settings; // Standard audio settings |
365 RT_TASK rtSensorThread; | 367 RT_TASK rtSensorThread; |
366 const char rtSensorThreadName[] = "dbox-sensor"; | 368 const char rtSensorThreadName[] = "dbox-sensor"; |
367 int oscBankHopSize; | 369 int oscBankHopSize; |
368 | 370 |
369 // Parse command-line arguments | 371 // Parse command-line arguments |
370 args.argc = argc; | 372 args.argc = argc; |
371 args.argv = argv; | 373 args.argv = argv; |
372 parseArguments(args, &settings); | 374 parseArguments(args, &settings); |
373 | 375 |
374 setVerboseLevel(gVerbose); | 376 BeagleRT_setVerboseLevel(gVerbose); |
375 if(gVerbose == 1 && useAudioTest) | 377 if(gVerbose == 1 && useAudioTest) |
376 cout << "main() : running in audio test mode" << endl; | 378 cout << "main() : running in audio test mode" << endl; |
377 | 379 |
378 // Load sound files from directory | 380 // Load sound files from directory |
379 if(initSoundFiles() != 0) | 381 if(initSoundFiles() != 0) |
413 | 415 |
414 if(forceSensors && !useAudioTest) { | 416 if(forceSensors && !useAudioTest) { |
415 if(gVerbose==1) | 417 if(gVerbose==1) |
416 cout << "main() : creating control thread" << endl; | 418 cout << "main() : creating control thread" << endl; |
417 | 419 |
418 if(rt_task_create(&rtSensorThread, rtSensorThreadName, 0, 95, T_JOINABLE | T_FPU)) { | 420 if(rt_task_create(&rtSensorThread, rtSensorThreadName, 0, BEAGLERT_AUDIO_PRIORITY - 5, T_JOINABLE | T_FPU)) { |
419 cout << "Error:unable to create Xenomai control thread" << endl; | 421 cout << "Error:unable to create Xenomai control thread" << endl; |
420 return -1; | 422 return -1; |
421 } | 423 } |
422 if(rt_task_start(&rtSensorThread, &sensorLoop, 0)) { | 424 if(rt_task_start(&rtSensorThread, &sensorLoop, 0)) { |
423 cout << "Error:unable to start Xenomai control thread" << endl; | 425 cout << "Error:unable to start Xenomai control thread" << endl; |