line source
/*
+-----------------------------------------------------------------------------
| Project : GSM-F&D (8411)
| Modul : CMH
+-----------------------------------------------------------------------------
| 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 : Definitions for the AT Command Handler
+-----------------------------------------------------------------------------
*/
#ifndef CMH_H
#define CMH_H
/*==== CONSTANTS ==================================================*/
typedef enum
{
RAT_OK = 0,
RAT_CONNECT,
RAT_CME,
RAT_NO_CARRIER,
RAT_CRING,
RAT_DR,
RAT_CR,
RAT_CPIN,
RAT_COPS,
RAT_CREG,
RAT_CCWA,
RAT_CLIP,
RAT_CDIP,
RAT_COLP,
RAT_CRING_OFF,
#ifdef FF_FAX
RAT_FCO,
RAT_FIS,
RAT_FTI,
RAT_FCS,
RAT_FCI,
#endif
RAT_CMS,
RAT_CSMS,
RAT_CMGS,
RAT_CMSS,
RAT_CMGW,
RAT_CDS,
RAT_CMGC,
RAT_CMGD,
RAT_CMGR,
RAT_CMGL,
RAT_CMTI,
RAT_CMT,
RAT_CBM,
RAT_CPMS,
#ifdef FF_FAX
RAT_FHT,
RAT_FHR,
RAT_FSA,
RAT_FPA,
RAT_FPW,
RAT_FET,
RAT_FVO,
RAT_FPO,
RAT_FPI,
RAT_FNF,
RAT_FNS,
RAT_FNC,
RAT_FHS,
RAT_FPS,
RAT_FTC,
#endif
RAT_ILRR,
RAT_BUSY,
RAT_NO_ANSWER,
RAT_SIMREM,
RAT_CLIR,
RAT_COLR,
RAT_CSSI,
RAT_CSSU,
RAT_CUSD,
RAT_CCFC,
RAT_CLCK,
RAT_CIMI,
RAT_SATI,
RAT_SATE,
RAT_KSIR,
RAT_CPI,
RAT_CTYI,
RAT_CNUM,
RAT_CPOL,
RAT_CCCM,
RAT_CTV,
RAT_SATN,
RAT_SATA,
RAT_SMS_READY,
RAT_PHB_STATUS,
RAT_SIMINS,
RAT_CRSM,
RAT_CSIM,
RAT_CCBS,
RAT_CCWV,
RAT_CNAP,
RAT_SIG_SMS,
RAT_CLAN,
RAT_CLAE,
RAT_CSQ,
RAT_ALS,
RAT_CTZV,
RAT_P_CREG,
#ifdef GPRS
RAT_CGACT,
RAT_CGDATA,
RAT_CGANS,
RAT_CGEREP,
RAT_CGREG,
RAT_QOS_MOD,
RAT_SNCNT,
RAT_P_CGREG,
RAT_P_CGEV,
#endif /* GPRS */
#ifdef FF_EM_MODE
RAT_EM,
RAT_EMET,
RAT_EMETS,
#endif /* FF_EM_MODE */
#ifdef FF_CPHS
RAT_CPNUMS,
RAT_CPVWI,
RAT_CPROAM,
#endif /* FF_CPHS */
RAT_CIEV,
RAT_RDL,
RAT_RDLB,
RAT_CCCN,
RAT_CSSN,
RAT_CSTAT,
RAT_Z,
RAT_CPRSM,
RAT_P_CTZV,
RAT_P_CPRI,
RAT_P_SIMEF,
RAT_P_CNIV,
RAT_P_COPS,
RAT_P_CMGR,
RAT_P_CMGL,
RAT_MAX
} RAT_ID;
/*==== TYPES ======================================================*/
typedef struct entStatus /* entity status */
{
T_ACI_CMD_SRC entOwn; /* entity owner */
T_ACI_AT_CMD curCmd; /* current command processing */
} T_ENT_STAT;
typedef struct mmCmdPrm /* command parameters related to MM */
{
T_ACI_COPS_FRMT COPSfrmt;
T_ACI_NRG_RGMD NRGregMode;
T_ACI_NRG_SVMD NRGsrvMode;
T_ACI_NRG_FRMT NRGoprFrmt;
T_ACI_CSQ_MODE CSQworkStat;
T_ACI_CTZR_MODE CTZRMode;
T_ACI_CTZU_MODE CTZUMode;
T_ACI_PCTZV_MODE PCTZVMode;
T_ACI_CNIV_MODE CNIVMode;
T_ACI_IND_MODE sIndicationParam;
} T_MM_CMD_PRM;
typedef struct ccCmdPrm /* command parameters related to CC */
{
T_ACI_CLIR_MOD CLIRmode;
T_ACI_DCD_MOD DCDmode;
T_ACI_TOA CSTAtoa;
BOOL CSTAdef;
T_ACI_CHLD_MOD CHLDmode;
T_ACI_CCUG_IDX CCUGidx;
T_ACI_CCUG_INFO CCUGinfo;
T_ACI_CCUG_MOD CCUGmode;
USHORT mltyCncFlg;
USHORT mltyDscFlg;
T_ACI_ALS_MOD ALSmode; /* mode for Alternate Line Service */
T_ACI_CTTY_MOD CTTYmode; /* TTY Service notification */
T_ACI_CC_CSCN_MOD CSCNcc_mode;
} T_CC_CMD_PRM;
typedef struct simCmdPrm /* command parameters related to SIM */
{
UBYTE CNUMActRec;
UBYTE CNUMOutput;
T_ACI_CPOL_FRMT CPOLfrmt;
UBYTE CPOLact;
UBYTE CPOLidx;
UBYTE CPOLidx2;
T_ACI_CPOL_MOD CPOLmode;
UBYTE CPOLplmn[3];
UBYTE CLANact;
} T_SIM_CMD_PRM;
typedef struct ssCmdPrm /* command parameters related to SS */
{
UBYTE CXXXpwd[MAX_PWD_NUM+1];
UBYTE CXXXnewPwd[MAX_PWD_NUM+1];
UBYTE CXXXnewPwd2[MAX_PWD_NUM+1];
USHORT mltyTrnFlg;
T_ACI_SS_CSCN_MOD CSCNss_mode;
} T_SS_CMD_PRM;
typedef struct phbCmdPrm /* command parameters related to PHB */
{
T_ACI_PB_STOR cmhStor;
UBYTE phbStor; /* T_PHB_TYPE */
USHORT order_num; /* Next matching entry, 0 if none */
SHORT fndRec;
UBYTE wrtRec;
T_ACI_CSVM_MOD CSVMmode;
T_ACI_CLAE_MOD CLAEmode;
UBYTE curCmd;
UBYTE temp_cmhStor; /* These data types are used to hold */
UBYTE temp_phbStor; /* the phone book storage types temprorily, in
case of SIM PIN-2 verification. These values
are assigned to the actual storage fileds
when SIM PIN-2 verification confirmation
comes without any ERROR. */
} T_PHB_CMD_PRM;
/* Fax and data related command parameters have been moved to a specific
structure in cmh_ra.h */
typedef struct cmhCmdPrm /* handler command parameter */
{
T_MM_CMD_PRM mmCmdPrm;
T_CC_CMD_PRM ccCmdPrm;
T_SIM_CMD_PRM simCmdPrm;
T_SS_CMD_PRM ssCmdPrm;
T_PHB_CMD_PRM phbCmdPrm;
} T_CMH_PRM;
/*==== PROTOTYPES =================================================*/
EXTERN void cmh_Init ( void );
EXTERN void cmh_Reset ( T_ACI_CMD_SRC srcId, BOOL atz );
EXTERN BOOL cmh_IsVldCmdSrc ( T_ACI_CMD_SRC cmdSrc );
EXTERN UBYTE cmh_mergeTOA ( UBYTE ton, UBYTE npi );
EXTERN UBYTE cmh_mergeTOS ( UBYTE tos, UBYTE oe );
EXTERN void cmh_demergeTOA ( UBYTE toa, UBYTE* ton, UBYTE* npi );
EXTERN void cmh_demergeTOS ( UBYTE tosa, UBYTE* tos, UBYTE* oe );
EXTERN CHAR* cmh_setToaDef ( CHAR* number, T_ACI_TOA *toa );
EXTERN USHORT cmh_packBCD ( UBYTE *bcd_out, const UBYTE *char_in,
USHORT len_in);
EXTERN USHORT cmh_unpackBCD ( UBYTE *char_out, const UBYTE *bcd_in,
USHORT len_in);
EXTERN void cmh_unpackSCTS ( T_ACI_VP_ABS *scts,
const UBYTE *buf_in );
EXTERN void cmh_logRslt ( T_ACI_CMD_SRC dest, RAT_ID rat,
T_ACI_AT_CMD cmd, SHORT cId,
T_ACI_BS_SPEED spd, T_ACI_CME_ERR err );
EXTERN void cmh_cvtToDefGsm ( CHAR* in,
CHAR* out,
USHORT* len );
EXTERN void cmh_cvtFromDefGsm ( CHAR* in,
USHORT len,
CHAR* out );
EXTERN UBYTE cmh_set_delayed_call( UCHAR (*call) (void*), void* arg );
EXTERN UBYTE cmh_start_delayed_call ( ULONG ms );
EXTERN UBYTE cmh_timeout ( USHORT handle );
EXTERN SHORT cmh_bldCalPrms ( char * pDialStr, T_CLPTY_PRM * calPrm );
EXTERN UBYTE qAT_CallActive ( void );
EXTERN void cmhSMS_disableAccess ( void );
EXTERN T_ACI_RETURN cmhSIM_ReadTranspEF ( T_ACI_CMD_SRC srcId,
T_ACI_AT_CMD cmd,
USHORT datafield,
USHORT offset,
UBYTE explen,
UBYTE * exchData,
void (*rplyCB)(SHORT));
EXTERN T_ACI_RETURN cmhSIM_WriteTranspEF (T_ACI_CMD_SRC srcId,
T_ACI_AT_CMD cmd,
USHORT datafield,
USHORT offset,
UBYTE datalen,
UBYTE * exchData,
void (*rplyCB)(SHORT));
#ifdef GPRS
GLOBAL void cp_pdp_primitive(T_SMREG_PDP_ACTIVATE_CNF * pdp_activate_cnf,
T_PPP_PDP_ACTIVATE_RES *activate_result);
#endif
GLOBAL T_ACI_RETURN cmhSIM_WriteRecordEF (T_ACI_CMD_SRC srcId,
T_ACI_AT_CMD cmd,
USHORT datafield,
UBYTE record,
UBYTE datalen,
UBYTE * exchData,
void (*rplyCB)(SHORT));
GLOBAL T_ACI_RETURN cmhSIM_ReadRecordEF ( T_ACI_CMD_SRC srcId,
T_ACI_AT_CMD cmd,
USHORT datafield,
UBYTE record,
UBYTE explen,
UBYTE * exchData,
void (*rplyCB)(SHORT));
GLOBAL T_ACI_RETURN cmhSMS_ReadParams (T_ACI_CMD_SRC srcId,
T_ACI_AT_CMD cmd,
SHORT recNr);
GLOBAL T_ACI_RETURN cmhSMS_WriteParams (T_ACI_CMD_SRC srcId,
T_ACI_AT_CMD cmd,
SHORT recNr);
GLOBAL T_ACI_RETURN cmhSIM_GetSIMError ( T_ACI_CMD_SRC srcBuf,
T_ACI_AT_CMD cmdBuf );
GLOBAL T_ACI_RETURN cmhSIM_CheckSimPinStatus ( T_ACI_CMD_SRC srcBuf,
T_ACI_AT_CMD cmdBuf );
GLOBAL T_ACI_RETURN cmhSIM_Read_AD ( );
EXTERN void percentCSTAT_indication(T_ACI_ENTITY_ID_MSG entityId,
T_ACI_ENTITY_STATE_MSG entityState);
EXTERN void cmhSMS_ReadCbDtaDwnl ( T_SIM_MMI_INSERT_IND *sim_mmi_insert_ind );
GLOBAL void cmhSIM_Get_CSP();
GLOBAL void cmhSIM_Read_CSP();
#ifdef SIM_PERS
GLOBAL void cmhSIM_WriteDefaultValue_DCK();
#endif
GLOBAL UBYTE cmhSIM_isplmnmodebit_set();
GLOBAL T_ACI_CMD_MODE aci_rat_cmd_mode(RAT_ID cmd,T_ACI_CMD_SRC src);
GLOBAL T_ACI_CMD_MODE aci_cmd_src_mode_get(T_ACI_CMD_SRC src_id);
GLOBAL void aci_cmd_src_mode_set(UBYTE src_id,T_ACI_CMD_MODE mode);
/*==== MACROS =====================================================*/
EXTERN T_ACI_CMD_MODE _mode;
EXTERN UBYTE srcId_cb;
EXTERN USHORT used_sources;
#define IS_SRC_USED(x) ((used_sources >> x) & 0x01)
#define IS_SRC_BT(x) ((used_sources >> (x + 8)) & 0x01)
/* we set the src id only when the src id NEQ local. Bec in ASC test we intentionally
set the src from TST to LCL for some purpose, but the srcId_cb should remain TST */
#define R_AT(cmd,src)\
_mode=aci_rat_cmd_mode(cmd,src);\
if (src > CMD_SRC_LCL)\
srcId_cb=(UBYTE)src;\
if (_mode NEQ CMD_MODE_NONE AND RATJmpTbl[cmd][_mode])\
RATJmpTbl[cmd][_mode]
#define ACI_ERR_DESC( errCls, errNr )\
{aciErrDesc=(((errCls)<<16) | ((errNr)&0xFFFF));}
/*==== EXPORT =====================================================*/
#ifdef CMH_F_C
GLOBAL T_CMH_PRM cmhPrm[OWN_MAX];
GLOBAL T_ACI_ALS_MOD ALSlock = ALS_MOD_NOTPRESENT;
GLOBAL T_ACI_ERR_DESC aciErrDesc = -1;
#else
EXTERN T_CMH_PRM cmhPrm[OWN_MAX];
EXTERN T_ACI_ALS_MOD ALSlock;
EXTERN T_ACI_ERR_DESC aciErrDesc;
EXTERN const T_VOID_FUNC RATJmpTbl[RAT_MAX][CMD_MODE_MAX]; /* SMI/MFW & ATI */
#endif /* of #ifndef CMH_F_C */
#endif /* CMH_H */
/*==== EOF =======================================================*/