comparison src/g23m-fad/ip/ip_pei.c @ 1:fa8dc04885d8

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