FreeCalypso > hg > freecalypso-tools
annotate rvinterf/etmsync/tmsaur.c @ 841:379574e5cf5e
fc-tmsync aur command implemented
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Sat, 31 Jul 2021 08:29:24 +0000 |
parents | |
children | 9da5fb3f42dd |
rev | line source |
---|---|
841
379574e5cf5e
fc-tmsync aur command implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1 /* |
379574e5cf5e
fc-tmsync aur command implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2 * This fc-tmsync module implements aur commands and operations. |
379574e5cf5e
fc-tmsync aur command implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3 */ |
379574e5cf5e
fc-tmsync aur command implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
4 |
379574e5cf5e
fc-tmsync aur command implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
5 #include <sys/types.h> |
379574e5cf5e
fc-tmsync aur command implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
6 #include <stdio.h> |
379574e5cf5e
fc-tmsync aur command implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
7 #include <stdlib.h> |
379574e5cf5e
fc-tmsync aur command implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
8 #include <string.h> |
379574e5cf5e
fc-tmsync aur command implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
9 #include <strings.h> |
379574e5cf5e
fc-tmsync aur command implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
10 #include "etm.h" |
379574e5cf5e
fc-tmsync aur command implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
11 #include "audio.h" |
379574e5cf5e
fc-tmsync aur command implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
12 #include "limits.h" |
379574e5cf5e
fc-tmsync aur command implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
13 #include "localtypes.h" |
379574e5cf5e
fc-tmsync aur command implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
14 #include "exitcodes.h" |
379574e5cf5e
fc-tmsync aur command implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
15 |
379574e5cf5e
fc-tmsync aur command implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
16 extern u_char rvi_msg[]; |
379574e5cf5e
fc-tmsync aur command implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
17 extern int rvi_msg_len; |
379574e5cf5e
fc-tmsync aur command implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
18 |
379574e5cf5e
fc-tmsync aur command implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
19 do_aur(param, data, size) |
379574e5cf5e
fc-tmsync aur command implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
20 u_char *data; |
379574e5cf5e
fc-tmsync aur command implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
21 { |
379574e5cf5e
fc-tmsync aur command implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
22 u_char cmdpkt[5]; |
379574e5cf5e
fc-tmsync aur command implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
23 |
379574e5cf5e
fc-tmsync aur command implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
24 cmdpkt[1] = ETM_AUDIO; |
379574e5cf5e
fc-tmsync aur command implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
25 cmdpkt[2] = 'R'; |
379574e5cf5e
fc-tmsync aur command implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
26 cmdpkt[3] = param; |
379574e5cf5e
fc-tmsync aur command implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
27 etm_pkt_exch(cmdpkt, 3); |
379574e5cf5e
fc-tmsync aur command implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
28 if (rvi_msg[3]) { |
379574e5cf5e
fc-tmsync aur command implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
29 fprintf(stderr, "target error %u in response to aur\n", |
379574e5cf5e
fc-tmsync aur command implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
30 rvi_msg[3]); |
379574e5cf5e
fc-tmsync aur command implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
31 return(ERROR_TARGET); |
379574e5cf5e
fc-tmsync aur command implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
32 } |
379574e5cf5e
fc-tmsync aur command implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
33 if (rvi_msg_len < size + 7) { |
379574e5cf5e
fc-tmsync aur command implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
34 fprintf(stderr, "target error: aur response too short\n"); |
379574e5cf5e
fc-tmsync aur command implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
35 return(ERROR_TARGET); |
379574e5cf5e
fc-tmsync aur command implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
36 } |
379574e5cf5e
fc-tmsync aur command implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
37 if (rvi_msg[4] != 'R') { |
379574e5cf5e
fc-tmsync aur command implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
38 fprintf(stderr, "target error: aur response wrong type\n"); |
379574e5cf5e
fc-tmsync aur command implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
39 return(ERROR_TARGET); |
379574e5cf5e
fc-tmsync aur command implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
40 } |
379574e5cf5e
fc-tmsync aur command implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
41 if (rvi_msg[5] != param) { |
379574e5cf5e
fc-tmsync aur command implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
42 fprintf(stderr, "target error: aur response wrong index\n"); |
379574e5cf5e
fc-tmsync aur command implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
43 return(ERROR_TARGET); |
379574e5cf5e
fc-tmsync aur command implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
44 } |
379574e5cf5e
fc-tmsync aur command implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
45 bcopy(rvi_msg + 6, data, size); |
379574e5cf5e
fc-tmsync aur command implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
46 return(0); |
379574e5cf5e
fc-tmsync aur command implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
47 } |
379574e5cf5e
fc-tmsync aur command implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
48 |
379574e5cf5e
fc-tmsync aur command implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
49 cmd_aur(argc, argv) |
379574e5cf5e
fc-tmsync aur command implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
50 char **argv; |
379574e5cf5e
fc-tmsync aur command implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
51 { |
379574e5cf5e
fc-tmsync aur command implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
52 unsigned param, word; |
379574e5cf5e
fc-tmsync aur command implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
53 u_char data[62]; |
379574e5cf5e
fc-tmsync aur command implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
54 int size, rc, i; |
379574e5cf5e
fc-tmsync aur command implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
55 |
379574e5cf5e
fc-tmsync aur command implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
56 param = strtoul(argv[1], 0, 0); |
379574e5cf5e
fc-tmsync aur command implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
57 switch (param) { |
379574e5cf5e
fc-tmsync aur command implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
58 case AUDIO_PATH_USED: |
379574e5cf5e
fc-tmsync aur command implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
59 case AUDIO_MICROPHONE_MODE: |
379574e5cf5e
fc-tmsync aur command implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
60 case AUDIO_MICROPHONE_GAIN: |
379574e5cf5e
fc-tmsync aur command implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
61 case AUDIO_MICROPHONE_EXTRA_GAIN: |
379574e5cf5e
fc-tmsync aur command implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
62 case AUDIO_MICROPHONE_OUTPUT_BIAS: |
379574e5cf5e
fc-tmsync aur command implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
63 case AUDIO_SPEAKER_MODE: |
379574e5cf5e
fc-tmsync aur command implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
64 case AUDIO_SPEAKER_GAIN: |
379574e5cf5e
fc-tmsync aur command implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
65 case AUDIO_SPEAKER_FILTER: |
379574e5cf5e
fc-tmsync aur command implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
66 case AUDIO_SPEAKER_BUZZER_STATE: |
379574e5cf5e
fc-tmsync aur command implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
67 case AUDIO_MICROPHONE_SPEAKER_LOOP_SIDETONE: |
379574e5cf5e
fc-tmsync aur command implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
68 case AUDIO_SPEAKER_VOLUME_LEVEL: |
379574e5cf5e
fc-tmsync aur command implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
69 size = 1; |
379574e5cf5e
fc-tmsync aur command implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
70 break; |
379574e5cf5e
fc-tmsync aur command implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
71 case AUDIO_MICROPHONE_FIR: |
379574e5cf5e
fc-tmsync aur command implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
72 case AUDIO_SPEAKER_FIR: |
379574e5cf5e
fc-tmsync aur command implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
73 size = 62; |
379574e5cf5e
fc-tmsync aur command implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
74 break; |
379574e5cf5e
fc-tmsync aur command implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
75 case AUDIO_MICROPHONE_SPEAKER_LOOP_AEC: |
379574e5cf5e
fc-tmsync aur command implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
76 size = 24; |
379574e5cf5e
fc-tmsync aur command implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
77 break; |
379574e5cf5e
fc-tmsync aur command implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
78 default: |
379574e5cf5e
fc-tmsync aur command implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
79 fprintf(stderr, "error: unknown aur parameter\n"); |
379574e5cf5e
fc-tmsync aur command implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
80 return(ERROR_USAGE); |
379574e5cf5e
fc-tmsync aur command implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
81 } |
379574e5cf5e
fc-tmsync aur command implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
82 rc = do_aur(param, data, size); |
379574e5cf5e
fc-tmsync aur command implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
83 if (rc) |
379574e5cf5e
fc-tmsync aur command implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
84 return(rc); |
379574e5cf5e
fc-tmsync aur command implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
85 switch (param) { |
379574e5cf5e
fc-tmsync aur command implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
86 case AUDIO_PATH_USED: |
379574e5cf5e
fc-tmsync aur command implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
87 case AUDIO_SPEAKER_VOLUME_LEVEL: |
379574e5cf5e
fc-tmsync aur command implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
88 printf("%u\n", data[0]); |
379574e5cf5e
fc-tmsync aur command implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
89 break; |
379574e5cf5e
fc-tmsync aur command implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
90 case AUDIO_MICROPHONE_MODE: |
379574e5cf5e
fc-tmsync aur command implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
91 case AUDIO_MICROPHONE_GAIN: |
379574e5cf5e
fc-tmsync aur command implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
92 case AUDIO_MICROPHONE_EXTRA_GAIN: |
379574e5cf5e
fc-tmsync aur command implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
93 case AUDIO_MICROPHONE_OUTPUT_BIAS: |
379574e5cf5e
fc-tmsync aur command implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
94 case AUDIO_SPEAKER_MODE: |
379574e5cf5e
fc-tmsync aur command implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
95 case AUDIO_SPEAKER_GAIN: |
379574e5cf5e
fc-tmsync aur command implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
96 case AUDIO_SPEAKER_FILTER: |
379574e5cf5e
fc-tmsync aur command implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
97 case AUDIO_SPEAKER_BUZZER_STATE: |
379574e5cf5e
fc-tmsync aur command implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
98 case AUDIO_MICROPHONE_SPEAKER_LOOP_SIDETONE: |
379574e5cf5e
fc-tmsync aur command implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
99 i = data[0]; |
379574e5cf5e
fc-tmsync aur command implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
100 if (i >= 128) |
379574e5cf5e
fc-tmsync aur command implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
101 i -= 256; |
379574e5cf5e
fc-tmsync aur command implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
102 printf("%d\n", i); |
379574e5cf5e
fc-tmsync aur command implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
103 break; |
379574e5cf5e
fc-tmsync aur command implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
104 case AUDIO_MICROPHONE_FIR: |
379574e5cf5e
fc-tmsync aur command implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
105 case AUDIO_SPEAKER_FIR: |
379574e5cf5e
fc-tmsync aur command implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
106 fputs("fir-coeff-table\n\n", stdout); |
379574e5cf5e
fc-tmsync aur command implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
107 for (i = 0; i < 31; i++) { |
379574e5cf5e
fc-tmsync aur command implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
108 printf("0x%04X", (data[i*2+1] << 8) | data[i*2]); |
379574e5cf5e
fc-tmsync aur command implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
109 if (i == 7 || i == 15 || i == 23 || i == 30) |
379574e5cf5e
fc-tmsync aur command implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
110 putchar('\n'); |
379574e5cf5e
fc-tmsync aur command implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
111 else |
379574e5cf5e
fc-tmsync aur command implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
112 putchar(' '); |
379574e5cf5e
fc-tmsync aur command implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
113 } |
379574e5cf5e
fc-tmsync aur command implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
114 break; |
379574e5cf5e
fc-tmsync aur command implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
115 case AUDIO_MICROPHONE_SPEAKER_LOOP_AEC: |
379574e5cf5e
fc-tmsync aur command implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
116 fputs("aec-new", stdout); |
379574e5cf5e
fc-tmsync aur command implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
117 for (i = 0; i < 12; i++) { |
379574e5cf5e
fc-tmsync aur command implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
118 putchar(' '); |
379574e5cf5e
fc-tmsync aur command implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
119 word = (data[i*2+1] << 8) | data[i*2]; |
379574e5cf5e
fc-tmsync aur command implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
120 if (word) |
379574e5cf5e
fc-tmsync aur command implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
121 printf("0x%X", word); |
379574e5cf5e
fc-tmsync aur command implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
122 else |
379574e5cf5e
fc-tmsync aur command implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
123 putchar('0'); |
379574e5cf5e
fc-tmsync aur command implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
124 } |
379574e5cf5e
fc-tmsync aur command implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
125 putchar('\n'); |
379574e5cf5e
fc-tmsync aur command implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
126 break; |
379574e5cf5e
fc-tmsync aur command implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
127 } |
379574e5cf5e
fc-tmsync aur command implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
128 return(0); |
379574e5cf5e
fc-tmsync aur command implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
129 } |