FreeCalypso > hg > fc-magnetite
view src/g23m-gprs/upm/upm.h @ 478:5e39123540e6
hybrid fw: Openmoko-mimicking AT@BAND command implemented
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Thu, 14 Jun 2018 06:04:54 +0000 |
parents | 2cf312e56ee7 |
children |
line wrap: on
line source
/*---------------------------------------------------------------------------- | Project : 3G PS | Module : UPM +----------------------------------------------------------------------------- | Copyright 2003 Texas Instruments. | All rights reserved. | | This file is confidential and a trade secret of Texas | Instruments . | 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. +----------------------------------------------------------------------------- | Purpose: Global definitions for the User Plane Manager (UPM) Entity. | For design details, see: | 8010.939 UPM Detailed Specification +---------------------------------------------------------------------------*/ /*==== DECLARATION CONTROL =================================================*/ #ifndef _UPM_H #define _UPM_H /*#ifdef FF_EGPRS #ifndef UPM_EDGE #define UPM_EDGE #endif */ /*#ifndef UPM_EDGE*/ /*#endif */ /*#ifdef FF_EGPRS*/ /*#ifdef UPM_EDGE */ #define ENTITY_UPM /*#endif */ #ifdef WIN32 #define DEBUG #endif /*==== INCLUDES =============================================================*/ #include <string.h> #include <typedefs.h> #include <vsi.h> #include <gsm.h> #include <gprs.h> #include <prim.h> /*#ifndef UPM_EDGE #include <trace.h> #endif *//*#ifndef UPM_EDGE*/ #ifndef UPM_WITHOUT_USER_PLANE #include <dti.h> #endif /* UPM_WITHOUT_USER_PLANE */ struct T_CONTEXT_DATA; typedef U32 T_MEM_HANDLE; #include "upm_debug.h" #ifndef UPM_WITHOUT_USER_PLANE #include "upm_dti_control.h" #include "upm_uplink_data_control.h" #include "upm_uplink_data_suspend.h" #include "upm_downlink_data_control.h" #endif /* UPM_WITHOUT_USER_PLANE */ #include "upm_link_control.h" #ifdef TI_UMTS #include "upm_rab_control.h" #endif /* TI_UMTS */ #ifdef TI_GPRS #include "upm_sndcp_control.h" #endif /* TI_GPRS */ #ifdef TI_DUAL_MODE #include "upm_rat_control.h" #endif /* TI_DUAL_MODE */ /*==== CONSTS ===============================================================*/ #define UPM_UPLINK_DATA_BUFFER_SIZE 16 #define UPM_DOWNLINK_DATA_BUFFER_SIZE 16 #define UPM_DTI_QUEUE_SIZE 1 #define UPM_MAX_NSAPI_OFFSET (NAS_SIZE_NSAPI - (int)NAS_NSAPI_5) /*==== TYPES ================================================================*/ #ifndef UPM_WITHOUT_USER_PLANE struct T_UPM_desc_list_entry { /*@null@*/ struct T_UPM_desc_list_entry *next; T_desc2 *desc; }; /*@abstract@*/ struct T_UPM_USER_PLANE_DATA { T_UPM_DTI_UPPER_CONTROL_STATE dti_upper_control_state; #ifdef TI_GPRS T_UPM_DTI_LOWER_CONTROL_STATE dti_lower_control_state; #endif /* TI_GPRS */ T_UPM_UPLINK_DATA_CONTROL_STATE ul_data_state; T_UPM_UPLINK_DATA_SUSPEND_STATE ul_data_suspend_state; T_UPM_DOWNLINK_DATA_CONTROL_STATE dl_data_state; U8 dti_flags[UPM_DTI_NUMBER_OF_INTERFACES]; U16 ul_data_buffer_count; U16 dl_data_buffer_count; U32 ul_data_octets_transferred; U32 ul_data_packets_transferred; U32 dl_data_octets_transferred; U32 dl_data_packets_transferred; U32 ul_data_packets_dropped; U32 dl_data_packets_dropped; /*@null@*/ /*@only@*/ /*@reldef@*/ struct T_UPM_desc_list_entry *ul_data_buffer; /*@null@*/ /*@only@*/ /*@reldef@*/ T_MEM_HANDLE *dl_data_buffer; }; #endif /* UPM_WITHOUT_USER_PLANE */ #ifdef TI_GPRS /*@abstract@*/ struct T_UPM_CONTEXT_DATA_GPRS { U8 sndcp_delay; /* R97 QoS */ U8 sndcp_relclass; /* R97 QoS */ U8 sndcp_peak_bitrate; /* R97 QoS */ U8 sndcp_preced; /* R97 QoS */ U8 sndcp_mean; /* R97 QoS */ U8 pkt_flow_id; /* EDGE */ U8 sndcp_radio_prio; U8 sndcp_llc_sapi; }; #endif /* TI_GPRS */ /*@abstract@*/ struct T_CONTEXT_DATA { U8 nsapi; U8 seq_nos_valid; U8 recv_seq_no; U8 send_seq_no; T_UPM_LINK_CONTROL_STATE link_control_state; #ifdef TI_UMTS T_UPM_RAB_CONTROL_STATE rab_control_state; #endif /* TI_UMTS */ #ifdef TI_GPRS T_UPM_SNDCP_CONTROL_STATE sndcp_control_state; #endif /* TI_GPRS */ #ifdef TI_UMTS U8 rab_qos_tc; U8 mem_user; U16 mem_space_before; #endif /* TI_UMTS */ #ifdef TI_GPRS struct T_UPM_CONTEXT_DATA_GPRS gprs_data; #endif /* TI_GPRS */ #ifndef UPM_WITHOUT_USER_PLANE struct T_UPM_USER_PLANE_DATA up_data; #endif /* UPM_WITHOUT_USER_PLANE */ }; typedef struct { #ifdef TI_DUAL_MODE T_UPM_RAT_CONTROL_STATE rat_control_state; T_PS_rat upm_rat; #endif /* TI_DUAL_MODE */ BOOL upm_ll_entity_test; /* Communication handles */ T_HANDLE hCommACI; T_HANDLE hCommSM; T_HANDLE hCommMM; T_HANDLE upm_handle; #ifdef TI_UMTS T_HANDLE hCommPDCP; T_HANDLE hCommRRC; #endif /* TI_UMTS */ #ifdef TI_GPRS T_HANDLE hCommSNDCP; T_HANDLE hCommRR; #endif /* TI_GPRS */ #ifndef UPM_WITHOUT_USER_PLANE DTI_HANDLE upm_hDTI; #endif /* UPM_WITHOUT_USER_PLANE */ /*@only@*/ /*@reldef@*/ struct T_CONTEXT_DATA *upm_context_array[UPM_MAX_NSAPI_OFFSET]; } T_UPM_DATA; #ifdef DEBUG #define M_TRANSITION(_EVENT, _FUNC) {_EVENT, _FUNC} #else /* WIN32 */ #define M_TRANSITION(_EVENT, _FUNC) {_FUNC} #endif /* WIN32 */ /*==== EXPORTS ==============================================================*/ extern T_UPM_DATA upm_data; void upm_pfree(/*@null@*/ /*@only@*/ /*@out@*/void *data); void upm_mfree(/*@null@*/ /*@only@*/ /*@out@*/void *data); U16 upm_nsapi2nsapi_set(int /*@alt U8@*/ nsapi) /*@*/; /*@null@*/ /*@exposed@*/ struct T_CONTEXT_DATA *upm_get_context_data_from_nsapi(int /*@alt U8@*/ nsapi); void upm_assign_context_data_to_nsapi(/*@keep@*/ struct T_CONTEXT_DATA *, int /*@alt U8@*/ nsapi); void upm_free_context_data(int /*@alt U8@*/ nsapi); void upm_check_for_released_context_and_release(struct T_CONTEXT_DATA *); BOOL upm_ll_entity_test(void); void upm_activate_ll_entity_test(void) /*@modifies upm_data.upm_ll_entity_test@*/; #ifdef TI_DUAL_MODE T_PS_rat upm_get_current_rat(void); void upm_set_current_rat(T_PS_rat rat) /*@modifies upm_data.upm_rat@*/; #endif /* TI_DUAL_MODE */ void upm_set_sequence_number(struct T_CONTEXT_DATA *, U8); U8 upm_get_sequence_number(struct T_CONTEXT_DATA *); #define hCommACI upm_data.hCommACI /* Communication handle to ACI */ #define hCommMM upm_data.hCommMM /* Communication handle to MM */ #define hCommSM upm_data.hCommSM /* Communication handle to SM */ #ifdef TI_UMTS #define hCommPDCP upm_data.hCommPDCP /* Communication handle to PDCP */ #define hCommRRC upm_data.hCommRRC /* Communication handle to RRC */ #endif /* TI_UMTS */ #ifdef TI_GPRS #define hCommSNDCP upm_data.hCommSNDCP /* Communication handle to SNDCP */ #define hCommRR upm_data.hCommRR /* Communication handle to RR */ #endif /* TI_GPRS */ #ifndef UPM_WITHOUT_USER_PLANE #define upm_hDTI upm_data.upm_hDTI #endif /* UPM_WITHOUT_USER_PLANE */ #define VSI_CALLER upm_data.upm_handle, #define VSI_CALLER_SINGLE upm_data.upm_handle /* Uniquify pei_create() */ #define pei_create upm_pei_create extern short upm_pei_create (T_PEI_INFO **info) /*@modifies *info, internalState@*/ /*@globals internalState@*/; #endif /* _UPM_H */ /*==== END OF FILE ==========================================================*/