comparison src/g23m-fad/udp/udp_pei.c @ 1:d393cd9bb723

src/g23m-*: initial import from Magnetite
author Mychaela Falconia <falcon@freecalypso.org>
date Sun, 15 Jul 2018 04:40:46 +0000
parents
children
comparison
equal deleted inserted replaced
0:b6a5e36de839 1:d393cd9bb723
1 /*
2 +----------------------------------------------------------------------------
3 | Project : GSM-FaD (8411)
4 | Modul : UDP_PEI
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 : This Modul defines the process body interface
18 | for the component Internet Protocol of the mobile station
19 +----------------------------------------------------------------------------
20 */
21
22 #define ENTITY_UDP
23
24 /*==== INCLUDES ===================================================*/
25
26 #include <string.h>
27 #include <stdlib.h>
28 #include <stddef.h>
29 #include "typedefs.h"
30 #include "pcm.h"
31 #include "vsi.h"
32 #include "macdef.h" /* to get PFREE_DESC2 */
33 #include "custom.h"
34 #include "gsm.h"
35 #include "message.h"
36 #include "ccdapi.h"
37 #include "prim.h"
38 #include "cus_udp.h"
39 #include "cnf_udp.h"
40 #include "mon_udp.h"
41 #include "pei.h"
42 #include "tok.h"
43 #include "dti.h" /* to get dti lib */
44 #include "udp.h"
45
46 /*==== CONST ======================================================*/
47
48 /*==== VAR EXPORT =================================================*/
49
50 DTI_HANDLE udp_hDTI;
51 /* The DTI data base is being allocated in function dti_init(). */
52
53 T_HANDLE hCommACI = VSI_ERROR; /* ACI Communication */
54 T_HANDLE hCommLL = VSI_ERROR; /* LL Communication */
55 T_HANDLE hCommHL = VSI_ERROR; /* HL Communication */
56 T_HANDLE udp_handle;
57
58 T_UDP_DATA udp_data_base [UDP_INSTANCES], * udp_data;
59
60 /*==== VAR LOCAL ==================================================*/
61
62 static BOOL first_access = TRUE;
63 static T_MONITOR udp_mon;
64
65 /*==== FUNCTIONS ==================================================*/
66
67 /*
68 +--------------------------------------------------------------------+
69 | PROJECT : GSM-FaD (8411) MODULE : UDP_PEI |
70 | STATE : code ROUTINE : pei_not_supported |
71 +--------------------------------------------------------------------+
72
73 PURPOSE : An unsupported primitive is received.
74 */
75
76 static void pei_not_supported (void * data)
77 {
78 TRACE_FUNCTION ("pei_not_supported()");
79 PFREE (data);
80 }
81
82 /* Use MAK_FUNC_0 for primitives which contains no SDU.
83 * Use MAK_FUNC_S for primitives which contains a SDU. */
84
85 /* Jumptable for the UDPA service access point.
86 * Contains the processing-function addresses and
87 * opcodes of request and response primitives. */
88
89 static const T_FUNC udpa_table[] =
90 {
91 MAK_FUNC_0 (ker_udpa_dti_req, UDPA_DTI_REQ),
92 MAK_FUNC_0 (ker_udpa_config_req, UDPA_CONFIG_REQ)
93 };
94
95 /* Jumptable for the UDP service access point.
96 * Contains the processing-function addresses and
97 * opcodes of request and response primitives. */
98
99 static const T_FUNC udp_table[] =
100 {
101 MAK_FUNC_0 (ker_udp_bind_req, UDP_BIND_REQ),
102 MAK_FUNC_0 (ker_udp_closeport_req, UDP_CLOSEPORT_REQ),
103 MAK_FUNC_0 (ker_udp_error_res, UDP_ERROR_RES),
104 MAK_FUNC_0 (ker_udp_shutdown_res, UDP_SHUTDOWN_RES),
105 };
106
107 /* Jumptable for the IP service access point.
108 * Contains the processing-function addresses and
109 * opcodes of indication and confirm primitives. */
110
111 static const T_FUNC ip_table[] =
112 {
113 MAK_FUNC_0 (ker_ip_addr_cnf, IP_ADDR_CNF),
114 };
115
116 /* Jumptable for the DTI service access point of the higher layer.
117 * Contains the processing-function addresses and
118 * opcodes of request and response primitives. */
119
120 static const T_FUNC dti_hl_table[] =
121 {
122 MAK_FUNC_0 (pei_dti_dti_connect_req, DTI2_CONNECT_REQ),
123 MAK_FUNC_0 (pei_dti_dti_connect_res, DTI2_CONNECT_RES),
124 MAK_FUNC_0 (pei_dti_dti_disconnect_req, DTI2_DISCONNECT_REQ),
125 MAK_FUNC_0 (pei_dti_dti_getdata_req, DTI2_GETDATA_REQ),
126 MAK_FUNC_0 (pei_dti_dti_data_req, DTI2_DATA_REQ),
127 #ifdef _SIMULATION_
128 MAK_FUNC_S (pei_dti_dti_data_test_req, DTI2_DATA_TEST_REQ)
129 #endif
130 };
131
132 /* Jumptable for the DTI service access point of the lower layer.
133 * Contains the processing-function addresses and
134 * opcodes of indication and confirm primitives. */
135
136 static const T_FUNC dti_ll_table[] =
137 {
138 MAK_FUNC_0 (pei_dti_dti_connect_ind, DTI2_CONNECT_IND),
139 MAK_FUNC_0 (pei_dti_dti_connect_cnf, DTI2_CONNECT_CNF),
140 MAK_FUNC_0 (pei_dti_dti_disconnect_ind, DTI2_DISCONNECT_IND),
141 MAK_FUNC_0 (pei_dti_dti_ready_ind, DTI2_READY_IND),
142 MAK_FUNC_0 (pei_dti_dti_data_ind, DTI2_DATA_IND),
143 #ifdef _SIMULATION_
144 MAK_FUNC_S (pei_dti_dti_data_test_ind, DTI2_DATA_TEST_IND)
145 #endif
146 };
147
148 /*
149 +--------------------------------------------------------------------+
150 | PROJECT : GSM-FaD (8411) MODULE : UDP_PEI |
151 | STATE : code ROUTINE : pei_primitive |
152 +--------------------------------------------------------------------+
153
154 PURPOSE : Process protocol specific primitive.
155 */
156
157 static SHORT pei_primitive (void * ptr)
158 {
159 /*
160 * @ADAPT@
161 * |
162 * UL HIGHER LAYER
163 * |
164 * v
165 * +-----------(udp)----------+
166 * | |
167 * | UDP |
168 * | |
169 * +-------------^------------+
170 * |
171 * DL LOWER LAYER
172 * |
173 */
174
175 /* Please note that the words "Downlink" and "Uplink"
176 * should not be used here, because their meaning
177 * is directly opposite to what is being meant here.
178 * So let us correct the creator's mistake by
179 * pronouncing "DL" as "Downlayer" and
180 * "UL" as "Uplayer" and all should fit well
181 * -- as long as you can remember this ... */
182
183 TRACE_FUNCTION ("pei_primitive()");
184
185 if (ptr != NULL)
186 {
187 T_PRIM * prim = ptr;
188 ULONG opc = prim->custom.opc;
189 USHORT n;
190 const T_FUNC * table;
191
192 VSI_PPM_REC (& prim->custom, __FILE__, __LINE__);
193
194 PTRACE_IN (opc);
195
196 udp_data = GET_INSTANCE (prim);
197
198 switch (SAP_NR (opc))
199 {
200 case SAP_NR (UDP_UL):
201 table = udp_table;
202 n = TAB_SIZE (udp_table);
203 break;
204 case SAP_NR (UDPA_UL):
205 table = udpa_table;
206 n = TAB_SIZE (udpa_table);
207 break;
208 case IP_DL:
209 table = ip_table;
210 n = TAB_SIZE (ip_table);
211 break;
212 case DTI2_UL:
213 table = dti_hl_table;
214 n = TAB_SIZE (dti_hl_table);
215 /*
216 * to be able to distinguish DTI1/DTI2 opcodes,
217 * the ones for DTI2 start at 0x50
218 */
219 opc -= 0x50;
220 break;
221 case DTI2_DL:
222 table = dti_ll_table;
223 n = TAB_SIZE (dti_ll_table);
224 /*
225 * to be able to distinguish DTI1/DTI2 opcodes,
226 * the ones for DTI2 start at 0x50
227 */
228 opc -= 0x50;
229 break;
230 default:
231 table = NULL;
232 n = 0;
233 break;
234 }
235
236 if (table NEQ NULL)
237 {
238 if (PRIM_NR (opc) < n)
239 {
240 table += PRIM_NR (opc);
241 #ifdef PALLOC_TRANSITION
242 P_SDU(prim) = table->soff ?
243 (T_sdu *) ((char *) & prim->data + table->soff) :
244 0;
245 #ifndef NO_COPY_ROUTING
246 P_LEN(prim) = table->size + sizeof (T_PRIM_HEADER);
247 #endif
248 #endif
249 JUMP (table->func) (P2D (prim));
250 }
251 else
252 {
253 pei_not_supported (P2D (prim));
254 }
255 return PEI_OK;
256 }
257
258 /* Primitive is no GSM primitive
259 * then forward to the environment */
260
261 #ifdef GSM_ONLY
262 PFREE (P2D (prim));
263 return PEI_ERROR;
264 #else
265 if (opc & SYS_MASK)
266 vsi_c_primitive (VSI_CALLER prim);
267 else
268 {
269 PFREE (P2D (prim));
270 return PEI_ERROR;
271 }
272 #endif
273 }
274 return PEI_OK;
275 }
276
277 /*
278 +--------------------------------------------------------------------+
279 | PROJECT : GSM-PS (6147) MODULE : IP_PEI |
280 | STATE : code ROUTINE : pei_init |
281 +--------------------------------------------------------------------+
282
283 PURPOSE : Initialize Protocol Stack Entity
284 */
285
286 static SHORT pei_init (T_HANDLE handle)
287 {
288 udp_handle = handle;
289
290 TRACE_FUNCTION ("pei_init()");
291
292 udp_data = udp_data_base + UDP_SINGLE_LAYER;
293
294 INIT_STATE (KER, DEACTIVATED);
295 INIT_STATE (HILA, DOWN);
296 INIT_STATE (LOLA, DOWN);
297
298 if ((udp_hDTI = dti_init (
299 2 * UDP_INSTANCES,
300 udp_handle,
301 DTI_DEFAULT_OPTIONS,
302 pei_sig_callback
303 )) EQ D_NO_DATA_BASE)
304 return PEI_ERROR;
305
306 /*
307 if (hCommHL < VSI_OK)
308 if ((hCommHL = vsi_c_open (VSI_CALLER WAP_NAME)) < VSI_OK)
309 return PEI_ERROR;
310 */
311 if (hCommLL < VSI_OK)
312 if ((hCommLL = vsi_c_open (VSI_CALLER IP_NAME)) < VSI_OK)
313 return PEI_ERROR;
314
315 if (hCommACI < VSI_OK)
316 if ((hCommACI = vsi_c_open (VSI_CALLER ACI_NAME)) < VSI_OK)
317 return PEI_ERROR;
318
319 /* Init global parameters */
320 init_udp ();
321
322 return PEI_OK;
323 }
324
325 /*
326 +--------------------------------------------------------------------+
327 | PROJECT : GSM-FaD (8411) MODULE : UDP_PEI |
328 | STATE : code ROUTINE : pei_exit |
329 +--------------------------------------------------------------------+
330
331 PURPOSE : Close Resources and terminate
332 */
333
334 static SHORT pei_exit (void)
335 {
336 TRACE_FUNCTION ("pei_exit()");
337
338 /* Clean up communication */
339
340 vsi_c_close (VSI_CALLER hCommHL);
341 hCommHL = VSI_ERROR;
342
343 vsi_c_close (VSI_CALLER hCommLL);
344 hCommLL = VSI_ERROR;
345
346 vsi_c_close (VSI_CALLER hCommACI);
347 hCommACI = VSI_ERROR;
348
349 if (udp_hDTI NEQ D_NO_DATA_BASE)
350 dti_deinit (udp_hDTI);
351
352 return PEI_OK;
353 }
354
355 /*
356 +--------------------------------------------------------------------+
357 | PROJECT : GSM-FaD (8411) MODULE : UDP_PEI |
358 | STATE : code ROUTINE : pei_config |
359 +--------------------------------------------------------------------+
360
361 PURPOSE : Dynamic Configuration
362 */
363
364 #ifndef NCONFIG
365 static KW_DATA kwtab[] = {
366 {"", 0}
367 };
368 KW_DATA partab[] = {
369 {"", 0}
370 };
371 #endif
372
373 static SHORT pei_config (T_PEI_CONFIG inString)
374 {
375 #ifndef NCONFIG
376 char * s = inString;
377 char * keyw;
378 char * val[10];
379 TRACE_FUNCTION ("pei_config()");
380 TRACE_EVENT (s);
381
382 tok_init (s);
383
384 /* Parse next keyword and number of variables */
385 while ((tok_next(&keyw,val)) NEQ TOK_EOCS)
386 {
387 switch ((tok_key ((KW_DATA *) kwtab, keyw)))
388 {
389 case TOK_NOT_FOUND:
390 TRACE_ERROR ("[PEI_CONFIG]: Illegal Keyword");
391 break;
392
393 default:
394 break;
395 }
396 }
397 #endif
398 return PEI_OK;
399 }
400
401 /*
402 +--------------------------------------------------------------------+
403 | PROJECT : GSM-FaD (8411) MODULE : UDP_PEI |
404 | STATE : code ROUTINE : pei_monitor |
405 +--------------------------------------------------------------------+
406
407 PURPOSE : Monitoring of physical Parameters
408 */
409
410 static SHORT pei_monitor (void ** monitor)
411 {
412 TRACE_FUNCTION ("pei_monitor()");
413
414 udp_mon.version = VERSION_UDP;
415 *monitor = & udp_mon;
416 return PEI_OK;
417 }
418
419 /*
420 +--------------------------------------------------------------------+
421 | PROJECT : GSM-FaD (8411) MODULE : UDP_PEI |
422 | STATE : code ROUTINE : pei_create |
423 +--------------------------------------------------------------------+
424
425 PURPOSE : Create the Protocol Stack Entity
426 */
427
428 SHORT udp_pei_create (const T_PEI_INFO ** info)
429 {
430 static const T_PEI_INFO pei_info =
431 {
432 "UDP",
433 {
434 pei_init,
435 pei_exit,
436 pei_primitive,
437 NULL, /* no timeout function */
438 NULL, /* no signal function */
439 NULL, /* no run function */
440 pei_config,
441 pei_monitor
442 },
443 1024, /* stack size */
444 10, /* queue entries */
445 170, /* priority */
446 0, /* number of timers */
447 0x03|PRIM_NO_SUSPEND/* flags */
448 };
449
450 TRACE_FUNCTION ("pei_create()");
451
452 /* Close resources if open */
453 if (first_access)
454 first_access = FALSE;
455 else
456 pei_exit ();
457
458 /* Export startup configuration data */
459 *info = & pei_info;
460
461 return PEI_OK;
462 }
463
464 /*
465 +----------------------------------------------------------------------------
466 | Function: pei_sig_callback
467 +----------------------------------------------------------------------------
468 | PURPOSE : Callback function for DTILIB
469 +----------------------------------------------------------------------------
470 */
471
472 void pei_sig_callback (
473 U8 instance,
474 U8 interfac,
475 U8 channel,
476 U8 reason,
477 T_DTI2_DATA_IND * dti_data_ind
478 ) {
479 TRACE_FUNCTION ("pei_sig_callback()");
480
481 #ifdef _SIMULATION_
482 if (instance NEQ UDP_DTI_DEF_INSTANCE || channel NEQ UDP_DTI_DEF_CHANNEL)
483 {
484 TRACE_ERROR ("[PEI_SIG_CALLBACK] channel or instance not valid!");
485 return; /* error, not found */
486 }
487 #endif
488
489 /* udp_data = udp_data_base + instance; */
490
491 if (udp_hDTI NEQ D_NO_DATA_BASE)
492 {
493 switch (reason)
494 {
495 case DTI_REASON_CONNECTION_OPENED:
496 switch (interfac)
497 {
498 case UDP_DTI_HL_INTERFACE:
499 sig_dti_ker_connection_opened_hl_ind ();
500 break;
501 case UDP_DTI_LL_INTERFACE:
502 sig_dti_ker_connection_opened_ll_ind ();
503 break;
504 default:
505 TRACE_ERROR ("unknown DTILIB interface parameter");
506 break;
507 }
508 break;
509
510 case DTI_REASON_CONNECTION_CLOSED:
511 switch (interfac)
512 {
513 case UDP_DTI_HL_INTERFACE:
514 sig_dti_ker_connection_closed_hl_ind ();
515 break;
516 case UDP_DTI_LL_INTERFACE:
517 sig_dti_ker_connection_closed_ll_ind ();
518 break;
519 default:
520 TRACE_ERROR ("unknown DTILIB interface parameter");
521 break;
522 }
523 break;
524
525 case DTI_REASON_DATA_RECEIVED:
526 switch (interfac)
527 {
528 case UDP_DTI_HL_INTERFACE:
529 /*
530 * DTI2_DATA_IND is interpreted as DTI2_DATA_REQ
531 */
532 PACCESS (dti_data_ind);
533 {
534 PPASS (dti_data_ind, dti_data_req, DTI2_DATA_REQ);
535 sig_dti_ker_data_received_hl_ind (dti_data_req);
536 }
537 break;
538 case UDP_DTI_LL_INTERFACE:
539 sig_dti_ker_data_received_ll_ind (dti_data_ind);
540 break;
541 default:
542 TRACE_ERROR ("unknown DTILIB interface parameter");
543 break;
544 }
545 break;
546
547 case DTI_REASON_TX_BUFFER_READY:
548 switch (interfac)
549 {
550 case UDP_DTI_HL_INTERFACE:
551 sig_dti_ker_tx_buffer_ready_hl_ind ();
552 break;
553 case UDP_DTI_LL_INTERFACE:
554 sig_dti_ker_tx_buffer_ready_ll_ind ();
555 break;
556 default:
557 TRACE_ERROR ("unknown DTILIB interface parameter");
558 break;
559 }
560 break;
561
562 case DTI_REASON_TX_BUFFER_FULL:
563 switch (interfac)
564 {
565 case UDP_DTI_HL_INTERFACE:
566 sig_dti_ker_tx_buffer_full_hl_ind (); /* DUMMY function */
567 break;
568 case UDP_DTI_LL_INTERFACE:
569 sig_dti_ker_tx_buffer_full_ll_ind (); /* DUMMY function */
570 break;
571 default:
572 TRACE_ERROR ("unknown DTILIB interface parameter");
573 break;
574 }
575 break;
576
577 default:
578 TRACE_ERROR ("unknown DTILIB reason parameter");
579 break;
580 }
581 }
582 else
583 {
584 TRACE_ERROR ("Pointer to DTILIB database not existing");
585 }
586 }
587
588 /*
589 +---------------------------------------------------------------------------+
590 | PROJECT: UDP MODULE: udp_pei.c |
591 | STATE: code ROUTINE: pei_dti_dti_connect_req |
592 +---------------------------------------------------------------------------+
593
594 PURPOSE: pei_dti_dti_connect_req wraps dti_dti_connect_req
595 */
596
597 void pei_dti_dti_connect_req (T_DTI2_CONNECT_REQ * dti_connect_req)
598 {
599 dti_dti_connect_req (udp_hDTI, dti_connect_req);
600 }
601
602 /*
603 +---------------------------------------------------------------------------+
604 | PROJECT: UDP MODULE: udp_pei.c |
605 | STATE: code ROUTINE: pei_dti_dti_disconnect_ind |
606 +---------------------------------------------------------------------------+
607
608 PURPOSE: pei_dti_dti_disconnect_ind wraps dti_dti_disconnect_ind
609 */
610
611 void pei_dti_dti_disconnect_ind (T_DTI2_DISCONNECT_IND * dti_disconnect_ind)
612 {
613 dti_dti_disconnect_ind (udp_hDTI, dti_disconnect_ind);
614 }
615
616 /*
617 +---------------------------------------------------------------------------+
618 | PROJECT: UDP MODULE: udp_pei.c |
619 | STATE: code ROUTINE: pei_dti_dti_connect_cnf |
620 +---------------------------------------------------------------------------+
621
622 PURPOSE: pei_dti_dti_connect_cnf wraps dti_dti_connect_cnf
623 */
624
625 void pei_dti_dti_connect_cnf (T_DTI2_CONNECT_CNF * dti_connect_cnf)
626 {
627 dti_dti_connect_cnf (udp_hDTI, dti_connect_cnf);
628 }
629
630 /*
631 +---------------------------------------------------------------------------+
632 | PROJECT: UDP MODULE: udp_pei.c |
633 | STATE: code ROUTINE: pei_dti_dti_connect_ind |
634 +---------------------------------------------------------------------------+
635
636 PURPOSE: pei_dti_dti_connect_ind wraps dti_dti_connect_ind
637 */
638
639 void pei_dti_dti_connect_ind (T_DTI2_CONNECT_IND * dti_connect_ind)
640 {
641 dti_dti_connect_ind (udp_hDTI, dti_connect_ind);
642 }
643
644 /*
645 +---------------------------------------------------------------------------+
646 | PROJECT: UDP MODULE: udp_pei.c |
647 | STATE: code ROUTINE: pei_dti_dti_connect_res |
648 +---------------------------------------------------------------------------+
649
650 PURPOSE: pei_dti_dti_connect_res wraps dti_dti_connect_res
651 */
652
653 void pei_dti_dti_connect_res (T_DTI2_CONNECT_RES * dti_connect_res)
654 {
655 dti_dti_connect_res (udp_hDTI, dti_connect_res);
656 }
657
658 /*
659 +---------------------------------------------------------------------------+
660 | PROJECT: UDP MODULE: udp_pei.c |
661 | STATE: code ROUTINE: pei_dti_dti_disconnect_req |
662 +---------------------------------------------------------------------------+
663
664 PURPOSE: pei_dti_dti_disconnect_req wraps dti_dti_disconnect_req
665 */
666
667 void pei_dti_dti_disconnect_req (T_DTI2_DISCONNECT_REQ * dti_disconnect_req)
668 {
669 dti_dti_disconnect_req (udp_hDTI, dti_disconnect_req);
670 }
671
672 /*
673 +---------------------------------------------------------------------------+
674 | PROJECT: UDP MODULE: udp_pei.c |
675 | STATE: code ROUTINE: pei_dti_dti_data_req |
676 +---------------------------------------------------------------------------+
677
678 PURPOSE: pei_dti_dti_data_req wraps dti_dti_data_req
679 */
680
681 void pei_dti_dti_data_req (T_DTI2_DATA_REQ * dti_data_req)
682 {
683 dti_dti_data_req (udp_hDTI, dti_data_req);
684 }
685
686 /*
687 +---------------------------------------------------------------------------+
688 | PROJECT: UDP MODULE: udp_pei.c |
689 | STATE: code ROUTINE: pei_dti_dti_getdata_req |
690 +---------------------------------------------------------------------------+
691
692 PURPOSE: pei_dti_dti_getdata_req wraps dti_dti_getdata_req
693 */
694
695 void pei_dti_dti_getdata_req (T_DTI2_GETDATA_REQ * dti_getdata_req)
696 {
697 dti_dti_getdata_req (udp_hDTI, dti_getdata_req);
698 }
699
700 /*
701 +---------------------------------------------------------------------------+
702 | PROJECT: UDP MODULE: udp_pei.c |
703 | STATE: code ROUTINE: pei_dti_dti_data_ind |
704 +---------------------------------------------------------------------------+
705
706 PURPOSE: pei_dti_dti_data_ind wraps dti_dti_data_ind
707 */
708
709 void pei_dti_dti_data_ind (T_DTI2_DATA_IND * dti_data_ind)
710 {
711 dti_dti_data_ind (udp_hDTI, dti_data_ind);
712 }
713
714 /*
715 +---------------------------------------------------------------------------+
716 | PROJECT: UDP MODULE: udp_pei.c |
717 | STATE: code ROUTINE: pei_dti_dti_ready_ind |
718 +---------------------------------------------------------------------------+
719
720 PURPOSE: pei_dti_dti_ready_ind wraps dti_dti_ready_ind
721 */
722
723 void pei_dti_dti_ready_ind (T_DTI2_READY_IND * dti_ready_ind)
724 {
725 dti_dti_ready_ind (udp_hDTI, dti_ready_ind);
726 }
727
728 #ifdef _SIMULATION_
729
730 /*
731 +---------------------------------------------------------------------------+
732 | PROJECT: UDP MODULE: udp_pei.c |
733 | STATE: code ROUTINE: pei_dti_dti_data_test_req |
734 +---------------------------------------------------------------------------+
735
736 PURPOSE: pei_dti_dti_data_test_req wraps dti_dti_data_test_req
737 */
738
739 void pei_dti_dti_data_test_req (T_DTI2_DATA_TEST_REQ * dti_data_test_req)
740 {
741 dti_dti_data_test_req (udp_hDTI, dti_data_test_req);
742 }
743
744 /*
745 +---------------------------------------------------------------------------+
746 | PROJECT: UDP MODULE: udp_pei.c |
747 | STATE: code ROUTINE: pei_dti_dti_data_test_ind |
748 +---------------------------------------------------------------------------+
749
750 PURPOSE: pei_dti_dti_data_test_ind wraps dti_dti_data_test_ind
751 */
752
753 void pei_dti_dti_data_test_ind (T_DTI2_DATA_TEST_IND * dti_data_test_ind)
754 {
755 dti_dti_data_test_ind (udp_hDTI, dti_data_test_ind);
756 }
757
758 #endif /* _SIMULATION_ */
759
760 /*-------------------------------------------------------------------------*/
761