FreeCalypso > hg > fc-tourmaline
diff src/g23m-gsm/ss/ss.h @ 1:fa8dc04885d8
src/g23m-*: import from Magnetite
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Fri, 16 Oct 2020 06:25:50 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/g23m-gsm/ss/ss.h Fri Oct 16 06:25:50 2020 +0000 @@ -0,0 +1,214 @@ +/* ++----------------------------------------------------------------------------- +| Project : GSM-PS (6147) +| Modul : 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 Entity +| Supplementary Services. ++----------------------------------------------------------------------------- +*/ + +#ifndef SS_H +#define SS_H + +#include <stdlib.h> +#include <stdio.h> +#if defined (TI_PS_HCOMM_CHANGE) +#include "cl_hComm_handle.h" +#endif +/* + * Definition whether a shared CCD buffer shall be used + */ +#define SHARED_CCD_BUF + +/* #define SS_TEST */ /* set for T() debug outputs */ + +#define ENCODE_OFFSET 24 +#define PD_SS 11 + +#ifdef SS_TEST +#define T(f,v) sprintf ((char*)trc, f, v); TRACE_FUNCTION ((char*)trc) +#else +#define T(f,v) ; +#endif + +/* + * Macros (common for SS and CC) + */ + +#define GET_SS_STATE(s,t) ((s>>(2*t)) & 0x03) +#define SET_SS_STATE(s,t,STATE) (s=(s & (~(((ULONG)0x03)<<(2*t)))) |(STATE<<(2*t))) + + +#ifdef FRAME_OFFSET_ZERO + +#define GET_PD(s,p) p = s.buf[3] & 0x0F +#define GET_TI(s,t) t = (s.buf[3] & 0xF0) >> 4 +#define SET_PD(s,p) s.buf[3] = (s.buf[3] & 0xF0) + p +#define SET_TI(s,t) s.buf[3] = (s.buf[3] & 0x0F) + (t << 4) + +#else + +#define GET_PD(s,p) ccd_decodeByte(s.buf, (USHORT)(s.o_buf + 4), 4, &p) +#define GET_TI(s,t) ccd_decodeByte(s.buf, s.o_buf, 4, &t) +#define SET_PD(s,p) ccd_codeByte(s.buf, (USHORT)(s.o_buf - 4), 4, p) +#define SET_TI(s,t) ccd_codeByte(s.buf, (USHORT)(s.o_buf - 8), 4, t) + +#endif + +/* + * States of the Suppl. Services + */ +#define SS_IDLE 0 +#define SS_CONNECTION_PENDING 1 +#define SS_CONNECTED 2 + +/* + * limits + */ +#define MAX_INST 16 +#define MAX_SIZE_SS_MESSAGE 256 + +/* + * Length of uplink messages + * These are comprised of the minimum 'safe' air i/f message length + * according to the SS message catalogue + */ +#define LEN_U_SS_REGISTER (7*8) +#define LEN_U_SS_RELEASE_COMPLETE (7*8) +#define LEN_U_SS_FACILITY (7*8) + + + + +/*==== TYPES ======================================================*/ + +typedef struct +{ + BOOL est_flag; + + UBYTE pd; + ULONG ss_state; + T_PRIM * prim [MAX_INST]; + UBYTE ti; + UINT error; +} T_SS_DATA; + +EXTERN T_SS_DATA ss_data_base; +#define GET_INSTANCE_DATA register T_SS_DATA * ss_data = &ss_data_base + +/*==== EXPORT =====================================================*/ + + +/* + * Prototypes Customer Specific Functions + */ + +/* + * Prototypes SS + */ + + +/* + * SS Suppl. Services + */ + +/* + * suppl. services primitives + */ + +EXTERN void ss_init_ss_data (void); +EXTERN void ss_mmss_error_ind (T_MMSS_ERROR_IND *mmss_error_ind); +EXTERN void ss_mmss_establish_cnf (T_MMSS_ESTABLISH_CNF*mmss_establish_cnf); +EXTERN void ss_mmss_release_ind (T_MMSS_RELEASE_IND *mmss_release_ind); +EXTERN void ss_mnss_begin_req (T_MNSS_BEGIN_REQ *mnss_begin_req); +EXTERN void ss_mnss_end_req (T_MNSS_END_REQ *mnss_end_req); +EXTERN void ss_mnss_facility_req (T_MNSS_FACILITY_REQ *mnss_facility_req); + + + +/* + * suppl. services signalling + */ +EXTERN void ss_b_ss_rel_comp (void); +EXTERN void ss_d_ss_facility (void); +EXTERN void ss_d_ss_register (void); + +/* + * suppl. services procedures + */ +EXTERN void ss_init (void); +EXTERN void send_rel_comp (U8 cause); + +EXTERN BOOL ss_check_critical_error(UINT ccd_err); +/* + * Formatter + */ + +/* + * formatter primitives + */ +EXTERN void for_init_ss_data (void); +EXTERN void for_mmss_establish_ind (T_MMSS_ESTABLISH_IND *mmss_establish_ind); +EXTERN void for_mmss_data_ind (T_MMSS_DATA_IND *mmss_data_ind); + +/* + * formatter signalling + */ +EXTERN void ss_for_data_req (USHORT bit_size_message); + + +/* + * If all entities are linked into one module this definitions + * prefixes the global data with the enity name + */ +#if defined (TI_PS_HCOMM_CHANGE) +#if defined (NEW_FRAME) +EXTERN T_HANDLE ss_handle; +#endif +#else /* (TI_PS_HCOMM_CHANGE) */ +#ifdef OPTION_MULTITHREAD + #define hCommMM _ENTITY_PREFIXED(hCommMM) + #define hCommMMI _ENTITY_PREFIXED(hCommMMI) +#endif +#if defined (NEW_FRAME) +EXTERN T_HANDLE hCommMMI; /* MM Communication */ +EXTERN T_HANDLE hCommMM; /* MM Communication */ +EXTERN T_HANDLE ss_handle; +#else +EXTERN T_VSI_CHANDLE hCommMMI; /* MM Communication */ +EXTERN T_VSI_CHANDLE hCommMM; /* MM Communication */ +#endif +#endif /* (TI_PS_HCOMM_CHANGE) */ +/* + * If all entities are linked into one module this definitions + * prefixes the global data with the enity name + */ +#ifdef OPTION_MULTITHREAD + #define _decodedMsg _ENTITY_PREFIXED(_decodedMsg) +#endif + +#if !defined SHARED_CCD_BUF +#define CCD_START +#define CCD_END +EXTERN UBYTE _decodedMsg []; +#else +EXTERN UBYTE * _decodedMsg; +#define CCD_START _decodedMsg = ccd_begin(); +#define CCD_END ccd_end(); +#endif + + + +#endif