FreeCalypso > hg > fc-magnetite
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 =======================================================*/