FreeCalypso > hg > fc-magnetite
diff src/g23m-gprs/upm/upm_sndcp_output_handler.c @ 197:2cf312e56ee7
src/g23m-gprs/upm: import from LoCosto source
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Fri, 14 Oct 2016 01:21:46 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/g23m-gprs/upm/upm_sndcp_output_handler.c Fri Oct 14 01:21:46 2016 +0000 @@ -0,0 +1,217 @@ +/*---------------------------------------------------------------------------- +| 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: Output functions for primitives from UPM to the MM entity. +| For design details, see: +| 8010.939 UPM Detailed Specification ++---------------------------------------------------------------------------*/ + +/*==== DECLARATION CONTROL =================================================*/ + +/*==== INCLUDES ============================================================*/ + +#include "upm.h" + +#include "upm_sndcp_output_handler.h" +#include "upm_mm_output_handler.h" +#ifndef UPM_WITHOUT_USER_PLANE +#include "upm_dti_output_handler.h" +#endif /* UPM_WITHOUT_USER_PLANE */ + +/*==== CONSTS ===============================================================*/ + +/*==== TYPES ================================================================*/ + +/*==== LOCALS ===============================================================*/ + +/*==== PUBLIC FUNCTIONS =====================================================*/ + +/* ++------------------------------------------------------------------------------ +| Function : send_sn_activate_req ++------------------------------------------------------------------------------ +| Description : Allocate, pack and send SN_ACTIVATE_REQ primitive. +| +| Parameters : ptr_context_data - context data +| active - active/passive establishment flag to SNDCP ++------------------------------------------------------------------------------ +*/ +void send_sn_activate_req(struct T_CONTEXT_DATA *ptr_context_data, + T_NAS_comp_params *comp_params, BOOL active) +{ + (void)TRACE_FUNCTION("send_sn_activate_req"); + + { + struct T_UPM_CONTEXT_DATA_GPRS *gprs_data = &ptr_context_data->gprs_data; + PALLOC(prim, SN_ACTIVATE_REQ); + +/*lint -e613 (Possible use of null pointer 'prim' in left argument to operator '->') */ + prim->nsapi = ptr_context_data->nsapi; + prim->sapi = gprs_data->sndcp_llc_sapi; + prim->radio_prio = gprs_data->sndcp_radio_prio; + prim->snsm_qos.delay = gprs_data->sndcp_delay; + prim->snsm_qos.relclass = gprs_data->sndcp_relclass; + prim->snsm_qos.peak = gprs_data->sndcp_peak_bitrate; + prim->snsm_qos.preced = gprs_data->sndcp_preced; + prim->snsm_qos.mean = gprs_data->sndcp_mean; + + prim->establish = (active ? (U8)SN_ACTIVE_ESTABLISHMENT : + (U8)SN_PASSIVE_ESTABLISHMENT); + if (comp_params != NULL) + { + memcpy(&prim->comp_params, comp_params, sizeof(T_NAS_comp_params)); + } else { + memset(&prim->comp_params, 0, sizeof(T_NAS_comp_params)); + } + prim->pkt_flow_id = (U16)gprs_data->pkt_flow_id; +/*lint +e613 (Possible use of null pointer 'prim' in left argument to operator '->') */ + (void)PSEND(hCommSNDCP, prim); + } +} + +/* ++------------------------------------------------------------------------------ +| Function : send_sn_count_req ++------------------------------------------------------------------------------ +| Description : Allocate, pack and send SN_COUNT_REQ primitive. +| +| Parameters : nsapi - NSAPI +| reset - Reset indicator ++------------------------------------------------------------------------------ +*/ +void send_sn_count_req(U8 nsapi, U8 reset) +{ + (void)TRACE_FUNCTION("send_sn_count_req"); + + { + PALLOC(prim, SN_COUNT_REQ); +/*lint -e613 (Possible use of null pointer 'prim' in left argument to operator '->') */ + prim->nsapi = nsapi; + prim->reset = reset; + +/*lint +e613 (Possible use of null pointer 'prim' in left argument to operator '->') */ + (void)PSEND(hCommSNDCP, prim); + } +} + +/* ++------------------------------------------------------------------------------ +| Function : send_sn_deactivate_req ++------------------------------------------------------------------------------ +| Description : Allocate, pack and send SN_DEACTIVATE_REQ primitive. +| +| Parameters : nsapi - NSAPI to deactivate +| rel_ind - local release indicator for SNDCP ++------------------------------------------------------------------------------ +*/ +void send_sn_deactivate_req(U8 nsapi, U8 rel_ind) +{ + (void)TRACE_FUNCTION("send_sn_deactivate_req"); + + { + PALLOC(prim, SN_DEACTIVATE_REQ); +/*lint -e613 (Possible use of null pointer 'prim' in left argument to operator '->') */ + prim->nsapi = nsapi; + prim->rel_ind = rel_ind; +/*lint +e613 (Possible use of null pointer 'prim' in left argument to operator '->') */ + (void)PSEND(hCommSNDCP, prim); + } +} + +/* ++------------------------------------------------------------------------------ +| Function : send_sn_modify_req ++------------------------------------------------------------------------------ +| Description : Allocate, pack and send SN_MODIFY_REQ primitive. +| +| Parameters : ptr_context_data - context data ++------------------------------------------------------------------------------ +*/ +void send_sn_modify_req(struct T_CONTEXT_DATA *ptr_context_data) +{ + (void)TRACE_FUNCTION("send_sn_modify_req"); + + { + struct T_UPM_CONTEXT_DATA_GPRS *gprs_data = &ptr_context_data->gprs_data; + PALLOC(prim, SN_MODIFY_REQ); + +/*lint -e613 (Possible use of null pointer 'prim' in left argument to operator '->') */ + prim->nsapi = ptr_context_data->nsapi; + prim->sapi = gprs_data->sndcp_llc_sapi; + prim->radio_prio = gprs_data->sndcp_radio_prio; + prim->snsm_qos.delay = gprs_data->sndcp_delay; + prim->snsm_qos.relclass = gprs_data->sndcp_relclass; + prim->snsm_qos.peak = gprs_data->sndcp_peak_bitrate; + prim->snsm_qos.preced = gprs_data->sndcp_preced; + prim->snsm_qos.mean = gprs_data->sndcp_mean; + prim->pkt_flow_id = (U16)gprs_data->pkt_flow_id; +/*lint +e613 (Possible use of null pointer 'prim' in left argument to operator '->') */ + (void)PSEND(hCommSNDCP, prim); + } +} + +/* ++------------------------------------------------------------------------------ +| Function : send_sn_sequence_req ++------------------------------------------------------------------------------ +| Description : Allocate, pack and send SN_SEQUENCE_REQ primitive. +| +| Parameters : mmpm_sequence_ind - MMPM primitive containing sequence numbers ++------------------------------------------------------------------------------ +*/ +void send_sn_sequence_req(T_MMPM_SEQUENCE_IND *mmpm_sequence_ind) +{ + U16 index; + (void)TRACE_FUNCTION("send_sn_sequence_req"); + + { + PALLOC(prim, SN_SEQUENCE_REQ); +/*lint -e613 (Possible use of null pointer 'prim' in left argument to operator '->') */ + prim->c_receive_no_list = mmpm_sequence_ind->c_npdu_list; + + for (index = 0; index < (U16)mmpm_sequence_ind->c_npdu_list; index++) + { + prim->receive_no_list[index].nsapi = mmpm_sequence_ind->npdu_list[index].nsapi; + prim->receive_no_list[index].receive_no = mmpm_sequence_ind->npdu_list[index].receive_n_pdu_number_val; + } +/*lint +e613 (Possible use of null pointer 'prim' in left argument to operator '->') */ + (void)PSEND(hCommSNDCP, prim); + } +} + +/* ++------------------------------------------------------------------------------ +| Function : send_sn_get_pending_pdu_req ++------------------------------------------------------------------------------ +| Description : Allocate, pack and send SN_GET_PENDING_PDU_REQ primitive. +| +| Parameters : None ++------------------------------------------------------------------------------ +*/ +#ifdef TI_DUAL_MODE +void send_sn_get_pending_pdu_req(void) +{ + (void)TRACE_FUNCTION("send_sn_get_pending_pdu_req"); + + { + PALLOC(prim, SN_GET_PENDING_PDU_REQ); + +/*lint +e613 (Possible use of null pointer 'prim' in left argument to operator '->') */ + (void)PSEND(hCommSNDCP, prim); + } +} +#endif /* TI_DUAL_MODE */ + +/*==== END OF FILE ==========================================================*/