1
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2 +-----------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3 | Project : GSM-F&D (8411)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
4 | Modul : RA_TRA
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
5 +-----------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
6 | Copyright 2002 Texas Instruments Berlin, AG
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
7 | All rights reserved.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
8 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
9 | This file is confidential and a trade secret of Texas
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
10 | Instruments Berlin, AG
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
11 | The receipt of or possession of this file does not convey
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
12 | any rights to reproduce or disclose its contents or to
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
13 | manufacture, use, or sell anything it may describe, in
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
14 | whole, or in part, without the specific written consent of
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
15 | Texas Instruments Berlin, AG.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
16 +-----------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
17 | Purpose : This Modul defines the functions for the transparent
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
18 | data model for the component RA of the mobile station
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
19 +-----------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
20 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
21
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
22 #ifndef RA_L1INT_C
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
23 #define RA_L1INT_C
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
24 #endif
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
25
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
26 #define ENTITY_RA
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
27
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
28 /*==== INCLUDES ===================================================*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
29
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
30 #include <string.h>
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
31 #include "typedefs.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
32 #include "pconst.cdg"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
33 #include "vsi.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
34 #include "macdef.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
35 #include "pconst.cdg"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
36 #include "custom.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
37 #include "gsm.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
38 #include "cnf_ra.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
39 #include "prim.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
40 #include "pei.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
41 #include "tok.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
42 #include "ccdapi.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
43 #include "ra.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
44 #include "ra_l1int.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
45
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
46 /*==== CONST ======================================================*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
47 /*==== TYPES ======================================================*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
48 /*==== VAR EXPORT ==================================================*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
49 /*==== VAR LOCAL ===================================================*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
50 /*==== FUNCTIONS ==================================================*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
51
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
52 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
53 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
54 | PROJECT : GSM-F&D (8411) MODULE : RA_L1INT |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
55 | STATE : code ROUTINE : l1i_ra_activate_req |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
56 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
57
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
58 PURPOSE : Process the primitive RA_ACTIVATE_REQ.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
59 This function performs the TCH synchronisation
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
60 if transparent data services are set up.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
61 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
62
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
63 GLOBAL void l1i_ra_activate_req (T_RA_ACTIVATE_REQ *ra_activate_req)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
64 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
65 TRACE_EVENT ("l1i_ra_activate_req()");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
66
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
67 #ifdef _SIMULATION_
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
68 PACCESS (ra_activate_req);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
69 #else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
70 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
71 * Set ra_handle only for target
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
72 * because RA is not a single task here like on PC simulation.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
73 * Handle is needed for stack check in frame.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
74 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
75 ra_handle = vsi_gettaskhandle(VSI_CALLER L1_NAME);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
76 #endif
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
77
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
78 switch (ra_activate_req->model)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
79 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
80 case RA_MODEL_TRANS:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
81 dll_init ();
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
82 MALLOC(ra_data->tra, sizeof(T_TRA));
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
83
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
84 #ifdef _SIMULATION_
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
85 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
86 Provide frame descriptors of L2R's downlink FIFO
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
87 for the simulation
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
88 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
89 cl_ribu_create(&ra_data->dl_ribu, MAX_TRANS_BUFFER, RA_FIFO_DEPTH);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
90 #endif
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
91
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
92 tra_init (ra_activate_req->tra_rate);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
93 TRACE_EVENT ("RA MODE: Transparent");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
94 ra_data->model = MODEL_TRANS;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
95 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
96
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
97 case RA_MODEL_RLP:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
98 dll_init ();
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
99 MALLOC(ra_data->rlp, sizeof(T_RLP));
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
100 rlp_init ();
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
101 TRACE_EVENT ("RA MODE: Non-Transparent");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
102 ra_data->model = MODEL_RLP;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
103 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
104
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
105 #ifdef FF_FAX
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
106 case RA_MODEL_FAX:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
107 dll_init ();
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
108 MALLOC(ra_data->fax, sizeof(T_FAX));
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
109
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
110 #ifdef _SIMULATION_
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
111 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
112 Provide frame descriptors of FAD's downlink FIFO
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
113 for the simulation
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
114 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
115 cl_ribu_create(&ra_data->dl_ribu, FAD_DESCBUF_LEN, RA_FIFO_DEPTH);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
116 #endif
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
117
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
118 cl_ribu_create(&ra_data->fax->ul_ribu, FAD_DESCBUF_LEN, RA_FIFO_DEPTH);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
119
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
120 fax_init ();
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
121 TRACE_EVENT ("RA MODE: FAX");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
122 ra_data->model = MODEL_FAX;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
123 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
124 #endif /* FF_FAX */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
125
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
126 default:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
127 TRACE_EVENT ("RA MODE: INVALID (SPEECH?)");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
128 #ifdef _SIMULATION_
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
129 PFREE(ra_activate_req);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
130 #endif
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
131 return;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
132 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
133
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
134 ra_data->tra_rate = ra_activate_req->tra_rate;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
135 ra_data->user_rate = ra_activate_req->user_rate;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
136 ra_data->ndb = ra_activate_req->ndb;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
137 ra_data->nsb = ra_activate_req->nsb;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
138 ra_data->activated = TRUE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
139
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
140 #ifdef _SIMULATION_
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
141 PFREE(ra_activate_req);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
142 #endif
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
143 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
144
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
145 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
146 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
147 | PROJECT : GSM-F&D (8411) MODULE : RA_L1INT |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
148 | STATE : code ROUTINE : l1i_ra_datatrans_req |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
149 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
150
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
151 PURPOSE : Process the primitive RA_DATATRANS_REQ.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
152 This function is signalling
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
153 the upper layer is ready to provide frame descriptors
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
154 for downlink data transfer.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
155 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
156 GLOBAL void l1i_ra_datatrans_req (T_RA_DATATRANS_REQ *ra_datatrans_req)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
157 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
158 TRACE_EVENT ("l1i_ra_datatrans_req()");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
159
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
160 #ifdef _SIMULATION_
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
161 PACCESS (ra_datatrans_req);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
162 #endif
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
163
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
164 switch (ra_data->model)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
165 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
166 case MODEL_TRANS:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
167 if (GET_STATE(KER) EQ TRA_DATA_TRANS_PRE2)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
168 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
169 SET_STATE (KER, TRA_DATA_TRANS_PRE3);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
170 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
171 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
172
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
173 #ifdef FF_FAX
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
174 case MODEL_FAX:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
175 if (GET_STATE(KER) EQ FAX_DATA_TRANS_PRE)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
176 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
177 SET_STATE (KER, FAX_DATA_TRANS);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
178 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
179 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
180 #endif /* FF_FAX */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
181
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
182 case MODEL_RLP:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
183 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
184 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
185
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
186 #ifdef _SIMULATION_
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
187 PFREE(ra_datatrans_req);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
188 #endif
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
189 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
190
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
191 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
192 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
193 | PROJECT : GSM-F&D (8411) MODULE : RA_L1INT |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
194 | STATE : code ROUTINE : l1i_ra_activate_cnf |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
195 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
196
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
197 PURPOSE : Send the primitive RA_ACTIVATE_CNF.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
198 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
199
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
200 GLOBAL void l1i_ra_activate_cnf(void)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
201 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
202 TRACE_EVENT ("l1i_ra_activate_cnf()");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
203
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
204 #ifndef _SIMULATION_
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
205
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
206 PSIGNAL(hCommMMI, RA_ACTIVATE_CNF, NULL);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
207
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
208 #else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
209 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
210 PALLOC(ra_activate_cnf, RA_ACTIVATE_CNF);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
211 PSENDX(MMI, ra_activate_cnf);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
212 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
213 #endif
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
214 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
215
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
216 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
217 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
218 | PROJECT : GSM-F&D (8411) MODULE : RA_L1INT |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
219 | STATE : code ROUTINE : l1i_ra_modify_req |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
220 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
221
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
222 PURPOSE : Process the primitive RA_MODIFY_REQ.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
223 This function performs no TCH synchronisation.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
224 Only the communication parameters are changed in the shared memory
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
225 and in case of fax the sequencer is synchronized.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
226 This function is only used in fax mode.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
227 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
228
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
229 GLOBAL void l1i_ra_modify_req (T_RA_MODIFY_REQ *ra_modify_req)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
230 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
231 #ifdef FF_FAX
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
232 TRACE_EVENT ("l1i_ra_modify_req()");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
233
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
234 #ifdef _SIMULATION_
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
235 PACCESS (ra_modify_req);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
236 #endif
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
237
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
238 if (ra_data->activated AND ra_data->model EQ MODEL_FAX)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
239 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
240
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
241 ra_data->tra_rate = ra_modify_req->tra_rate;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
242 ra_data->user_rate = ra_modify_req->user_rate;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
243
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
244 #ifdef TRACE_RA_FAX_STATUS
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
245 TRACE_EVENT_P2("trans_rate=0x%02X & user_rate=0x%02X", ra_data->tra_rate, ra_data->user_rate);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
246 #endif
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
247
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
248 SET_STATE (KER, FAX_MODIFY);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
249
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
250 #ifdef TRACE_RA_FAX_STATUS
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
251 if (ra_data->fax->state_last NEQ ra_data->ker.state)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
252 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
253 TRACE_EVENT_P2("KER:FAX_%d -> FAX_%d", ra_data->fax->state_last, ra_data->ker.state);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
254 ra_data->fax->state_last = ra_data->ker.state;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
255 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
256 #endif
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
257 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
258
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
259 #ifdef _SIMULATION_
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
260 PFREE(ra_modify_req);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
261 #endif
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
262
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
263 #endif /* FF_FAX */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
264 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
265
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
266 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
267 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
268 | PROJECT : GSM-F&D (8411) MODULE : RA_L1INT |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
269 | STATE : code ROUTINE : l1i_ra_modify_cnf |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
270 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
271
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
272 PURPOSE : Send the primitive RA_MODIFY_CNF.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
273 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
274
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
275 GLOBAL void l1i_ra_modify_cnf(void)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
276 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
277 #ifdef FF_FAX
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
278 TRACE_EVENT ("l1i_ra_modify_cnf()");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
279
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
280 #ifndef _SIMULATION_
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
281
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
282 PSIGNAL ( hCommMMI, RA_MODIFY_CNF, NULL );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
283
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
284 #else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
285 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
286 PALLOC (ra_modify_cnf, RA_MODIFY_CNF);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
287 PSENDX (MMI, ra_modify_cnf);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
288 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
289 #endif
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
290
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
291 #endif /* FF_FAX */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
292 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
293
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
294 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
295 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
296 | PROJECT : GSM-F&D (8411) MODULE : RA_L1INT |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
297 | STATE : code ROUTINE : l1i_ra_deactivate_req |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
298 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
299
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
300 PURPOSE : Process the primitive RA_DEACTIVATE_REQ.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
301 This function stops the processing activities
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
302 of the processes TRA, RLP or FAX.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
303
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
304 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
305
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
306 GLOBAL void l1i_ra_deactivate_req (T_RA_DEACTIVATE_REQ *ra_deactivate_req)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
307 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
308 TRACE_EVENT ("l1i_ra_deactivate_req()");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
309
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
310 #ifdef _SIMULATION_
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
311 PACCESS (ra_deactivate_req);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
312 #endif
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
313
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
314 if (ra_data->activated)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
315 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
316 switch (ra_data->model)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
317 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
318 case MODEL_TRANS:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
319 SET_STATE (KER, TRA_NULL);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
320 MFREE(ra_data->tra);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
321 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
322
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
323 case MODEL_RLP:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
324 SET_STATE (KER, RLP_NULL);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
325 MFREE(ra_data->rlp);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
326 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
327
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
328 #ifdef FF_FAX
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
329 case MODEL_FAX:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
330 SET_STATE (KER, FAX_NULL);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
331 #ifdef TRACE_RA_FAX_STATUS
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
332 if (ra_data->fax->state_last NEQ ra_data->ker.state)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
333 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
334 TRACE_EVENT_P2("KER:FAX_%d -> FAX_%d", ra_data->fax->state_last, ra_data->ker.state);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
335 ra_data->fax->state_last = ra_data->ker.state;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
336 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
337 #endif
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
338 if (ra_data->fax->ul_ribu)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
339 cl_ribu_release(&ra_data->fax->ul_ribu);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
340
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
341 MFREE(ra_data->fax);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
342 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
343 #endif /* FF_FAX */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
344
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
345 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
346
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
347 #ifdef _SIMULATION_
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
348 if (ra_data->dl_ribu)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
349 cl_ribu_release(&ra_data->dl_ribu);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
350 #endif
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
351
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
352 dll_init();
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
353
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
354 #ifdef _SIMULATION_
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
355 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
356 PALLOC (ra_deactivate_cnf, RA_DEACTIVATE_CNF);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
357 PSENDX (MMI, ra_deactivate_cnf);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
358 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
359 #else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
360 PSIGNAL (hCommMMI, RA_DEACTIVATE_CNF, &ra_data->ra_deactivate_cnf);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
361 #endif
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
362
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
363 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
364 ra_data->activated=FALSE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
365 #ifdef _SIMULATION_
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
366 PFREE(ra_deactivate_req);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
367 #endif
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
368 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
369
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
370 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
371 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
372 | PROJECT : GSM-F&D (8411) MODULE : RA_L1INT |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
373 | STATE : code ROUTINE : l1i_ra_data_req |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
374 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
375
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
376 PURPOSE : Process the primitive RA_DATA_REQ.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
377 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
378
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
379 GLOBAL void l1i_ra_data_req(T_RA_DATA_REQ *ra_data_req, T_FRAME_DESC *frame_desc)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
380 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
381 TRACE_FUNCTION ("l1i_ra_data_req()");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
382
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
383 if (ra_data->activated)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
384 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
385 switch (ra_data->model)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
386 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
387 case MODEL_RLP:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
388
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
389 if (frame_desc->Len[0] > 0)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
390 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
391 U8 ribu_wi = cl_ribu_write_index(&ra_data->rlp->ulq);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
392 cl_set_frame_desc(&ra_data->rlp->ul_frame_desc[ribu_wi],
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
393 frame_desc->Adr[0], frame_desc->Len[0], frame_desc->Adr[1], frame_desc->Len[1]);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
394
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
395 #ifdef TRACE_RA_RLP
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
396 TRACE_EVENT_P3("RLP_UL_L1:0x%02X%02X - %d",
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
397 *(ra_data->rlp->ul_frame_desc[ribu_wi].Adr[0]+1),
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
398 *(ra_data->rlp->ul_frame_desc[ribu_wi].Adr[0]+0),
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
399 ra_data->rlp->ul_frame_desc[ribu_wi].Len[0]);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
400 #endif
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
401 ra_data->rlp->ul_data_pending = TRUE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
402 ra_data->rlp->m1 = 0;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
403 ra_data->rlp->ul_48_first_half_sent = FALSE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
404 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
405 break; /* MODEL_RLP */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
406
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
407 default:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
408 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
409 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
410 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
411 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
412
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
413 GLOBAL void l1i_ra_data_req_new(T_FD *pFD)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
414 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
415 TRACE_FUNCTION ("l1i_ra_data_req_new()");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
416
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
417 if (ra_data->activated)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
418 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
419 switch (ra_data->model)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
420 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
421 case MODEL_TRANS:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
422 if (ra_data->tra->ul_status NEQ pFD->status)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
423 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
424 ra_data->tra->ul_sa = ((pFD->status & ST_SA) ? 1 : 0);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
425 ra_data->tra->ul_sb = ((pFD->status & ST_SB) ? 1 : 0);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
426 ra_data->tra->ul_x = ((pFD->status & ST_X) ? 1 : 0);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
427 ra_data->tra->overspeed = ((pFD->status & ST_OVER) ? 1 : 0);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
428
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
429 ra_data->tra->ul_status = pFD->status;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
430 ra_data->tra->ul_signals_pending = TRUE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
431 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
432 cl_set_frame_desc_0(&ra_data->tra->ul_frame_desc, pFD->buf, pFD->len);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
433
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
434 ra_data->tra->data_req_rec = TRUE; /* ra_data_req received */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
435
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
436 if (ra_data->tra->ul_frame_desc.Len[0] > 0)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
437 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
438 ra_data->tra->ul_data_pending = TRUE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
439 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
440 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
441 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
442 ra_data->tra->ul_signals_pending = TRUE;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
443 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
444 break; /* MODEL_TRANS */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
445
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
446 #ifdef FF_FAX
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
447 case MODEL_FAX:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
448 cl_ribu_put(*pFD, ra_data->fax->ul_ribu);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
449 break; /* MODEL_FAX */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
450 #endif
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
451
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
452 default:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
453 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
454 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
455 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
456 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
457
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
458 #ifdef _SIMULATION_
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
459
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
460 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
461 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
462 | PROJECT : GSM-F&D (8411) MODULE : RA_L1INT |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
463 | STATE : code ROUTINE : l1i_ra_data_req_sim |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
464 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
465
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
466 PURPOSE : Process the primitive RA_DATA_REQ (SIMULATION wrapper)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
467 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
468
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
469 GLOBAL void l1i_ra_data_req_sim(T_RA_DATA_REQ *ra_data_req)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
470 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
471 static T_FRAME_DESC frame_desc;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
472 static U8 buf[MAX_FAX_BUFFER_UL];
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
473
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
474 T_FD *pFD = &ra_data->ul_FD;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
475
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
476 TRACE_FUNCTION ("l1i_ra_data_req_sim()");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
477
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
478 PACCESS (ra_data_req);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
479
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
480 if (ra_data->activated)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
481 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
482 switch (ra_data->model)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
483 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
484 case MODEL_TRANS:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
485 pFD->status = ra_data_req->status;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
486 pFD->len = ra_data_req->sdu.l_buf>>3;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
487 pFD->buf = &ra_data->ul_buf[0];
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
488 memcpy(pFD->buf, ra_data_req->sdu.buf, pFD->len);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
489 l1i_ra_data_req_new(pFD);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
490 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
491
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
492 #ifdef FF_FAX
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
493 case MODEL_FAX:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
494 pFD->type = ra_data_req->fr_type;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
495 pFD->len = ra_data_req->sdu.l_buf>>3;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
496 pFD->buf = ra_data_req->sdu.buf;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
497 l1i_ra_data_req_new(pFD);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
498 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
499 #endif /* FF_FAX */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
500
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
501 default: /* serves old version */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
502 cl_set_frame_desc_0(&frame_desc, buf, (USHORT)(ra_data_req->sdu.l_buf >> 3));
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
503 memcpy(frame_desc.Adr[0], ra_data_req->sdu.buf, frame_desc.Len[0]);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
504 l1i_ra_data_req(ra_data_req, &frame_desc);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
505 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
506 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
507 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
508
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
509 PFREE(ra_data_req);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
510 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
511
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
512 #endif
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
513
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
514 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
515 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
516 | PROJECT : GSM-F&D (8411) MODULE : RA_L1INT |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
517 | STATE : code ROUTINE : l1i_ra_ready_ind |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
518 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
519
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
520 PURPOSE : Send the primitive RA_READY_IND.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
521 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
522
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
523 GLOBAL void l1i_ra_ready_ind(T_HANDLE handle, UBYTE idx)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
524 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
525 TRACE_FUNCTION ("l1i_ra_ready_ind()");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
526
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
527 #ifdef _SIMULATION_
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
528 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
529 PALLOC (ra_ready_ind, RA_READY_IND);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
530 memcpy (ra_ready_ind, &ra_data->ra_ready_ind[idx], sizeof (T_RA_READY_IND));
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
531 PSEND (handle, ra_ready_ind);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
532 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
533 #else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
534
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
535 PSIGNAL(handle, RA_READY_IND, &ra_data->ra_ready_ind[idx]);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
536
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
537 #endif
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
538 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
539
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
540 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
541 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
542 | PROJECT : GSM-F&D (8411) MODULE : RA_L1INT |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
543 | STATE : code ROUTINE : l1i_ra_data_ind |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
544 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
545
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
546 PURPOSE : Send the primitive RA_DATA_IND
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
547 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
548
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
549 GLOBAL void l1i_ra_data_ind(T_HANDLE handle)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
550 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
551 TRACE_FUNCTION ("l1i_ra_data_ind()");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
552
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
553 #ifdef _TARGET_
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
554
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
555 PSIGNAL(handle, RA_DATA_IND, &ra_data->ra_data_ind);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
556
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
557 #else /* _SIMULATION_ */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
558
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
559 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
560 PALLOC_SDU (ra_data_ind, RA_DATA_IND, (MAX_FAX_BUFFER_DL << 3));
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
561 memcpy(ra_data_ind, &ra_data->ra_data_ind, sizeof (T_RA_DATA_IND));
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
562
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
563 switch (ra_data->model)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
564 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
565 case MODEL_TRANS:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
566 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
567 T_TRA *dtra = ra_data->tra;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
568
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
569 dtra->dl_pFD = cl_ribu_get(ra_data->dl_ribu);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
570
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
571 if (dtra->dl_pFD AND dtra->dl_pFD->len)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
572 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
573 ra_data_ind->sdu.l_buf = dtra->dl_pFD->len<<3;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
574 memcpy(&ra_data_ind->sdu.buf[0], dtra->dl_pFD->buf, dtra->dl_pFD->len);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
575 dtra->dl_pFD = NULL;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
576 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
577 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
578 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
579
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
580 #ifdef FF_FAX
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
581 case MODEL_FAX:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
582 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
583 T_FAX *dfax = ra_data->fax;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
584
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
585 dfax->dl_pFD = cl_ribu_get(ra_data->dl_ribu);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
586
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
587 if (dfax->dl_pFD)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
588 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
589 ra_data_ind->fr_type = dfax->dl_pFD->type;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
590
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
591 if (dfax->dl_pFD->len)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
592 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
593 if (ra_data_ind->fr_type EQ FR_SYNC)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
594 ra_data_ind->sdu.l_buf = 0;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
595 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
596 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
597 ra_data_ind->sdu.l_buf = dfax->dl_pFD->len<<3;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
598 memcpy(&ra_data_ind->sdu.buf[0], dfax->dl_pFD->buf, ra_data_ind->sdu.l_buf>>3);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
599 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
600 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
601 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
602 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
603 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
604 #endif /* FF_FAX */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
605
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
606 default:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
607 if (ra_data->ra_data_ind.sdu.l_buf)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
608 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
609 memcpy(&ra_data_ind->sdu.buf[0], ra_data->rlp->dl_buf, ra_data->ra_data_ind.sdu.l_buf>>3);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
610 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
611 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
612 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
613 PSEND (handle, ra_data_ind);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
614 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
615
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
616 #endif /* _SIMULATION_ */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
617 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
618
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
619 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
620 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
621 | PROJECT : GSM-F&D (8411) MODULE : RA_L1INT |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
622 | STATE : code ROUTINE : l1i_ra_break_req |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
623 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
624
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
625 PURPOSE : Process the primitive RA_BREAK_REQ.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
626 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
627
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
628 GLOBAL void l1i_ra_break_req(T_RA_BREAK_REQ *ra_break_req)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
629 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
630 TRACE_EVENT ("l1i_ra_break_req()");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
631
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
632 #ifdef _SIMULATION_
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
633 PACCESS (ra_break_req);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
634 #endif
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
635
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
636 if (ra_data->activated)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
637 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
638 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
639 * a break can only be requested if it is the
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
640 * first request or the last is sent completeley
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
641 * via the TCH.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
642 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
643 if (ra_data->tra->break_len EQ 0)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
644 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
645 ra_data->tra->break_len = ra_break_req->break_len;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
646 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
647 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
648 TRACE_EVENT ("break request too early");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
649 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
650
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
651 #ifdef _SIMULATION_
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
652 PFREE(ra_break_req);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
653 #endif
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
654 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
655
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
656 #ifndef HO_WORKAROUND
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
657 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
658 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
659 | PROJECT : GSM-F&D (8411) MODULE : RA_L1INT |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
660 | STATE : code ROUTINE : l1i_ra_break_ind |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
661 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
662
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
663 PURPOSE : Send the primitive RA_BREAK_IND.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
664 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
665
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
666 GLOBAL void l1i_ra_break_ind(void)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
667 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
668 TRACE_EVENT ("l1i_ra_break_ind()");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
669
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
670 #ifndef _SIMULATION_
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
671
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
672 PSIGNAL (hCommTRA, RA_BREAK_IND, &ra_data->ra_break_ind);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
673
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
674 #else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
675 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
676 PALLOC (ra_break_ind, RA_BREAK_IND);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
677 memcpy (ra_break_ind, &ra_data->tra->ra_break_ind, sizeof(T_RA_BREAK_IND));
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
678 PSENDX (TRA, ra_break_ind);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
679 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
680 #endif
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
681 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
682 #endif
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
683
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
684 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
685 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
686 | PROJECT : GSM-F&D (8411) MODULE : RA_L1INT |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
687 | STATE : code ROUTINE : l1i_ra_detect_req |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
688 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
689
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
690 PURPOSE : Process the primitive RA_DETECT_REQ.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
691
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
692 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
693
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
694 GLOBAL void l1i_ra_detect_req(T_RA_DETECT_REQ *ra_detect_req)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
695 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
696 TRACE_FUNCTION ("l1i_ra_detect_req()");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
697
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
698 #ifdef _SIMULATION_
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
699 PACCESS (ra_detect_req);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
700 #endif
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
701
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
702 if (ra_data->activated)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
703 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
704 if (ra_detect_req->detect EQ DET_NO_STATUS)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
705 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
706 shm_set_dsp_value (fax_b_status_detect, 0);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
707 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
708 else if (ra_detect_req->detect EQ DET_STATUS)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
709 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
710 shm_set_dsp_value (fax_b_status_detect, 1);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
711 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
712 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
713
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
714 #ifdef _SIMULATION_
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
715 PFREE(ra_detect_req);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
716 #endif
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
717 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
718
|