annotate target-utils/simagent/tx.c @ 1014:961efadd530a default tip

fc-shell TCH DL handler: add support for CSD modes TCH DL capture mechanism in FC Tourmaline firmware has been extended to support CSD modes in addition to speech - add the necessary support on the host tools side. It needs to be noted that this mechanism in its present state does NOT provide the debug utility value that was sought: as we learned only after the code was implemented, TI's DSP has a misfeature in that the buffer we are reading (a_dd_0[]) is zeroed out when the IDS block is enabled, i.e., we are reading all zeros and not the real DL bits we were after. But since the code has already been written, we are keeping it - perhaps we can do some tests with IDS disabled.
author Mychaela Falconia <falcon@freecalypso.org>
date Tue, 26 Nov 2024 06:27:43 +0000
parents 289733ff272b
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
776
fac3176de18d simagent: bare Tx implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1 /*
fac3176de18d simagent: bare Tx implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
2 * This module implements transmission of bytes toward the SIM.
fac3176de18d simagent: bare Tx implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
3 */
fac3176de18d simagent: bare Tx implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
4
fac3176de18d simagent: bare Tx implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
5 #include "types.h"
fac3176de18d simagent: bare Tx implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
6 #include "simregs.h"
fac3176de18d simagent: bare Tx implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
7
fac3176de18d simagent: bare Tx implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
8 extern u16 conf1_reg;
fac3176de18d simagent: bare Tx implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
9
fac3176de18d simagent: bare Tx implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
10 send_to_sim(bytes, count)
fac3176de18d simagent: bare Tx implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
11 u8 *bytes;
fac3176de18d simagent: bare Tx implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
12 unsigned count;
fac3176de18d simagent: bare Tx implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
13 {
780
8a94593fb7ef simagent: Tx delays reduced in spenh mode
Mychaela Falconia <falcon@freecalypso.org>
parents: 778
diff changeset
14 unsigned n, timeout, delay;
776
fac3176de18d simagent: bare Tx implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
15
780
8a94593fb7ef simagent: Tx delays reduced in spenh mode
Mychaela Falconia <falcon@freecalypso.org>
parents: 778
diff changeset
16 if (conf1_reg & SIM_CONF1_ETU)
8a94593fb7ef simagent: Tx delays reduced in spenh mode
Mychaela Falconia <falcon@freecalypso.org>
parents: 778
diff changeset
17 delay = 6000;
8a94593fb7ef simagent: Tx delays reduced in spenh mode
Mychaela Falconia <falcon@freecalypso.org>
parents: 778
diff changeset
18 else
8a94593fb7ef simagent: Tx delays reduced in spenh mode
Mychaela Falconia <falcon@freecalypso.org>
parents: 778
diff changeset
19 delay = 30000;
776
fac3176de18d simagent: bare Tx implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
20 SIMREGS.conf1 = conf1_reg |= SIM_CONF1_TXRX;
fac3176de18d simagent: bare Tx implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
21 if (count == 1)
780
8a94593fb7ef simagent: Tx delays reduced in spenh mode
Mychaela Falconia <falcon@freecalypso.org>
parents: 778
diff changeset
22 wait_ARM_cycles(delay);
778
3ba64341137b simagent: bare Tx works with extra delays
Mychaela Falconia <falcon@freecalypso.org>
parents: 776
diff changeset
23 (void) SIMREGS.it;
776
fac3176de18d simagent: bare Tx implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
24 for (n = 0; ; ) {
fac3176de18d simagent: bare Tx implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
25 SIMREGS.dtx = bytes[n++];
fac3176de18d simagent: bare Tx implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
26 if (n == count) {
fac3176de18d simagent: bare Tx implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
27 SIMREGS.conf1 = conf1_reg &= ~SIM_CONF1_TXRX;
fac3176de18d simagent: bare Tx implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
28 return(0);
fac3176de18d simagent: bare Tx implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
29 }
780
8a94593fb7ef simagent: Tx delays reduced in spenh mode
Mychaela Falconia <falcon@freecalypso.org>
parents: 778
diff changeset
30 wait_ARM_cycles(delay);
776
fac3176de18d simagent: bare Tx implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
31 for (timeout = 12000; timeout; timeout--)
fac3176de18d simagent: bare Tx implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
32 if (SIMREGS.it & SIM_IT_ITTX)
fac3176de18d simagent: bare Tx implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
33 break;
fac3176de18d simagent: bare Tx implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
34 if (!timeout) {
778
3ba64341137b simagent: bare Tx works with extra delays
Mychaela Falconia <falcon@freecalypso.org>
parents: 776
diff changeset
35 printf("ERROR: SIM interface Tx timeout on byte %u\n",
3ba64341137b simagent: bare Tx works with extra delays
Mychaela Falconia <falcon@freecalypso.org>
parents: 776
diff changeset
36 n);
776
fac3176de18d simagent: bare Tx implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
37 return(-1);
fac3176de18d simagent: bare Tx implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
38 }
fac3176de18d simagent: bare Tx implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
39 }
fac3176de18d simagent: bare Tx implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
40 }
fac3176de18d simagent: bare Tx implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
41
781
289733ff272b simagent/tx.c: forgot void on the cmd_tx() function
Mychaela Falconia <falcon@freecalypso.org>
parents: 780
diff changeset
42 void
776
fac3176de18d simagent: bare Tx implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
43 cmd_tx(argstr)
fac3176de18d simagent: bare Tx implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
44 char *argstr;
fac3176de18d simagent: bare Tx implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
45 {
fac3176de18d simagent: bare Tx implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
46 u8 bytes[5];
fac3176de18d simagent: bare Tx implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
47 int rc;
fac3176de18d simagent: bare Tx implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
48
fac3176de18d simagent: bare Tx implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
49 rc = decode_hex_string_arg(argstr, bytes, sizeof bytes);
fac3176de18d simagent: bare Tx implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
50 if (rc < 0)
fac3176de18d simagent: bare Tx implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
51 return;
fac3176de18d simagent: bare Tx implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
52 if (rc == 0) {
fac3176de18d simagent: bare Tx implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
53 printf("ERROR: empty hex string argument\n");
fac3176de18d simagent: bare Tx implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
54 return;
fac3176de18d simagent: bare Tx implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
55 }
fac3176de18d simagent: bare Tx implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
56 send_to_sim(bytes, rc);
fac3176de18d simagent: bare Tx implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
57 }