FreeCalypso > hg > fc-magnetite
comparison src/aci2/aci/ati_omcompat.c @ 3:93999a60b835
src/aci2, src/condat2: import of g23m/condat source pieces from TCS211
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Mon, 26 Sep 2016 00:29:36 +0000 |
parents | |
children | b16d79c550a2 |
comparison
equal
deleted
inserted
replaced
2:c41a534f33c6 | 3:93999a60b835 |
---|---|
1 /* | |
2 * This module has been added to the Leonardo GSM firmware source by | |
3 * Spacefalcon the Outlaw. It contains the implementation of the AT@ | |
4 * commands which were invented by Openmoko. The addition of this code | |
5 * to the present leo2moko source tree allows our fw to serve as a | |
6 * compatible and fully functional replacement for the closed original | |
7 * mokoN firmware. | |
8 */ | |
9 | |
10 #ifndef ATI_OMCOMPAT_C | |
11 #define ATI_OMCOMPAT_C | |
12 | |
13 #include "aci_all.h" | |
14 | |
15 #include <ctype.h> | |
16 #include <string.h> | |
17 | |
18 #include "aci_cmh.h" | |
19 #include "ati_cmd.h" | |
20 #include "aci_cmd.h" | |
21 #include "aci_io.h" | |
22 #include "aci_cmd.h" | |
23 #include "l4_tim.h" | |
24 #include "line_edit.h" | |
25 #include "aci_lst.h" | |
26 | |
27 #include "pcm.h" | |
28 #include "audio.h" | |
29 #include "aci.h" | |
30 #include "rx.h" | |
31 #include "pwr.h" | |
32 #include "l4_tim.h" | |
33 | |
34 #ifdef GPRS | |
35 #ifdef DTI | |
36 #include "dti.h" | |
37 #include "dti_conn_mng.h" | |
38 #include "dti_cntrl_mng.h" | |
39 #endif /* DTI */ | |
40 #include "gaci.h" | |
41 #include "gaci_cmh.h" | |
42 #include "gaci_cmd.h" | |
43 #endif /* GPRS */ | |
44 | |
45 #include "aci_mem.h" | |
46 #include "aci_prs.h" | |
47 | |
48 #include "ati_int.h" | |
49 | |
50 #ifndef _SIMULATION_ | |
51 #include "ffs\ffs.h" | |
52 #endif | |
53 | |
54 #ifdef FF_ATI_BAT | |
55 | |
56 #include "typedefs.h" | |
57 #include "gdd.h" | |
58 #include "bat.h" | |
59 | |
60 #include "ati_bat.h" | |
61 | |
62 #endif /*FF_ATI_BAT*/ | |
63 | |
64 #include "audio\audio_api.h" | |
65 #include "abb.h" | |
66 #include "..\drivers\drv_app\power\power.h" | |
67 | |
68 #ifdef GPRS | |
69 #include "p_mph.h" | |
70 #include "p_mphc.h" | |
71 #include "..\alr\alr_gprs.h" | |
72 #endif | |
73 #include "p_tb.h" | |
74 #include "..\alr\alr.h" | |
75 | |
76 /* | |
77 * PURPOSE : @ST command (Configure the sidetone level) | |
78 */ | |
79 GLOBAL T_ATI_RSLT atAtST (char *cl, UBYTE srcId) | |
80 { | |
81 T_ACI_RETURN ret = AT_FAIL; | |
82 char tmp[8]={0}; | |
83 INT8 gain = -26; | |
84 TRACE_FUNCTION("atAtST()"); | |
85 | |
86 /* | |
87 * input functionality | |
88 */ | |
89 cl = parse(cl,"s", (LONG)8, tmp); | |
90 | |
91 gain = atoi(tmp); | |
92 | |
93 if ( cl ) | |
94 { | |
95 if ( gain == -23 || gain == -20 || gain == -17 || gain == -14 || gain == -11 || gain == -8 || gain == -5 || gain == -2 || gain == 1 || gain == -26 ) | |
96 { | |
97 Side_Tone_Write(gain); | |
98 return (ATI_CMPL); | |
99 } | |
100 else | |
101 { | |
102 cmdCmsError(CMS_ERR_OpNotAllowed); | |
103 return (ATI_FAIL); | |
104 } | |
105 } | |
106 } | |
107 | |
108 GLOBAL T_ATI_RSLT queatAtST (char *cl, UBYTE srcId) | |
109 { | |
110 char *me="+ST: "; | |
111 INT8 ST1; | |
112 T_ACI_RETURN ret = AT_FAIL; | |
113 | |
114 TRACE_FUNCTION("queatAtST()"); | |
115 | |
116 ST1 = Side_Tone_Read(); | |
117 | |
118 sprintf(g_sa,"%s%d",me,ST1); | |
119 | |
120 io_sendMessage(srcId, g_sa, ATI_NORMAL_OUTPUT); | |
121 | |
122 return (ATI_CMPL); | |
123 | |
124 } | |
125 | |
126 /* | |
127 * PURPOSE : @AUL command (Audio table load) | |
128 */ | |
129 | |
130 static char tmp[8]={0}; | |
131 | |
132 GLOBAL T_ATI_RSLT atAtAUL (char *cl, UBYTE srcId) | |
133 { | |
134 T_ACI_RETURN ret = AT_FAIL; | |
135 T_AUDIO_MODE_LOAD audio_mode_load_parameter; | |
136 T_RV_RETURN return_path; | |
137 | |
138 /* initalize the return path, for this test the return path is an message */ | |
139 return_path.callback_func = NULL; | |
140 return_path.addr_id = rvf_get_taskid(); | |
141 | |
142 TRACE_FUNCTION("atAtAUL()"); | |
143 | |
144 /* | |
145 * input functionality | |
146 */ | |
147 cl = parse(cl,"s", (LONG)8, tmp); | |
148 | |
149 sprintf(audio_mode_load_parameter.audio_mode_filename, "para%s", tmp); | |
150 | |
151 if ( audio_mode_load(&audio_mode_load_parameter, return_path) == AUDIO_ERROR ) | |
152 return (ATI_FAIL); | |
153 else | |
154 return (ATI_CMPL); | |
155 | |
156 } | |
157 | |
158 GLOBAL T_ATI_RSLT queatAtAUL (char *cl, UBYTE srcId) | |
159 { | |
160 char *me="@AUL: "; | |
161 T_ACI_RETURN ret = AT_FAIL; | |
162 | |
163 TRACE_FUNCTION("queatAtAUL()"); | |
164 | |
165 if (strlen(tmp)) | |
166 sprintf(g_sa,"%s/aud/para%s.cfg",me, tmp); | |
167 else | |
168 sprintf(g_sa,"%s",me); | |
169 | |
170 io_sendMessage(srcId, g_sa, ATI_NORMAL_OUTPUT); | |
171 | |
172 return (ATI_CMPL); | |
173 | |
174 } | |
175 | |
176 /* | |
177 * PURPOSE : @POFF command (Power Off GSM Modem) | |
178 */ | |
179 | |
180 GLOBAL T_ATI_RSLT atAtPOFF (char *cl, UBYTE srcId) | |
181 { | |
182 TRACE_FUNCTION("atAtPOFF"); | |
183 | |
184 sprintf(g_sa,"%s","OK"); | |
185 io_sendMessage(srcId, g_sa, ATI_NORMAL_OUTPUT); | |
186 | |
187 ABB_Power_Off(); | |
188 | |
189 return (ATI_CMPL); | |
190 } | |
191 | |
192 /* | |
193 * PURPOSE : @RST command (Reset GSM Modem) | |
194 */ | |
195 | |
196 GLOBAL T_ATI_RSLT atAtRST (char *cl, UBYTE srcId) | |
197 { | |
198 TRACE_FUNCTION("atAtRST"); | |
199 | |
200 Power_OFF_Button(); | |
201 | |
202 return (ATI_CMPL); | |
203 } | |
204 | |
205 /* | |
206 * Openmoko's firmware contains an undocumented AT@SC command that | |
207 * sets/changes the IMEI of the modem. However, it takes the IMEI | |
208 * input in an obfuscated form, and the implementation code is | |
209 * rather ugly - hence I don't feel like reimplementing it here. | |
210 * | |
211 * If you feel like changing your modem's IMEI, you can do it quite | |
212 * easily with FreeCalypso tools: use fc-loadtool to read the FFS | |
213 * sectors out of flash, then mpffs-edit to change the /pcm/IMEI file | |
214 * in the FFS image, then fc-loadtool again to program the modified | |
215 * FFS image back into flash. | |
216 */ | |
217 | |
218 GLOBAL T_ATI_RSLT atAtSC (char *cl, UBYTE srcId) | |
219 { | |
220 TRACE_FUNCTION("atAtSC"); | |
221 | |
222 return (ATI_FAIL); | |
223 } | |
224 | |
225 /* | |
226 * PURPOSE : @BAND command (Get RF band) | |
227 */ | |
228 | |
229 GLOBAL T_ATI_RSLT atAtBAND (char *cl, UBYTE srcId) | |
230 { | |
231 char szDummy[32]; // to produce the exact same assembler code | |
232 char szBand[32]; | |
233 UBYTE band_sc = get_band (alr_data->serving_cell); // to produce the exact same assembler code | |
234 | |
235 TRACE_FUNCTION("atAtBAND"); | |
236 band_sc = alr_data->sc_band; | |
237 switch(band_sc) | |
238 { | |
239 case BAND_GSM_900: | |
240 strcpy(szBand, "GSM 900"); | |
241 break; | |
242 case BAND_DCS_1800: | |
243 strcpy(szBand, "DCS 1800"); | |
244 break; | |
245 case BAND_PCS_1900: | |
246 strcpy(szBand, "PCS 1900"); | |
247 break; | |
248 case BAND_E_GSM: | |
249 strcpy(szBand, "EGSM"); | |
250 break; | |
251 case BAND_GSM_850: | |
252 strcpy(szBand, "GSM 850"); | |
253 break; | |
254 default: | |
255 strcpy(szBand, "Unknown"); | |
256 break; | |
257 } | |
258 sprintf(g_sa,"%s", szBand); | |
259 io_sendMessage(srcId, g_sa, ATI_NORMAL_OUTPUT); | |
260 | |
261 return (ATI_CMPL); | |
262 } | |
263 | |
264 #endif /* ATI_OMCOMPAT_C */ | |
265 |