annotate src/g23m-aci/aci/ati_fcmisc.c @ 303:f76436d19a7a default tip

!GPRS config: fix long-standing AT+COPS chance hanging bug There has been a long-standing bug in FreeCalypso going back years: sometimes in the AT command bring-up sequence of an ACI-only MS, the AT+COPS command would produce only a power scan followed by cessation of protocol stack activity (only L1 ADC traces), instead of the expected network search sequence. This behaviour was seen in different FC firmware versions going back to Citrine, and seemed to follow some law of chance, not reliably repeatable. This bug has been tracked down and found to be specific to !GPRS configuration, stemming from our TCS2/TCS3 hybrid and reconstruction of !GPRS support that was bitrotten in TCS3.2/LoCosto version. ACI module psa_mms.c, needed only for !GPRS, was missing in the TCS3 version and had to be pulled from TCS2 - but as it turns out, there is a new field in the MMR_REG_REQ primitive that needs to be set correctly, and that psa_mms.c module is the place where this initialization needed to be added.
author Mychaela Falconia <falcon@freecalypso.org>
date Thu, 08 Jun 2023 08:23:37 +0000
parents d32ac4edb634
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1 /*
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
2 * This module implements miscellaneous FreeCalypso-added AT commands.
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
3 */
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
4
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
5 #ifndef ATI_FCMISC_C
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
6 #define ATI_FCMISC_C
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
7
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
8 #include "aci_all.h"
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
9
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
10 #include <ctype.h>
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
11 #include <string.h>
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
12
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
13 #include "aci_cmh.h"
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
14 #include "ati_cmd.h"
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
15 #include "aci_cmd.h"
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
16 #include "aci_io.h"
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
17 #include "aci_cmd.h"
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
18 #include "l4_tim.h"
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
19 #include "line_edit.h"
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
20 #include "aci_lst.h"
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
21
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
22 #include "pcm.h"
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
23 #include "audio.h"
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
24 #include "aci.h"
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
25 #include "rx.h"
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
26 #include "pwr.h"
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
27 #include "l4_tim.h"
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
28
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
29 #ifdef GPRS
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
30 #ifdef DTI
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
31 #include "dti.h"
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
32 #include "dti_conn_mng.h"
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
33 #include "dti_cntrl_mng.h"
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
34 #endif /* DTI */
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
35 #include "gaci.h"
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
36 #include "gaci_cmh.h"
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
37 #include "gaci_cmd.h"
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
38 #endif /* GPRS */
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
39
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
40 #include "aci_mem.h"
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
41 #include "aci_prs.h"
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
42
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
43 #include "ati_int.h"
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
44
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
45 #ifndef _SIMULATION_
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
46 #include "ffs/ffs.h"
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
47 #endif
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
48
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
49 #ifdef FF_ATI_BAT
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
50
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
51 #include "typedefs.h"
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
52 #include "gdd.h"
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
53 #include "bat.h"
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
54
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
55 #include "ati_bat.h"
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
56
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
57 #endif /*FF_ATI_BAT*/
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
58
301
4bb5772a05a3 AT%SPVER: new command for setting custom speech version lists
Mychaela Falconia <falcon@freecalypso.org>
parents: 299
diff changeset
59 #include "cl_user_spver.h"
4bb5772a05a3 AT%SPVER: new command for setting custom speech version lists
Mychaela Falconia <falcon@freecalypso.org>
parents: 299
diff changeset
60
296
a927f030a4e0 add AT@VIBR and AT@VIBS commands for testing VIBR SWE
Mychaela Falconia <falcon@freecalypso.org>
parents: 1
diff changeset
61 #include "rv/rv_defined_swe.h" /* for RVM_BUZM_SWE and RVM_VIBR_SWE */
1
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
62 #include "main/sys_types.h"
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
63 #include "fc-target.h"
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
64 #include "armio.h"
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
65
299
91e61d00a6b5 add AT@BUZ and AT@BZSTOP commands for testing BUZM SWE
Mychaela Falconia <falcon@freecalypso.org>
parents: 296
diff changeset
66 #ifdef RVM_BUZM_SWE
91e61d00a6b5 add AT@BUZ and AT@BZSTOP commands for testing BUZM SWE
Mychaela Falconia <falcon@freecalypso.org>
parents: 296
diff changeset
67 #include "buzm/buzm_api.h"
91e61d00a6b5 add AT@BUZ and AT@BZSTOP commands for testing BUZM SWE
Mychaela Falconia <falcon@freecalypso.org>
parents: 296
diff changeset
68 #endif
91e61d00a6b5 add AT@BUZ and AT@BZSTOP commands for testing BUZM SWE
Mychaela Falconia <falcon@freecalypso.org>
parents: 296
diff changeset
69
296
a927f030a4e0 add AT@VIBR and AT@VIBS commands for testing VIBR SWE
Mychaela Falconia <falcon@freecalypso.org>
parents: 1
diff changeset
70 #ifdef RVM_VIBR_SWE
a927f030a4e0 add AT@VIBR and AT@VIBS commands for testing VIBR SWE
Mychaela Falconia <falcon@freecalypso.org>
parents: 1
diff changeset
71 #include "vibr/vibr_api.h"
a927f030a4e0 add AT@VIBR and AT@VIBS commands for testing VIBR SWE
Mychaela Falconia <falcon@freecalypso.org>
parents: 1
diff changeset
72 #endif
a927f030a4e0 add AT@VIBR and AT@VIBS commands for testing VIBR SWE
Mychaela Falconia <falcon@freecalypso.org>
parents: 1
diff changeset
73
1
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
74 extern SYS_UWORD8 SIM_allow_speed_enhancement;
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
75
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
76 /* AT@SPENH - enable or disable SIM speed enhancement */
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
77 GLOBAL T_ATI_RSLT atAtSPENH ( char *cl, UBYTE srcId )
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
78 {
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
79 int state, nonvol = 0;
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
80
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
81 TRACE_FUNCTION("atAtSPENH()");
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
82
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
83 cl = parse(cl, "Dd", &state, &nonvol);
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
84 if (!cl)
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
85 return (ATI_FAIL);
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
86 if (state != 0 && state != 1)
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
87 return (ATI_FAIL);
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
88 SIM_allow_speed_enhancement = state;
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
89 if (!nonvol)
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
90 return (ATI_CMPL);
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
91 ffs_mkdir("/etc");
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
92 if (ffs_file_write("/etc/SIM_spenh", &SIM_allow_speed_enhancement, 1,
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
93 FFS_O_CREATE | FFS_O_TRUNC) == EFFS_OK)
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
94 return (ATI_CMPL);
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
95 else
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
96 return (ATI_FAIL);
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
97 }
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
98
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
99 GLOBAL T_ATI_RSLT queatAtSPENH (char *cl, UBYTE srcId)
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
100 {
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
101 char *me="@SPENH: ";
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
102
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
103 TRACE_FUNCTION("queatAtSPENH()");
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
104
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
105 sprintf(g_sa, "%s%u", me, SIM_allow_speed_enhancement);
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
106 io_sendMessage(srcId, g_sa, ATI_NORMAL_OUTPUT);
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
107 return (ATI_CMPL);
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
108 }
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
109
302
d32ac4edb634 aci: add AT%MSCAP command for tinkering with /pcm/MSCAP
Mychaela Falconia <falcon@freecalypso.org>
parents: 301
diff changeset
110 /* AT%MSCAP - tinker with /pcm/MSCAP settings */
d32ac4edb634 aci: add AT%MSCAP command for tinkering with /pcm/MSCAP
Mychaela Falconia <falcon@freecalypso.org>
parents: 301
diff changeset
111 GLOBAL T_ATI_RSLT atPercentMSCAP (char *cl, UBYTE srcId)
d32ac4edb634 aci: add AT%MSCAP command for tinkering with /pcm/MSCAP
Mychaela Falconia <falcon@freecalypso.org>
parents: 301
diff changeset
112 {
d32ac4edb634 aci: add AT%MSCAP command for tinkering with /pcm/MSCAP
Mychaela Falconia <falcon@freecalypso.org>
parents: 301
diff changeset
113 EF_MSCAP mscap;
d32ac4edb634 aci: add AT%MSCAP command for tinkering with /pcm/MSCAP
Mychaela Falconia <falcon@freecalypso.org>
parents: 301
diff changeset
114
d32ac4edb634 aci: add AT%MSCAP command for tinkering with /pcm/MSCAP
Mychaela Falconia <falcon@freecalypso.org>
parents: 301
diff changeset
115 TRACE_FUNCTION("atPercentMSCAP()");
d32ac4edb634 aci: add AT%MSCAP command for tinkering with /pcm/MSCAP
Mychaela Falconia <falcon@freecalypso.org>
parents: 301
diff changeset
116
d32ac4edb634 aci: add AT%MSCAP command for tinkering with /pcm/MSCAP
Mychaela Falconia <falcon@freecalypso.org>
parents: 301
diff changeset
117 mscap.featLst1 = 0;
d32ac4edb634 aci: add AT%MSCAP command for tinkering with /pcm/MSCAP
Mychaela Falconia <falcon@freecalypso.org>
parents: 301
diff changeset
118 mscap.featLst2 = 0;
d32ac4edb634 aci: add AT%MSCAP command for tinkering with /pcm/MSCAP
Mychaela Falconia <falcon@freecalypso.org>
parents: 301
diff changeset
119 mscap.featLst3 = 0;
d32ac4edb634 aci: add AT%MSCAP command for tinkering with /pcm/MSCAP
Mychaela Falconia <falcon@freecalypso.org>
parents: 301
diff changeset
120 cl = parse(cl, "XXXxxx", &mscap.chnMode, &mscap.datCap1, &mscap.datCap2,
d32ac4edb634 aci: add AT%MSCAP command for tinkering with /pcm/MSCAP
Mychaela Falconia <falcon@freecalypso.org>
parents: 301
diff changeset
121 &mscap.featLst1, &mscap.featLst2, &mscap.featLst3);
d32ac4edb634 aci: add AT%MSCAP command for tinkering with /pcm/MSCAP
Mychaela Falconia <falcon@freecalypso.org>
parents: 301
diff changeset
122 if (!cl)
d32ac4edb634 aci: add AT%MSCAP command for tinkering with /pcm/MSCAP
Mychaela Falconia <falcon@freecalypso.org>
parents: 301
diff changeset
123 return (ATI_FAIL);
d32ac4edb634 aci: add AT%MSCAP command for tinkering with /pcm/MSCAP
Mychaela Falconia <falcon@freecalypso.org>
parents: 301
diff changeset
124 pcm_WriteFile((UBYTE *) EF_MSCAP_ID, SIZE_EF_MSCAP, (UBYTE *) &mscap);
d32ac4edb634 aci: add AT%MSCAP command for tinkering with /pcm/MSCAP
Mychaela Falconia <falcon@freecalypso.org>
parents: 301
diff changeset
125 return (ATI_CMPL);
d32ac4edb634 aci: add AT%MSCAP command for tinkering with /pcm/MSCAP
Mychaela Falconia <falcon@freecalypso.org>
parents: 301
diff changeset
126 }
d32ac4edb634 aci: add AT%MSCAP command for tinkering with /pcm/MSCAP
Mychaela Falconia <falcon@freecalypso.org>
parents: 301
diff changeset
127
d32ac4edb634 aci: add AT%MSCAP command for tinkering with /pcm/MSCAP
Mychaela Falconia <falcon@freecalypso.org>
parents: 301
diff changeset
128 GLOBAL T_ATI_RSLT queatPercentMSCAP (char *cl, UBYTE srcId)
d32ac4edb634 aci: add AT%MSCAP command for tinkering with /pcm/MSCAP
Mychaela Falconia <falcon@freecalypso.org>
parents: 301
diff changeset
129 {
d32ac4edb634 aci: add AT%MSCAP command for tinkering with /pcm/MSCAP
Mychaela Falconia <falcon@freecalypso.org>
parents: 301
diff changeset
130 EF_MSCAP mscap;
d32ac4edb634 aci: add AT%MSCAP command for tinkering with /pcm/MSCAP
Mychaela Falconia <falcon@freecalypso.org>
parents: 301
diff changeset
131 UBYTE version;
d32ac4edb634 aci: add AT%MSCAP command for tinkering with /pcm/MSCAP
Mychaela Falconia <falcon@freecalypso.org>
parents: 301
diff changeset
132 char *me="%MSCAP: ";
d32ac4edb634 aci: add AT%MSCAP command for tinkering with /pcm/MSCAP
Mychaela Falconia <falcon@freecalypso.org>
parents: 301
diff changeset
133
d32ac4edb634 aci: add AT%MSCAP command for tinkering with /pcm/MSCAP
Mychaela Falconia <falcon@freecalypso.org>
parents: 301
diff changeset
134 pcm_ReadFile((UBYTE *) EF_MSCAP_ID, SIZE_EF_MSCAP, (UBYTE *) &mscap,
d32ac4edb634 aci: add AT%MSCAP command for tinkering with /pcm/MSCAP
Mychaela Falconia <falcon@freecalypso.org>
parents: 301
diff changeset
135 &version);
d32ac4edb634 aci: add AT%MSCAP command for tinkering with /pcm/MSCAP
Mychaela Falconia <falcon@freecalypso.org>
parents: 301
diff changeset
136 sprintf(g_sa, "%s%02X,%02X,%02X,%02X,%02X,%02X", me, mscap.chnMode,
d32ac4edb634 aci: add AT%MSCAP command for tinkering with /pcm/MSCAP
Mychaela Falconia <falcon@freecalypso.org>
parents: 301
diff changeset
137 mscap.datCap1, mscap.datCap2, mscap.featLst1, mscap.featLst2,
d32ac4edb634 aci: add AT%MSCAP command for tinkering with /pcm/MSCAP
Mychaela Falconia <falcon@freecalypso.org>
parents: 301
diff changeset
138 mscap.featLst3);
d32ac4edb634 aci: add AT%MSCAP command for tinkering with /pcm/MSCAP
Mychaela Falconia <falcon@freecalypso.org>
parents: 301
diff changeset
139 io_sendMessage(srcId, g_sa, ATI_NORMAL_OUTPUT);
d32ac4edb634 aci: add AT%MSCAP command for tinkering with /pcm/MSCAP
Mychaela Falconia <falcon@freecalypso.org>
parents: 301
diff changeset
140 return (ATI_CMPL);
d32ac4edb634 aci: add AT%MSCAP command for tinkering with /pcm/MSCAP
Mychaela Falconia <falcon@freecalypso.org>
parents: 301
diff changeset
141 }
d32ac4edb634 aci: add AT%MSCAP command for tinkering with /pcm/MSCAP
Mychaela Falconia <falcon@freecalypso.org>
parents: 301
diff changeset
142
301
4bb5772a05a3 AT%SPVER: new command for setting custom speech version lists
Mychaela Falconia <falcon@freecalypso.org>
parents: 299
diff changeset
143 /* AT%SPVER - set custom speech version list */
4bb5772a05a3 AT%SPVER: new command for setting custom speech version lists
Mychaela Falconia <falcon@freecalypso.org>
parents: 299
diff changeset
144 GLOBAL T_ATI_RSLT atPercentSPVER (char *cl, UBYTE srcId)
4bb5772a05a3 AT%SPVER: new command for setting custom speech version lists
Mychaela Falconia <falcon@freecalypso.org>
parents: 299
diff changeset
145 {
4bb5772a05a3 AT%SPVER: new command for setting custom speech version lists
Mychaela Falconia <falcon@freecalypso.org>
parents: 299
diff changeset
146 UBYTE spver_set;
4bb5772a05a3 AT%SPVER: new command for setting custom speech version lists
Mychaela Falconia <falcon@freecalypso.org>
parents: 299
diff changeset
147 UBYTE spver_list[5] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
4bb5772a05a3 AT%SPVER: new command for setting custom speech version lists
Mychaela Falconia <falcon@freecalypso.org>
parents: 299
diff changeset
148 UBYTE spver_rc;
4bb5772a05a3 AT%SPVER: new command for setting custom speech version lists
Mychaela Falconia <falcon@freecalypso.org>
parents: 299
diff changeset
149
4bb5772a05a3 AT%SPVER: new command for setting custom speech version lists
Mychaela Falconia <falcon@freecalypso.org>
parents: 299
diff changeset
150 TRACE_FUNCTION("atPercentSPVER()");
4bb5772a05a3 AT%SPVER: new command for setting custom speech version lists
Mychaela Falconia <falcon@freecalypso.org>
parents: 299
diff changeset
151
4bb5772a05a3 AT%SPVER: new command for setting custom speech version lists
Mychaela Falconia <falcon@freecalypso.org>
parents: 299
diff changeset
152 cl = parse(cl, "Xxxxxx", &spver_set, &spver_list[0], &spver_list[1],
4bb5772a05a3 AT%SPVER: new command for setting custom speech version lists
Mychaela Falconia <falcon@freecalypso.org>
parents: 299
diff changeset
153 &spver_list[2], &spver_list[3], &spver_list[4]);
4bb5772a05a3 AT%SPVER: new command for setting custom speech version lists
Mychaela Falconia <falcon@freecalypso.org>
parents: 299
diff changeset
154 if (!cl)
4bb5772a05a3 AT%SPVER: new command for setting custom speech version lists
Mychaela Falconia <falcon@freecalypso.org>
parents: 299
diff changeset
155 return (ATI_FAIL);
4bb5772a05a3 AT%SPVER: new command for setting custom speech version lists
Mychaela Falconia <falcon@freecalypso.org>
parents: 299
diff changeset
156 switch (spver_set) {
4bb5772a05a3 AT%SPVER: new command for setting custom speech version lists
Mychaela Falconia <falcon@freecalypso.org>
parents: 299
diff changeset
157 case CL_USER_SPVER_IS_NOT_SET:
4bb5772a05a3 AT%SPVER: new command for setting custom speech version lists
Mychaela Falconia <falcon@freecalypso.org>
parents: 299
diff changeset
158 cl_user_spver_reset();
4bb5772a05a3 AT%SPVER: new command for setting custom speech version lists
Mychaela Falconia <falcon@freecalypso.org>
parents: 299
diff changeset
159 return (ATI_CMPL);
4bb5772a05a3 AT%SPVER: new command for setting custom speech version lists
Mychaela Falconia <falcon@freecalypso.org>
parents: 299
diff changeset
160 case CL_USER_SPVER_IS_SET:
4bb5772a05a3 AT%SPVER: new command for setting custom speech version lists
Mychaela Falconia <falcon@freecalypso.org>
parents: 299
diff changeset
161 spver_rc = cl_user_spver_set(spver_list);
4bb5772a05a3 AT%SPVER: new command for setting custom speech version lists
Mychaela Falconia <falcon@freecalypso.org>
parents: 299
diff changeset
162 if (spver_rc == CL_USER_SPVER_SET_OK)
4bb5772a05a3 AT%SPVER: new command for setting custom speech version lists
Mychaela Falconia <falcon@freecalypso.org>
parents: 299
diff changeset
163 return (ATI_CMPL);
4bb5772a05a3 AT%SPVER: new command for setting custom speech version lists
Mychaela Falconia <falcon@freecalypso.org>
parents: 299
diff changeset
164 else
4bb5772a05a3 AT%SPVER: new command for setting custom speech version lists
Mychaela Falconia <falcon@freecalypso.org>
parents: 299
diff changeset
165 return (ATI_FAIL);
4bb5772a05a3 AT%SPVER: new command for setting custom speech version lists
Mychaela Falconia <falcon@freecalypso.org>
parents: 299
diff changeset
166 default:
4bb5772a05a3 AT%SPVER: new command for setting custom speech version lists
Mychaela Falconia <falcon@freecalypso.org>
parents: 299
diff changeset
167 return (ATI_FAIL);
4bb5772a05a3 AT%SPVER: new command for setting custom speech version lists
Mychaela Falconia <falcon@freecalypso.org>
parents: 299
diff changeset
168 }
4bb5772a05a3 AT%SPVER: new command for setting custom speech version lists
Mychaela Falconia <falcon@freecalypso.org>
parents: 299
diff changeset
169 }
4bb5772a05a3 AT%SPVER: new command for setting custom speech version lists
Mychaela Falconia <falcon@freecalypso.org>
parents: 299
diff changeset
170
4bb5772a05a3 AT%SPVER: new command for setting custom speech version lists
Mychaela Falconia <falcon@freecalypso.org>
parents: 299
diff changeset
171 GLOBAL T_ATI_RSLT queatPercentSPVER (char *cl, UBYTE srcId)
4bb5772a05a3 AT%SPVER: new command for setting custom speech version lists
Mychaela Falconia <falcon@freecalypso.org>
parents: 299
diff changeset
172 {
4bb5772a05a3 AT%SPVER: new command for setting custom speech version lists
Mychaela Falconia <falcon@freecalypso.org>
parents: 299
diff changeset
173 UBYTE spver_set, rad_chan_req;
4bb5772a05a3 AT%SPVER: new command for setting custom speech version lists
Mychaela Falconia <falcon@freecalypso.org>
parents: 299
diff changeset
174 UBYTE spver_list[5], n, sv;
4bb5772a05a3 AT%SPVER: new command for setting custom speech version lists
Mychaela Falconia <falcon@freecalypso.org>
parents: 299
diff changeset
175 char *me="%SPVER: ";
4bb5772a05a3 AT%SPVER: new command for setting custom speech version lists
Mychaela Falconia <falcon@freecalypso.org>
parents: 299
diff changeset
176 char add[5];
4bb5772a05a3 AT%SPVER: new command for setting custom speech version lists
Mychaela Falconia <falcon@freecalypso.org>
parents: 299
diff changeset
177
4bb5772a05a3 AT%SPVER: new command for setting custom speech version lists
Mychaela Falconia <falcon@freecalypso.org>
parents: 299
diff changeset
178 spver_set = cl_user_spver_get(spver_list, &rad_chan_req);
4bb5772a05a3 AT%SPVER: new command for setting custom speech version lists
Mychaela Falconia <falcon@freecalypso.org>
parents: 299
diff changeset
179 sprintf(g_sa, "%s%u", me, spver_set);
4bb5772a05a3 AT%SPVER: new command for setting custom speech version lists
Mychaela Falconia <falcon@freecalypso.org>
parents: 299
diff changeset
180 if (spver_set == CL_USER_SPVER_IS_SET) {
4bb5772a05a3 AT%SPVER: new command for setting custom speech version lists
Mychaela Falconia <falcon@freecalypso.org>
parents: 299
diff changeset
181 for (n = 0; n < 5; n++) {
4bb5772a05a3 AT%SPVER: new command for setting custom speech version lists
Mychaela Falconia <falcon@freecalypso.org>
parents: 299
diff changeset
182 sv = spver_list[n];
4bb5772a05a3 AT%SPVER: new command for setting custom speech version lists
Mychaela Falconia <falcon@freecalypso.org>
parents: 299
diff changeset
183 if (sv == NOT_PRESENT_8BIT)
4bb5772a05a3 AT%SPVER: new command for setting custom speech version lists
Mychaela Falconia <falcon@freecalypso.org>
parents: 299
diff changeset
184 break;
4bb5772a05a3 AT%SPVER: new command for setting custom speech version lists
Mychaela Falconia <falcon@freecalypso.org>
parents: 299
diff changeset
185 sprintf(add, ",%u", sv);
4bb5772a05a3 AT%SPVER: new command for setting custom speech version lists
Mychaela Falconia <falcon@freecalypso.org>
parents: 299
diff changeset
186 strcat(g_sa, add);
4bb5772a05a3 AT%SPVER: new command for setting custom speech version lists
Mychaela Falconia <falcon@freecalypso.org>
parents: 299
diff changeset
187 }
4bb5772a05a3 AT%SPVER: new command for setting custom speech version lists
Mychaela Falconia <falcon@freecalypso.org>
parents: 299
diff changeset
188 }
4bb5772a05a3 AT%SPVER: new command for setting custom speech version lists
Mychaela Falconia <falcon@freecalypso.org>
parents: 299
diff changeset
189 io_sendMessage(srcId, g_sa, ATI_NORMAL_OUTPUT);
4bb5772a05a3 AT%SPVER: new command for setting custom speech version lists
Mychaela Falconia <falcon@freecalypso.org>
parents: 299
diff changeset
190 return (ATI_CMPL);
4bb5772a05a3 AT%SPVER: new command for setting custom speech version lists
Mychaela Falconia <falcon@freecalypso.org>
parents: 299
diff changeset
191 }
4bb5772a05a3 AT%SPVER: new command for setting custom speech version lists
Mychaela Falconia <falcon@freecalypso.org>
parents: 299
diff changeset
192
1
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
193 #ifdef TARGET_HAS_LPG
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
194 /* AT@LPG - program LPG output */
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
195 GLOBAL T_ATI_RSLT atAtLPG ( char *cl, UBYTE srcId )
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
196 {
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
197 unsigned glob, period = 0, ontime = 0;
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
198
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
199 TRACE_FUNCTION("atAtLPG()");
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
200
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
201 cl = parse(cl, "Ddd", &glob, &period, &ontime);
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
202 if (!cl)
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
203 return (ATI_FAIL);
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
204 if (glob > 3 || period > 7 || ontime > 7)
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
205 return (ATI_FAIL);
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
206 *(volatile SYS_UWORD8 *)0xFFFE7801 = 0x01;
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
207 *(volatile SYS_UWORD8 *)0xFFFE7800 =
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
208 (glob << 6) | (ontime << 3) | period;
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
209 return (ATI_CMPL);
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
210 }
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
211
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
212 GLOBAL T_ATI_RSLT queatAtLPG (char *cl, UBYTE srcId)
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
213 {
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
214 char *me="@LPG: ";
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
215 SYS_UWORD8 regval;
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
216 unsigned glob, period, ontime;
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
217
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
218 TRACE_FUNCTION("queatAtLPG()");
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
219
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
220 regval = *(volatile SYS_UWORD8 *)0xFFFE7800;
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
221 glob = (regval >> 6) & 3;
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
222 ontime = (regval >> 3) & 7;
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
223 period = regval & 7;
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
224 sprintf(g_sa, "%s%u,%u,%u", me, glob, period, ontime);
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
225 io_sendMessage(srcId, g_sa, ATI_NORMAL_OUTPUT);
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
226 return (ATI_CMPL);
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
227 }
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
228 #endif /* TARGET_HAS_LPG */
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
229
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
230 #ifdef TARGET_HAS_PWL
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
231 /* AT@PWL - program PWL output */
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
232 GLOBAL T_ATI_RSLT atAtPWL ( char *cl, UBYTE srcId )
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
233 {
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
234 unsigned level;
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
235
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
236 TRACE_FUNCTION("atAtPWL()");
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
237
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
238 cl = parse(cl, "D", &level);
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
239 if (!cl)
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
240 return (ATI_FAIL);
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
241 if (level > 255)
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
242 return (ATI_FAIL);
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
243 *(volatile SYS_UWORD8 *)0xFFFE8000 = level;
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
244 *(volatile SYS_UWORD8 *)0xFFFE8001 = 0x01;
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
245 return (ATI_CMPL);
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
246 }
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
247
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
248 GLOBAL T_ATI_RSLT queatAtPWL (char *cl, UBYTE srcId)
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
249 {
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
250 char *me="@PWL: ";
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
251 SYS_UWORD8 regval;
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
252
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
253 TRACE_FUNCTION("queatAtPWL()");
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
254
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
255 regval = *(volatile SYS_UWORD8 *)0xFFFE8000;
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
256 sprintf(g_sa, "%s%u", me, regval);
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
257 io_sendMessage(srcId, g_sa, ATI_NORMAL_OUTPUT);
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
258 return (ATI_CMPL);
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
259 }
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
260 #endif /* TARGET_HAS_PWL */
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
261
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
262 /* AT+IOR - read GPIO pin */
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
263 GLOBAL T_ATI_RSLT atPlusIOR (char *cl, UBYTE srcId)
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
264 {
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
265 char *me="+IOR: ";
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
266 unsigned ionum;
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
267 int state;
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
268
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
269 TRACE_FUNCTION("atPlusIOR()");
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
270
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
271 cl = parse(cl, "D", &ionum);
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
272 if (!cl)
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
273 return (ATI_FAIL);
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
274 if (ionum > 13)
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
275 return (ATI_FAIL);
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
276 state = AI_ReadBit(ionum);
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
277 sprintf(g_sa, "%s%u,%d", me, ionum, state);
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
278 io_sendMessage(srcId, g_sa, ATI_NORMAL_OUTPUT);
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
279 return (ATI_CMPL);
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
280 }
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
281
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
282 /* AT+IOW - set GPIO pin */
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
283 GLOBAL T_ATI_RSLT atPlusIOW (char *cl, UBYTE srcId)
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
284 {
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
285 unsigned ionum;
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
286 int state;
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
287
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
288 TRACE_FUNCTION("atPlusIOW()");
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
289
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
290 cl = parse(cl, "DD", &ionum, &state);
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
291 if (!cl)
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
292 return (ATI_FAIL);
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
293 if (ionum > 13)
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
294 return (ATI_FAIL);
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
295 if (state)
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
296 AI_SetBit(ionum);
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
297 else
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
298 AI_ResetBit(ionum);
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
299 return (ATI_CMPL);
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
300 }
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
301
299
91e61d00a6b5 add AT@BUZ and AT@BZSTOP commands for testing BUZM SWE
Mychaela Falconia <falcon@freecalypso.org>
parents: 296
diff changeset
302 #ifdef RVM_BUZM_SWE
91e61d00a6b5 add AT@BUZ and AT@BZSTOP commands for testing BUZM SWE
Mychaela Falconia <falcon@freecalypso.org>
parents: 296
diff changeset
303 /* AT@BUZ - play a buzzer melody */
91e61d00a6b5 add AT@BUZ and AT@BZSTOP commands for testing BUZM SWE
Mychaela Falconia <falcon@freecalypso.org>
parents: 296
diff changeset
304 GLOBAL T_ATI_RSLT atAtBUZ ( char *cl, UBYTE srcId )
91e61d00a6b5 add AT@BUZ and AT@BZSTOP commands for testing BUZM SWE
Mychaela Falconia <falcon@freecalypso.org>
parents: 296
diff changeset
305 {
91e61d00a6b5 add AT@BUZ and AT@BZSTOP commands for testing BUZM SWE
Mychaela Falconia <falcon@freecalypso.org>
parents: 296
diff changeset
306 char melody_name[20];
91e61d00a6b5 add AT@BUZ and AT@BZSTOP commands for testing BUZM SWE
Mychaela Falconia <falcon@freecalypso.org>
parents: 296
diff changeset
307 int play_volume = BUZM_VOLUME_MAX;
91e61d00a6b5 add AT@BUZ and AT@BZSTOP commands for testing BUZM SWE
Mychaela Falconia <falcon@freecalypso.org>
parents: 296
diff changeset
308 int loopback = 0;
91e61d00a6b5 add AT@BUZ and AT@BZSTOP commands for testing BUZM SWE
Mychaela Falconia <falcon@freecalypso.org>
parents: 296
diff changeset
309
91e61d00a6b5 add AT@BUZ and AT@BZSTOP commands for testing BUZM SWE
Mychaela Falconia <falcon@freecalypso.org>
parents: 296
diff changeset
310 cl = parse(cl, "Sdd", (LONG)(sizeof(melody_name)), melody_name,
91e61d00a6b5 add AT@BUZ and AT@BZSTOP commands for testing BUZM SWE
Mychaela Falconia <falcon@freecalypso.org>
parents: 296
diff changeset
311 &play_volume, &loopback);
91e61d00a6b5 add AT@BUZ and AT@BZSTOP commands for testing BUZM SWE
Mychaela Falconia <falcon@freecalypso.org>
parents: 296
diff changeset
312 if (!cl || !melody_name[0])
91e61d00a6b5 add AT@BUZ and AT@BZSTOP commands for testing BUZM SWE
Mychaela Falconia <falcon@freecalypso.org>
parents: 296
diff changeset
313 return (ATI_FAIL);
91e61d00a6b5 add AT@BUZ and AT@BZSTOP commands for testing BUZM SWE
Mychaela Falconia <falcon@freecalypso.org>
parents: 296
diff changeset
314 if (buzm_play_melody(melody_name, play_volume, loopback) == RV_OK)
91e61d00a6b5 add AT@BUZ and AT@BZSTOP commands for testing BUZM SWE
Mychaela Falconia <falcon@freecalypso.org>
parents: 296
diff changeset
315 return (ATI_CMPL);
91e61d00a6b5 add AT@BUZ and AT@BZSTOP commands for testing BUZM SWE
Mychaela Falconia <falcon@freecalypso.org>
parents: 296
diff changeset
316 else
91e61d00a6b5 add AT@BUZ and AT@BZSTOP commands for testing BUZM SWE
Mychaela Falconia <falcon@freecalypso.org>
parents: 296
diff changeset
317 return (ATI_FAIL);
91e61d00a6b5 add AT@BUZ and AT@BZSTOP commands for testing BUZM SWE
Mychaela Falconia <falcon@freecalypso.org>
parents: 296
diff changeset
318 }
91e61d00a6b5 add AT@BUZ and AT@BZSTOP commands for testing BUZM SWE
Mychaela Falconia <falcon@freecalypso.org>
parents: 296
diff changeset
319
91e61d00a6b5 add AT@BUZ and AT@BZSTOP commands for testing BUZM SWE
Mychaela Falconia <falcon@freecalypso.org>
parents: 296
diff changeset
320 /* AT@BZSTOP - stop melody started with AT@BUZ */
91e61d00a6b5 add AT@BUZ and AT@BZSTOP commands for testing BUZM SWE
Mychaela Falconia <falcon@freecalypso.org>
parents: 296
diff changeset
321 GLOBAL T_ATI_RSLT atAtBZSTOP ( char *cl, UBYTE srcId )
91e61d00a6b5 add AT@BUZ and AT@BZSTOP commands for testing BUZM SWE
Mychaela Falconia <falcon@freecalypso.org>
parents: 296
diff changeset
322 {
91e61d00a6b5 add AT@BUZ and AT@BZSTOP commands for testing BUZM SWE
Mychaela Falconia <falcon@freecalypso.org>
parents: 296
diff changeset
323 if (buzm_stop_melody() == RV_OK)
91e61d00a6b5 add AT@BUZ and AT@BZSTOP commands for testing BUZM SWE
Mychaela Falconia <falcon@freecalypso.org>
parents: 296
diff changeset
324 return (ATI_CMPL);
91e61d00a6b5 add AT@BUZ and AT@BZSTOP commands for testing BUZM SWE
Mychaela Falconia <falcon@freecalypso.org>
parents: 296
diff changeset
325 else
91e61d00a6b5 add AT@BUZ and AT@BZSTOP commands for testing BUZM SWE
Mychaela Falconia <falcon@freecalypso.org>
parents: 296
diff changeset
326 return (ATI_FAIL);
91e61d00a6b5 add AT@BUZ and AT@BZSTOP commands for testing BUZM SWE
Mychaela Falconia <falcon@freecalypso.org>
parents: 296
diff changeset
327 }
91e61d00a6b5 add AT@BUZ and AT@BZSTOP commands for testing BUZM SWE
Mychaela Falconia <falcon@freecalypso.org>
parents: 296
diff changeset
328 #endif
91e61d00a6b5 add AT@BUZ and AT@BZSTOP commands for testing BUZM SWE
Mychaela Falconia <falcon@freecalypso.org>
parents: 296
diff changeset
329
296
a927f030a4e0 add AT@VIBR and AT@VIBS commands for testing VIBR SWE
Mychaela Falconia <falcon@freecalypso.org>
parents: 1
diff changeset
330 #ifdef RVM_VIBR_SWE
a927f030a4e0 add AT@VIBR and AT@VIBS commands for testing VIBR SWE
Mychaela Falconia <falcon@freecalypso.org>
parents: 1
diff changeset
331 /* AT@VIBR - run the vibrator by way of VIBR SWE */
a927f030a4e0 add AT@VIBR and AT@VIBS commands for testing VIBR SWE
Mychaela Falconia <falcon@freecalypso.org>
parents: 1
diff changeset
332 GLOBAL T_ATI_RSLT atAtVIBR ( char *cl, UBYTE srcId )
a927f030a4e0 add AT@VIBR and AT@VIBS commands for testing VIBR SWE
Mychaela Falconia <falcon@freecalypso.org>
parents: 1
diff changeset
333 {
a927f030a4e0 add AT@VIBR and AT@VIBS commands for testing VIBR SWE
Mychaela Falconia <falcon@freecalypso.org>
parents: 1
diff changeset
334 int num_pulses = VIBR_INFINITE;
a927f030a4e0 add AT@VIBR and AT@VIBS commands for testing VIBR SWE
Mychaela Falconia <falcon@freecalypso.org>
parents: 1
diff changeset
335 int vibr_level = VIBR_LEVEL_MAX;
a927f030a4e0 add AT@VIBR and AT@VIBS commands for testing VIBR SWE
Mychaela Falconia <falcon@freecalypso.org>
parents: 1
diff changeset
336
a927f030a4e0 add AT@VIBR and AT@VIBS commands for testing VIBR SWE
Mychaela Falconia <falcon@freecalypso.org>
parents: 1
diff changeset
337 cl = parse(cl, "dd", &num_pulses, &vibr_level);
a927f030a4e0 add AT@VIBR and AT@VIBS commands for testing VIBR SWE
Mychaela Falconia <falcon@freecalypso.org>
parents: 1
diff changeset
338 if (!cl)
a927f030a4e0 add AT@VIBR and AT@VIBS commands for testing VIBR SWE
Mychaela Falconia <falcon@freecalypso.org>
parents: 1
diff changeset
339 return (ATI_FAIL);
a927f030a4e0 add AT@VIBR and AT@VIBS commands for testing VIBR SWE
Mychaela Falconia <falcon@freecalypso.org>
parents: 1
diff changeset
340 if (vibr_pulse_train_start(num_pulses, vibr_level) == RV_OK)
a927f030a4e0 add AT@VIBR and AT@VIBS commands for testing VIBR SWE
Mychaela Falconia <falcon@freecalypso.org>
parents: 1
diff changeset
341 return (ATI_CMPL);
a927f030a4e0 add AT@VIBR and AT@VIBS commands for testing VIBR SWE
Mychaela Falconia <falcon@freecalypso.org>
parents: 1
diff changeset
342 else
a927f030a4e0 add AT@VIBR and AT@VIBS commands for testing VIBR SWE
Mychaela Falconia <falcon@freecalypso.org>
parents: 1
diff changeset
343 return (ATI_FAIL);
a927f030a4e0 add AT@VIBR and AT@VIBS commands for testing VIBR SWE
Mychaela Falconia <falcon@freecalypso.org>
parents: 1
diff changeset
344 }
a927f030a4e0 add AT@VIBR and AT@VIBS commands for testing VIBR SWE
Mychaela Falconia <falcon@freecalypso.org>
parents: 1
diff changeset
345
a927f030a4e0 add AT@VIBR and AT@VIBS commands for testing VIBR SWE
Mychaela Falconia <falcon@freecalypso.org>
parents: 1
diff changeset
346 /* AT@VIBS - stop vibration that was started with AT@VIBR */
a927f030a4e0 add AT@VIBR and AT@VIBS commands for testing VIBR SWE
Mychaela Falconia <falcon@freecalypso.org>
parents: 1
diff changeset
347 GLOBAL T_ATI_RSLT atAtVIBS ( char *cl, UBYTE srcId )
a927f030a4e0 add AT@VIBR and AT@VIBS commands for testing VIBR SWE
Mychaela Falconia <falcon@freecalypso.org>
parents: 1
diff changeset
348 {
a927f030a4e0 add AT@VIBR and AT@VIBS commands for testing VIBR SWE
Mychaela Falconia <falcon@freecalypso.org>
parents: 1
diff changeset
349 if (vibr_pulse_train_stop() == RV_OK)
a927f030a4e0 add AT@VIBR and AT@VIBS commands for testing VIBR SWE
Mychaela Falconia <falcon@freecalypso.org>
parents: 1
diff changeset
350 return (ATI_CMPL);
a927f030a4e0 add AT@VIBR and AT@VIBS commands for testing VIBR SWE
Mychaela Falconia <falcon@freecalypso.org>
parents: 1
diff changeset
351 else
a927f030a4e0 add AT@VIBR and AT@VIBS commands for testing VIBR SWE
Mychaela Falconia <falcon@freecalypso.org>
parents: 1
diff changeset
352 return (ATI_FAIL);
a927f030a4e0 add AT@VIBR and AT@VIBS commands for testing VIBR SWE
Mychaela Falconia <falcon@freecalypso.org>
parents: 1
diff changeset
353 }
a927f030a4e0 add AT@VIBR and AT@VIBS commands for testing VIBR SWE
Mychaela Falconia <falcon@freecalypso.org>
parents: 1
diff changeset
354 #endif
a927f030a4e0 add AT@VIBR and AT@VIBS commands for testing VIBR SWE
Mychaela Falconia <falcon@freecalypso.org>
parents: 1
diff changeset
355
1
fa8dc04885d8 src/g23m-*: import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
356 #endif /* ATI_FCMISC_C */