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-PS (6147)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
4 | Modul : PSA_PSIS
|
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 module defines the processing functions for the
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
18 | primitives sent to the protocol stack adapter by the DTI
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
19 | interface.
|
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
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
23 #ifdef FF_PSI
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
24 #define PSA_PSIS_C
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
25
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
26
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
27 #include "aci_all.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
28
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
29 /*==== INCLUDES ===================================================*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
30 #include "aci_cmh.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
31 #include "ati_cmd.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
32 #include "aci_cmd.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
33 #include "dti.h" /* functionality of the dti library */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
34
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
35 #include "aci.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
36 #include "aci_lst.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
37 #include "dti_conn_mng.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
38 #include "dti_cntrl_mng.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
39 #include "psa_psi.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
40 #include "cmh_psi.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
41
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
42 #include "aci_mem.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
43
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
44 #include "aci_io.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
45
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
46 #include "sap_dti.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
47
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
48
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
49
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
50 /*==== CONSTANTS ==================================================*/
|
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 /*==== TYPES ======================================================*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
54
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
55
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
56 /*==== EXPORT =====================================================*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
57
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
58 /*==== VARIABLES ==================================================*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
59
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
60
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
61 /*==== FUNCTIONS ==================================================*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
62
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
63 LOCAL USHORT psi_get_desc_size (T_desc2 *data)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
64 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
65 USHORT size = 0;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
66 T_desc2 *next_data;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
67
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
68 next_data = data;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
69 while (next_data NEQ NULL)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
70 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
71 size += next_data->len;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
72 next_data = (T_desc2*)next_data->next;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
73 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
74
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
75 return (size);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
76 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
77
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
78 #ifdef DTI
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
79
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
80 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
81 +-------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
82 | PROJECT : GPRS (8441) MODULE : PSA_PSIS |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
83 | STATE : finished ROUTINE : psaPSI_ConnectRej |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
84 +-------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
85
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
86 PURPOSE : Indicates that ACI can not handle a DTI connection with PSI
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
87
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
88 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
89 GLOBAL void psaPSI_ConnRej ( U32 devId)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
90 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
91 TRACE_FUNCTION ("psaPSI_ConnRej()");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
92 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
93 PALLOC ( psi_conn_rej, PSI_CONN_REJ);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
94 psi_conn_rej->devId = devId;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
95 PSENDX (PSI, psi_conn_rej);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
96 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
97 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
98
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
99 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
100 +-------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
101 | PROJECT : GPRS (8441) MODULE : PSA_PSIS |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
102 | STATE : finished ROUTINE : psaPSI_ConnectRes |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
103 +-------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
104
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
105 PURPOSE : Response to PSI_CONN_IND sent by PSI with confirmed
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
106 DIO capabilities
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
107
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
108 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
109 GLOBAL void psaPSI_ConnRes ( U32 devId)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
110 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
111 TRACE_FUNCTION ("psaPSI_ConnRes()");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
112 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
113 PALLOC ( psi_conn_res, PSI_CONN_RES);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
114 psi_conn_res->devId = devId;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
115 PSENDX (PSI, psi_conn_res);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
116 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
117 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
118
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
119 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
120 +-------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
121 | PROJECT : GPRS (8441) MODULE : PSA_PSIS |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
122 | STATE : finished ROUTINE : psaPSI_CloseReq |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
123 +-------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
124
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
125 PURPOSE : Request closing of DTI connection with PSI
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
126
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
127 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
128 GLOBAL void psaPSI_CloseReq ( U32 devId)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
129 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
130 TRACE_FUNCTION ("psaPSI_DTICloseReq()");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
131 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
132 PALLOC ( psi_close_req, PSI_CLOSE_REQ);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
133 psi_close_req->devId = devId;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
134 PSENDX (PSI, psi_close_req);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
135 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
136 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
137
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
138 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
139 +-------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
140 | PROJECT : GPRS (8441) MODULE : PSA_PSIS |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
141 | STATE : finished ROUTINE : psaPSI_DTICloseReq |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
142 +-------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
143
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
144 PURPOSE : Request closing of DTI connection with PSI
|
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 GLOBAL void psaPSI_DTICloseReq ( U32 devId, U32 link_id)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
148 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
149 TRACE_FUNCTION ("psaPSI_DTICloseReq()");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
150 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
151 PALLOC ( psi_dti_close_req, PSI_DTI_CLOSE_REQ);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
152 psi_dti_close_req->devId = devId;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
153 psi_dti_close_req->link_id = link_id;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
154 PSENDX (PSI, psi_dti_close_req);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
155 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
156 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
157
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
158 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
159 +-------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
160 | PROJECT : GPRS (8441) MODULE : PSA_PKTIOS |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
161 | STATE : finished ROUTINE : psaPSI_DTIOpenReq |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
162 +-------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
163
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
164 PURPOSE : Request opening of DTI connection with PSI
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
165
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
166 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
167 GLOBAL void psaPSI_DTIOpenReq ( U32 devId, char* peer_name,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
168 ULONG link_id, UBYTE dti_direction)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
169 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
170 TRACE_FUNCTION ("psaPSI_DTIOpenReq()");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
171
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
172 /* if (dti_cntrl_set_conn_parms(link_id, DTI_ENTITY_PSI, (UBYTE)(devId&DIO_DEVICE_MASK),
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
173 UART_DLCI_NOT_MULTIPLEXED) EQ FALSE)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
174 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
175 return;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
176 }*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
177 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
178 PALLOC ( psi_dti_open_req, PSI_DTI_OPEN_REQ);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
179 psi_dti_open_req->devId = devId;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
180 memcpy( &(psi_dti_open_req->peer.name), peer_name, strlen(peer_name) + 1 );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
181 psi_dti_open_req->link_id = link_id;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
182 psi_dti_open_req->dti_direction = dti_direction;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
183
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
184 PSENDX (PSI, psi_dti_open_req);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
185 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
186 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
187
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
188 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
189 +-------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
190 | PROJECT : GPRS (8441) MODULE : PSA_PSIS |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
191 | STATE : finished ROUTINE : psaPSI_Dti_Req |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
192 +-------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
193
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
194 PURPOSE : Request for DTI connection by DTI managment
|
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 GLOBAL void psaPSI_Dti_Req ( ULONG link_id, UBYTE peer,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
198 T_DTI_MNG_PSI_MODE con_mode)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
199 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
200 UBYTE device_no;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
201 U32 devId;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
202 char* peer_name;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
203 T_DTI_CNTRL device_info;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
204 U32 cpblty = DTI_CPBLTY_NO;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
205
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
206 TRACE_FUNCTION ("psaPSI_Dti_Req()");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
207
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
208 dti_cntrl_get_info_from_dti_id(EXTRACT_DTI_ID(link_id), &device_info);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
209
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
210 device_no = device_info.dev_no;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
211 switch (device_info.capability-DTI_CPBLTY_CMD )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
212 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
213 case DTI_CPBLTY_CMD:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
214 cpblty = DTI_CPBLTY_CMD;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
215 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
216 case DTI_CPBLTY_SER:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
217 if (device_info.sub_no EQ 0)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
218 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
219 cpblty = DIO_DATA_SER;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
220 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
221 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
222 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
223 cpblty = DIO_DATA_SER_MUX;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
224 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
225 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
226 case DTI_CPBLTY_PKT:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
227 cpblty = DIO_DATA_PKT;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
228 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
229 default:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
230 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
231 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
232 /*the mapping of capability between DTI and PSI should be done here, since devId relates
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
233 to the device type */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
234 devId = ((device_info.driver_id & 0xff)<<24|
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
235 cpblty|
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
236 (device_info.dio_ctrl_id & 0xff)<<8|
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
237 device_no);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
238 peer_name = dti_entity_name[peer].name;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
239
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
240 if(con_mode EQ PSI_CONNECT_DTI)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
241 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
242 dti_cntrl_set_conn_parms((T_DTI_CONN_LINK_ID)link_id, DTI_ENTITY_PSI,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
243 device_info.dev_no, UART_DLCI_NOT_MULTIPLEXED);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
244
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
245 psaPSI_DTIOpenReq (devId, peer_name, link_id, DTI_CHANNEL_TO_HIGHER_LAYER);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
246 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
247 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
248 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
249 psaPSI_DTICloseReq(devId, link_id);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
250 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
251 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
252 #endif /* DTI */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
253
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
254 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
255 +-------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
256 | PROJECT : GSM-PS (6147) MODULE : PSA_PSIS |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
257 | ROUTINE : psa_psi_DTI_data_req |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
258 +-------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
259
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
260 PURPOSE :
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
261
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
262 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
263
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
264 GLOBAL void psa_psi_DTI_data_req (
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
265 T_desc2 *data,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
266 T_ACI_DTI_PRC_PSI *src_infos,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
267 T_DTI_ENTITY_ID peer_id
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
268 )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
269 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
270 USHORT data_len = 0;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
271
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
272 TRACE_FUNCTION("psa_psi_DTI_data_req()");
|
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 PALLOC_DESC2(dti_data_ind, DTI2_DATA_IND);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
276
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
277 data_len = psi_get_desc_size (data);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
278
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
279 dti_data_ind->desc_list2.list_len = data_len;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
280 dti_data_ind->desc_list2.first = (ULONG)data;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
281
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
282 dti_data_ind->parameters.p_id = 0; /*dummy_ubyte; */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
283
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
284 if (BITFIELD_CHECK (src_infos->data_cntr, PSI_DTI_FLOW_OFF))
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
285 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
286 dti_data_ind->parameters.st_lines.st_flow = DTI_FLOW_OFF;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
287 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
288 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
289 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
290 dti_data_ind->parameters.st_lines.st_flow = DTI_FLOW_ON;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
291 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
292
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
293 if (BITFIELD_CHECK (src_infos->data_cntr, PSI_DTI_SB_BIT))
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
294 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
295 TRACE_EVENT("SB is ON");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
296 dti_data_ind->parameters.st_lines.st_line_sb = DTI_SB_ON;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
297 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
298 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
299 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
300 TRACE_EVENT("SB is OFF");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
301 dti_data_ind->parameters.st_lines.st_line_sb = DTI_SB_OFF;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
302 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
303
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
304 dti_data_ind->parameters.st_lines.st_line_sa = DTI_SA_ON;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
305 dti_data_ind->parameters.st_lines.st_break_len = DTI_BREAK_OFF;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
306
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
307 dti_send_data
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
308 (
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
309 aci_hDTI,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
310 src_infos->srcId,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
311 (UBYTE)peer_id,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
312 ACI_DTI_DN_CHANNEL,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
313 dti_data_ind
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
314 );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
315 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
316 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
317
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
318 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
319 +-------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
320 | PROJECT : GSM-PS (6147) MODULE : PSA_PSI |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
321 | ROUTINE : psa_psi_DTI_getdata |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
322 +-------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
323
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
324 PURPOSE :
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
325
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
326 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
327
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
328 GLOBAL void psa_psi_DTI_getdata( UBYTE src_id, T_DTI_ENTITY_ID peer_id)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
329 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
330 T_ACI_DTI_PRC_PSI *src_infos = NULL;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
331
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
332 TRACE_FUNCTION("psaDTI_getdata");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
333
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
334 src_infos = find_element (psi_src_params, src_id, cmhPSItest_srcId);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
335 if (src_infos EQ NULL)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
336 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
337 TRACE_EVENT_P1("[ERR] psaDTI_getdata: link_id=%d not found", src_id) ;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
338 return ;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
339 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
340
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
341 if( src_infos->RecState NEQ RECEIVING)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
342 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
343 src_infos->RecState = READY_REC;
|
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 dti_start
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
348 (
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
349 aci_hDTI,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
350 src_id,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
351 (UBYTE)peer_id,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
352 ACI_DTI_DN_CHANNEL
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
353 );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
354 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
355 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
356
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
357 #ifdef DTI
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
358 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
359 +-------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
360 | PROJECT : GSM-PS (6147) MODULE : PSA_PSI |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
361 | ROUTINE : psaPSI_DCDreq |
|
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 PURPOSE :
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
365
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
366 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
367
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
368 GLOBAL void psaPSI_DCDreq( UBYTE c_Id, UBYTE line_state )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
369 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
370 T_ACI_DTI_PRC_PSI *cmd = NULL;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
371
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
372 TRACE_FUNCTION("psaPSI_DCDreq()");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
373
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
374 cmd = find_element (psi_src_params, c_Id, cmhPSItest_srcId);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
375 if (cmd EQ NULL)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
376 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
377 TRACE_EVENT_P1("[ERR] psaPSI_DCDreq: c_Id=%d not found", c_Id) ;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
378 return ;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
379 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
380
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
381 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
382 PALLOC( psi_line_state_req, PSI_LINE_STATE_REQ);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
383 psi_line_state_req -> devId = cmd->devId;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
384 if( line_state EQ IO_DCD_ON )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
385 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
386 psi_line_state_req -> line_state = LINE_STD_DCD_ON;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
387 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
388 else if ( line_state EQ IO_DCD_OFF )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
389 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
390 psi_line_state_req -> line_state = LINE_STD_DCD_OFF;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
391 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
392
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
393 PSENDX( PSI, psi_line_state_req );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
394 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
395 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
396
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
397 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
398 +-------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
399 | PROJECT : GSM-PS (6147) MODULE : PSA_PSI |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
400 | ROUTINE : psaPSI_ESCAPEreq |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
401 +-------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
402
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
403 PURPOSE :
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
404
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
405 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
406
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
407 GLOBAL BOOL psaPSI_ESCAPEreq( UBYTE c_Id, UBYTE detection )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
408 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
409 T_ACI_DEVICE_DCB_ENTRY *device_entry = cmhPSI_GetDeviceParOverSrcID( c_Id );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
410 U32 device_type;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
411 if ( device_entry EQ NULL )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
412 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
413 TRACE_EVENT_P1("[ERR] cmhPSI_SetDataRate: device for source ID = %d not found", c_Id);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
414 return (FALSE);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
415 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
416
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
417 TRACE_FUNCTION("psaPSI_ESCAPEreq()");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
418
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
419 device_type = device_entry->devId & DIO_TYPE_DAT_MASK;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
420 cmhPSI_SetDcbParToUnchanged( device_entry );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
421 if (device_type EQ DIO_DATA_SER)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
422 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
423 if( detection EQ ESC_DETECTION_ON)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
424 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
425 device_entry->dcbPar.dio_dcb_ser.guard_period = DIO_GUARD_PER_DEFAULT;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
426 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
427 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
428 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
429 device_entry->dcbPar.dio_dcb_ser.guard_period = 0;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
430 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
431 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
432 else if (device_type EQ DIO_DATA_MUX)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
433 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
434 if( detection EQ ESC_DETECTION_ON)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
435 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
436 device_entry->dcbPar.dio_dcb_ser_mux.guard_period = DIO_GUARD_PER_DEFAULT;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
437 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
438 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
439 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
440 device_entry->dcbPar.dio_dcb_ser_mux.guard_period = 0;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
441 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
442 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
443
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
444 else /* if (device_type EQ DIO_DATA_PKT)*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
445 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
446 return (FALSE);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
447 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
448
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
449 psaPSI_SetConfReq(device_entry);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
450
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
451 return (TRUE);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
452
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
453 }
|
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 | PROJECT : GSM-PS (6147) MODULE : PSA_PSI |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
458 | ROUTINE : psaPSI_RINGreq |
|
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 PURPOSE :
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
462
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
463 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
464
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
465 GLOBAL void psaPSI_RINGreq( UBYTE c_Id, UBYTE line_state )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
466 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
467 T_ACI_DTI_PRC_PSI *cmd = NULL;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
468
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
469 TRACE_FUNCTION("psaPSI_RINGreq");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
470
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
471 cmd = find_element (psi_src_params, c_Id, cmhPSItest_srcId);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
472 if (cmd EQ NULL)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
473 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
474 TRACE_EVENT_P1("[ERR] psaPSI_RINGreq: c_Id=%d not found", c_Id) ;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
475 return ;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
476 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
477
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
478 if (BITFIELD_CHECK (cmd->data_cntr, PSI_RING_RUNNING))
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
479 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
480 TRACE_EVENT_P2 ("[WRN] psaPSI_RINGreq(): no CNF for previous REQ (device: %d; dlci=%d)",
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
481 cmd->devId, cmd->dlci);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
482 return;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
483 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
484
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
485 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
486 store that PSI_RING_REQ was send
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
487 this is important so that the primitive queue in the PSI entity not
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
488 overloaded if no PC is connected
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
489 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
490 BITFIELD_SET (cmd->data_cntr, PSI_RING_RUNNING);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
491
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
492 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
493 PALLOC( psi_line_state_req, PSI_LINE_STATE_REQ);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
494 psi_line_state_req -> devId = cmd->devId;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
495
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
496 if( line_state EQ IO_RING_ON)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
497 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
498 psi_line_state_req -> line_state = LINE_STD_RING_ON;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
499 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
500 else if( line_state EQ IO_RING_OFF )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
501 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
502 psi_line_state_req -> line_state = LINE_STD_RING_OFF;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
503 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
504
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
505 PSENDX( PSI, psi_line_state_req);
|
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 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
510 +------------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
511 | PROJECT : GSM-PS (6147) MODULE : PSA_PSI |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
512 | ROUTINE : psaPSI_SetConfReq |
|
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 PURPOSE :
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
516
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
517 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
518
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
519 GLOBAL void psaPSI_SetConfReq( T_ACI_DEVICE_DCB_ENTRY *dcbPar )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
520 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
521 U32 device_type;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
522 #ifdef _SIMULATION_
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
523 PALLOC(psi_setconf_req_test, PSI_SETCONF_REQ_TEST);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
524
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
525 device_type = dcbPar->devId & DIO_TYPE_DAT_MASK;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
526 psi_setconf_req_test->devId = dcbPar->devId;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
527 switch (device_type)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
528 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
529 case DIO_DATA_SER:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
530 memcpy(&psi_setconf_req_test->DIO_DCB_UN.DIO_DCB_SER,&dcbPar->dcbPar.dio_dcb_ser,sizeof(T_DIO_DCB_SER));
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
531 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
532 case DIO_DATA_PKT:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
533 memcpy(&psi_setconf_req_test->DIO_DCB_UN.DIO_DCB_PKT,&dcbPar->dcbPar.dio_dcb_pkt,sizeof(T_DIO_DCB_PKT));
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
534 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
535 case DIO_DATA_SER_MUX:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
536 memcpy(&psi_setconf_req_test->DIO_DCB_UN.DIO_DCB_SER_MUX,&dcbPar->dcbPar.dio_dcb_ser_mux,sizeof(T_DIO_DCB_SER_MUX));
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
537 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
538 default:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
539 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
540 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
541 PSENDX( PSI, psi_setconf_req_test );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
542 #else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
543 PALLOC(psi_setconf_req, PSI_SETCONF_REQ);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
544
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
545 device_type = dcbPar->devId & DIO_TYPE_DAT_MASK;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
546 psi_setconf_req->devId = dcbPar->devId;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
547 switch (device_type)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
548 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
549 case DIO_DATA_SER:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
550 psi_setconf_req->ptr_DIO_DCB = (T_DIO_DCB *) &dcbPar->dcbPar.dio_dcb_ser;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
551 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
552 case DIO_DATA_PKT:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
553 psi_setconf_req->ptr_DIO_DCB =(T_DIO_DCB *) &dcbPar->dcbPar.dio_dcb_pkt;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
554 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
555 case DIO_DATA_SER_MUX:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
556 psi_setconf_req->ptr_DIO_DCB =(T_DIO_DCB *) &dcbPar->dcbPar.dio_dcb_ser_mux;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
557 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
558 default:
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
559 break;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
560 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
561 PSENDX( PSI, psi_setconf_req );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
562 #endif /* _SIMULATION_ */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
563 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
564 #endif /* DTI */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
565 #endif /*FF_PSI*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
566 /*==== EOF =======================================================*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
567
|