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

📄 atp5cmd.c

📁 标准ATP命令的处理
💻 C
📖 第 1 页 / 共 5 页
字号:
 * Object : Execute +CBST=<param> Command *----------------------------------------------------------------------------*  * Input parameters  : * ------------------- *   None * * Output parameters : * ------------------- *   u8				: Result code * * Used variables    : * ------------------- *   i				: surrent parameter index * * Used procedures   : * ------------------- *   atoi			: transform a string into a number *  *----------------------------------------------------------------------------*  *----------------------------------------------------------------------------*  *                                    DESCRIPTION * *----------------------------------------------------------------------------*  ***************************************************************************)P*//* #*/#undef PROCEDURE_NUMBER#define PROCEDURE_NUMBER 10u8 atp5_10SetCBSTParameter(void){  u32 i;  t_hee_DataBitFields *pl_hee_DataBitFields    = (t_hee_DataBitFields *)MC_PRM_READ_BLOCK_REQ(HEE_DATA_BITFIELDS);  u8 vl_UserBearerRate=pl_hee_DataBitFields->v_UserBearerRate;  u8 vl_InfoTrans=pl_hee_DataBitFields->v_InfoTrans;  u8 vl_SyncAsync=pl_hee_DataBitFields->v_SyncAsync;  u8 vl_TransferMode=pl_hee_DataBitFields->v_TransferMode;  u8 vl_ConnElm=pl_hee_DataBitFields->v_ConnElm;  /* for each received param */  for (i =0; i<s_atp_CurrentCommandInfo.v_NumberOfParam; i++)  { /* if it length is not null */    if (s_atp_CurrentCommandInfo.a_ParamList[i].v_ParamLength)/*depending on the param */      switch (i)      {/*speed*/	case 0:/* depending on the parameter value */	  switch(atoi((ascii *)s_atp_CurrentCommandInfo.a_ParamList[i].p_Param))          {/* set user rate of bearer capabilities */ 	    case ATP_SPEED_V22BIS_2400: 	    case ATP_SPEED_UDI_2400:	      vl_UserBearerRate = ATP_BC_USER_RATE_24;	      break;/* 	    case ATP_SPEED_V32_4800: *//* 	    case ATP_SPEED_UDI_4800: *//* 	      vl_UserBearerRate = ATP_BC_USER_RATE_48; *//* 	      break; */	    case ATP_SPEED_V32_9600:	    case ATP_SPEED_UDI_9600:	      vl_UserBearerRate = ATP_BC_USER_RATE_96;	      break;#ifdef UMTS_FTR            case ATP_SPEED_UDI_64000:              vl_UserBearerRate = ATP_BC_USER_RATE_640;	    break;#endif	    default:/* Set additional result ot param invalid *//* 	      v_atp_AddInfo = ATP_ER_PARAM_INVALID; *//* return an error */	      return ATP_ERROR;          }          if(atoi((ascii *)s_atp_CurrentCommandInfo.a_ParamList[i].p_Param) < ATP_SPEED_UDI_1200)          {	      vl_InfoTrans = ATP_BC_31KHZ;          }          else          {	      vl_InfoTrans = ATP_BC_UDI;          }	  break;	  /* name */	case 1:	  switch(atoi((ascii *)s_atp_CurrentCommandInfo.a_ParamList[i].p_Param))          {/* depending on the parameter value */	    case ATP_NAME_CIRCUIT_ASYNC_UDI:#ifdef UMTS_FTR	    case ATP_NAME_CIRCUIT_SYNC_UDI:#endif/* Set SYNC/ASYNC of the bearer capabilities */	      vl_SyncAsync = (atoi((ascii *)s_atp_CurrentCommandInfo.a_ParamList[i].p_Param) & MASK_1_BIT)? 0 : 1;/* Set transfer mode of the bearer capabilities */	      vl_TransferMode =atoi((ascii *)s_atp_CurrentCommandInfo.a_ParamList[i].p_Param) & MASK_2_BIT;	      break;	    default:/* Set additional result ot param invalid *//* 	      v_atp_AddInfo = ATP_ER_PARAM_INVALID; *//* return an error */	      return ATP_ERROR;          }	  break;/* connection element */	case 2:	  /* if the value is supported */	  if (atoi((ascii *)s_atp_CurrentCommandInfo.a_ParamList[i].p_Param) <= ATP_BC_NON_TRANSPARENT_FIRST)/* Set connection element of the bearer capabilities */	    vl_ConnElm = atoi((ascii *)s_atp_CurrentCommandInfo.a_ParamList[i].p_Param);	  else          {/* Set additional result ot param invalid *//*             v_atp_AddInfo = ATP_ER_PARAM_INVALID; *//* return an error */            return ATP_ERROR;          }          /* Modif O.Houot 13/06/2001 : suppression of transparent mode  (LMSdv56028) */#ifdef SUPPRESS_TRS_FTR          if (vl_ConnElm != ATP_BC_NON_TRANSPARENT) #ifdef UMTS_FTR               {	if ((vl_ConnElm == ATP_BC_TRANSPARENT) &&(vl_UserBearerRate != ATP_BC_USER_RATE_640))#endif /* UMTS_FTR */          {            return ATP_ERROR;          }#ifdef UMTS_FTR             }#endif /* UMTS_FTR */#endif /* SUPPRESS_TRS_FTR */	  break;      }  }/* Don't accept all Bearer rate */  if( ((vl_ConnElm == ATP_BC_NON_TRANSPARENT)        && (vl_UserBearerRate != ATP_BC_USER_RATE_96))      || ((vl_ConnElm == ATP_BC_TRANSPARENT) 	   && (vl_UserBearerRate < ATP_BC_USER_RATE_24) ) )  {/* return an error */    v_atp_AddInfo = ATP_CME_ER_OPERATION_NOT_SUPPORTED;    return ATP_ERROR;  }    pl_hee_DataBitFields->v_UserBearerRate=vl_UserBearerRate;  pl_hee_DataBitFields->v_InfoTrans=vl_InfoTrans;  pl_hee_DataBitFields->v_SyncAsync=vl_SyncAsync;  pl_hee_DataBitFields->v_TransferMode=vl_TransferMode;  pl_hee_DataBitFields->v_ConnElm=vl_ConnElm;    MC_PRM_WRITE_BLOCK_IMAGE_REQ( HEE_DATA_BITFIELDS,                                (u8 *)pl_hee_DataBitFields );/* return OK result code */  return ATP_OK;}/*P(***************************************************************************  * Procedure name : atp5_11VCommand * Object :  Execute the V command (Verbose response) *----------------------------------------------------------------------------*  * Input parameters  : * ------------------- *   None * * Output parameters : * -------------------*   u8				: return the result code. * * Used variables    : * ------------------- *   vl_Value			: parameter value * * Used procedures   : * ------------------- *   atp5_109SetIfBoolean	: Set paramater to Enable or Disable if correct *  *----------------------------------------------------------------------------*  *----------------------------------------------------------------------------*  *                                    DESCRIPTION * *----------------------------------------------------------------------------*  ***************************************************************************)P*//* #*/#undef PROCEDURE_NUMBER#define PROCEDURE_NUMBER 11u8 atp5_11VCommand(void){  u8 vl_Value;  t_hee_DataBitFields1 *pl_hee_DataBitFields1    = (t_hee_DataBitFields1 *)MC_PRM_READ_BLOCK_REQ(HEE_DATA_BITFIELDS1);  vl_Value = atp5_109SetIfBoolean();  if (vl_Value == UNDEFINED)    return ATP_ERROR;  pl_hee_DataBitFields1->v_Verbose = vl_Value;  MC_PRM_WRITE_BLOCK_IMAGE_REQ( HEE_DATA_BITFIELDS1,                                (u8 *)pl_hee_DataBitFields1 );  return ATP_OK;}/*P(***************************************************************************  * Procedure name : atp5_12QCommand * Object :  Execute the Q command (Result code suppression) *----------------------------------------------------------------------------*  * Input parameters  : * ------------------- *   None * * Output parameters : * -------------------*   u8				: return the result code. * * Used variables    : * ------------------- *   vl_Value			: parameter value * * Used procedures   : * -------------------  *   atp5_109SetIfBoolean	: Set paramater to Enable or Disable if correct *  *----------------------------------------------------------------------------*  *----------------------------------------------------------------------------*  *                                    DESCRIPTION * *----------------------------------------------------------------------------*  ***************************************************************************)P*//* #*/#undef PROCEDURE_NUMBER#define PROCEDURE_NUMBER 12u8 atp5_12QCommand(void){  u8 vl_Value;  t_hee_DataBitFields1 *pl_hee_DataBitFields1    = (t_hee_DataBitFields1 *)MC_PRM_READ_BLOCK_REQ(HEE_DATA_BITFIELDS1);  vl_Value = atp5_109SetIfBoolean();  if (vl_Value == UNDEFINED)     return ATP_ERROR;  pl_hee_DataBitFields1->v_SuppressResult = vl_Value;  MC_PRM_WRITE_BLOCK_IMAGE_REQ( HEE_DATA_BITFIELDS1,                                (u8 *)pl_hee_DataBitFields1 ); return ATP_OK;}/*P(***************************************************************************  * Procedure name : atp5_13OCommand * Object :  Execute the O command (Return to Online data state) *----------------------------------------------------------------------------*  * Input parameters  : * ------------------- *   None * * Output parameters : * ------------------- *   u8				: return the result code. * * Used variables    : * ------------------- *   None * * Used procedures   : * ------------------- *   MC_ATP_IS_ACTIVE		: Tells wether a call is active or not  *  *----------------------------------------------------------------------------*  *----------------------------------------------------------------------------*  *                                    DESCRIPTION * *----------------------------------------------------------------------------*  ***************************************************************************)P*//* #*/#undef PROCEDURE_NUMBER#define PROCEDURE_NUMBER 13u8 atp5_13OCommand(void){/* if the parameter is 0 or there's no parameters */  if (!s_atp_CurrentCommandInfo.v_NumberOfParam ||       s_atp_CurrentCommandInfo.a_ParamList[0].p_Param[0] == '0')  {#ifdef GPRS_FTR  if ((atp1_162CountPdpInState(ATP_GPRS_PDP_PPP_OPENED)  > 0) ||       (atp1_162CountPdpInState(ATP_GPRS_PDP_PPP_OPENING) > 0))  {    /* disable standard response sending procedures. Alternatively ,the code from the BUILD CONNECT comment  */    /* to this line : v_atp ...UNDEFINED can be suppressed, and the MIS_A1_CPR compilation switch asserted */    /* atp1_108Switch mode would have to be modified to send MIS_AT_GPRS_MODE, and the status of DCD */    /* should be checked */    v_atp_ReturnState = ATP_UNDEFINED;       /* there is at least one opened PDP context */    atp5_132SendResponse(ATP_CONNECT);    /* induce the next FSM state to be DATA */    return ATP_CONNECT;  }#endif /* GPRS_FTR *//* if there's a call */    if ( MC_ATP_IS_ACTIVE( ) )    {/* return CONNECT result code and switch to data mode */      return ATP_CONNECT;    }  }  else  {/* Set Additionnal info to invalid parameter *//*  v_atp_AddInfo = ATP_ER_PARAM_INVALID; *//* return ERROR result code */    return ATP_ERROR;  }    #ifdef GPRS_FTR  /* there is currently no active com */  v_atp_ReturnState = ATP_UNDEFINED;     atp5_132SendResponse(ATP_NO_CARRIER);  return ATP_ERROR;#else /* GPRS_FTR */ /* return NO CARRIER result code */  return ATP_NO_CARRIER; #endif /* GPRS_FTR */   }/*P(***************************************************************************  * Procedure name : atp5_14XCommand * Object :  Execute the X command (Result code selection) *----------------------------------------------------------------------------*  * Input parameters  : * ------------------- *   None * * Output parameters : * ------------------- *   u8				: return the result code. * * Used variables    : * ------------------- *   None * * Used procedures   : * ------------------- *   atoi			: transform a string into a number *  *----------------------------------------------------------------------------*  *----------------------------------------------------------------------------*  *                                    DESCRIPTION * *----------------------------------------------------------------------------*  ***************************************************************************)P*//* #*/#undef PROCEDURE_NUMBER#define PROCEDURE_NUMBER 14

⌨️ 快捷键说明

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