FreeCalypso > hg > fc-magnetite
diff src/aci2/aci/ati_src_lc.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 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/aci2/aci/ati_src_lc.c Mon Sep 26 00:29:36 2016 +0000 @@ -0,0 +1,295 @@ +/* ++----------------------------------------------------------------------------- +| Project : GSM-PS (6147) +| Modul : ATI_SRC_LC ++----------------------------------------------------------------------------- +| 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 : ++----------------------------------------------------------------------------- +*/ + +#if defined FF_EOTD +#ifndef ATI_SRC_LC_C +#define ATI_SRC_LC_C +#endif + +#if defined (SMI) +#define ENTITY_SMI +#elif defined (MFW) +#define ENTITY_MFW +#else +#define ENTITY_ACI +#endif + +#define ACI_MEMBER + +/*==== INCLUDES ===================================================*/ +#if 0 +#include <string.h> +#include <stdlib.h> +#include <stdio.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_cmd.h" + +#include "aci_lst.h" +#include "dti_conn_mng.h" +#include "psa_uart.h" +#include "cmh_uart.h" +#include "aci_io.h" +#include "aci_mem.h" +#include "aci.h" +#include "ati_io.h" +#include "ati_src_lc.h" + +#include "cmh_lc.h" +#endif + +#include "aci_all.h" +#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" + +#include "cmh_lc.h" +#include "ati_src_lc.h" + +/*==== CONSTANTS ==================================================*/ + +/*==== TYPES ======================================================*/ + +/*==== EXPORT =====================================================*/ +EXTERN CHAR *parse(CHAR *b,CHAR *f, ...); +EXTERN T_ACI_LIST *ati_src_list; +/*==== VARIABLES ==================================================*/ +LOCAL BOOL CLPS_flag = FALSE; + +/*==== FUNCTIONS ==================================================*/ +GLOBAL void ati_src_lc_result_cb (UBYTE src_id, + T_ATI_OUTPUT_TYPE output_type, + UBYTE *output, + USHORT output_len) +{ + T_ATI_SRC_PARAMS *src_params = 0; + T_LOC_SERV_PARA *p_lsprm = 0; + char orig_addr[MAX_SMS_ADDR_DIG]; /* SMS originating address */ + char mlc_source_addr[MAX_SMS_ADDR_DIG]; /* Mobile Location Center source address */ + UBYTE *pos_data = 0; + T_ACI_SM_DATA sms_data; + UBYTE sms_buf[30]; + static U8 sms_cnt = 0; + + + TRACE_FUNCTION ("ati_src_lc_result_cb ()"); + + memset (orig_addr, 0, sizeof(orig_addr)); + memset (mlc_source_addr, 0, sizeof(mlc_source_addr)); + p_lsprm = &locServPrm; + + /* search for LC source Id */ + src_params = find_element (ati_src_list, src_id, search_ati_src_id); + if (src_params EQ NULL) + { + TRACE_EVENT ("[ERR] source ID not found"); + return; + } + else if( src_params->src_type NEQ ATI_SRC_TYPE_LC) + { + TRACE_EVENT ("[ERR] source ID is not from type LC"); + return; + } + /* check length of delivered string */ + if( output_len EQ 0 ) + return; + + /* + * check client id ??? + * + */ + + + /* check E-OTD flag */ + if(location_service_flag EQ TRUE) + { + if(!strncmp((char *)output,"+CMT: ",6)) + { + /* look for MLC source address in LC paramters */ + if (qAT_PlusCLSA(p_lsprm->lc_src_id,mlc_source_addr,NULL) EQ AT_CMPL) + {/* compare stored MLC source address with SMS originated address */ + if(!strcmp(lc_orig_addr.address,mlc_source_addr)) + { + /* immediately position data request */ + if(sAT_PlusCLPS(p_lsprm->lc_src_id,CLPS_LCS_ACT,lc_orig_addr.address,IMM_POS_DATA_REQ) NEQ AT_EXCT) + { + TRACE_EVENT ("[ERR] position data request failed"); + } + else + { + src_params->curAtCmd = AT_CMD_CLPS; + } + } + } + } + else + { /* CLPS indicates LC position data */ + if(strstr((char *)output,"%CLPS:") NEQ NULL) + { + memset(&sms_data.data,0,MAX_SM_LEN); + memcpy(&sms_data.data,&aci_lc_data.position_data,aci_lc_data.pos_data_length); + sms_data.len = aci_lc_data.pos_data_length; + + strncpy((char *)sms_buf, (char *)&sms_data.data, 28); + sms_buf[28] = 0; + TRACE_EVENT_P1("SMS before send:%s...", sms_buf); + TRACE_EVENT_P2("*** #%d SMS to %s", sms_cnt++, p_lsprm->mlcdest.address); + + + sAT_PlusCSMP (p_lsprm->lc_src_id, TP_MTI_SMS_SUBMIT | TP_VPF_RELATIVE, + 0xA7/*TP_VP_RELATIVE_DEFAULT*/, NULL, NULL, SMS_PID_DEFAULT, 0xF4); +#if 0 +GLOBAL T_ACI_RETURN sAT_PlusCSMP ( T_ACI_CMD_SRC srcId, + SHORT fo, + SHORT vprel, + T_ACI_VP_ABS* vpabs, + SHORT pid, + SHORT dcs ) +#endif + if (sAT_PlusCMGF (p_lsprm->lc_src_id, CMGF_MOD_Txt) NEQ AT_CMPL) + { + TRACE_ERROR("ati_src_lc_result_cb():[ERR] invalid return for sAT_PlusCMGF"); + } + if (sAT_PlusCMGS_Gl (p_lsprm->lc_src_id, + p_lsprm->mlcdest.address, + &p_lsprm->mlcdest.toa, + &sms_data, + NULL, + NULL, + NULL, + -1, + NULL, + NULL) NEQ AT_EXCT) + { + TRACE_ERROR ("[ERR] sms position data failed"); + } + else + { + src_params->curAtCmd = AT_CMD_CMGS; + } + } + } + } /* E-OTD */ + return; +} + + +GLOBAL void ati_src_lc_line_state_cb (UBYTE src_id, + T_ATI_LINE_STATE_TYPE line_state_type, + ULONG line_state_param) +{ + char trcBuf[80]; + + TRACE_FUNCTION ("ati_src_lc_line_state_cb ()"); + + switch (line_state_type) + { + case ATI_LINE_STATE_OUTPUT_TYPE: + sprintf (trcBuf, "[DBG] ati_src_tst_line_state_cb (): "\ + "ATI_LINE_STATE_OUTPUT_TYPE = %d", line_state_param); + TRACE_EVENT (trcBuf); + break; + default: + sprintf (trcBuf, "[WRN] ati_src_tst_line_state_cb (): "\ + "UNKNOWN line_state_type = %d", line_state_type); + TRACE_EVENT (trcBuf); + break; + } +} + + +/* ++-------------------------------------------------------------------+ +| PROJECT : GSM-PS (6147) MODULE : ati_src_lc | +| ROUTINE : ati_src_lc_init | ++-------------------------------------------------------------------+ + + PURPOSE : register the location service source +*/ + +GLOBAL void ati_src_lc_init ( UBYTE cmd_src ) +{ + T_LOC_SERV_PARA *lc_para = 0; + + TRACE_FUNCTION ("ati_src_lc_init ()"); + + lc_para = &locServPrm; + + /* initialize LC parameters */ + + + /* register the location service source */ + lc_para->lc_src_id = ati_init (ATI_SRC_TYPE_LC, + ati_src_lc_result_cb, + ati_src_lc_line_state_cb); + + lclist_init(); + + TRACE_EVENT_P1 ("ati_src_lc_init: srcId=%d", lc_para->lc_src_id); +} + + +/* ++-------------------------------------------------------------------+ +| PROJECT : GSM-PS (6147) MODULE : ati_src_lc | +| ROUTINE : ati_src_lc_finit | ++-------------------------------------------------------------------+ + + PURPOSE : deregister the location service source +*/ + +GLOBAL void ati_src_lc_finit (void) +{ + TRACE_FUNCTION ("ati_src_lc_finit ()"); + + ati_finit (locServPrm.lc_src_id); + +} + + + +#endif /* FF_EOTD */ +