diff g23m/condat/ms/src/aci/aci_aci.c @ 10:4a87497c80af

aci_aci.c converted to UNIX line endings in prep for a patch
author Space Falcon <falcon@ivan.Harhan.ORG>
date Mon, 01 Jun 2015 19:12:01 +0000
parents 509db1a7b7b8
children 98f5312a7d0b
line wrap: on
line diff
--- a/g23m/condat/ms/src/aci/aci_aci.c	Mon Jun 01 19:02:17 2015 +0000
+++ b/g23m/condat/ms/src/aci/aci_aci.c	Mon Jun 01 19:12:01 2015 +0000
@@ -1,661 +1,661 @@
-/*
-+-----------------------------------------------------------------------------
-|  Project :  GSM-F&D (8411)
-|  Modul   :  ACI
-+-----------------------------------------------------------------------------
-|  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 :  This Modul holds the main functions
-|             for the AT Command Interpreter
-+-----------------------------------------------------------------------------
-*/
-
-#ifndef ACI_ACI_C
-#define ACI_ACI_C
-
-#include "aci_all.h"
-
-#include "aci_cmh.h"
-#ifdef _SIMULATION_
-#include "dti.h"
-#include "dti_conn_mng.h"
-
-#ifdef UART
-#include "psa_uart.h"
-#endif
-
-#ifdef FF_PSI
-#include "psa_psi.h"
-#endif /*FF_PSI*/
-#include "ati_src_tst.h"
-#endif
-
-#ifdef FAX_AND_DATA
-#include "aci_fd.h"
-#endif    /* of #ifdef FAX_AND_DATA */
-
-
-#include "psa.h"
-#include "psa_cc.h"
-#include "cmh.h"
-#include "cmh_cc.h"
-#include "aci_lst.h"
-#include "ati_cmd.h"
-#include "ati_ext_mech.h"
-
-#ifdef FF_ATI
-#include "aci_io.h"
-#endif
-
-#ifdef FAX_AND_DATA
-#include "psa_ra.h"
-#include "cmh_ra.h"
-#endif    /* of #ifdef FAX_AND_DATA */
-
-#ifdef BT_ADAPTER
-#include "dti.h"
-
-#include "bti.h"
-#include "bti_int.h"
-#include "bti_aci.h"
-#include "ati_src_bt.h"
-#endif
-
-
-#ifdef FF_ATI_BAT
-#include "p_bat.h"
-#include "aci_bat.h"
-#ifdef _SIMULATION_
-#include "line_edit.h"
-#include "ati_bat.h"
-#endif
-#endif
-
-
-/*===== EXPORT =====================================================*/
-/*===== PRIVATE ====================================================*/
-
-/*===== VARIABLES ==================================================*/
-T_ACI_CMD_MODE _mode=CMD_MODE_NONE;
-UBYTE srcId_cb;
-GLOBAL BOOL _g_ati_trc_enabled = FALSE;
-
-/* 0 (CMD_SRC_LCL) are reserved */
-GLOBAL USHORT used_sources = 1;
-
-/*===== EXTERNALS ==================================================*/
-EXTERN T_ACI_LIST    *ati_src_list;
-
-/*===== FUNCTIONS ==================================================*/
-
-/*
-+--------------------------------------------------------------------+
-| PROJECT : GSM-F&D (8411)              MODULE  : ACI                |
-| STATE   : code                        ROUTINE : aci_aci_cmd_req    |
-+--------------------------------------------------------------------+
-
-  PURPOSE : handle ACI command request primitive. It is only a
-            signal and must not be freed by PFREE.
-
-*/
-
-GLOBAL void aci_aci_cmd_req (T_ACI_CMD_REQ *cmd)
-{
-  TRACE_FUNCTION("aci_aci_cmd_req()");
-
-#ifdef FF_ATI
-  if ( cmd->cmd_len < MAX_TRC_LEN )
-  {
-    cmd->cmd_seq[cmd->cmd_len] = '\0';
-    TRACE_EVENT_P1 ("%s", cmd->cmd_seq);
-  }
-#ifdef DTI
-#ifdef _SIMULATION_
-  if (cmd->cmd_src >= CMD_SRC_EXT && cmd->cmd_src <= MAX_TST_SRC)
-  {
-#ifdef FF_ATI_BAT
-    U8 src_id = tst_src_id[cmd->cmd_src - 1];
-#endif
-    ati_src_tst_proc_cmd (cmd);
-#ifdef FF_ATI_BAT
-    if (aci_cmd_src_mode_get(src_id) EQ CMD_MODE_BAT) /* simulation with BAT library */
-    {
-      T_ATI_SRC_PARAMS *src_params = find_element (ati_src_list, src_id, search_ati_src_id);
-      T_ACI_DTI_PRC_PSI *src_infos_psi = find_element (psi_src_params, src_id, cmhPSItest_srcId);
-      while (ledit_ctrl(src_params->src_id,LEDIT_CTRL_MORE_CMDS, NULL) EQ LEDIT_CMPL)
-      {
-        ati_bat_response_simulation(&(src_infos_psi->res)); /* intermediate response */
-      }
-      if (src_params->cmd_state NEQ CMD_IDLE)
-      {
-        if (src_infos_psi->res.response AND (src_params->curAtCmd NEQ AT_CMD_CMGS))
-        {
-          ati_bat_response_simulation(&(src_infos_psi->res)); /* final response */
-          Perform_ati_bat_maint(src_id);
-        }
-        src_infos_psi->bat_client[src_infos_psi->active_client].curCmd = (T_BAT_ctrl_params)-1;
-      }
-    }
-#endif /* FF_ATI_BAT */
-  }
-  else
-  {
-    TRACE_EVENT_P1 ("aci_aci_cmd_req(): [WRN] srcId=%d, but must be 0x01 or 0x02", cmd->cmd_src);
-  }
-#endif /* _SIMULATION_ */
-#endif /* DTI */
-#endif
-
-  PFREE (cmd);
-
-}
-
-/*
-+--------------------------------------------------------------------+
-| PROJECT : GSM-F&D (8411)              MODULE  : ACI                |
-| STATE   : code                        ROUTINE : aci_aci_cmd_req    |
-+--------------------------------------------------------------------+
-
-  PURPOSE : handle ACI command request primitive. It is only a
-            signal and must not be freed by PFREE.
-
-*/
-#ifdef BT_ADAPTER
-GLOBAL void aci_aci_cmd_req_bt (T_ACI_CMD_REQ_BT *cmd)
-{
-  TRACE_FUNCTION("aci_aci_cmd_req_bt()");
-
-#ifdef FF_ATI
-  if ( cmd->cmd_len <= 80 )
-  {
-    if( !strchr((char *)cmd->cmd_seq,'%'))
-      TRACE_EVENT ((char *)cmd->cmd_seq);
-  }
-
-  if (cmd->cmd_src EQ CMD_SRC_EXT)
-  {
-  ati_src_bt_proc_cmd(cmd);
-  }
-
-#endif
-  PFREE(cmd);
-}
-#endif /* BT_ADAPTER */
-
-/*
-+--------------------------------------------------------------------+
-| PROJECT : GSM-F&D (8411)              MODULE  : ACI                |
-| STATE   : code                        ROUTINE : aci_aci_abort_req  |
-+--------------------------------------------------------------------+
-
-  PURPOSE : handle aci data mode abort request
-
-*/
-
-GLOBAL void aci_aci_abort_req (T_ACI_ABORT_REQ *aci_abort_req)
-{
-  EXTERN void aciAbort (UBYTE srcId);
-
-  UBYTE srcId;
-
-  TRACE_FUNCTION ("aci_aci_abort_req()");
-
-  srcId = aci_abort_req->cmd_src;
-
-#ifdef DTI
-#ifdef _SIMULATION_
-  if (srcId >= CMD_SRC_EXT && srcId <= MAX_TST_SRC)
-  {
-    ati_src_tst_abort(srcId);
-    return;
-  }
-#endif /* _SIMULATION_ */
-#endif /* DTI */
-
-  if (aci_abort_req->cause EQ ABT_ABORT_CMD)
-    aciAbort (srcId);
-
-#ifdef FAX_AND_DATA
-  if (aci_abort_req->cause EQ ABT_ABORT_DATA)
-    cmhRA_Escape ();
-#endif
-
-#ifdef BT_ADAPTER
-  btiaci_at_abort_res(srcId);
-#endif /* BT_ADAPTER */
-
-  PFREE (aci_abort_req);
-
-}
-
-
-/*
-+--------------------------------------------------------------------+
-| PROJECT : GSM-F&D (8411)              MODULE  : ACI                |
-| STATE   : code                        ROUTINE : aci_aci_abort_req  |
-+--------------------------------------------------------------------+
-
-  PURPOSE : handle aci (data mode) abort request for BT
-
-*/
-#ifdef BT_ADAPTER
-GLOBAL void aci_aci_abort_req_bt (T_ACI_ABORT_REQ_BT *aci_abort_req)
-{
-/*  EXTERN void aciAbort (UBYTE srcId);*/
-
-  UBYTE srcId;
-
-  TRACE_FUNCTION ("aci_aci_abort_req_bt()");
-
-  srcId = aci_abort_req->src_id;
-
-  if (aci_abort_req->cause EQ ABT_ABORT_CMD)
-    aciAbort (srcId);
-
-#ifdef FAX_AND_DATA
-  if (aci_abort_req->cause EQ ABT_ABORT_DATA)
-    cmhRA_Escape ();
-#endif
-
-  btiaci_at_abort_res(get_port_by_srcID(srcId));
-
-
-  PFREE (aci_abort_req);
-
-}
-#endif /* BT_ADAPTER */
-
-#ifdef FF_ATI
-
-GLOBAL UBYTE aci_init (T_ATI_SRC_TYPE src_type)
-{
-  int   i;
-  UBYTE tst_src;
-
-  TRACE_FUNCTION ("aci_init ()");
-
-#ifdef _SIMULATION_
-  if (src_type EQ ATI_SRC_TYPE_TST)
-  {
-    for (i = (CMD_SRC_MAX-1); i >= 0; i--)
-    {
-      tst_src = (0x01 << i) & used_sources;
-      if (!tst_src)
-        break;
-    }
-    if (tst_src)
-    {
-      return (0);
-    }
-
-    used_sources |= (0x01 << i);
-    return (UBYTE) (i);
-  }
-#endif
-
-  for (i = 0; i < CMD_SRC_MAX; i++)
-  {
-    tst_src = (0x01 << i) & used_sources;
-    if (!tst_src)
-      break;
-  }
-  if (tst_src)
-  {
-    TRACE_EVENT_P1("No more sources available ! used_sources: %04X", used_sources);
-    return (0);
-  }
-  used_sources |= (0x01 << i);
-
-  if (src_type EQ ATI_SRC_TYPE_BLUETOOTH)
-  {
-    used_sources |= (0x01 << (i + 8));
-  }
-
-  TRACE_EVENT_P2("New source %d ! used_sources: %04X", i, used_sources);
-  return (i);
-}
-
-#endif /* FF_ATI */
-
-GLOBAL void aci_finit (UBYTE src_id)
-{
-  UBYTE tst_src;
-
-  TRACE_FUNCTION ("aci_finit ()");
-
-  tst_src = 0x01 << src_id;
-  if (!(used_sources & tst_src))
-  {
-    TRACE_EVENT ("[ERR] aci_finit(): invalid source");
-    return;
-  }
-  used_sources = used_sources & ~tst_src;
-
-  /* for BT */
-  tst_src = 0x01 << (src_id + 8);
-  used_sources = used_sources & ~tst_src;
-}
-
-
-#ifdef BT_ADAPTER
-/*
-+--------------------------------------------------------------------+
-| PROJECT : GSM-F&D (8411)              MODULE  : ACI                |
-| STATE   : code                        ROUTINE : aci_aci_cmd_res    |
-+--------------------------------------------------------------------+
-
-  PURPOSE : handle aci_cmd_res
-
-*/
-
-GLOBAL void aci_aci_cmd_res (T_ACI_CMD_RES *aci_cmd_res)
-{
-  TRACE_FUNCTION ("aci_aci_cmd_res()");
-
-  /*
-  This is currently just ignored !
-  Actually ACI_CMD_RES is an acknowledgement for ACI_CMD_IND. It should
-  be used to determine if an ACI_CMD_IND may be sent. After sending one
-  ACI_CMD_IND should wait for ACI_CMD_RES before another ACI_CMD_IND may
-  be sent. This behaviour shall be implemented later.
-  */
-  PFREE (aci_cmd_res);
-
-}
-/*
-+--------------------------------------------------------------------+
-| PROJECT : GSM-F&D (8411)              MODULE  : ACI                |
-| STATE   : code                        ROUTINE : aci_aci_cmd_res    |
-+--------------------------------------------------------------------+
-
-  PURPOSE : handle aci_cmd_res_bt
-
-*/
-
-GLOBAL void aci_aci_cmd_res_bt (T_ACI_CMD_RES_BT *aci_cmd_res)
-{
-
-  ULONG port_nb;
-  T_ATI_BT_OUTPUT *cur_cmd;
-
-  TRACE_FUNCTION ("aci_aci_cmd_res()");
-
-  /*
-  This is currently just ignored !
-  Actually ACI_CMD_RES is an acknowledgement for ACI_CMD_IND. It should
-  be used to determine if an ACI_CMD_IND may be sent. After sending one
-  ACI_CMD_IND should wait for ACI_CMD_RES before another ACI_CMD_IND may
-  be sent. This behaviour shall be implemented later.
-  */
-
-  port_nb = get_port_by_srcID(aci_cmd_res->src_id);
-  PFREE (aci_cmd_res);
-
-  if (bti_port_table[port_nb].atqueue EQ NULL)
-  {
-    bti_port_table[port_nb].at_flow_on = TRUE;
-    TRACE_EVENT("BTA queue empty");
-    return;
-  }
-
-  cur_cmd = bti_port_table[port_nb].atqueue;
-
-  if (cur_cmd->output_type & ATI_BT_CONFIRM_COMMAND)
-  {
-    TRACE_EVENT("BTA confirm in queue");
-    bti_port_table[port_nb].atqueue = cur_cmd->next;
-
-    btiaci_at_cmd_res(port_nb, (char *)(cur_cmd->output));
-    MFREE(cur_cmd);
-
-    if (bti_port_table[port_nb].atqueue EQ NULL)
-    {
-      TRACE_EVENT("BTA queue empty");
-      bti_port_table[port_nb].at_flow_on = TRUE;
-      return;
-    }
-    else
-    {
-      cur_cmd = bti_port_table[port_nb].atqueue;
-    }
-  }
-
-  if ((cur_cmd->output_type & ATI_BT_NORMAL_COMMAND) ||
-      (cur_cmd->output_type & ATI_BT_INDICATION_COMMAND))
-  {
-    TRACE_EVENT("BTA command in queue");
-    bti_port_table[port_nb].at_flow_on = FALSE;
-
-    bti_port_table[port_nb].atqueue = cur_cmd->next;
-
-    TRACE_EVENT_P1("sending %s", cur_cmd->output);
-    btiaci_at_cmd_req(port_nb, (char *)(cur_cmd->output));
-    MFREE(cur_cmd);
-
-#ifdef _SIMULATION_
-    cur_cmd = bti_port_table[port_nb].atqueue;
-    while (cur_cmd->next NEQ NULL) /* search end of queue */
-    {
-      TRACE_EVENT_P1("in queue: %s", cur_cmd->output); /* just for debugging */
-      cur_cmd = cur_cmd->next;
-    }
-#endif
-
-  }
-  return;
-}
-
-/*
-+--------------------------------------------------------------------+
-| PROJECT : GSM-F&D (8411)              MODULE  : ACI                |
-| STATE   : code                        ROUTINE : aci_aci_init_res   |
-+--------------------------------------------------------------------+
-
-  PURPOSE : handle aci_init_res
-
-*/
-
-GLOBAL void aci_aci_init_res (T_ACI_INIT_RES *aci_init_res)
-{
-  TRACE_FUNCTION ("aci_aci_init_res()");
-
-  PFREE (aci_init_res);
-}
-
-/*
-+--------------------------------------------------------------------+
-| PROJECT : GSM-F&D (8411)              MODULE  : ACI                |
-| STATE   : code                        ROUTINE : aci_aci_deinit_req |
-+--------------------------------------------------------------------+
-
-  PURPOSE : handle aci_deinit_req
-
-*/
-
-GLOBAL void aci_aci_deinit_req (T_ACI_DEINIT_REQ *aci_deinit_req)
-{
-  TRACE_FUNCTION ("aci_aci_deinit_req()");
-
-  io_closePort(0);
-
-  btiaci_at_deinit_res();
-
-  PFREE (aci_deinit_req);
-}
-
-/*
-+--------------------------------------------------------------------+
-| PROJECT : GSM-F&D (8411)              MODULE  : ACI                |
-| STATE   : code                        ROUTINE : aci_aci_open_port_req|
-+--------------------------------------------------------------------+
-
-  PURPOSE : handle aci_open_port_req
-
-*/
-
-GLOBAL void aci_aci_open_port_req (T_ACI_OPEN_PORT_REQ *aci_open_port_req)
-{
-  ULONG port;
-  T_BTI_ACK result;
-
-  TRACE_FUNCTION ("aci_aci_open_port_req()");
-
-  port = aci_open_port_req->port_nb;
-
-  result = io_openPort(port);
-
-  PFREE (aci_open_port_req);
-
-  btiaci_at_open_port_res(port, result);
-}
-
-/*
-+--------------------------------------------------------------------+
-| PROJECT : GSM-F&D (8411)              MODULE  : ACI                |
-| STATE   : code                        ROUTINE : aci_aci_close_port_req|
-+--------------------------------------------------------------------+
-
-  PURPOSE : handle aci_close_port_req
-
-*/
-
-GLOBAL void aci_aci_close_port_req (T_ACI_CLOSE_PORT_REQ *aci_close_port_req)
-{
-  ULONG port;
-
-  TRACE_FUNCTION ("aci_aci_close_port_req()");
-
-  port = aci_close_port_req->port_nb;
-
-  io_closePort(port);
-
-  PFREE (aci_close_port_req);
-
-  btiaci_at_close_port_res(port);
-}
-
-#endif /* BT_ADAPTER */
-
-/*
-+--------------------------------------------------------------------+
-| PROJECT : GSM-F&D (8411)              MODULE  : ACI                |
-| STATE   : code                        ROUTINE : aci_aci_trc_ind    |
-+--------------------------------------------------------------------+
-
-  PURPOSE : This function call is only relevant for the acia_adater. The acia_adapter
-  sends for every AT-cmd a psignal to aci  (task switch).
-
-*/
-#ifdef FF_MMI_RIV
-
-EXTERN void acia_callback_for_ACI (void *AT_command_ptr);
-
-GLOBAL void aci_aci_riv_cmd_req (T_ACI_RIV_CMD_REQ *cmd_ptr)
-{
-  TRACE_FUNCTION ("aci_aci_riv_cmd_req()");
-
-acia_callback_for_ACI ((void *)cmd_ptr); 
-}
-#endif /* FF_MMI_RIV */
-
-/*
-+--------------------------------------------------------------------+
-| PROJECT : GSM-F&D (8411)              MODULE  : ACI                |
-| STATE   : code                        ROUTINE : aci_aci_trc_ind    |
-+--------------------------------------------------------------------+
-
-  PURPOSE : handle ACI trace indication primitive.
-
-*/
-
-GLOBAL void aci_aci_trc_ind (T_ACI_TRC_IND *trc_ind)
-{
-  T_ATI_SRC_PARAMS *src_params;
-
-  TRACE_FUNCTION("aci_aci_trc_ind()");
-
-  if (!_g_ati_trc_enabled)
-  {
-    PFREE (trc_ind);
-    return;
-  }
-
-  trc_ind->trc_buf[MAX_TRC_LEN-1] = '\0';
-
-#ifdef FF_ATI
-  if ( trc_ind->trc_len >= MAX_TRC_LEN )
-  {
-    UBYTE c;
-    c = trc_ind->trc_buf[MAX_TRC_LEN-1];
-    trc_ind->trc_buf[MAX_TRC_LEN-1] = '\0';
-    TRACE_EVENT_P1 ("%s", trc_ind->trc_buf);
-    trc_ind->trc_buf[MAX_TRC_LEN-1] = c;
-  }
-  else
-  {
-    TRACE_EVENT_P1 ("%s", trc_ind->trc_buf);
-  }
-#endif  /* FF_ATI */
-
-  /* check if the src is valid */
-  src_params = find_element (ati_src_list, trc_ind->cmd_src, search_ati_src_id);
-#ifdef FF_PSI
-  if ((src_params EQ NULL) OR ((src_params->src_type NEQ ATI_SRC_TYPE_UART) AND 
-                        (src_params->src_type NEQ ATI_SRC_TYPE_PSI)))
-#else
-  if ((src_params EQ NULL) OR (src_params->src_type NEQ ATI_SRC_TYPE_UART))
-#endif /*FF_PSI*/
-  {
-    src_params = get_next_element (ati_src_list, NULL);/* first element */
-    while (src_params NEQ NULL)
-    {
-#ifdef FF_PSI
-      if (src_params->src_type EQ ATI_SRC_TYPE_UART OR src_params->src_type EQ ATI_SRC_TYPE_PSI)
-#else
-      if (src_params->src_type EQ ATI_SRC_TYPE_UART)
-#endif /*FF_PSI*/
-      {
-        break;
-      }
-      src_params = get_next_element (ati_src_list, src_params);
-    }
-  }
-
-  if (src_params NEQ NULL)
-  {
-    io_sendIndication(src_params->src_id, (CHAR *)trc_ind->trc_buf, ATI_FORCED_OUTPUT);
-  }
-
-  PFREE (trc_ind);
-}
-
-
-/*
-+--------------------------------------------------------------------+
-| PROJECT : GSM-F&D (8411)              MODULE  : ACI                |
-| STATE   : code                        ROUTINE : aci_aci_ext_ind    |
-+--------------------------------------------------------------------+
-
-  PURPOSE : handle ACI extension signal indication primitive.
-
-*/
-
-GLOBAL void aci_aci_ext_ind (T_ACI_EXT_IND *aci_ext_ind)
-{
-  TRACE_FUNCTION ("aci_aci_ext_ind()");
-  rEXT_Signal (aci_ext_ind);
-  PFREE (aci_ext_ind);
-}
-
-
-
-#endif /* ACI_ACI_C */
+/*
++-----------------------------------------------------------------------------
+|  Project :  GSM-F&D (8411)
+|  Modul   :  ACI
++-----------------------------------------------------------------------------
+|  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 :  This Modul holds the main functions
+|             for the AT Command Interpreter
++-----------------------------------------------------------------------------
+*/
+
+#ifndef ACI_ACI_C
+#define ACI_ACI_C
+
+#include "aci_all.h"
+
+#include "aci_cmh.h"
+#ifdef _SIMULATION_
+#include "dti.h"
+#include "dti_conn_mng.h"
+
+#ifdef UART
+#include "psa_uart.h"
+#endif
+
+#ifdef FF_PSI
+#include "psa_psi.h"
+#endif /*FF_PSI*/
+#include "ati_src_tst.h"
+#endif
+
+#ifdef FAX_AND_DATA
+#include "aci_fd.h"
+#endif    /* of #ifdef FAX_AND_DATA */
+
+
+#include "psa.h"
+#include "psa_cc.h"
+#include "cmh.h"
+#include "cmh_cc.h"
+#include "aci_lst.h"
+#include "ati_cmd.h"
+#include "ati_ext_mech.h"
+
+#ifdef FF_ATI
+#include "aci_io.h"
+#endif
+
+#ifdef FAX_AND_DATA
+#include "psa_ra.h"
+#include "cmh_ra.h"
+#endif    /* of #ifdef FAX_AND_DATA */
+
+#ifdef BT_ADAPTER
+#include "dti.h"
+
+#include "bti.h"
+#include "bti_int.h"
+#include "bti_aci.h"
+#include "ati_src_bt.h"
+#endif
+
+
+#ifdef FF_ATI_BAT
+#include "p_bat.h"
+#include "aci_bat.h"
+#ifdef _SIMULATION_
+#include "line_edit.h"
+#include "ati_bat.h"
+#endif
+#endif
+
+
+/*===== EXPORT =====================================================*/
+/*===== PRIVATE ====================================================*/
+
+/*===== VARIABLES ==================================================*/
+T_ACI_CMD_MODE _mode=CMD_MODE_NONE;
+UBYTE srcId_cb;
+GLOBAL BOOL _g_ati_trc_enabled = FALSE;
+
+/* 0 (CMD_SRC_LCL) are reserved */
+GLOBAL USHORT used_sources = 1;
+
+/*===== EXTERNALS ==================================================*/
+EXTERN T_ACI_LIST    *ati_src_list;
+
+/*===== FUNCTIONS ==================================================*/
+
+/*
++--------------------------------------------------------------------+
+| PROJECT : GSM-F&D (8411)              MODULE  : ACI                |
+| STATE   : code                        ROUTINE : aci_aci_cmd_req    |
++--------------------------------------------------------------------+
+
+  PURPOSE : handle ACI command request primitive. It is only a
+            signal and must not be freed by PFREE.
+
+*/
+
+GLOBAL void aci_aci_cmd_req (T_ACI_CMD_REQ *cmd)
+{
+  TRACE_FUNCTION("aci_aci_cmd_req()");
+
+#ifdef FF_ATI
+  if ( cmd->cmd_len < MAX_TRC_LEN )
+  {
+    cmd->cmd_seq[cmd->cmd_len] = '\0';
+    TRACE_EVENT_P1 ("%s", cmd->cmd_seq);
+  }
+#ifdef DTI
+#ifdef _SIMULATION_
+  if (cmd->cmd_src >= CMD_SRC_EXT && cmd->cmd_src <= MAX_TST_SRC)
+  {
+#ifdef FF_ATI_BAT
+    U8 src_id = tst_src_id[cmd->cmd_src - 1];
+#endif
+    ati_src_tst_proc_cmd (cmd);
+#ifdef FF_ATI_BAT
+    if (aci_cmd_src_mode_get(src_id) EQ CMD_MODE_BAT) /* simulation with BAT library */
+    {
+      T_ATI_SRC_PARAMS *src_params = find_element (ati_src_list, src_id, search_ati_src_id);
+      T_ACI_DTI_PRC_PSI *src_infos_psi = find_element (psi_src_params, src_id, cmhPSItest_srcId);
+      while (ledit_ctrl(src_params->src_id,LEDIT_CTRL_MORE_CMDS, NULL) EQ LEDIT_CMPL)
+      {
+        ati_bat_response_simulation(&(src_infos_psi->res)); /* intermediate response */
+      }
+      if (src_params->cmd_state NEQ CMD_IDLE)
+      {
+        if (src_infos_psi->res.response AND (src_params->curAtCmd NEQ AT_CMD_CMGS))
+        {
+          ati_bat_response_simulation(&(src_infos_psi->res)); /* final response */
+          Perform_ati_bat_maint(src_id);
+        }
+        src_infos_psi->bat_client[src_infos_psi->active_client].curCmd = (T_BAT_ctrl_params)-1;
+      }
+    }
+#endif /* FF_ATI_BAT */
+  }
+  else
+  {
+    TRACE_EVENT_P1 ("aci_aci_cmd_req(): [WRN] srcId=%d, but must be 0x01 or 0x02", cmd->cmd_src);
+  }
+#endif /* _SIMULATION_ */
+#endif /* DTI */
+#endif
+
+  PFREE (cmd);
+
+}
+
+/*
++--------------------------------------------------------------------+
+| PROJECT : GSM-F&D (8411)              MODULE  : ACI                |
+| STATE   : code                        ROUTINE : aci_aci_cmd_req    |
++--------------------------------------------------------------------+
+
+  PURPOSE : handle ACI command request primitive. It is only a
+            signal and must not be freed by PFREE.
+
+*/
+#ifdef BT_ADAPTER
+GLOBAL void aci_aci_cmd_req_bt (T_ACI_CMD_REQ_BT *cmd)
+{
+  TRACE_FUNCTION("aci_aci_cmd_req_bt()");
+
+#ifdef FF_ATI
+  if ( cmd->cmd_len <= 80 )
+  {
+    if( !strchr((char *)cmd->cmd_seq,'%'))
+      TRACE_EVENT ((char *)cmd->cmd_seq);
+  }
+
+  if (cmd->cmd_src EQ CMD_SRC_EXT)
+  {
+  ati_src_bt_proc_cmd(cmd);
+  }
+
+#endif
+  PFREE(cmd);
+}
+#endif /* BT_ADAPTER */
+
+/*
++--------------------------------------------------------------------+
+| PROJECT : GSM-F&D (8411)              MODULE  : ACI                |
+| STATE   : code                        ROUTINE : aci_aci_abort_req  |
++--------------------------------------------------------------------+
+
+  PURPOSE : handle aci data mode abort request
+
+*/
+
+GLOBAL void aci_aci_abort_req (T_ACI_ABORT_REQ *aci_abort_req)
+{
+  EXTERN void aciAbort (UBYTE srcId);
+
+  UBYTE srcId;
+
+  TRACE_FUNCTION ("aci_aci_abort_req()");
+
+  srcId = aci_abort_req->cmd_src;
+
+#ifdef DTI
+#ifdef _SIMULATION_
+  if (srcId >= CMD_SRC_EXT && srcId <= MAX_TST_SRC)
+  {
+    ati_src_tst_abort(srcId);
+    return;
+  }
+#endif /* _SIMULATION_ */
+#endif /* DTI */
+
+  if (aci_abort_req->cause EQ ABT_ABORT_CMD)
+    aciAbort (srcId);
+
+#ifdef FAX_AND_DATA
+  if (aci_abort_req->cause EQ ABT_ABORT_DATA)
+    cmhRA_Escape ();
+#endif
+
+#ifdef BT_ADAPTER
+  btiaci_at_abort_res(srcId);
+#endif /* BT_ADAPTER */
+
+  PFREE (aci_abort_req);
+
+}
+
+
+/*
++--------------------------------------------------------------------+
+| PROJECT : GSM-F&D (8411)              MODULE  : ACI                |
+| STATE   : code                        ROUTINE : aci_aci_abort_req  |
++--------------------------------------------------------------------+
+
+  PURPOSE : handle aci (data mode) abort request for BT
+
+*/
+#ifdef BT_ADAPTER
+GLOBAL void aci_aci_abort_req_bt (T_ACI_ABORT_REQ_BT *aci_abort_req)
+{
+/*  EXTERN void aciAbort (UBYTE srcId);*/
+
+  UBYTE srcId;
+
+  TRACE_FUNCTION ("aci_aci_abort_req_bt()");
+
+  srcId = aci_abort_req->src_id;
+
+  if (aci_abort_req->cause EQ ABT_ABORT_CMD)
+    aciAbort (srcId);
+
+#ifdef FAX_AND_DATA
+  if (aci_abort_req->cause EQ ABT_ABORT_DATA)
+    cmhRA_Escape ();
+#endif
+
+  btiaci_at_abort_res(get_port_by_srcID(srcId));
+
+
+  PFREE (aci_abort_req);
+
+}
+#endif /* BT_ADAPTER */
+
+#ifdef FF_ATI
+
+GLOBAL UBYTE aci_init (T_ATI_SRC_TYPE src_type)
+{
+  int   i;
+  UBYTE tst_src;
+
+  TRACE_FUNCTION ("aci_init ()");
+
+#ifdef _SIMULATION_
+  if (src_type EQ ATI_SRC_TYPE_TST)
+  {
+    for (i = (CMD_SRC_MAX-1); i >= 0; i--)
+    {
+      tst_src = (0x01 << i) & used_sources;
+      if (!tst_src)
+        break;
+    }
+    if (tst_src)
+    {
+      return (0);
+    }
+
+    used_sources |= (0x01 << i);
+    return (UBYTE) (i);
+  }
+#endif
+
+  for (i = 0; i < CMD_SRC_MAX; i++)
+  {
+    tst_src = (0x01 << i) & used_sources;
+    if (!tst_src)
+      break;
+  }
+  if (tst_src)
+  {
+    TRACE_EVENT_P1("No more sources available ! used_sources: %04X", used_sources);
+    return (0);
+  }
+  used_sources |= (0x01 << i);
+
+  if (src_type EQ ATI_SRC_TYPE_BLUETOOTH)
+  {
+    used_sources |= (0x01 << (i + 8));
+  }
+
+  TRACE_EVENT_P2("New source %d ! used_sources: %04X", i, used_sources);
+  return (i);
+}
+
+#endif /* FF_ATI */
+
+GLOBAL void aci_finit (UBYTE src_id)
+{
+  UBYTE tst_src;
+
+  TRACE_FUNCTION ("aci_finit ()");
+
+  tst_src = 0x01 << src_id;
+  if (!(used_sources & tst_src))
+  {
+    TRACE_EVENT ("[ERR] aci_finit(): invalid source");
+    return;
+  }
+  used_sources = used_sources & ~tst_src;
+
+  /* for BT */
+  tst_src = 0x01 << (src_id + 8);
+  used_sources = used_sources & ~tst_src;
+}
+
+
+#ifdef BT_ADAPTER
+/*
++--------------------------------------------------------------------+
+| PROJECT : GSM-F&D (8411)              MODULE  : ACI                |
+| STATE   : code                        ROUTINE : aci_aci_cmd_res    |
++--------------------------------------------------------------------+
+
+  PURPOSE : handle aci_cmd_res
+
+*/
+
+GLOBAL void aci_aci_cmd_res (T_ACI_CMD_RES *aci_cmd_res)
+{
+  TRACE_FUNCTION ("aci_aci_cmd_res()");
+
+  /*
+  This is currently just ignored !
+  Actually ACI_CMD_RES is an acknowledgement for ACI_CMD_IND. It should
+  be used to determine if an ACI_CMD_IND may be sent. After sending one
+  ACI_CMD_IND should wait for ACI_CMD_RES before another ACI_CMD_IND may
+  be sent. This behaviour shall be implemented later.
+  */
+  PFREE (aci_cmd_res);
+
+}
+/*
++--------------------------------------------------------------------+
+| PROJECT : GSM-F&D (8411)              MODULE  : ACI                |
+| STATE   : code                        ROUTINE : aci_aci_cmd_res    |
++--------------------------------------------------------------------+
+
+  PURPOSE : handle aci_cmd_res_bt
+
+*/
+
+GLOBAL void aci_aci_cmd_res_bt (T_ACI_CMD_RES_BT *aci_cmd_res)
+{
+
+  ULONG port_nb;
+  T_ATI_BT_OUTPUT *cur_cmd;
+
+  TRACE_FUNCTION ("aci_aci_cmd_res()");
+
+  /*
+  This is currently just ignored !
+  Actually ACI_CMD_RES is an acknowledgement for ACI_CMD_IND. It should
+  be used to determine if an ACI_CMD_IND may be sent. After sending one
+  ACI_CMD_IND should wait for ACI_CMD_RES before another ACI_CMD_IND may
+  be sent. This behaviour shall be implemented later.
+  */
+
+  port_nb = get_port_by_srcID(aci_cmd_res->src_id);
+  PFREE (aci_cmd_res);
+
+  if (bti_port_table[port_nb].atqueue EQ NULL)
+  {
+    bti_port_table[port_nb].at_flow_on = TRUE;
+    TRACE_EVENT("BTA queue empty");
+    return;
+  }
+
+  cur_cmd = bti_port_table[port_nb].atqueue;
+
+  if (cur_cmd->output_type & ATI_BT_CONFIRM_COMMAND)
+  {
+    TRACE_EVENT("BTA confirm in queue");
+    bti_port_table[port_nb].atqueue = cur_cmd->next;
+
+    btiaci_at_cmd_res(port_nb, (char *)(cur_cmd->output));
+    MFREE(cur_cmd);
+
+    if (bti_port_table[port_nb].atqueue EQ NULL)
+    {
+      TRACE_EVENT("BTA queue empty");
+      bti_port_table[port_nb].at_flow_on = TRUE;
+      return;
+    }
+    else
+    {
+      cur_cmd = bti_port_table[port_nb].atqueue;
+    }
+  }
+
+  if ((cur_cmd->output_type & ATI_BT_NORMAL_COMMAND) ||
+      (cur_cmd->output_type & ATI_BT_INDICATION_COMMAND))
+  {
+    TRACE_EVENT("BTA command in queue");
+    bti_port_table[port_nb].at_flow_on = FALSE;
+
+    bti_port_table[port_nb].atqueue = cur_cmd->next;
+
+    TRACE_EVENT_P1("sending %s", cur_cmd->output);
+    btiaci_at_cmd_req(port_nb, (char *)(cur_cmd->output));
+    MFREE(cur_cmd);
+
+#ifdef _SIMULATION_
+    cur_cmd = bti_port_table[port_nb].atqueue;
+    while (cur_cmd->next NEQ NULL) /* search end of queue */
+    {
+      TRACE_EVENT_P1("in queue: %s", cur_cmd->output); /* just for debugging */
+      cur_cmd = cur_cmd->next;
+    }
+#endif
+
+  }
+  return;
+}
+
+/*
++--------------------------------------------------------------------+
+| PROJECT : GSM-F&D (8411)              MODULE  : ACI                |
+| STATE   : code                        ROUTINE : aci_aci_init_res   |
++--------------------------------------------------------------------+
+
+  PURPOSE : handle aci_init_res
+
+*/
+
+GLOBAL void aci_aci_init_res (T_ACI_INIT_RES *aci_init_res)
+{
+  TRACE_FUNCTION ("aci_aci_init_res()");
+
+  PFREE (aci_init_res);
+}
+
+/*
++--------------------------------------------------------------------+
+| PROJECT : GSM-F&D (8411)              MODULE  : ACI                |
+| STATE   : code                        ROUTINE : aci_aci_deinit_req |
++--------------------------------------------------------------------+
+
+  PURPOSE : handle aci_deinit_req
+
+*/
+
+GLOBAL void aci_aci_deinit_req (T_ACI_DEINIT_REQ *aci_deinit_req)
+{
+  TRACE_FUNCTION ("aci_aci_deinit_req()");
+
+  io_closePort(0);
+
+  btiaci_at_deinit_res();
+
+  PFREE (aci_deinit_req);
+}
+
+/*
++--------------------------------------------------------------------+
+| PROJECT : GSM-F&D (8411)              MODULE  : ACI                |
+| STATE   : code                        ROUTINE : aci_aci_open_port_req|
++--------------------------------------------------------------------+
+
+  PURPOSE : handle aci_open_port_req
+
+*/
+
+GLOBAL void aci_aci_open_port_req (T_ACI_OPEN_PORT_REQ *aci_open_port_req)
+{
+  ULONG port;
+  T_BTI_ACK result;
+
+  TRACE_FUNCTION ("aci_aci_open_port_req()");
+
+  port = aci_open_port_req->port_nb;
+
+  result = io_openPort(port);
+
+  PFREE (aci_open_port_req);
+
+  btiaci_at_open_port_res(port, result);
+}
+
+/*
++--------------------------------------------------------------------+
+| PROJECT : GSM-F&D (8411)              MODULE  : ACI                |
+| STATE   : code                        ROUTINE : aci_aci_close_port_req|
++--------------------------------------------------------------------+
+
+  PURPOSE : handle aci_close_port_req
+
+*/
+
+GLOBAL void aci_aci_close_port_req (T_ACI_CLOSE_PORT_REQ *aci_close_port_req)
+{
+  ULONG port;
+
+  TRACE_FUNCTION ("aci_aci_close_port_req()");
+
+  port = aci_close_port_req->port_nb;
+
+  io_closePort(port);
+
+  PFREE (aci_close_port_req);
+
+  btiaci_at_close_port_res(port);
+}
+
+#endif /* BT_ADAPTER */
+
+/*
++--------------------------------------------------------------------+
+| PROJECT : GSM-F&D (8411)              MODULE  : ACI                |
+| STATE   : code                        ROUTINE : aci_aci_trc_ind    |
++--------------------------------------------------------------------+
+
+  PURPOSE : This function call is only relevant for the acia_adater. The acia_adapter
+  sends for every AT-cmd a psignal to aci  (task switch).
+
+*/
+#ifdef FF_MMI_RIV
+
+EXTERN void acia_callback_for_ACI (void *AT_command_ptr);
+
+GLOBAL void aci_aci_riv_cmd_req (T_ACI_RIV_CMD_REQ *cmd_ptr)
+{
+  TRACE_FUNCTION ("aci_aci_riv_cmd_req()");
+
+acia_callback_for_ACI ((void *)cmd_ptr); 
+}
+#endif /* FF_MMI_RIV */
+
+/*
++--------------------------------------------------------------------+
+| PROJECT : GSM-F&D (8411)              MODULE  : ACI                |
+| STATE   : code                        ROUTINE : aci_aci_trc_ind    |
++--------------------------------------------------------------------+
+
+  PURPOSE : handle ACI trace indication primitive.
+
+*/
+
+GLOBAL void aci_aci_trc_ind (T_ACI_TRC_IND *trc_ind)
+{
+  T_ATI_SRC_PARAMS *src_params;
+
+  TRACE_FUNCTION("aci_aci_trc_ind()");
+
+  if (!_g_ati_trc_enabled)
+  {
+    PFREE (trc_ind);
+    return;
+  }
+
+  trc_ind->trc_buf[MAX_TRC_LEN-1] = '\0';
+
+#ifdef FF_ATI
+  if ( trc_ind->trc_len >= MAX_TRC_LEN )
+  {
+    UBYTE c;
+    c = trc_ind->trc_buf[MAX_TRC_LEN-1];
+    trc_ind->trc_buf[MAX_TRC_LEN-1] = '\0';
+    TRACE_EVENT_P1 ("%s", trc_ind->trc_buf);
+    trc_ind->trc_buf[MAX_TRC_LEN-1] = c;
+  }
+  else
+  {
+    TRACE_EVENT_P1 ("%s", trc_ind->trc_buf);
+  }
+#endif  /* FF_ATI */
+
+  /* check if the src is valid */
+  src_params = find_element (ati_src_list, trc_ind->cmd_src, search_ati_src_id);
+#ifdef FF_PSI
+  if ((src_params EQ NULL) OR ((src_params->src_type NEQ ATI_SRC_TYPE_UART) AND 
+                        (src_params->src_type NEQ ATI_SRC_TYPE_PSI)))
+#else
+  if ((src_params EQ NULL) OR (src_params->src_type NEQ ATI_SRC_TYPE_UART))
+#endif /*FF_PSI*/
+  {
+    src_params = get_next_element (ati_src_list, NULL);/* first element */
+    while (src_params NEQ NULL)
+    {
+#ifdef FF_PSI
+      if (src_params->src_type EQ ATI_SRC_TYPE_UART OR src_params->src_type EQ ATI_SRC_TYPE_PSI)
+#else
+      if (src_params->src_type EQ ATI_SRC_TYPE_UART)
+#endif /*FF_PSI*/
+      {
+        break;
+      }
+      src_params = get_next_element (ati_src_list, src_params);
+    }
+  }
+
+  if (src_params NEQ NULL)
+  {
+    io_sendIndication(src_params->src_id, (CHAR *)trc_ind->trc_buf, ATI_FORCED_OUTPUT);
+  }
+
+  PFREE (trc_ind);
+}
+
+
+/*
++--------------------------------------------------------------------+
+| PROJECT : GSM-F&D (8411)              MODULE  : ACI                |
+| STATE   : code                        ROUTINE : aci_aci_ext_ind    |
++--------------------------------------------------------------------+
+
+  PURPOSE : handle ACI extension signal indication primitive.
+
+*/
+
+GLOBAL void aci_aci_ext_ind (T_ACI_EXT_IND *aci_ext_ind)
+{
+  TRACE_FUNCTION ("aci_aci_ext_ind()");
+  rEXT_Signal (aci_ext_ind);
+  PFREE (aci_ext_ind);
+}
+
+
+
+#endif /* ACI_ACI_C */