blob: 1b505a56d0ecc936f86cea9c024265a5233eba79 [file] [log] [blame]
rjw6c1fd8f2022-11-30 14:33:01 +08001/*****************************************************************************
2* Copyright Statement:
3* --------------------
4* This software is protected by Copyright and the information contained
5* herein is confidential. The software may not be copied and the information
6* contained herein may not be used or disclosed except with the written
7* permission of MediaTek Inc. (C) 2005
8*
9* BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
10* THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
11* RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
12* AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
13* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
14* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
15* NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
16* SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
17* SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
18* THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
19* NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
20* SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
21*
22* BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
23* LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
24* AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
25* OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
26* MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
27*
28* THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
29* WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
30* LAWS PRINCIPLES. ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
31* RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
32* THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
33*
34*****************************************************************************/
35
36/*****************************************************************************
37 *
38 * Filename:
39 * ---------
40 * ft_main.c
41 *
42 * Project:
43 * --------
44 * Maui_Software
45 *
46 * Description:
47 * ------------
48 *
49 * Author:
50 * -------
51 * -------
52 *
53 *============================================================================
54 * HISTORY
55 * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
56 *------------------------------------------------------------------------------
57 * removed!
58 * removed!
59 * removed!
60 *
61 * removed!
62 * removed!
63 * removed!
64 * removed!
65 *
66 * removed!
67 * removed!
68 * removed!
69 * removed!
70 * removed!
71 * removed!
72 * removed!
73 *
74 * removed!
75 * removed!
76 * removed!
77 * removed!
78 *
79 * removed!
80 * removed!
81 * removed!
82 * removed!
83 *
84 * removed!
85 * removed!
86 * removed!
87 * removed!
88 *
89 * removed!
90 * removed!
91 * removed!
92 * removed!
93 * removed!
94 *
95 * removed!
96 * removed!
97 * removed!
98 *
99 * removed!
100 * removed!
101 * removed!
102 *
103 * removed!
104 * removed!
105 * removed!
106 *
107 * removed!
108 * removed!
109 * removed!
110 *
111 * removed!
112 * removed!
113 * removed!
114 *
115 * removed!
116 * removed!
117 *
118 * removed!
119 * removed!
120 * removed!
121 *
122 * removed!
123 * removed!
124 * removed!
125 * removed!
126 *
127 * removed!
128 * removed!
129 *
130 * removed!
131 * removed!
132 * removed!
133 * removed!
134 * removed!
135 *
136 * removed!
137 * removed!
138 * removed!
139 * removed!
140 * removed!
141 * removed!
142 *
143 *
144 *
145 * removed!
146 * removed!
147 * removed!
148 * removed!
149 *
150 * removed!
151 * removed!
152 *
153 * removed!
154 * removed!
155 * removed!
156 *
157 * removed!
158 * removed!
159 * removed!
160 *
161 * removed!
162 * removed!
163 * removed!
164 * removed!
165 * removed!
166 * removed!
167 *
168 * removed!
169 * removed!
170 * removed!
171 * removed!
172 * removed!
173 *
174 * removed!
175 * removed!
176 * removed!
177 *
178 * removed!
179 * removed!
180 * removed!
181 *
182 * removed!
183 * removed!
184 * removed!
185 *
186 * removed!
187 * removed!
188 * removed!
189 *
190 * removed!
191 * removed!
192 * removed!
193 *
194 * removed!
195 * removed!
196 * removed!
197 *
198 * removed!
199 * removed!
200 * removed!
201 *
202 * removed!
203 * removed!
204 * removed!
205 *
206 * removed!
207 * removed!
208 * removed!
209 *
210 * removed!
211 * removed!
212 * removed!
213 * removed!
214 * removed!
215 *
216 * removed!
217 * removed!
218 * removed!
219 *
220 * removed!
221 * removed!
222 * removed!
223 * removed!
224 * removed!
225 *
226 * removed!
227 * removed!
228 * removed!
229 *
230 * removed!
231 * removed!
232 * removed!
233 * removed!
234 * removed!
235 * removed!
236 * removed!
237 * removed!
238 * removed!
239 * removed!
240 *
241 * removed!
242 * removed!
243 * removed!
244 *
245 * removed!
246 * removed!
247 * removed!
248 * removed!
249 * removed!
250 *
251 * removed!
252 * removed!
253 * removed!
254 *
255 * removed!
256 * removed!
257 * removed!
258 *
259 * removed!
260 * removed!
261 * removed!
262 *
263 * removed!
264 * removed!
265 * removed!
266 *
267 * removed!
268 * removed!
269 * removed!
270 *
271 * removed!
272 * removed!
273 * removed!
274 *
275 * removed!
276 * removed!
277 * removed!
278 *
279 * removed!
280 * removed!
281 * removed!
282 *
283 * removed!
284 * removed!
285 * removed!
286 *
287 * removed!
288 * removed!
289 * removed!
290 *
291 * removed!
292 * removed!
293 * removed!
294 *
295 * removed!
296 * removed!
297 * removed!
298 *
299 * removed!
300 * removed!
301 * removed!
302 *
303 * removed!
304 * removed!
305 * removed!
306 *
307 * removed!
308 * removed!
309 * removed!
310 *
311 * removed!
312 * removed!
313 * removed!
314 *
315 * removed!
316 * removed!
317 * removed!
318 *
319 * removed!
320 * removed!
321 * removed!
322 *
323 * removed!
324 * removed!
325 * removed!
326 *
327 * removed!
328 * removed!
329 * removed!
330 *
331 * removed!
332 * removed!
333 * removed!
334 *
335 * removed!
336 * removed!
337 * removed!
338 *
339 * removed!
340 * removed!
341 * removed!
342 *
343 * removed!
344 * removed!
345 * removed!
346 *
347 * removed!
348 * removed!
349 * removed!
350 *
351 * removed!
352 * removed!
353 * removed!
354 *
355 * removed!
356 * removed!
357 * removed!
358 *
359 * removed!
360 * removed!
361 * removed!
362 *
363 *
364 * removed!
365 * removed!
366 * removed!
367 *
368 * removed!
369 * removed!
370 * removed!
371 *
372 * removed!
373 * removed!
374 * removed!
375 *
376 * removed!
377 * removed!
378 * removed!
379 *
380 * removed!
381 * removed!
382 * removed!
383 *
384 * removed!
385 * removed!
386 * removed!
387 *
388 * removed!
389 * removed!
390 * removed!
391 *
392 * removed!
393 * removed!
394 * removed!
395 *
396 * removed!
397 * removed!
398 * removed!
399 *
400 * removed!
401 * removed!
402 * removed!
403 *
404 * removed!
405 * removed!
406 * removed!
407 *
408 * removed!
409 * removed!
410 * removed!
411 *
412 * removed!
413 * removed!
414 * removed!
415 *
416 * removed!
417 * removed!
418 * removed!
419 *
420 * removed!
421 * removed!
422 * removed!
423 *
424 * removed!
425 * removed!
426 * removed!
427 *
428 * removed!
429 * removed!
430 * removed!
431 *
432 * removed!
433 * removed!
434 * removed!
435 *
436 * removed!
437 * removed!
438 *
439 *
440 * removed!
441 * removed!
442 * removed!
443 *
444 * removed!
445 * removed!
446 * removed!
447 * removed!
448 *
449 * removed!
450 * removed!
451 * removed!
452 *
453 * removed!
454 * removed!
455 * removed!
456 *
457 * removed!
458 * removed!
459 * removed!
460 *
461 * removed!
462 * removed!
463 * removed!
464 *
465 * removed!
466 * removed!
467 * removed!
468 *
469 * removed!
470 * removed!
471 * removed!
472 *
473 * removed!
474 * removed!
475 * removed!
476 *
477 * removed!
478 * removed!
479 * removed!
480 *
481 * removed!
482 * removed!
483 * removed!
484 *
485 * removed!
486 * removed!
487 * removed!
488 *
489 * removed!
490 * removed!
491 * removed!
492 *
493 *
494 * removed!
495 * removed!
496 *
497 *
498 * removed!
499 * removed!
500 *
501 *
502 * removed!
503 * removed!
504 *
505 *
506 * removed!
507 * removed!
508 *
509 *
510 * removed!
511 * removed!
512 *
513 *
514 * removed!
515 * removed!
516 *
517 *
518 * removed!
519 * removed!
520 *
521 *
522 * removed!
523 * removed!
524 * removed!
525 *
526 * removed!
527 * removed!
528 *
529 *
530 * removed!
531 * removed!
532 *
533 *
534 * removed!
535 * removed!
536 *
537 *
538 * removed!
539 * removed!
540 *
541 *
542 * removed!
543 * removed!
544 *
545 *
546 * removed!
547 * removed!
548 *
549 *
550 * removed!
551 * removed!
552 *
553 *
554 * removed!
555 * removed!
556 *
557 *
558 * removed!
559 * removed!
560 *
561 *
562 * removed!
563 * removed!
564 *
565 *
566 * removed!
567 * removed!
568 *
569 *
570 * removed!
571 * removed!
572 *
573 *
574 * removed!
575 * removed!
576 *
577 *
578 * removed!
579 * removed!
580 *
581 *
582 * removed!
583 * removed!
584 *
585 *
586 * removed!
587 * removed!
588 *
589 *
590 * removed!
591 * removed!
592 * removed!
593 *
594 * removed!
595 * removed!
596 *
597 *
598 * removed!
599 * removed!
600 *
601 *
602 * removed!
603 * removed!
604 * removed!
605 *
606 * removed!
607 * removed!
608 *
609 *
610 * removed!
611 * removed!
612 *
613 *
614 * removed!
615 * removed!
616 *
617 *
618 * removed!
619 * removed!
620 *
621 *
622 * removed!
623 * removed!
624 *
625 *
626 * removed!
627 * removed!
628 *
629 *
630 * removed!
631 * removed!
632 *
633 *
634 * removed!
635 * removed!
636 *
637 *
638 * removed!
639 * removed!
640 *
641 *
642 * removed!
643 * removed!
644 *
645 *
646 * removed!
647 * removed!
648 *
649 *
650 * removed!
651 * removed!
652 *
653 *
654 * removed!
655 * removed!
656 *
657 *
658 * removed!
659 * removed!
660 *
661 *
662 * removed!
663 * removed!
664 *
665 *
666 * removed!
667 * removed!
668 *
669 *
670 * removed!
671 * removed!
672 *
673 *
674 * removed!
675 * removed!
676 *
677 *
678 * removed!
679 * removed!
680 *
681 *
682 * removed!
683 * removed!
684 *
685 *
686 * removed!
687 * removed!
688 *
689 *
690 * removed!
691 * removed!
692 *
693 *
694 * removed!
695 * removed!
696 *
697 *
698 * removed!
699 * removed!
700 *
701 *
702 * removed!
703 * removed!
704 *
705 *
706 * removed!
707 * removed!
708 *
709 *
710 * removed!
711 * removed!
712 *
713 *
714 * removed!
715 * removed!
716 *
717 *
718 * removed!
719 * removed!
720 *
721 *
722 * removed!
723 * removed!
724 *
725 *
726 * removed!
727 * removed!
728 *
729 *
730 * removed!
731 * removed!
732 *
733 *
734 * removed!
735 * removed!
736 *
737 *
738 * removed!
739 * removed!
740 *
741 *
742 * removed!
743 * removed!
744 *
745 *
746 * removed!
747 * removed!
748 *
749 *
750 * removed!
751 * removed!
752 * removed!
753 *
754 * removed!
755 * removed!
756 * removed!
757 *
758 * removed!
759 * removed!
760 * removed!
761 *
762 * removed!
763 * removed!
764 * removed!
765 * removed!
766 *
767 * removed!
768 * removed!
769 * removed!
770 * removed!
771 * removed!
772 * removed!
773 * removed!
774 * removed!
775 * removed!
776 * removed!
777 *
778 * removed!
779 * removed!
780 * removed!
781 * removed!
782 * removed!
783 * removed!
784 *
785 * removed!
786 * removed!
787 * removed!
788 *
789 * removed!
790 * removed!
791 *
792 * removed!
793 * removed!
794 * removed!
795 *
796 * removed!
797 * removed!
798 * removed!
799 *
800 * removed!
801 * removed!
802 * removed!
803 *
804 * removed!
805 * removed!
806 * removed!
807 *
808 * removed!
809 * removed!
810 * removed!
811 *
812 * removed!
813 * removed!
814 * removed!
815 *
816 * removed!
817 * removed!
818 * removed!
819 *
820 * removed!
821 * removed!
822 * removed!
823 *
824 * removed!
825 * removed!
826 * removed!
827 *
828 * removed!
829 * removed!
830 * removed!
831 *
832 * removed!
833 * removed!
834 * removed!
835 *
836 * removed!
837 * removed!
838 * removed!
839 *
840 * removed!
841 * removed!
842 * removed!
843 *
844 * removed!
845 * removed!
846 * removed!
847 *
848 * removed!
849 * removed!
850 * removed!
851 *
852 * removed!
853 * removed!
854 * removed!
855 *
856 * removed!
857 * removed!
858 * removed!
859 *
860 * removed!
861 * removed!
862 * removed!
863 *
864 * removed!
865 * removed!
866 *
867 * removed!
868 * removed!
869 * removed!
870 * removed!
871 *
872 * removed!
873 * removed!
874 * removed!
875 *
876 * removed!
877 * removed!
878 * removed!
879 * removed!
880 * removed!
881 *
882 * removed!
883 * removed!
884 * removed!
885 * removed!
886 * removed!
887 *
888 * removed!
889 * removed!
890 * removed!
891 *
892 * removed!
893 * removed!
894 * removed!
895 * removed!
896 * removed!
897 *
898 * removed!
899 * removed!
900 * removed!
901 *
902 * removed!
903 * removed!
904 * removed!
905 *
906 * removed!
907 * removed!
908 *
909 *------------------------------------------------------------------------------
910 * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
911 *============================================================================
912 ****************************************************************************/
913
914/*************************************************************************
915 * Include Statements for KAL
916 *************************************************************************/
917#include "kal_public_defs.h" //MSBB change #include "stack_common.h"
918#include "kal_public_defs.h" //MSBB change #include "stack_msgs.h"
919#ifndef L1_SIM
920#include "task_config.h"
921#endif // #ifndef L1_SIM
922#include "syscomp_config.h"
923#include "md_mw_sap.h"
924#include "mmrf_msgid.h"
925#include "mmrf_msg_interface.h"
926#include "svc_sap.h"
927#include "ft_msgid.h"
928//#include "wndrv_msgid.h"
929#include "l1hisr_msgid.h"
930#include "sim_public_msgid.h"
931#ifdef L1_SIM
932#include "simul_public.h"
933#endif
934/*************************************************************************
935 * System Service header
936 *************************************************************************/
937#include "kal_general_types.h"
938#include "kal_public_api.h"
939#include "kal_public_defs.h"
940#include "kal_public_defs.h" //MSBB change #include "stack_config.h"
941//MSBB remove #include "fctycomp_config.h"
942#include "stdio.h"
943#ifndef L1_SIM
944#include "init.h"
945#endif // #ifndef L1_SIM
946/*************************************************************************
947 * NVRAM header
948 *************************************************************************/
949#ifndef L1_SIM
950#include "nvram_data_items.h"
951#include "ft_nvram_def.h"
952#include "nvram_struct.h"
953#include "nvram_enums.h"
954#include "nvram_msgid.h"
955#endif // #ifndef L1_SIM
956/*************************************************************************
957 * Custom header
958 *************************************************************************/
959#ifndef L1_SIM
960#include "custom_nvram_config.h"
961#include "custom_equipment.h"
962#endif // #ifndef L1_SIM
963/*************************************************************************
964 * HAL header
965 *************************************************************************/
966#ifndef L1_SIM
967#if !defined(__L1_STANDALONE__)
968#include "device.h" // for GPIO_DEV_LED_MAINLCD and LED_LIGHT_LEVEL5
969#endif
970#endif // #ifndef L1_SIM
971/*************************************************************************
972 * FT header
973 *************************************************************************/
974#include "ft_msg.h"
975#include "ft_mem.h"
976#include "ft_private.h"
977#ifndef L1_SIM
978#include "ft_customize.h"
979#endif // #ifndef L1_SIM
980#include "ft_fnc_l1rf.h"
981#ifndef L1_SIM
982#include "ft_fnc_misc.h"
983#include "ft_fnc_misc_ex.h"
984#include "ft_fnc_custom.h"
985#include "ft_fnc_aux.h"
986#endif // #ifndef L1_SIM
987#include "ft_fnc_wcdma.h"
988#include "ft_fnc_tdscdma.h"
989#ifndef L1_SIM
990#include "ft_fnc_fat.h"
991#include "ft_fnc_nvram.h"
992#endif // #ifndef L1_SIM
993#include "ft_fnc_lterf.h"
994#include "ft_fnc_mmrf.h"
995#include "ft_fnc_nrf.h"
996#include "ft_fnc_l4.h"
997#ifndef L1_SIM
998#include "ft_fnc_c2krf.h"
999fp_nvram_read_handler_t FT_ReadFrom_NVRAM = FT_Nvram_ReadNvramHandler;
1000fp_nvram_write_handler_t FT_WriteTo_NVRAM = FT_Nvram_WriteNvramHandler;
1001fp_nvram_read_confirm_handler_t FT_ReadFrom_NVRAM_CNF = FT_Nvram_ReadNvramConfirmHandler;
1002fp_nvram_write_confirm_handler_t FT_WriteTo_NVRAM_CNF = FT_Nvram_WriteNvramConfirmHandler;
1003#endif // #ifndef L1_SIM
1004/*************************************************************************
1005 * SIM header
1006 *************************************************************************/
1007#ifndef L1_SIM
1008#include "ps2sim_struct.h"
1009#endif // #ifndef L1_SIM
1010/*************************************************************************
1011 * SLA header
1012 *************************************************************************/
1013#include "meta_sec_support.h"
1014/*************************************************************************
1015 * Function declaration
1016 *************************************************************************/
1017void FT_Task(task_entry_struct * task_entry_ptr);
1018kal_bool FT_Init(void);
1019extern void L1T_DispatchReports(void);
1020kal_uint16 ft_gl_token=0;
1021kal_uint16 ft_gl_rf_token;
1022kal_uint16 ft_gl_l4aud_token;
1023kal_uint16 ft_gl_l4aud_ind_token;
1024kal_uint16 ft_gl_nvram_token;
1025kal_uint16 ft_gl_customer_token;
1026kal_uint16 ft_gl_l4aud_current_volume = 3;
1027peer_buff_struct *ft_gl_l4aud_peer_buf = NULL;
1028extern kal_uint8 ft_gl_sim_cmd_type; // sim cmd type from ft_fnc_misc.c
1029
1030kal_char g_FT_debug_buf[128];
1031kal_uint16 FT_GetGolbalToken(void)
1032{
1033 return ft_gl_token;
1034}
1035/*************************************************************************
1036 * FUNCTION
1037 * ft_create
1038 *
1039 * DESCRIPTION
1040 *
1041 * PARAMETERS
1042 *
1043 * RETURNS
1044 * None
1045 *
1046 * GLOBALS AFFECTED
1047 *
1048 *************************************************************************/
1049kal_bool ft_create(comptask_handler_struct **handle)
1050{
1051 static const comptask_handler_struct ft_handler_info =
1052 {
1053 FT_Task, /* task entry function */
1054 FT_Init, /* task initialization function */
1055 NULL /* task configuration function */
1056 };
1057
1058 *handle = (comptask_handler_struct *)&ft_handler_info;
1059 return KAL_TRUE;
1060}
1061
1062#ifdef L1_SIM
1063extern kal_status gs_read_message(module_type, void *, kal_uint16, kal_bool);
1064#endif
1065
1066
1067/* ------------------------------------------------------------------------- */
1068
1069
1070/*******************************************************************************
1071 * FUNCTION
1072 * FT_InitCalibrationData
1073 *
1074 * DESCRIPTION
1075 * The calibration data fetch in power-on stage
1076 *
1077 * CALLS
1078 *
1079 * PARAMETERS
1080 * None
1081 *
1082 * RETURNS
1083 * None
1084 *
1085 * GLOBALS AFFECTED
1086 * None
1087 *******************************************************************************/
1088void FT_InitCalibrationData(task_entry_struct *task_entry_ptr)
1089{
1090#ifndef L1_SIM
1091 nvram_startup_req_struct *ptrMsg;
1092 ptrMsg = (nvram_startup_req_struct*)construct_local_para(sizeof(nvram_startup_req_struct), TD_CTRL);
1093 if(NULL == ptrMsg)
1094 {
1095 ASSERT(0);
1096 }
1097 ptrMsg->poweron_mode=NVRAM_POWERON_NORMAL;
1098 msg_send5(MOD_FT, MOD_NVRAM, PS_NVRAM_SAP, MSG_ID_NVRAM_STARTUP_REQ, (local_para_struct*)ptrMsg);
1099#endif // #ifndef L1_SIM
1100}
1101
1102/*******************************************************************************
1103*
1104* Local Functions
1105*
1106*******************************************************************************/
1107#ifdef L1_CATCHER
1108void Trc_Init(void);
1109#endif
1110static void FT_Initialization(task_entry_struct *task_entry_ptr)
1111{
1112 // active module ID in task_active_module_g
1113 kal_set_active_module_id(MOD_FT);
1114#ifndef L1_SIM
1115 FtInitMemoryPool();
1116 // custom init
1117 FT_CustomInit();
1118#if !defined(__L1_STANDALONE__)
1119 // enable main LCD backlight
1120 custom_cfg_gpio_set_level(GPIO_DEV_LED_MAINLCD, LED_LIGHT_LEVEL5);
1121#endif // #if !defined(__L1_STANDALONE__)
1122#endif // #ifndef L1_SIM
1123#ifdef L1_CATCHER
1124 // L1 logging initialization
1125 Trc_Init();
1126#endif // #ifdef L1_CATCHER
1127 FT_InitCalibrationData(task_entry_ptr);
1128 FT_InitFtData();
1129#if ( defined(__HSDPA_SUPPORT__) || defined(__HSUPA_SUPPORT__) ) && defined(__MODEM_CARD__)
1130 /// clear USB download RTC bit for HSPA data card project
1131 INT_SetCmdToSys(SYS_CMD_CLR_DL_FLAG);
1132#endif // #if ( defined(__HSDPA_SUPPORT__) || defined(__HSUPA_SUPPORT__) ) && defined(__MODEM_CARD__)
1133}
1134
1135extern kal_bool Custom_META_IsSecureOperation(ilm_struct* ptrMsg);
1136
1137#ifndef L1_SIM
1138void FT_DispatchMessage(ilm_struct* ptrMsg)
1139{
1140 FT_H *ft_header;
1141 ft_header=(FT_H *)(ptrMsg->local_para_ptr);
1142 /* process messages with specific message ID */
1143 switch(ptrMsg->msg_id)
1144 {
1145 case MSG_ID_FT_CAL_DATA_ADD_ONE_REQ:
1146 {
1147 FT_Misc_CalDataInTargetAddOneRequestHandler(ptrMsg);
1148 return;
1149 }
1150 case MSG_ID_MMRF_UPDATE_RUNTIME_CNF:
1151 {
1152 FT_Mmrf_UpdateRuntimeConfirmHandler(ptrMsg);
1153 return;
1154 }
1155 default:
1156 break;
1157 }
1158 /* process message with specific source module ID */
1159#if !defined(__DHL_MODULE__)
1160 if(ptrMsg->src_mod_id == MOD_TST_READER)
1161#else
1162 if(ptrMsg->src_mod_id == MOD_DHL)
1163#endif // #if !defined(__DHL_MODULE__)
1164 {
1165 ft_gl_token=ft_header->token;
1166#ifdef __META_SLA_ENHANCEMENT__
1167 if (FT_MetaSLA_Is_Enabled() && !MetaSLA_Is_Verified())
1168 {
1169 if(KAL_TRUE == Custom_META_IsSecureOperation(ptrMsg))
1170 {
1171 dhl_print(TRACE_INFO, DHL_USER_FLAG_NONE, MOD_FT,"[SLA] msg id:%d is dropped since SLA is not verified", ft_header->ft_msg_id);
1172 return;
1173 }
1174 }
1175#endif // #ifdef __META_SLA_ENHANCEMENT__
1176
1177 switch (ft_header->ft_msg_id)
1178 {
1179 /********************************************
1180 * L1 RF test functionality
1181 ********************************************/
1182#if !defined(L1_NOT_PRESENT) && !defined(__L1_TASK_DISABLE__) && !defined(DUMMYL1)
1183 case FT_RF_TEST_REQ_ID:
1184 {
1185 FT_Rf_Operation(ptrMsg);
1186 break;
1187 }
1188#endif // #if !defined(__LTE_SM__)&&defined(__MTK_GL1_GSM__)
1189 /********************************************
1190 * BB test functionality
1191 ********************************************/
1192 case FT_REG_READ_ID:
1193 {
1194 FT_FtRegisterRead((ft_RegisterRead_req_T*)ptrMsg->local_para_ptr,FT_BaseBandReg);
1195 break;
1196 }
1197 case FT_REG_WRITE_ID:
1198 {
1199 FT_FtRegisterWrite((ft_RegisterWrite_req_T*)ptrMsg->local_para_ptr,FT_BaseBandReg);
1200 break;
1201 }
1202 case FT_PMIC_REG_READ_ID:
1203 {
1204 FT_FtPMICRegisterRead((ft_PMICRegisterRead_req_T*)ptrMsg->local_para_ptr,FT_PMICReg);
1205 break;
1206 }
1207 case FT_PMIC_REG_WRITE_ID:
1208 {
1209 FT_FtPMICRegisterWrite((ft_PMICRegisterWrite_req_T*)ptrMsg->local_para_ptr,FT_PMICReg);
1210 break;
1211 }
1212 case FT_ADC_GETMEADATA_ID:
1213 {
1214 FT_FtADC_GetMeaData((ft_FtADC_GetMeaData_req_T*)ptrMsg->local_para_ptr);
1215 break;
1216 }
1217 /********************************************
1218 * UL1 RF test functionality
1219 ********************************************/
1220#if defined(__UMTS_RAT__) && defined(__MTK_UL1_FDD__)
1221#if !defined(__UL1_TASK_DISABLE__)
1222 case FT_URF_TEST_REQ_ID:
1223 {
1224 FT_FtURfTestReq( ptrMsg );
1225 break;
1226 }
1227#endif // #if !defined(__UL1_TASK_DISABLE__)
1228#endif // #if defined(__UMTS_RAT__) && defined(__MTK_UL1_FDD__)
1229 /********************************************
1230 *
1231 * NVRAM functionality
1232 *
1233 ********************************************/
1234 case FT_NVRAM_GET_DISK_INFO_REQ_ID:
1235 {
1236 ilm_struct ilm_ptr;
1237 FT_NVRAM_GET_DISK_INFO_CNF *ptr_loc_para;
1238 // store nvram token id, because any of NVRAM command won't return immediately.
1239 ft_gl_nvram_token = ft_header->token;
1240 FT_ALLOC_OTHER_MSG(&ilm_ptr,sizeof(FT_NVRAM_GET_DISK_INFO_CNF));
1241 ptr_loc_para=(FT_NVRAM_GET_DISK_INFO_CNF *)(ilm_ptr.local_para_ptr);
1242 /* if ptr_ilm != NULL*/
1243 ptr_loc_para->header.ft_msg_id=FT_NVRAM_GET_DISK_INFO_CNF_ID;
1244#if defined(__MOD_NVRAM__)
1245 if(nvram_get_disk_file_info(&(ptr_loc_para->diskfilesize), &(ptr_loc_para->freespace), &(ptr_loc_para->overhead))) {
1246 ptr_loc_para->status = 0;
1247 }
1248 else {
1249 ptr_loc_para->diskfilesize = 0;
1250 ptr_loc_para->freespace = 0;
1251 ptr_loc_para->overhead = 0;
1252 ptr_loc_para->status = 1;
1253 }
1254#endif // #if defined(__MOD_NVRAM__)
1255 FT_SEND_MSG_TO_PC(&ilm_ptr);
1256 break;
1257 }
1258 case FT_NVRAM_RESET_REQ_ID:
1259 {
1260 ilm_struct ptr_ilm;
1261 nvram_reset_req_struct *ptr_loc_para;
1262 // store nvram token id, because any of NVRAM command won't return immediately.
1263 ft_gl_nvram_token = ft_header->token;
1264 FT_ALLOC_OTHER_MSG(&ptr_ilm,sizeof( nvram_reset_req_struct));
1265 /* if ptr_ilm != NULL*/
1266 ptr_loc_para=(nvram_reset_req_struct *)(ptr_ilm.local_para_ptr);
1267
1268 if( ((ft_nvram_reset_req_struct_T*)ptrMsg->local_para_ptr)->reset_category == 0) // reset all
1269 {
1270
1271 ptr_loc_para->reset_category= NVRAM_RESET_ALL;
1272 }
1273 else if( ((ft_nvram_reset_req_struct_T*)ptrMsg->local_para_ptr)->reset_category == 3) // reset certain
1274 {
1275
1276 ptr_loc_para->reset_category= NVRAM_RESET_CERTAIN;
1277 }
1278 else if( ((ft_nvram_reset_req_struct_T*)ptrMsg->local_para_ptr)->reset_category == 4) // reset factory
1279 {
1280 ptr_loc_para->reset_category= NVRAM_RESET_FACTORY;
1281 }
1282 else
1283 {
1284 destroy_ilm(&ptr_ilm);
1285 break; // directly break!, Let PC side timeout!
1286 }
1287 ptr_loc_para->app_id = NVRAM_APP_RESERVED;
1288 ptr_loc_para->LID=((ft_nvram_reset_req_struct_T*)ptrMsg->local_para_ptr)->file_idx;
1289 FT_SEND_MSG(MOD_FT, MOD_NVRAM, PS_NVRAM_SAP, MSG_ID_NVRAM_RESET_REQ, &ptr_ilm);
1290 break;
1291 }
1292 case FT_NVRAM_READ_REQ_ID:
1293 {
1294 ft_gl_nvram_token = ft_header->token;
1295 FT_ReadFrom_NVRAM((ft_nvram_read_req_struct_T*)ptrMsg->local_para_ptr, 0);
1296 break;
1297 }
1298 case FT_NVRAM_WRITE_REQ_ID:
1299 {
1300 ft_gl_nvram_token = ft_header->token;
1301 FT_WriteTo_NVRAM((ft_nvram_write_req_struct_T*)ptrMsg->local_para_ptr, ptrMsg->peer_buff_ptr, 0);
1302 break;
1303 }
1304 case FT_NVRAM_LOCK_REQ_ID:
1305 {
1306 ilm_struct ptr_ilm;
1307 nvram_set_lock_req_struct *ptr_loc_para;
1308 ft_nvram_lock_req_struct_T *ptr_msg = (ft_nvram_lock_req_struct_T *)(ptrMsg->local_para_ptr);
1309 // store nvram token id, because NVRAM command won't return immediately.
1310 ft_gl_nvram_token = ft_header->token;
1311 FT_ALLOC_OTHER_MSG(&ptr_ilm, sizeof(nvram_set_lock_req_struct));
1312 /* if ptr_ilm != NULL*/
1313 ptr_loc_para=(nvram_set_lock_req_struct *)(ptr_ilm.local_para_ptr);
1314 // if OTP lock or NVRAM lock
1315 if( NVRAM_LOCK_OTP == ptr_msg->lock_en ) {
1316 ptr_loc_para->lock_en = NVRAM_LOCK_OTP;
1317 }
1318 else {
1319 ptr_loc_para->lock_en = NVRAM_LOCK_ENABLE;
1320 }
1321 FT_SEND_MSG(MOD_FT, MOD_NVRAM, PS_NVRAM_SAP, MSG_ID_NVRAM_SET_LOCK_REQ, &ptr_ilm);
1322 break;
1323 }
1324 /********************************************
1325 *
1326 * FAT functionality
1327 *
1328 ********************************************/
1329 case FT_FAT_OPERATION_ID:
1330 {
1331 FT_FAT_Operation((FT_FAT_OPERATION *)ptrMsg->local_para_ptr, ptrMsg->peer_buff_ptr);
1332 break;
1333 }
1334 /********************************************
1335 *
1336 * Version Info functionality
1337 *
1338 ********************************************/
1339 case FT_VER_INFO_REQ_ID:
1340 {
1341 FT_GetVersionInfo();
1342 break;
1343 }
1344 /********************************************
1345 *
1346 * FT task test alive
1347 *
1348 ********************************************/
1349 case FT_IS_ALIVE_REQ_ID:
1350 {
1351 FT_TestAlive();
1352 break;
1353 }
1354 /********************************************
1355 *
1356 * FT task Power Off
1357 *
1358 ********************************************/
1359 case FT_POWER_OFF_REQ_ID:
1360 {
1361 FT_PowerOff();
1362 break;
1363 }
1364 /********************************************
1365 *
1366 * FT task utility command
1367 *
1368 ********************************************/
1369 case FT_UTILITY_COMMAND_REQ_ID:
1370 {
1371 FT_UtilityCommand(ptrMsg);
1372 break;
1373 }
1374 /********************************************
1375 *
1376 * Misc utility command
1377 *
1378 ********************************************/
1379 case FT_MISC_CMD_REQ_ID:
1380 {
1381 FT_MISC_Operation(ptrMsg);
1382 break;
1383 }
1384 /********************************************
1385 *
1386 * Misc EX utility command
1387 *
1388 ********************************************/
1389 case FT_MISC_EX_CMD_REQ_ID:
1390 {
1391 FT_MISC_EX_Operation(ptrMsg);
1392 break;
1393 }
1394 case FT_CUSTOM_REQ_ID:
1395 {
1396 // send message to FTC task
1397 ft_gl_customer_token = ft_header->token;
1398 FT_Custom_Operation(ptrMsg);
1399 break;
1400 }
1401#if defined(__UMTS_TDD128_MODE__) && defined(__AST_TL1_TDD__)
1402 case FT_AUX_REQ_ID:
1403 {
1404 if(KAL_TRUE == TL1_IS_3G_TDD_EXIST()) //20130206
1405 {
1406 // send message to FTA task
1407 ft_gl_customer_token = ft_header->token;
1408 FT_Aux_Operation(ptrMsg);
1409 }
1410 else
1411 {
1412 sprintf(g_FT_debug_buf, "[FT_DispatchMessage][FT_AUX_REQ_ID] HW TDD does not exist.");
1413 tst_sys_trace(g_FT_debug_buf);
1414 }
1415 break;
1416 }
1417#endif // #if defined(__UMTS_TDD128_MODE__) && defined(__AST_TL1_TDD__)
1418#if defined(__LTE_RAT__) || defined(L1_SIM)
1419 case FT_ERF_TEST_REQ_ID:
1420 {
1421 FT_Erf_Operation(ptrMsg);
1422 break;
1423 }
1424 case FT_PHY_TOOL_REQ_ID:
1425 {
1426 FT_PhyTool_Operation(ptrMsg);
1427 break;
1428 }
1429#endif // #if defined(__LTE_RAT__)
1430
1431#if defined(__C2K_RAT__)
1432 case FT_CRF_TEST_REQ_ID:
1433 {
1434 FT_Crf_Operation(ptrMsg);
1435 break;
1436 }
1437#endif // #if defined(__C2K_RAT__)
1438
1439 case FT_MMRF_TEST_REQ_ID:
1440 {
1441 FT_Mmrf_Operation(ptrMsg);
1442 break;
1443 }
1444
1445 case FT_NRF_TEST_REQ_ID:
1446 {
1447 FT_Nrf_Operation(ptrMsg);
1448 break;
1449 }
1450#if !defined(__L4_TASK_DISABLE__) && !defined(L4_NOT_PRESENT) || defined(DUMMY_PROTOCOL)
1451 case FT_L4_ATCMD_REQ_ID:
1452 {
1453 FT_L4_Operation(ptrMsg);
1454 break;
1455 }
1456#endif // #if !defined(__L4_TASK_DISABLE__) && !defined(L4_NOT_PRESENT)
1457
1458 case FT_GET_SLA_STATUS_REQ_ID:
1459 {
1460 FT_GetSlaStatus();
1461 break;
1462 }
1463
1464 case FT_CHECK_SLA_VER_REQ_ID:
1465 {
1466 FT_CheckSlaVer((FT_CHECK_SLA_VER_REQ *)ptrMsg->local_para_ptr);
1467 break;
1468 }
1469
1470 case FT_GET_SLA_PARA_REQ_ID:
1471 {
1472 FT_GetSlaPara();
1473 break;
1474 }
1475
1476 case FT_VERIFY_SLA_RND_REQ_ID:
1477 {
1478 FT_VerifySla((FT_VERIFY_SLA_RND_REQ *)ptrMsg->local_para_ptr);
1479 break;
1480 }
1481
1482 default:
1483 {
1484 dhl_print(TRACE_INFO, DHL_USER_FLAG_NONE, MOD_FT,"[SLA] unknown msg id:%d", ft_header->ft_msg_id);
1485 FT_SendDeniedMsgIdCnf(ft_header->ft_msg_id, FT_CNF_NOT_SUPPORTED);
1486 break;
1487 }
1488 }
1489 }
1490 else if( (ptrMsg->src_mod_id == MOD_FTC) )
1491 {
1492 ft_gl_token = ft_gl_customer_token;
1493 FT_Handle_FTC_CNF(ptrMsg);
1494 ptrMsg->peer_buff_ptr=NULL; /* make sure the TST will release the mem*/
1495 }
1496
1497#if defined(__UMTS_TDD128_MODE__) && defined(__AST_TL1_TDD__)
1498 else if( (ptrMsg->src_mod_id == MOD_FTA) )
1499 {
1500 ft_gl_token = ft_gl_customer_token;
1501 FT_Handle_FTA_CNF(ptrMsg);
1502 ptrMsg->peer_buff_ptr=NULL; /* make sure the TST will release the mem*/
1503 }
1504#endif // #if defined(__UMTS_TDD128_MODE__) && defined(__AST_TL1_TDD__)
1505#if defined(__MOD_NVRAM__)
1506 else if( KAL_TRUE == FT_Nvram_IsModNvramRespnose(ptrMsg) )
1507 {
1508 switch (ptrMsg->msg_id)
1509 {
1510 case MSG_ID_NVRAM_WRITE_CNF:
1511 {
1512 nvram_write_cnf_struct* msg_ptr = NULL;
1513 ft_gl_token = ft_gl_nvram_token;
1514 msg_ptr=(nvram_write_cnf_struct*)ptrMsg->local_para_ptr;
1515 /* Check MMRF runtime update */
1516 if( KAL_FALSE == FT_Mmrf_PollUpdateRuntimeReady() )
1517 {
1518 hold_local_para(ptrMsg->local_para_ptr);
1519 FT_SEND_MSG(MOD_FT, MOD_FT, PS_NVRAM_SAP, MSG_ID_NVRAM_WRITE_CNF, ptrMsg);
1520 break;
1521 }
1522 FT_WriteTo_NVRAM_CNF(msg_ptr);
1523 break;
1524 }
1525 case MSG_ID_NVRAM_RESET_CNF:
1526 {
1527 nvram_reset_cnf_struct* msg_ptr;
1528 ilm_struct ilm_ptr;
1529 ft_nvram_reset_cnf_struct_T* pMsg;
1530 ft_gl_token = ft_gl_nvram_token;
1531 msg_ptr=(nvram_reset_cnf_struct*)ptrMsg->local_para_ptr;
1532 FT_ALLOC_MSG(&ilm_ptr, sizeof(ft_nvram_reset_cnf_struct_T));
1533 pMsg=(ft_nvram_reset_cnf_struct_T*)ilm_ptr.local_para_ptr;
1534 pMsg->header.ft_msg_id=FT_NVRAM_RESET_CNF_ID;
1535 pMsg->status = msg_ptr->result;
1536 FT_SEND_MSG_TO_PC(&ilm_ptr);
1537 break;
1538 }
1539 case MSG_ID_NVRAM_SET_LOCK_CNF:
1540 {
1541 nvram_set_lock_cnf_struct* msg_ptr;
1542 ilm_struct ilm_ptr;
1543 ft_nvram_lock_cnf_struct_T* pMsg;
1544 ft_gl_token = ft_gl_nvram_token;
1545 msg_ptr=(nvram_set_lock_cnf_struct*)ptrMsg->local_para_ptr;
1546 FT_ALLOC_MSG(&ilm_ptr, sizeof(ft_nvram_lock_cnf_struct_T));
1547 pMsg=(ft_nvram_lock_cnf_struct_T*)ilm_ptr.local_para_ptr;
1548 pMsg->header.ft_msg_id=FT_NVRAM_LOCK_CNF_ID;
1549 pMsg->status = msg_ptr->result;
1550 FT_SEND_MSG_TO_PC(&ilm_ptr);
1551 break;
1552 }
1553#if defined(__MTK_INTERNAL__)
1554 case MSG_ID_NVRAM_WRITE_IMEI_CNF:
1555 {
1556 nvram_write_imei_cnf_struct* msg_ptr;
1557 FT_MISC_CNF misc_cnf;
1558 msg_ptr=(nvram_write_imei_cnf_struct*)ptrMsg->local_para_ptr;
1559 misc_cnf.type = FT_MISC_OP_SET_IMEI_VALUE;
1560 if(msg_ptr->result == NVRAM_ERRNO_SUCCESS)
1561 {
1562 misc_cnf.result.m_u2RecordIndex = msg_ptr->record_index;
1563 misc_cnf.status = FT_CNF_OK;
1564 }
1565 else
1566 {
1567 misc_cnf.result.m_u2RecordIndex = msg_ptr->result;
1568 misc_cnf.status = FT_CNF_FAIL;
1569 }
1570 FT_MISC_SendCnf(&misc_cnf, NULL);
1571 break;
1572 }
1573#endif //#if defined(__MTK_INTERNAL__)
1574 case MSG_ID_NVRAM_SDS_CNF:
1575 case MSG_ID_NVRAM_BIN_REGION_CNF:
1576 {
1577 FT_MiscEx_NvramConfirmHandler(ptrMsg);
1578 break;
1579 }
1580 default:
1581 break;
1582 }
1583 }
1584#endif // end of #if defined(__MOD_NVRAM__)
1585#if defined(__UMTS_RAT__) && defined(__MTK_UL1_FDD__)
1586#if !defined(__UL1_TASK_DISABLE__)
1587 else if( (ptrMsg->src_mod_id == MOD_UL1) )
1588 {
1589 FT_UL1TST_SEND_CNF_BACK(ptrMsg);
1590 }
1591#endif // #if !defined(__UL1_TASK_DISABLE__)
1592#endif // #if defined(__UMTS_RAT__) && defined(__MTK_UL1_FDD__)
1593#if !defined(L1_NOT_PRESENT) && !defined(__L1_TASK_DISABLE__) && !defined(DUMMYL1)
1594 else if( (ptrMsg->src_mod_id == MOD_L1) )
1595 {
1596 FT_Rf_ConfirmHandler(ptrMsg);
1597 }
1598#endif // #if !defined(L1_NOT_PRESENT) && !defined(__L1_TASK_DISABLE__) && !defined(DUMMYL1)
1599#ifndef SIM_NOT_PRESENT
1600 else if( (ptrMsg->src_mod_id == MOD_SIM) && (ft_gl_sim_cmd_type != FT_MISC_OP_CHECK_GEMINI_PLUS_SIM_INSERTED))
1601 {
1602 switch (ptrMsg->msg_id)
1603 {
1604 case MSG_ID_SIM_RESET_CNF:
1605 {
1606 FT_MISC_CNF misc_cnf;
1607 sim_reset_cnf_struct *msg_ptr;
1608 msg_ptr=(sim_reset_cnf_struct*)ptrMsg->local_para_ptr;
1609 misc_cnf.type = FT_MISC_OP_CHECK_SIM1_INSERTED;
1610 misc_cnf.result.m_u1SIMInserted = (kal_bool)msg_ptr->is_sim_inserted; // get SIM inserted status here. 1:insert , 0: not insert
1611 misc_cnf.status = FT_CNF_OK;
1612 FT_MISC_SendCnf(&misc_cnf, NULL);
1613 }
1614 break;
1615 default:
1616 break;
1617 }
1618 }
1619#ifdef __GEMINI__
1620 else if((ptrMsg->src_mod_id == MOD_SIM_2) && (ft_gl_sim_cmd_type != FT_MISC_OP_CHECK_GEMINI_PLUS_SIM_INSERTED))
1621 {
1622 switch (ptrMsg->msg_id)
1623 {
1624 case MSG_ID_SIM_RESET_CNF:
1625 {
1626 FT_MISC_CNF misc_cnf;
1627 sim_reset_cnf_struct *msg_ptr;
1628 msg_ptr=(sim_reset_cnf_struct*)ptrMsg->local_para_ptr;
1629 misc_cnf.type = FT_MISC_OP_CHECK_SIM2_INSERTED;
1630 misc_cnf.result.m_u1SIMInserted = (kal_bool)msg_ptr->is_sim_inserted; // get SIM inserted status here. 1:insert , 0: not insert
1631 misc_cnf.status = FT_CNF_OK;
1632 FT_MISC_SendCnf(&misc_cnf, NULL);
1633 break;
1634 }
1635 default:
1636 break;
1637 }
1638 }
1639#endif // __GEMINI__
1640#ifdef GEMINI_PLUS
1641 else if((ptrMsg->src_mod_id >= MOD_SIM) && (ptrMsg->src_mod_id < MOD_SIM + GEMINI_PLUS) &&
1642 (ft_gl_sim_cmd_type == FT_MISC_OP_CHECK_GEMINI_PLUS_SIM_INSERTED))
1643 {
1644 switch (ptrMsg->msg_id)
1645 {
1646 case MSG_ID_SIM_RESET_CNF:
1647 {
1648 FT_MISC_CNF misc_cnf;
1649 sim_reset_cnf_struct *msg_ptr;
1650 msg_ptr=(sim_reset_cnf_struct*)ptrMsg->local_para_ptr;
1651 misc_cnf.type = FT_MISC_OP_CHECK_GEMINI_PLUS_SIM_INSERTED;
1652 misc_cnf.result.m_u1SIMInserted = (kal_bool)msg_ptr->is_sim_inserted; // get SIM inserted status here. 1:insert , 0: not insert
1653 misc_cnf.status = FT_CNF_OK;
1654 FT_MISC_SendCnf(&misc_cnf, NULL);
1655 break;
1656 }
1657 default:
1658 break;
1659 }
1660 }
1661#endif // GEMINI_PLUS
1662#endif // SIM_NOT_PRESENT
1663#if defined(__LTE_RAT__)
1664 else if( MOD_EL1== ptrMsg->src_mod_id )
1665 {
1666 FT_Erf_ConfirmHandler(ptrMsg);
1667 }
1668#endif // #if defined(__LTE_RAT__)
1669
1670#if defined(__C2K_RAT__)
1671 else if( MOD_CL1TST == ptrMsg->src_mod_id )
1672 {
1673 FT_Crf_ConfirmHandler(ptrMsg);
1674 }
1675#endif // #if defined(__C2K_RAT__)
1676
1677 else if( MOD_MMRF_XL1TST == ptrMsg->src_mod_id )
1678 {
1679 FT_Mmrf_ConfirmHandler(ptrMsg);
1680 }
1681
1682#if defined(__MD97__)
1683 else if( MOD_NL1 == ptrMsg->src_mod_id )
1684 {
1685 FT_Nrf_ConfirmHandler(ptrMsg);
1686 }
1687#endif // #if !defined(__MD97__)
1688
1689#if !defined(__L4_TASK_DISABLE__) && !defined(L4_NOT_PRESENT) || defined(DUMMY_PROTOCOL)
1690 else if( MOD_L4C == ptrMsg->src_mod_id )
1691 {
1692 FT_L4_Operation(ptrMsg);
1693 }
1694#endif // #if !defined(__L4_TASK_DISABLE__) && !defined(L4_NOT_PRESENT)
1695
1696}
1697#else
1698void FT_DispatchMessage(ilm_struct* ptrMsg)
1699{
1700 FT_H *ft_header;
1701 ft_header=(FT_H *)(ptrMsg->local_para_ptr);
1702 /* process messages with specific message ID */
1703 switch(ptrMsg->msg_id)
1704 {
1705 case MSG_ID_MMRF_UPDATE_RUNTIME_CNF:
1706 {
1707 FT_Mmrf_UpdateRuntimeConfirmHandler(ptrMsg);
1708 return;
1709 }
1710 default:
1711 break;
1712 }
1713 /* process message with specific source module ID */
1714#if !defined(__DHL_MODULE__)
1715 if(ptrMsg->src_mod_id == MOD_TST_READER)
1716#else
1717 if(ptrMsg->src_mod_id == MOD_DHL)
1718#endif // #if !defined(__DHL_MODULE__)
1719 {
1720 ft_gl_token=ft_header->token;
1721 switch (ft_header->ft_msg_id)
1722 {
1723 /********************************************
1724 * L1 RF test functionality
1725 ********************************************/
1726#if !defined(L1_NOT_PRESENT) && !defined(__L1_TASK_DISABLE__) && !defined(DUMMYL1)
1727 case FT_RF_TEST_REQ_ID:
1728 {
1729 FT_Rf_Operation(ptrMsg);
1730 break;
1731 }
1732#endif // #if !defined(__LTE_SM__)&&defined(__MTK_GL1_GSM__)
1733 /********************************************
1734 * UL1 RF test functionality
1735 ********************************************/
1736#if defined(__UMTS_RAT__) && defined(__MTK_UL1_FDD__)
1737#if !defined(__UL1_TASK_DISABLE__)
1738 case FT_URF_TEST_REQ_ID:
1739 {
1740 FT_FtURfTestReq( ptrMsg );
1741 break;
1742 }
1743#endif // #if !defined(__UL1_TASK_DISABLE__)
1744#endif // #if defined(__UMTS_RAT__) && defined(__MTK_UL1_FDD__)
1745 /********************************************
1746 *
1747 * Version Info functionality
1748 *
1749 ********************************************/
1750 case FT_VER_INFO_REQ_ID:
1751 {
1752 FT_GetVersionInfo();
1753 break;
1754 }
1755 /********************************************
1756 *
1757 * FT task test alive
1758 *
1759 ********************************************/
1760 case FT_IS_ALIVE_REQ_ID:
1761 {
1762 FT_TestAlive();
1763 break;
1764 }
1765 /********************************************
1766 *
1767 * FT task utility command
1768 *
1769 ********************************************/
1770 case FT_UTILITY_COMMAND_REQ_ID:
1771 {
1772 FT_UtilityCommand(ptrMsg);
1773 break;
1774 }
1775#if defined(__LTE_RAT__) || defined(L1_SIM)
1776 case FT_ERF_TEST_REQ_ID:
1777 {
1778 FT_Erf_Operation(ptrMsg);
1779 break;
1780 }
1781#endif // #if defined(__LTE_RAT__)
1782 case FT_MMRF_TEST_REQ_ID:
1783 {
1784 FT_Mmrf_Operation(ptrMsg);
1785 break;
1786 }
1787
1788 case FT_NRF_TEST_REQ_ID:
1789 {
1790 FT_Nrf_Operation(ptrMsg);
1791 break;
1792 }
1793
1794#if !defined(__L4_TASK_DISABLE__) && !defined(L4_NOT_PRESENT) || defined(DUMMY_PROTOCOL)
1795 case FT_L4_ATCMD_REQ_ID:
1796 {
1797 FT_L4_Operation(ptrMsg);
1798 }
1799#endif // #if !defined(__L4_TASK_DISABLE__) && !defined(L4_NOT_PRESENT)
1800 default:
1801 break;
1802 }
1803 }
1804#if defined(__UMTS_RAT__) && defined(__MTK_UL1_FDD__)
1805#if !defined(__UL1_TASK_DISABLE__)
1806 else if( (ptrMsg->src_mod_id == MOD_UL1) )
1807 {
1808 FT_UL1TST_SEND_CNF_BACK(ptrMsg);
1809 }
1810#endif // #if !defined(__UL1_TASK_DISABLE__)
1811#endif // #if defined(__UMTS_RAT__) && defined(__MTK_UL1_FDD__)
1812#if !defined(L1_NOT_PRESENT) && !defined(__L1_TASK_DISABLE__) && !defined(DUMMYL1)
1813 else if( (ptrMsg->src_mod_id == MOD_L1) )
1814 {
1815 FT_Rf_ConfirmHandler(ptrMsg);
1816 }
1817#endif // #if !defined(L1_NOT_PRESENT) && !defined(__L1_TASK_DISABLE__) && !defined(DUMMYL1)
1818#if defined(__LTE_RAT__)
1819 else if( MOD_EL1== ptrMsg->src_mod_id )
1820 {
1821 FT_Erf_ConfirmHandler(ptrMsg);
1822 }
1823#endif // #if defined(__LTE_RAT__)
1824
1825 else if( MOD_MMRF_XL1TST == ptrMsg->src_mod_id )
1826 {
1827 FT_Mmrf_ConfirmHandler(ptrMsg);
1828 }
1829#if defined(__MD97__)
1830 else if( MOD_NL1 == ptrMsg->src_mod_id )
1831 {
1832 FT_Nrf_ConfirmHandler(ptrMsg);
1833 }
1834#endif // #if !defined(__MD97__)
1835#if !defined(__L4_TASK_DISABLE__) && !defined(L4_NOT_PRESENT) || defined(DUMMY_PROTOCOL)
1836 else if( MOD_L4C == ptrMsg->src_mod_id )
1837 {
1838 FT_L4_Operation(ptrMsg);
1839 }
1840#endif // #if !defined(__L4_TASK_DISABLE__) && !defined(L4_NOT_PRESENT)
1841}
1842#endif // #ifndef L1_SIM
1843/*******************************************************************************
1844 * FUNCTION
1845 * FT_Task
1846 *
1847 * DESCRIPTION
1848 * Entry point for the factory testing task. The function performs initialisation,
1849 * then sits in an infinite loop reading messages or reports and dispatching
1850 * them.
1851 *
1852 * CALLS
1853 *
1854 * PARAMETERS
1855 * None
1856 *
1857 * RETURNS
1858 * None
1859 *
1860 * GLOBALS AFFECTED
1861 * None
1862 *******************************************************************************/
1863
1864#define META_Version_Check_Fail 0
1865#define META_Version_Check_Required 0
1866
1867void FT_Task(task_entry_struct * task_entry_ptr)
1868{
1869 ilm_struct current_ilm;
1870 FT_Initialization(task_entry_ptr);
1871 while ( 1 )
1872 {
1873#ifndef L1_SIM
1874 msg_receive_extq(&current_ilm );
1875#else
1876 gs_read_message(MOD_FT, &current_ilm, sizeof(current_ilm), KAL_TRUE);
1877#endif //#ifndef L1_SIM
1878 FT_DispatchMessage(&current_ilm );
1879 destroy_ilm(&current_ilm);
1880 }
1881}
1882kal_eventgrpid MMRF_UPDATE_RUNTIME_EVENT;
1883kal_bool FT_Init(void)
1884{
1885 MMRF_UPDATE_RUNTIME_EVENT = kal_create_event_group("MMRF_UPD");
1886 return KAL_TRUE;
1887}