⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 smi_cal.c

📁 是一个手机功能的模拟程序
💻 C
📖 第 1 页 / 共 4 页
字号:
                                  T_ACI_CME_ERR err)
{
  TRACE_FUNCTION ("cal_HRejWhilePlusCME ()");

  if (cmdId EQ currCalCmd)
    currCalCmd = AT_CMD_NONE;

  ui_signal (UI_SIG_UNHND_CME_ERR, err);
}

/*
+--------------------------------------------------------------------+
| PROJECT : GSM-PS (6147)         MODULE  : SMI_CAL                  |
| STATE   : code                  ROUTINE : cal_HRej                 |
+--------------------------------------------------------------------+

  PURPOSE : This function is called when an error occured during call
            release. It handles the errors signaled by the ACI
            callback functions rAT_NO_CARRIER, rAT_BUSY and
            rAT_NO_ANSWER.

            <cbId>: identity of the related ACI callback function
*/
GLOBAL void cal_HRej (T_MMI_RCB_ID cbId)
{
  TRACE_FUNCTION ("cal_HRej ()");

  ui_signal (UI_SIG_UNHND_CME_ERR, CME_ERR_Unknown);
}

/*
+--------------------------------------------------------------------+
| PROJECT : GSM-PS (6147)         MODULE  : SMI_CAL                  |
| STATE   : code                  ROUTINE : cal_HCnf                 |
+--------------------------------------------------------------------+

  PURPOSE : This function is called when call release is successfull.
*/
GLOBAL void cal_HCnf (T_ACI_AT_CMD cmdId)
{
  TRACE_FUNCTION ("cal_HCnf ()");

  if (cmdId EQ currCalCmd)
  {
    currCalCmd = AT_CMD_NONE;
    ui_signal (UI_SIG_DISCONNECT, cal_getCause ());

    if (currIbt NEQ CPI_IBT_True OR currTch NEQ CPI_TCH_True)
      ui_signal (UI_SIG_NIBT, NIBT_DISC);
  }
}

/*
+--------------------------------------------------------------------+
| PROJECT : GSM-PS (6147)         MODULE  : SMI_CAL                  |
| STATE   : code                  ROUTINE : cal_acceptCall           |
+--------------------------------------------------------------------+

  PURPOSE : This function is called to stimulate an acception of an
            incoming call by the ACI.

            returns: status information concerning the acception
                     progress
*/
GLOBAL T_ACI_RETURN cal_acceptCall ()
{
  T_ACI_RETURN ret = AT_FAIL; /* holds the status information */
  
  TRACE_FUNCTION ("cal_acceptCall ()");

  /*
   *-----------------------------------------------------------------
   * call to ACI function when no answer on a further ACI function
   * call is expected
   *-----------------------------------------------------------------
   */
  if (currCalCmd EQ AT_CMD_NONE)
  {  
    ret = sAT_A(CMD_SRC_LCL);

    currCalCmd = AT_CMD_A;

    /*
     *---------------------------------------------------------------
     * process result code of ACI function call
     *---------------------------------------------------------------
     */   
    switch (ret)
    {
      case (AT_CMPL):
        ui_signal (UI_SIG_CONNECTING);
        rAT_OK (currCalCmd);
        break;

      case (AT_EXCT):
        ui_signal (UI_SIG_CONNECTING);
        break;

      default:
        rAT_PlusCME (currCalCmd, CME_ERR_Unknown);
        break;
    }
  }
  else
  {
    /*
     *---------------------------------------------------------------
     * error handling while waiting for answer on further ACI
     * function call
     *---------------------------------------------------------------
     */
    ui_signal (UI_SIG_UNHND_CME_ERR, CME_ERR_Unknown);

    ret = AT_CMPL;
  }

  return ret;
}

/*
+--------------------------------------------------------------------+
| PROJECT : GSM-PS (6147)         MODULE  : SMI_CAL                  |
| STATE   : code                  ROUTINE : cal_ARejWhilePlusCME     |
+--------------------------------------------------------------------+

  PURPOSE : This function is called when an error occured during call
            acception. It handles the errors signaled by the ACI
            callback function rAT_PlusCME.

            <err>: error code
*/
GLOBAL void cal_ARejWhilePlusCME (T_ACI_AT_CMD  cmdId, 
                                  T_ACI_CME_ERR err)
{
  TRACE_FUNCTION ("cal_ARejWhilePlusCME ()");

  if (cmdId EQ currCalCmd)
    currCalCmd = AT_CMD_NONE;

  if (currAbrtCmd EQ AT_CMD_ABRT)
  {
    currAbrtCmd = AT_CMD_NONE;
    
    ui_signal (UI_SIG_UNHND_CME_ERR, CME_ERR_FailedToAbort);
  }
  else
    ui_signal (UI_SIG_UNHND_CME_ERR, err);
}

/*
+--------------------------------------------------------------------+
| PROJECT : GSM-PS (6147)         MODULE  : SMI_CAL                  |
| STATE   : code                  ROUTINE : cal_ARej                 |
+--------------------------------------------------------------------+

  PURPOSE : This function is called when an error occured during call
            acception. It handles the errors signaled by the ACI
            callback functions rAT_NO_CARRIER, rAT_BUSY and
            rAT_NO_ANSWER.

            <cbId>: identity of the related ACI callback function
*/
GLOBAL void cal_ARej (T_MMI_RCB_ID cbId)
{
  TRACE_FUNCTION ("cal_ARej ()");

  ui_signal (UI_SIG_DISCONNECT, cal_getCause ());
}

/*
+--------------------------------------------------------------------+
| PROJECT : GSM-PS (6147)         MODULE  : SMI_CAL                  |
| STATE   : code                  ROUTINE : cal_ACnf                 |
+--------------------------------------------------------------------+

  PURPOSE : This function is called when call acception is
            successfull.
*/
GLOBAL void cal_ACnf (T_ACI_AT_CMD cmdId)
{
  TRACE_FUNCTION ("cal_ACnf ()");

  if (cmdId EQ currCalCmd)
  {
    currCalCmd = AT_CMD_NONE;

    if ( currAbrtCmd EQ AT_CMD_ABRT )
    {
      currAbrtCmd = AT_CMD_NONE;
 
      ui_signal (UI_SIG_DISCONNECT, cal_getCause ());
    }
    else
      ui_signal (UI_SIG_CONNECTED);
  }
}

/*
+--------------------------------------------------------------------+
| PROJECT : GSM-PS (6147)         MODULE  : SMI_CAL                  |
| STATE   : code                  ROUTINE : rAT_PlusCRING            |
+--------------------------------------------------------------------+

  PURPOSE : This function is called to signal an incoming call.

            <mode>:  mode of call sequence
            <type1>: type of call 1
            <type2>: type of call 2
*/
GLOBAL void rAT_PlusCRING (T_ACI_CRING_MOD mode,
                           T_ACI_CRING_TYP type1,
                           T_ACI_CRING_TYP type2)
{
  TRACE_FUNCTION ("rAT_PlusCRING ()");

  /*
   *-----------------------------------------------------------------
   * process parameter mode
   *-----------------------------------------------------------------
   */
  switch (mode)
  {
    case (CRING_MOD_Direct):

      /*
       *-------------------------------------------------------------
       * process parameter type1 when mode = CRING_MOD_Direct
       *-------------------------------------------------------------
       */
      switch (type1)
      {
        case (CRING_TYP_Async):
        case (CRING_TYP_Sync):
        case (CRING_TYP_RelAsync):
        case (CRING_TYP_RelSync):
        case (CRING_TYP_Fax):
          break;

        case (CRING_TYP_Voice):
          ui_signal (UI_SIG_INCOMMING_CALL);
          break;
      }
      break;

    case (CRING_MOD_Alternate):
      break;

    case (CRING_MOD_NotPresent):
      break;
  }
}

/*
+--------------------------------------------------------------------+
| PROJECT : GSM-PS (6147)         MODULE  : SMI_CAL                  |
| STATE   : code                  ROUTINE : rAT_PlusCRING_OFF        |
+--------------------------------------------------------------------+

  PURPOSE : This function is called to indicate that an incoming call
            is no longer waiting.
*/
GLOBAL void rAT_PlusCRING_OFF ( SHORT cId )
{
  TRACE_FUNCTION ("rAT_PlusCRING_OFF ()");

  ui_signal (UI_SIG_RING_OFF);
}

/*
+--------------------------------------------------------------------+
| PROJECT : GSM-PS (6147)         MODULE  : SMI_CAL                  |
| STATE   : code                  ROUTINE : rAT_PercentSIMREM        |
+--------------------------------------------------------------------+

  PURPOSE : This function is called to indicate that the SIM card was
            removed.
*/
GLOBAL void rAT_PercentSIMREM (T_ACI_SIMREM_TYPE srType)
{
  TRACE_FUNCTION ("rAT_PercentSIMREM ()");

  ui_signal (UI_SIG_SIM_NOT_INSERT);
  if (mmi_data->serviceType NEQ SRV_NONE)
  {
    mmi_data->serviceType = SRV_LIMITED;
    ui_signal (UI_SIG_LIMITED_SERVICE);
  }
}

/*
+--------------------------------------------------------------------+
| PROJECT : GSM-PS (6147)         MODULE  : SMI_CAL                  |
| STATE   : code                  ROUTINE : cal_setCbst              |
+--------------------------------------------------------------------+

  PURPOSE : This function is used to select the bearer service type.

            <cbst>:  holds all bearer service related information

            returns: status information concerning the selection
                     progress
*/
GLOBAL T_ACI_RETURN cal_setCbst (T_KSD_CBST* cbst)
{
  TRACE_FUNCTION ("cal_setCbst ()");

  return sAT_PlusCBST (CMD_SRC_LCL,
                       cbst->speed, cbst->name, cbst->ce);
}

/*
+--------------------------------------------------------------------+
| PROJECT : GSM-PS (6147)         MODULE  : SMI_CAL                  |
| STATE   : code                  ROUTINE : cal_setCrlp              |
+--------------------------------------------------------------------+

  PURPOSE : This function is used to set the parameter for the radio
            link protocol.

            <crlp>:  holds all radio link protocol related information

            returns: status information concerning the setting
                     progress
*/
GLOBAL T_ACI_RETURN cal_setCrlp (T_KSD_CRLP* crlp)
{
  TRACE_FUNCTION ("cal_setCrlp ()");

#ifdef FAX_AND_DATA
  return sAT_PlusCRLP (CMD_SRC_LCL,
                       crlp->iws, crlp->mws, crlp->t1, crlp->n2);
#else
  return AT_FAIL;
#endif
}

/*
+--------------------------------------------------------------------+
| PROJECT : GSM-PS (6147)         MODULE  : SMI_CAL                  |
| STATE   : code                  ROUTINE : cal_setDs                |
+--------------------------------------------------------------------+

  PURPOSE : This function is used to set the parameter for the data
            compression.

            <cbst>:  holds all data compression related information

            returns: status information concerning the setting
                     progress
*/
GLOBAL T_ACI_RETURN cal_setDs (T_KSD_DS* ds)
{
  TRACE_FUNCTION ("cal_setDs ()");

#ifdef FAX_AND_DATA
  return sAT_PlusDS (CMD_SRC_LCL,
                     ds->dir, ds->comp, ds->maxDict, ds->maxStr);
#else
  return AT_FAIL;
#endif
}

/*
+--------------------------------------------------------------------+
| PROJECT : GSM-PS (6147)         MODULE  : SMI_CAL                  |
| STATE   : code                  ROUTINE : rAT_CONNECT              |
+--------------------------------------------------------------------+

  PURPOSE : This function is used to indicate that a MO data call is
            successfully established.
*/
GLOBAL void rAT_CONNECT (T_ACI_AT_CMD cmdId, T_ACI_BS_SPEED speed,
                         SHORT cId )
{
  /* used for transfer of speed enumerator into numerical value */
  static const struct T_CAL_SPEED_TAB
  {                                  
    const T_ACI_BS_SPEED  enumSpeed; /* speed defined as */
                                     /* enumerator       */
    const USHORT          valSpeed;  /* speed defined as */
                                     /* numerical value  */
  }
    speedTab[] = 
  {
    BS_SPEED_300_V21,       300,
    BS_SPEED_1200_V22,     1200,
    BS_SPEED_1200_75_V23,  1200,
    BS_SPEED_2400_V22bis,  2400,
    BS_SPEED_2400_V26ter,  2400,
    BS_SPEED_4800_V32,     4800,
    BS_SPEED_9600_V32,     9600,
    BS_SPEED_1200_V120,    1200,
    BS_SPEED_2400_V120,    2400,
    BS_SPEED_4800_V120,    4800,
    BS_SPEED_9600_V120,    9600,
    BS_SPEED_14400_V120,  14400,
    BS_SPEED_300_V110,      300,
    BS_SPEED_1200_V110,    1200,
    BS_SPEED_2400_V110,    2400,
    BS_SPEED_4800_V110,    4800,
    BS_SPEED_9600_V110,    9600,
    BS_SPEED_14400_V110,  14400,
    BS_SPEED_NotPresent,     -1
  };

  CHAR buf[20];

  sprintf (buf, "rAT_CONNECT (%d)", cmdId);
  TRACE_FUNCTION (buf);
  
  if (cmdId NEQ currCalCmd)
    return;

  currCalCmd = AT_CMD_NONE;

  if (cmdId EQ AT_CMD_D)
  {
    USHORT i = 0;

    /*
     *---------------------------------------------------------------
     * searching for numerical speed value
     *---------------------------------------------------------------
     */
    while (speedTab[i].enumSpeed NEQ BS_SPEED_NotPresent AND
           speedTab[i].enumSpeed NEQ speed)
      i++;

    ui_signal (UI_SIG_DATA_CONNECTED, speedTab[i].valSpeed);

    if (currIbt NEQ CPI_IBT_True OR currTch NEQ CPI_TCH_True)
      ui_signal (UI_SIG_NIBT, NIBT_OFF);
  }
}

/*
+--------------------------------------------------------------------+
| PROJECT : GSM-PS (6147)         MODULE  : SMI_CAL                  |
| STATE   : code                  ROUTINE : cal_sigChldCtfr          |
+--------------------------------------------------------------------+

  PURPOSE : This function is called to signal the result of the
            handling of supplementary services within a call according
            to GSM 02.30.

            <rslt>: result code

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -