comparison src/condat/com/include/dti.h @ 4:6e457872f745

src/condat: hybrid import from Magnetite
author Mychaela Falconia <falcon@freecalypso.org>
date Sun, 15 Jul 2018 08:01:56 +0000
parents
children 802c23d09f6f
comparison
equal deleted inserted replaced
3:b4c81ea2d291 4:6e457872f745
1 /*
2 +-----------------------------------------------------------------------------
3 | Project : DTILIB
4 | Modul : DTI
5 +-----------------------------------------------------------------------------
6 | Copyright 2002 Texas Instruments Berlin, AG
7 | All rights reserved.
8 |
9 | This file is confidential and a trade secret of Texas
10 | Instruments Berlin, AG
11 | The receipt of or possession of this file does not convey
12 | any rights to reproduce or disclose its contents or to
13 | manufacture, use, or sell anything it may describe, in
14 | whole, or in part, without the specific written consent of
15 | Texas Instruments Berlin, AG.
16 +-----------------------------------------------------------------------------
17 | Purpose : Definitions for the Data Transmission Interface, DTI.
18 | Includefile for every entity using DTILIB.
19 +-----------------------------------------------------------------------------
20 */
21 /*
22 * Version 1.6
23 */
24
25 /**********************************************************************************/
26
27 /* NOTE:
28 * there is a MACRO definition for "interface" in objbase.h
29 * which says
30 * #define interface struct
31 * and thus would collide with the name "interface"
32 * as a quick fix, all "interface" have been changed to "interfac"
33 * in the dtilib project. This should not affect any external files
34 */
35
36 /**********************************************************************************/
37
38 #ifndef DTI_H
39 #define DTI_H
40
41 /**********************************************************************************/
42
43 #if defined (DTI2)
44 /*
45 * Use SAP DTI2.DOC
46 */
47 #include "P_DTI2.h"
48 #else
49 /*
50 * Make this code compatible to SAP dti.doc.
51 */
52 #include "P_DTI.h"
53
54 #define T_DTI2_DATA_IND T_DTI_DATA_IND
55 #define T_DTI2_DATA_REQ T_DTI_DATA_REQ
56 #define T_DTI2_READY_IND T_DTI_READY_IND
57 #define T_DTI2_GETDATA_REQ T_DTI_GETDATA_REQ
58 #define T_DTI2_DATA_TEST_REQ T_DTI_DATA_TEST_REQ
59 #define T_DTI2_DATA_TEST_IND T_DTI_DATA_TEST_IND
60
61 /*
62 * By use the SAP DTI.DOC and the DTI2.DOC there could be double
63 * defines. So an undef is used.
64 */
65
66 #ifdef DTI2_DATA_IND
67 #undef DTI2_DATA_IND
68 #endif
69 #ifdef DTI2_DATA_REQ
70 #undef DTI2_DATA_REQ
71 #endif
72 #ifdef DTI2_READY_IND
73 #undef DTI2_READY_IND
74 #endif
75 #ifdef DTI2_GETDATA_REQ
76 #undef DTI2_GETDATA_REQ
77 #endif
78 #ifdef DTI2_DATA_TEST_REQ
79 #undef DTI2_DATA_TEST_REQ
80 #endif
81 #ifdef DTI2_DATA_TEST_IND
82 #undef DTI2_DATA_TEST_IND
83 #endif
84
85 /*
86 * For calling the primitives over the macros.
87 */
88 #define DTI2_DATA_IND DTI_DATA_IND
89 #define DTI2_DATA_REQ DTI_DATA_REQ
90 #define DTI2_READY_IND DTI_READY_IND
91 #define DTI2_GETDATA_REQ DTI_GETDATA_REQ
92 #define DTI2_DATA_TEST_REQ DTI_DATA_TEST_REQ
93 #define DTI2_DATA_TEST_IND DTI_DATA_TEST_IND
94
95 /*
96 * Version related to DTI SAP 1.
97 */
98
99 #define T_desc2 T_desc
100 #define T_desc_list2 T_desc_list
101 #define desc_list2 desc_list
102
103 #endif
104
105 /**********************************************************************************
106 * Externally visible dtilib defines
107 **********************************************************************************/
108 /*
109 * Reason parameter for the callback function
110 */
111 #define DTI_NO_SIGNAL 0 /* No signal shall be sended */
112 #define DTI_REASON_CONNECTION_OPENED 1 /* DTI connection opened or reseted */
113 #define DTI_REASON_CONNECTION_CLOSED 2 /* DTI connection closed */
114 #define DTI_REASON_DATA_RECEIVED 3 /* UL Data primitive received */
115 #define DTI_REASON_TX_BUFFER_FULL 4 /* DTI send-queue full */
116 #define DTI_REASON_TX_BUFFER_READY 5 /* DTI DTI send-queue no longer full */
117
118 /*
119 * Connection states
120 */
121 #define DTI_CLOSED 0 /* DTI connection is not established */
122 #define DTI_SETUP 1 /* Waiting for connection_opened signal from DTILIB */
123 #define DTI_IDLE 2 /* DTI connection is opened */
124
125 /*
126 * dti_open - direction parameter
127 *
128 * to lower layer: send request primitives (_REQ / _CNF)
129 * to higher layer: send indications (_IND / _RES)
130 * null link: do not send anything
131 */
132 #define DTI_CHANNEL_TO_HIGHER_LAYER 0x00
133 #define DTI_CHANNEL_TO_LOWER_LAYER 0x01
134 #define DTI_NULL_LINK 0x02 /* null link (null device) */
135
136 /*
137 * dti_open - link_options parameter
138 *
139 * the 0 is legacy from previous versions - upon reception of this value
140 * the queue-length parameter has to be used to find out about desired
141 * behaviour for the send queue
142 * #define FLOW_CNTRL_ENABLED 0 -- Flow control enabled
143 */
144 #define DTI_FLOW_CNTRL_DISABLED 1 /* Flow control entirely disabled */
145 /*
146 * Modes for handling of the send queue
147 *
148 * Queue is not used
149 */
150 #define DTI_QUEUE_UNUSED 2
151 /*
152 * Queue without size limitation
153 */
154 #define DTI_QUEUE_UNBOUNDED 3
155 /*
156 * Notify entity when queue is full,
157 * afterwards discard oldest piece of data upon arrival of new data packets
158 */
159 #define DTI_QUEUE_RM_FIFO 4
160 /*
161 * Notify entity when queue is full,
162 * afterwards discard newly arriving data packets
163 */
164 #define DTI_QUEUE_RM_LIFO 5
165 /*
166 * Notify entity when queue is full but keep all buffered data
167 */
168 #define DTI_QUEUE_WATERMARK 6
169
170 /*
171 * dti_init - entity_options (flags!)
172 */
173 #define DTI_DEFAULT_OPTIONS 0x0
174 #define DTI_NO_TRACE (1<<0)
175
176 /*
177 * Some parameter which are used for initialization.
178 */
179 #define D_NO_DATA_BASE NULL
180 #define D_NO_INSTANCE 0xFF
181 #define D_NO_INTERFACE 0xFF
182 #define D_NO_CHANNEL_NR 0xFF
183
184 /**********************************************************************************
185 * Obsolete dtilib defines
186 *
187 * NOTE: use of these defines is STRONGLY DISCOURAGED since their functionality
188 * is no longer needed and they will be removed some time in the future
189 *
190 **********************************************************************************/
191
192 /*
193 * NOTE: this is _obsolete_ and maintained only for compatibility reasons!!
194 * (see link_options parameter)
195 */
196 #define DTI_QUEUE_DISABLED 0 /* Queue not used */
197 #define DTI_QUEUE_UNLIMITED 255 /* Queue without limitations in size */
198
199 /*
200 * Home and neighbor entity.
201 * NOTE: this is _obsolete_ and maintained only for compatibility reasons!!
202 * instead use the defines
203 * DTI_CHANNEL_TO_HIGHER_LAYER and
204 * DTI_CHANNEL_TO_LOWER_LAYER
205 */
206 #define HOME TRUE /* Indicate the entity or instance which send dti_connect_req */
207 #define NEIGHBOR FALSE /* Indicate the entity or instance which send dti_connect_ind */
208
209 /*
210 * Type of the link
211 */
212
213 #define ENTITY_LINK 0x01 /* normal link with an entity */
214 #define NULL_LINK 0x02 /* null link (null device) */
215 #define RIVIERA_BT_LINK 0x03 /* link to BT riviera entity */
216 #define RIVIERA_ATP_LINK 0x04 /* link to RNET riviera entity */
217
218 /*
219 * Communication type
220 * NOTE: this is _obsolete_ and maintained only for compatibility reasons!!
221 * (see link_options parameter)
222 */
223 #define FLOW_CNTRL_ENABLED 0 /* Flow control enabled */
224 #define FLOW_CNTRL_DISABLED 1 /* Flow control disabled */
225
226 /*
227 * Connection states
228 * NOTE: this is _obsolete_ and maintained only for compatibility reasons!!
229 * these states should be defined in the entities or the prefixec versiones
230 * above should be used
231 */
232 #define CLOSED 0 /* DTI connection is not established */
233 #define SETUP 1 /* Waiting for connection_opened signal from DTILIB */
234 #define IDLE 2 /* DTI connection is opened */
235
236 /*
237 * Entity states for sending
238 * NOTE: this is _obsolete_ and maintained only for compatibility reasons!!
239 * these states should be defined in the entity itself
240 * to ensure proper prefixing
241 */
242 #define TX_IDLE 3 /* The entity must not send data primitives (initial state) */
243 #define TX_READY 4 /* The entity can send data primitives */
244
245 /*
246 * Entity states for receiving
247 * NOTE: this is _obsolete_ and maintained only for compatibility reasons!!
248 * these states should be defined in the entity itself
249 * to ensure proper prefixing
250 */
251 #define RX_IDLE 5 /* Data reception stopped (initial state) */
252 #define RX_READY 6 /* Ready to receive data */
253
254 #define ENTITY_NAME_LEN 0x6
255
256 #define MAX_ATP_LINKS 0x4 /* max. number of links towards the RIV/ATP environment,
257 set by AAA*/
258 /*
259 * Value constants for capability
260 */
261 #define DTI_CPBLTY_NO 0x0 /* used as initial value = no capabilities */
262 #define DTI_CPBLTY_CMD 0x1 /* AT cmd capability */
263 #define DTI_CPBLTY_PKT 0x2 /* packet capability */
264 #define DTI_CPBLTY_SER 0x4 /* serial capability */
265
266 /**********************************************************************************
267 * typedefs
268 **********************************************************************************/
269
270 /*
271 * Data Base for each entity.
272 */
273
274 typedef struct
275 {
276 T_HANDLE handle; /* GPF task handle */
277 U8 max_links; /* Number of links in the link list
278 - started from the pointer first_link */
279 U32 entity_options; /* user specified entity_options */
280 void ((*sig_callback) /* Callback function */
281 (U8 instance, /* Instance of the entity */
282 U8 interfac, /* Interface of the entity */
283 U8 channel, /* Channel */
284 U8 reason, /* Reason for the callback */
285 T_DTI2_DATA_IND *dti_data_ind)); /* Data primitive ul */
286 #ifdef FF_TCP_IP
287 char* own_name; /* name of the own entity, held by AAA */
288 U16 entity_id_p; /* entity id within ATP, the same for all
289 entities and AAA */
290 #endif
291 U32 first_link; /* Pointer to link table */
292 } DTI_DATA_BASE;
293
294 typedef DTI_DATA_BASE * DTI_HANDLE; /* For calling the data base */
295
296
297 /*
298 * Link Table, parameter for each DTI connection.
299 * For detail information - please see the MSC DTILIB.DOC
300 */
301 typedef struct
302 {
303 U32 link_id; /* Identity for the link communication */
304 U8 direction; /* Direction for the link communication */
305 U32 version; /* DTI Version */
306 U8 instance; /* Instance of the entity */
307 U8 interfac; /* Selected interface */
308 U8 channel; /* Channel number */
309 U32 link_options; /* type of flow control, queueing, .. */
310 T_HANDLE link_handle; /* Handle for the communication channel */
311 U8 queue_size; /* DTI queue size */
312 U8 queue_len; /* length of the queue */
313 T_DTI2_DATA_IND *dti_data_ind; /* DTI data primitive */
314 U8 connect_state; /* State for connect */
315 U8 rx_state; /* State for receive */
316 U8 tx_state; /* State for send */
317 U32 next_link; /* Pointer to next DTI_LINK struct, last */
318 /* linkpointer = NULL */
319 U8 link_type; /* indicate Riviera, NULL or GPF link */
320 #ifdef FF_TCP_IP
321 U16 ul_next_atp_data; /* data to be got from ATP */
322 U8 atp_tx_state; /* flow state of ATP */
323 U8 dti_id; /* ACI identity for the link */
324 DTI_DATA_BASE* entity_db; /* pointer back to home database */
325 UINT16 port_nb; /* port number, if linked towards RIV */
326 #endif
327
328 } DTI_LINK;
329
330 /**********************************************************************************
331 * Prototypes for DTILIB
332 **********************************************************************************/
333
334 EXTERN DTI_HANDLE dti_init(
335 U8 maximum_links,
336 T_HANDLE handle,
337 U32 entity_options,
338 void (sig_callback(
339 U8 instance,
340 U8 interfac,
341 U8 channel,
342 U8 reason,
343 T_DTI2_DATA_IND *dti_data_ind
344 ) )
345 );
346
347 EXTERN void dti_deinit( DTI_HANDLE hDTI);
348
349 EXTERN BOOL dti_open(
350 DTI_HANDLE hDTI,
351 U8 instance,
352 U8 interfac,
353 U8 channel,
354 U8 queue_size,
355 U8 direction,
356 U32 link_options,
357 U32 version,
358 U8 *neighbor_entity,
359 U32 link_id
360 );
361
362 EXTERN BOOL dti_resolve_link_id(
363 DTI_HANDLE hDTI,
364 U8 instance,
365 U8 interfac,
366 U8 channel,
367 U32 *link_id
368 );
369
370 EXTERN void dti_close(
371 DTI_HANDLE hDTI,
372 U8 instance,
373 U8 interfac,
374 U8 channel,
375 BOOL flush
376 );
377
378 EXTERN void dti_start( DTI_HANDLE hDTI, U8 instance, U8 interfac, U8 channel);
379
380 EXTERN void dti_stop( DTI_HANDLE hDTI, U8 instance, U8 interfac, U8 channel);
381
382 EXTERN void dti_send_data(
383 DTI_HANDLE hDTI,
384 U8 instance,
385 U8 interfac,
386 U8 channel,
387 T_DTI2_DATA_IND *dti_data_ind
388 );
389
390 EXTERN void mfree_desc(DTI_HANDLE hDTI, T_desc_list2 * desc_list2);
391
392 EXTERN BOOL dti_tx_buffer_status(
393 DTI_HANDLE hDTI,
394 U8 instance,
395 U8 interfac,
396 U8 channel,
397 U8 *queue_len
398 );
399
400 /**********************************************************************************
401 * Functions in ip_kerp.c
402 **********************************************************************************/
403
404 #if defined (DTI2)
405 EXTERN GLOBAL void dti_dti_connect_req (DTI_HANDLE hDTI,
406 T_DTI2_CONNECT_REQ *dti_connect_req);
407
408 EXTERN GLOBAL void dti_dti_disconnect_req (DTI_HANDLE hDTI,
409 T_DTI2_DISCONNECT_REQ *dti_disconnect_req);
410
411 EXTERN GLOBAL void dti_dti_disconnect_ind (DTI_HANDLE hDTI,
412 T_DTI2_DISCONNECT_IND *dti_disconnect_ind);
413
414 EXTERN GLOBAL void dti_dti_connect_cnf (DTI_HANDLE hDTI,
415 T_DTI2_CONNECT_CNF *dti_connect_cnf);
416
417 EXTERN GLOBAL void dti_dti_connect_res (DTI_HANDLE hDTI,
418 T_DTI2_CONNECT_RES *dti_connect_res);
419
420 EXTERN GLOBAL void dti_dti_connect_ind (DTI_HANDLE hDTI,
421 T_DTI2_CONNECT_IND *dti_connect_ind);
422 #endif
423
424 EXTERN GLOBAL void dti_dti_ready_ind (DTI_HANDLE hDTI,
425 T_DTI2_READY_IND *dti_ready_ind);
426
427 EXTERN GLOBAL void dti_dti_data_req (DTI_HANDLE hDTI,
428 T_DTI2_DATA_REQ *dti_data_req);
429
430 EXTERN GLOBAL void dti_dti_getdata_req (DTI_HANDLE hDTI,
431 T_DTI2_GETDATA_REQ *dti_getdata_req);
432
433 EXTERN GLOBAL void dti_dti_data_ind (DTI_HANDLE hDTI,
434 T_DTI2_DATA_IND *dti_data_ind);
435
436 /**********************************************************************************
437 * Test functions used in the windows operating system.
438 **********************************************************************************/
439
440 #if defined (_SIMULATION_)
441 EXTERN void dti_dti_data_test_ind (DTI_HANDLE hDTI,
442 T_DTI2_DATA_TEST_IND *dti_data_test_ind);
443
444 EXTERN void dti_dti_data_test_req (DTI_HANDLE hDTI,
445 T_DTI2_DATA_TEST_REQ *dti_data_test_req);
446
447 EXTERN BOOL dti_make_new_desc (DTI_HANDLE hDTI,
448 T_desc2 **p_desc_new,
449 U16 malloc_len,
450 BOOL buff_init_0);
451
452 #endif /* _SIMULATION_ */
453 #endif /* DTI_H */