comparison src/g23m-gprs/upm/upm_sndcp_output_handler.c @ 1:fa8dc04885d8

src/g23m-*: import from Magnetite
author Mychaela Falconia <falcon@freecalypso.org>
date Fri, 16 Oct 2020 06:25:50 +0000
parents
children
comparison
equal deleted inserted replaced
0:4e78acac3d88 1:fa8dc04885d8
1 /*----------------------------------------------------------------------------
2 | Project : 3G PS
3 | Module : UPM
4 +-----------------------------------------------------------------------------
5 | Copyright 2003 Texas Instruments.
6 | All rights reserved.
7 |
8 | This file is confidential and a trade secret of Texas
9 | Instruments .
10 | The receipt of or possession of this file does not convey
11 | any rights to reproduce or disclose its contents or to
12 | manufacture, use, or sell anything it may describe, in
13 | whole, or in part, without the specific written consent of
14 | Texas Instruments.
15 +-----------------------------------------------------------------------------
16 | Purpose: Output functions for primitives from UPM to the MM entity.
17 | For design details, see:
18 | 8010.939 UPM Detailed Specification
19 +---------------------------------------------------------------------------*/
20
21 /*==== DECLARATION CONTROL =================================================*/
22
23 /*==== INCLUDES ============================================================*/
24
25 #include "upm.h"
26
27 #include "upm_sndcp_output_handler.h"
28 #include "upm_mm_output_handler.h"
29 #ifndef UPM_WITHOUT_USER_PLANE
30 #include "upm_dti_output_handler.h"
31 #endif /* UPM_WITHOUT_USER_PLANE */
32
33 /*==== CONSTS ===============================================================*/
34
35 /*==== TYPES ================================================================*/
36
37 /*==== LOCALS ===============================================================*/
38
39 /*==== PUBLIC FUNCTIONS =====================================================*/
40
41 /*
42 +------------------------------------------------------------------------------
43 | Function : send_sn_activate_req
44 +------------------------------------------------------------------------------
45 | Description : Allocate, pack and send SN_ACTIVATE_REQ primitive.
46 |
47 | Parameters : ptr_context_data - context data
48 | active - active/passive establishment flag to SNDCP
49 +------------------------------------------------------------------------------
50 */
51 void send_sn_activate_req(struct T_CONTEXT_DATA *ptr_context_data,
52 T_NAS_comp_params *comp_params, BOOL active)
53 {
54 (void)TRACE_FUNCTION("send_sn_activate_req");
55
56 {
57 struct T_UPM_CONTEXT_DATA_GPRS *gprs_data = &ptr_context_data->gprs_data;
58 PALLOC(prim, SN_ACTIVATE_REQ);
59
60 /*lint -e613 (Possible use of null pointer 'prim' in left argument to operator '->') */
61 prim->nsapi = ptr_context_data->nsapi;
62 prim->sapi = gprs_data->sndcp_llc_sapi;
63 prim->radio_prio = gprs_data->sndcp_radio_prio;
64 prim->snsm_qos.delay = gprs_data->sndcp_delay;
65 prim->snsm_qos.relclass = gprs_data->sndcp_relclass;
66 prim->snsm_qos.peak = gprs_data->sndcp_peak_bitrate;
67 prim->snsm_qos.preced = gprs_data->sndcp_preced;
68 prim->snsm_qos.mean = gprs_data->sndcp_mean;
69
70 prim->establish = (active ? (U8)SN_ACTIVE_ESTABLISHMENT :
71 (U8)SN_PASSIVE_ESTABLISHMENT);
72 if (comp_params != NULL)
73 {
74 memcpy(&prim->comp_params, comp_params, sizeof(T_NAS_comp_params));
75 } else {
76 memset(&prim->comp_params, 0, sizeof(T_NAS_comp_params));
77 }
78 prim->pkt_flow_id = (U16)gprs_data->pkt_flow_id;
79 /*lint +e613 (Possible use of null pointer 'prim' in left argument to operator '->') */
80 (void)PSEND(hCommSNDCP, prim);
81 }
82 }
83
84 /*
85 +------------------------------------------------------------------------------
86 | Function : send_sn_count_req
87 +------------------------------------------------------------------------------
88 | Description : Allocate, pack and send SN_COUNT_REQ primitive.
89 |
90 | Parameters : nsapi - NSAPI
91 | reset - Reset indicator
92 +------------------------------------------------------------------------------
93 */
94 void send_sn_count_req(U8 nsapi, U8 reset)
95 {
96 (void)TRACE_FUNCTION("send_sn_count_req");
97
98 {
99 PALLOC(prim, SN_COUNT_REQ);
100 /*lint -e613 (Possible use of null pointer 'prim' in left argument to operator '->') */
101 prim->nsapi = nsapi;
102 prim->reset = reset;
103
104 /*lint +e613 (Possible use of null pointer 'prim' in left argument to operator '->') */
105 (void)PSEND(hCommSNDCP, prim);
106 }
107 }
108
109 /*
110 +------------------------------------------------------------------------------
111 | Function : send_sn_deactivate_req
112 +------------------------------------------------------------------------------
113 | Description : Allocate, pack and send SN_DEACTIVATE_REQ primitive.
114 |
115 | Parameters : nsapi - NSAPI to deactivate
116 | rel_ind - local release indicator for SNDCP
117 +------------------------------------------------------------------------------
118 */
119 void send_sn_deactivate_req(U8 nsapi, U8 rel_ind)
120 {
121 (void)TRACE_FUNCTION("send_sn_deactivate_req");
122
123 {
124 PALLOC(prim, SN_DEACTIVATE_REQ);
125 /*lint -e613 (Possible use of null pointer 'prim' in left argument to operator '->') */
126 prim->nsapi = nsapi;
127 prim->rel_ind = rel_ind;
128 /*lint +e613 (Possible use of null pointer 'prim' in left argument to operator '->') */
129 (void)PSEND(hCommSNDCP, prim);
130 }
131 }
132
133 /*
134 +------------------------------------------------------------------------------
135 | Function : send_sn_modify_req
136 +------------------------------------------------------------------------------
137 | Description : Allocate, pack and send SN_MODIFY_REQ primitive.
138 |
139 | Parameters : ptr_context_data - context data
140 +------------------------------------------------------------------------------
141 */
142 void send_sn_modify_req(struct T_CONTEXT_DATA *ptr_context_data)
143 {
144 (void)TRACE_FUNCTION("send_sn_modify_req");
145
146 {
147 struct T_UPM_CONTEXT_DATA_GPRS *gprs_data = &ptr_context_data->gprs_data;
148 PALLOC(prim, SN_MODIFY_REQ);
149
150 /*lint -e613 (Possible use of null pointer 'prim' in left argument to operator '->') */
151 prim->nsapi = ptr_context_data->nsapi;
152 prim->sapi = gprs_data->sndcp_llc_sapi;
153 prim->radio_prio = gprs_data->sndcp_radio_prio;
154 prim->snsm_qos.delay = gprs_data->sndcp_delay;
155 prim->snsm_qos.relclass = gprs_data->sndcp_relclass;
156 prim->snsm_qos.peak = gprs_data->sndcp_peak_bitrate;
157 prim->snsm_qos.preced = gprs_data->sndcp_preced;
158 prim->snsm_qos.mean = gprs_data->sndcp_mean;
159 prim->pkt_flow_id = (U16)gprs_data->pkt_flow_id;
160 /*lint +e613 (Possible use of null pointer 'prim' in left argument to operator '->') */
161 (void)PSEND(hCommSNDCP, prim);
162 }
163 }
164
165 /*
166 +------------------------------------------------------------------------------
167 | Function : send_sn_sequence_req
168 +------------------------------------------------------------------------------
169 | Description : Allocate, pack and send SN_SEQUENCE_REQ primitive.
170 |
171 | Parameters : mmpm_sequence_ind - MMPM primitive containing sequence numbers
172 +------------------------------------------------------------------------------
173 */
174 void send_sn_sequence_req(T_MMPM_SEQUENCE_IND *mmpm_sequence_ind)
175 {
176 U16 index;
177 (void)TRACE_FUNCTION("send_sn_sequence_req");
178
179 {
180 PALLOC(prim, SN_SEQUENCE_REQ);
181 /*lint -e613 (Possible use of null pointer 'prim' in left argument to operator '->') */
182 prim->c_receive_no_list = mmpm_sequence_ind->c_npdu_list;
183
184 for (index = 0; index < (U16)mmpm_sequence_ind->c_npdu_list; index++)
185 {
186 prim->receive_no_list[index].nsapi = mmpm_sequence_ind->npdu_list[index].nsapi;
187 prim->receive_no_list[index].receive_no = mmpm_sequence_ind->npdu_list[index].receive_n_pdu_number_val;
188 }
189 /*lint +e613 (Possible use of null pointer 'prim' in left argument to operator '->') */
190 (void)PSEND(hCommSNDCP, prim);
191 }
192 }
193
194 /*
195 +------------------------------------------------------------------------------
196 | Function : send_sn_get_pending_pdu_req
197 +------------------------------------------------------------------------------
198 | Description : Allocate, pack and send SN_GET_PENDING_PDU_REQ primitive.
199 |
200 | Parameters : None
201 +------------------------------------------------------------------------------
202 */
203 #ifdef TI_DUAL_MODE
204 void send_sn_get_pending_pdu_req(void)
205 {
206 (void)TRACE_FUNCTION("send_sn_get_pending_pdu_req");
207
208 {
209 PALLOC(prim, SN_GET_PENDING_PDU_REQ);
210
211 /*lint +e613 (Possible use of null pointer 'prim' in left argument to operator '->') */
212 (void)PSEND(hCommSNDCP, prim);
213 }
214 }
215 #endif /* TI_DUAL_MODE */
216
217 /*==== END OF FILE ==========================================================*/