FreeCalypso > hg > tcs211-l1-reconst
diff g23m/condat/ms/src/aci/ati_lcs.c @ 0:509db1a7b7b8
initial import: leo2moko-r1
author | Space Falcon <falcon@ivan.Harhan.ORG> |
---|---|
date | Mon, 01 Jun 2015 03:24:05 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/g23m/condat/ms/src/aci/ati_lcs.c Mon Jun 01 03:24:05 2015 +0000 @@ -0,0 +1,471 @@ +/* ++----------------------------------------------------------------------------- +| Project : GSM-F&D (8411) +| Modul : ATI ++----------------------------------------------------------------------------- +| Copyright 2002 Texas Instruments Berlin, AG +| All rights reserved. +| +| This file is confidential and a trade secret of Texas +| Instruments Berlin, AG +| The receipt of or possession of this file does not convey +| any rights to reproduce or disclose its contents or to +| manufacture, use, or sell anything it may describe, in +| whole, or in part, without the specific written consent of +| Texas Instruments Berlin, AG. ++----------------------------------------------------------------------------- +| Purpose : AT Command Interpreter: Location service related commands. ++----------------------------------------------------------------------------- +*/ + +#ifndef ATI_LCS_C +#define ATI_LCS_C + +#ifdef FF_EOTD + +#undef DUMMY_ATI_STRINGS + +#ifdef MFW +#define ENTITY_MFW +#else +#ifdef SMI +#define ENTITY_SMI +#else +#define ENTITY_ACI +#endif +#endif +#define ACI_MEMBER + + +#if 0 +#include <string.h> +#include <stdio.h> +#include <stdlib.h> +#include <ctype.h> +#include "typedefs.h" +#include "pconst.cdg" +#include "mconst.cdg" +#include "message.h" +#include "ccdapi.h" +#include "vsi.h" +#include "custom.h" +#include "gsm.h" +#include "prim.h" +#include "cnf_aci.h" +#include "mon_aci.h" +#include "pei.h" +#include "tok.h" +#include "aci_cmh.h" +#include "ati_cmd.h" +#include "aci_io.h" +#include "aci_cmd.h" +#include "l4_tim.h" +#include "psa_uart.h" +#include "ati_io.h" +#include "aci.h" +#include "aci_mem.h" +#endif + +#include "aci_all.h" +/*==== INCLUDES ===================================================*/ +#include "aci_cmh.h" +#include "ati_cmd.h" +#include "aci_cmd.h" +#include "dti.h" /* functionality of the dti library */ + +#include "aci_lst.h" +#include "dti_conn_mng.h" +#ifdef UART +#include "psa_uart.h" +#include "cmh_uart.h" +#endif +#include "aci_io.h" +#include "aci_mem.h" +#include "aci.h" +#include "ati_io.h" +#include "ati_int.h" + +EXTERN T_ACI_LIST *ati_src_list; + +/*==== EXPORT ==================================================*/ +EXTERN CHAR *cmdCmsError ( T_ACI_CMS_ERR e ); +EXTERN CHAR *cmdExtError (T_ACI_EXT_ERR e); +EXTERN CHAR *parse(CHAR *b,CHAR *f, ...); + +/*==============================================================*/ + + +/* ++--------------------------------------------------------------------+ +| PROJECT : GSM-F&D (8411) MODULE : ACI_CMD | +| STATE : code ROUTINE : setatPlusCLSA | ++--------------------------------------------------------------------+ + + PURPOSE : +CLSA command + for test of location service + set source and destination addresses of + Mobile Location Center +*/ + +GLOBAL T_ATI_RSLT setatPlusCLSA (char *cl, UBYTE srcId) +{ + T_ACI_RETURN ret; + char mlcs[MAX_SMS_ADDR_DIG]; /* MLC source address */ + char mlcd[MAX_SMS_ADDR_DIG]; /* MLC destination address */ + memset (mlcs, 0, sizeof(mlcs)); + memset (mlcd, 0, sizeof(mlcd)); + + TRACE_FUNCTION("setatPlusCLSA()"); + + /* parse source and destination address strings */ + cl = parse(cl,"qq",(LONG)MAX_SMS_ADDR_DIG,mlcs,(LONG)MAX_SMS_ADDR_DIG,mlcd); + if (!cl OR (mlcs[0] EQ '\0') OR (mlcd[0] EQ '\0')) + { + cmdExtError(EXT_ERR_LCS_CmdNotRec); + return ATI_FAIL; + } + /* store source and destination MLC addresses */ + ret=sAT_PlusCLSA(srcId,mlcs,mlcd); + if (ret EQ AT_FAIL) + { + cmdCmeError(CME_ERR_Unknown); + return ATI_FAIL; + } + + return ATI_CMPL; +} + + +/* ++--------------------------------------------------------------------+ +| PROJECT : GSM-F&D (8411) MODULE : ACI_CMD | +| STATE : code ROUTINE : queatPlusCLSA | ++--------------------------------------------------------------------+ + + PURPOSE : +CLSA command + for test of location service + query source and destination addresses of + Service Mobile Location Center +*/ + +GLOBAL T_ATI_RSLT queatPlusCLSA (char *cl, UBYTE srcId) +{ + char mlcs[MAX_SMS_ADDR_DIG]; /* MLC source address */ + char mlcd[MAX_SMS_ADDR_DIG]; /* MLC destination address */ + memset (mlcs, 0, sizeof(mlcs)); + memset (mlcd, 0, sizeof(mlcd)); + + TRACE_FUNCTION("queatPlusCLSA()"); + + if (qAT_PlusCLSA(srcId,mlcs,mlcd) EQ AT_CMPL) + { + sprintf(g_sa,"+CLSA:%s,%s",mlcs,mlcd); + + io_sendMessage(srcId, g_sa, ATI_NORMAL_OUTPUT); + } + else + { + cmdCmeError(CME_ERR_Unknown); + return ATI_FAIL; + } + return ATI_CMPL; +} + +/* ++--------------------------------------------------------------------+ +| PROJECT : GSM-F&D (8411) MODULE : ACI_CMD | +| STATE : code ROUTINE : setatPlusCLOM | ++--------------------------------------------------------------------+ + + PURPOSE : +CLOM command + set feature flag Location Service + handle list of LC clients + store list in FFS +*/ + +GLOBAL T_ATI_RSLT setatPlusCLOM (char *cl, UBYTE srcId) +{ + T_ACI_RETURN ret; + char client_id[MAX_SMS_ADDR_DIG]; /* Client identifier */ + char clom_set; + + TRACE_FUNCTION("setatPlusCLOM()"); + + memset (client_id, 0, sizeof(client_id)); + + /* parse CLOM setting and Client Id (optional) */ + cl = parse(cl,"xq",&clom_set,(LONG)MAX_SMS_ADDR_DIG,client_id); + if (!cl) + { + cmdExtError(EXT_ERR_LCS_CmdNotRec);; + return ATI_FAIL; + } + /* handle settings and store in FFS */ + ret=sAT_PlusCLOM(srcId,clom_set,client_id); + if (ret EQ AT_FAIL) + { + cmdCmeError(CME_ERR_Unknown); + return ATI_FAIL; + } + + return ATI_CMPL; +} + +/* ++--------------------------------------------------------------------+ +| PROJECT : GSM-F&D (8411) MODULE : ACI_CMD | +| STATE : code ROUTINE : queatPlusCLOM | ++--------------------------------------------------------------------+ + + PURPOSE : +CLOM command + query current Operational Mode settings of + Location Service +*/ +/**************************/ +EXTERN T_LOC_SERV_PARA locServPrm; /* list of LC clients */ +EXTERN BOOL location_service_flag; +EXTERN BOOL eotd_periodic_update_flag; +/**************************/ +GLOBAL T_ATI_RSLT queatPlusCLOM (char *cl, UBYTE srcId) +{ + UBYTE num_clients; + T_LOC_SERV_PARA *lc_client_list = 0; + T_LOC_SERV_CLIENT *lc_client = 0; + + TRACE_FUNCTION("queatPlusCLOM()"); +TRACE_EVENT_P4("num_client=%d location_service_flag=%d eotd_periodic_update_flag=%d clients=%08x", + locServPrm.numb_lc_clients, + location_service_flag, + eotd_periodic_update_flag, + locServPrm.clients); +if (locServPrm.clients) +{ + lc_client = locServPrm.clients; + while (lc_client) + { + TRACE_EVENT_P4("client status=%d addr=%s ton=%d npi=%d", lc_client->client_status, + lc_client->client_id.address, + lc_client->client_id.toa.ton, + lc_client->client_id.toa.npi); + lc_client = lc_client->next; + } + lc_client = 0; +} +TRACE_EVENT_P6("SC_sAddr=%s ton=%d npi=%d SC_dAddr=%s ton=%d npi=%d", + locServPrm.mlcsrc.address, locServPrm.mlcsrc.toa.ton, locServPrm.mlcsrc.toa.npi, + locServPrm.mlcdest.address, locServPrm.mlcdest.toa.ton, locServPrm.mlcdest.toa.npi); + + if (qAT_PlusCLOM(srcId,&num_clients,&lc_client_list) EQ AT_CMPL) + { + if(lc_client_list EQ NULL) + { + cmdCmeError(CME_ERR_Unknown); + return ATI_FAIL; + } + if(!num_clients) /* list of clients is empty */ + { + sprintf(g_sa,"+CLOM:%d",num_clients); + io_sendMessage(srcId, g_sa, ATI_NORMAL_OUTPUT); + } + else + { + sprintf(g_sa,"+CLOM:%d",num_clients); + lc_client = lc_client_list->clients; + io_sendMessage(srcId, g_sa, ATI_NORMAL_OUTPUT); + memset(g_sa,0,(KEY + 2*MAX_SMS_ADDR_DIG)); + while(num_clients) + { + if(lc_client->client_id.toa.ton EQ TON_International) + sprintf(g_sa,"%d,+%s",lc_client->client_status,lc_client->client_id.address); + else + sprintf(g_sa,"%d,%s",lc_client->client_status,lc_client->client_id.address); + lc_client = lc_client->next; + io_sendMessage(srcId, g_sa, ATI_NORMAL_OUTPUT); + memset(g_sa,0,(KEY + 2*MAX_SMS_ADDR_DIG)); + num_clients--; + } + } + } + else + { + cmdCmeError(CME_ERR_Unknown); + return ATI_FAIL; + } + return ATI_CMPL; +} + + +/* ++--------------------------------------------------------------------+ +| PROJECT : GSM-F&D (8411) MODULE : ACI_CMD | +| STATE : code ROUTINE : setatPlusCLPS | ++--------------------------------------------------------------------+ + + PURPOSE : +CLPS command + set feature flag Periodic Update Timer + set timer for specific LC client + request position data +*/ + +GLOBAL T_ATI_RSLT setatPlusCLPS (char *cl, UBYTE srcId) +{ + T_ACI_RETURN ret; + char client_id[MAX_SMS_ADDR_DIG]; /* Client identifier */ + char clps_set; + T_ATI_SRC_PARAMS *src_params = find_element (ati_src_list, srcId, search_ati_src_id); + USHORT lc_timer = 0; + + TRACE_FUNCTION("setatPlusCLPS()"); + + memset (client_id, 0, sizeof(client_id)); + + /* parse CLPS setting,Client Id (optional) and Client timer (optional) */ + cl = parse(cl,"xqr",&clps_set,(LONG)MAX_SMS_ADDR_DIG,client_id,&lc_timer); + if (!cl) + { + cmdExtError(EXT_ERR_LCS_CmdNotRec); + return ATI_FAIL; + } + /* handle settings and store in FFS */ + ret=sAT_PlusCLPS(srcId,clps_set,client_id,lc_timer); + if (ret EQ AT_FAIL) + { + cmdCmeError(CME_ERR_Unknown); + return ATI_FAIL; + } + + return ATI_CMPL; +} + +/* ++--------------------------------------------------------------------+ +| PROJECT : GSM-F&D (8411) MODULE : ACI_CMD | +| STATE : code ROUTINE : queatPlusCLPS | ++--------------------------------------------------------------------+ + + PURPOSE : +CLPS command + query periodic update settings +*/ + +GLOBAL T_ATI_RSLT queatPlusCLPS (char *cl, UBYTE srcId) +{ + UBYTE num_clients,num_clients_test,num_per_clients=0; + T_LOC_SERV_PARA *lc_client_list = 0; + T_LOC_SERV_CLIENT *lc_client = 0; + + TRACE_FUNCTION("queatPlusCLPS()"); + + if (qAT_PlusCLPS(srcId,&num_clients,&lc_client_list) EQ AT_CMPL) + { + if(lc_client_list EQ NULL) + { + cmdCmeError(CME_ERR_Unknown); + return ATI_FAIL; + } + if(!num_clients) /* list of clients is empty */ + { + sprintf(g_sa,"+CLPS:%d",num_clients); + io_sendMessage(srcId, g_sa, ATI_NORMAL_OUTPUT); + } + else + { + lc_client = lc_client_list->clients; + num_clients_test = num_clients; + while(num_clients_test) + { + if(lc_client->period_upd_status EQ PERIODIC_UP_ACTIVE) + num_per_clients++; + lc_client = lc_client->next; + num_clients_test--; + } + + sprintf(g_sa,"+CLPS:%d",num_per_clients); + io_sendMessage(srcId, g_sa, ATI_NORMAL_OUTPUT); + memset(g_sa,0,(KEY + 2*MAX_SMS_ADDR_DIG)); + lc_client = lc_client_list->clients; + while(num_clients) + { + if(lc_client->client_id.toa.ton EQ TON_International) + { + if(lc_client->period_upd_status EQ PERIODIC_UP_ACTIVE) + sprintf(g_sa,"+%s,%d",lc_client->client_id.address,lc_client->period_upd_value); + } + else + { + if(lc_client->period_upd_status EQ PERIODIC_UP_ACTIVE) + sprintf(g_sa,"%s,%d",lc_client->client_id.address,lc_client->period_upd_value); + } + lc_client = lc_client->next; + io_sendMessage(srcId, g_sa, ATI_NORMAL_OUTPUT); + memset(g_sa,0,(KEY + 2*MAX_SMS_ADDR_DIG)); + num_clients--; + } + } + } + else + { + cmdCmeError(CME_ERR_Unknown); + return ATI_FAIL; + } + return ATI_CMPL; +} + +/* ++--------------------------------------------------------------------+ +| PROJECT : GSM-F&D (8411) MODULE : ACI_CMD | +| STATE : code ROUTINE : setatPlusCLSR | ++--------------------------------------------------------------------+ + + PURPOSE : +CLSR command + set user privacy data: notify, confirmation + request position data: currently not supported (RM 10-25-02) + set up call to client_id and/or to second address: + currently not supported (RM 10-25-02) +*/ + +GLOBAL T_ATI_RSLT setatPlusCLSR (char *cl, UBYTE srcId) +{ + T_ACI_RETURN ret; + char client_id[MAX_SMS_ADDR_DIG]; /* Client identifier */ + char clsr_notify; + char clsr_confirmation; + + TRACE_FUNCTION("setatPlusCLSR()"); + + memset (client_id, 0, sizeof(client_id)); + + /* parse CLSR settings: Client notify state, Client confirmation state, Client Id */ + cl = parse(cl,"xxq",&clsr_notify,&clsr_confirmation,(LONG)MAX_SMS_ADDR_DIG,client_id); + if (!cl) + { + cmdExtError(EXT_ERR_LCS_CmdNotRec); + return ATI_FAIL; + } + /* handle settings and store in FFS */ + ret=sAT_PlusCLSR(srcId,clsr_notify,clsr_confirmation,client_id); + if (ret EQ AT_FAIL) + { + cmdCmeError(CME_ERR_Unknown); + return ATI_FAIL; + } + return ATI_CMPL; +} + +/* ++--------------------------------------------------------------------+ +| PROJECT : GSM-F&D (8411) MODULE : ACI_CMD | +| STATE : code ROUTINE : queatPlusCLSR | ++--------------------------------------------------------------------+ + + PURPOSE : +CLSR command + query +*/ + +GLOBAL T_ATI_RSLT queatPlusCLSR (char *cl, UBYTE srcId) +{ +return ATI_CMPL; +} + +#endif /* FF_EOTD */ + +#endif /* ATI_LCS_C */