etm_audio.c: fix off-by-one error in auw of FIR coefficients
This fix was already made in FC Tourmaline a while back, but it is also
the kind of bugfix that deserves to be backported to Magnetite and
Selenite as well.
line source
+ − /*
+ − +-----------------------------------------------------------------------------
+ − | Project : GSM-PS (8410)
+ − | Modul : 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 Protocol Stack Entity
+ − | Short Message Service
+ − +-----------------------------------------------------------------------------
+ − */
+ −
+ − #ifndef SMS_H
+ − #define SMS_H
+ −
+ − #include <stdio.h>
+ − #ifdef TI_PS_HCOMM_CHANGE
+ − #include "cl_hComm_handle.h"
+ − #endif
+ −
+ − #ifdef TI_GSP_STR2IND_S2I_STRING
+ − typedef unsigned int T_S2I_STRING;
+ − #else
+ − typedef char * T_S2I_STRING;
+ − #define S2I_STRING(x) (x)
+ − #endif
+ −
+ − #ifdef TI_PS_OP_VSI_NO_CALL_ID
+ − #define TIMER_START(C,I,T) vsi_t_start_nc(I,T)
+ − #define TIMER_PSTART(C,I,T,R) vsi_t_pstart_nc(I,T,R)
+ − #define TIMER_STOP(C,I) vsi_t_stop_nc(I)
+ − #define TIMER_STATUS(C,I,T) vsi_t_status_nc(I,T)
+ − #define SUSPEND_SELF(C,T) vsi_t_sleep_nc(T)
+ − #define SYSTEM_TIME(C,T) vsi_t_time_nc(T)
+ − #else /* TI_PS_OP_VSI_NO_CALL_ID */
+ − #define TIMER_START(C,I,T) vsi_t_start(C,I,T)
+ − #define TIMER_PSTART(C,I,T,R) vsi_t_pstart(C,I,T,R)
+ − #define TIMER_STOP(C,I) vsi_t_stop(C,I)
+ − #define TIMER_STATUS(C,I,T) vsi_t_status(C,I,T)
+ − #define SUSPEND_SELF(C,T) vsi_t_sleep(C,T)
+ − #define SYSTEM_TIME(C,T) vsi_t_time(C,T)
+ − #endif /* TI_PS_OP_VSI_NO_CALL_ID */
+ −
+ − /*
+ − * Definition whether a shared CCD buffer shall be used
+ − */
+ − /* #undef SHARED_CCD_BUF */
+ −
+ − #ifndef _TARGET_
+ −
+ − #define FF_CPHS /* This flag is only required for SIMULATION defined in .xml file,
+ − to remove the redefinition warning put under comment */
+ − #endif /* _TARGET_ */
+ −
+ − #define FF_SMS_23430
+ −
+ − #if defined(FF_SMS_23430)
+ − #define FF_SMS_NW_RCG_SIM
+ − #endif
+ −
+ − /*==== MACROS =====================================================*/
+ −
+ − #if FALSE
+ − #define SMS_SDU_COPY(_d_,_s_,_t_) memcpy(_d_,_s_,\
+ − (offsetof(T_##_t_,sdu)+offsetof(T_sdu,buf)+\
+ − BYTELEN(D_SDU_OFF(_s_)+D_SDU_LEN(_s_))))
+ − #else
+ − #define SMS_SDU_COPY(_d_,_s_,_t_) memcpy(&(_d_)->sdu,&(_s_)->sdu,\
+ − offsetof(T_sdu,buf)+\
+ − BYTELEN(D_SDU_OFF(_s_)+D_SDU_LEN(_s_)))
+ − #endif
+ −
+ − #define GET_SMS_INSTANCE(ti) csf_get_sms_instance(ti)
+ − #define GET_NEW_SMS_INSTANCE(ti) csf_get_new_sms_instance(ti)
+ − #define FREE_SMS_INSTANCE(ti) csf_free_sms_instance(ti)
+ − #define GET_MO_INSTANCE(_sd_) ((_sd_)->inst = INST_MO)
+ − #define GET_MT_INSTANCE(_sd_) ((_sd_)->inst = INST_MT)
+ −
+ − /*
+ − * The assert() macro as defined by the frame stops the task,
+ − * not only in simulation but also on the target. For the
+ − * simulation this is a desired behaviour, for the target it is not.
+ − */
+ − #ifndef WIN32
+ − #undef assert
+ − #define assert(x) if (!(x)) { TRACE_ERROR ("Assertion failed"); }
+ − #endif
+ −
+ − #define CMMS_ACTIVE ((sms_data->cmms_mode EQ CMMS_MODE_ONE) \
+ − OR (sms_data->cmms_mode EQ CMMS_MODE_TWO))
+ −
+ − /*==== CONSTANTS ==================================================*/
+ −
+ − #define DISPLAY 0
+ − #define IGNORE 0xFE // return RP-ACK if handled unsuccessfully
+ − #define NOTHING 0xFF // return RP-ERROR if handled unsuccessfully
+ −
+ − #define MAX_SMS_CALLS 2
+ −
+ − #define INST_MO 0
+ − #define INST_MT 1
+ −
+ − #define SMS_INST sms_data->data[sms_data->inst]
+ −
+ − #define ENTITY_DATA sms_data
+ −
+ − /*
+ − * Recognition of certain networks (SIM opearators)
+ − */
+ −
+ − #define NW_SIM_NONE 0 /* no special network given */
+ − #define NW_SIM_23430 1 /* SIM provided by operator 234-30 */
+ −
+ − /*
+ − * Dynamic Configuration Numbers
+ − */
+ − enum
+ − {
+ − SMS_CONF_EVENT_TIMER_SET = 1,
+ − SMS_CONF_EVENT_TIMER_RESET = 2,
+ − SMS_CONF_EVENT_TIMER_SPEED_UP = 3,
+ − SMS_CONF_EVENT_TIMER_SLOW_DOWN = 4,
+ − SMS_CONF_EVENT_TIMER_SUPPRESS = 5,
+ − SMS_CONF_EVENT_PAUSE = 6,
+ − SMS_CONF_EVENT_RESUME = 7,
+ −
+ − SMS_CONF_EVENT_END,
+ − SMS_CONF_EVENT_MAX = (SMS_CONF_EVENT_END - 1)
+ − };
+ − typedef UBYTE SMS_CONF_EVENT_ENUM_TYPE;
+ −
+ − /*
+ − * Timer definitions, MAX_SMS_TIMER
+ − *
+ − * Description : The constants defines the timers and the number of timers
+ − * available in the timer pool.
+ − * Note : One CP and one RL timer per instance.
+ − */
+ − #define TC1M 0
+ − #define TR1M 1
+ − #define TR2M 2
+ − #define TRAM 3
+ − #define TLCT 4 /* concatenation timer */
+ − #define TMMS 5 /* CMMS Timer */
+ − #define MAX_SMS_TIMER 6
+ −
+ − /*
+ − * Protocoldiscriminator SMS
+ − */
+ − #define ENCODE_OFFSET 32
+ − #define BSIZE_TI_PD 8
+ −
+ − /*
+ − * Protocoldiscriminator SMS
+ − */
+ − #define PD_SMS 9
+ −
+ − /*
+ − * Max size of SMS-message
+ − */
+ − #define MAX_SMS_MESSAGE_SIZE (MAX_BITSTREAM_LEN_SMS>>3)
+ −
+ − /*
+ − * Max size of TP user data
+ − */
+ − #define MAX_CHARACTERS_TPUD 141
+ −
+ − /*
+ − * Max size of sim-sms-record
+ − */
+ − #define SIM_LENGTH_SMS_RECORD 176
+ −
+ − /*
+ − * access values
+ − */
+ − #define ACCESS_EMPTY 0
+ −
+ − /*
+ − * length of U_CP_DATA
+ − */
+ − #define LEN_U_CP_DATA (252*8)
+ −
+ − /*
+ − * Max length of D_CP_USER_DATA
+ − */
+ − #define MAX_LEN_CP_USER_DATA 249
+ − #define MIN_CP_LEN 3
+ − #define MIN_CP_ACK_LEN 2
+ −
+ − /*
+ − * constants for GSMS: active downlink
+ − */
+ − #if defined (GPRS)
+ − #define SMS_DOWNLINK_NONE 0 /* no downlink assigned yet */
+ − #define SMS_DOWNLINK_MMSMS 1 /* downlink is MM using SAP MMSMS */
+ − #define SMS_DOWNLINK_LL_CHECK 2 /* downlink LL is being checked */
+ − #define SMS_DOWNLINK_LL 3 /* downlink is LL, registered */
+ −
+ − /*
+ − * constants for GSMS: LLC flow control
+ − */
+ − #define SMS_LLC_UNKNOWN 0x00
+ − #define SMS_LLC_AVAILABLE 0x01
+ − #define SMS_LLC_BUSY 0x02 /* LLC is busy, no instance waiting */
+ − #define SMS_LLC_BUSY_WAITING 0x03 /* LLC is busy and instance is waiting */
+ −
+ − /* constants for GSMS: SMS entity flow control status towards LLC */
+ − #define SMS_FLOW_UNKNOWN 0x00
+ − #define SMS_FLOW_AVAILABLE 0x01 /* availability of SMS signalled to LLC */
+ − #define SMS_FLOW_BUSY 0x02 /* SMS entity is busy */
+ −
+ − /* cp type of acknowledgement to be sent */
+ − #define SMS_CP_NONE 0x00
+ − #define SMS_CP_ACK 0x01
+ − #define SMS_CP_ERROR 0x02
+ − #endif /* GPRS */
+ −
+ − /*
+ − * a modified version of the S/GET_STATE macros for tracing SMS_INST states
+ − */
+ − #ifdef NTRACE
+ − #define SMS_INST_SET_STATE(PROCESS,STATE) SMS_INST.state[PROCESS] = STATE
+ − #define SMS_INST_GET_STATE(PROCESS) SMS_INST.state[PROCESS]
+ − #else
+ − #define SMS_INST_SET_STATE(PROCESS,STATE)\
+ − { vsi_o_strace (VSI_CALLER\
+ − PROCESS_NAME_SMS_INST[PROCESS],\
+ − PROCESS##_NAME [ SMS_INST.state[PROCESS] ],\
+ − PROCESS##_NAME [ STATE ]);\
+ − SMS_INST.state[PROCESS] = (STATE); }
+ − #define SMS_INST_GET_STATE(PROCESS)\
+ − vsi_o_strace (VSI_CALLER\
+ − PROCESS_NAME_SMS_INST[PROCESS],\
+ − PROCESS##_NAME [ SMS_INST.state[PROCESS] ],\
+ − NULL ),\
+ − SMS_INST.state[PROCESS]
+ − #endif /* else, #ifdef NTRACE */
+ −
+ − /*
+ − * CP States
+ − */
+ − #define CP_IDLE 0 /* 3gpp, MO+MT */
+ − #define CP_MM_CONNECTION_PENDING 1 /* 3gpp, MO */
+ − #define CP_WAIT_FOR_ACK 2 /* 3gpp, MO+MT */
+ − #define CP_MM_CONNECTION_ESTABLISHED 3 /* 3gpp, MO+MT */
+ −
+ − #if defined (GPRS)
+ − /*
+ − * CP States for GSMS
+ − */
+ − #define CP_GSMS_IDLE 4 /* 3gpp */
+ − #define CP_GSMS_MO_WAIT_FOR_CP_ACK 5 /* 3gpp */
+ − #define CP_GSMS_MT_WAIT_FOR_CP_ACK 6 /* 3gpp */
+ − #define CP_GSMS_MO_WAIT_FOR_CP_DATA 7 /* 3gpp */
+ − #define CP_GSMS_MT_WAIT_FOR_RP_ACK 8 /* 3gpp */
+ − #endif /* GPRS */
+ −
+ − #if defined (GPRS)
+ − EXTERN const char * const
+ − STATE_CP_NAME[];
+ − #define STATE_CP_NAME_INIT \
+ − "CP_IDLE", \
+ − "CP_MM_CONNECTION_PENDING", \
+ − "CP_WAIT_FOR_ACK", \
+ − "CP_MM_CONNECTION_ESTABLISHED", \
+ − "CP_GSMS_IDLE", \
+ − "CP_GSMS_MO_WAIT_FOR_CP_ACK", \
+ − "CP_GSMS_MT_WAIT_FOR_CP_ACK", \
+ − "CP_GSMS_MO_WAIT_FOR_CP_DATA", \
+ − "CP_GSMS_MT_WAIT_FOR_RP_ACK"
+ − #else
+ − EXTERN const char * const
+ − STATE_CP_NAME[];
+ − #define STATE_CP_NAME_INIT \
+ − "CP_IDLE", \
+ − "CP_MM_CONNECTION_PENDING", \
+ − "CP_WAIT_FOR_ACK", \
+ − "CP_MM_CONNECTION_ESTABLISHED"
+ − #endif
+ −
+ − /*
+ − * RL States
+ − */
+ − #define RL_IDLE 0 /* 3gpp */
+ − #define RL_WAIT_FOR_ACK 1 /* 3gpp */
+ − #define RL_WAIT_FOR_SMMA_ACK 2 /* TI */
+ − #define RL_WAIT_FOR_SEND_ACK 3 /* 3gpp */
+ − #define RL_WAIT_FOR_RETRANS_TIMER 4 /* 3gpp */
+ − #define RL_ESTABLISH 5 /* TI */
+ − #define RL_ESTABLISHED 6 /* TI */
+ − #define RL_WAIT_FOR_SEND_ERROR 7 /* TI */
+ −
+ − EXTERN const char * const
+ − STATE_RL_NAME[];
+ − #define STATE_RL_NAME_INIT \
+ − "RL_IDLE", \
+ − "RL_WAIT_FOR_ACK", \
+ − "RL_WAIT_FOR_SMMA_ACK", \
+ − "RL_WAIT_FOR_SEND_ACK", \
+ − "RL_WAIT_FOR_RETRANS_TIMER", \
+ − "RL_ESTABLISH", \
+ − "RL_ESTABLISHED", \
+ − "RL_WAIT_FOR_SEND_ERROR"
+ −
+ − /*
+ − * TL States
+ − */
+ − #define TL_IDLE 0
+ − #define TL_SEND 1
+ − #define TL_COMMAND 2
+ − #define TL_RECEIVE 3
+ − #define TL_OTHER 4
+ − #define TL_ESTABLISH 5
+ − #define TL_SEND_CONTD 6
+ −
+ − EXTERN const char * const
+ − STATE_TL_NAME[];
+ − #define STATE_TL_NAME_INIT \
+ − "TL_IDLE", \
+ − "TL_SEND", \
+ − "TL_COMMAND", \
+ − "TL_RECEIVE", \
+ − "TL_OTHER", \
+ − "TL_ESTABLISH", \
+ − "TL_SEND_CONTD"
+ −
+ − /*
+ − * SMS manages 3 (MAX_STATE_SMS_INST) states per SMS_INST: CP, RL, TL
+ − */
+ − #define STATE_CP 0
+ − #define STATE_RL 1
+ − #define STATE_TL 2
+ − #define MAX_STATE_SMS_INST 3
+ −
+ − EXTERN const char * const
+ − PROCESS_NAME_SMS_INST[];
+ − #define PROCESS_NAME_SMS_INST_INIT \
+ − "STATE_CP" , \
+ − "STATE_RL" , \
+ − "STATE_TL"
+ −
+ − /*
+ − * A definition of the states of SMS_INST is provided in SMS_PEI.C
+ − */
+ − #if defined(SMS_PEI_C) && ! defined(NTRACE)
+ − GLOBAL const char * const STATE_CP_NAME[] = { STATE_CP_NAME_INIT };
+ − GLOBAL const char * const STATE_RL_NAME[] = { STATE_RL_NAME_INIT };
+ − GLOBAL const char * const STATE_TL_NAME[] = { STATE_TL_NAME_INIT };
+ − GLOBAL const char * const PROCESS_NAME_SMS_INST[] = { PROCESS_NAME_SMS_INST_INIT };
+ − #endif
+ −
+ − /*
+ − * MMI States
+ − */
+ − #define MMI_IDLE 0
+ − #define MMI_READ 1
+ − #define MMI_WRITE 2
+ − #define MMI_DELETE 3
+ − #define MMI_FIND_FIRST 4
+ − #define MMI_FIND_NEXT 5
+ − #define MMI_REPLACE 6
+ − #define MMI_STATE_UPDATE 7
+ − #define MMI_READ_STATE_UPDATE 8
+ − #define MMI_RESUME 9
+ −
+ − /* N950 Memory Optimization - Implements Measure #39*/
+ − EXTERN T_S2I_STRING const
+ − STATE_MMI_NAME[];
+ − /*
+ − * NET States
+ − */
+ − #define NET_IDLE 0
+ − #define NET_WRITE 1
+ − #define NET_READ 2
+ − #define NET_23430_WRITE 3
+ − #define NET_23430_DELETE 4
+ −
+ − /* N950 Memory Optimization - Implements Measure #39*/
+ − EXTERN T_S2I_STRING const
+ − STATE_NET_NAME[];
+ − /*
+ − * EST States - substates for connection establishment
+ − */
+ − enum
+ − {
+ − EST_IDLE = 0, /* no connection establishment */
+ − EST_SEND = 1, /* conn establishment for send */
+ − EST_RTX = 2, /* conn est for retransmission */
+ − EST_CMD = 3, /* conn est for command */
+ − EST_SMMA = 4 /* conn est for smma message */
+ − };
+ −
+ − /* N950 Memory Optimization - Implements Measure #39*/
+ − EXTERN T_S2I_STRING const
+ − STATE_EST_NAME[];
+ − /*
+ − * SMS manages 3 (MAX_STATE) states: MMI, NET, EST
+ − */
+ − #ifdef OPTION_MULTITHREAD
+ − #define PROCESS_NAME _ENTITY_PREFIXED(PROCESS_NAME)
+ − #endif
+ −
+ − #define STATE_MMI 0
+ − #define STATE_NET 1
+ − #define STATE_EST 2
+ − #define MAX_STATE 3
+ −
+ − /* N950 Memory Optimization - Implements Measure #39*/
+ − EXTERN T_S2I_STRING const
+ − PROCESS_NAME[];
+ − /*
+ − * A definition of the states is provided in SMS_PEI.C
+ − */
+ − #if defined(SMS_PEI_C) && ! defined(NTRACE)
+ − /* N950 Memory Optimization - Implements Measure #39*/
+ − GLOBAL T_S2I_STRING const STATE_MMI_NAME[] =
+ − {
+ −
+ − S2I_STRING("MMI_IDLE"),
+ − S2I_STRING("MMI_READ"),
+ − S2I_STRING("MMI_WRITE"),
+ − S2I_STRING("MMI_DELETE"),
+ − S2I_STRING("MMI_FIND_FIRST"),
+ − S2I_STRING("MMI_FIND_NEXT"),
+ − S2I_STRING("MMI_REPLACE"),
+ − S2I_STRING("MMI_STATE_UPDATE"),
+ − S2I_STRING("MMI_READ_STATE_UPDATE"),
+ − S2I_STRING("MMI_RESUME")
+ − };
+ − #ifndef FF_SMS_23430
+ − GLOBAL T_S2I_STRING const STATE_NET_NAME[] =
+ − {
+ − S2I_STRING("NET_IDLE"),
+ − S2I_STRING("NET_WRITE"),
+ − S2I_STRING("NET_READ")
+ − };
+ − #else
+ − GLOBAL T_S2I_STRING const STATE_NET_NAME[] =
+ − {
+ − S2I_STRING("NET_IDLE"),
+ − S2I_STRING("NET_WRITE"),
+ − S2I_STRING("NET_READ"),
+ − S2I_STRING("NET_23430_WRITE"),
+ − S2I_STRING("NET_23430_DELETE")
+ − };
+ − #endif /* else, #ifndef FF_SMS_23430 */
+ −
+ − GLOBAL T_S2I_STRING const STATE_EST_NAME[] =
+ − {
+ −
+ − S2I_STRING("EST_IDLE"),
+ − S2I_STRING("EST_SEND"),
+ − S2I_STRING("EST_RTX"),
+ − S2I_STRING("EST_CMD"),
+ − S2I_STRING("EST_SMMA")
+ − };
+ −
+ − GLOBAL T_S2I_STRING const PROCESS_NAME[] =
+ − {
+ −
+ − S2I_STRING("MMI"),
+ − S2I_STRING("NET"),
+ − S2I_STRING("EST")
+ − };
+ − #endif
+ −
+ − #define ACCESS_BY_MMI 0x01
+ − #define ACCESS_BY_NET 0x02
+ − #define ACCESS_BY_EST 0x03
+ −
+ − #define SIM_SMS_FREE (SMS_RECORD_FREE)
+ − #define SIM_SMS_MT_READ (SMS_RECORD_REC_READ)
+ − #define SIM_SMS_MT_TO_BE_READ (SMS_RECORD_REC_UNREAD)
+ − #define SIM_SMS_MO_SENT (SMS_RECORD_STO_SENT)
+ − #define SIM_SMS_MO_TO_BE_SEND (SMS_RECORD_STO_UNSENT)
+ − #define SIM_SMS_PENDING 0xFF /* new entry, not yet confirmed */
+ −
+ − #define SMS_MAX_SIM_ACCESS 2
+ −
+ − /*==== TYPES ======================================================*/
+ −
+ − /*
+ − * IE Header Structure
+ − */
+ − typedef struct
+ − {
+ − UBYTE iei; /* Information Element Identifier */
+ − UBYTE ie_length; /* Length of Information Element */
+ − } T_SMS_PDU_IE_HDR;
+ −
+ − /*
+ − * Conactenation header structure for 8 bit reference number
+ − */
+ − typedef struct
+ − {
+ − UBYTE ref_nr; /* Reference Number */
+ − UBYTE max_nr; /* Maximum number of short messages
+ − in the concatenated short message */
+ − UBYTE seq_nr; /* Sequence number of the current
+ − short message */
+ − } T_SMS_PDU_CONCAT_8BIT_HDR;
+ −
+ − /*
+ − * Conactenation header structure for 16 bit reference number
+ − */
+ − typedef struct
+ − {
+ − USHORT ref_nr; /* Reference Number */
+ − UBYTE max_nr; /* Maximum Sequence Number */
+ − UBYTE seq_nr; /* Sequence Number */
+ − } T_SMS_PDU_CONCAT_16BIT_HDR;
+ −
+ − /*
+ − * Conactenation header common structure
+ − */
+ − typedef struct
+ − {
+ − USHORT ref_nr; /* Reference Number */
+ − UBYTE max_nr; /* Maximum Sequence Number */
+ − UBYTE seq_nr; /* Sequence Number */
+ − } T_SMS_CONCAT_HDR;
+ −
+ − typedef struct
+ − {
+ − UBYTE t_mode;
+ − ULONG t_val;
+ − } T_TIMER_CONFIG;
+ −
+ −
+ − typedef struct
+ − {
+ − T_MMSMS_DATA_REQ *mo_msg;
+ − T_sms_sdu *sms_sdu;
+ − T_SIM_READ_RECORD_CNF *sim_read;
+ − UBYTE state[MAX_STATE_SMS_INST];
+ − UBYTE tl_retx; /* Number of retransmissions on TL level */
+ − #ifdef REL99
+ − UBYTE failed_msg_retx; /* stores whether MO msg is sent thru retransmission request */
+ − UBYTE failed_msg_rec_num;/* stores record number of last failed msg */
+ − UBYTE failed_msg_mem; /* stores memory location of last failed msg */
+ − #endif
+ − UBYTE retx;
+ − UBYTE retrans;
+ − UBYTE msg_ref;
+ − UBYTE ti;
+ − UBYTE tp_mr;
+ − UBYTE tp_mr_ret; /* TP-MR to be returned to higher layer */
+ −
+ − /* cp_release_req() in state XXX_CP_WAIT_FOR_ACK received,
+ − * delay the release until the next CP state is entered. */
+ − BOOL r_flag;
+ − /* CP_ACK pending: outstanding CP_ACK in outbound direction */
+ − BOOL cp_ack_pending;
+ − UBYTE act_mem;
+ − UBYTE act_record;
+ − UBYTE act_status;
+ − UBYTE act_rdmode;
+ − UBYTE act_condx;
+ − UBYTE act_modifier;
+ − UBYTE pid;
+ − UBYTE dcs;
+ − #if defined (GPRS)
+ − UBYTE downlink; /* downlink of this instance: LLC or MMSMS */
+ − UBYTE ack_type; /* type of message to be sent */
+ − UBYTE cp_cause; /* cause value of CP-ERROR to be sent */
+ − T_cp_user_data_dl *cp_user_data_dl;
+ − #endif
+ − BOOL t_running[MAX_SMS_TIMER];
+ − } T_SMS_INST;
+ −
+ − typedef struct
+ − {
+ − UBYTE *status_field; /* status each record */
+ − UBYTE *pid_field; /* PID flag of each record */
+ − UBYTE mem_type; /* Type of used memory */
+ − UBYTE max_record; /* number of available records */
+ − UBYTE any_valid; /* at least one used record exists */
+ − } T_BACKUP;
+ −
+ − typedef struct
+ − {
+ − /* SIM EF file identifier. path_info need not be stored as SMS is using
+ − * only non-conflicting files
+ − * Data-field identification
+ − */
+ − USHORT datafield;
+ − /* record number, used only for linear fixed EFs */
+ − UBYTE rec_num;
+ − /* flag indicating whether this entry is used */
+ − UBYTE entry_used;
+ − } T_SMS_SIM_ACCESS_INFO;
+ −
+ − /*
+ − * CONCATENATION CONTROL
+ − */
+ − typedef struct
+ − {
+ − BOOL concatenation; /* whether concatenated submits are
+ − currently processed */
+ − BOOL release_pending; /* release outstanding */
+ − BOOL end; /* end of concatenated stream */
+ − BOOL pad; /* */
+ − T_SMS_CONCAT_HDR nr; /* current number */
+ − } T_SMS_CONCAT_CNTRL;
+ −
+ − /*
+ − * PAUSE RESUME CONTROL
+ − */
+ − typedef struct
+ − {
+ − U8 delivery_state; /* pause or resume, SMS_DELIVER_STATUS_xxx */
+ − BOOL mem_full_sent; /* whether mem capacity exceeded
+ − message was sent to HLR due to
+ − user pause request */
+ − U16 save_cause; /* safed cause value while sim updating */
+ − } T_SMS_PR_CNTRL;
+ −
+ − typedef struct
+ − {
+ − T_SMS_INST data[MAX_SMS_CALLS];
+ − T_rp_data_dl *rp_data_dl; /* points to income RL data */
+ − /*
+ − * following is a hack: since we cannot pass values to timer we safe it here:
+ − */
+ − UBYTE timer_ti; /* TI for running timer */
+ − UBYTE mhc; /* message Handling compatibility */
+ − UBYTE mt;
+ − UBYTE ds;
+ − UBYTE mem3;
+ − UBYTE inst;
+ − UBYTE ent_state;
+ − UBYTE state[MAX_STATE];
+ − BOOL mem_cap_avail; /* as stated on SIM */
+ − UBYTE access_fifo[2];
+ − UBYTE sim_phase; /* value of EF(Phase) */
+ − UBYTE use_mem_a;
+ − UBYTE use_mem_b;
+ − T_BACKUP me_backup;
+ − T_BACKUP sim_backup;
+ −
+ − /* In the ME status field a backup of the SMS status is stored,
+ − * the ME PID field is a bitarray which stores whether a given
+ − * SMS is of the replacement type or not.
+ − * For asynchronous memory those fields are mandatory, for
+ − * synchronous memory the backup is optional.
+ − */
+ − /* UBYTE me_status_field [MAX_RECORD_ME]; */
+ − /* UBYTE me_pid_field [(MAX_RECORD_ME+7)/8]; */
+ − UBYTE sim_status_field [MAX_RECORD_SIM];
+ − UBYTE sim_pid_field[(MAX_RECORD_SIM+7)/8];
+ −
+ − /* SMS entity has finished reading SMS entries from the SIM. */
+ − BOOL init_done;
+ −
+ − /* SMS entries changed by SAT, not begun reading records from the SIM. */
+ − BOOL sim_mem_update;
+ −
+ − /* concatenation control field */
+ − T_SMS_CONCAT_CNTRL concat_cntrl;
+ − /* pause resume control field */
+ − T_SMS_PR_CNTRL pr_cntrl;
+ −
+ − UBYTE nw_spec;
+ − #ifdef FF_CPHS
+ − UBYTE cphs_sim; /* CPHS SIM recognized */
+ − #endif
+ − #ifdef SIM_TOOLKIT
+ − UBYTE download_sms;
+ − T_SIM_FILE_UPDATE_IND *file_update_ind;
+ − /* MMI state backup */
+ − UBYTE stored_mmi_state;
+ − /* Backup the read_cnf primitive */
+ − T_SIM_READ_RECORD_CNF *stored_read_cnf;
+ − #endif /* #ifdef SIM_TOOLKIT */
+ − #if defined (GPRS)
+ − UBYTE mo_dst_pref; /* preferred dest. (GPRS/CCT) for MO SM */
+ − UBYTE llc_flow; /* LLC flow control */
+ − UBYTE sms_flow; /* SMS entity flow control */
+ − #endif
+ − /* To indicate that release is pending for the previous connection */
+ − BOOL cmms_release_pending;
+ − UBYTE cmms_mode;
+ − T_TIME timer_values[MAX_SMS_TIMER];
+ − /* Used to store information on the SIM Accesses that are currently happening.
+ − * The array is indexed by the req_id that was sent in SIM_XXX_REQ */
+ − T_SMS_SIM_ACCESS_INFO sms_sim_access_info[SMS_MAX_SIM_ACCESS];
+ − } T_SMS_DATA;
+ −
+ − /*==== MACROS =====================================================*/
+ −
+ − #define DATA_INST(_sd_) ((_sd_)->data[(_sd_)->inst])
+ −
+ − #define SMS_STATE(_sd_) (DATA_INST(_sd_).state)
+ − #define SMS_RETX(_sd_) (DATA_INST(_sd_).retx)
+ − #define SMS_RETRANS(_sd_) (DATA_INST(_sd_).retrans)
+ − #define SMS_CP_REF(_sd_) (DATA_INST(_sd_).ti)
+ − #define SMS_RP_REF(_sd_) (DATA_INST(_sd_).msg_ref)
+ − #define SMS_TP_REF(_sd_) (DATA_INST(_sd_).tp_mr)
+ − #define SMS_TP_REF_RET(_sd_) (DATA_INST(_sd_).tp_mr_ret)
+ − /* #define SMS_RP_FLAG(_sd_) (DATA_INST(_sd_).r_flag) */ /* Not used */
+ − #define SMS_SEL_MEM(_sd_) (DATA_INST(_sd_).act_mem)
+ − #define SMS_SEL_REC(_sd_) (DATA_INST(_sd_).act_record)
+ − #define SMS_REC_STATUS(_sd_) (DATA_INST(_sd_).act_status)
+ − #define SMS_READ_MODE(_sd_) (DATA_INST(_sd_).act_rdmode)
+ − #define SMS_CONDX(_sd_) (DATA_INST(_sd_).act_condx)
+ − #define SMS_MODIFY(_sd_) (DATA_INST(_sd_).act_modifier)
+ − #define SMS_DATA_REQ(_sd_) (DATA_INST(_sd_).mo_msg)
+ − #define SMS_SDU(_sd_) (DATA_INST(_sd_).sms_sdu)
+ − #define SMS_SIM_READ(_sd_) (DATA_INST(_sd_).sim_read)
+ − #define SMS_RP_RCVD(_sd_) ((*_sd_).rp_data_dl)
+ − #define SMS_PID(_sd_) (DATA_INST(_sd_).pid)
+ − #define SMS_DCS(_sd_) (DATA_INST(_sd_).dcs)
+ −
+ − #define SMS_ENT_STATE(_sd_) ((_sd_)->ent_state)
+ − #define SMS_SIM_PHASE(_sd_) ((_sd_)->sim_phase)
+ − #define SMS_SIM_STATE(_sd_) ((_sd_)->state)
+ − #define SMS_SIM_MEM_AVAIL(_sd_) ((_sd_)->mem_cap_avail)
+ − #define SMS_SIM_ACCESS(_sd_) ((_sd_)->access_fifo)
+ − #define SMS_SAT_DWNLD(_sd_) ((_sd_)->download_sms)
+ − #define SMS_MT_ACK_MODE(_sd_) ((_sd_)->mhc)
+ − #define SMS_MT_HANDLING(_sd_) ((_sd_)->mt)
+ − #define SMS_ST_REPORT(_sd_) ((_sd_)->ds)
+ − #define SMS_MEM_CFG(_sd_) ((_sd_)->mem3)
+ − #define SMS_USE_MEMA(_sd_) ((_sd_)->use_mem_a)
+ − #define SMS_USE_MEMB(_sd_) ((_sd_)->use_mem_b)
+ − #define SMS_SIM_PROP(_sd_) ((_sd_)->sim_backup)
+ − #define SMS_ME_PROP(_sd_) ((_sd_)->me_backup)
+ − #define SMS_NETWORK(_sd_) ((_sd_)->nw_spec)
+ −
+ − #ifdef FF_CPHS
+ − #define SMS_CPHS(_sd_) ((_sd_)->cphs_sim)
+ − #endif /* #ifdef FF_CPHS */
+ −
+ − #if defined (GPRS)
+ − #define SMS_ROUTE(_sd_) (DATA_INST(_sd_).downlink)
+ − #define SMS_CP_ACK_TYPE(_sd_) (DATA_INST(_sd_).ack_type)
+ − #define SMS_CP_CAUSE(_sd_) (DATA_INST(_sd_).cp_cause)
+ − #define SMS_CP_UDL(_sd_) (DATA_INST(_sd_).cp_user_data_dl)
+ − #define SMS_ROUTE_PREF(_sd_) ((_sd_)->mo_dst_pref)
+ − #define SMS_LLC_FLOW(_sd_) ((_sd_)->llc_flow)
+ − #define SMS_SMS_FLOW(_sd_) ((_sd_)->sms_flow)
+ − #endif
+ −
+ −
+ − /*==== EXPORT =====================================================*/
+ −
+ − /*
+ − * Prototypes Formatter
+ − */
+ − EXTERN void for_init_sms (void);
+ −
+ − /*
+ − * Prototypes Transfer-Layer Primitives
+ − */
+ −
+ − EXTERN void tl_init (void);
+ − EXTERN void tl_init_complete (void);
+ − EXTERN void tl_mnsms_configure_req (T_MNSMS_CONFIGURE_REQ *configure_req);
+ − #ifdef GPRS
+ − EXTERN void tl_mnsms_mo_serv_req (T_MNSMS_MO_SERV_REQ *mo_serv_req);
+ − #endif
+ − #ifdef SIM_PERS_OTA
+ − EXTERN void tl_mnsms_OTA_message_res (T_MNSMS_OTA_MESSAGE_RES *mnsms_OTA_message_res);
+ − #endif
+ − EXTERN void tl_mnsms_command_req (T_MNSMS_COMMAND_REQ *command_req);
+ − EXTERN void tl_mnsms_delete_req (T_MNSMS_DELETE_REQ *delete_req);
+ − EXTERN void tl_mnsms_read_req (T_MNSMS_READ_REQ *read_req);
+ − EXTERN void tl_mnsms_store_req (T_MNSMS_STORE_REQ *store_req);
+ − EXTERN void tl_mnsms_submit_req (T_MNSMS_SUBMIT_REQ *submit_req);
+ − EXTERN void tl_mnsms_pause_req (T_MNSMS_PAUSE_REQ *pause_req);
+ − EXTERN void tl_mnsms_resume_req (T_MNSMS_RESUME_REQ *resume_req);
+ − EXTERN void tl_mnsms_query_req (T_MNSMS_QUERY_REQ *query_req);
+ − EXTERN void tl_sim_sms_insert_ind (T_SIM_SMS_INSERT_IND *insert_ind);
+ − #if defined(SIM_TOOLKIT) OR defined(FF_CPHS)
+ − EXTERN void tl_sim_read_cnf (T_SIM_READ_CNF *read_cnf);
+ − #endif /* #if defined(SIM_TOOLKIT) OR defined(FF_CPHS) */
+ − #ifdef SIM_TOOLKIT
+ − EXTERN void tl_sim_file_update_ind (T_SIM_FILE_UPDATE_IND *file_update_ind);
+ − #endif /* #ifdef SIM_TOOLKIT */
+ − EXTERN void tl_sim_update_cnf (T_SIM_UPDATE_CNF *update_cnf);
+ − EXTERN void tl_sim_update_record_cnf (T_SIM_UPDATE_RECORD_CNF *update_cnf);
+ − EXTERN void tl_sim_read_record_cnf (T_SIM_READ_RECORD_CNF *read_cnf);
+ − EXTERN void tl_sim_remove_ind (T_SIM_REMOVE_IND *remove_ind);
+ − #if defined(SIM_TOOLKIT) AND defined(SAT_SMS_DNL_SUPPORT)
+ − EXTERN void tl_sim_toolkit_cnf (T_SIM_TOOLKIT_CNF *toolkit_cnf);
+ − #endif /* #if defined(SIM_TOOLKIT) AND defined(SAT_SMS_DNL_SUPPORT) */
+ − EXTERN void tl_mnsms_error_ind (USHORT error);
+ − EXTERN void tl_mnsms_ack_res (T_MNSMS_ACK_RES *ack_res);
+ − EXTERN UBYTE tl_check_class_2 (UBYTE dcs);
+ − EXTERN BOOL tl_build_envelope_sms_download (T_rp_data_dl *rp_data_dl);
+ − EXTERN void tl_mnsms_read_cnf (UBYTE mem_type,
+ − UBYTE record,
+ − UBYTE *data,
+ − USHORT error);
+ −
+ −
+ −
+ − EXTERN void tl_mnsms_store_cnf (UBYTE mem_type,
+ − UBYTE record,
+ − USHORT error);
+ − EXTERN void tl_mnsms_submit_cnf (UBYTE mem_type,
+ − UBYTE record,
+ − UBYTE tp_mr,
+ − USHORT cause,
+ − T_sms_sdu *sms_sdu);
+ − EXTERN void tl_mnsms_command_cnf (UBYTE tp_mr,
+ − USHORT cause,
+ − T_sms_sdu *sms_sdu);
+ − EXTERN void tl_mnsms_delete_cnf (UBYTE mem_type,
+ − UBYTE record,
+ − UBYTE next_rec,
+ − USHORT error);
+ − EXTERN void tl_mnsms_resume_cnf (USHORT cause);
+ − EXTERN void tl_mnsms_query_cnf (U8 query_type,
+ − U8 status);
+ −
+ − /*
+ − * Prototypes Transfer-Layer Signals
+ − */
+ − EXTERN void tl_establish_cnf (BOOL success);
+ − EXTERN void tl_establish_cnf_send (void);
+ − EXTERN void tl_establish_cnf_rtx (void);
+ − EXTERN void tl_establish_cnf_cmd (void);
+ − EXTERN void tl_data_ind (T_rp_data_dl *rp_data_dl);
+ − EXTERN void tl_report_ind (T_rp_user_data *rp_user_data,
+ − USHORT cause);
+ − EXTERN void tl_timeout_ind (USHORT timer_id);
+ −
+ −
+ − /*
+ − * Prototypes Transfer-Layer Functions
+ − */
+ − EXTERN void tl_establish_connection (BOOL incr);
+ − EXTERN void tl_build_status_rep (T_rp_data_dl *rp_data_dl,
+ − T_MNSMS_STATUS_IND *status_ind);
+ − EXTERN BOOL tl_modify_submit (T_SIM_PDU *sim_pdu,
+ − UBYTE modify,
+ − T_sms_sdu *sms_sdu,
+ − UBYTE *rec_data);
+ − EXTERN BOOL tl_prepare_submit (T_SIM_PDU *sim_pdu,
+ − T_U_CP_DATA *cp_data);
+ − EXTERN void tl_build_deliver_rep (T_MNSMS_ACK_RES *ack_res,
+ − UBYTE msg_ref,
+ − T_MMSMS_DATA_REQ *data_req,
+ − T_U_CP_DATA *cp_data);
+ − EXTERN USHORT tl_convert_sim_error (USHORT sim_error);
+ − EXTERN BOOL tl_convert_mo_to_mem (T_MMSMS_DATA_REQ *data_req,
+ − UBYTE *data);
+ − EXTERN void tl_convert_mt_to_mem (T_rp_data_dl *rp_data_dl,
+ − UBYTE *data);
+ − EXTERN UBYTE tl_convert_sim_to_mmi (UBYTE mem_type,
+ − UBYTE record,
+ − UBYTE *data,
+ − UBYTE length);
+ − EXTERN void tl_message_ind_from_sim (UBYTE mem_type,
+ − UBYTE record,
+ − UBYTE max_record,
+ − UBYTE *data);
+ − EXTERN void tl_message_ind_from_net (UBYTE mem_type,
+ − UBYTE record,
+ − UBYTE max_record,
+ − T_rp_data_dl *rp_data_dl);
+ − EXTERN void tl_read_me_memory (USHORT index,
+ − UBYTE status);
+ − EXTERN void tl_read_sim_memory (USHORT index,
+ − UBYTE status);
+ − EXTERN void tl_sim_read_req (USHORT datafield,
+ − UBYTE length);
+ − EXTERN void tl_sim_read_record_req (UBYTE record);
+ − EXTERN void tl_sim_update_req (UBYTE record,
+ − UBYTE status,
+ − UBYTE *data);
+ − EXTERN void tl_sim_conv_update_req (UBYTE record,
+ − T_rp_data_dl *rp_data_dl);
+ − EXTERN void tl_handle_message (T_TP_DELIVER *sms_deliver);
+ − #ifdef FF_SMS_23430
+ − EXTERN BOOL tl_handle_23430 (T_TP_DELIVER *sms_deliver);
+ − #endif /* #ifdef FF_SMS_23430 */
+ − EXTERN void tl_build_sim_update_req (void);
+ − EXTERN UBYTE tl_read_access_fifo (void);
+ − EXTERN void tl_set_access_fifo (UBYTE access);
+ − EXTERN BOOL tl_sms_memo_exceeded (BOOL avail);
+ − EXTERN void tl_sms_memo_pause (void);
+ − EXTERN void tl_sms_memo_resume (void);
+ − EXTERN void tl_mnsms_report_ind (UBYTE ent_state);
+ − EXTERN void tl_read_sim_message (USHORT index);
+ − EXTERN void tl_find_first (UBYTE mem_type);
+ − EXTERN void tl_find_next (UBYTE mem_type,
+ − UBYTE index);
+ − EXTERN void tl_adjust_message_len (UBYTE tp_vt_mti,
+ − BUF_tpdu *tpdu);
+ − EXTERN void tl_get_pid_dcs (UBYTE status,
+ − T_sms_sdu *sms_sdu,
+ − UBYTE *pid,
+ − UBYTE *dcs);
+ − EXTERN BOOL tl_find_status_pid (UBYTE mem_type,
+ − UBYTE index,
+ − UBYTE *data,
+ − T_BACKUP *backup);
+ − EXTERN UBYTE tl_get_free_space (UBYTE mem_type);
+ − EXTERN void tl_store_pid (T_BACKUP *backup,
+ − unsigned index,
+ − UBYTE pid);
+ − EXTERN void tl_store_status (T_BACKUP *backup,
+ − unsigned index,
+ − UBYTE status);
+ − EXTERN UBYTE tl_get_status (T_BACKUP *backup,
+ − unsigned index);
+ − EXTERN int tl_check_mt_pid (T_BACKUP *backup,
+ − unsigned index,
+ − UBYTE pid);
+ − EXTERN UBYTE tl_check_status_value (UBYTE status);
+ − EXTERN int tl_search_record (T_BACKUP *backup,
+ − USHORT index,
+ − UBYTE status);
+ − EXTERN UBYTE tl_search_record_for_delete (T_BACKUP *backup,
+ − UBYTE index,
+ − UBYTE status);
+ − EXTERN BOOL tl_check_replace_entry (UBYTE *new_data,
+ − UBYTE *old_data);
+ − EXTERN void tl_replace_message (T_TP_DELIVER *sms_deliver);
+ − EXTERN void tl_sim_toolkit_confirm (T_SIM_TOOLKIT_CNF *toolkit_cnf);
+ − EXTERN void tl_cmms_start (void);
+ − EXTERN void tl_cmms_end (void);
+ − EXTERN void tl_mnsms_cmms_end_ind (void);
+ − #ifdef FF_SMS_NW_RCG_SIM
+ − EXTERN void tl_check_network_on_sim (UBYTE *data);
+ − #endif /* #ifdef FF_SMS_NW_RCG_SIM */
+ − EXTERN void tl_pause (void);
+ − EXTERN void tl_resume (void);
+ − EXTERN void tl_query_deliver_status (void);
+ − EXTERN BOOL tl_concat_check (T_sms_sdu *sms_sdu);
+ − EXTERN void tl_concat_cntrl (T_SMS_CONCAT_HDR *concat_hdr);
+ −
+ − #ifdef REL99
+ − EXTERN void tl_mnsms_retrans_req (T_MNSMS_RETRANS_REQ *mnsms_retrans_req);
+ − EXTERN void tl_mnsms_retrans_cnf (UBYTE mem_type,
+ − UBYTE record,
+ − UBYTE tp_mr,
+ − USHORT cause,
+ − T_sms_sdu *sms_sdu );
+ − EXTERN void tl_mnsms_send_prog_ind ();
+ − #endif
+ −
+ −
+ − EXTERN BOOL tl_sms_reserve_req_id (UBYTE *acc_ix_ptr);
+ −
+ − /*
+ − * Prototypes Relay-Layer Primitives
+ − */
+ −
+ − EXTERN void rl_init (void);
+ −
+ − /*
+ − * Prototypes Relay-Layer Signals
+ − */
+ − EXTERN void rl_establish_req (UBYTE ti);
+ − EXTERN void rl_establish_cnf (BOOL success);
+ − EXTERN void rl_release_req (UBYTE ti);
+ − EXTERN void rl_data_ind (T_cp_user_data_dl *cp_user_data_dl);
+ − EXTERN BOOL rl_data_req (UBYTE msg_ref,
+ − T_U_CP_DATA *cp_data);
+ − EXTERN void rl_error_ind (USHORT cause);
+ − EXTERN void rl_report_req_ack (T_rp_user_data *rp_user_data);
+ − EXTERN void rl_report_req_error (USHORT cause,
+ − T_rp_user_data *rp_user_data);
+ − EXTERN BOOL rl_mem_avail_req (void);
+ − EXTERN void rl_start_tram_req (void);
+ −
+ − /*
+ − * Prototypes Relay-Layer Functions
+ − */
+ −
+ − EXTERN void rl_build_rp_error (UBYTE msg_ref,
+ − USHORT error,
+ − T_U_CP_DATA *cp_data,
+ − T_rp_user_data *rp_user_data);
+ − EXTERN void rl_build_rp_smma (UBYTE msg_ref,
+ − T_U_CP_DATA *cp_data);
+ − EXTERN UBYTE rl_temp_failure (UBYTE cause);
+ − #ifdef GPRS
+ −
+ − EXTERN void rl_proceed (void);
+ −
+ − EXTERN void rl_build_rp_error_gprs (UBYTE ti,
+ − T_LL_UNITDATA_REQ *data_req,
+ − USHORT error,
+ − UBYTE msg_ref,
+ − T_U_CP_DATA *cp_data,
+ − T_stk_cmd *stk_cmd);
+ − #endif /* #ifdef GPRS */
+ −
+ − /*
+ − * Prototypes Control-Protocol Primitives
+ − */
+ −
+ − EXTERN void cp_init (void);
+ − EXTERN void cp_mmsms_error_ind (T_MMSMS_ERROR_IND *error_ind);
+ − EXTERN void cp_mmsms_establish_cnf (T_MMSMS_ESTABLISH_CNF *establish_cnf);
+ − EXTERN void cp_mmsms_release_ind (T_MMSMS_RELEASE_IND *release_ind);
+ − EXTERN void for_mmsms_establish_ind (T_MMSMS_ESTABLISH_IND *establish_ind);
+ − EXTERN void for_mmsms_data_ind (T_MMSMS_DATA_IND *data_ind);
+ − #if defined (GPRS)
+ − EXTERN void for_ll_unitdata_ind (T_LL_UNITDATA_IND *unitdata_ind);
+ − EXTERN void for_ll_unitready_ind (T_LL_UNITREADY_IND *unitready_ind);
+ − EXTERN void cp_gmmsms_reg_state_cnf (T_GMMSMS_REG_STATE_CNF *reg_state_res);
+ − #endif
+ −
+ − /*
+ − * Prototypes Control-Protocol Signals
+ − */
+ − EXTERN void cp_establish_req (UBYTE ti);
+ − EXTERN void cp_abort_req (void);
+ − EXTERN void cp_data_ind_cp_ack (void);
+ − EXTERN void cp_data_ind_cp_data (T_D_CP_DATA *cp_data);
+ − EXTERN void cp_data_ind_cp_error (UBYTE errcs);
+ − EXTERN void cp_data_ind_cp_unknown (void);
+ − EXTERN void cp_data_req (T_U_CP_DATA *cp_data);
+ − EXTERN void cp_est_ind_cp_ack (void);
+ − EXTERN void cp_est_ind_cp_data (T_D_CP_DATA *cp_data);
+ − EXTERN void cp_est_ind_cp_error (UBYTE cp_error);
+ − EXTERN void cp_est_ind_cp_unknown (void);
+ − EXTERN void cp_release_req (UBYTE ti);
+ − #if defined (GPRS)
+ − EXTERN void cp_send_data_gsms (void);
+ − EXTERN void cp_data_req_gsms (T_MMSMS_DATA_REQ *rp_data);
+ − EXTERN void cp_error_req_gsms (UBYTE cause,
+ − BOOL free_ti);
+ − EXTERN void cp_send_getunitdata_req (void);
+ − #endif
+ −
+ −
+ − /*
+ − * Prototypes Control-Protocol Functions
+ − */
+ −
+ − EXTERN void cp_add_pd_ti (UBYTE ti,
+ − T_sdu *sdu);
+ − EXTERN void cp_build_cp_ack (void);
+ − EXTERN void cp_build_cp_error (UBYTE error);
+ − EXTERN void cp_send_release_req (UBYTE ti);
+ −
+ − #if defined (GPRS)
+ − EXTERN void cp_init_ll_unitdata_req (T_LL_UNITDATA_REQ *unitdata_req);
+ − #endif
+ − /*
+ − * If all entities are linked into one module this definitions
+ − * prefixes all this functions with the enity name
+ − */
+ −
+ − /*
+ − * Prototypes Timer
+ − */
+ − EXTERN void sms_timer_start (USHORT id);
+ − EXTERN void sms_timer_stop (USHORT id);
+ − EXTERN BOOL sms_timer_check (USHORT id);
+ − /*
+ − * If all entities are linked into one module this definitions
+ − * prefixes all this functions with the enity name
+ − */
+ − #ifdef OPTION_MULTITHREAD
+ − #define tim_exec_timeout _ENTITY_PREFIXED(tim_exec_timeout)
+ − #define tim_start_timer _ENTITY_PREFIXED(tim_start_timer)
+ − #define tim_stop_timer _ENTITY_PREFIXED(tim_stop_timer)
+ − #endif /* #ifdef OPTION_MULTITHREAD */
+ − EXTERN void tim_exec_timeout (USHORT index);
+ − EXTERN void tim_start_timer (USHORT index, T_TIME value);
+ − EXTERN void tim_stop_timer (USHORT index);
+ −
+ − EXTERN void tim_tc1m (void);
+ − EXTERN void tim_tr1m (void);
+ − EXTERN void tim_tr2m (void);
+ − EXTERN void tim_tram (void);
+ − EXTERN void tim_tlct (void);
+ − EXTERN void tim_tmms (void);
+ −
+ − /*
+ − * SMS primitives Engineering Mode
+ − * Bitmask for the event tracing
+ − */
+ −
+ − /*
+ − * Prototypes Customer Specific Functions
+ − */
+ −
+ − EXTERN UBYTE csf_get_new_mo_ti();
+ − EXTERN T_SMS_DATA *csf_get_sms_instance (UBYTE ti);
+ − EXTERN T_SMS_DATA *csf_get_new_sms_instance (UBYTE ti);
+ − EXTERN void csf_free_sms_instance (UBYTE ti);
+ −
+ − #define TIMERSTART(i,v) tim_start_timer (i, v);
+ − #define TIMERSTOP(i) tim_stop_timer (i);
+ −
+ − /*
+ − * If all entities are linked into one module this definitions
+ − * prefixes the global data with the enity name
+ − */
+ − #ifdef OPTION_MULTITHREAD
+ − #ifdef TI_PS_HCOMM_CHANGE
+ − #else
+ − #define hCommMMI _ENTITY_PREFIXED(hCommMMI)
+ − #define hCommMM _ENTITY_PREFIXED(hCommMM)
+ − #define hCommSIM _ENTITY_PREFIXED(hCommSIM)
+ − #endif /* TI_PS_HCOMM_CHANGE */
+ − #ifdef GPRS
+ − #define hCommLLC _ENTITY_PREFIXED(hCommLLC)
+ − #define hCommGMM _ENTITY_PREFIXED(hCommGMM)
+ − #endif /* GPRS */
+ −
+ − #define _decodedMsg _ENTITY_PREFIXED(_decodedMsg)
+ − #define _CCDbuf _ENTITY_PREFIXED(_CCDBuf)
+ − #define data_base _ENTITY_PREFIXED(data_base)
+ − #endif /* #ifdef OPTION_MULTITHREAD */
+ − #ifdef TI_PS_HCOMM_CHANGE
+ − #else
+ − EXTERN T_HANDLE hCommMMI; /* MMI Communication */
+ − EXTERN T_HANDLE hCommSIM; /* SIM Communication */
+ − EXTERN T_HANDLE hCommMM; /* MM Communication */
+ − #endif /* TI_PS_HCOMM_CHANGE */
+ − #ifdef GPRS
+ − EXTERN T_HANDLE hCommLLC; /* LLC Communication */
+ − EXTERN T_HANDLE hCommGMM; /* GMM Communication */
+ − #endif /* GPRS */
+ − EXTERN T_HANDLE sms_handle;
+ −
+ − #ifndef SHARED_CCD_BUF
+ − #define CCD_START
+ − #define CCD_END
+ − EXTERN UBYTE _decodedMsg [];
+ − #else
+ − EXTERN UBYTE * _decodedMsg;
+ − EXTERN UBYTE _CCDbuf;
+ − #define CCD_START if(!_CCDbuf){_decodedMsg = ccd_begin();_CCDbuf=TRUE;}
+ − #define CCD_END if(_CCDbuf){ccd_end();_CCDbuf=FALSE;}
+ − #endif /* else, #ifndef SHARED_CCD_BUF */
+ −
+ − EXTERN T_SMS_DATA data_base;
+ −
+ − #define GET_INSTANCE(p) &data_base
+ −
+ − #define GET_INSTANCE_DATA register T_SMS_DATA *sms_data= &data_base
+ −
+ − #if !defined(NTRACE) && !defined(NCONFIG)
+ − /*
+ − * If all entities are linked into one module this definitions
+ − * prefixes the global data with the entity name
+ − */
+ − #ifdef OPTION_MULTITHREAD
+ − #define partab _ENTITY_PREFIXED(partab)
+ − #endif /* #ifdef OPTION_MULTITHREAD */
+ −
+ − EXTERN const KW_DATA partab[];
+ − #endif /* #if !defined(NTRACE) && !defined(NCONFIG) */
+ −
+ − /* Implements Measure#32: Row 84, 96, 87, 89, 95, 97, 104, 109 & 113 */
+ − EXTERN const char * const ef_sms_id;
+ −
+ − #define SMS_INST_TC1M ((USHORT)(TC1M*MAX_SMS_CALLS+sms_data->inst))
+ − #define SMS_INST_TR1M ((USHORT)(TR1M*MAX_SMS_CALLS+sms_data->inst))
+ − #define SMS_INST_TR2M ((USHORT)(TR2M*MAX_SMS_CALLS+sms_data->inst))
+ − #define SMS_INST_TRAM ((USHORT)(TRAM*MAX_SMS_CALLS+sms_data->inst))
+ − #define SMS_INST_TLCT ((USHORT)(TLCT*MAX_SMS_CALLS+sms_data->inst))
+ −
+ − #endif /* #ifndef SMS_H */