Mercurial > hg > beaglert
comparison core/RTAudioCommandLine.cpp @ 16:670be80463a3 matrix_gpio
- analog matrixIn/matrixOut are now mapped as floats from 0 to 1
- use of an external PRU code can be enabled with -P <filename>
- 16 channels of programmable GPIO can be accessed straight from render() either writing directly to the matrixGpio[] array or using digitalWrite(),
digitalRead(), setDigitalDirection() macros from Utilities.h .
author | Giulio Moro <giuliomoro@yahoo.it> |
---|---|
date | Mon, 27 Apr 2015 13:01:57 +0100 |
parents | a6beeba3a648 |
children | c98863e63174 |
comparison
equal
deleted
inserted
replaced
15:901d205d1a3c | 16:670be80463a3 |
---|---|
7 | 7 |
8 #include <iostream> | 8 #include <iostream> |
9 #include <cstdlib> | 9 #include <cstdlib> |
10 #include <cstring> | 10 #include <cstring> |
11 #include <getopt.h> | 11 #include <getopt.h> |
12 | |
13 #include "../include/RTAudio.h" | 12 #include "../include/RTAudio.h" |
14 | 13 |
15 // Default command-line options for RTAudio | 14 // Default command-line options for RTAudio |
16 struct option gDefaultLongOptions[] = | 15 struct option gDefaultLongOptions[] = |
17 { | 16 { |
18 {"period", 1, NULL, 'p'}, | 17 {"period", 1, NULL, 'p'}, |
19 {"verbose", 0, NULL, 'v'}, | 18 {"verbose", 0, NULL, 'v'}, |
20 {"use-matrix", 1, NULL, 'm'}, | 19 {"use-matrix", 1, NULL, 'm'}, |
20 {"use-matrix-gpio", 1, NULL, 'g'}, | |
21 {"matrix-channels", 1, NULL, 'C'}, | 21 {"matrix-channels", 1, NULL, 'C'}, |
22 {"matrix-gpio-channels", 1, NULL, 'G'}, | |
22 {"mute-speaker", 1, NULL, 'M'}, | 23 {"mute-speaker", 1, NULL, 'M'}, |
23 {"dac-level", 1, NULL, 'D'}, | 24 {"dac-level", 1, NULL, 'D'}, |
24 {"adc-level", 1, NULL, 'A'}, | 25 {"adc-level", 1, NULL, 'A'}, |
25 {"hp-level", 1, NULL, 'H'}, | 26 {"hp-level", 1, NULL, 'H'}, |
27 {"pru-file",1,NULL,'P'}, | |
26 {NULL, 0, NULL, 0} | 28 {NULL, 0, NULL, 0} |
27 }; | 29 }; |
28 | 30 |
29 const char gDefaultShortOptions[] = "p:vm:M:C:D:A:H:"; | 31 const char gDefaultShortOptions[] = "p:vm:M:C:D:A:H:P:g:G:"; |
30 | 32 |
31 // This function sets the default settings for the RTAudioSettings structure | 33 // This function sets the default settings for the RTAudioSettings structure |
32 void BeagleRT_defaultSettings(RTAudioSettings *settings) | 34 void BeagleRT_defaultSettings(RTAudioSettings *settings) |
33 { | 35 { |
34 // Set default values for settings | 36 // Set default values for settings |
36 settings->beginMuted = 0; | 38 settings->beginMuted = 0; |
37 settings->dacLevel = DEFAULT_DAC_LEVEL; | 39 settings->dacLevel = DEFAULT_DAC_LEVEL; |
38 settings->adcLevel = DEFAULT_ADC_LEVEL; | 40 settings->adcLevel = DEFAULT_ADC_LEVEL; |
39 settings->headphoneLevel = DEFAULT_HP_LEVEL; | 41 settings->headphoneLevel = DEFAULT_HP_LEVEL; |
40 settings->useMatrix = 1; | 42 settings->useMatrix = 1; |
43 settings->useMatrixGpio = 1; | |
41 settings->numMatrixChannels = 8; | 44 settings->numMatrixChannels = 8; |
45 settings->numMatrixGpioChannels = 16; | |
42 settings->verbose = 0; | 46 settings->verbose = 0; |
47 settings->pruFilename[0]='\0'; | |
43 settings->codecI2CAddress = CODEC_I2C_ADDRESS; | 48 settings->codecI2CAddress = CODEC_I2C_ADDRESS; |
44 settings->ampMutePin = kAmplifierMutePin; | 49 settings->ampMutePin = kAmplifierMutePin; |
45 } | 50 } |
46 | 51 |
47 // This function drops in place of getopt() in the main() function | 52 // This function drops in place of getopt() in the main() function |
123 settings->verbose = 1; | 128 settings->verbose = 1; |
124 break; | 129 break; |
125 case 'm': | 130 case 'm': |
126 settings->useMatrix = atoi(optarg); | 131 settings->useMatrix = atoi(optarg); |
127 break; | 132 break; |
133 case 'g': | |
134 settings->useMatrixGpio = atoi(optarg); | |
135 settings->numMatrixGpioChannels = 0; | |
136 break; | |
128 case 'C': | 137 case 'C': |
129 settings->numMatrixChannels = atoi(optarg); | 138 settings->numMatrixChannels = atoi(optarg); |
130 if(settings->numMatrixChannels >= 8) | 139 if(settings->numMatrixChannels >= 8) |
131 settings->numMatrixChannels = 8; | 140 settings->numMatrixChannels = 8; |
132 else if(settings->numMatrixChannels >= 4) | 141 else if(settings->numMatrixChannels >= 4) |
133 settings->numMatrixChannels = 4; | 142 settings->numMatrixChannels = 4; |
134 else | 143 else |
135 settings->numMatrixChannels = 2; | 144 settings->numMatrixChannels = 2; |
145 break; | |
146 case 'G': | |
147 settings->numMatrixGpioChannels = atoi(optarg); | |
148 if(settings->numMatrixGpioChannels >= 16) | |
149 settings->numMatrixGpioChannels = 16; | |
150 else if (settings->numMatrixGpioChannels < 1){ | |
151 settings->numMatrixGpioChannels = 0; | |
152 settings->useMatrixGpio = 0; //TODO: this actually works only if -G 0 is specified after -g 1. | |
153 //No worries, though: disabling numMatrixGpio will only prevent the pins from being exported. | |
154 } | |
136 break; | 155 break; |
137 case 'M': | 156 case 'M': |
138 settings->beginMuted = atoi(optarg); | 157 settings->beginMuted = atoi(optarg); |
139 break; | 158 break; |
140 case 'D': | 159 case 'D': |
144 settings->adcLevel = atof(optarg); | 163 settings->adcLevel = atof(optarg); |
145 break; | 164 break; |
146 case 'H': | 165 case 'H': |
147 settings->headphoneLevel = atof(optarg); | 166 settings->headphoneLevel = atof(optarg); |
148 break; | 167 break; |
168 case 'P': | |
169 if(strlen(optarg)<MAX_PRU_FILENAME_LENGTH) | |
170 strcpy(settings->pruFilename, optarg); | |
171 else | |
172 std::cerr << "Warning: filename for the PRU code is too long (>" << MAX_PRU_FILENAME_LENGTH << " characters). Using embedded PRU code instead\n"; | |
173 break; | |
149 case '?': | 174 case '?': |
150 default: | 175 default: |
151 return c; | 176 return c; |
152 } | 177 } |
153 } | 178 } |
155 | 180 |
156 // This function prints standard usage information for default arguments | 181 // This function prints standard usage information for default arguments |
157 // Call from within your own usage function | 182 // Call from within your own usage function |
158 void BeagleRT_usage() | 183 void BeagleRT_usage() |
159 { | 184 { |
160 std::cerr << " --period [-p] period: Set the hardware period (buffer) size in matrix samples\n"; | 185 std::cerr << " --period [-p] period: Set the hardware period (buffer) size in matrix samples\n"; |
161 std::cerr << " --dac-level [-D] dBs: Set the DAC output level (0dB max; -63.5dB min)\n"; | 186 std::cerr << " --dac-level [-D] dBs: Set the DAC output level (0dB max; -63.5dB min)\n"; |
162 std::cerr << " --adc-level [-A] dBs: Set the ADC input level (0dB max; -12dB min)\n"; | 187 std::cerr << " --adc-level [-A] dBs: Set the ADC input level (0dB max; -12dB min)\n"; |
163 std::cerr << " --hp-level [-H] dBs: Set the headphone output level (0dB max; -63.5dB min)\n"; | 188 std::cerr << " --hp-level [-H] dBs: Set the headphone output level (0dB max; -63.5dB min)\n"; |
164 std::cerr << " --mute-speaker [-M] val: Set whether to mute the speaker initially (default: no)\n"; | 189 std::cerr << " --mute-speaker [-M] val: Set whether to mute the speaker initially (default: no)\n"; |
165 std::cerr << " --use-matrix [-m] val: Set whether to use ADC/DAC matrix\n"; | 190 std::cerr << " --use-matrix [-m] val: Set whether to use ADC/DAC matrix (default: yes)\n"; |
166 std::cerr << " --matrix-channels [-C] val: Set the number of ADC/DAC channels (default: 8)\n"; | 191 std::cerr << " --use-gpio-matrix [-g] val: Set whether to use GPIO matrix (default: yes)\n"; |
167 std::cerr << " --verbose [-v]: Enable verbose logging information\n"; | 192 std::cerr << " --matrix-channels [-C] val: Set the number of ADC/DAC channels (default: 8)\n"; |
193 std::cerr << " --matrix-gpio-channels [-G] val: Set the number of GPIO channels (default: 16)\n"; | |
194 std::cerr << " --pru-file [-P] val: Set an optional external file to use for the PRU binary code\n"; | |
195 std::cerr << " --verbose [-v]: Enable verbose logging information\n"; | |
168 } | 196 } |
197 |