comparison src/aci2/aci/ati_lcs.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
comparison
equal deleted inserted replaced
2:c41a534f33c6 3:93999a60b835
1 /*
2 +-----------------------------------------------------------------------------
3 | Project : GSM-F&D (8411)
4 | Modul : ATI
5 +-----------------------------------------------------------------------------
6 | Copyright 2002 Texas Instruments Berlin, AG
7 | All rights reserved.
8 |
9 | This file is confidential and a trade secret of Texas
10 | Instruments Berlin, AG
11 | The receipt of or possession of this file does not convey
12 | any rights to reproduce or disclose its contents or to
13 | manufacture, use, or sell anything it may describe, in
14 | whole, or in part, without the specific written consent of
15 | Texas Instruments Berlin, AG.
16 +-----------------------------------------------------------------------------
17 | Purpose : AT Command Interpreter: Location service related commands.
18 +-----------------------------------------------------------------------------
19 */
20
21 #ifndef ATI_LCS_C
22 #define ATI_LCS_C
23
24 #ifdef FF_EOTD
25
26 #undef DUMMY_ATI_STRINGS
27
28 #ifdef MFW
29 #define ENTITY_MFW
30 #else
31 #ifdef SMI
32 #define ENTITY_SMI
33 #else
34 #define ENTITY_ACI
35 #endif
36 #endif
37 #define ACI_MEMBER
38
39
40 #if 0
41 #include <string.h>
42 #include <stdio.h>
43 #include <stdlib.h>
44 #include <ctype.h>
45 #include "typedefs.h"
46 #include "pconst.cdg"
47 #include "mconst.cdg"
48 #include "message.h"
49 #include "ccdapi.h"
50 #include "vsi.h"
51 #include "custom.h"
52 #include "gsm.h"
53 #include "prim.h"
54 #include "cnf_aci.h"
55 #include "mon_aci.h"
56 #include "pei.h"
57 #include "tok.h"
58 #include "aci_cmh.h"
59 #include "ati_cmd.h"
60 #include "aci_io.h"
61 #include "aci_cmd.h"
62 #include "l4_tim.h"
63 #include "psa_uart.h"
64 #include "ati_io.h"
65 #include "aci.h"
66 #include "aci_mem.h"
67 #endif
68
69 #include "aci_all.h"
70 /*==== INCLUDES ===================================================*/
71 #include "aci_cmh.h"
72 #include "ati_cmd.h"
73 #include "aci_cmd.h"
74 #include "dti.h" /* functionality of the dti library */
75
76 #include "aci_lst.h"
77 #include "dti_conn_mng.h"
78 #ifdef UART
79 #include "psa_uart.h"
80 #include "cmh_uart.h"
81 #endif
82 #include "aci_io.h"
83 #include "aci_mem.h"
84 #include "aci.h"
85 #include "ati_io.h"
86 #include "ati_int.h"
87
88 EXTERN T_ACI_LIST *ati_src_list;
89
90 /*==== EXPORT ==================================================*/
91 EXTERN CHAR *cmdCmsError ( T_ACI_CMS_ERR e );
92 EXTERN CHAR *cmdExtError (T_ACI_EXT_ERR e);
93 EXTERN CHAR *parse(CHAR *b,CHAR *f, ...);
94
95 /*==============================================================*/
96
97
98 /*
99 +--------------------------------------------------------------------+
100 | PROJECT : GSM-F&D (8411) MODULE : ACI_CMD |
101 | STATE : code ROUTINE : setatPlusCLSA |
102 +--------------------------------------------------------------------+
103
104 PURPOSE : +CLSA command
105 for test of location service
106 set source and destination addresses of
107 Mobile Location Center
108 */
109
110 GLOBAL T_ATI_RSLT setatPlusCLSA (char *cl, UBYTE srcId)
111 {
112 T_ACI_RETURN ret;
113 char mlcs[MAX_SMS_ADDR_DIG]; /* MLC source address */
114 char mlcd[MAX_SMS_ADDR_DIG]; /* MLC destination address */
115 memset (mlcs, 0, sizeof(mlcs));
116 memset (mlcd, 0, sizeof(mlcd));
117
118 TRACE_FUNCTION("setatPlusCLSA()");
119
120 /* parse source and destination address strings */
121 cl = parse(cl,"qq",(LONG)MAX_SMS_ADDR_DIG,mlcs,(LONG)MAX_SMS_ADDR_DIG,mlcd);
122 if (!cl OR (mlcs[0] EQ '\0') OR (mlcd[0] EQ '\0'))
123 {
124 cmdExtError(EXT_ERR_LCS_CmdNotRec);
125 return ATI_FAIL;
126 }
127 /* store source and destination MLC addresses */
128 ret=sAT_PlusCLSA(srcId,mlcs,mlcd);
129 if (ret EQ AT_FAIL)
130 {
131 cmdCmeError(CME_ERR_Unknown);
132 return ATI_FAIL;
133 }
134
135 return ATI_CMPL;
136 }
137
138
139 /*
140 +--------------------------------------------------------------------+
141 | PROJECT : GSM-F&D (8411) MODULE : ACI_CMD |
142 | STATE : code ROUTINE : queatPlusCLSA |
143 +--------------------------------------------------------------------+
144
145 PURPOSE : +CLSA command
146 for test of location service
147 query source and destination addresses of
148 Service Mobile Location Center
149 */
150
151 GLOBAL T_ATI_RSLT queatPlusCLSA (char *cl, UBYTE srcId)
152 {
153 char mlcs[MAX_SMS_ADDR_DIG]; /* MLC source address */
154 char mlcd[MAX_SMS_ADDR_DIG]; /* MLC destination address */
155 memset (mlcs, 0, sizeof(mlcs));
156 memset (mlcd, 0, sizeof(mlcd));
157
158 TRACE_FUNCTION("queatPlusCLSA()");
159
160 if (qAT_PlusCLSA(srcId,mlcs,mlcd) EQ AT_CMPL)
161 {
162 sprintf(g_sa,"+CLSA:%s,%s",mlcs,mlcd);
163
164 io_sendMessage(srcId, g_sa, ATI_NORMAL_OUTPUT);
165 }
166 else
167 {
168 cmdCmeError(CME_ERR_Unknown);
169 return ATI_FAIL;
170 }
171 return ATI_CMPL;
172 }
173
174 /*
175 +--------------------------------------------------------------------+
176 | PROJECT : GSM-F&D (8411) MODULE : ACI_CMD |
177 | STATE : code ROUTINE : setatPlusCLOM |
178 +--------------------------------------------------------------------+
179
180 PURPOSE : +CLOM command
181 set feature flag Location Service
182 handle list of LC clients
183 store list in FFS
184 */
185
186 GLOBAL T_ATI_RSLT setatPlusCLOM (char *cl, UBYTE srcId)
187 {
188 T_ACI_RETURN ret;
189 char client_id[MAX_SMS_ADDR_DIG]; /* Client identifier */
190 char clom_set;
191
192 TRACE_FUNCTION("setatPlusCLOM()");
193
194 memset (client_id, 0, sizeof(client_id));
195
196 /* parse CLOM setting and Client Id (optional) */
197 cl = parse(cl,"xq",&clom_set,(LONG)MAX_SMS_ADDR_DIG,client_id);
198 if (!cl)
199 {
200 cmdExtError(EXT_ERR_LCS_CmdNotRec);;
201 return ATI_FAIL;
202 }
203 /* handle settings and store in FFS */
204 ret=sAT_PlusCLOM(srcId,clom_set,client_id);
205 if (ret EQ AT_FAIL)
206 {
207 cmdCmeError(CME_ERR_Unknown);
208 return ATI_FAIL;
209 }
210
211 return ATI_CMPL;
212 }
213
214 /*
215 +--------------------------------------------------------------------+
216 | PROJECT : GSM-F&D (8411) MODULE : ACI_CMD |
217 | STATE : code ROUTINE : queatPlusCLOM |
218 +--------------------------------------------------------------------+
219
220 PURPOSE : +CLOM command
221 query current Operational Mode settings of
222 Location Service
223 */
224 /**************************/
225 EXTERN T_LOC_SERV_PARA locServPrm; /* list of LC clients */
226 EXTERN BOOL location_service_flag;
227 EXTERN BOOL eotd_periodic_update_flag;
228 /**************************/
229 GLOBAL T_ATI_RSLT queatPlusCLOM (char *cl, UBYTE srcId)
230 {
231 UBYTE num_clients;
232 T_LOC_SERV_PARA *lc_client_list = 0;
233 T_LOC_SERV_CLIENT *lc_client = 0;
234
235 TRACE_FUNCTION("queatPlusCLOM()");
236 TRACE_EVENT_P4("num_client=%d location_service_flag=%d eotd_periodic_update_flag=%d clients=%08x",
237 locServPrm.numb_lc_clients,
238 location_service_flag,
239 eotd_periodic_update_flag,
240 locServPrm.clients);
241 if (locServPrm.clients)
242 {
243 lc_client = locServPrm.clients;
244 while (lc_client)
245 {
246 TRACE_EVENT_P4("client status=%d addr=%s ton=%d npi=%d", lc_client->client_status,
247 lc_client->client_id.address,
248 lc_client->client_id.toa.ton,
249 lc_client->client_id.toa.npi);
250 lc_client = lc_client->next;
251 }
252 lc_client = 0;
253 }
254 TRACE_EVENT_P6("SC_sAddr=%s ton=%d npi=%d SC_dAddr=%s ton=%d npi=%d",
255 locServPrm.mlcsrc.address, locServPrm.mlcsrc.toa.ton, locServPrm.mlcsrc.toa.npi,
256 locServPrm.mlcdest.address, locServPrm.mlcdest.toa.ton, locServPrm.mlcdest.toa.npi);
257
258 if (qAT_PlusCLOM(srcId,&num_clients,&lc_client_list) EQ AT_CMPL)
259 {
260 if(lc_client_list EQ NULL)
261 {
262 cmdCmeError(CME_ERR_Unknown);
263 return ATI_FAIL;
264 }
265 if(!num_clients) /* list of clients is empty */
266 {
267 sprintf(g_sa,"+CLOM:%d",num_clients);
268 io_sendMessage(srcId, g_sa, ATI_NORMAL_OUTPUT);
269 }
270 else
271 {
272 sprintf(g_sa,"+CLOM:%d",num_clients);
273 lc_client = lc_client_list->clients;
274 io_sendMessage(srcId, g_sa, ATI_NORMAL_OUTPUT);
275 memset(g_sa,0,(KEY + 2*MAX_SMS_ADDR_DIG));
276 while(num_clients)
277 {
278 if(lc_client->client_id.toa.ton EQ TON_International)
279 sprintf(g_sa,"%d,+%s",lc_client->client_status,lc_client->client_id.address);
280 else
281 sprintf(g_sa,"%d,%s",lc_client->client_status,lc_client->client_id.address);
282 lc_client = lc_client->next;
283 io_sendMessage(srcId, g_sa, ATI_NORMAL_OUTPUT);
284 memset(g_sa,0,(KEY + 2*MAX_SMS_ADDR_DIG));
285 num_clients--;
286 }
287 }
288 }
289 else
290 {
291 cmdCmeError(CME_ERR_Unknown);
292 return ATI_FAIL;
293 }
294 return ATI_CMPL;
295 }
296
297
298 /*
299 +--------------------------------------------------------------------+
300 | PROJECT : GSM-F&D (8411) MODULE : ACI_CMD |
301 | STATE : code ROUTINE : setatPlusCLPS |
302 +--------------------------------------------------------------------+
303
304 PURPOSE : +CLPS command
305 set feature flag Periodic Update Timer
306 set timer for specific LC client
307 request position data
308 */
309
310 GLOBAL T_ATI_RSLT setatPlusCLPS (char *cl, UBYTE srcId)
311 {
312 T_ACI_RETURN ret;
313 char client_id[MAX_SMS_ADDR_DIG]; /* Client identifier */
314 char clps_set;
315 T_ATI_SRC_PARAMS *src_params = find_element (ati_src_list, srcId, search_ati_src_id);
316 USHORT lc_timer = 0;
317
318 TRACE_FUNCTION("setatPlusCLPS()");
319
320 memset (client_id, 0, sizeof(client_id));
321
322 /* parse CLPS setting,Client Id (optional) and Client timer (optional) */
323 cl = parse(cl,"xqr",&clps_set,(LONG)MAX_SMS_ADDR_DIG,client_id,&lc_timer);
324 if (!cl)
325 {
326 cmdExtError(EXT_ERR_LCS_CmdNotRec);
327 return ATI_FAIL;
328 }
329 /* handle settings and store in FFS */
330 ret=sAT_PlusCLPS(srcId,clps_set,client_id,lc_timer);
331 if (ret EQ AT_FAIL)
332 {
333 cmdCmeError(CME_ERR_Unknown);
334 return ATI_FAIL;
335 }
336
337 return ATI_CMPL;
338 }
339
340 /*
341 +--------------------------------------------------------------------+
342 | PROJECT : GSM-F&D (8411) MODULE : ACI_CMD |
343 | STATE : code ROUTINE : queatPlusCLPS |
344 +--------------------------------------------------------------------+
345
346 PURPOSE : +CLPS command
347 query periodic update settings
348 */
349
350 GLOBAL T_ATI_RSLT queatPlusCLPS (char *cl, UBYTE srcId)
351 {
352 UBYTE num_clients,num_clients_test,num_per_clients=0;
353 T_LOC_SERV_PARA *lc_client_list = 0;
354 T_LOC_SERV_CLIENT *lc_client = 0;
355
356 TRACE_FUNCTION("queatPlusCLPS()");
357
358 if (qAT_PlusCLPS(srcId,&num_clients,&lc_client_list) EQ AT_CMPL)
359 {
360 if(lc_client_list EQ NULL)
361 {
362 cmdCmeError(CME_ERR_Unknown);
363 return ATI_FAIL;
364 }
365 if(!num_clients) /* list of clients is empty */
366 {
367 sprintf(g_sa,"+CLPS:%d",num_clients);
368 io_sendMessage(srcId, g_sa, ATI_NORMAL_OUTPUT);
369 }
370 else
371 {
372 lc_client = lc_client_list->clients;
373 num_clients_test = num_clients;
374 while(num_clients_test)
375 {
376 if(lc_client->period_upd_status EQ PERIODIC_UP_ACTIVE)
377 num_per_clients++;
378 lc_client = lc_client->next;
379 num_clients_test--;
380 }
381
382 sprintf(g_sa,"+CLPS:%d",num_per_clients);
383 io_sendMessage(srcId, g_sa, ATI_NORMAL_OUTPUT);
384 memset(g_sa,0,(KEY + 2*MAX_SMS_ADDR_DIG));
385 lc_client = lc_client_list->clients;
386 while(num_clients)
387 {
388 if(lc_client->client_id.toa.ton EQ TON_International)
389 {
390 if(lc_client->period_upd_status EQ PERIODIC_UP_ACTIVE)
391 sprintf(g_sa,"+%s,%d",lc_client->client_id.address,lc_client->period_upd_value);
392 }
393 else
394 {
395 if(lc_client->period_upd_status EQ PERIODIC_UP_ACTIVE)
396 sprintf(g_sa,"%s,%d",lc_client->client_id.address,lc_client->period_upd_value);
397 }
398 lc_client = lc_client->next;
399 io_sendMessage(srcId, g_sa, ATI_NORMAL_OUTPUT);
400 memset(g_sa,0,(KEY + 2*MAX_SMS_ADDR_DIG));
401 num_clients--;
402 }
403 }
404 }
405 else
406 {
407 cmdCmeError(CME_ERR_Unknown);
408 return ATI_FAIL;
409 }
410 return ATI_CMPL;
411 }
412
413 /*
414 +--------------------------------------------------------------------+
415 | PROJECT : GSM-F&D (8411) MODULE : ACI_CMD |
416 | STATE : code ROUTINE : setatPlusCLSR |
417 +--------------------------------------------------------------------+
418
419 PURPOSE : +CLSR command
420 set user privacy data: notify, confirmation
421 request position data: currently not supported (RM 10-25-02)
422 set up call to client_id and/or to second address:
423 currently not supported (RM 10-25-02)
424 */
425
426 GLOBAL T_ATI_RSLT setatPlusCLSR (char *cl, UBYTE srcId)
427 {
428 T_ACI_RETURN ret;
429 char client_id[MAX_SMS_ADDR_DIG]; /* Client identifier */
430 char clsr_notify;
431 char clsr_confirmation;
432
433 TRACE_FUNCTION("setatPlusCLSR()");
434
435 memset (client_id, 0, sizeof(client_id));
436
437 /* parse CLSR settings: Client notify state, Client confirmation state, Client Id */
438 cl = parse(cl,"xxq",&clsr_notify,&clsr_confirmation,(LONG)MAX_SMS_ADDR_DIG,client_id);
439 if (!cl)
440 {
441 cmdExtError(EXT_ERR_LCS_CmdNotRec);
442 return ATI_FAIL;
443 }
444 /* handle settings and store in FFS */
445 ret=sAT_PlusCLSR(srcId,clsr_notify,clsr_confirmation,client_id);
446 if (ret EQ AT_FAIL)
447 {
448 cmdCmeError(CME_ERR_Unknown);
449 return ATI_FAIL;
450 }
451 return ATI_CMPL;
452 }
453
454 /*
455 +--------------------------------------------------------------------+
456 | PROJECT : GSM-F&D (8411) MODULE : ACI_CMD |
457 | STATE : code ROUTINE : queatPlusCLSR |
458 +--------------------------------------------------------------------+
459
460 PURPOSE : +CLSR command
461 query
462 */
463
464 GLOBAL T_ATI_RSLT queatPlusCLSR (char *cl, UBYTE srcId)
465 {
466 return ATI_CMPL;
467 }
468
469 #endif /* FF_EOTD */
470
471 #endif /* ATI_LCS_C */