view src/g23m-aci/aci/psa_ss.h @ 287:3dee79757ae4

UI fw: load handheld audio mode on boot We have now reached the point where use of audio mode config files should be considered mandatory. In ACI usage we can tell users that they need to perform an AT@AUL of some appropriate audio mode, but in UI-enabled fw we really need to have the firmware load audio modes on its own, so that correct audio config gets established when the handset or development board runs on its own, without a connected host computer. Once have FC Venus with both main and headset audio channels and headset plug insertion detection, our fw will need to automatically load the handheld mode or the headset mode depending on the plug insertion state. For now we load only the handheld mode, which has been tuned for FC-HDS4 on FC Luna.
author Mychaela Falconia <falcon@freecalypso.org>
date Sat, 13 Nov 2021 03:20:57 +0000
parents fa8dc04885d8
children
line wrap: on
line source

/* 
+----------------------------------------------------------------------------- 
|  Project :  GSM-PS (6147)
|  Modul   :  PSA_SS
+----------------------------------------------------------------------------- 
|  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 protocol stack adapter 
+----------------------------------------------------------------------------- 
*/ 

#ifndef PSA_SS_H
#define PSA_SS_H

/*==== CONSTANTS ==================================================*/
#define DEF_SS_VER     (0)        /* default SS version */

#define MAX_SS_NR      (4)        /* maximum number of calls */
#define TEST_STR_LEN  (80)        /* maximum length of test parameter string */

#define NO_ENTRY      (-1)        /* not a valid entry */
#define SS_NO_PRM     (0xFF)      /* parameter not present */
                                  
typedef enum                      /* service status */
{                                 
  NO_VLD_SSS = 0,                 /* not a valid service status */
  SSS_IDL,                         /* service idle */
  SSS_ACT,                         /* service active */
  SSS_PWD_REQ,                     /* service password request */
  SSS_PWD_SND,                     /* service password sent */
  SSS_PWD_VRF                      /* service password verified */
} T_SS_CLST;                      
                                  
typedef enum                      
{                                 
  NO_VLD_ST = 0,                  /* not a valid service type */
  ST_MOS,                         /* mobile originated service */
  ST_MTS                          /* mobile terminated service */
} T_SS_SSTP;                      
                                  
typedef enum                      
{                                 
  NO_VLD_SSF = 0,                 /* not a valid SS failure type */
  SSF_SS_ERR,                     /* SS error component */
  SSF_GEN_PRB,                    /* SS reject comp. general problem */
  SSF_INV_PRB,                    /* SS reject comp. invoke problem */
  SSF_ERR_PRB,                    /* SS reject comp. return error problem */
  SSF_RSL_PRB,                    /* SS reject comp. return result problem */
  SSF_CCD_DEC,                    /* CCD decode error */
  SSF_SS_ENT                      /* SS entity error */
} T_SS_FAIL;                      
                                  
typedef enum                      /* PSA notification events */
{
  SS_NTF_NEW_TRN = 0,             /* new SS transaction started */
  SS_NTF_END_TRN,                 /* existing SS transaction stopped */
  SS_NTF_CNT_TRN,                 /* existing transaction continued */
  SS_NTF_TRN_FAIL,                /* SS transaction failed */
  SS_NTF_TST,                     /* for test purposes only */
  SS_NTF_MAX                      /* maximum SS notification event */

} T_SS_NTF;

typedef enum
{
  CT_INV      = 0xA1,     /* invoke component type */
  CT_RET_RSLT,            /* return result component type */
  CT_RET_ERR,             /* return error component type */
  CT_RET_REJ,             /* reject component type */

  CT_MAX

} T_CMP_TYPE;

typedef enum
{
  BS_BEAR_NONE        = 0xFF, /* no valid bearer service */
  BS_BEAR_SRV         = 0x82, /* bearer service type */
  BS_TELE_SRV,                /* teleservice type */

  BS_TP_MAX

} T_BS_TYPE;


/*==== TYPES ======================================================*/
typedef struct SSServiceTabl
{
  BOOL              ntryUsdFlg;           /* flags this entry as used */
  UBYTE             ti;                   /* transaction identifier */
  UBYTE             iId;                  /* invoke id */
  UBYTE             srvStat;              /* service status */
  UBYTE             srvType;              /* type of service */
  UBYTE             SSver;                /* supplementary service version */
  UBYTE             orgOPC;               /* originated SS operation code */
  UBYTE             opCode;               /* SS operation code */
  UBYTE             ssCode;               /* SS service code */
  USHORT            ClassType;            /* holds class queried by user */
  UBYTE             ussdReqFlg;           /* flags USSD request */
  UBYTE             ussd_operation;       /* flags an on-going USSD operation */
  UBYTE             failType;             /* type of SS failure */
  USHORT            entCs;                /* entity failure cause */
  UBYTE             rejPrb;               /* reject problem code */
  UBYTE             errCd;                /* return error code */
  UBYTE             errPrms;               /* Parameters associated with the Error */
  T_ACI_AT_CMD      curCmd;               /* current command executing */
  T_OWN             srvOwn;               /* owner of service */
  T_MNSS_BEGIN_REQ *save_prim;            /* address where pending trans is memorized */
} T_SS_SRV_TBL;


typedef struct SSShrdParm
{
  T_SS_SRV_TBL stb[MAX_SS_NR];      /* service table for max. nr of services */
  UBYTE iIdNxt;                     /* next available invoke id */
  SHORT nrOfMOS;                    /* number of current MOS's */
  SHORT nrOfMTS;                    /* number of current MTS's */
  UBYTE cmpType;                    /* component type */
  UBYTE ussdLen;                    /* length of ussd string */
  UBYTE ussdDcs;                    /* DCS of ussd string */
  UBYTE ussdBuf[MAX_USSD_STRING];   /* buffers ussd string */
  USHORT mltyTrnFlg;                 /* holds id flag of pending transactions */
} T_SS_SHRD_PRM;

/*==== PROTOTYPES =================================================*/

void  psaSS_Init ( void );

EXTERN SHORT  psaSS_NewTrns  ( SHORT sId );
EXTERN SHORT  psaSS_EndTrns  ( SHORT sId );
EXTERN SHORT  psaSS_CntTrns  ( SHORT sId );

EXTERN void  psaSS_asmEmptyRslt     ( void );
EXTERN void  psaSS_asmErrorRslt     ( SHORT sId, UBYTE err );
EXTERN void  psaSS_asmInterrogateSS ( UBYTE ssCode, UBYTE bscSrvType, 
                                      UBYTE bscSrv);
EXTERN void  psaSS_asmRegisterSS    ( UBYTE ssCode, UBYTE bscSrvType, 
                                      UBYTE bscSrv, UBYTE ton, UBYTE npi, 
                                      UBYTE *num, UBYTE tos, UBYTE oe,
                                      UBYTE *sub, UBYTE time );
EXTERN void  psaSS_asmEraseSS       ( UBYTE ssCode, UBYTE bscSrvType, 
                                      UBYTE bscSrv );
EXTERN void  psaSS_asmActivateSS    ( UBYTE ssCode, UBYTE bscSrvType, 
                                      UBYTE bscSrv );
EXTERN void  psaSS_asmDeactivateSS  ( UBYTE ssCode, UBYTE bscSrvType, 
                                      UBYTE bscSrv );
EXTERN void  psaSS_asmRegisterPWD   ( UBYTE ssCode );
EXTERN void  psaSS_asmVerifyPWD     ( UBYTE *pwd );
EXTERN void  psaSS_asmProcUSSDReq   ( UBYTE dcs, UBYTE *ussd, UBYTE len );
EXTERN void  psaSS_asmCnfUSSDReq    ( UBYTE dcs, UBYTE *ussd, UBYTE len );
EXTERN void  psaSS_asmCnfUSSDNtfy   ( void );
EXTERN BOOL  psaSS_asmUSSDProt1     ( SHORT sId );
#if 0  /* For further study, so not yet used */
EXTERN void  psaSS_asmActivateCCBS  ( void );
#endif
EXTERN void  psaSS_asmDeactivateCCBS( UBYTE idx );
EXTERN SHORT psaSS_stbNewEntry      ( void );
EXTERN SHORT psaSS_stbFindTi        ( UBYTE ti2Find );
EXTERN SHORT psaSS_stbFindInvId     ( UBYTE invId2Find );
EXTERN void  psaSS_stbDump          ( void );
EXTERN void  psaSS_chngSrvTypCnt    ( SHORT sId, SHORT dlt );
EXTERN SHORT psaSS_getMOSTi         ( SHORT sId );
EXTERN void  psaSS_retMOSTi         ( SHORT sId );
EXTERN SHORT psaSS_stbFindUssdReq   ( void );
EXTERN SHORT psaSS_stbFindActSrv    ( SHORT sId );
EXTERN void  psaSS_InitStbNtry      ( SHORT idx );
EXTERN void  psaSS_DumpFIE          ( T_fac_inf *fie );
EXTERN void  psaSS_dasmInvokeCmp    ( SHORT sId,
                                      T_inv_comp *invCmp );
EXTERN void  psaSS_dasmResultCmp    ( SHORT sId, 
                                      T_res_comp *resCmp );
EXTERN T_ACI_RETURN  psaSS_dasmErrorCmp     ( SHORT sId,
                                              T_err_comp *errCmp, 
                                              BOOL is_fac_ussd  );
EXTERN T_ACI_RETURN  psaSS_dasmRejectCmp    ( SHORT sId, 
                                              T_rej_comp *rejCmp, 
                                              BOOL is_fac_ussd  );
EXTERN T_ACI_RETURN  psaSS_ss_end_ind       ( SHORT sId, 
                                              T_COMPONENT *comp, 
                                              BOOL is_fac_ussd );
EXTERN SHORT psaSS_GetPendingTrn    ( void );
EXTERN void  psaSS_KillAllPendingTrn( void );


/*==== EXPORT =====================================================*/

#ifdef PSA_SSF_C

GLOBAL T_SS_SHRD_PRM ssShrdPrm;

#else

EXTERN T_SS_SHRD_PRM ssShrdPrm;

#endif /* PSA_SSF_C */

 
#endif /* PSA_SS_H */

/*==== EOF =======================================================*/