diff src/aci2/aci/cmh_sms.h @ 3:93999a60b835

src/aci2, src/condat2: import of g23m/condat source pieces from TCS211
author Mychaela Falconia <falcon@freecalypso.org>
date Mon, 26 Sep 2016 00:29:36 +0000
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/aci2/aci/cmh_sms.h	Mon Sep 26 00:29:36 2016 +0000
@@ -0,0 +1,395 @@
+/* 
++----------------------------------------------------------------------------- 
+|  Project :  GSM-PS (6147)
+|  Modul   :  CMH_SMS
++----------------------------------------------------------------------------- 
+|  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 command handler of the
+|             short message service.
++----------------------------------------------------------------------------- 
+*/ 
+
+#ifndef CMH_SMS_H
+#define CMH_SMS_H
+
+#include "psa_sms.h"
+
+/*==== CONSTANTS ==================================================*/
+
+/* for the following constants see  GSM 11.11,  chapter 10.3.3 */
+#define STAT_MASK  0x07
+#define REC_UNREAD 0x03 /* message received by MS from network */
+                        /* message to be read                  */
+#define REC_READ   0x01 /* message received by MS from network */
+                        /* message read                        */
+#define STO_UNSENT 0x07 /* MS originating message              */
+                        /* message to be sent                  */
+#define STO_SENT   0x05 /* MS originating message              */
+                        /* message sent to the network         */
+
+/* TP-Validity-Period-Format (TP-VPF) */
+#define VPF_MASK           0x18
+#define VPF_NOT_PRESENT    0x00
+#define VPF_RELATIVE       0x10
+#define VPF_ABSOLUTE       0x18
+#define VPF_ENHANCED       0x08
+
+
+#define SMS_CMH_MAX_START_IDX (255)
+
+#define MIN_SMS_PRM_LEN         28
+#define MAX_SMS_PRM_ADDR_OCTETS 10 /* = MAX_SMS_ADDR_DIG/2 */
+#define SIM_SMSP_V_DEST  0x01
+#define SIM_SMSP_V_SCA   0x02
+#define SIM_SMSP_V_PID   0x04
+#define SIM_SMSP_V_DCS   0x08
+#define SIM_SMSP_V_VPREL 0x10
+
+/*
+ * Value constants for bcd
+ */
+#define BCD_ASTSK                      0xa         /* (                              */
+#define BCD_PND                        0xb         /* #                              */
+#define BCD_A                          0xc         /* a                              */
+#define BCD_B                          0xd         /* b                              */
+#define BCD_C                          0xe         /* c                              */
+#define BCD_RES                        0xf         /* reserved                       */
+
+/*==== TYPES ======================================================*/
+
+/*typedef struct
+{
+  UBYTE npi : 4;
+  UBYTE ton : 3;
+  UBYTE ext : 1;
+} T_TON_NPI;*/
+
+typedef struct
+{
+  UBYTE     length;
+  UBYTE     ton_npi;
+  UBYTE     addr[MAX_SMS_PRM_ADDR_OCTETS];
+} T_RP_ADDRESS;
+
+typedef struct
+{
+  UBYTE     no_bcd;
+  UBYTE     ton_npi;
+  UBYTE     addr[MAX_SMS_PRM_ADDR_OCTETS];
+} T_TP_ADDRESS;
+
+typedef struct
+{
+  UBYTE     par_ind;
+  UBYTE     dest_no_bcd;
+  UBYTE     dest_ton_npi;
+  UBYTE     dest_addr[MAX_SMS_PRM_ADDR_OCTETS];
+  UBYTE     sca_length;
+  UBYTE     sca_ton_npi;
+  UBYTE     sca_addr[MAX_SMS_PRM_ADDR_OCTETS];
+  UBYTE     pid;
+  UBYTE     dcs;
+  UBYTE     vp_rel;
+} T_ACI_SMS_SIM_PARAMS;
+
+typedef struct
+{
+  UBYTE lowerMSB;
+  UBYTE lowerLSB;
+  UBYTE upperMSB;
+  UBYTE upperLSB;
+} T_ACI_CBM_SIM_MID_RANGE;
+
+typedef struct
+{
+  UBYTE MSB;
+  UBYTE LSB;
+} T_ACI_CBM_SIM_MID_LIST;
+
+
+/********************************************************************
+ *
+ * SMS Profile for FFS
+ *
+ ********************************************************************/
+
+
+#define MAX_FFS_SMSPRFLS        4
+
+#define FFS_SMSPRFL_PATH       "/gsm/sms"
+
+#define FFS_SMSPRFL_FNAME01    "/gsm/sms/smsprfl01"
+#define FFS_SMSPRFL_FNAME02    "/gsm/sms/smsprfl02"
+#define FFS_SMSPRFL_FNAME03    "/gsm/sms/smsprfl03"
+#define FFS_SMSPRFL_FNAME04    "/gsm/sms/smsprfl04"
+
+#define SIZE_FFS_SMSPRFL_SCA   20
+#define SIZE_FFS_SMSPRFL_MIDS  40
+#define SIZE_FFS_SMSPRFL_DCSS  20
+#define SIZE_FFS_SMSPRFL_VPABS 15
+#define SIZE_FFS_SMSPRFL_VPENH 15
+
+#define FFS_SMSPRFL_VLD        0x00
+#define FFS_SMSPRFL_INVLD      0xFF
+
+typedef struct ffs_EFsmsprfl_Type          /* SMS Profile                      */
+{
+  UBYTE vldFlag;                           /* Valid Flag                       */
+  UBYTE CSCAsca[SIZE_FFS_SMSPRFL_SCA];     /* Service Center Address           */  
+  UBYTE CSCAlenSca;                        /* Length of Service Center Address */
+  UBYTE CSCAton;                           /* Type of Number                   */
+  UBYTE CSCAnpi;                           /* Numbering Plan Identification    */
+  UBYTE CSCBmode;                          /* Mode                             */
+  UBYTE CSCBmids[SIZE_FFS_SMSPRFL_MIDS];   /* Message Identifier               */
+  UBYTE CSCBdcss[SIZE_FFS_SMSPRFL_DCSS];   /* Data Coding Schemes              */
+  UBYTE CSMPfo;                            /* First Octet                      */
+  UBYTE CSMPvprel;                         /* Validity Period Relative         */
+  UBYTE CSMPvpabs[SIZE_FFS_SMSPRFL_VPABS]; /* Validity Period Absolute         */
+  UBYTE CSMPvpenh[SIZE_FFS_SMSPRFL_VPENH]; /* Validity Period Enhanced         */
+  UBYTE CSMPpid;                           /* Protocol Identifier              */
+  UBYTE CSMPdcs;                           /* Data Coding Scheme               */
+  UBYTE IMSI[MAX_IMSI];                    /* IMSI                             */
+} T_ACI_FFS_SMSPRFL;
+
+#define SIZE_FSS_SMSPRFL ( SIZE_FFS_SMSPRFL_SCA   +   \
+                           SIZE_FFS_SMSPRFL_MIDS  +   \
+                           SIZE_FFS_SMSPRFL_DCSS  +   \
+                           SIZE_FFS_SMSPRFL_VPABS +   \
+                           MAX_IMSI + \
+                           SIZE_FFS_SMSPRFL_VPENH + 9   )
+
+/*==== Global Declaration =================================================*/
+#ifdef CMH_SMSR_C
+GLOBAL T_ACI_SMS_STAT   cmglStat = SMS_STAT_All;
+#else
+EXTERN T_ACI_SMS_STAT   cmglStat;
+#endif /* CMH_SMSR_C */
+
+/*==== PROTOTYPES =================================================*/
+
+EXTERN UBYTE  cmhSMS_getNType       ( T_ACI_TOA_TON   ton         );
+EXTERN BOOL   cmhSMS_findPrflId     ( UBYTE critrerium,
+                                      void *elem                  );
+EXTERN T_ACI_TOA_TON
+              cmhSMS_getTon         ( UBYTE           ntype       );
+EXTERN UBYTE  cmhSMS_getNPlan       ( T_ACI_TOA_NPI   npi         );
+EXTERN T_ACI_TOA_NPI
+              cmhSMS_getNpi         ( UBYTE           nplan       );
+EXTERN BOOL   cmhSMS_isVpabsVld     ( T_ACI_VP_ABS*   vpabs       );
+EXTERN BOOL   cmhSMS_isVpenhVld     ( T_ACI_VP_ENH*   vpenh       );
+EXTERN void   cmhSMS_setVpabsPsa    ( T_tp_vp_abs*    psaVp,
+                                      T_ACI_VP_ABS*   cmhVp       );
+EXTERN void   cmhSMS_setVpenhPsa    ( T_tp_vp_enh*    psaVp,
+                                      T_ACI_VP_ENH*   cmhVp       );
+EXTERN void   cmhSMS_setVpabsCmh    ( T_ACI_VP_ABS*   cmhVp,
+                                      T_tp_vp_abs*    psaVp       );
+EXTERN void   cmhSMS_setVpenhCmh    ( T_ACI_VP_ENH*   cmhVp,
+                                      T_tp_vp_enh*    psaVp       );
+EXTERN UBYTE  cmhSMS_getAdrStr      ( CHAR*           pStr,
+                                      UBYTE           maxIdx,
+                                      UBYTE*          pBcd,
+                                      UBYTE           numDigits   );
+EXTERN void   cmhSMS_getAdrBcd      ( UBYTE*          pBcd,
+                                      UBYTE*          pNumDigits,
+                                      UBYTE           maxDigits,
+                                      CHAR*           pStr        );
+EXTERN BOOL   cmhSMS_getMemPsa      ( T_ACI_SMS_STOR  inMem,
+                                      UBYTE*          outMem      );
+EXTERN void   cmhSMS_getMemCmh      ( UBYTE           inMem,
+                                      T_ACI_SMS_STOR* outMem      );
+EXTERN void   cmhSMS_expdSmsPp      ( UBYTE           byte_offset,
+                                      UBYTE           dcs,
+                                      UBYTE*          source,
+                                      UBYTE           source_len,
+                                      UBYTE*          dest,
+                                      UBYTE*          dest_len    );
+EXTERN void   cmhSMS_rdcSmsPp       ( UBYTE           byte_offset,
+	                                  UBYTE           dcs,
+                                      UBYTE*          source,
+                                      UBYTE           source_len,
+                                      UBYTE*          dest,
+                                      UBYTE*          dest_len    );
+EXTERN void   cmhSMS_expdSmsCb      ( UBYTE           dcs,
+                                      UBYTE*          source,
+                                      UBYTE           source_len,
+                                      UBYTE*          dest,
+                                      UBYTE*          dest_len    );
+EXTERN void   cmhSMS_getStatCmh     ( UBYTE           inStat,
+                                      T_ACI_SMS_STAT* outStat     );
+EXTERN BOOL   cmhSMS_getStatPsa     ( T_ACI_SMS_STAT  inStat,
+                                      UBYTE*          outStat     );
+EXTERN CHAR*  cmhSMS_setToaDef      ( CHAR*           number,
+                                      UBYTE*          ntype,
+                                      UBYTE*          nplan       );
+EXTERN SHORT  cmhSMS_getTimezone    ( UBYTE           timezone    );
+EXTERN UBYTE  cmhSMS_setTimezone    ( SHORT           timezone    );
+EXTERN void   cmhSMS_setStorOcc     ( T_ACI_SMS_STOR_OCC* outMem,
+                                      UBYTE           inMem       );
+EXTERN SHORT  cmhSMS_getNextEntry   ( SHORT           index,
+                                      T_ACI_SMS_STOR  mem         );
+EXTERN UBYTE  cmhSMS_getAlphabetPp  ( UBYTE           dcs         );
+EXTERN UBYTE  cmhSMS_getAlphabetCb  ( UBYTE           dcs         );
+EXTERN SHORT  cmhSMS_InfoConfirm    ( void );
+EXTERN SHORT  cmhSMS_CBMIndication  ( T_MMI_CBCH_IND      * mmi_cbch_ind );
+
+EXTERN SHORT  cmhSMS_SMSStatRpt     ( T_MNSMS_STATUS_IND  * mnsms_status_ind);
+EXTERN SHORT  cmhSMS_SMSMemory      ( T_MNSMS_MESSAGE_IND * mnsms_message_ind);
+EXTERN SHORT  cmhSMS_SMSDeliver     ( T_MNSMS_MESSAGE_IND * mnsms_message_ind );
+EXTERN SHORT  cmhSMS_Result         ( T_MNSMS_REPORT_IND  * mnsms_report_ind );
+EXTERN SHORT  cmhSMS_SMSInitState   ( T_MNSMS_MESSAGE_IND * mnsms_message_ind );
+EXTERN SHORT  cmhSMS_SMSDelCnf      ( T_MNSMS_DELETE_CNF  * mnsms_delete_cnf );
+EXTERN SHORT  cmhSMS_SMRead         ( T_MNSMS_READ_CNF    * mnsms_read_cnf);
+EXTERN SHORT  cmhSMS_SMSStoCnf      ( T_MNSMS_STORE_CNF   * mnsms_store_cnf );
+EXTERN SHORT  cmhSMS_SMSSbmCnf      ( T_MNSMS_SUBMIT_CNF  * mnsms_submit_cnf );
+EXTERN SHORT  cmhSMS_SMSCmdCnf      ( T_MNSMS_COMMAND_CNF * mnsms_command_cnf );
+EXTERN SHORT  cmhSMS_SMSErrorInd    ( T_MNSMS_ERROR_IND   * mnsms_error_ind );
+EXTERN void   cmhSMS_SMSResumeCnf   ( T_MNSMS_RESUME_CNF  * mnsms_resume_cnf );
+EXTERN void   cmhSMS_SMSQueryCnf     (T_MNSMS_QUERY_CNF  * mnsms_query_cnf);
+
+EXTERN void   cmhSMS_WrCnfCSAS      (SHORT aId);
+EXTERN void   cmhSMS_RdCnfCRES      (SHORT aId);
+EXTERN void   cmhSMS_InitSMSP       (SHORT aId);
+EXTERN BOOL   cmhSMS_checkSIM       (void);
+EXTERN BOOL   cmhSMS_checkAccess    (T_ACI_CMD_SRC srcId,
+                                     T_ACI_RETURN *ret);
+EXTERN T_ACI_CMS_ERR cmhSMS_GetCmsFromSim ( USHORT errCode );
+GLOBAL T_ACI_CMS_ERR cmhSMS_GetCmsFromSms ( USHORT errCode );
+EXTERN void   cmhSMS_ready          ( void );
+EXTERN SHORT  cmhSMS_getPrfRge      ( void );
+EXTERN BOOL cmhSMS_GetPrmSIM   (T_ACI_CMD_SRC srcId,
+                                UBYTE         *data,
+                                int           dataLen);
+EXTERN BOOL cmhSMS_PutPrmSIM   (T_ACI_CMD_SRC srcId,
+                                UBYTE         *data,
+                                int           maxDataLen);
+EXTERN BOOL cmhSMS_GetCbmirSIM (T_ACI_CMD_SRC srcId,
+                                UBYTE         *data,
+                                int           dataLen);
+EXTERN BOOL cmhSMS_PutCbmirSIM (T_ACI_CMD_SRC srcId,
+                                UBYTE         *data,
+                                int           maxDataLen);
+EXTERN BOOL cmhSMS_GetCbmiSIM  (T_ACI_CMD_SRC srcId,
+                                UBYTE         *data,
+                                int           dataLen);
+EXTERN BOOL cmhSMS_PutCbmiSIM (T_ACI_CMD_SRC srcId,
+                                UBYTE         *data,
+                                int           maxDataLen);
+#ifdef SIM_TOOLKIT
+EXTERN BOOL cmhSMS_GetCbDtaDwnlSIM  (T_ACI_CMD_SRC srcId,
+                                     UBYTE         *data,
+                                     int           dataLen);
+#endif /* of SIM_TOOLKIT */
+
+
+EXTERN UBYTE* cmhSMS_decodeMsg (T_sms_sdu *sms_sdu,
+                                T_rp_addr* rp_addr,
+                                UBYTE vt_mti);
+
+EXTERN void cmhSMS_codeMsg     (T_sms_sdu *sms_sdu,
+                                UBYTE tp_vt_mti,
+                                T_rp_addr* sc_addr,
+                                UBYTE tp_mti,
+                                UBYTE* decoded_pdu);
+
+EXTERN BOOL cmhSMS_cpyDeliver  (T_ACI_CMGL_SM  * sm,
+                                T_sms_sdu * sms_sdu);
+
+EXTERN BOOL cmhSMS_cpySubmit   (T_ACI_CMGL_SM  * sm,
+                                T_sms_sdu * sms_sdu);
+
+EXTERN BOOL cmhSMS_cpyMsgInd   (T_ACI_CMGL_SM  * sm,
+                                T_MNSMS_MESSAGE_IND * mnsms_message_ind);
+
+EXTERN BOOL cmhSMS_cpyReadCnf  (T_ACI_CMGL_SM  * sm,
+                                T_MNSMS_READ_CNF * mnsms_read_cnf);
+
+EXTERN BOOL cmhSMS_cpyStatInd  (T_ACI_CDS_SM  * sm,
+                                T_MNSMS_STATUS_IND *mnsms_status_ind);
+
+EXTERN void cmhSMS_getPhbEntry (UBYTE *buf,
+                                T_ACI_PB_TEXT *alpha,
+                                T_ACI_SMS_STAT status);
+
+EXTERN void cmhSMS_codeDelRep  (T_sms_sdu * sms_sdu,
+                                T_rp_addr * sc_addr);
+
+EXTERN UBYTE CodeRPAddress     (UBYTE *buf,
+                                UBYTE  numDigits,
+                                UBYTE ton,
+                                UBYTE npi,
+                                UBYTE *bcd);
+
+EXTERN UBYTE CodeTPAddress     (UBYTE *buf,
+                                UBYTE  numDigits,
+                                UBYTE ton,
+                                UBYTE npi,
+                                UBYTE *bcd);
+
+EXTERN UBYTE DecodeRPAddress   (UBYTE *c_num,
+                                UBYTE *ton,
+                                UBYTE *npi,
+                                UBYTE *bcd,
+                                UBYTE *buf);
+
+EXTERN UBYTE DecodeTPAddress   (UBYTE *c_num,
+                                UBYTE *ton,
+                                UBYTE *npi,
+                                UBYTE *bcd,
+                                UBYTE *buf);
+
+EXTERN void cmhSMS_fillTpSubmit(T_TP_SUBMIT*    tp_submit,
+                                T_ACI_CMD_SRC   srcId,
+                                UBYTE           msgType,
+                                UBYTE           mr,
+                                T_tp_da*        da_addr,
+                                T_ACI_SM_DATA*  data,
+                                UBYTE           septets,
+                                T_ACI_UDH_DATA* udh);
+
+EXTERN void cmhSMS_fillTpDeliver(T_TP_DELIVER*   tp_deliver,
+                                 T_ACI_CMD_SRC   srcId,
+                                 UBYTE           msgType,
+                                 T_tp_oa*        oa_addr,
+                                 T_ACI_SM_DATA*  data,
+                                 UBYTE           septets,
+                                 T_ACI_UDH_DATA* udh );
+
+EXTERN void cmhSMS_fillTpCommand(T_TP_COMMAND*   tp_command,
+                                UBYTE           fo,
+                                UBYTE           ct,
+                                UBYTE           mr,
+                                UBYTE           pid,
+                                UBYTE           mn,
+                                T_tp_da*        da_addr,
+                                T_ACI_CMD_DATA* data,
+                                T_ACI_UDH_DATA* udh);
+
+/* ACI-SPR-17004: RFU bits have to be ignored (GSM 11.11) */ 
+EXTERN void cmhSMS_removeStatusRFUBits ( UBYTE* status );
+
+EXTERN T_ACI_CPRSM_MOD cmhSMS_convertDeliverStatusToACI( UBYTE status );
+
+#ifdef FF_CPHS
+EXTERN BOOL cmhSMS_voice_mail_ind( T_sms_sdu *sms_sdu);
+#endif /* FF_CPHS */                                
+
+EXTERN void cmhSMS_resetMtDsCnmiParam(void);
+EXTERN BOOL cmhSMS_storePduToSim( T_ACI_CMD_SRC  srcId,
+                                           UBYTE          stat,
+                                           T_ACI_SM_DATA  *pdu );
+
+EXTERN BOOL cmhSMS_SMSQueryType (T_sms_sdu *sms_sdu, UBYTE *msg_type);
+EXTERN void cmhSMS_SendDelete_Req ( UBYTE  index, UBYTE  status );
+#endif /* CMH_SMS_H */
+
+/*==== EOF =======================================================*/