diff g23m/condat/ms/src/aci/ati_src_lc.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_src_lc.c	Mon Jun 01 03:24:05 2015 +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 */
+