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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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 }