blob: 792c9e731eed52a445c64fc41f53d364e18f267a [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) 2018
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 * Filename:
38 * ---------
39 * mcf_ut.c
40 *
41 * Project:
42 * --------
43 * UMOLYA
44 *
45 * Description:
46 * ------------
47 * MD Configuration Framework unit test implementation.
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 *
59 * removed!
60 * removed!
61 * removed!
62 * removed!
63 *
64 * removed!
65 * removed!
66 * removed!
67 * removed!
68 *
69 * removed!
70 * removed!
71 * removed!
72 * removed!
73 *
74 * removed!
75 * removed!
76 * removed!
77 *
78 * removed!
79 * removed!
80 * removed!
81 *
82 * removed!
83 * removed!
84 * removed!
85 *
86 * removed!
87 *
88 * removed!
89 * removed!
90 * removed!
91 * removed!
92 *
93 * removed!
94 * removed!
95 * removed!
96 * removed!
97 *
98 * removed!
99 * removed!
100 * removed!
101 * removed!
102 *
103 * removed!
104 * removed!
105 * removed!
106 *
107 * removed!
108 * removed!
109 * removed!
110 * removed!
111 *
112 * removed!
113 * removed!
114 * removed!
115 * removed!
116 * removed!
117 * removed!
118 *
119 * removed!
120 * removed!
121 *
122 * removed!
123 * removed!
124 * removed!
125 *
126 * removed!
127 * removed!
128 * removed!
129 * removed!
130 *
131 * removed!
132 * removed!
133 * removed!
134 *
135 * removed!
136 * removed!
137 * removed!
138 *
139 * removed!
140 * removed!
141 * removed!
142 *
143 * removed!
144 * removed!
145 * removed!
146 *
147 * removed!
148 * removed!
149 * removed!
150 * removed!
151 *
152 * removed!
153 * removed!
154 * removed!
155 * removed!
156 *
157 * removed!
158 * removed!
159 * removed!
160 * removed!
161 * removed!
162 * removed!
163 * removed!
164 *
165 * removed!
166 * removed!
167 * removed!
168 *
169 * removed!
170 * removed!
171 * removed!
172 *
173 * removed!
174 * removed!
175 * removed!
176 *
177 * removed!
178 * removed!
179 * removed!
180 *
181 * removed!
182 * removed!
183 * removed!
184 *
185 * removed!
186 * removed!
187 * removed!
188 * removed!
189 * removed!
190 * removed!
191 *
192 * removed!
193 * removed!
194 * removed!
195 * removed!
196 *
197 * removed!
198 * removed!
199 * removed!
200 *
201 * removed!
202 * removed!
203 * removed!
204 *
205 * removed!
206 * removed!
207 * removed!
208 *
209 * removed!
210 * removed!
211 *
212 * removed!
213 * removed!
214 * removed!
215 *
216 * removed!
217 * removed!
218 * removed!
219 *
220 * removed!
221 * removed!
222 * removed!
223 *
224 * removed!
225 * removed!
226 * removed!
227 *
228 * removed!
229 * removed!
230 * removed!
231 *
232 * removed!
233 * removed!
234 * removed!
235 *
236 * removed!
237 * removed!
238 * removed!
239 *
240 *
241 * removed!
242 * removed!
243 * removed!
244 *
245 * removed!
246 * removed!
247 * removed!
248 *
249 * removed!
250 * removed!
251 * removed!
252 *
253 * removed!
254 * removed!
255 * removed!
256 * removed!
257 *
258 * removed!
259 * removed!
260 * removed!
261 * removed!
262 *
263 * removed!
264 * removed!
265 * removed!
266 *
267 *------------------------------------------------------------------------------
268 * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
269 *==============================================================================
270 *******************************************************************************/
271
272#include "kal_public_api.h"
273#include "sys_test.h"
274#include "fs_general_api.h"
275#include <direct.h>
276#include "syscomp_config.h"
277
278#include "em_msgid.h"
279#include "em_l4_common_public_struct.h"
280#include "em_mcf_public_struct.h"
281#include "em_struct.h"
282
283#include "nvram_interface.h"
284#include "nvram_group_def.h"
285#include "mcf_nvram_editor.h"
286
287#include "mcf_if.h"
288#include "mcf_util.h"
289#include "mcf_defs.h"
290#include "mcf_object.h"
291#include "mcf_debug.h"
292#include "mcf_utfwk.h"
293
294/*------------------------------------------------------------------------------
295 * Constant definition.
296 *----------------------------------------------------------------------------*/
297#define MCF_FS_DUMMY_AP_FILE_PATH "/nvdata/mdota"
298#define MCF_TEST_OTA_LID_BASE_GID 5059
299#define MCF_TEST_OTA_QUERY_LID_BASE_GID 5188
300
301/*------------------------------------------------------------------------------
302 * Private Helper macros.
303 *----------------------------------------------------------------------------*/
304#define MCF_UT_FAKE_PRINT 2
305#if MCF_UT_FAKE_PRINT == 1
306 extern int fake_print(const char *fmt, ...);
307 #define _mcf_ut_printf fake_print
308#elif MCF_UT_FAKE_PRINT == 2
309 #define _mcf_ut_printf printf
310#else
311 #define _mcf_ut_printf(...)
312#endif
313
314#define mcf_ut_printf(_fmts, ...) \
315 _mcf_ut_printf("%s(): " _fmts, __FUNCTION__, ##__VA_ARGS__)
316
317#define mcf_ut_format_err_str(_fmts, ...) \
318 kal_sprintf(p_ret_err_str, "%s():%d: " _fmts, __FUNCTION__, __LINE__, ##__VA_ARGS__); \
319 mcf_ut_printf("[FAILED] %s():%d: " _fmts, __FUNCTION__, __LINE__, ##__VA_ARGS__)
320
321#define MCF_UT_PASS() mcf_ut_printf("PASSED\n")
322
323/*------------------------------------------------------------------------------
324 * Global variables.
325 *----------------------------------------------------------------------------*/
326extern nvram_mcf_lid_info_struct mcf_last_mod_lid_g;
327extern nvram_mcf_lid_info_struct mcf_curr_mod_lid_g;
328extern nvram_mcf_lid_info_struct mcf_tlvota_last_mod_lid_g[MAX_SIM_NUM];
329extern nvram_mcf_lid_info_struct mcf_tlvota_curr_mod_lid_g[MAX_SIM_NUM];
330extern nvram_mcf_lid_info_struct mcf_general_tlvota_last_mod_lid_g[MAX_SIM_NUM];
331extern nvram_mcf_lid_info_struct mcf_general_tlvota_curr_mod_lid_g[MAX_SIM_NUM];
332extern kal_bool is_read_tlvota[MAX_SIM_NUM];
333extern kal_bool is_read_general_tlvota[MAX_SIM_NUM];
334extern nvram_ef_mcf_internal_info_struct nv_int_info;
335#ifdef __MCF_COMBINE_FILE_SUPPORT__
336extern kal_uint8 mcf_merge_buffer[MCF_MAX_TLVOTA_FILE_SIZE];
337kal_uint8 mcf_file_buffer[MCF_MAX_TLVOTA_FILE_SIZE];
338#endif
339
340/*------------------------------------------------------------------------------
341 * Private variables.
342 *----------------------------------------------------------------------------*/
343static nvram_ef_mcf_test_struct mcf_utfwk_lid_buffer;
344/* OTA test LID value pattern */
345static const nvram_ef_mcf_test_struct mcf_ut_test_lid_value_pattern = {
346 6, // val_byte_11
347 6, // val_byte_12
348 0x6, // val_bit_byte_11
349 0xf0, // val_bit_byte_12
350 6, // val_short_11
351 6, // val_short_12
352 6, // val_int_1
353 6, // val_float_1
354 6, // val_long_1
355 6.6, // val_double_1
356 "MCF Test 66", // val_buffer_1
357 {6, 6, 0x6, 0xf0, 6, 6, 6, 6, 6, 6.6, "MCF Test 66"}, // val_struct_1
358 6, // val_byte_21
359 6, // val_byte_22
360 0x6, // val_bit_byte_21
361 0xf0, // val_bit_byte_22
362 6, // val_short_21
363 6, // val_short_22
364 6, // val_int_2
365 6, // val_float_2
366 6, // val_long_2
367 6.6, // val_double_2
368 "MCF Test 66", // val_buffer_2
369 {6, 6, 0x6, 0xf0, 6, 6, 6, 6, 6, 6.6, "MCF Test 66"}, // val_struct_2
370 {{6, 6, 0x6, 0x6, 6, 6, 6, 6, 6, 6.6, "MCF"}, // val_struct_3[0]
371 {6, 6, 0x6, 0x6, 6, 6, 6, 6, 6, 6.6, "MCF"}, // val_struct_3[1]
372 {6, 6, 0x6, 0x6, 6, 6, 6, 6, 6, 6.6, "MCF"}, // val_struct_3[2]
373 {6, 6, 0x6, 0x6, 6, 6, 6, 6, 6, 6.6, "MCF"}} // val_struct_3[3]
374};
375
376/* OTA test LID value pattern */
377static nvram_ef_mcf_test_struct mcf_ut_test_lid_value_new_pattern = {
378 0, // val_byte_11
379 0, // val_byte_12
380 0x0, // val_bit_byte_11
381 0x0, // val_bit_byte_12
382 0, // val_short_11
383 0, // val_short_12
384 0, // val_int_1
385 0, // val_float_1
386 0, // val_long_1
387 0, // val_double_1
388 "", // val_buffer_1
389 {0, 0, 0x0, 0x0, 0, 0, 0, 0, 0, 0, "", {"MCF"}, {1,2,3}}, // val_struct_1
390 0, // val_byte_21
391 0, // val_byte_22
392 0x0, // val_bit_byte_21
393 0x0, // val_bit_byte_22
394 0, // val_short_21
395 0, // val_short_22
396 0, // val_int_2
397 0, // val_float_2
398 0, // val_long_2
399 0, // val_double_2
400 "", // val_buffer_2
401 {0, 0, 0x0, 0x0, 0, 0, 0, 0, 0, 0, "", {"MCF"}, {1,2,3}}, // val_struct_2
402 {{0, 0, 0x0, 0x0, 0, 0, 0, 0, 0, 0, "", {"MCF"}, {1,2,3}}, // val_struct_3[0]
403 {0, 0, 0x0, 0x0, 0, 0, 0, 0, 0, 0, "", {"MCF"}, {1,2,3}}, // val_struct_3[1]
404 {0, 0, 0x0, 0x0, 0, 0, 0, 0, 0, 0, "", {"MCF"}, {1,2,3}}, // val_struct_3[2]
405 {0, 0, 0x0, 0x0, 0, 0, 0, 0, 0, 0, "", {"MCF"}, {1,2,3}}}, // val_struct_3[3]
406 0xFFFF,
407 0xFFFFFFFF,
408 0xFF,
409 0xFF,
410 0xFFFF,
411 0xFFFFFFFF
412};
413
414/*------------------------------------------------------------------------------
415 * Private fucntions.
416 *----------------------------------------------------------------------------*/
417extern kal_char* release_verno(void);
418extern kal_char* build_date_time(void);
419extern sim_interface_enum l4c_gemini_get_actual_sim_id(sim_interface_enum simId);
420extern kal_bool mcf_set_file_path(l4c_mcf_set_config_req_struct *req);
421extern kal_bool mcf_get_applied_file_path(l4c_mcf_get_config_req_struct *req, l4c_mcf_get_config_cnf_struct *resp);
422extern kal_bool mcf_em_update_req_hdlr(local_para_struct *local_para_ptr);
423extern chmod(const char *_Filename,int _Mode);
424
425void mcf_ut_init(void)
426{
427 mcf_t *pMcf;
428 mcf_ota_file_t *ota_file;
429 mcf_tlvota_file_t *tlvota_file;
430 kal_uint8 *lid_buffer;
431 kal_uint32 i;
432
433 pMcf = mcf_get_instance();
434 ota_file = &(pMcf->ota_file);
435 kal_mem_set(pMcf, 0, sizeof(mcf_t));
436
437 /* Object init */
438 MCF_INIT_OBJECT_BEGIN(ota_file, mcf_enhmutex_g);
439 MCF_INIT_OBJECT_END(ota_file, mcf_enhmutex_g);
440
441 for (i = 0; i < MAX_SIM_NUM; i++) {
442 tlvota_file = &(pMcf->tlvota_file[i]);
443 MCF_INIT_OBJECT_BEGIN(tlvota_file, mcf_enhmutex_g);
444 MCF_INIT_OBJECT_END(tlvota_file, mcf_enhmutex_g);
445 }
446
447 tlvota_file = &(pMcf->general_tlvota_file);
448 MCF_INIT_OBJECT_BEGIN(tlvota_file, mcf_enhmutex_g);
449 MCF_INIT_OBJECT_END(tlvota_file, mcf_enhmutex_g);
450
451 /* Reset NVRAM_EF_MCF_OTA_FILE_LID */
452 lid_buffer = (kal_uint8 *)get_ctrl_buffer(sizeof(nvram_ef_mcf_ota_file_info_struct));
453 kal_mem_set(lid_buffer, 0, sizeof(nvram_ef_mcf_ota_file_info_struct));
454 for(i = 0; i < NVRAM_EF_MCF_OTA_FILE_TOTAL; i++) {
455 if ( !nvram_external_write_data(NVRAM_EF_MCF_OTA_FILE_LID, i+1, lid_buffer, sizeof(nvram_ef_mcf_ota_file_info_struct)) ) {
456 printf("Fail to reset NVRAM_EF_MCF_OTA_FILE_LID!!\r\n");
457 }
458 }
459 free_ctrl_buffer_set_null(lid_buffer);
460
461 /* Reset NVRAM_EF_MCF_TLVOTA_FILE_LID */
462 lid_buffer = (kal_uint8 *)get_ctrl_buffer(sizeof(nvram_ef_mcf_tlvota_file_info_struct));
463 kal_mem_set(lid_buffer, 0, sizeof(nvram_ef_mcf_tlvota_file_info_struct));
464 for(i = 0; i < NVRAM_EF_MCF_TLVOTA_FILE_TOTAL; i++) {
465 if ( !nvram_external_write_data(NVRAM_EF_MCF_TLVOTA_FILE_LID, i+1, lid_buffer, sizeof(nvram_ef_mcf_tlvota_file_info_struct)) ) {
466 printf("Fail to reset NVRAM_EF_MCF_TLVOTA_FILE_LID!!\r\n");
467 }
468 }
469 free_ctrl_buffer_set_null(lid_buffer);
470
471 /* Reset NVRAM_EF_MCF_TEST_OTA_LID */
472 lid_buffer = (kal_uint8 *)get_ctrl_buffer(sizeof(nvram_ef_mcf_test_struct));
473 kal_mem_set(lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
474 for(i = 0; i < NVRAM_EF_MCF_TEST_OTA_TOTAL; i++) {
475 if ( !nvram_external_write_data(NVRAM_EF_MCF_TEST_OTA_LID, i+1, lid_buffer, sizeof(nvram_ef_mcf_test_struct)) ) {
476 printf("Fail to reset NVRAM_EF_MCF_TEST_OTA_LID!!\r\n");
477 }
478 }
479 free_ctrl_buffer_set_null(lid_buffer);
480
481 /* Reset NVRAM_EF_MCF_TEST_OTA_QUERY_LID */
482 lid_buffer = (kal_uint8 *)get_ctrl_buffer(sizeof(nvram_ef_mcf_test_struct));
483 kal_mem_set(lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
484 for(i = 0; i < NVRAM_EF_MCF_TEST_OTA_QUERY_TOTAL; i++) {
485 if ( !nvram_external_write_data(NVRAM_EF_MCF_TEST_OTA_QUERY_LID, i+1, lid_buffer, sizeof(nvram_ef_mcf_test_struct)) ) {
486 printf("Fail to reset NVRAM_EF_MCF_TEST_OTA_QUERY_LID!!\r\n");
487 }
488 }
489 free_ctrl_buffer_set_null(lid_buffer);
490
491 /* Reset NVRAM_EF_MCF_SW_INFO_LID */
492 lid_buffer = (kal_uint8 *)get_ctrl_buffer(sizeof(nvram_ef_mcf_sw_info_struct));
493 kal_mem_set(lid_buffer, 0, sizeof(nvram_ef_mcf_sw_info_struct));
494 for(i = 0; i < NVRAM_EF_MCF_SW_INFO_TOTAL; i++) {
495 if ( !nvram_external_write_data(NVRAM_EF_MCF_SW_INFO_LID, i+1, lid_buffer, sizeof(nvram_ef_mcf_sw_info_struct)) ) {
496 printf("Fail to reset NVRAM_EF_MCF_SW_INFO_LID!!\r\n");
497 }
498 }
499 free_ctrl_buffer_set_null(lid_buffer);
500
501 /* Reset NVRAM_EF_MCF_INTERNAL_INFO_LID */
502 lid_buffer = (kal_uint8 *)get_ctrl_buffer(sizeof(nvram_ef_mcf_internal_info_struct));
503 kal_mem_set(lid_buffer, 0, sizeof(nvram_ef_mcf_internal_info_struct));
504 for(i = 0; i < NVRAM_EF_MCF_INTERNAL_INFO_TOTAL; i++) {
505 if ( !nvram_external_write_data(NVRAM_EF_MCF_INTERNAL_INFO_LID, i+1, lid_buffer, sizeof(nvram_ef_mcf_internal_info_struct)) ) {
506 printf("Fail to reset NVRAM_EF_MCF_INTERNAL_INFO_LID!!\r\n");
507 }
508 }
509 free_ctrl_buffer_set_null(lid_buffer);
510
511 return;
512}
513
514#if !defined(__MTK_TARGET__)
515kal_bool mcf_ut_open_test_data(kal_char *filename, kal_char *data_buff, kal_uint32 size)
516{
517 kal_char test_data_path[512];
518 kal_char *pos;
519 FILE *file;
520
521 getcwd(test_data_path, sizeof(test_data_path));
522 pos = strstr(test_data_path, "mcu");
523 kal_sprintf(pos + strlen("mcu"), "\\%s\\%s%c", MCF_UT_DB_FOLDER_PATH, filename, '\0');
524 file = fopen(test_data_path, "rb");
525
526 if(file != NULL)
527 {
528 kal_mem_set(data_buff, 0, size);
529 fread(data_buff, size, 1, file);
530 fclose(file);
531 } else {
532 return KAL_FALSE;
533 }
534
535 return KAL_TRUE;
536}
537
538kal_bool mcf_ut_write_test_data(kal_char *filename, kal_char *data_buff)
539{
540 kal_char test_data_path[512];
541 kal_char *pos;
542 FILE *file;
543
544 getcwd(test_data_path, sizeof(test_data_path));
545 pos = strstr(test_data_path, "mcu");
546 kal_sprintf(pos + strlen("mcu"), "\\%s\\%s%c", MCF_UT_DB_FOLDER_PATH, filename, '\0');
547 file = fopen(test_data_path, "w");
548
549 if(file != NULL)
550 {
551 fwrite(data_buff,1,strlen(data_buff),file);
552 fclose(file);
553 } else {
554 return KAL_FALSE;
555 }
556
557 return KAL_TRUE;
558}
559static kal_bool mcf_utfwk_dsbp_callback(sbp_reconfig_custom_param_struct *param_ptr)
560{
561 mcf_ota_result_e mcf_ota_result = MCF_OTA_R_SUCCESS;
562 mcf_tlvota_sbp_tag_t ota_sbp_tag;
563
564 ota_sbp_tag.sbp_id = param_ptr->sbp_id;
565 memcpy(&(ota_sbp_tag.mcc), param_ptr->mcc, MAX_MCC_STR_LEN);
566 memcpy(&(ota_sbp_tag.mnc), param_ptr->mnc, MAX_MNC_STR_LEN);
567 mcf_ota_result = mcf_read_tlvota_buffer_sbp_tag(param_ptr->ps_id, ota_sbp_tag, NVRAM_EF_MCF_TEST_OTA_LID, (kal_uint8*)&mcf_utfwk_lid_buffer, sizeof(mcf_utfwk_lid_buffer));
568
569 return KAL_TRUE;
570}
571#endif
572
573kal_bool mcf_check_dsbp_mode(kal_bool is_ignore_dsbp, sim_interface_enum sim_id)
574{
575 nvram_ef_mcf_internal_info_struct nv_int_info;
576 kal_bool ret = KAL_TRUE;
577
578 /* Read MCF SW information in NVRAM */
579 if ( !nvram_external_read_data(NVRAM_EF_MCF_INTERNAL_INFO_LID, 1, (kal_uint8 *)&nv_int_info, sizeof(nvram_ef_mcf_internal_info_struct))) {
580 printf("%s():%d: Fail to read LID(%d)\n", __FUNCTION__, __LINE__, NVRAM_EF_MCF_INTERNAL_INFO_LID);
581 ret = KAL_FALSE;
582
583 return ret;
584 }
585
586 if (nv_int_info.tlvota_is_ignore_dsbp[sim_id] != is_ignore_dsbp) {
587 ret = KAL_FALSE;
588
589 return ret;
590 }
591
592 return ret;
593}
594
595kal_bool mcf_ut_check_file_path(
596 l4c_mcf_set_config_req_struct *req,
597 kal_bool is_null_ota_path,
598 kal_bool is_null_tlvota_path,
599 kal_bool is_dsbp_active_mode)
600{
601 mcf_t *pMcf = mcf_get_instance();
602 kal_bool ret = KAL_TRUE;
603 kal_uint8 sim_id = req->ps_id;
604
605 switch (req->op)
606 {
607 case L4C_MCF_CONFIG_SET_OTA_AND_OPOTA_FILE_PATH:
608 {
609 nvram_ef_mcf_ota_file_info_struct nv_ota_file;
610 nvram_ef_mcf_tlvota_file_info_struct nv_tlvota_file;
611
612 ret = mcf_check_dsbp_mode(KAL_FALSE, sim_id);
613 if ( (ret != KAL_TRUE) || (pMcf->is_ignore_dsbp[sim_id] != KAL_FALSE) ) {
614 printf("%s():%d: MCF DSBP mode is incorrect!! is_ignore_dsbp(%d)\n", __FUNCTION__, __LINE__, pMcf->is_ignore_dsbp[sim_id]);
615 ret = KAL_FALSE;
616
617 return ret;
618 }
619
620 /* OTA */
621 if ( !nvram_external_read_data(NVRAM_EF_MCF_OTA_FILE_LID, 1, (kal_uint8 *)&nv_ota_file, sizeof(nvram_ef_mcf_ota_file_info_struct))) {
622 printf("%s():%d: Fail to read LID(%d)\n", __FUNCTION__, __LINE__, NVRAM_EF_MCF_OTA_FILE_LID);
623 ret = KAL_FALSE;
624
625 return ret;
626 }
627 if (is_null_ota_path == KAL_FALSE) {
628 if ( (strncmp(nv_ota_file.path, MCF_FS_CUSTOM_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN) != 0)
629 || (strncmp(nv_ota_file.name, MCF_FS_DEFAULT_OTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN) != 0) ){
630 ret = KAL_FALSE;
631 }
632 } else {
633 if ( (strcmp(nv_ota_file.path, "") != 0) || (strcmp(nv_ota_file.name, "") != 0) ) {
634 ret = KAL_FALSE;
635 }
636 }
637
638 /* TLV-OTA */
639 if ( !nvram_external_read_data(NVRAM_EF_MCF_TLVOTA_FILE_LID, sim_id + 1, (kal_uint8 *)&nv_tlvota_file, sizeof(nvram_ef_mcf_tlvota_file_info_struct))) {
640 printf("%s():%d: Fail to read LID(%d)\n", __FUNCTION__, __LINE__, NVRAM_EF_MCF_TLVOTA_FILE_LID);
641 ret = KAL_FALSE;
642
643 return ret;
644 }
645 if (is_null_tlvota_path == KAL_FALSE) {
646 if ( (strncmp(nv_tlvota_file.path, MCF_FS_CUSTOM_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN) != 0)
647 || (strncmp(nv_tlvota_file.name, MCF_FS_DEFAULT_TLVOTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN) != 0) ){
648 ret = KAL_FALSE;
649 }
650 } else {
651 if ( (strcmp(nv_tlvota_file.path, "") != 0) || (strcmp(nv_tlvota_file.name, "") != 0) ) {
652 ret = KAL_FALSE;
653 }
654 }
655 break;
656 }
657
658 case L4C_MCF_CONFIG_SET_OTA_FILE_PATH:
659 {
660 nvram_ef_mcf_ota_file_info_struct nv_ota_file;
661
662 ret = mcf_check_dsbp_mode(KAL_FALSE, sim_id);
663 if ( (ret != KAL_TRUE) || (pMcf->is_ignore_dsbp[sim_id] != KAL_FALSE) ) {
664 printf("%s():%d: MCF DSBP mode is incorrect!! is_ignore_dsbp(%d)\n", __FUNCTION__, __LINE__, pMcf->is_ignore_dsbp[sim_id]);
665 ret = KAL_FALSE;
666
667 return ret;
668 }
669
670 if ( !nvram_external_read_data(NVRAM_EF_MCF_OTA_FILE_LID, 1, (kal_uint8 *)&nv_ota_file, sizeof(nvram_ef_mcf_ota_file_info_struct))) {
671 printf("%s():%d: Fail to read LID(%d)\n", __FUNCTION__, __LINE__, NVRAM_EF_MCF_OTA_FILE_LID);
672 ret = KAL_FALSE;
673
674 return ret;
675 }
676
677 if (is_null_ota_path == KAL_FALSE) {
678 if ( (strncmp(nv_ota_file.path, MCF_FS_CUSTOM_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN) != 0)
679 || (strncmp(nv_ota_file.name, MCF_FS_DEFAULT_OTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN) != 0) ){
680 ret = KAL_FALSE;
681 }
682 } else {
683 if ( (strcmp(nv_ota_file.path, "") != 0) || (strcmp(nv_ota_file.name, "") != 0) ) {
684 ret = KAL_FALSE;
685 }
686 }
687 break;
688 }
689
690 case L4C_MCF_CONFIG_SET_OPOTA_FILE_PATH:
691 {
692 nvram_ef_mcf_tlvota_file_info_struct nv_tlvota_file;
693
694 ret = mcf_check_dsbp_mode(KAL_FALSE, sim_id);
695 if ( (ret != KAL_TRUE) || (pMcf->is_ignore_dsbp[sim_id] != KAL_FALSE) ) {
696 printf("%s():%d: MCF DSBP mode is incorrect!! is_ignore_dsbp(%d)\n", __FUNCTION__, __LINE__, pMcf->is_ignore_dsbp[sim_id]);
697 ret = KAL_FALSE;
698
699 return ret;
700 }
701
702 if ( !nvram_external_read_data(NVRAM_EF_MCF_TLVOTA_FILE_LID, sim_id + 1, (kal_uint8 *)&nv_tlvota_file, sizeof(nvram_ef_mcf_tlvota_file_info_struct))) {
703 printf("%s():%d: Fail to read LID(%d)\n", __FUNCTION__, __LINE__, NVRAM_EF_MCF_TLVOTA_FILE_LID);
704 ret = KAL_FALSE;
705
706 return ret;
707 }
708
709 if (is_null_tlvota_path == KAL_FALSE) {
710 if ( (strncmp(nv_tlvota_file.path, MCF_FS_CUSTOM_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN) != 0)
711 || (strncmp(nv_tlvota_file.name, MCF_FS_DEFAULT_TLVOTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN) != 0) ){
712 ret = KAL_FALSE;
713 }
714 } else {
715 if ( (strcmp(nv_tlvota_file.path, "") != 0) || (strcmp(nv_tlvota_file.name, "") != 0) ) {
716 ret = KAL_FALSE;
717 }
718 }
719 break;
720 }
721
722 case L4C_MCF_CONFIG_SET_FILE_PATH_IN_MCF_DSBP_ACTIVE_MODE:
723 {
724 ret = mcf_check_dsbp_mode(KAL_TRUE, sim_id);
725 if ( (ret != KAL_TRUE) || (pMcf->is_ignore_dsbp[sim_id] != KAL_TRUE) ) {
726 printf("%s():%d: MCF DSBP mode is incorrect!! is_ignore_dsbp(%d)\n", __FUNCTION__, __LINE__, pMcf->is_ignore_dsbp[sim_id]);
727 ret = KAL_FALSE;
728
729 return ret;
730 }
731
732 switch (req->config_type)
733 {
734 case L4C_MCF_CONFIG_TYPE_DEFAULT_BIN:
735 {
736 nvram_ef_mcf_ota_file_info_struct nv_ota_file;
737
738 if ( !nvram_external_read_data(NVRAM_EF_MCF_OTA_FILE_LID, 1, (kal_uint8 *)&nv_ota_file, sizeof(nvram_ef_mcf_ota_file_info_struct))) {
739 printf("%s():%d: Fail to read LID(%d)\n", __FUNCTION__, __LINE__, NVRAM_EF_MCF_OTA_FILE_LID);
740 ret = KAL_FALSE;
741
742 return ret;
743 }
744
745 if (is_null_ota_path == KAL_FALSE) {
746 if (req->path_type == L4C_MCF_PATH_TYPE_OTA) {
747 if ( (strncmp(nv_ota_file.path, MCF_FS_DEFAULT_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN) != 0)
748 || (strncmp(nv_ota_file.name, MCF_FS_DEFAULT_OTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN) != 0) ) {
749 ret = KAL_FALSE;
750 }
751 } else if (req->path_type == L4C_MCF_PATH_TYPE_RUNTIME) {
752 if ( (strncmp(nv_ota_file.path, MCF_FS_CUSTOM_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN) != 0)
753 || (strncmp(nv_ota_file.name, MCF_FS_DEFAULT_OTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN) != 0) ) {
754 ret = KAL_FALSE;
755 }
756 }
757 } else {
758 if ( (strncmp(nv_ota_file.path, MCF_FS_DEFAULT_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN) != 0)
759 || (strncmp(nv_ota_file.name, MCF_FS_DEFAULT_OTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN) != 0) ){
760 ret = KAL_FALSE;
761 }
762 }
763 break;
764 }
765
766 case L4C_MCF_CONFIG_TYPE_CARRIER_BIN:
767 {
768 nvram_ef_mcf_tlvota_file_info_struct nv_tlvota_file;
769
770 if ( !nvram_external_read_data(NVRAM_EF_MCF_TLVOTA_FILE_LID, sim_id + 1, (kal_uint8 *)&nv_tlvota_file, sizeof(nvram_ef_mcf_tlvota_file_info_struct))) {
771 printf("%s():%d: Fail to read LID(%d)\n", __FUNCTION__, __LINE__, NVRAM_EF_MCF_TLVOTA_FILE_LID);
772 ret = KAL_FALSE;
773
774 return ret;
775 }
776
777 if (is_null_tlvota_path == KAL_FALSE) {
778 if (req->path_type == L4C_MCF_PATH_TYPE_OTA) {
779 if ( (strncmp(nv_tlvota_file.path, MCF_FS_DEFAULT_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN) != 0)
780 || (strncmp(nv_tlvota_file.name, MCF_FS_DEFAULT_TLVOTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN) != 0) ){
781 ret = KAL_FALSE;
782 }
783 } else if (req->path_type == L4C_MCF_PATH_TYPE_RUNTIME) {
784 if ( (strncmp(nv_tlvota_file.path, MCF_FS_CUSTOM_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN) != 0)
785 || (strncmp(nv_tlvota_file.name, MCF_FS_DEFAULT_TLVOTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN) != 0) ) {
786 ret = KAL_FALSE;
787 }
788 }
789 } else {
790 if ( (strcmp(nv_tlvota_file.path, "") != 0) || (strcmp(nv_tlvota_file.name, "") != 0) ) {
791 ret = KAL_FALSE;
792 }
793 }
794 break;
795 }
796
797 default:
798 printf("%s():%d: Invalid config type(%d)\n", __FUNCTION__, __LINE__, req->config_type);
799 ret = KAL_FALSE;
800 break;
801 }
802
803 break;
804 }
805
806 default:
807 ret = KAL_FALSE;
808 break;
809 }
810
811 return ret;
812}
813
814kal_bool mcf_check_test_lid_value(kal_uint8 *target_buff)
815{
816 kal_bool ret = KAL_TRUE;
817 kal_uint8 *lid_buffer;
818
819 if (target_buff) {
820 if ( kal_mem_cmp(target_buff, &mcf_ut_test_lid_value_pattern, sizeof(nvram_ef_mcf_test_struct)) != 0 ) {
821 ret = KAL_FALSE;
822 }
823 } else {
824 /*
825 * NVRAM_EF_MCF_TEST_OTA_LID record 1
826 */
827 lid_buffer = (kal_uint8 *)get_ctrl_buffer(sizeof(nvram_ef_mcf_test_struct));
828 if ( !nvram_external_read_data(NVRAM_EF_MCF_TEST_OTA_LID, 1, lid_buffer, sizeof(nvram_ef_mcf_test_struct)) ) {
829 printf("Fail to read NVRAM_EF_MCF_TEST_OTA_LID!!\r\n");
830 ret = KAL_FALSE;
831 }
832
833 if ( kal_mem_cmp(lid_buffer, &mcf_ut_test_lid_value_pattern, sizeof(nvram_ef_mcf_test_struct)) != 0 ) {
834 ret = KAL_FALSE;
835 }
836 free_ctrl_buffer_set_null(lid_buffer);
837
838 if (ret == KAL_FALSE) {
839 return ret;
840 }
841
842 /*
843 * NVRAM_EF_MCF_TEST_OTA_LID record 2
844 */
845 lid_buffer = (kal_uint8 *)get_ctrl_buffer(sizeof(nvram_ef_mcf_test_struct));
846 if ( !nvram_external_read_data(NVRAM_EF_MCF_TEST_OTA_LID, 2, lid_buffer, sizeof(nvram_ef_mcf_test_struct)) ) {
847 printf("Fail to read NVRAM_EF_MCF_TEST_OTA_LID!!\r\n");
848 ret = KAL_FALSE;
849 }
850
851 if ( kal_mem_cmp(lid_buffer, &mcf_ut_test_lid_value_pattern, sizeof(nvram_ef_mcf_test_struct)) != 0 ) {
852 ret = KAL_FALSE;
853 }
854 free_ctrl_buffer_set_null(lid_buffer);
855
856 if (ret == KAL_FALSE) {
857 return ret;
858 }
859 }
860
861
862 return ret;
863}
864
865/*------------------------------------------------------------------------------
866 * Test case functions.
867 *----------------------------------------------------------------------------*/
868kal_bool mcf_ut_mcf_set_file_path_dsbp_passive_mode(void *p_param, kal_char *p_ret_err_str, kal_uint32 *p_ret_err_str_sz)
869{
870 l4c_mcf_set_config_req_struct *req;
871 kal_uint8 i;
872 mcf_ota_result_e mcf_ret;
873 kal_bool ret;
874
875 mcf_ut_init();
876
877 /*
878 * Set both OTA and TLV-OTA path positive test
879 */
880 for(i = 0; i < MAX_SIM_NUM; i++) {
881 req = (l4c_mcf_set_config_req_struct *)construct_local_para(sizeof(l4c_mcf_set_config_req_struct), TD_RESET);
882 req->op = L4C_MCF_CONFIG_SET_OTA_AND_OPOTA_FILE_PATH;
883 strcpy(req->config1, MCF_FS_DUMMY_AP_FILE_PATH);
884 strcpy(req->config2, MCF_FS_DEFAULT_OTA_FILE_NAME);
885 strcpy(req->config3, MCF_FS_DUMMY_AP_FILE_PATH);
886 strcpy(req->config4, MCF_FS_DEFAULT_TLVOTA_FILE_NAME);
887 req->ps_id = i;
888
889 mcf_ret = mcf_set_file_path(req);
890 if (mcf_ret != MCF_OTA_R_SUCCESS) {
891 mcf_ut_format_err_str("Set both OTA/TLV-OTA file paths positive test FAIL!!\r\n");
892 return KAL_FALSE;
893 }
894
895 ret = mcf_ut_check_file_path(req, KAL_FALSE, KAL_FALSE, KAL_FALSE);
896 if (ret != KAL_TRUE) {
897 mcf_ut_format_err_str("Check set both OTA/TLV-OTA file paths positive test FAIL!!\r\n");
898 return KAL_FALSE;
899 }
900 free_local_para((local_para_struct *)req);
901 }
902
903 /*
904 * Set both OTA and TLV-OTA path positive test
905 */
906 for(i = 0; i < MAX_SIM_NUM; i++) {
907 req = (l4c_mcf_set_config_req_struct *)construct_local_para(sizeof(l4c_mcf_set_config_req_struct), TD_RESET);
908 req->op = L4C_MCF_CONFIG_SET_OTA_AND_OPOTA_FILE_PATH;
909 strcpy(req->config1, MCF_FS_DUMMY_AP_FILE_PATH);
910 strcpy(req->config2, MCF_FS_DEFAULT_OTA_FILE_NAME);
911 strcpy(req->config3, "");
912 strcpy(req->config4, "");
913 req->ps_id = i;
914
915 mcf_ret = mcf_set_file_path(req);
916 if (mcf_ret != MCF_OTA_R_SUCCESS) {
917 mcf_ut_format_err_str("Set one of OTA/TLV-OTA file path positive test FAIL!!\r\n");
918 return KAL_FALSE;
919 }
920
921 ret = mcf_ut_check_file_path(req, KAL_FALSE, KAL_TRUE, KAL_FALSE);
922 if (ret != KAL_TRUE) {
923 mcf_ut_format_err_str("Check set one of OTA/TLV-OTA file path positive test FAIL!!\r\n");
924 return KAL_FALSE;
925 }
926 free_local_para((local_para_struct *)req);
927 }
928
929 /*
930 * Set both OTA and TLV-OTA path negative test
931 */
932 for(i = 0; i < MAX_SIM_NUM; i++) {
933 req = (l4c_mcf_set_config_req_struct *)construct_local_para(sizeof(l4c_mcf_set_config_req_struct), TD_RESET);
934 req->op = L4C_MCF_CONFIG_SET_OTA_AND_OPOTA_FILE_PATH;
935 strcpy(req->config1, MCF_FS_DUMMY_AP_FILE_PATH);
936 strcpy(req->config2, MCF_FS_DEFAULT_OTA_FILE_NAME);
937 strcpy(req->config3, "");
938 strcpy(req->config4, "");
939 req->ps_id = i;
940
941 mcf_ret = mcf_set_file_path(req);
942 if (mcf_ret != MCF_OTA_R_SUCCESS) {
943 mcf_ut_format_err_str("Set one of OTA/TLV-OTA file path negative test FAIL!!\r\n");
944 return KAL_FALSE;
945 }
946
947 ret = mcf_ut_check_file_path(req, KAL_FALSE, KAL_FALSE, KAL_FALSE);
948 if (ret != KAL_FALSE) {
949 mcf_ut_format_err_str("Check set one of OTA/TLV-OTA file path negative test FAIL!!\r\n");
950 return KAL_FALSE;
951 }
952 free_local_para((local_para_struct *)req);
953 }
954
955 /*
956 * Set OTA path positive test
957 */
958 req = (l4c_mcf_set_config_req_struct *)construct_local_para(sizeof(l4c_mcf_set_config_req_struct), TD_RESET);
959 req->op = L4C_MCF_CONFIG_SET_OTA_FILE_PATH;
960 strcpy(req->config1, MCF_FS_DUMMY_AP_FILE_PATH);
961 strcpy(req->config2, MCF_FS_DEFAULT_OTA_FILE_NAME);
962
963 mcf_ret = mcf_set_file_path(req);
964 if (mcf_ret != MCF_OTA_R_SUCCESS) {
965 mcf_ut_format_err_str("Set OTA file path positive test FAIL!!\r\n");
966 return KAL_FALSE;
967 }
968
969 ret = mcf_ut_check_file_path(req, KAL_FALSE, KAL_TRUE, KAL_FALSE);
970 if (ret != KAL_TRUE) {
971 mcf_ut_format_err_str("Check set OTA file path positive test FAIL!!\r\n");
972 return KAL_FALSE;
973 }
974 free_local_para((local_para_struct *)req);
975
976 /*
977 * Delete OTA path positive test
978 */
979 req = (l4c_mcf_set_config_req_struct *)construct_local_para(sizeof(l4c_mcf_set_config_req_struct), TD_RESET);
980 req->op = L4C_MCF_CONFIG_SET_OTA_FILE_PATH;
981 strcpy(req->config1, "");
982 strcpy(req->config2, "");
983
984 mcf_ret = mcf_set_file_path(req);
985 if (mcf_ret != MCF_OTA_R_SUCCESS) {
986 mcf_ut_format_err_str("Delete OTA file path positive test FAIL!!\r\n");
987 return KAL_FALSE;
988 }
989
990 ret = mcf_ut_check_file_path(req, KAL_TRUE, KAL_FALSE, KAL_FALSE);
991 if (ret != KAL_TRUE) {
992 mcf_ut_format_err_str("Check delete OTA file path positive test FAIL!!\r\n");
993 return KAL_FALSE;
994 }
995 free_local_para((local_para_struct *)req);
996
997 /*
998 * Set OTA path negative test
999 */
1000 req = (l4c_mcf_set_config_req_struct *)construct_local_para(sizeof(l4c_mcf_set_config_req_struct), TD_RESET);
1001 req->op = L4C_MCF_CONFIG_SET_OTA_FILE_PATH;
1002 strcpy(req->config1, MCF_FS_DUMMY_AP_FILE_PATH);
1003 strcpy(req->config2, MCF_FS_DEFAULT_TLVOTA_FILE_NAME);
1004
1005 mcf_ret = mcf_set_file_path(req);
1006 if (mcf_ret != MCF_OTA_R_SUCCESS) {
1007 mcf_ut_format_err_str("Set OTA file path negative test FAIL!!\r\n");
1008 return KAL_FALSE;
1009 }
1010
1011 ret = mcf_ut_check_file_path(req, KAL_FALSE, KAL_TRUE, KAL_FALSE);
1012 if (ret != KAL_FALSE) {
1013 mcf_ut_format_err_str("Check set OTA file path negative test FAIL!!\r\n");
1014 return KAL_FALSE;
1015 }
1016 free_local_para((local_para_struct *)req);
1017
1018 /*
1019 * Set TLV-OTA path positive test
1020 */
1021 for(i = 0; i < MAX_SIM_NUM; i++) {
1022 req = (l4c_mcf_set_config_req_struct *)construct_local_para(sizeof(l4c_mcf_set_config_req_struct), TD_RESET);
1023 req->op = L4C_MCF_CONFIG_SET_OPOTA_FILE_PATH;
1024 strcpy(req->config1, MCF_FS_DUMMY_AP_FILE_PATH);
1025 strcpy(req->config2, MCF_FS_DEFAULT_TLVOTA_FILE_NAME);
1026 req->ps_id = i;
1027
1028 mcf_ret = mcf_set_file_path(req);
1029 if (mcf_ret != MCF_OTA_R_SUCCESS) {
1030 mcf_ut_format_err_str("Set TLV-OTA file path positive test FAIL!!\r\n");
1031 return KAL_FALSE;
1032 }
1033
1034 ret = mcf_ut_check_file_path(req, KAL_TRUE, KAL_FALSE, KAL_FALSE);
1035 if (ret != KAL_TRUE) {
1036 mcf_ut_format_err_str("Check set TLV-OTA file path positive test FAIL!!\r\n");
1037 return KAL_FALSE;
1038 }
1039 free_local_para((local_para_struct *)req);
1040 }
1041
1042 /*
1043 * Delete TLV-OTA path positive test
1044 */
1045 for(i = 0; i < MAX_SIM_NUM; i++) {
1046 req = (l4c_mcf_set_config_req_struct *)construct_local_para(sizeof(l4c_mcf_set_config_req_struct), TD_RESET);
1047 req->op = L4C_MCF_CONFIG_SET_OPOTA_FILE_PATH;
1048 strcpy(req->config1, "");
1049 strcpy(req->config2, "");
1050 req->ps_id = i;
1051
1052 mcf_ret = mcf_set_file_path(req);
1053 if (mcf_ret != MCF_OTA_R_SUCCESS) {
1054 mcf_ut_format_err_str("Delete TLV-OTA file path positive test FAIL!!\r\n");
1055 return KAL_FALSE;
1056 }
1057
1058 ret = mcf_ut_check_file_path(req, KAL_FALSE, KAL_TRUE, KAL_FALSE);
1059 if (ret != KAL_TRUE) {
1060 mcf_ut_format_err_str("Check delete TLV-OTA file path positive test FAIL!!\r\n");
1061 return KAL_FALSE;
1062 }
1063 free_local_para((local_para_struct *)req);
1064 }
1065
1066 /*
1067 * Set TLV-OTA path negative test
1068 */
1069 for(i = 0; i < MAX_SIM_NUM; i++) {
1070 req = (l4c_mcf_set_config_req_struct *)construct_local_para(sizeof(l4c_mcf_set_config_req_struct), TD_RESET);
1071 req->op = L4C_MCF_CONFIG_SET_OPOTA_FILE_PATH;
1072 strcpy(req->config1, MCF_FS_DUMMY_AP_FILE_PATH);
1073 strcpy(req->config2, MCF_FS_DEFAULT_OTA_FILE_NAME);
1074 req->ps_id = i;
1075
1076 mcf_ret = mcf_set_file_path(req);
1077 if (mcf_ret != MCF_OTA_R_SUCCESS) {
1078 mcf_ut_format_err_str("Set TLV-OTA file path negative test FAIL!!\r\n");
1079 return KAL_FALSE;
1080 }
1081
1082 ret = mcf_ut_check_file_path(req, KAL_FALSE, KAL_FALSE, KAL_FALSE);
1083 if (ret != KAL_FALSE) {
1084 mcf_ut_format_err_str("Check set TLV-OTA file path negative test FAIL!!\r\n");
1085 return KAL_FALSE;
1086 }
1087 free_local_para((local_para_struct *)req);
1088 }
1089
1090
1091 MCF_UT_PASS();
1092 return KAL_TRUE;
1093}
1094
1095kal_bool mcf_ut_mcf_set_file_path_dsbp_active_mode(void *p_param, kal_char *p_ret_err_str, kal_uint32 *p_ret_err_str_sz)
1096{
1097 mcf_t *pMcf = mcf_get_instance();
1098 mcf_ota_file_t *ota_file;
1099 mcf_tlvota_file_t *tlvota_file;
1100 mcf_tool_file_info_t *pFile;
1101 l4c_mcf_set_config_req_struct *req;
1102 sim_interface_enum sim_id;
1103 kal_uint8 i;
1104 mcf_ota_result_e mcf_ret;
1105 kal_bool ret;
1106
1107 mcf_ut_init();
1108
1109 ota_file = &(pMcf->ota_file);
1110 MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
1111 if (ota_file) {
1112 pFile = (mcf_tool_file_info_t *)(ota_file->buff);
1113 pFile->file_version = 2;
1114 MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
1115 } else {
1116 mcf_ut_format_err_str("set file path FAIL!! Fail to take write lock! \r\n");
1117 return KAL_FALSE;
1118 }
1119
1120
1121 for(i = 0; i < MAX_SIM_NUM; i++) {
1122 tlvota_file = &(pMcf->tlvota_file[i]);
1123 MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
1124 if (tlvota_file) {
1125 pFile = (mcf_tool_file_info_t *)(tlvota_file->buff);
1126 pFile->file_version = 2;
1127 MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
1128 }else {
1129 mcf_ut_format_err_str("set file path FAIL!! Fail to take write lock! \r\n");
1130 return KAL_FALSE;
1131 }
1132 }
1133
1134 /*
1135 * Set OTA path in default path positive test
1136 */
1137 req = (l4c_mcf_set_config_req_struct *)construct_local_para(sizeof(l4c_mcf_set_config_req_struct), TD_RESET);
1138 req->op = L4C_MCF_CONFIG_SET_FILE_PATH_IN_MCF_DSBP_ACTIVE_MODE;
1139 req->config_type = L4C_MCF_CONFIG_TYPE_DEFAULT_BIN;
1140 req->path_type = L4C_MCF_PATH_TYPE_OTA;
1141 strcpy(req->config1, MCF_FS_DEFAULT_OTA_FILE_NAME);
1142
1143 mcf_ret = mcf_set_file_path(req);
1144 if (mcf_ret != MCF_OTA_R_SUCCESS) {
1145 mcf_ut_format_err_str("Set OTA file path in default path positive test FAIL!!\r\n");
1146 return KAL_FALSE;
1147 }
1148
1149 ret = mcf_ut_check_file_path(req, KAL_FALSE, KAL_TRUE, KAL_TRUE);
1150 if (ret != KAL_TRUE) {
1151 mcf_ut_format_err_str("Check set OTA file path in default path positive test FAIL!!\r\n");
1152 return KAL_FALSE;
1153 }
1154 free_local_para((local_para_struct *)req);
1155
1156 /*
1157 * Set OTA path in default path with NULL file name positive test
1158 */
1159 req = (l4c_mcf_set_config_req_struct *)construct_local_para(sizeof(l4c_mcf_set_config_req_struct), TD_RESET);
1160 req->op = L4C_MCF_CONFIG_SET_FILE_PATH_IN_MCF_DSBP_ACTIVE_MODE;
1161 req->config_type = L4C_MCF_CONFIG_TYPE_DEFAULT_BIN;
1162 req->path_type = L4C_MCF_PATH_TYPE_OTA;
1163 strcpy(req->config1, "");
1164
1165 mcf_ret = mcf_set_file_path(req);
1166 if (mcf_ret != MCF_OTA_R_SUCCESS) {
1167 mcf_ut_format_err_str("Set OTA file path in default path with NULL file name positive test FAIL!!\r\n");
1168 return KAL_FALSE;
1169 }
1170
1171 ret = mcf_ut_check_file_path(req, KAL_TRUE, KAL_TRUE, KAL_TRUE);
1172 if (ret != KAL_TRUE) {
1173 mcf_ut_format_err_str("Check set OTA file path in default path with NULL file name positive test FAIL!!\r\n");
1174 return KAL_FALSE;
1175 }
1176 free_local_para((local_para_struct *)req);
1177
1178 /*
1179 * Set OTA path in runtime path positive test
1180 */
1181 req = (l4c_mcf_set_config_req_struct *)construct_local_para(sizeof(l4c_mcf_set_config_req_struct), TD_RESET);
1182 req->op = L4C_MCF_CONFIG_SET_FILE_PATH_IN_MCF_DSBP_ACTIVE_MODE;
1183 req->config_type = L4C_MCF_CONFIG_TYPE_DEFAULT_BIN;
1184 req->path_type = L4C_MCF_PATH_TYPE_RUNTIME;
1185 strcpy(req->config1, MCF_FS_DEFAULT_OTA_FILE_NAME);
1186
1187 mcf_ret = mcf_set_file_path(req);
1188 if (mcf_ret != MCF_OTA_R_SUCCESS) {
1189 mcf_ut_format_err_str("Set OTA file path in runtime path positive test FAIL!!\r\n");
1190 return KAL_FALSE;
1191 }
1192
1193 ret = mcf_ut_check_file_path(req, KAL_FALSE, KAL_TRUE, KAL_TRUE);
1194 if (ret != KAL_TRUE) {
1195 mcf_ut_format_err_str("Check set OTA file path in runtime path positive test FAIL!!\r\n");
1196 return KAL_FALSE;
1197 }
1198 free_local_para((local_para_struct *)req);
1199
1200 /*
1201 * Set OTA path in default path with NULL file name positive test
1202 */
1203 req = (l4c_mcf_set_config_req_struct *)construct_local_para(sizeof(l4c_mcf_set_config_req_struct), TD_RESET);
1204 req->op = L4C_MCF_CONFIG_SET_FILE_PATH_IN_MCF_DSBP_ACTIVE_MODE;
1205 req->config_type = L4C_MCF_CONFIG_TYPE_DEFAULT_BIN;
1206 req->path_type = L4C_MCF_PATH_TYPE_OTA;
1207 strcpy(req->config1, "");
1208
1209 mcf_ret = mcf_set_file_path(req);
1210 if (mcf_ret != MCF_OTA_R_SUCCESS) {
1211 mcf_ut_format_err_str("Set OTA file path in default path with NULL file name positive test FAIL!!\r\n");
1212 return KAL_FALSE;
1213 }
1214
1215 ret = mcf_ut_check_file_path(req, KAL_TRUE, KAL_TRUE, KAL_TRUE);
1216 if (ret != KAL_TRUE) {
1217 mcf_ut_format_err_str("Check set OTA file path in default path with NULL file name positive test FAIL!!\r\n");
1218 return KAL_FALSE;
1219 }
1220 free_local_para((local_para_struct *)req);
1221
1222 /*
1223 * Set OTA path in runtime path with NULL file name positive test
1224 */
1225 req = (l4c_mcf_set_config_req_struct *)construct_local_para(sizeof(l4c_mcf_set_config_req_struct), TD_RESET);
1226 req->op = L4C_MCF_CONFIG_SET_FILE_PATH_IN_MCF_DSBP_ACTIVE_MODE;
1227 req->config_type = L4C_MCF_CONFIG_TYPE_DEFAULT_BIN;
1228 req->path_type = L4C_MCF_PATH_TYPE_RUNTIME;
1229 strcpy(req->config1, "");
1230
1231 mcf_ret = mcf_set_file_path(req);
1232 if (mcf_ret != MCF_OTA_R_SUCCESS) {
1233 mcf_ut_format_err_str("Set OTA file path in runtime path with NULL file name positive test FAIL!!\r\n");
1234 return KAL_FALSE;
1235 }
1236
1237 ret = mcf_ut_check_file_path(req, KAL_TRUE, KAL_TRUE, KAL_TRUE);
1238 if (ret != KAL_TRUE) {
1239 mcf_ut_format_err_str("Check set OTA file path in runtime path with NULL file name positive test FAIL!!\r\n");
1240 return KAL_FALSE;
1241 }
1242 free_local_para((local_para_struct *)req);
1243
1244 /*
1245 * Set TLV-OTA path in default path positive test
1246 */
1247 for(i = 0; i < MAX_SIM_NUM; i++) {
1248 req = (l4c_mcf_set_config_req_struct *)construct_local_para(sizeof(l4c_mcf_set_config_req_struct), TD_RESET);
1249 req->op = L4C_MCF_CONFIG_SET_FILE_PATH_IN_MCF_DSBP_ACTIVE_MODE;
1250 req->config_type = L4C_MCF_CONFIG_TYPE_CARRIER_BIN;
1251 req->path_type = L4C_MCF_PATH_TYPE_OTA;
1252 strcpy(req->config1, MCF_FS_DEFAULT_TLVOTA_FILE_NAME);
1253 tlvota_file = &(pMcf->tlvota_file[i]);
1254 MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
1255 if (tlvota_file) {
1256 pFile = (mcf_tool_file_info_t *)(tlvota_file->buff);
1257 pFile->file_version = 2;
1258 req->ps_id = i;
1259 sim_id = l4c_gemini_get_actual_sim_id(req->ps_id);
1260 MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
1261 } else {
1262 mcf_ut_format_err_str("Set TLV-OTA path fail! Fail to take write lock! \r\n");
1263 return KAL_FALSE;
1264 }
1265
1266
1267 mcf_ret = mcf_set_file_path(req);
1268 if (mcf_ret != MCF_OTA_R_SUCCESS) {
1269 mcf_ut_format_err_str("Set TLV-OTA file path in default path positive test FAIL\r\n");
1270 return KAL_FALSE;
1271 }
1272
1273 /* Assume DSBP success */
1274 pMcf->is_dsbp_ongoing[sim_id] = KAL_FALSE;
1275 kal_mem_cpy(&(tlvota_file->last_file), &(tlvota_file->temp_file), sizeof(mcf_file_info_t));
1276
1277 ret = mcf_ut_check_file_path(req, KAL_TRUE, KAL_FALSE, KAL_TRUE);
1278 if (ret != KAL_TRUE) {
1279 mcf_ut_format_err_str("Check set TLV-OTA file path in default path positive test FAIL\r\n");
1280 return KAL_FALSE;
1281 }
1282 free_local_para((local_para_struct *)req);
1283 }
1284
1285 /*
1286 * Set TLV-OTA path in default path with NULL file name (deactivate OTA by OP) positive test
1287 */
1288 for(i = 0; i < MAX_SIM_NUM; i++) {
1289 req = (l4c_mcf_set_config_req_struct *)construct_local_para(sizeof(l4c_mcf_set_config_req_struct), TD_RESET);
1290 req->op = L4C_MCF_CONFIG_SET_FILE_PATH_IN_MCF_DSBP_ACTIVE_MODE;
1291 req->config_type = L4C_MCF_CONFIG_TYPE_CARRIER_BIN;
1292 req->path_type = L4C_MCF_PATH_TYPE_OTA;
1293 strcpy(req->config1, "");
1294 tlvota_file = &(pMcf->tlvota_file[i]);
1295 MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
1296 if (tlvota_file) {
1297 pFile = (mcf_tool_file_info_t *)(tlvota_file->buff);
1298 pFile->file_version = 2;
1299 req->ps_id = i;
1300 sim_id = l4c_gemini_get_actual_sim_id(req->ps_id);
1301 MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
1302 } else {
1303 mcf_ut_format_err_str("Set TLV-OTA path fail! Fail to take write lock! \r\n");
1304 return KAL_FALSE;
1305 }
1306
1307 mcf_ret = mcf_set_file_path(req);
1308 if (mcf_ret != MCF_OTA_R_SUCCESS) {
1309 mcf_ut_format_err_str("Set TLV-OTA file path in default path with NULL file name (deactivate OTA by OP) positive test FAIL!!\r\n");
1310 return KAL_FALSE;
1311 }
1312
1313 /* Assume DSBP success */
1314 pMcf->is_dsbp_ongoing[sim_id] = KAL_FALSE;
1315 kal_mem_cpy(&(tlvota_file->last_file), &(tlvota_file->temp_file), sizeof(mcf_file_info_t));
1316
1317 ret = mcf_ut_check_file_path(req, KAL_TRUE, KAL_TRUE, KAL_TRUE);
1318 if (ret != KAL_TRUE) {
1319 mcf_ut_format_err_str("Check set TLV-OTA file path in default path with NULL file name (deactivate OTA by OP) positive test FAIL!!\r\n");
1320 return KAL_FALSE;
1321 }
1322 free_local_para((local_para_struct *)req);
1323 }
1324
1325 /*
1326 * Set TLV-OTA path in runtime path positive test
1327 */
1328 for(i = 0; i < MAX_SIM_NUM; i++) {
1329 req = (l4c_mcf_set_config_req_struct *)construct_local_para(sizeof(l4c_mcf_set_config_req_struct), TD_RESET);
1330 req->op = L4C_MCF_CONFIG_SET_FILE_PATH_IN_MCF_DSBP_ACTIVE_MODE;
1331 req->config_type = L4C_MCF_CONFIG_TYPE_CARRIER_BIN;
1332 req->path_type = L4C_MCF_PATH_TYPE_RUNTIME;
1333 strcpy(req->config1, MCF_FS_DEFAULT_TLVOTA_FILE_NAME);
1334 tlvota_file = &(pMcf->tlvota_file[i]);
1335 MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
1336 if (tlvota_file) {
1337 pFile = (mcf_tool_file_info_t *)(tlvota_file->buff);
1338 pFile->file_version = 2;
1339 req->ps_id = i;
1340 sim_id = l4c_gemini_get_actual_sim_id(req->ps_id);
1341 MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
1342 } else {
1343 mcf_ut_format_err_str("Set TLV-OTA path fail! Fail to take write lock! \r\n");
1344 return KAL_FALSE;
1345 }
1346
1347 mcf_ret = mcf_set_file_path(req);
1348 if (mcf_ret != MCF_OTA_R_SUCCESS) {
1349 mcf_ut_format_err_str("Set TLV-OTA file path in runtime path positive test FAIL\r\n");
1350 return KAL_FALSE;
1351 }
1352
1353 /* Assume DSBP success */
1354 pMcf->is_dsbp_ongoing[sim_id] = KAL_FALSE;
1355 kal_mem_cpy(&(tlvota_file->last_file), &(tlvota_file->temp_file), sizeof(mcf_file_info_t));
1356
1357
1358 ret = mcf_ut_check_file_path(req, KAL_TRUE, KAL_FALSE, KAL_TRUE);
1359 if (ret != KAL_TRUE) {
1360 mcf_ut_format_err_str("Check set TLV-OTA file path in runtime path positive test FAIL\r\n");
1361 return KAL_FALSE;
1362 }
1363 free_local_para((local_para_struct *)req);
1364 }
1365
1366 /*
1367 * Set TLV-OTA path in runtime path with NULL file name (deactivate OTA by OP) positive test
1368 */
1369 for(i = 0; i < MAX_SIM_NUM; i++) {
1370 req = (l4c_mcf_set_config_req_struct *)construct_local_para(sizeof(l4c_mcf_set_config_req_struct), TD_RESET);
1371 req->op = L4C_MCF_CONFIG_SET_FILE_PATH_IN_MCF_DSBP_ACTIVE_MODE;
1372 req->config_type = L4C_MCF_CONFIG_TYPE_CARRIER_BIN;
1373 req->path_type = L4C_MCF_PATH_TYPE_RUNTIME;
1374 strcpy(req->config1, "");
1375 tlvota_file = &(pMcf->tlvota_file[i]);
1376 MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
1377 if (tlvota_file) {
1378 pFile = (mcf_tool_file_info_t *)(tlvota_file->buff);
1379 pFile->file_version = 2;
1380 req->ps_id = i;
1381 sim_id = l4c_gemini_get_actual_sim_id(req->ps_id);
1382 MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
1383 } else {
1384 mcf_ut_format_err_str("Set TLV-OTA path fail! Fail to take write lock! \r\n");
1385 return KAL_FALSE;
1386 }
1387
1388 mcf_ret = mcf_set_file_path(req);
1389 if (mcf_ret != MCF_OTA_R_SUCCESS) {
1390 mcf_ut_format_err_str("Set TLV-OTA file path in runtime path with NULL file name (deactivate OTA by OP) positive test FAIL!!\r\n");
1391 return KAL_FALSE;
1392 }
1393
1394 /* Assume DSBP success */
1395 pMcf->is_dsbp_ongoing[sim_id] = KAL_FALSE;
1396 kal_mem_cpy(&(tlvota_file->last_file), &(tlvota_file->temp_file), sizeof(mcf_file_info_t));
1397
1398 ret = mcf_ut_check_file_path(req, KAL_TRUE, KAL_TRUE, KAL_TRUE);
1399 if (ret != KAL_TRUE) {
1400 mcf_ut_format_err_str("Check set TLV-OTA file path in runtime path with NULL file name (deactivate OTA by OP) positive test FAIL!!\r\n");
1401 return KAL_FALSE;
1402 }
1403 free_local_para((local_para_struct *)req);
1404 }
1405
1406 /*
1407 * Set TLV-OTA path in default path positive test - file is not changed
1408 */
1409 for(i = 0; i < MAX_SIM_NUM; i++) {
1410 tlvota_file = &(pMcf->tlvota_file[i]);
1411 MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
1412 if (tlvota_file) {
1413 pFile = (mcf_tool_file_info_t *)(tlvota_file->buff);
1414 pFile->file_version = 2;
1415 MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
1416 } else {
1417 mcf_ut_format_err_str("Set TLV-OTA path fail! Fail to take write lock! \r\n");
1418 return KAL_FALSE;
1419 }
1420
1421 req = (l4c_mcf_set_config_req_struct *)construct_local_para(sizeof(l4c_mcf_set_config_req_struct), TD_RESET);
1422 req->op = L4C_MCF_CONFIG_SET_FILE_PATH_IN_MCF_DSBP_ACTIVE_MODE;
1423 req->config_type = L4C_MCF_CONFIG_TYPE_CARRIER_BIN;
1424 req->path_type = L4C_MCF_PATH_TYPE_OTA;
1425 strcpy(req->config1, MCF_FS_DEFAULT_TLVOTA_FILE_NAME);
1426 req->ps_id = i;
1427 sim_id = l4c_gemini_get_actual_sim_id(req->ps_id);
1428
1429 // First send file path
1430 mcf_ret = mcf_set_file_path(req);
1431 if (mcf_ret != MCF_OTA_R_SUCCESS) {
1432 mcf_ut_format_err_str("Set TLV-OTA file path in default path positive test FAIL\r\n");
1433 return KAL_FALSE;
1434 }
1435
1436 /* Assume DSBP success */
1437 pMcf->is_dsbp_ongoing[sim_id] = KAL_FALSE;
1438 kal_mem_cpy(&(tlvota_file->last_file), &(tlvota_file->temp_file), sizeof(mcf_file_info_t));
1439
1440 ret = mcf_ut_check_file_path(req, KAL_TRUE, KAL_FALSE, KAL_TRUE);
1441 if (ret != KAL_TRUE) {
1442 mcf_ut_format_err_str("Check set TLV-OTA file path in default path positive test FAIL\r\n");
1443 return KAL_FALSE;
1444 }
1445
1446 // Send same file path
1447 mcf_ret = mcf_set_file_path(req);
1448 if (mcf_ret != MCF_OTA_R_FILE_NOT_CHANGE) {
1449 mcf_ut_format_err_str("Set TLV-OTA file path in default path positive test FAIL\r\n");
1450 return KAL_FALSE;
1451 }
1452
1453 /* Assume DSBP success */
1454 pMcf->is_dsbp_ongoing[sim_id] = KAL_FALSE;
1455 kal_mem_cpy(&(tlvota_file->last_file), &(tlvota_file->temp_file), sizeof(mcf_file_info_t));
1456
1457 ret = mcf_ut_check_file_path(req, KAL_TRUE, KAL_FALSE, KAL_TRUE);
1458 if (ret != KAL_TRUE) {
1459 mcf_ut_format_err_str("Check set TLV-OTA file path in default path positive test FAIL\r\n");
1460 return KAL_FALSE;
1461 }
1462 free_local_para((local_para_struct *)req);
1463 }
1464
1465 /*
1466 * Set TLV-OTA path in runtime path positive test - file is not changed
1467 */
1468 for(i = 0; i < MAX_SIM_NUM; i++) {
1469 tlvota_file = &(pMcf->tlvota_file[i]);
1470 MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
1471 if (tlvota_file) {
1472 pFile = (mcf_tool_file_info_t *)(tlvota_file->buff);
1473 pFile->file_version = 2;
1474 MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
1475 } else {
1476 mcf_ut_format_err_str("Set TLV-OTA path fail! Fail to take write lock! \r\n");
1477 return KAL_FALSE;
1478 }
1479
1480 req = (l4c_mcf_set_config_req_struct *)construct_local_para(sizeof(l4c_mcf_set_config_req_struct), TD_RESET);
1481 req->op = L4C_MCF_CONFIG_SET_FILE_PATH_IN_MCF_DSBP_ACTIVE_MODE;
1482 req->config_type = L4C_MCF_CONFIG_TYPE_CARRIER_BIN;
1483 req->path_type = L4C_MCF_PATH_TYPE_RUNTIME;
1484 strcpy(req->config1, MCF_FS_DEFAULT_TLVOTA_FILE_NAME);
1485 req->ps_id = i;
1486 sim_id = l4c_gemini_get_actual_sim_id(req->ps_id);
1487
1488 // First send file path
1489 mcf_ret = mcf_set_file_path(req);
1490 if (mcf_ret != MCF_OTA_R_SUCCESS) {
1491 mcf_ut_format_err_str("Set TLV-OTA file path in default path positive test FAIL\r\n");
1492 return KAL_FALSE;
1493 }
1494
1495 /* Assume DSBP success */
1496 pMcf->is_dsbp_ongoing[sim_id] = KAL_FALSE;
1497 kal_mem_cpy(&(tlvota_file->last_file), &(tlvota_file->temp_file), sizeof(mcf_file_info_t));
1498
1499 ret = mcf_ut_check_file_path(req, KAL_TRUE, KAL_FALSE, KAL_TRUE);
1500 if (ret != KAL_TRUE) {
1501 mcf_ut_format_err_str("Check set TLV-OTA file path in default path positive test FAIL\r\n");
1502 return KAL_FALSE;
1503 }
1504
1505 // Send same file path
1506 mcf_ret = mcf_set_file_path(req);
1507 if (mcf_ret != MCF_OTA_R_FILE_NOT_CHANGE) {
1508 mcf_ut_format_err_str("Set TLV-OTA file path in default path positive test FAIL\r\n");
1509 return KAL_FALSE;
1510 }
1511
1512 /* Assume DSBP success */
1513 pMcf->is_dsbp_ongoing[sim_id] = KAL_FALSE;
1514 kal_mem_cpy(&(tlvota_file->last_file), &(tlvota_file->temp_file), sizeof(mcf_file_info_t));
1515
1516 ret = mcf_ut_check_file_path(req, KAL_TRUE, KAL_FALSE, KAL_TRUE);
1517 if (ret != KAL_TRUE) {
1518 mcf_ut_format_err_str("Check set TLV-OTA file path in default path positive test FAIL\r\n");
1519 return KAL_FALSE;
1520 }
1521 free_local_para((local_para_struct *)req);
1522 }
1523
1524 /*
1525 * Set TLV-OTA path in default path positive test - set file path after deactivated
1526 */
1527 for(i = 0; i < MAX_SIM_NUM; i++) {
1528 tlvota_file = &(pMcf->tlvota_file[i]);
1529 MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
1530 if (tlvota_file) {
1531 pFile = (mcf_tool_file_info_t *)(tlvota_file->buff);
1532 pFile->file_version = 2;
1533 MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
1534 } else {
1535 mcf_ut_format_err_str("Set TLV-OTA path fail! Fail to take write lock! \r\n");
1536 return KAL_FALSE;
1537 }
1538
1539 req = (l4c_mcf_set_config_req_struct *)construct_local_para(sizeof(l4c_mcf_set_config_req_struct), TD_RESET);
1540 req->op = L4C_MCF_CONFIG_SET_FILE_PATH_IN_MCF_DSBP_ACTIVE_MODE;
1541 req->config_type = L4C_MCF_CONFIG_TYPE_CARRIER_BIN;
1542 req->path_type = L4C_MCF_PATH_TYPE_OTA;
1543 strcpy(req->config1, "");
1544 req->ps_id = i;
1545 sim_id = l4c_gemini_get_actual_sim_id(req->ps_id);
1546
1547 // First send file path
1548 mcf_ret = mcf_set_file_path(req);
1549 if (mcf_ret != MCF_OTA_R_SUCCESS) {
1550 mcf_ut_format_err_str("Set TLV-OTA file path in default path positive test FAIL\r\n");
1551 return KAL_FALSE;
1552 }
1553
1554 /* Assume DSBP success */
1555 pMcf->is_dsbp_ongoing[sim_id] = KAL_FALSE;
1556 kal_mem_cpy(&(tlvota_file->last_file), &(tlvota_file->temp_file), sizeof(mcf_file_info_t));
1557
1558 ret = mcf_ut_check_file_path(req, KAL_TRUE, KAL_TRUE, KAL_TRUE);
1559 if (ret != KAL_TRUE) {
1560 mcf_ut_format_err_str("Check set TLV-OTA file path in default path positive test FAIL\r\n");
1561 return KAL_FALSE;
1562 }
1563
1564 // Send same file path
1565 MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
1566 if (tlvota_file) {
1567 pFile->file_version = 2;
1568 MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
1569 } else {
1570 mcf_ut_format_err_str("Set TLV-OTA path fail! Fail to take write lock! \r\n");
1571 return KAL_FALSE;
1572 }
1573 strcpy(req->config1, MCF_FS_DEFAULT_TLVOTA_FILE_NAME);
1574
1575 mcf_ret = mcf_set_file_path(req);
1576 if (mcf_ret != MCF_OTA_R_SUCCESS) {
1577 mcf_ut_format_err_str("Set TLV-OTA file path in default path positive test FAIL\r\n");
1578 return KAL_FALSE;
1579 }
1580
1581 /* Assume DSBP success */
1582 pMcf->is_dsbp_ongoing[sim_id] = KAL_FALSE;
1583 kal_mem_cpy(&(tlvota_file->last_file), &(tlvota_file->temp_file), sizeof(mcf_file_info_t));
1584
1585 ret = mcf_ut_check_file_path(req, KAL_TRUE, KAL_FALSE, KAL_TRUE);
1586 if (ret != KAL_TRUE) {
1587 mcf_ut_format_err_str("Check set TLV-OTA file path in default path positive test FAIL\r\n");
1588 return KAL_FALSE;
1589 }
1590 free_local_para((local_para_struct *)req);
1591 }
1592
1593 /*
1594 * Set TLV-OTA path in runtime path positive test - set file path after deactivated
1595 */
1596 for(i = 0; i < MAX_SIM_NUM; i++) {
1597 tlvota_file = &(pMcf->tlvota_file[i]);
1598 MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
1599 if (tlvota_file) {
1600 pFile = (mcf_tool_file_info_t *)(tlvota_file->buff);
1601 pFile->file_version = 2;
1602 MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
1603 } else {
1604 mcf_ut_format_err_str("Set TLV-OTA path fail! Fail to take write lock! \r\n");
1605 return KAL_FALSE;
1606 }
1607
1608 req = (l4c_mcf_set_config_req_struct *)construct_local_para(sizeof(l4c_mcf_set_config_req_struct), TD_RESET);
1609 req->op = L4C_MCF_CONFIG_SET_FILE_PATH_IN_MCF_DSBP_ACTIVE_MODE;
1610 req->config_type = L4C_MCF_CONFIG_TYPE_CARRIER_BIN;
1611 req->path_type = L4C_MCF_PATH_TYPE_RUNTIME;
1612 strcpy(req->config1, "");
1613 req->ps_id = i;
1614 sim_id = l4c_gemini_get_actual_sim_id(req->ps_id);
1615
1616 // First send file path
1617 mcf_ret = mcf_set_file_path(req);
1618 if (mcf_ret != MCF_OTA_R_SUCCESS) {
1619 mcf_ut_format_err_str("Set TLV-OTA file path in default path positive test FAIL\r\n");
1620 return KAL_FALSE;
1621 }
1622
1623 /* Assume DSBP success */
1624 pMcf->is_dsbp_ongoing[sim_id] = KAL_FALSE;
1625 kal_mem_cpy(&(tlvota_file->last_file), &(tlvota_file->temp_file), sizeof(mcf_file_info_t));
1626
1627 ret = mcf_ut_check_file_path(req, KAL_TRUE, KAL_TRUE, KAL_TRUE);
1628 if (ret != KAL_TRUE) {
1629 mcf_ut_format_err_str("Check set TLV-OTA file path in default path positive test FAIL\r\n");
1630 return KAL_FALSE;
1631 }
1632
1633 // Send same file path
1634 MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
1635 if (tlvota_file) {
1636 pFile->file_version = 2;
1637 MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
1638 } else {
1639 mcf_ut_format_err_str("Set TLV-OTA path fail! Fail to take write lock! \r\n");
1640 return KAL_FALSE;
1641 }
1642 strcpy(req->config1, MCF_FS_DEFAULT_TLVOTA_FILE_NAME);
1643
1644 mcf_ret = mcf_set_file_path(req);
1645 if (mcf_ret != MCF_OTA_R_SUCCESS) {
1646 mcf_ut_format_err_str("Set TLV-OTA file path in default path positive test FAIL\r\n");
1647 return KAL_FALSE;
1648 }
1649
1650 /* Assume DSBP success */
1651 pMcf->is_dsbp_ongoing[sim_id] = KAL_FALSE;
1652 kal_mem_cpy(&(tlvota_file->last_file), &(tlvota_file->temp_file), sizeof(mcf_file_info_t));
1653
1654 ret = mcf_ut_check_file_path(req, KAL_TRUE, KAL_FALSE, KAL_TRUE);
1655 if (ret != KAL_TRUE) {
1656 mcf_ut_format_err_str("Check set TLV-OTA file path in default path positive test FAIL\r\n");
1657 return KAL_FALSE;
1658 }
1659 free_local_para((local_para_struct *)req);
1660 }
1661
1662 /*
1663 * Set OTA path in default path negative test - invalid config type
1664 */
1665 req = (l4c_mcf_set_config_req_struct *)construct_local_para(sizeof(l4c_mcf_set_config_req_struct), TD_RESET);
1666 req->op = L4C_MCF_CONFIG_SET_FILE_PATH_IN_MCF_DSBP_ACTIVE_MODE;
1667 req->config_type = L4C_MCF_CONFIG_TYPE_MAX;
1668 req->path_type = L4C_MCF_PATH_TYPE_OTA;
1669 strcpy(req->config1, MCF_FS_DEFAULT_OTA_FILE_NAME);
1670
1671 mcf_ret = mcf_set_file_path(req);
1672 if (mcf_ret != MCF_OTA_R_INVALID_PARAMETER) {
1673 mcf_ut_format_err_str("Check set OTA path in default path negative test (invalid config type) FAIL!!\r\n");
1674 return KAL_FALSE;
1675 }
1676 free_local_para((local_para_struct *)req);
1677
1678 /*
1679 * Set OTA path negative test - invalid path type
1680 */
1681 req = (l4c_mcf_set_config_req_struct *)construct_local_para(sizeof(l4c_mcf_set_config_req_struct), TD_RESET);
1682 req->op = L4C_MCF_CONFIG_SET_FILE_PATH_IN_MCF_DSBP_ACTIVE_MODE;
1683 req->config_type = L4C_MCF_CONFIG_TYPE_DEFAULT_BIN;
1684 req->path_type = L4C_MCF_PATH_TYPE_MAX;
1685 strcpy(req->config1, MCF_FS_DEFAULT_OTA_FILE_NAME);
1686
1687 mcf_ret = mcf_set_file_path(req);
1688 if (mcf_ret != MCF_OTA_R_INVALID_PARAMETER) {
1689 mcf_ut_format_err_str("Check set OTA path negative test (invalid path type) FAIL!!\r\n");
1690 return KAL_FALSE;
1691 }
1692 free_local_para((local_para_struct *)req);
1693
1694 /*
1695 * Set TLV-OTA path negative test - invalid path type
1696 */
1697 for(i = 0; i < MAX_SIM_NUM; i++) {
1698 req = (l4c_mcf_set_config_req_struct *)construct_local_para(sizeof(l4c_mcf_set_config_req_struct), TD_RESET);
1699 req->op = L4C_MCF_CONFIG_SET_FILE_PATH_IN_MCF_DSBP_ACTIVE_MODE;
1700 req->config_type = L4C_MCF_CONFIG_TYPE_CARRIER_BIN;
1701 req->path_type = L4C_MCF_PATH_TYPE_MAX;
1702 strcpy(req->config1, MCF_FS_DEFAULT_TLVOTA_FILE_NAME);
1703 req->ps_id = i;
1704
1705 mcf_ret = mcf_set_file_path(req);
1706 if (mcf_ret != MCF_OTA_R_INVALID_PARAMETER) {
1707 mcf_ut_format_err_str("Set TLV-OTA file path in runtime path with NULL file name (deactivate OTA by OP) positive test FAIL!!\r\n");
1708 return KAL_FALSE;
1709 }
1710 free_local_para((local_para_struct *)req);
1711 }
1712
1713
1714 MCF_UT_PASS();
1715 return KAL_TRUE;
1716}
1717
1718kal_bool mcf_ut_mcf_get_applied_file_path(void *p_param, kal_char *p_ret_err_str, kal_uint32 *p_ret_err_str_sz)
1719{
1720 mcf_t *pMcf = mcf_get_instance();
1721 l4c_mcf_get_config_req_struct *req;
1722 l4c_mcf_get_config_cnf_struct *resp;
1723 sim_interface_enum sim_id;
1724 kal_uint8 i;
1725 mcf_ota_result_e mcf_ret;
1726
1727 mcf_ut_init();
1728
1729 pMcf->ota_file.path_type = L4C_MCF_PATH_TYPE_OTA;
1730 strcpy(pMcf->ota_file.relative_path_name, MCF_FS_DEFAULT_OTA_FILE_NAME);
1731 for(i = 0; i < MAX_SIM_NUM; i++) {
1732 pMcf->tlvota_file[i].path_type = L4C_MCF_PATH_TYPE_OTA;
1733 strcpy(pMcf->tlvota_file[i].relative_path_name, MCF_FS_DEFAULT_TLVOTA_FILE_NAME);
1734 }
1735
1736 /*
1737 * Get applied OTA file path positive test
1738 */
1739 req = (l4c_mcf_get_config_req_struct *)construct_local_para(sizeof(l4c_mcf_get_config_req_struct), TD_RESET);
1740 resp = (l4c_mcf_get_config_cnf_struct *)construct_local_para(sizeof(l4c_mcf_get_config_cnf_struct), TD_RESET);
1741 req->op = L4C_MCF_CONFIG_GET_APPLIED_FILE_PATH;
1742 req->config_type = L4C_MCF_CONFIG_TYPE_DEFAULT_BIN;
1743
1744 mcf_ret = mcf_get_applied_file_path(req, resp);
1745 if ( (mcf_ret != MCF_OTA_R_SUCCESS) || (resp->config_type != req->config_type)
1746 || (resp->path_type != pMcf->ota_file.path_type)
1747 || (strcmp(resp->config1, pMcf->ota_file.relative_path_name) != 0) ) {
1748 mcf_ut_format_err_str("Get applied OTA file path positive test FAIL!!\r\n");
1749 return KAL_FALSE;
1750 }
1751 free_local_para((local_para_struct *)req);
1752 free_local_para((local_para_struct *)resp);
1753
1754 /*
1755 * Get applied TLV-OTA file path positive test
1756 */
1757 for(i = 0; i < MAX_SIM_NUM; i++) {
1758 req = (l4c_mcf_get_config_req_struct *)construct_local_para(sizeof(l4c_mcf_get_config_req_struct), TD_RESET);
1759 resp = (l4c_mcf_get_config_cnf_struct *)construct_local_para(sizeof(l4c_mcf_get_config_cnf_struct), TD_RESET);
1760 req->op = L4C_MCF_CONFIG_GET_APPLIED_FILE_PATH;
1761 req->config_type = L4C_MCF_CONFIG_TYPE_CARRIER_BIN;
1762 req->ps_id = i;
1763 sim_id = l4c_gemini_get_actual_sim_id(req->ps_id);
1764
1765 mcf_ret = mcf_get_applied_file_path(req, resp);
1766 if ( (mcf_ret != MCF_OTA_R_SUCCESS) || (resp->config_type != req->config_type)
1767 || (resp->path_type != pMcf->tlvota_file[sim_id].path_type)
1768 || (strcmp(resp->config1, pMcf->tlvota_file[sim_id].relative_path_name) != 0) ) {
1769 mcf_ut_format_err_str("Get applied TLV-OTA file path positive test FAIL!!\r\n");
1770 return KAL_FALSE;
1771 }
1772 free_local_para((local_para_struct *)req);
1773 free_local_para((local_para_struct *)resp);
1774 }
1775
1776 /*
1777 * Get applied file path negative test - invalid config type
1778 */
1779 req = (l4c_mcf_get_config_req_struct *)construct_local_para(sizeof(l4c_mcf_get_config_req_struct), TD_RESET);
1780 resp = (l4c_mcf_get_config_cnf_struct *)construct_local_para(sizeof(l4c_mcf_get_config_cnf_struct), TD_RESET);
1781 req->op = L4C_MCF_CONFIG_GET_APPLIED_FILE_PATH;
1782 req->config_type = L4C_MCF_CONFIG_TYPE_MAX;
1783
1784 mcf_ret = mcf_get_applied_file_path(req, resp);
1785 if (mcf_ret != MCF_OTA_R_INVALID_PARAMETER) {
1786 mcf_ut_format_err_str("Get applied OTA file path negative test (invalid config type) FAIL!!\r\n");
1787 return KAL_FALSE;
1788 }
1789 free_local_para((local_para_struct *)req);
1790 free_local_para((local_para_struct *)resp);
1791
1792
1793 MCF_UT_PASS();
1794 return KAL_TRUE;
1795}
1796
1797#if !defined(__MTK_TARGET__)
1798kal_bool mcf_ut_do_ota_full(void *p_param, kal_char *p_ret_err_str, kal_uint32 *p_ret_err_str_sz)
1799{
1800 mcf_t *pMcf = mcf_get_instance();
1801 mcf_ota_file_t *ota_file = &(pMcf->ota_file);
1802 mcf_tool_file_info_t *pFile = (mcf_tool_file_info_t *)(ota_file->buff);
1803 nvram_ef_mcf_ota_file_info_struct nv_ota_file;
1804 nvram_ef_mcf_sw_info_struct nv_sw_info;
1805 kal_uint8 *lid_buffer;
1806 nvram_ef_mcf_test_struct empty_buffer = {0};
1807 mcf_ota_result_e mcf_ret;
1808 kal_bool ret;
1809 kal_uint32 i;
1810
1811 mcf_ut_init();
1812
1813 /* Write MCF OTA file version to NVRAM */
1814 kal_mem_set(&nv_ota_file, 0, sizeof(nvram_ef_mcf_ota_file_info_struct));
1815 strncpy(nv_ota_file.path, MCF_FS_DEFAULT_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN);
1816 strncpy(nv_ota_file.name, MCF_FS_DEFAULT_OTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN);
1817 if ( !nvram_external_write_data(NVRAM_EF_MCF_OTA_FILE_LID, 1, (kal_uint8 *)&nv_ota_file, sizeof(nvram_ef_mcf_ota_file_info_struct)) ) {
1818 mcf_ut_format_err_str("Fail to write MCF OTA file info to NVRAM!!\r\n");
1819 return KAL_FALSE;
1820 }
1821 kal_mem_set(&nv_sw_info, 0, sizeof(nvram_ef_mcf_sw_info_struct));
1822 strncpy(nv_sw_info.last_update_file.sw_version, MCF_UT_SW_VERNO, MCF_FILE_MAX_SW_VERSION_LEN);
1823 strncpy(nv_sw_info.last_update_file.gen_time, MCF_UT_GEN_TIME, MCF_FILE_MAX_GEN_TIME_LEN);
1824 strcpy(nv_sw_info.last_update_file.path, "");
1825 strcpy(nv_sw_info.last_update_file.name, "");
1826 if ( !nvram_external_write_data(NVRAM_EF_MCF_SW_INFO_LID, 1, (kal_uint8 *)&nv_sw_info, sizeof(nvram_ef_mcf_sw_info_struct)) ) {
1827 mcf_ut_format_err_str("Fail to write MCF sw info to NVRAM!!\r\n");
1828 return KAL_FALSE;
1829 }
1830
1831 /*
1832 * Do full OTA positive test - Both SW verno of file and MD mismatch
1833 */
1834 MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
1835 if (ota_file) {
1836 ret = mcf_ut_open_test_data("MCF_OTA_ut_normal.mcfota", (kal_char *)(ota_file->buff), MCF_MAX_OTA_FILE_SIZE);
1837 if (ret == KAL_FALSE) {
1838 mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_OTA_ut_normal.mcfota");
1839 return KAL_FALSE;
1840 }
1841
1842 MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
1843 } else {
1844 mcf_ut_format_err_str("Do full OTA FAIL!! Fail to take write lock! \r\n");
1845 return KAL_FALSE;
1846 }
1847
1848 mcf_ret = mcf_do_ota_full();
1849 if (mcf_ret != MCF_OTA_R_SUCCESS) {
1850 mcf_ut_format_err_str("Do full OTA FAIL!! ret(%d) \r\n", mcf_ret);
1851 return KAL_FALSE;
1852 }
1853
1854 ret = mcf_check_test_lid_value(NULL);
1855 if (ret == KAL_FALSE) {
1856 mcf_ut_format_err_str("Do full OTA positive test (Both SW verno of file and MD mismatch) FAIL!!\r\n");
1857 return KAL_FALSE;
1858 }
1859
1860 /*
1861 * Do full OTA positive test - SW verno of file mismatch
1862 */
1863 lid_buffer = (kal_uint8 *)get_ctrl_buffer(sizeof(nvram_ef_mcf_test_struct));
1864 kal_mem_set(lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
1865 for(i = 0; i < NVRAM_EF_MCF_TEST_OTA_TOTAL; i++) {
1866 if ( !nvram_external_write_data(NVRAM_EF_MCF_TEST_OTA_LID, 1, lid_buffer, sizeof(nvram_ef_mcf_test_struct)) ) {
1867 printf("Fail to reset NVRAM_EF_MCF_TEST_OTA_LID!!\r\n");
1868 }
1869 }
1870 free_ctrl_buffer_set_null(lid_buffer);
1871
1872 /* Reset updated file information in NVRAM */
1873 lid_buffer = (kal_uint8 *)get_ctrl_buffer(sizeof(nvram_ef_mcf_ota_file_info_struct));
1874 kal_mem_set(lid_buffer, 0, sizeof(nvram_ef_mcf_ota_file_info_struct));
1875 for(i = 0; i < NVRAM_EF_MCF_OTA_FILE_TOTAL; i++) {
1876 if ( !nvram_external_write_data(NVRAM_EF_MCF_OTA_FILE_LID, 1, lid_buffer, sizeof(nvram_ef_mcf_ota_file_info_struct)) ) {
1877 printf("Fail to reset NVRAM_EF_MCF_OTA_FILE_LID!!\r\n");
1878 }
1879 }
1880 free_ctrl_buffer_set_null(lid_buffer);
1881
1882 mcf_ret = mcf_do_ota_full();
1883 if (mcf_ret != MCF_OTA_R_SUCCESS) {
1884 mcf_ut_format_err_str("Do full OTA FAIL!! ret(%d) \r\n", mcf_ret);
1885 return KAL_FALSE;
1886 }
1887
1888 ret = mcf_check_test_lid_value(NULL);
1889 if (ret == KAL_FALSE) {
1890 mcf_ut_format_err_str("Do full OTA positive test (SW verno of file mismatch) FAIL!!\r\n");
1891 return KAL_FALSE;
1892 }
1893
1894 /*
1895 * Do full OTA positive test - SW verno of MD mismatch
1896 */
1897 lid_buffer = (kal_uint8 *)get_ctrl_buffer(sizeof(nvram_ef_mcf_test_struct));
1898 kal_mem_set(lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
1899 for(i = 0; i < NVRAM_EF_MCF_TEST_OTA_TOTAL; i++) {
1900 if ( !nvram_external_write_data(NVRAM_EF_MCF_TEST_OTA_LID, 1, lid_buffer, sizeof(nvram_ef_mcf_test_struct)) ) {
1901 printf("Fail to reset NVRAM_EF_MCF_TEST_OTA_LID!!\r\n");
1902 }
1903 }
1904 free_ctrl_buffer_set_null(lid_buffer);
1905
1906 /* Reset updated MD SW version in NVRAM */
1907 lid_buffer = (kal_uint8 *)get_ctrl_buffer(sizeof(nvram_ef_mcf_sw_info_struct));
1908 kal_mem_set(lid_buffer, 0, sizeof(nvram_ef_mcf_sw_info_struct));
1909 for(i = 0; i < NVRAM_EF_MCF_OTA_FILE_TOTAL; i++) {
1910 if ( !nvram_external_write_data(NVRAM_EF_MCF_SW_INFO_LID, 1, lid_buffer, sizeof(nvram_ef_mcf_sw_info_struct)) ) {
1911 printf("Fail to reset NVRAM_EF_MCF_SW_INFO_LID!!\r\n");
1912 }
1913 }
1914 free_ctrl_buffer_set_null(lid_buffer);
1915
1916 mcf_ret = mcf_do_ota_full();
1917 if (mcf_ret != MCF_OTA_R_SUCCESS) {
1918 mcf_ut_format_err_str("Do full OTA FAIL!! ret(%d) \r\n", mcf_ret);
1919 return KAL_FALSE;
1920 }
1921
1922 ret = mcf_check_test_lid_value(NULL);
1923 if (ret == KAL_FALSE) {
1924 mcf_ut_format_err_str("Do full OTA positive test (SW verno of MD mismatch) FAIL!!\r\n");
1925 return KAL_FALSE;
1926 }
1927
1928 /*
1929 * Do full OTA positive test - SW verno match
1930 */
1931 lid_buffer = (kal_uint8 *)get_ctrl_buffer(sizeof(nvram_ef_mcf_test_struct));
1932 kal_mem_set(lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
1933 for(i = 0; i < NVRAM_EF_MCF_TEST_OTA_TOTAL; i++) {
1934 if ( !nvram_external_write_data(NVRAM_EF_MCF_TEST_OTA_LID, 1, lid_buffer, sizeof(nvram_ef_mcf_test_struct)) ) {
1935 printf("Fail to reset NVRAM_EF_MCF_TEST_OTA_LID!!\r\n");
1936 }
1937 }
1938 free_ctrl_buffer_set_null(lid_buffer);
1939
1940 mcf_ret = mcf_do_ota_full();
1941 if ( (mcf_ret != MCF_OTA_R_SUCCESS) || ((com_Mcf.boot_trace_flag & MCF_BOOT_TRACE_F_NO_NEED) == 0) ) {
1942 mcf_ut_format_err_str("Do full OTA FAIL!! ret(%d) \r\n", mcf_ret);
1943 return KAL_FALSE;
1944 }
1945
1946 lid_buffer = (kal_uint8 *)get_ctrl_buffer(sizeof(nvram_ef_mcf_test_struct));
1947 if ( !nvram_external_read_data(NVRAM_EF_MCF_TEST_OTA_LID, 1, lid_buffer, sizeof(nvram_ef_mcf_test_struct)) ) {
1948 printf("Fail to read NVRAM_EF_MCF_TEST_OTA_LID!!\r\n");
1949 ret = KAL_FALSE;
1950 }
1951
1952 if (kal_mem_cmp(lid_buffer, &empty_buffer, sizeof(nvram_ef_mcf_test_struct)) != 0) {
1953 mcf_ut_format_err_str("Do full OTA positive test (SW verno match) FAIL!!\r\n");
1954 return KAL_FALSE;
1955 }
1956 free_ctrl_buffer_set_null(lid_buffer);
1957
1958 /*
1959 * Do full OTA negative test - invlaid file type
1960 */
1961 lid_buffer = (kal_uint8 *)get_ctrl_buffer(sizeof(nvram_ef_mcf_test_struct));
1962 kal_mem_set(lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
1963 for(i = 0; i < NVRAM_EF_MCF_TEST_OTA_TOTAL; i++) {
1964 if ( !nvram_external_write_data(NVRAM_EF_MCF_TEST_OTA_LID, 1, lid_buffer, sizeof(nvram_ef_mcf_test_struct)) ) {
1965 printf("Fail to reset NVRAM_EF_MCF_TEST_OTA_LID!!\r\n");
1966 }
1967 }
1968 free_ctrl_buffer_set_null(lid_buffer);
1969
1970 MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
1971 if (ota_file) {
1972 strncpy(pFile->file_type, "MCF", 8);
1973 MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
1974 } else {
1975 mcf_ut_format_err_str("Do full OTA FAIL!! Fail to take write lock! \r\n");
1976 return KAL_FALSE;
1977 }
1978
1979 mcf_ret = mcf_do_ota_full();
1980 if ( (mcf_ret != MCF_OTA_R_INVALID_FILE) || ((com_Mcf.boot_trace_flag & MCF_BOOT_TRACE_F_INVALID_FILE) == 0) ) {
1981 mcf_ut_format_err_str("full OTA: invalid file type case FAIL!! ret(%d), boot_flag(%x) \r\n", mcf_ret, com_Mcf.boot_trace_flag);
1982 return KAL_FALSE;
1983 }
1984
1985 lid_buffer = (kal_uint8 *)get_ctrl_buffer(sizeof(nvram_ef_mcf_test_struct));
1986 if ( !nvram_external_read_data(NVRAM_EF_MCF_TEST_OTA_LID, 1, lid_buffer, sizeof(nvram_ef_mcf_test_struct)) ) {
1987 printf("Fail to read NVRAM_EF_MCF_TEST_OTA_LID!!\r\n");
1988 ret = KAL_FALSE;
1989 }
1990
1991 if (kal_mem_cmp(lid_buffer, &empty_buffer, sizeof(nvram_ef_mcf_test_struct)) != 0) {
1992 mcf_ut_format_err_str("Do full OTA positive test (SW verno match) FAIL!!\r\n");
1993 return KAL_FALSE;
1994 }
1995 free_ctrl_buffer_set_null(lid_buffer);
1996
1997 /*
1998 * Do full OTA positive test - item with mismatched verno in file
1999 */
2000 lid_buffer = (kal_uint8 *)get_ctrl_buffer(sizeof(nvram_ef_mcf_test_struct));
2001 kal_mem_set(lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
2002 for(i = 0; i < NVRAM_EF_MCF_TEST_OTA_TOTAL; i++) {
2003 if ( !nvram_external_write_data(NVRAM_EF_MCF_TEST_OTA_LID, 1, lid_buffer, sizeof(nvram_ef_mcf_test_struct)) ) {
2004 printf("Fail to reset NVRAM_EF_MCF_TEST_OTA_LID!!\r\n");
2005 }
2006 }
2007 free_ctrl_buffer_set_null(lid_buffer);
2008
2009 lid_buffer = (kal_uint8 *)get_ctrl_buffer(sizeof(nvram_ef_mcf_sw_info_struct));
2010 kal_mem_set(lid_buffer, 0, sizeof(nvram_ef_mcf_sw_info_struct));
2011 if ( !nvram_external_write_data(NVRAM_EF_MCF_SW_INFO_LID, 1, lid_buffer, sizeof(nvram_ef_mcf_sw_info_struct)) ) {
2012 printf("Fail to reset NVRAM_EF_MCF_SW_INFO_LID!!\r\n");
2013 }
2014 free_ctrl_buffer_set_null(lid_buffer);
2015
2016 lid_buffer = (kal_uint8 *)get_ctrl_buffer(sizeof(nvram_ef_mcf_ota_file_info_struct));
2017 kal_mem_set(lid_buffer, 0, sizeof(nvram_ef_mcf_ota_file_info_struct));
2018 for(i = 0; i < NVRAM_EF_MCF_OTA_FILE_TOTAL; i++) {
2019 if ( !nvram_external_write_data(NVRAM_EF_MCF_OTA_FILE_LID, 1, lid_buffer, sizeof(nvram_ef_mcf_ota_file_info_struct)) ) {
2020 printf("Fail to reset NVRAM_EF_MCF_OTA_FILE_LID!!\r\n");
2021 }
2022 }
2023 free_ctrl_buffer_set_null(lid_buffer);
2024
2025 MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
2026 if (ota_file) {
2027 ret = mcf_ut_open_test_data("MCF_OTA_ut_mismatched_verno.mcfota", (kal_char *)(ota_file->buff), MCF_MAX_OTA_FILE_SIZE);
2028 if (ret == KAL_FALSE) {
2029 mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_OTA_ut_mismatched_verno.mcfota");
2030 return KAL_FALSE;
2031 }
2032
2033 MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
2034 } else {
2035 mcf_ut_format_err_str("Do full OTA FAIL!! Fail to take write lock! \r\n");
2036 return KAL_FALSE;
2037 }
2038
2039 mcf_ret = mcf_do_ota_full();
2040 if (mcf_ret != MCF_OTA_R_SUCCESS) {
2041 mcf_ut_format_err_str("Do full OTA FAIL!! ret(%d) \r\n", mcf_ret);
2042 return KAL_FALSE;
2043 }
2044
2045 ret = mcf_check_test_lid_value(NULL);
2046 if (ret == KAL_FALSE) {
2047 mcf_ut_format_err_str("Do full OTA positive test (item with mismatched verno in file) FAIL!!\r\n");
2048 return KAL_FALSE;
2049 }
2050
2051 /*
2052 * Do full OTA positive test - File with checksum
2053 */
2054 lid_buffer = (kal_uint8 *)get_ctrl_buffer(sizeof(nvram_ef_mcf_sw_info_struct));
2055 kal_mem_set(lid_buffer, 0, sizeof(nvram_ef_mcf_sw_info_struct));
2056 if ( !nvram_external_write_data(NVRAM_EF_MCF_SW_INFO_LID, 1, lid_buffer, sizeof(nvram_ef_mcf_sw_info_struct)) ) {
2057 printf("Fail to reset NVRAM_EF_MCF_SW_INFO_LID!!\r\n");
2058 }
2059 free_ctrl_buffer_set_null(lid_buffer);
2060
2061 lid_buffer = (kal_uint8 *)get_ctrl_buffer(sizeof(nvram_ef_mcf_ota_file_info_struct));
2062 kal_mem_set(lid_buffer, 0, sizeof(nvram_ef_mcf_ota_file_info_struct));
2063 for(i = 0; i < NVRAM_EF_MCF_OTA_FILE_TOTAL; i++) {
2064 if ( !nvram_external_write_data(NVRAM_EF_MCF_OTA_FILE_LID, 1, lid_buffer, sizeof(nvram_ef_mcf_ota_file_info_struct)) ) {
2065 printf("Fail to reset NVRAM_EF_MCF_OTA_FILE_LID!!\r\n");
2066 }
2067 }
2068 free_ctrl_buffer_set_null(lid_buffer);
2069
2070 MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
2071 if (ota_file) {
2072 ret = mcf_ut_open_test_data("MCF_OTA_ut_checksum_normal.mcfota", (kal_char *)(ota_file->buff), MCF_MAX_OTA_FILE_SIZE);
2073 if (ret == KAL_FALSE) {
2074 mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_OTA_ut_checksum_normal.mcfota");
2075 return KAL_FALSE;
2076 }
2077
2078 MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
2079 } else {
2080 mcf_ut_format_err_str("Do full OTA FAIL!! Fail to take write lock! \r\n");
2081 return KAL_FALSE;
2082 }
2083
2084 mcf_ret = mcf_do_ota_full();
2085 if (mcf_ret != MCF_OTA_R_SUCCESS) {
2086 mcf_ut_format_err_str("Do full OTA FAIL!! ret(%d) \r\n", mcf_ret);
2087 return KAL_FALSE;
2088 }
2089
2090 ret = mcf_check_test_lid_value(NULL);
2091 if (ret == KAL_FALSE) {
2092 mcf_ut_format_err_str("Do full OTA positive test (File with checksum) FAIL!!\r\n");
2093 return KAL_FALSE;
2094 }
2095
2096 /*
2097 * Do full OTA positive test - File with checksum and encryption
2098 */
2099 lid_buffer = (kal_uint8 *)get_ctrl_buffer(sizeof(nvram_ef_mcf_sw_info_struct));
2100 kal_mem_set(lid_buffer, 0, sizeof(nvram_ef_mcf_sw_info_struct));
2101 if ( !nvram_external_write_data(NVRAM_EF_MCF_SW_INFO_LID, 1, lid_buffer, sizeof(nvram_ef_mcf_sw_info_struct)) ) {
2102 printf("Fail to reset NVRAM_EF_MCF_SW_INFO_LID!!\r\n");
2103 }
2104 free_ctrl_buffer_set_null(lid_buffer);
2105
2106 lid_buffer = (kal_uint8 *)get_ctrl_buffer(sizeof(nvram_ef_mcf_ota_file_info_struct));
2107 kal_mem_set(lid_buffer, 0, sizeof(nvram_ef_mcf_ota_file_info_struct));
2108 for(i = 0; i < NVRAM_EF_MCF_OTA_FILE_TOTAL; i++) {
2109 if ( !nvram_external_write_data(NVRAM_EF_MCF_OTA_FILE_LID, 1, lid_buffer, sizeof(nvram_ef_mcf_ota_file_info_struct)) ) {
2110 printf("Fail to reset NVRAM_EF_MCF_OTA_FILE_LID!!\r\n");
2111 }
2112 }
2113 free_ctrl_buffer_set_null(lid_buffer);
2114
2115 MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
2116 if (ota_file) {
2117 ret = mcf_ut_open_test_data("MCF_OTA_ut_checksum_and_encryption_normal.mcfota", (kal_char *)(ota_file->buff), MCF_MAX_OTA_FILE_SIZE);
2118 if (ret == KAL_FALSE) {
2119 mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_OTA_ut_checksum_and_encryption_normal.mcfota");
2120 return KAL_FALSE;
2121 }
2122
2123 MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
2124 } else {
2125 mcf_ut_format_err_str("Do full OTA FAIL!! Fail to take write lock! \r\n");
2126 return KAL_FALSE;
2127 }
2128
2129 mcf_ret = mcf_do_ota_full();
2130 if (mcf_ret != MCF_OTA_R_SUCCESS) {
2131 mcf_ut_format_err_str("Do full OTA FAIL!! ret(%d) \r\n", mcf_ret);
2132 return KAL_FALSE;
2133 }
2134
2135 ret = mcf_check_test_lid_value(NULL);
2136 if (ret == KAL_FALSE) {
2137 mcf_ut_format_err_str("Do full OTA positive test (File with checksum) FAIL!!\r\n");
2138 return KAL_FALSE;
2139 }
2140
2141
2142 MCF_UT_PASS();
2143 return KAL_TRUE;
2144}
2145#endif
2146
2147#if !defined(__MTK_TARGET__)
2148kal_bool mcf_ut_do_ota_by_lid(void *p_param, kal_char *p_ret_err_str, kal_uint32 *p_ret_err_str_sz)
2149{
2150 mcf_t *pMcf = mcf_get_instance();
2151 mcf_tool_file_info_t *pFile;
2152 mcf_tool_ota_file_item_t *pItem;
2153 mcf_ota_file_t *ota_file = &(pMcf->ota_file);
2154 kal_uint8 *lid_buffer;
2155 kal_uint32 i;
2156 nvram_ef_mcf_ota_file_info_struct nv_ota_file;
2157 nvram_ef_mcf_sw_info_struct nv_sw_info;
2158 nvram_ltable_entry_struct lid_info;
2159 nvram_errno_enum nvram_api_ret;
2160 mcf_ota_result_e mcf_ret;
2161 kal_bool ret;
2162
2163 mcf_ut_init();
2164
2165 /* Write MCF OTA file version to NVRAM */
2166 kal_mem_set(&nv_ota_file, 0, sizeof(nvram_ef_mcf_ota_file_info_struct));
2167 strncpy(nv_ota_file.path, MCF_FS_DEFAULT_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN);
2168 strncpy(nv_ota_file.name, MCF_FS_DEFAULT_OTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN);
2169 if ( !nvram_external_write_data(NVRAM_EF_MCF_OTA_FILE_LID, 1, (kal_uint8 *)&nv_ota_file, sizeof(nvram_ef_mcf_ota_file_info_struct)) ) {
2170 mcf_ut_format_err_str("Fail to write MCF OTA file info to NVRAM!!\r\n");
2171 return KAL_FALSE;
2172 }
2173 kal_mem_set(&nv_sw_info, 0, sizeof(nvram_ef_mcf_sw_info_struct));
2174 strncpy(nv_sw_info.last_update_file.sw_version, MCF_UT_SW_VERNO, MCF_FILE_MAX_SW_VERSION_LEN);
2175 strncpy(nv_sw_info.last_update_file.gen_time, MCF_UT_GEN_TIME, MCF_FILE_MAX_GEN_TIME_LEN);
2176 strcpy(nv_sw_info.last_update_file.path, "");
2177 strcpy(nv_sw_info.last_update_file.name, "");
2178 if ( !nvram_external_write_data(NVRAM_EF_MCF_SW_INFO_LID, 1, (kal_uint8 *)&nv_sw_info, sizeof(nvram_ef_mcf_sw_info_struct)) ) {
2179 mcf_ut_format_err_str("Fail to write MCF sw info to NVRAM!!\r\n");
2180 return KAL_FALSE;
2181 }
2182
2183 pFile = (mcf_tool_file_info_t *)(ota_file->buff);
2184 pItem = (mcf_tool_ota_file_item_t *)(ota_file->buff + sizeof(mcf_tool_file_info_t));
2185
2186 /*
2187 * Do OTA by LID positive test
2188 */
2189 MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
2190 if (ota_file) {
2191 ret = mcf_ut_open_test_data("MCF_OTA_ut_normal.mcfota", (kal_char *)(ota_file->buff), MCF_MAX_OTA_FILE_SIZE);
2192 if (ret == KAL_FALSE) {
2193 mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_OTA_ut_normal.mcfota");
2194 return KAL_FALSE;
2195 }
2196
2197 MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
2198 } else {
2199 mcf_ut_format_err_str("Do OTA by LID FAIL!! Fail to take write lock! \r\n");
2200 return KAL_FALSE;
2201 }
2202
2203 nvram_api_ret = nvram_external_get_lid_info(NVRAM_EF_MCF_TEST_OTA_LID, &lid_info);
2204 if (nvram_api_ret != NVRAM_ERRNO_SUCCESS) {
2205 mcf_ut_format_err_str("Fail to get LID information!! lid(%d), nvram_ret(%d)\r\n", NVRAM_EF_MCF_TEST_OTA_LID, nvram_api_ret);
2206 return KAL_FALSE;
2207 }
2208
2209 mcf_ret = mcf_do_ota_by_lid(NVRAM_EF_MCF_TEST_OTA_LID, 1, NVRAM_EF_MCF_TEST_OTA_TOTAL, &lid_info);
2210 if (mcf_ret != MCF_OTA_R_SUCCESS) {
2211 mcf_ut_format_err_str("Do OTA by LID FAIL!! ret(%d) \r\n", mcf_ret);
2212 return KAL_FALSE;
2213 }
2214
2215 ret = mcf_check_test_lid_value(NULL);
2216 if (ret == KAL_FALSE) {
2217 mcf_ut_format_err_str("Do OTA by LID positive test FAIL!!\r\n");
2218 return KAL_FALSE;
2219 }
2220
2221 /*
2222 * Do OTA by LID negative test - invalid OTA attribute
2223 */
2224 lid_info.attr &= ~NVRAM_ATTR_MCF_OTA;
2225 mcf_ret = mcf_do_ota_by_lid(NVRAM_EF_MCF_TEST_OTA_LID, 1, NVRAM_EF_MCF_TEST_OTA_TOTAL, &lid_info);
2226 if (mcf_ret != MCF_OTA_R_INVALID_ATTR) {
2227 mcf_ut_format_err_str("OTA by LID: invalid OTA attribute case FAIL!! ret(%d) \r\n", mcf_ret);
2228 return KAL_FALSE;
2229 }
2230
2231 /*
2232 * Do OTA by LID negative test - invlaid file type
2233 */
2234 MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
2235 if (ota_file) {
2236 strncpy(pFile->file_type, "MCF", 8);
2237 MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
2238 } else {
2239 mcf_ut_format_err_str("Do OTA by LID FAIL!! Fail to take write lock! \r\n");
2240 return KAL_FALSE;
2241 }
2242
2243 mcf_ret = mcf_do_ota_by_lid(NVRAM_EF_MCF_TEST_OTA_LID, 1, NVRAM_EF_MCF_TEST_OTA_TOTAL, &lid_info);
2244 if (mcf_ret != MCF_OTA_R_INVALID_FILE) {
2245 mcf_ut_format_err_str("OTA by LID: invlaid file type case FAIL!! ret(%d) \r\n", mcf_ret);
2246 return KAL_FALSE;
2247 }
2248
2249 /*
2250 * Do OTA by LID positive test - item with mismatched verno in file
2251 */
2252 lid_buffer = (kal_uint8 *)get_ctrl_buffer(sizeof(nvram_ef_mcf_ota_file_info_struct));
2253 kal_mem_set(lid_buffer, 0, sizeof(nvram_ef_mcf_ota_file_info_struct));
2254 for(i = 0; i < NVRAM_EF_MCF_OTA_FILE_TOTAL; i++) {
2255 if ( !nvram_external_write_data(NVRAM_EF_MCF_OTA_FILE_LID, 1, lid_buffer, sizeof(nvram_ef_mcf_ota_file_info_struct)) ) {
2256 printf("Fail to reset NVRAM_EF_MCF_OTA_FILE_LID!!\r\n");
2257 }
2258 }
2259 free_ctrl_buffer_set_null(lid_buffer);
2260
2261 lid_buffer = (kal_uint8 *)get_ctrl_buffer(sizeof(nvram_ef_mcf_test_struct));
2262 kal_mem_set(lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
2263 for(i = 0; i < NVRAM_EF_MCF_TEST_OTA_TOTAL; i++) {
2264 if ( !nvram_external_write_data(NVRAM_EF_MCF_TEST_OTA_LID, 1, lid_buffer, sizeof(nvram_ef_mcf_test_struct)) ) {
2265 printf("Fail to reset NVRAM_EF_MCF_TEST_OTA_LID!!\r\n");
2266 }
2267 }
2268 free_ctrl_buffer_set_null(lid_buffer);
2269
2270 nvram_api_ret = nvram_external_get_lid_info(NVRAM_EF_MCF_TEST_OTA_LID, &lid_info);
2271 if (nvram_api_ret != NVRAM_ERRNO_SUCCESS) {
2272 mcf_ut_format_err_str("Fail to get LID information!! lid(%d), nvram_ret(%d)", NVRAM_EF_MCF_TEST_OTA_LID, nvram_api_ret);
2273 return KAL_FALSE;
2274 }
2275
2276 MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
2277 if (ota_file) {
2278 ret = mcf_ut_open_test_data("MCF_OTA_ut_mismatched_verno.mcfota", (kal_char *)(ota_file->buff), MCF_MAX_OTA_FILE_SIZE);
2279 if (ret == KAL_FALSE) {
2280 mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_OTA_ut_mismatched_verno.mcfota");
2281 return KAL_FALSE;
2282 }
2283
2284 MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
2285 } else {
2286 mcf_ut_format_err_str("Do OTA by LID FAIL!! Fail to take write lock! \r\n");
2287 return KAL_FALSE;
2288 }
2289
2290 mcf_ret = mcf_do_ota_by_lid(NVRAM_EF_MCF_TEST_OTA_LID, 1, NVRAM_EF_MCF_TEST_OTA_TOTAL, &lid_info);
2291 if (mcf_ret != MCF_OTA_R_SUCCESS) {
2292 mcf_ut_format_err_str("Do OTA by LID FAIL!! ret(%d) \r\n", mcf_ret);
2293 return KAL_FALSE;
2294 }
2295
2296 ret = mcf_check_test_lid_value(NULL);
2297 if (ret == KAL_FALSE) {
2298 mcf_ut_format_err_str("Do OTA by LID positive test (item with mismatched verno in file) FAIL!!\r\n");
2299 return KAL_FALSE;
2300 }
2301
2302
2303 MCF_UT_PASS();
2304 return KAL_TRUE;
2305}
2306#endif
2307
2308#if !defined(__MTK_TARGET__)
2309kal_bool mcf_ut_read_ota_buffer(void *p_param, kal_char *p_ret_err_str, kal_uint32 *p_ret_err_str_sz)
2310{
2311 mcf_t *pMcf = mcf_get_instance();
2312 mcf_tool_file_info_t *pFile;
2313 mcf_tool_ota_file_item_t *pItem;
2314 mcf_ota_file_t *ota_file = &(pMcf->ota_file);
2315 nvram_ef_mcf_ota_file_info_struct nv_ota_file;
2316 nvram_ef_mcf_sw_info_struct nv_sw_info;
2317 nvram_ef_mcf_test_struct test_lid_buffer;
2318 mcf_ota_result_e mcf_ret;
2319 kal_bool ret;
2320
2321 mcf_ut_init();
2322
2323 /* Write MCF OTA file version to NVRAM */
2324 kal_mem_set(&nv_ota_file, 0, sizeof(nvram_ef_mcf_ota_file_info_struct));
2325 strncpy(nv_ota_file.path, MCF_FS_DEFAULT_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN);
2326 strncpy(nv_ota_file.name, MCF_FS_DEFAULT_OTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN);
2327 if ( !nvram_external_write_data(NVRAM_EF_MCF_OTA_FILE_LID, 1, (kal_uint8 *)&nv_ota_file, sizeof(nvram_ef_mcf_ota_file_info_struct)) ) {
2328 mcf_ut_format_err_str("Fail to write MCF OTA file info to NVRAM!!\r\n");
2329 return KAL_FALSE;
2330 }
2331 kal_mem_set(&nv_sw_info, 0, sizeof(nvram_ef_mcf_sw_info_struct));
2332 strncpy(nv_sw_info.last_update_file.sw_version, MCF_UT_SW_VERNO, MCF_FILE_MAX_SW_VERSION_LEN);
2333 strncpy(nv_sw_info.last_update_file.gen_time, MCF_UT_GEN_TIME, MCF_FILE_MAX_GEN_TIME_LEN);
2334 strcpy(nv_sw_info.last_update_file.path, "");
2335 strcpy(nv_sw_info.last_update_file.name, "");
2336 if ( !nvram_external_write_data(NVRAM_EF_MCF_SW_INFO_LID, 1, (kal_uint8 *)&nv_sw_info, sizeof(nvram_ef_mcf_sw_info_struct)) ) {
2337 mcf_ut_format_err_str("Fail to write MCF sw info to NVRAM!!\r\n");
2338 return KAL_FALSE;
2339 }
2340
2341 pFile = (mcf_tool_file_info_t *)(ota_file->buff);
2342 pItem = (mcf_tool_ota_file_item_t *)(ota_file->buff + sizeof(mcf_tool_file_info_t));
2343
2344 /*
2345 * Read OTA LID positive test
2346 */
2347 MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
2348 if (ota_file) {
2349 ret = mcf_ut_open_test_data("MCF_OTA_QUERY_ut_normal.mcfota", (kal_char *)(ota_file->buff), MCF_MAX_OTA_FILE_SIZE);
2350 if (ret == KAL_FALSE) {
2351 mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_OTA_QUERY_ut_normal.mcfota");
2352 return KAL_FALSE;
2353 }
2354
2355 MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
2356 } else {
2357 mcf_ut_format_err_str("Read OTA by LID FAIL!! Fail to take write lock! \r\n");
2358 return KAL_FALSE;
2359 }
2360
2361 // Record index 1
2362 kal_mem_set(&test_lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
2363
2364 mcf_ret = mcf_read_ota_buffer(NVRAM_EF_MCF_TEST_OTA_QUERY_LID, 1, (kal_uint8 *)&test_lid_buffer, sizeof(nvram_ef_mcf_test_struct));
2365 if (mcf_ret != MCF_OTA_R_SUCCESS) {
2366 mcf_ut_format_err_str("Read OTA by LID FAIL!! ret(%d) \r\n", mcf_ret);
2367 return KAL_FALSE;
2368 }
2369
2370 ret = mcf_check_test_lid_value((kal_uint8 *)&test_lid_buffer);
2371 if (ret == KAL_FALSE) {
2372 mcf_ut_format_err_str("Read OTA by LID positive test FAIL!!\r\n");
2373 return KAL_FALSE;
2374 }
2375
2376 // Record index 2
2377 kal_mem_set(&test_lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
2378
2379 mcf_ret = mcf_read_ota_buffer(NVRAM_EF_MCF_TEST_OTA_QUERY_LID, 2, (kal_uint8 *)&test_lid_buffer, sizeof(nvram_ef_mcf_test_struct));
2380 if (mcf_ret != MCF_OTA_R_SUCCESS) {
2381 mcf_ut_format_err_str("Read OTA by LID FAIL!! ret(%d) \r\n", mcf_ret);
2382 return KAL_FALSE;
2383 }
2384
2385 ret = mcf_check_test_lid_value((kal_uint8 *)&test_lid_buffer);
2386 if (ret == KAL_FALSE) {
2387 mcf_ut_format_err_str("Read OTA by LID positive test FAIL!!\r\n");
2388 return KAL_FALSE;
2389 }
2390
2391 /*
2392 * Read OTA by LID positive test - item with mismatched verno in file
2393 */
2394 MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
2395 if (ota_file) {
2396 ret = mcf_ut_open_test_data("MCF_OTA_QUERY_ut_mismatched_verno.mcfota", (kal_char *)(ota_file->buff), MCF_MAX_OTA_FILE_SIZE);
2397 if (ret == KAL_FALSE) {
2398 mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_OTA_QUERY_ut_mismatched_verno.mcfota");
2399 return KAL_FALSE;
2400 }
2401
2402 MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
2403 } else {
2404 mcf_ut_format_err_str("Read OTA by LID FAIL!! Fail to take write lock! \r\n");
2405 return KAL_FALSE;
2406 }
2407
2408 kal_mem_set(&test_lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
2409
2410 mcf_ret = mcf_read_ota_buffer(NVRAM_EF_MCF_TEST_OTA_QUERY_LID, 1, (kal_uint8 *)&test_lid_buffer, sizeof(nvram_ef_mcf_test_struct));
2411 if (mcf_ret != MCF_OTA_R_SUCCESS) {
2412 mcf_ut_format_err_str("Read OTA by LID FAIL!! ret(%d) \r\n", mcf_ret);
2413 return KAL_FALSE;
2414 }
2415
2416 ret = mcf_check_test_lid_value((kal_uint8 *)&test_lid_buffer);
2417 if (ret == KAL_FALSE) {
2418 mcf_ut_format_err_str("Read OTA by LID positive test (item with mismatched verno in file) FAIL!!\r\n");
2419 return KAL_FALSE;
2420 }
2421
2422
2423 MCF_UT_PASS();
2424 return KAL_TRUE;
2425}
2426#endif
2427
2428#if !defined(__MTK_TARGET__)
2429kal_bool mcf_ut_read_tlvota_buffer(void *p_param, kal_char *p_ret_err_str, kal_uint32 *p_ret_err_str_sz)
2430{
2431 mcf_t *pMcf = mcf_get_instance();
2432 mcf_tool_file_info_t *pFile;
2433 mcf_tool_tlvota_file_item_t *pItem;
2434 mcf_tlvota_file_t *tlvota_file;
2435 nvram_ef_mcf_tlvota_file_info_struct nv_tlvota_file;
2436 nvram_ef_mcf_test_struct test_lid_buffer;
2437 nvram_ef_mcf_test_struct empty_buffer = {0};
2438 mcf_tlvota_tag_t tlvota_tag;
2439 kal_char tag[16];
2440 mcf_ota_result_e mcf_ret;
2441 kal_bool ret;
2442
2443 mcf_ut_init();
2444
2445 /* Write MCF TLV-OTA file version to NVRAM */
2446 kal_mem_set(&nv_tlvota_file, 0, sizeof(nvram_ef_mcf_tlvota_file_info_struct));
2447 strncpy(nv_tlvota_file.path, MCF_FS_DEFAULT_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN);
2448 strncpy(nv_tlvota_file.name, MCF_FS_DEFAULT_TLVOTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN);
2449 if ( !nvram_external_write_data(NVRAM_EF_MCF_TLVOTA_FILE_LID, 1, (kal_uint8 *)&nv_tlvota_file, sizeof(nvram_ef_mcf_tlvota_file_info_struct)) ) {
2450 mcf_ut_format_err_str("Fail to write MCF TLV-OTA file info to NVRAM!!\r\n");
2451 return KAL_FALSE;
2452 }
2453
2454 /*
2455 * Read TLV-OTA by LID & tag positive test - fully matched tag
2456 */
2457 tlvota_file = &(pMcf->general_tlvota_file);
2458
2459 MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
2460 if (tlvota_file) {
2461 pFile = (mcf_tool_file_info_t *)(tlvota_file->buff);
2462 pItem = (mcf_tool_tlvota_file_item_t *)(tlvota_file->buff + sizeof(mcf_tool_file_info_t));
2463
2464 ret = mcf_ut_open_test_data("MCF_TLVOTA_ICCID_ut_normal.mcfopota", (kal_char *)(tlvota_file->buff), MCF_MAX_TLVOTA_FILE_SIZE);
2465 if (ret == KAL_FALSE) {
2466 mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_TLVOTA_ICCID_ut_normal.mcfopota");
2467 return KAL_FALSE;
2468 }
2469
2470 MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
2471 } else {
2472 mcf_ut_format_err_str("Read TLV-OTA by LID FAIL!! Fail to take write lock! \r\n");
2473 return KAL_FALSE;
2474 }
2475
2476 // NVRAM_EF_MCF_TEST_OTA_LID with SBP_PARTIAL_TAG
2477 kal_mem_set(&test_lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
2478 kal_mem_set(&tlvota_tag, 0, sizeof(mcf_tlvota_tag_t));
2479 tlvota_tag.tag_type = MCF_TLVOTA_TAG_ICCID;
2480 strcpy(tag, SBP_PARTIAL_TAG);
2481 tlvota_tag.tag_len = strlen(tag);
2482 tlvota_tag.tag = tag;
2483
2484 mcf_ret = mcf_read_tlvota_buffer(0, tlvota_tag, NVRAM_EF_MCF_TEST_OTA_LID, (kal_uint8 *)&test_lid_buffer, sizeof(nvram_ef_mcf_test_struct));
2485 if (mcf_ret != MCF_OTA_R_SUCCESS) {
2486 mcf_ut_format_err_str("Read TLV-OTA by LID & tag FAIL!! ret(%d) \r\n", mcf_ret);
2487 return KAL_FALSE;
2488 }
2489
2490 ret = mcf_check_test_lid_value((kal_uint8 *)&test_lid_buffer);
2491 if (ret == KAL_FALSE) {
2492 mcf_ut_format_err_str("Read TLV-OTA by LID & tag positive test (fully matched tag) FAIL!!\r\n");
2493 return KAL_FALSE;
2494 }
2495
2496 /*
2497 * Read TLV-OTA by LID & tag positive test - partially matched tag
2498 * NVRAM_EF_MCF_TEST_OTA_LID with tag SBP_PARTIAL_TAG (12_NA_NA), but user searches tag (12_NA_NA_TEST)
2499 */
2500 kal_mem_set(&test_lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
2501 kal_mem_set(&tlvota_tag, 0, sizeof(mcf_tlvota_tag_t));
2502 tlvota_tag.tag_type = MCF_TLVOTA_TAG_ICCID;
2503 strcpy(tag, "12_NA_NA_TEST");
2504 tlvota_tag.tag_len = strlen(tag);
2505 tlvota_tag.tag = tag;
2506
2507 mcf_ret = mcf_read_tlvota_buffer(0, tlvota_tag, NVRAM_EF_MCF_TEST_OTA_LID, (kal_uint8 *)&test_lid_buffer, sizeof(nvram_ef_mcf_test_struct));
2508 if (mcf_ret != MCF_OTA_R_SUCCESS) {
2509 mcf_ut_format_err_str("Read TLV-OTA by LID & tag FAIL!! ret(%d) \r\n", mcf_ret);
2510 return KAL_FALSE;
2511 }
2512
2513 ret = mcf_check_test_lid_value((kal_uint8 *)&test_lid_buffer);
2514 if (ret == KAL_FALSE) {
2515 mcf_ut_format_err_str("Read TLV-OTA by LID & tag positive test (partially matched tag) FAIL!!\r\n");
2516 return KAL_FALSE;
2517 }
2518
2519 /*
2520 * Read TLV-OTA by LID & tag positive test - no matched tag
2521 * NVRAM_EF_MCF_TEST_OTA_LID with tag SBP_PARTIAL_TAG (12_NA_NA), but user searches tag (12_NA)
2522 */
2523 kal_mem_set(&test_lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
2524 kal_mem_set(&tlvota_tag, 0, sizeof(mcf_tlvota_tag_t));
2525 tlvota_tag.tag_type = MCF_TLVOTA_TAG_ICCID;
2526 strcpy(tag, "12_NA");
2527 tlvota_tag.tag_len = strlen(tag);
2528 tlvota_tag.tag = tag;
2529
2530 mcf_ret = mcf_read_tlvota_buffer(0, tlvota_tag, NVRAM_EF_MCF_TEST_OTA_LID, (kal_uint8 *)&test_lid_buffer, sizeof(nvram_ef_mcf_test_struct));
2531 if (mcf_ret != MCF_OTA_R_SUCCESS) {
2532 mcf_ut_format_err_str("Read TLV-OTA by LID & tag FAIL!! ret(%d) \r\n", mcf_ret);
2533 return KAL_FALSE;
2534 }
2535
2536 if (kal_mem_cmp(&test_lid_buffer, &empty_buffer, sizeof(nvram_ef_mcf_test_struct)) != 0) {
2537 mcf_ut_format_err_str("Read TLV-OTA by LID & tag positive test (no matched tag) FAIL!!\r\n");
2538 return KAL_FALSE;
2539 }
2540
2541 /*
2542 * Read TLV-OTA by LID & tag positive test - item with mismatched verno in file
2543 */
2544 kal_mem_set(&test_lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
2545 kal_mem_set(&tlvota_tag, 0, sizeof(mcf_tlvota_tag_t));
2546 tlvota_tag.tag_type = MCF_TLVOTA_TAG_ICCID;
2547 strcpy(tag, SBP_PARTIAL_TAG);
2548 tlvota_tag.tag_len = strlen(tag);
2549 tlvota_tag.tag = tag;
2550
2551 tlvota_file = &(pMcf->general_tlvota_file);
2552 pItem = (mcf_tool_tlvota_file_item_t *)(tlvota_file->buff + sizeof(mcf_tool_file_info_t));
2553
2554 MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
2555 if (tlvota_file) {
2556 ret = mcf_ut_open_test_data("MCF_TLVOTA_ICCID_ut_normal.mcfopota", (kal_char *)(tlvota_file->buff), MCF_MAX_TLVOTA_FILE_SIZE);
2557 if (ret == KAL_FALSE) {
2558 mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_TLVOTA_ICCID_ut_normal.mcfopota");
2559 return KAL_FALSE;
2560 }
2561
2562 MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
2563 } else {
2564 mcf_ut_format_err_str("Read TLV-OTA by LID FAIL!! Fail to take write lock! \r\n");
2565 return KAL_FALSE;
2566 }
2567
2568 mcf_ret = mcf_read_tlvota_buffer(0, tlvota_tag, NVRAM_EF_MCF_TEST_OTA_LID, (kal_uint8 *)&test_lid_buffer, sizeof(nvram_ef_mcf_test_struct));
2569 if (mcf_ret != MCF_OTA_R_SUCCESS) {
2570 mcf_ut_format_err_str("Read TLV-OTA by LID & tag negative test (item with mismatched verno in file) FAIL!! ret(%d) \r\n", mcf_ret);
2571 return KAL_FALSE;
2572 }
2573
2574 ret = mcf_check_test_lid_value((kal_uint8 *)&test_lid_buffer);
2575 if (ret == KAL_FALSE) {
2576 mcf_ut_format_err_str("Read TLV-OTA by LID & tag positive test (fully matched tag) FAIL!!\r\n");
2577 return KAL_FALSE;
2578 }
2579
2580
2581 MCF_UT_PASS();
2582 return KAL_TRUE;
2583}
2584#endif
2585
2586#if !defined(__MTK_TARGET__)
2587kal_bool mcf_ut_read_tlvota_buffer_sbp(void *p_param, kal_char *p_ret_err_str, kal_uint32 *p_ret_err_str_sz)
2588{
2589 mcf_t *pMcf = mcf_get_instance();
2590 mcf_tool_file_info_t *pFile;
2591 mcf_tool_tlvota_file_item_t *pItem;
2592 mcf_tlvota_file_t *tlvota_file;
2593 nvram_ef_mcf_tlvota_file_info_struct nv_tlvota_file;
2594 nvram_ef_mcf_test_struct test_lid_buffer;
2595 nvram_ef_mcf_test_struct empty_buffer = {0};
2596 mcf_tlvota_sbp_tag_t sbp_tag;
2597 kal_uint8 i;
2598 mcf_ota_result_e mcf_ret;
2599 kal_bool ret;
2600
2601 mcf_ut_init();
2602
2603 /* Write MCF TLV-OTA file version to NVRAM */
2604 kal_mem_set(&nv_tlvota_file, 0, sizeof(nvram_ef_mcf_tlvota_file_info_struct));
2605 strncpy(nv_tlvota_file.path, MCF_FS_DEFAULT_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN);
2606 strncpy(nv_tlvota_file.name, MCF_FS_DEFAULT_TLVOTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN);
2607 if ( !nvram_external_write_data(NVRAM_EF_MCF_TLVOTA_FILE_LID, 1, (kal_uint8 *)&nv_tlvota_file, sizeof(nvram_ef_mcf_tlvota_file_info_struct)) ) {
2608 mcf_ut_format_err_str("Fail to write MCF TLV-OTA file info to NVRAM!!\r\n");
2609 return KAL_FALSE;
2610 }
2611
2612 /*
2613 * Read TLV-OTA by LID & sbp_tag positive test - partially matched tag
2614 * NVRAM_EF_MCF_TEST_OTA_LID with tag SBP_PARTIAL_TAG (12_NA_NA), but user searches SBP_FULL_TAG (12_33_21)
2615 */
2616 /* Fill TLV-OTA file into buffer */
2617 for (i = 0; i < MAX_SIM_NUM; i++) {
2618 tlvota_file = &(pMcf->tlvota_file[i]);
2619
2620 MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
2621 if (tlvota_file) {
2622 pFile = (mcf_tool_file_info_t *)(tlvota_file->buff);
2623 pItem = (mcf_tool_tlvota_file_item_t *)(tlvota_file->buff + sizeof(mcf_tool_file_info_t));
2624
2625 ret = mcf_ut_open_test_data("MCF_TLVOTA_SBP_partial_ut_normal.mcfopota", (kal_char *)(tlvota_file->buff), MCF_MAX_TLVOTA_FILE_SIZE);
2626 if (ret == KAL_FALSE) {
2627 mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_TLVOTA_SBP_partial_ut_normal.mcfopota");
2628 return KAL_FALSE;
2629 }
2630
2631 MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
2632 } else {
2633 mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! Fail to take write lock! \r\n");
2634 return KAL_FALSE;
2635 }
2636 }
2637
2638 // NVRAM_EF_MCF_TEST_OTA_LID with SBP_PARTIAL_TAG
2639 kal_mem_set(&sbp_tag, 0, sizeof(mcf_tlvota_sbp_tag_t));
2640 sbp_tag.sbp_id = SBP_TAG_SBPID;
2641 strncpy(sbp_tag.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
2642 strncpy(sbp_tag.mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
2643
2644 for (i = 0; i < MAX_SIM_NUM; i++) {
2645 kal_mem_set(&test_lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
2646
2647 mcf_ret = mcf_read_tlvota_buffer_sbp_tag(i, sbp_tag, NVRAM_EF_MCF_TEST_OTA_LID, (kal_uint8 *)&test_lid_buffer, sizeof(nvram_ef_mcf_test_struct));
2648 if (mcf_ret != MCF_OTA_R_SUCCESS) {
2649 mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! i(%d), ret(%d) \r\n", i, mcf_ret);
2650 return KAL_FALSE;
2651 }
2652
2653 ret = mcf_check_test_lid_value((kal_uint8 *)&test_lid_buffer);
2654 if (ret == KAL_FALSE) {
2655 mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag positive test (partially matched tag) FAIL!!\r\n");
2656 return KAL_FALSE;
2657 }
2658 }
2659
2660 /*
2661 * Read TLV-OTA by LID & sbp_tag positive test - partially matched tag
2662 * NVRAM_EF_MCF_TEST_OTA_LID with tag SBP_PARTIAL_TAG (NA_NA_NA), but user searches SBP_FULL_TAG (12_33_21)
2663 */
2664 for (i = 0; i < MAX_SIM_NUM; i++) {
2665 tlvota_file = &(pMcf->tlvota_file[i]);
2666
2667 MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
2668 if (tlvota_file) {
2669 ret = mcf_ut_open_test_data("MCF_TLVOTA_SBP_NA_ut_normal.mcfopota", (kal_char *)(tlvota_file->buff), MCF_MAX_TLVOTA_FILE_SIZE);
2670 if (ret == KAL_FALSE) {
2671 mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_TLVOTA_SBP_NA_ut_normal.mcfopota");
2672 return KAL_FALSE;
2673 }
2674
2675 MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
2676 } else {
2677 mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! Fail to take write lock! \r\n");
2678 return KAL_FALSE;
2679 }
2680 }
2681
2682 kal_mem_set(&sbp_tag, 0, sizeof(mcf_tlvota_sbp_tag_t));
2683 sbp_tag.sbp_id = SBP_TAG_SBPID;
2684 strncpy(sbp_tag.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
2685 strncpy(sbp_tag.mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
2686
2687 for (i = 0; i < MAX_SIM_NUM; i++) {
2688 kal_mem_set(&test_lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
2689
2690 mcf_ret = mcf_read_tlvota_buffer_sbp_tag(i, sbp_tag, NVRAM_EF_MCF_TEST_OTA_LID, (kal_uint8 *)&test_lid_buffer, sizeof(nvram_ef_mcf_test_struct));
2691 if (mcf_ret != MCF_OTA_R_SUCCESS) {
2692 mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! ret(%d) \r\n", mcf_ret);
2693 return KAL_FALSE;
2694 }
2695
2696 ret = mcf_check_test_lid_value((kal_uint8 *)&test_lid_buffer);
2697 if (ret == KAL_FALSE) {
2698 mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag positive test (partially matched tag) FAIL!!\r\n");
2699 return KAL_FALSE;
2700 }
2701 }
2702
2703 /*
2704 * Read TLV-OTA by LID & sbp_tag positive test - fully matched tag
2705 * NVRAM_EF_MCF_TEST_OTA_LID with tag SBP_FULL_TAG (12_33_21), and user searches SBP_FULL_TAG (12_33_21)
2706 */
2707 for (i = 0; i < MAX_SIM_NUM; i++) {
2708 tlvota_file = &(pMcf->tlvota_file[i]);
2709
2710 MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
2711 if (tlvota_file) {
2712 ret = mcf_ut_open_test_data("MCF_TLVOTA_SBP_full_ut_normal.mcfopota", (kal_char *)(tlvota_file->buff), MCF_MAX_TLVOTA_FILE_SIZE);
2713 if (ret == KAL_FALSE) {
2714 mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_TLVOTA_SBP_full_ut_normal.mcfopota");
2715 return KAL_FALSE;
2716 }
2717
2718 MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
2719 } else {
2720 mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! Fail to take write lock! \r\n");
2721 return KAL_FALSE;
2722 }
2723 }
2724
2725 kal_mem_set(&sbp_tag, 0, sizeof(mcf_tlvota_sbp_tag_t));
2726 sbp_tag.sbp_id = SBP_TAG_SBPID;
2727 strncpy(sbp_tag.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
2728 strncpy(sbp_tag.mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
2729
2730 for (i = 0; i < MAX_SIM_NUM; i++) {
2731 kal_mem_set(&test_lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
2732
2733 mcf_ret = mcf_read_tlvota_buffer_sbp_tag(i, sbp_tag, NVRAM_EF_MCF_TEST_OTA_LID, (kal_uint8 *)&test_lid_buffer, sizeof(nvram_ef_mcf_test_struct));
2734 if (mcf_ret != MCF_OTA_R_SUCCESS) {
2735 mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! ret(%d) \r\n", mcf_ret);
2736 return KAL_FALSE;
2737 }
2738
2739 ret = mcf_check_test_lid_value((kal_uint8 *)&test_lid_buffer);
2740 if (ret == KAL_FALSE) {
2741 mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag positive test (fully matched tag) FAIL!!\r\n");
2742 return KAL_FALSE;
2743 }
2744 }
2745
2746 /*
2747 * Read TLV-OTA by LID & sbp_tag positive test - no matched tag
2748 * NVRAM_EF_MCF_TEST_OTA_LID with tag SBP_FULL_TAG (12_33_21), and user searches SBP_FULL_TAG (12_33_NA)
2749 */
2750 for (i = 0; i < MAX_SIM_NUM; i++) {
2751 tlvota_file = &(pMcf->tlvota_file[i]);
2752
2753 MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
2754 if (tlvota_file) {
2755 ret = mcf_ut_open_test_data("MCF_TLVOTA_SBP_full_ut_normal.mcfopota", (kal_char *)(tlvota_file->buff), MCF_MAX_TLVOTA_FILE_SIZE);
2756 if (ret == KAL_FALSE) {
2757 mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_TLVOTA_SBP_full_ut_normal.mcfopota");
2758 return KAL_FALSE;
2759 }
2760
2761 MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
2762 } else {
2763 mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! Fail to take write lock! \r\n");
2764 return KAL_FALSE;
2765 }
2766 }
2767
2768 kal_mem_set(&sbp_tag, 0, sizeof(mcf_tlvota_sbp_tag_t));
2769 sbp_tag.sbp_id = SBP_TAG_SBPID;
2770 strncpy(sbp_tag.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
2771 strncpy(sbp_tag.mnc, "", MAX_MNC_STR_LEN);
2772
2773 for (i = 0; i < MAX_SIM_NUM; i++) {
2774 kal_mem_set(&test_lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
2775
2776 mcf_ret = mcf_read_tlvota_buffer_sbp_tag(i, sbp_tag, NVRAM_EF_MCF_TEST_OTA_LID, (kal_uint8 *)&test_lid_buffer, sizeof(nvram_ef_mcf_test_struct));
2777 if (mcf_ret != MCF_OTA_R_SUCCESS) {
2778 mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! ret(%d) \r\n", mcf_ret);
2779 return KAL_FALSE;
2780 }
2781
2782 if (kal_mem_cmp(&test_lid_buffer, &empty_buffer, sizeof(nvram_ef_mcf_test_struct)) != 0) {
2783 mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag positive test (no matched tag) FAIL!!\r\n");
2784 return KAL_FALSE;
2785 }
2786 }
2787
2788 /*
2789 * Read TLV-OTA by LID & sbp_tag positive test - no matched tag
2790 * NVRAM_EF_MCF_TEST_OTA_LID with tag SBP_PARTIAL_TAG_NO_SBPID (NA_33_21), and user searches SBP_FULL_TAG (12_33_21)
2791 */
2792 for (i = 0; i < MAX_SIM_NUM; i++) {
2793 tlvota_file = &(pMcf->tlvota_file[i]);
2794
2795 MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
2796 if (tlvota_file) {
2797 ret = mcf_ut_open_test_data("MCF_TLVOTA_SBP_no_sbpid_ut_normal.mcfopota", (kal_char *)(tlvota_file->buff), MCF_MAX_TLVOTA_FILE_SIZE);
2798 if (ret == KAL_FALSE) {
2799 mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_TLVOTA_SBP_no_sbpid_ut_normal.mcfopota");
2800 return KAL_FALSE;
2801 }
2802
2803 MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
2804 } else {
2805 mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! Fail to take write lock! \r\n");
2806 return KAL_FALSE;
2807 }
2808 }
2809
2810 kal_mem_set(&sbp_tag, 0, sizeof(mcf_tlvota_sbp_tag_t));
2811 sbp_tag.sbp_id = SBP_TAG_SBPID;
2812 strncpy(sbp_tag.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
2813 strncpy(sbp_tag.mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
2814
2815 for (i = 0; i < MAX_SIM_NUM; i++) {
2816 kal_mem_set(&test_lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
2817
2818 mcf_ret = mcf_read_tlvota_buffer_sbp_tag(i, sbp_tag, NVRAM_EF_MCF_TEST_OTA_LID, (kal_uint8 *)&test_lid_buffer, sizeof(nvram_ef_mcf_test_struct));
2819 if (mcf_ret != MCF_OTA_R_SUCCESS) {
2820 mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! ret(%d) \r\n", mcf_ret);
2821 return KAL_FALSE;
2822 }
2823
2824 if (kal_mem_cmp(&test_lid_buffer, &empty_buffer, sizeof(nvram_ef_mcf_test_struct)) != 0) {
2825 mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag positive test (no matched tag) FAIL!!\r\n");
2826 return KAL_FALSE;
2827 }
2828 }
2829
2830 /*
2831 * Read TLV-OTA by LID & sbp_tag positive test - no matched tag
2832 * NVRAM_EF_MCF_TEST_OTA_LID with tag SBP_FULL_TAG (12_33_21), and user searches SBP_FULL_TAG (12_NA_NA)
2833 */
2834 for (i = 0; i < MAX_SIM_NUM; i++) {
2835 tlvota_file = &(pMcf->tlvota_file[i]);
2836
2837 MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
2838 if (tlvota_file) {
2839 ret = mcf_ut_open_test_data("MCF_TLVOTA_SBP_full_ut_normal.mcfopota", (kal_char *)(tlvota_file->buff), MCF_MAX_TLVOTA_FILE_SIZE);
2840 if (ret == KAL_FALSE) {
2841 mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_TLVOTA_SBP_full_ut_normal.mcfopota");
2842 return KAL_FALSE;
2843 }
2844
2845 MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
2846 } else {
2847 mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! Fail to take write lock! \r\n");
2848 return KAL_FALSE;
2849 }
2850 }
2851
2852 kal_mem_set(&sbp_tag, 0, sizeof(mcf_tlvota_sbp_tag_t));
2853 sbp_tag.sbp_id = SBP_TAG_SBPID;
2854 strncpy(sbp_tag.mcc, "", MAX_MCC_STR_LEN);
2855 strncpy(sbp_tag.mnc, "", MAX_MNC_STR_LEN);
2856
2857 for (i = 0; i < MAX_SIM_NUM; i++) {
2858 kal_mem_set(&test_lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
2859
2860 mcf_ret = mcf_read_tlvota_buffer_sbp_tag(i, sbp_tag, NVRAM_EF_MCF_TEST_OTA_LID, (kal_uint8 *)&test_lid_buffer, sizeof(nvram_ef_mcf_test_struct));
2861 if (mcf_ret != MCF_OTA_R_SUCCESS) {
2862 mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! ret(%d) \r\n", mcf_ret);
2863 return KAL_FALSE;
2864 }
2865
2866 if (kal_mem_cmp(&test_lid_buffer, &empty_buffer, sizeof(nvram_ef_mcf_test_struct)) != 0) {
2867 mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag positive test (no matched tag) FAIL!!\r\n");
2868 return KAL_FALSE;
2869 }
2870 }
2871
2872 /*
2873 * Read TLV-OTA by LID & sbp_tag positive test - partially matched tag
2874 * NVRAM_EF_MCF_TEST_OTA_LID with tag SBP_PARTIAL_TAG_NO_SBPID (NA_33_21), and user searches SBP_PARTIAL_TAG_NO_SBPID (NA_33_21)
2875 */
2876 for (i = 0; i < MAX_SIM_NUM; i++) {
2877 tlvota_file = &(pMcf->tlvota_file[i]);
2878
2879 MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
2880 if (tlvota_file) {
2881 ret = mcf_ut_open_test_data("MCF_TLVOTA_SBP_no_sbpid_ut_normal.mcfopota", (kal_char *)(tlvota_file->buff), MCF_MAX_TLVOTA_FILE_SIZE);
2882 if (ret == KAL_FALSE) {
2883 mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_TLVOTA_SBP_no_sbpid_ut_normal.mcfopota");
2884 return KAL_FALSE;
2885 }
2886
2887 MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
2888 } else {
2889 mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! Fail to take write lock! \r\n");
2890 return KAL_FALSE;
2891 }
2892 }
2893
2894 kal_mem_set(&sbp_tag, 0, sizeof(mcf_tlvota_sbp_tag_t));
2895 sbp_tag.sbp_id = SBP_ID_INVALID;
2896 strncpy(sbp_tag.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
2897 strncpy(sbp_tag.mnc, SBP_TAG_MCC, MAX_MNC_STR_LEN);
2898
2899 for (i = 0; i < MAX_SIM_NUM; i++) {
2900 kal_mem_set(&test_lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
2901
2902 mcf_ret = mcf_read_tlvota_buffer_sbp_tag(i, sbp_tag, NVRAM_EF_MCF_TEST_OTA_LID, (kal_uint8 *)&test_lid_buffer, sizeof(nvram_ef_mcf_test_struct));
2903 if (mcf_ret != MCF_OTA_R_SUCCESS) {
2904 mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! ret(%d) \r\n", mcf_ret);
2905 return KAL_FALSE;
2906 }
2907
2908 if (kal_mem_cmp(&test_lid_buffer, &empty_buffer, sizeof(nvram_ef_mcf_test_struct)) != 0) {
2909 mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag positive test (no matched tag) FAIL!!\r\n");
2910 return KAL_FALSE;
2911 }
2912 }
2913
2914 /*
2915 * Read TLV-OTA by LID & sbp_tag positive test - item with mismatched verno in file
2916 */
2917 for (i = 0; i < MAX_SIM_NUM; i++) {
2918 tlvota_file = &(pMcf->tlvota_file[i]);
2919
2920 MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
2921 if (tlvota_file) {
2922 ret = mcf_ut_open_test_data("MCF_TLVOTA_SBP_full_ut_mismatched_verno.mcfopota", (kal_char *)(tlvota_file->buff), MCF_MAX_TLVOTA_FILE_SIZE);
2923 if (ret == KAL_FALSE) {
2924 mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_TLVOTA_SBP_full_ut_mismatched_verno.mcfopota");
2925 return KAL_FALSE;
2926 }
2927
2928 MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
2929 } else {
2930 mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! Fail to take write lock! \r\n");
2931 return KAL_FALSE;
2932 }
2933 }
2934
2935 kal_mem_set(&sbp_tag, 0, sizeof(mcf_tlvota_sbp_tag_t));
2936 sbp_tag.sbp_id = SBP_TAG_SBPID;
2937 strncpy(sbp_tag.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
2938 strncpy(sbp_tag.mnc, SBP_TAG_MCC, MAX_MNC_STR_LEN);
2939
2940 for (i = 0; i < MAX_SIM_NUM; i++) {
2941 kal_mem_set(&test_lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
2942
2943 mcf_ret = mcf_read_tlvota_buffer_sbp_tag(i, sbp_tag, NVRAM_EF_MCF_TEST_OTA_LID, (kal_uint8 *)&test_lid_buffer, sizeof(nvram_ef_mcf_test_struct));
2944 if (mcf_ret != MCF_OTA_R_SUCCESS) {
2945 mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! ret(%d) \r\n", mcf_ret);
2946 return KAL_FALSE;
2947 }
2948
2949 if (kal_mem_cmp(&test_lid_buffer, &empty_buffer, sizeof(nvram_ef_mcf_test_struct)) != 0) {
2950 mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag negative test (item with mismatched verno in file) FAIL!!\r\n");
2951 return KAL_FALSE;
2952 }
2953 }
2954
2955
2956 MCF_UT_PASS();
2957 return KAL_TRUE;
2958}
2959#endif
2960
2961#if !defined(__MTK_TARGET__)
2962kal_bool mcf_ut_reset_lid_full(void *p_param, kal_char *p_ret_err_str, kal_uint32 *p_ret_err_str_sz)
2963{
2964 mcf_t *pMcf = mcf_get_instance();
2965 mcf_ota_file_t *ota_file = &(pMcf->ota_file);
2966 mcf_tool_file_info_t *pFile = (mcf_tool_file_info_t *)(ota_file->buff);
2967 nvram_ef_mcf_ota_file_info_struct nv_ota_file;
2968 nvram_ef_mcf_sw_info_struct nv_sw_info;
2969 nvram_ef_mcf_test_struct empty_buffer = {0};
2970 mcf_ota_result_e mcf_ret;
2971 kal_bool ret;
2972 nvram_ef_mcf_test_struct test_lid_buffer;
2973 kal_uint8 *lid_buffer;
2974
2975 mcf_ut_init();
2976
2977 /* Write MCF OTA file version to NVRAM */
2978 kal_mem_set(&nv_ota_file, 0, sizeof(nvram_ef_mcf_ota_file_info_struct));
2979 strncpy(nv_ota_file.path, MCF_FS_DEFAULT_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN);
2980 strncpy(nv_ota_file.name, MCF_FS_DEFAULT_OTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN);
2981 if ( !nvram_external_write_data(NVRAM_EF_MCF_OTA_FILE_LID, 1, (kal_uint8 *)&nv_ota_file, sizeof(nvram_ef_mcf_ota_file_info_struct)) ) {
2982 mcf_ut_format_err_str("Fail to write MCF OTA file info to NVRAM!!\r\n");
2983 return KAL_FALSE;
2984 }
2985 kal_mem_set(&nv_sw_info, 0, sizeof(nvram_ef_mcf_sw_info_struct));
2986 strncpy(nv_sw_info.last_update_file.sw_version, MCF_UT_SW_VERNO, MCF_FILE_MAX_SW_VERSION_LEN);
2987 strncpy(nv_sw_info.last_update_file.gen_time, MCF_UT_GEN_TIME, MCF_FILE_MAX_GEN_TIME_LEN);
2988 strcpy(nv_sw_info.last_update_file.path, "");
2989 strcpy(nv_sw_info.last_update_file.name, "");
2990 if ( !nvram_external_write_data(NVRAM_EF_MCF_SW_INFO_LID, 1, (kal_uint8 *)&nv_sw_info, sizeof(nvram_ef_mcf_sw_info_struct)) ) {
2991 mcf_ut_format_err_str("Fail to write MCF sw info to NVRAM!!\r\n");
2992 return KAL_FALSE;
2993 }
2994
2995 /*
2996 * Reset all LID positive
2997 */
2998 MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
2999 if (ota_file) {
3000 ret = mcf_ut_open_test_data("MCF_OTA_ut_normal.mcfota", (kal_char *)(ota_file->buff), MCF_MAX_OTA_FILE_SIZE);
3001 if (ret == KAL_FALSE) {
3002 mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_OTA_ut_normal.mcfota");
3003 return KAL_FALSE;
3004 }
3005
3006 MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
3007 } else {
3008 mcf_ut_format_err_str("Reset LID FAIL!! Fail to take write lock! \r\n");
3009 return KAL_FALSE;
3010 }
3011
3012 mcf_ret = mcf_do_ota_full();
3013 if (mcf_ret != MCF_OTA_R_SUCCESS) {
3014 mcf_ut_format_err_str("Reset LID FAIL!! ret(%d) \r\n", mcf_ret);
3015 return KAL_FALSE;
3016 }
3017
3018 ret = mcf_check_test_lid_value(NULL);
3019 if (ret == KAL_FALSE) {
3020 mcf_ut_format_err_str("Reset LID FAIL!!\r\n");
3021 return KAL_FALSE;
3022 }
3023
3024 MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
3025 if (ota_file) {
3026 ret = mcf_ut_open_test_data("MCF_OTA_QUERY_ut_normal.mcfota", (kal_char *)(ota_file->buff), MCF_MAX_OTA_FILE_SIZE);
3027 if (ret == KAL_FALSE) {
3028 mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_OTA_QUERY_ut_normal.mcfota");
3029 return KAL_FALSE;
3030 }
3031
3032 MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
3033 } else {
3034 mcf_ut_format_err_str("Read OTA by LID FAIL!! Fail to take write lock! \r\n");
3035 return KAL_FALSE;
3036 }
3037
3038
3039 mcf_ret = mcf_do_ota_full();
3040 if (mcf_ret != MCF_OTA_R_SUCCESS) {
3041 mcf_ut_format_err_str("Reset LID FAIL!! ret(%d) \r\n", mcf_ret);
3042 return KAL_FALSE;
3043 }
3044
3045
3046 lid_buffer = (kal_uint8 *)get_ctrl_buffer(sizeof(nvram_ef_mcf_test_struct));
3047 if ( !nvram_external_read_data(NVRAM_EF_MCF_TEST_OTA_LID, 1, lid_buffer, sizeof(nvram_ef_mcf_test_struct)) ) {
3048 printf("Fail to read NVRAM_EF_MCF_TEST_OTA_LID!!\r\n");
3049 ret = KAL_FALSE;
3050 }
3051
3052 if (kal_mem_cmp(lid_buffer, &empty_buffer, sizeof(nvram_ef_mcf_test_struct)) != 0) {
3053 mcf_ut_format_err_str("Reset LID record 1 FAIL!!\r\n");
3054 return KAL_FALSE;
3055 }
3056
3057 free_ctrl_buffer_set_null(lid_buffer);
3058
3059
3060 kal_mem_set(&test_lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
3061
3062 mcf_ret = mcf_read_ota_buffer(NVRAM_EF_MCF_TEST_OTA_QUERY_LID, 1, (kal_uint8 *)&test_lid_buffer, sizeof(nvram_ef_mcf_test_struct));
3063 if (mcf_ret != MCF_OTA_R_SUCCESS) {
3064 mcf_ut_format_err_str("Reset LID Read OTA by LID FAIL!! ret(%d) \r\n", mcf_ret);
3065 return KAL_FALSE;
3066 }
3067
3068
3069 ret = mcf_check_test_lid_value((kal_uint8 *)&test_lid_buffer);
3070 if (ret == KAL_FALSE) {
3071 mcf_ut_format_err_str("Reset LID New OTA apply FAIL!!\r\n");
3072 return KAL_FALSE;
3073 }
3074
3075 /*
3076 * Reset all LID negative
3077 */
3078 MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
3079 if (ota_file) {
3080 ret = mcf_ut_open_test_data("MCF_OTA_ut_normal.mcfota", (kal_char *)(ota_file->buff), MCF_MAX_OTA_FILE_SIZE);
3081 if (ret == KAL_FALSE) {
3082 mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_OTA_ut_normal.mcfota");
3083 return KAL_FALSE;
3084 }
3085
3086 MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
3087 } else {
3088 mcf_ut_format_err_str("Reset LID FAIL!! Fail to take write lock! \r\n");
3089 return KAL_FALSE;
3090 }
3091
3092 pFile->operation_mask |= MCF_FILE_OP_NOT_RESET_LID;
3093
3094 mcf_ret = mcf_do_ota_full();
3095 if (mcf_ret != MCF_OTA_R_SUCCESS) {
3096 mcf_ut_format_err_str("Reset LID FAIL!! ret(%d) \r\n", mcf_ret);
3097 return KAL_FALSE;
3098 }
3099
3100 ret = mcf_check_test_lid_value(NULL);
3101 if (ret == KAL_FALSE) {
3102 mcf_ut_format_err_str("Reset LID FAIL!!\r\n");
3103 return KAL_FALSE;
3104 }
3105
3106 MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
3107 if (ota_file) {
3108 ret = mcf_ut_open_test_data("MCF_OTA_QUERY_ut_normal.mcfota", (kal_char *)(ota_file->buff), MCF_MAX_OTA_FILE_SIZE);
3109 if (ret == KAL_FALSE) {
3110 mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_OTA_QUERY_ut_normal.mcfota");
3111 return KAL_FALSE;
3112 }
3113
3114 MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
3115 } else {
3116 mcf_ut_format_err_str("Read OTA by LID FAIL!! Fail to take write lock! \r\n");
3117 return KAL_FALSE;
3118 }
3119
3120 pFile->operation_mask |= MCF_FILE_OP_NOT_RESET_LID;
3121
3122 mcf_ret = mcf_do_ota_full();
3123 if (mcf_ret != MCF_OTA_R_SUCCESS) {
3124 mcf_ut_format_err_str("Reset LID FAIL!! ret(%d) \r\n", mcf_ret);
3125 return KAL_FALSE;
3126 }
3127
3128 ret = mcf_check_test_lid_value(NULL);
3129 if (ret == KAL_FALSE) {
3130 mcf_ut_format_err_str("Reset LID New OTA apply FAIL!!\r\n");
3131 return KAL_FALSE;
3132 }
3133
3134
3135 kal_mem_set(&test_lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
3136
3137 mcf_ret = mcf_read_ota_buffer(NVRAM_EF_MCF_TEST_OTA_QUERY_LID, 1, (kal_uint8 *)&test_lid_buffer, sizeof(nvram_ef_mcf_test_struct));
3138 if (mcf_ret != MCF_OTA_R_SUCCESS) {
3139 mcf_ut_format_err_str("Reset LID Read OTA by LID FAIL!! ret(%d) \r\n", mcf_ret);
3140 return KAL_FALSE;
3141 }
3142
3143
3144 ret = mcf_check_test_lid_value((kal_uint8 *)&test_lid_buffer);
3145 if (ret == KAL_FALSE) {
3146 mcf_ut_format_err_str("Reset LID New OTA apply FAIL!!\r\n");
3147 return KAL_FALSE;
3148 }
3149
3150 MCF_UT_PASS();
3151 return KAL_TRUE;
3152}
3153#endif
3154#if !defined(__MTK_TARGET__)
3155kal_bool mcf_ut_gid_do_ota_full(void *p_param, kal_char *p_ret_err_str, kal_uint32 *p_ret_err_str_sz)
3156{
3157 mcf_t *pMcf = mcf_get_instance();
3158 mcf_ota_file_t *ota_file = &(pMcf->ota_file);
3159 mcf_tool_file_info_t *pFile = (mcf_tool_file_info_t *)(ota_file->buff);
3160 nvram_ef_mcf_ota_file_info_struct nv_ota_file;
3161 nvram_ef_mcf_sw_info_struct nv_sw_info;
3162 kal_uint8 *lid_buffer;
3163 nvram_ef_mcf_test_struct empty_buffer = {0};
3164 mcf_ota_result_e mcf_ret;
3165 kal_bool ret;
3166 kal_uint32 i;
3167 nvram_ef_mcf_test_struct nv_lid_buffer;
3168
3169 mcf_ut_init();
3170
3171 /* Write MCF OTA file version to NVRAM */
3172 kal_mem_set(&nv_ota_file, 0, sizeof(nvram_ef_mcf_ota_file_info_struct));
3173 strncpy(nv_ota_file.path, MCF_FS_DEFAULT_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN);
3174 strncpy(nv_ota_file.name, MCF_FS_DEFAULT_OTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN);
3175 if ( !nvram_external_write_data(NVRAM_EF_MCF_OTA_FILE_LID, 1, (kal_uint8 *)&nv_ota_file, sizeof(nvram_ef_mcf_ota_file_info_struct)) ) {
3176 mcf_ut_format_err_str("Fail to write MCF OTA file info to NVRAM!!\r\n");
3177 return KAL_FALSE;
3178 }
3179 kal_mem_set(&nv_sw_info, 0, sizeof(nvram_ef_mcf_sw_info_struct));
3180 strncpy(nv_sw_info.last_update_file.sw_version, MCF_UT_SW_VERNO, MCF_FILE_MAX_SW_VERSION_LEN);
3181 strncpy(nv_sw_info.last_update_file.gen_time, MCF_UT_GEN_TIME, MCF_FILE_MAX_GEN_TIME_LEN);
3182 strcpy(nv_sw_info.last_update_file.path, "");
3183 strcpy(nv_sw_info.last_update_file.name, "");
3184 if ( !nvram_external_write_data(NVRAM_EF_MCF_SW_INFO_LID, 1, (kal_uint8 *)&nv_sw_info, sizeof(nvram_ef_mcf_sw_info_struct)) ) {
3185 mcf_ut_format_err_str("Fail to write MCF sw info to NVRAM!!\r\n");
3186 return KAL_FALSE;
3187 }
3188
3189 /*
3190 * Do full OTA positive test - Both SW verno of file and MD mismatch
3191 */
3192 MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
3193 if (ota_file) {
3194 ret = mcf_ut_open_test_data("MCF_OTA_ut_gid_normal.mcfota", (kal_char *)(ota_file->buff), MCF_MAX_OTA_FILE_SIZE);
3195 if (ret == KAL_FALSE) {
3196 mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_OTA_ut_gid_normal.mcfota");
3197 return KAL_FALSE;
3198 }
3199
3200 MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
3201 } else {
3202 mcf_ut_format_err_str("Do full OTA FAIL!! Fail to take write lock! \r\n");
3203 return KAL_FALSE;
3204 }
3205
3206 mcf_ret = mcf_do_ota_full();
3207 if (mcf_ret != MCF_OTA_R_SUCCESS) {
3208 mcf_ut_format_err_str("Do full OTA FAIL!! ret(%d) \r\n", mcf_ret);
3209 return KAL_FALSE;
3210 }
3211
3212 ret = mcf_check_test_lid_value(NULL);
3213 if (ret == KAL_FALSE) {
3214 mcf_ut_format_err_str("Do full OTA positive test (Both SW verno of file and MD mismatch) FAIL!!\r\n");
3215 return KAL_FALSE;
3216 }
3217
3218 /*
3219 * Do full OTA positive test - SW verno of file mismatch
3220 */
3221 lid_buffer = (kal_uint8 *)get_ctrl_buffer(sizeof(nvram_ef_mcf_test_struct));
3222 kal_mem_set(lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
3223 for(i = 0; i < NVRAM_EF_MCF_TEST_OTA_TOTAL; i++) {
3224 if ( !nvram_external_write_data(NVRAM_EF_MCF_TEST_OTA_LID, 1, lid_buffer, sizeof(nvram_ef_mcf_test_struct)) ) {
3225 printf("Fail to reset NVRAM_EF_MCF_TEST_OTA_LID!!\r\n");
3226 }
3227 }
3228 free_ctrl_buffer_set_null(lid_buffer);
3229
3230 /* Reset updated file information in NVRAM */
3231 lid_buffer = (kal_uint8 *)get_ctrl_buffer(sizeof(nvram_ef_mcf_ota_file_info_struct));
3232 kal_mem_set(lid_buffer, 0, sizeof(nvram_ef_mcf_ota_file_info_struct));
3233 for(i = 0; i < NVRAM_EF_MCF_OTA_FILE_TOTAL; i++) {
3234 if ( !nvram_external_write_data(NVRAM_EF_MCF_OTA_FILE_LID, 1, lid_buffer, sizeof(nvram_ef_mcf_ota_file_info_struct)) ) {
3235 printf("Fail to reset NVRAM_EF_MCF_OTA_FILE_LID!!\r\n");
3236 }
3237 }
3238 free_ctrl_buffer_set_null(lid_buffer);
3239
3240 mcf_ret = mcf_do_ota_full();
3241 if (mcf_ret != MCF_OTA_R_SUCCESS) {
3242 mcf_ut_format_err_str("Do full OTA FAIL!! ret(%d) \r\n", mcf_ret);
3243 return KAL_FALSE;
3244 }
3245
3246 ret = mcf_check_test_lid_value(NULL);
3247 if (ret == KAL_FALSE) {
3248 mcf_ut_format_err_str("Do full OTA positive test (SW verno of file mismatch) FAIL!!\r\n");
3249 return KAL_FALSE;
3250 }
3251
3252 /*
3253 * Do full OTA positive test - SW verno of MD mismatch
3254 */
3255 lid_buffer = (kal_uint8 *)get_ctrl_buffer(sizeof(nvram_ef_mcf_test_struct));
3256 kal_mem_set(lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
3257 for(i = 0; i < NVRAM_EF_MCF_TEST_OTA_TOTAL; i++) {
3258 if ( !nvram_external_write_data(NVRAM_EF_MCF_TEST_OTA_LID, 1, lid_buffer, sizeof(nvram_ef_mcf_test_struct)) ) {
3259 printf("Fail to reset NVRAM_EF_MCF_TEST_OTA_LID!!\r\n");
3260 }
3261 }
3262 free_ctrl_buffer_set_null(lid_buffer);
3263
3264 /* Reset updated MD SW version in NVRAM */
3265 lid_buffer = (kal_uint8 *)get_ctrl_buffer(sizeof(nvram_ef_mcf_sw_info_struct));
3266 kal_mem_set(lid_buffer, 0, sizeof(nvram_ef_mcf_sw_info_struct));
3267 for(i = 0; i < NVRAM_EF_MCF_OTA_FILE_TOTAL; i++) {
3268 if ( !nvram_external_write_data(NVRAM_EF_MCF_SW_INFO_LID, 1, lid_buffer, sizeof(nvram_ef_mcf_sw_info_struct)) ) {
3269 printf("Fail to reset NVRAM_EF_MCF_SW_INFO_LID!!\r\n");
3270 }
3271 }
3272 free_ctrl_buffer_set_null(lid_buffer);
3273
3274 mcf_ret = mcf_do_ota_full();
3275 if (mcf_ret != MCF_OTA_R_SUCCESS) {
3276 mcf_ut_format_err_str("Do full OTA FAIL!! ret(%d) \r\n", mcf_ret);
3277 return KAL_FALSE;
3278 }
3279
3280 ret = mcf_check_test_lid_value(NULL);
3281 if (ret == KAL_FALSE) {
3282 mcf_ut_format_err_str("Do full OTA positive test (SW verno of MD mismatch) FAIL!!\r\n");
3283 return KAL_FALSE;
3284 }
3285
3286 /*
3287 * Do full OTA positive test - SW verno match
3288 */
3289 lid_buffer = (kal_uint8 *)get_ctrl_buffer(sizeof(nvram_ef_mcf_test_struct));
3290 kal_mem_set(lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
3291 for(i = 0; i < NVRAM_EF_MCF_TEST_OTA_TOTAL; i++) {
3292 if ( !nvram_external_write_data(NVRAM_EF_MCF_TEST_OTA_LID, 1, lid_buffer, sizeof(nvram_ef_mcf_test_struct)) ) {
3293 printf("Fail to reset NVRAM_EF_MCF_TEST_OTA_LID!!\r\n");
3294 }
3295 }
3296 free_ctrl_buffer_set_null(lid_buffer);
3297
3298 mcf_ret = mcf_do_ota_full();
3299 if ( (mcf_ret != MCF_OTA_R_SUCCESS) || ((com_Mcf.boot_trace_flag & MCF_BOOT_TRACE_F_NO_NEED) == 0) ) {
3300 mcf_ut_format_err_str("Do full OTA FAIL!! ret(%d) \r\n", mcf_ret);
3301 return KAL_FALSE;
3302 }
3303
3304 lid_buffer = (kal_uint8 *)get_ctrl_buffer(sizeof(nvram_ef_mcf_test_struct));
3305 if ( !nvram_external_read_data(NVRAM_EF_MCF_TEST_OTA_LID, 1, lid_buffer, sizeof(nvram_ef_mcf_test_struct)) ) {
3306 printf("Fail to read NVRAM_EF_MCF_TEST_OTA_LID!!\r\n");
3307 ret = KAL_FALSE;
3308 }
3309
3310 if (kal_mem_cmp(lid_buffer, &empty_buffer, sizeof(nvram_ef_mcf_test_struct)) != 0) {
3311 mcf_ut_format_err_str("Do full OTA positive test (SW verno match) FAIL!!\r\n");
3312 return KAL_FALSE;
3313 }
3314 free_ctrl_buffer_set_null(lid_buffer);
3315
3316 /*
3317 * Do full OTA negative test - invlaid file type
3318 */
3319 lid_buffer = (kal_uint8 *)get_ctrl_buffer(sizeof(nvram_ef_mcf_test_struct));
3320 kal_mem_set(lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
3321 for(i = 0; i < NVRAM_EF_MCF_TEST_OTA_TOTAL; i++) {
3322 if ( !nvram_external_write_data(NVRAM_EF_MCF_TEST_OTA_LID, 1, lid_buffer, sizeof(nvram_ef_mcf_test_struct)) ) {
3323 printf("Fail to reset NVRAM_EF_MCF_TEST_OTA_LID!!\r\n");
3324 }
3325 }
3326 free_ctrl_buffer_set_null(lid_buffer);
3327
3328 MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
3329 if (ota_file) {
3330 strncpy(pFile->file_type, "MCF", 8);
3331 MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
3332 } else {
3333 mcf_ut_format_err_str("Do full OTA FAIL!! Fail to take write lock! \r\n");
3334 return KAL_FALSE;
3335 }
3336
3337 mcf_ret = mcf_do_ota_full();
3338 if ( (mcf_ret != MCF_OTA_R_INVALID_FILE) || ((com_Mcf.boot_trace_flag & MCF_BOOT_TRACE_F_INVALID_FILE) == 0) ) {
3339 mcf_ut_format_err_str("full OTA: invalid file type case FAIL!! ret(%d), boot_flag(%x) \r\n", mcf_ret, com_Mcf.boot_trace_flag);
3340 return KAL_FALSE;
3341 }
3342
3343 lid_buffer = (kal_uint8 *)get_ctrl_buffer(sizeof(nvram_ef_mcf_test_struct));
3344 if ( !nvram_external_read_data(NVRAM_EF_MCF_TEST_OTA_LID, 1, lid_buffer, sizeof(nvram_ef_mcf_test_struct)) ) {
3345 printf("Fail to read NVRAM_EF_MCF_TEST_OTA_LID!!\r\n");
3346 ret = KAL_FALSE;
3347 }
3348
3349 if (kal_mem_cmp(lid_buffer, &empty_buffer, sizeof(nvram_ef_mcf_test_struct)) != 0) {
3350 mcf_ut_format_err_str("Do full OTA positive test (SW verno match) FAIL!!\r\n");
3351 return KAL_FALSE;
3352 }
3353 free_ctrl_buffer_set_null(lid_buffer);
3354
3355 /*
3356 * Do full OTA positive test - 3-Dimension array
3357 */
3358
3359 lid_buffer = (kal_uint8 *)get_ctrl_buffer(sizeof(nvram_ef_mcf_test_struct));
3360 kal_mem_set(lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
3361 for(i = 0; i < NVRAM_EF_MCF_TEST_OTA_TOTAL; i++) {
3362 if ( !nvram_external_write_data(NVRAM_EF_MCF_TEST_OTA_LID, 1, lid_buffer, sizeof(nvram_ef_mcf_test_struct)) ) {
3363 printf("Fail to reset NVRAM_EF_MCF_TEST_OTA_LID!!\r\n");
3364 }
3365 }
3366 free_ctrl_buffer_set_null(lid_buffer);
3367
3368 lid_buffer = (kal_uint8 *)get_ctrl_buffer(sizeof(nvram_ef_mcf_sw_info_struct));
3369 kal_mem_set(lid_buffer, 0, sizeof(nvram_ef_mcf_sw_info_struct));
3370 if ( !nvram_external_write_data(NVRAM_EF_MCF_SW_INFO_LID, 1, lid_buffer, sizeof(nvram_ef_mcf_sw_info_struct)) ) {
3371 printf("Fail to reset NVRAM_EF_MCF_SW_INFO_LID!!\r\n");
3372 }
3373 free_ctrl_buffer_set_null(lid_buffer);
3374
3375 lid_buffer = (kal_uint8 *)get_ctrl_buffer(sizeof(nvram_ef_mcf_ota_file_info_struct));
3376 kal_mem_set(lid_buffer, 0, sizeof(nvram_ef_mcf_ota_file_info_struct));
3377 for(i = 0; i < NVRAM_EF_MCF_OTA_FILE_TOTAL; i++) {
3378 if ( !nvram_external_write_data(NVRAM_EF_MCF_OTA_FILE_LID, 1, lid_buffer, sizeof(nvram_ef_mcf_ota_file_info_struct)) ) {
3379 printf("Fail to reset NVRAM_EF_MCF_OTA_FILE_LID!!\r\n");
3380 }
3381 }
3382 free_ctrl_buffer_set_null(lid_buffer);
3383
3384 MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
3385 if (ota_file) {
3386 ret = mcf_ut_open_test_data("MCF_OTA_3d_array_and_bit_byte_ut_gid_normal.mcfota", (kal_char *)(ota_file->buff), MCF_MAX_OTA_FILE_SIZE);
3387 if (ret == KAL_FALSE) {
3388 mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_OTA_3d_array_and_bit_byte_ut_gid_normal.mcfota");
3389 return KAL_FALSE;
3390 }
3391
3392 MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
3393 } else {
3394 mcf_ut_format_err_str("Do full OTA FAIL!! Fail to take write lock! \r\n");
3395 return KAL_FALSE;
3396 }
3397
3398 mcf_ret = mcf_do_ota_full();
3399 if (mcf_ret != MCF_OTA_R_SUCCESS) {
3400 mcf_ut_format_err_str("Do full OTA FAIL!! ret(%d) \r\n", mcf_ret);
3401 return KAL_FALSE;
3402 }
3403
3404
3405 if ( !nvram_external_read_data(NVRAM_EF_MCF_TEST_OTA_LID, 1, (kal_uint8 *)&nv_lid_buffer, sizeof(nvram_ef_mcf_test_struct)) ) {
3406 printf("Fail to read NVRAM_EF_MCF_TEST_OTA_LID!!\r\n");
3407 ret = KAL_FALSE;
3408 }
3409
3410 if ( kal_mem_cmp((kal_uint8 *)&nv_lid_buffer, &mcf_ut_test_lid_value_new_pattern, sizeof(nvram_ef_mcf_test_struct)) != 0 ) {
3411 ret = KAL_FALSE;
3412 printf("Do full OTA positive test (SW verno match) FAIL!!\r\n");
3413 }
3414
3415
3416 if (ret == KAL_FALSE) {
3417 return ret;
3418 }
3419
3420 /*
3421 * Do full OTA positive test - File with checksum
3422 */
3423 lid_buffer = (kal_uint8 *)get_ctrl_buffer(sizeof(nvram_ef_mcf_sw_info_struct));
3424 kal_mem_set(lid_buffer, 0, sizeof(nvram_ef_mcf_sw_info_struct));
3425 if ( !nvram_external_write_data(NVRAM_EF_MCF_SW_INFO_LID, 1, lid_buffer, sizeof(nvram_ef_mcf_sw_info_struct)) ) {
3426 printf("Fail to reset NVRAM_EF_MCF_SW_INFO_LID!!\r\n");
3427 }
3428 free_ctrl_buffer_set_null(lid_buffer);
3429
3430 lid_buffer = (kal_uint8 *)get_ctrl_buffer(sizeof(nvram_ef_mcf_ota_file_info_struct));
3431 kal_mem_set(lid_buffer, 0, sizeof(nvram_ef_mcf_ota_file_info_struct));
3432 for(i = 0; i < NVRAM_EF_MCF_OTA_FILE_TOTAL; i++) {
3433 if ( !nvram_external_write_data(NVRAM_EF_MCF_OTA_FILE_LID, 1, lid_buffer, sizeof(nvram_ef_mcf_ota_file_info_struct)) ) {
3434 printf("Fail to reset NVRAM_EF_MCF_OTA_FILE_LID!!\r\n");
3435 }
3436 }
3437 free_ctrl_buffer_set_null(lid_buffer);
3438
3439 MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
3440 if (ota_file) {
3441 ret = mcf_ut_open_test_data("MCF_OTA_ut_gid_checksum_normal.mcfota", (kal_char *)(ota_file->buff), MCF_MAX_OTA_FILE_SIZE);
3442 if (ret == KAL_FALSE) {
3443 mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_OTA_ut_gid_checksum_normal.mcfota");
3444 return KAL_FALSE;
3445 }
3446
3447 MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
3448 } else {
3449 mcf_ut_format_err_str("Do full OTA FAIL!! Fail to take write lock! \r\n");
3450 return KAL_FALSE;
3451 }
3452
3453 mcf_ret = mcf_do_ota_full();
3454 if (mcf_ret != MCF_OTA_R_SUCCESS) {
3455 mcf_ut_format_err_str("Do full OTA FAIL!! ret(%d) \r\n", mcf_ret);
3456 return KAL_FALSE;
3457 }
3458
3459 ret = mcf_check_test_lid_value(NULL);
3460 if (ret == KAL_FALSE) {
3461 mcf_ut_format_err_str("Do full OTA positive test (File with checksum) FAIL!!\r\n");
3462 return KAL_FALSE;
3463 }
3464
3465 /*
3466 * Do full OTA positive test - File with checksum and encryption
3467 */
3468 lid_buffer = (kal_uint8 *)get_ctrl_buffer(sizeof(nvram_ef_mcf_sw_info_struct));
3469 kal_mem_set(lid_buffer, 0, sizeof(nvram_ef_mcf_sw_info_struct));
3470 if ( !nvram_external_write_data(NVRAM_EF_MCF_SW_INFO_LID, 1, lid_buffer, sizeof(nvram_ef_mcf_sw_info_struct)) ) {
3471 printf("Fail to reset NVRAM_EF_MCF_SW_INFO_LID!!\r\n");
3472 }
3473 free_ctrl_buffer_set_null(lid_buffer);
3474
3475 lid_buffer = (kal_uint8 *)get_ctrl_buffer(sizeof(nvram_ef_mcf_ota_file_info_struct));
3476 kal_mem_set(lid_buffer, 0, sizeof(nvram_ef_mcf_ota_file_info_struct));
3477 for(i = 0; i < NVRAM_EF_MCF_OTA_FILE_TOTAL; i++) {
3478 if ( !nvram_external_write_data(NVRAM_EF_MCF_OTA_FILE_LID, 1, lid_buffer, sizeof(nvram_ef_mcf_ota_file_info_struct)) ) {
3479 printf("Fail to reset NVRAM_EF_MCF_OTA_FILE_LID!!\r\n");
3480 }
3481 }
3482 free_ctrl_buffer_set_null(lid_buffer);
3483
3484 MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
3485 if (ota_file) {
3486 ret = mcf_ut_open_test_data("MCF_OTA_ut_gid_checksum_and_encryption_normal.mcfota", (kal_char *)(ota_file->buff), MCF_MAX_OTA_FILE_SIZE);
3487 if (ret == KAL_FALSE) {
3488 mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_OTA_ut_gid_checksum_and_encryption_normal.mcfota");
3489 return KAL_FALSE;
3490 }
3491
3492 MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
3493 } else {
3494 mcf_ut_format_err_str("Do full OTA FAIL!! Fail to take write lock! \r\n");
3495 return KAL_FALSE;
3496 }
3497
3498 mcf_ret = mcf_do_ota_full();
3499 if (mcf_ret != MCF_OTA_R_SUCCESS) {
3500 mcf_ut_format_err_str("Do full OTA FAIL!! ret(%d) \r\n", mcf_ret);
3501 return KAL_FALSE;
3502 }
3503
3504 ret = mcf_check_test_lid_value(NULL);
3505 if (ret == KAL_FALSE) {
3506 mcf_ut_format_err_str("Do full OTA positive test (File with checksum) FAIL!!\r\n");
3507 return KAL_FALSE;
3508 }
3509
3510
3511 MCF_UT_PASS();
3512 return KAL_TRUE;
3513}
3514#endif
3515
3516#if !defined(__MTK_TARGET__)
3517kal_bool mcf_ut_gid_do_ota_by_lid(void *p_param, kal_char *p_ret_err_str, kal_uint32 *p_ret_err_str_sz)
3518{
3519 mcf_t *pMcf = mcf_get_instance();
3520 mcf_tool_file_info_t *pFile;
3521 mcf_tool_gid_ota_file_item_t *pItem;
3522 mcf_ota_file_t *ota_file = &(pMcf->ota_file);
3523 nvram_ef_mcf_ota_file_info_struct nv_ota_file;
3524 nvram_ef_mcf_sw_info_struct nv_sw_info;
3525 nvram_ltable_entry_struct lid_info;
3526 nvram_errno_enum nvram_api_ret;
3527 mcf_ota_result_e mcf_ret;
3528 kal_bool ret;
3529
3530 mcf_ut_init();
3531
3532 /* Write MCF OTA file version to NVRAM */
3533 kal_mem_set(&nv_ota_file, 0, sizeof(nvram_ef_mcf_ota_file_info_struct));
3534 strncpy(nv_ota_file.path, MCF_FS_DEFAULT_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN);
3535 strncpy(nv_ota_file.name, MCF_FS_DEFAULT_OTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN);
3536 if ( !nvram_external_write_data(NVRAM_EF_MCF_OTA_FILE_LID, 1, (kal_uint8 *)&nv_ota_file, sizeof(nvram_ef_mcf_ota_file_info_struct)) ) {
3537 mcf_ut_format_err_str("Fail to write MCF OTA file info to NVRAM!!\r\n");
3538 return KAL_FALSE;
3539 }
3540 kal_mem_set(&nv_sw_info, 0, sizeof(nvram_ef_mcf_sw_info_struct));
3541 strncpy(nv_sw_info.last_update_file.sw_version, MCF_UT_SW_VERNO, MCF_FILE_MAX_SW_VERSION_LEN);
3542 strncpy(nv_sw_info.last_update_file.gen_time, MCF_UT_GEN_TIME, MCF_FILE_MAX_GEN_TIME_LEN);
3543 strcpy(nv_sw_info.last_update_file.path, "");
3544 strcpy(nv_sw_info.last_update_file.name, "");
3545 if ( !nvram_external_write_data(NVRAM_EF_MCF_SW_INFO_LID, 1, (kal_uint8 *)&nv_sw_info, sizeof(nvram_ef_mcf_sw_info_struct)) ) {
3546 mcf_ut_format_err_str("Fail to write MCF sw info to NVRAM!!\r\n");
3547 return KAL_FALSE;
3548 }
3549
3550 pFile = (mcf_tool_file_info_t *)(ota_file->buff);
3551 pItem = (mcf_tool_gid_ota_file_item_t *)(ota_file->buff + sizeof(mcf_tool_file_info_t));
3552
3553 /*
3554 * Do OTA by LID positive test
3555 */
3556 MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
3557 if (ota_file) {
3558 ret = mcf_ut_open_test_data("MCF_OTA_ut_gid_normal.mcfota", (kal_char *)(ota_file->buff), MCF_MAX_OTA_FILE_SIZE);
3559 if (ret == KAL_FALSE) {
3560 mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_OTA_ut_gid_normal.mcfota");
3561 return KAL_FALSE;
3562 }
3563
3564 MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
3565 } else {
3566 mcf_ut_format_err_str("Do OTA by LID FAIL!! Fail to take write lock! \r\n");
3567 return KAL_FALSE;
3568 }
3569
3570 nvram_api_ret = nvram_external_get_lid_info(NVRAM_EF_MCF_TEST_OTA_LID, &lid_info);
3571 if (nvram_api_ret != NVRAM_ERRNO_SUCCESS) {
3572 mcf_ut_format_err_str("Fail to get LID information!! lid(%d), nvram_ret(%d)\r\n", NVRAM_EF_MCF_TEST_OTA_LID, nvram_api_ret);
3573 return KAL_FALSE;
3574 }
3575
3576 mcf_ret = mcf_do_ota_by_lid(NVRAM_EF_MCF_TEST_OTA_LID, 1, NVRAM_EF_MCF_TEST_OTA_TOTAL, &lid_info);
3577 if (mcf_ret != MCF_OTA_R_SUCCESS) {
3578 mcf_ut_format_err_str("Do OTA by LID FAIL!! ret(%d) \r\n", mcf_ret);
3579 return KAL_FALSE;
3580 }
3581
3582 ret = mcf_check_test_lid_value(NULL);
3583 if (ret == KAL_FALSE) {
3584 mcf_ut_format_err_str("Do OTA by LID positive test FAIL!!\r\n");
3585 return KAL_FALSE;
3586 }
3587
3588 /*
3589 * Do OTA by LID negative test - invalid OTA attribute
3590 */
3591 lid_info.attr &= ~NVRAM_ATTR_MCF_OTA;
3592 mcf_ret = mcf_do_ota_by_lid(NVRAM_EF_MCF_TEST_OTA_LID, 1, NVRAM_EF_MCF_TEST_OTA_TOTAL, &lid_info);
3593 if (mcf_ret != MCF_OTA_R_INVALID_ATTR) {
3594 mcf_ut_format_err_str("OTA by LID: invalid OTA attribute case FAIL!! ret(%d) \r\n", mcf_ret);
3595 return KAL_FALSE;
3596 }
3597
3598 /*
3599 * Do OTA by LID negative test - invlaid file type
3600 */
3601 MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
3602 if (ota_file) {
3603 strncpy(pFile->file_type, "MCF", 8);
3604 MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
3605 } else {
3606 mcf_ut_format_err_str("Do OTA by LID FAIL!! Fail to take write lock! \r\n");
3607 return KAL_FALSE;
3608 }
3609
3610 mcf_ret = mcf_do_ota_by_lid(NVRAM_EF_MCF_TEST_OTA_LID, 1, NVRAM_EF_MCF_TEST_OTA_TOTAL, &lid_info);
3611 if (mcf_ret != MCF_OTA_R_INVALID_FILE) {
3612 mcf_ut_format_err_str("OTA by LID: invlaid file type case FAIL!! ret(%d) \r\n", mcf_ret);
3613 return KAL_FALSE;
3614 }
3615
3616 MCF_UT_PASS();
3617 return KAL_TRUE;
3618}
3619#endif
3620
3621#if !defined(__MTK_TARGET__)
3622kal_bool mcf_ut_gid_read_ota_buffer(void *p_param, kal_char *p_ret_err_str, kal_uint32 *p_ret_err_str_sz)
3623{
3624 mcf_t *pMcf = mcf_get_instance();
3625 mcf_tool_file_info_t *pFile;
3626 mcf_tool_gid_ota_file_item_t *pItem;
3627 mcf_ota_file_t *ota_file = &(pMcf->ota_file);
3628 nvram_ef_mcf_ota_file_info_struct nv_ota_file;
3629 nvram_ef_mcf_sw_info_struct nv_sw_info;
3630 nvram_ef_mcf_test_struct test_lid_buffer;
3631 mcf_ota_result_e mcf_ret;
3632 kal_bool ret;
3633
3634 mcf_ut_init();
3635
3636 /* Write MCF OTA file version to NVRAM */
3637 kal_mem_set(&nv_ota_file, 0, sizeof(nvram_ef_mcf_ota_file_info_struct));
3638 strncpy(nv_ota_file.path, MCF_FS_DEFAULT_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN);
3639 strncpy(nv_ota_file.name, MCF_FS_DEFAULT_OTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN);
3640 if ( !nvram_external_write_data(NVRAM_EF_MCF_OTA_FILE_LID, 1, (kal_uint8 *)&nv_ota_file, sizeof(nvram_ef_mcf_ota_file_info_struct)) ) {
3641 mcf_ut_format_err_str("Fail to write MCF OTA file info to NVRAM!!\r\n");
3642 return KAL_FALSE;
3643 }
3644 kal_mem_set(&nv_sw_info, 0, sizeof(nvram_ef_mcf_sw_info_struct));
3645 strncpy(nv_sw_info.last_update_file.sw_version, MCF_UT_SW_VERNO, MCF_FILE_MAX_SW_VERSION_LEN);
3646 strncpy(nv_sw_info.last_update_file.gen_time, MCF_UT_GEN_TIME, MCF_FILE_MAX_GEN_TIME_LEN);
3647 strcpy(nv_sw_info.last_update_file.path, "");
3648 strcpy(nv_sw_info.last_update_file.name, "");
3649 if ( !nvram_external_write_data(NVRAM_EF_MCF_SW_INFO_LID, 1, (kal_uint8 *)&nv_sw_info, sizeof(nvram_ef_mcf_sw_info_struct)) ) {
3650 mcf_ut_format_err_str("Fail to write MCF sw info to NVRAM!!\r\n");
3651 return KAL_FALSE;
3652 }
3653
3654 pFile = (mcf_tool_file_info_t *)(ota_file->buff);
3655 pItem = (mcf_tool_gid_ota_file_item_t *)(ota_file->buff + sizeof(mcf_tool_file_info_t));
3656
3657 /*
3658 * Read OTA LID positive test
3659 */
3660 MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
3661 if (ota_file) {
3662 ret = mcf_ut_open_test_data("MCF_OTA_QUERY_ut_gid_normal.mcfota", (kal_char *)(ota_file->buff), MCF_MAX_OTA_FILE_SIZE);
3663 if (ret == KAL_FALSE) {
3664 mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_OTA_QUERY_ut_gid_normal.mcfota");
3665 return KAL_FALSE;
3666 }
3667
3668 MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
3669 } else {
3670 mcf_ut_format_err_str("Read OTA by LID FAIL!! Fail to take write lock! \r\n");
3671 return KAL_FALSE;
3672 }
3673
3674 // Record index 1
3675 kal_mem_set(&test_lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
3676
3677 mcf_ret = mcf_read_ota_buffer(NVRAM_EF_MCF_TEST_OTA_QUERY_LID, 1, (kal_uint8 *)&test_lid_buffer, sizeof(nvram_ef_mcf_test_struct));
3678 if (mcf_ret != MCF_OTA_R_SUCCESS) {
3679 mcf_ut_format_err_str("Read OTA by LID FAIL!! ret(%d) \r\n", mcf_ret);
3680 return KAL_FALSE;
3681 }
3682
3683 ret = mcf_check_test_lid_value((kal_uint8 *)&test_lid_buffer);
3684 if (ret == KAL_FALSE) {
3685 mcf_ut_format_err_str("Read OTA by LID positive test FAIL!!\r\n");
3686 return KAL_FALSE;
3687 }
3688
3689 // Record index 2
3690 kal_mem_set(&test_lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
3691
3692 mcf_ret = mcf_read_ota_buffer(NVRAM_EF_MCF_TEST_OTA_QUERY_LID, 2, (kal_uint8 *)&test_lid_buffer, sizeof(nvram_ef_mcf_test_struct));
3693 if (mcf_ret != MCF_OTA_R_SUCCESS) {
3694 mcf_ut_format_err_str("Read OTA by LID FAIL!! ret(%d) \r\n", mcf_ret);
3695 return KAL_FALSE;
3696 }
3697
3698 ret = mcf_check_test_lid_value((kal_uint8 *)&test_lid_buffer);
3699 if (ret == KAL_FALSE) {
3700 mcf_ut_format_err_str("Read OTA by LID positive test FAIL!!\r\n");
3701 return KAL_FALSE;
3702 }
3703
3704 MCF_UT_PASS();
3705 return KAL_TRUE;
3706}
3707#endif
3708
3709#if !defined(__MTK_TARGET__)
3710kal_bool mcf_ut_gid_read_tlvota_buffer(void *p_param, kal_char *p_ret_err_str, kal_uint32 *p_ret_err_str_sz)
3711{
3712 mcf_t *pMcf = mcf_get_instance();
3713 mcf_tool_file_info_t *pFile;
3714 mcf_tool_gid_tlvota_file_item_t *pItem;
3715 mcf_tlvota_file_t *tlvota_file;
3716 nvram_ef_mcf_tlvota_file_info_struct nv_tlvota_file;
3717 nvram_ef_mcf_test_struct test_lid_buffer;
3718 nvram_ef_mcf_test_struct empty_buffer = {0};
3719 mcf_tlvota_tag_t tlvota_tag;
3720 kal_char tag[16];
3721 mcf_ota_result_e mcf_ret;
3722 kal_bool ret;
3723
3724 mcf_ut_init();
3725
3726 /* Write MCF TLV-OTA file version to NVRAM */
3727 kal_mem_set(&nv_tlvota_file, 0, sizeof(nvram_ef_mcf_tlvota_file_info_struct));
3728 strncpy(nv_tlvota_file.path, MCF_FS_DEFAULT_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN);
3729 strncpy(nv_tlvota_file.name, MCF_FS_DEFAULT_TLVOTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN);
3730 if ( !nvram_external_write_data(NVRAM_EF_MCF_TLVOTA_FILE_LID, 1, (kal_uint8 *)&nv_tlvota_file, sizeof(nvram_ef_mcf_tlvota_file_info_struct)) ) {
3731 mcf_ut_format_err_str("Fail to write MCF TLV-OTA file info to NVRAM!!\r\n");
3732 return KAL_FALSE;
3733 }
3734
3735 /*
3736 * Read TLV-OTA by LID & tag positive test - fully matched tag
3737 */
3738 tlvota_file = &(pMcf->general_tlvota_file);
3739
3740 MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
3741 if (tlvota_file) {
3742 pFile = (mcf_tool_file_info_t *)(tlvota_file->buff);
3743 pItem = (mcf_tool_gid_tlvota_file_item_t *)(tlvota_file->buff + sizeof(mcf_tool_file_info_t));
3744
3745 ret = mcf_ut_open_test_data("MCF_TLVOTA_ICCID_ut_gid_normal.mcfopota", (kal_char *)(tlvota_file->buff), MCF_MAX_TLVOTA_FILE_SIZE);
3746 if (ret == KAL_FALSE) {
3747 mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_TLVOTA_ICCID_ut_gid_normal.mcfopota");
3748 return KAL_FALSE;
3749 }
3750
3751 MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
3752 } else {
3753 mcf_ut_format_err_str("Read TLV-OTA by LID FAIL!! Fail to take write lock! \r\n");
3754 return KAL_FALSE;
3755 }
3756
3757 // NVRAM_EF_MCF_TEST_OTA_LID with SBP_PARTIAL_TAG
3758 kal_mem_set(&test_lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
3759 kal_mem_set(&tlvota_tag, 0, sizeof(mcf_tlvota_tag_t));
3760 tlvota_tag.tag_type = MCF_TLVOTA_TAG_ICCID;
3761 strcpy(tag, SBP_PARTIAL_TAG);
3762 tlvota_tag.tag_len = strlen(tag);
3763 tlvota_tag.tag = tag;
3764
3765 mcf_ret = mcf_read_tlvota_buffer(0, tlvota_tag, NVRAM_EF_MCF_TEST_OTA_LID, (kal_uint8 *)&test_lid_buffer, sizeof(nvram_ef_mcf_test_struct));
3766 if (mcf_ret != MCF_OTA_R_SUCCESS) {
3767 mcf_ut_format_err_str("Read TLV-OTA by LID & tag FAIL!! ret(%d) \r\n", mcf_ret);
3768 return KAL_FALSE;
3769 }
3770
3771 ret = mcf_check_test_lid_value((kal_uint8 *)&test_lid_buffer);
3772 if (ret == KAL_FALSE) {
3773 mcf_ut_format_err_str("Read TLV-OTA by LID & tag positive test (fully matched tag) FAIL!!\r\n");
3774 return KAL_FALSE;
3775 }
3776
3777 /*
3778 * Read TLV-OTA by LID & tag positive test - partially matched tag
3779 * NVRAM_EF_MCF_TEST_OTA_LID with tag SBP_PARTIAL_TAG (12_NA_NA), but user searches tag (12_NA_NA_TEST)
3780 */
3781 kal_mem_set(&test_lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
3782 kal_mem_set(&tlvota_tag, 0, sizeof(mcf_tlvota_tag_t));
3783 tlvota_tag.tag_type = MCF_TLVOTA_TAG_ICCID;
3784 strcpy(tag, "12_NA_NA_TEST");
3785 tlvota_tag.tag_len = strlen(tag);
3786 tlvota_tag.tag = tag;
3787
3788 mcf_ret = mcf_read_tlvota_buffer(0, tlvota_tag, NVRAM_EF_MCF_TEST_OTA_LID, (kal_uint8 *)&test_lid_buffer, sizeof(nvram_ef_mcf_test_struct));
3789 if (mcf_ret != MCF_OTA_R_SUCCESS) {
3790 mcf_ut_format_err_str("Read TLV-OTA by LID & tag FAIL!! ret(%d) \r\n", mcf_ret);
3791 return KAL_FALSE;
3792 }
3793
3794 ret = mcf_check_test_lid_value((kal_uint8 *)&test_lid_buffer);
3795 if (ret == KAL_FALSE) {
3796 mcf_ut_format_err_str("Read TLV-OTA by LID & tag positive test (partially matched tag) FAIL!!\r\n");
3797 return KAL_FALSE;
3798 }
3799
3800 /*
3801 * Read TLV-OTA by LID & tag positive test - no matched tag
3802 * NVRAM_EF_MCF_TEST_OTA_LID with tag SBP_PARTIAL_TAG (12_NA_NA), but user searches tag (12_NA)
3803 */
3804 kal_mem_set(&test_lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
3805 kal_mem_set(&tlvota_tag, 0, sizeof(mcf_tlvota_tag_t));
3806 tlvota_tag.tag_type = MCF_TLVOTA_TAG_ICCID;
3807 strcpy(tag, "12_NA");
3808 tlvota_tag.tag_len = strlen(tag);
3809 tlvota_tag.tag = tag;
3810
3811 mcf_ret = mcf_read_tlvota_buffer(0, tlvota_tag, NVRAM_EF_MCF_TEST_OTA_LID, (kal_uint8 *)&test_lid_buffer, sizeof(nvram_ef_mcf_test_struct));
3812 if (mcf_ret != MCF_OTA_R_SUCCESS) {
3813 mcf_ut_format_err_str("Read TLV-OTA by LID & tag FAIL!! ret(%d) \r\n", mcf_ret);
3814 return KAL_FALSE;
3815 }
3816
3817 if (kal_mem_cmp(&test_lid_buffer, &empty_buffer, sizeof(nvram_ef_mcf_test_struct)) != 0) {
3818 mcf_ut_format_err_str("Read TLV-OTA by LID & tag positive test (no matched tag) FAIL!!\r\n");
3819 return KAL_FALSE;
3820 }
3821
3822 /*
3823 * Read TLV-OTA by LID & tag positive test - item with mismatched verno in file
3824 */
3825 kal_mem_set(&test_lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
3826 kal_mem_set(&tlvota_tag, 0, sizeof(mcf_tlvota_tag_t));
3827 tlvota_tag.tag_type = MCF_TLVOTA_TAG_ICCID;
3828 strcpy(tag, SBP_PARTIAL_TAG);
3829 tlvota_tag.tag_len = strlen(tag);
3830 tlvota_tag.tag = tag;
3831
3832 tlvota_file = &(pMcf->general_tlvota_file);
3833 pItem = (mcf_tool_gid_tlvota_file_item_t *)(tlvota_file->buff + sizeof(mcf_tool_file_info_t));
3834
3835 MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
3836 if (tlvota_file) {
3837 ret = mcf_ut_open_test_data("MCF_TLVOTA_ICCID_ut_gid_normal.mcfopota", (kal_char *)(tlvota_file->buff), MCF_MAX_TLVOTA_FILE_SIZE);
3838 if (ret == KAL_FALSE) {
3839 mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_TLVOTA_ICCID_ut_gid_normal.mcfopota");
3840 return KAL_FALSE;
3841 }
3842
3843 MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
3844 } else {
3845 mcf_ut_format_err_str("Read TLV-OTA by LID FAIL!! Fail to take write lock! \r\n");
3846 return KAL_FALSE;
3847 }
3848
3849 mcf_ret = mcf_read_tlvota_buffer(0, tlvota_tag, NVRAM_EF_MCF_TEST_OTA_LID, (kal_uint8 *)&test_lid_buffer, sizeof(nvram_ef_mcf_test_struct));
3850 if (mcf_ret != MCF_OTA_R_SUCCESS) {
3851 mcf_ut_format_err_str("Read TLV-OTA by LID & tag negative test (item with mismatched verno in file) FAIL!! ret(%d) \r\n", mcf_ret);
3852 return KAL_FALSE;
3853 }
3854
3855 ret = mcf_check_test_lid_value((kal_uint8 *)&test_lid_buffer);
3856 if (ret == KAL_FALSE) {
3857 mcf_ut_format_err_str("Read TLV-OTA by LID & tag positive test (fully matched tag) FAIL!!\r\n");
3858 return KAL_FALSE;
3859 }
3860
3861
3862 MCF_UT_PASS();
3863 return KAL_TRUE;
3864}
3865#endif
3866
3867#if !defined(__MTK_TARGET__)
3868kal_bool mcf_ut_gid_read_tlvota_buffer_sbp(void *p_param, kal_char *p_ret_err_str, kal_uint32 *p_ret_err_str_sz)
3869{
3870 mcf_t *pMcf = mcf_get_instance();
3871 mcf_tool_file_info_t *pFile;
3872 mcf_tool_gid_tlvota_file_item_t *pItem;
3873 mcf_tlvota_file_t *tlvota_file;
3874 nvram_ef_mcf_tlvota_file_info_struct nv_tlvota_file;
3875 nvram_ef_mcf_test_struct test_lid_buffer;
3876 nvram_ef_mcf_test_struct empty_buffer = {0};
3877 mcf_tlvota_sbp_tag_t sbp_tag;
3878 kal_uint8 i;
3879 mcf_ota_result_e mcf_ret;
3880 kal_bool ret;
3881
3882 mcf_ut_init();
3883
3884 /* Write MCF TLV-OTA file version to NVRAM */
3885 kal_mem_set(&nv_tlvota_file, 0, sizeof(nvram_ef_mcf_tlvota_file_info_struct));
3886 strncpy(nv_tlvota_file.path, MCF_FS_DEFAULT_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN);
3887 strncpy(nv_tlvota_file.name, MCF_FS_DEFAULT_TLVOTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN);
3888 if ( !nvram_external_write_data(NVRAM_EF_MCF_TLVOTA_FILE_LID, 1, (kal_uint8 *)&nv_tlvota_file, sizeof(nvram_ef_mcf_tlvota_file_info_struct)) ) {
3889 mcf_ut_format_err_str("Fail to write MCF TLV-OTA file info to NVRAM!!\r\n");
3890 return KAL_FALSE;
3891 }
3892
3893 /*
3894 * Read TLV-OTA by LID & sbp_tag positive test - partially matched tag
3895 * NVRAM_EF_MCF_TEST_OTA_LID with tag SBP_PARTIAL_TAG (12_NA_NA), but user searches SBP_FULL_TAG (12_33_21)
3896 */
3897 /* Fill TLV-OTA file into buffer */
3898 for (i = 0; i < MAX_SIM_NUM; i++) {
3899 tlvota_file = &(pMcf->tlvota_file[i]);
3900
3901 MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
3902 if (tlvota_file) {
3903 pFile = (mcf_tool_file_info_t *)(tlvota_file->buff);
3904 pItem = (mcf_tool_gid_tlvota_file_item_t *)(tlvota_file->buff + sizeof(mcf_tool_file_info_t));
3905
3906 ret = mcf_ut_open_test_data("MCF_TLVOTA_SBP_partial_ut_gid_normal.mcfopota", (kal_char *)(tlvota_file->buff), MCF_MAX_TLVOTA_FILE_SIZE);
3907 if (ret == KAL_FALSE) {
3908 mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_TLVOTA_SBP_partial_ut_gid_normal.mcfopota");
3909 return KAL_FALSE;
3910 }
3911
3912 MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
3913 } else {
3914 mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! Fail to take write lock! \r\n");
3915 return KAL_FALSE;
3916 }
3917 }
3918
3919 // NVRAM_EF_MCF_TEST_OTA_LID with SBP_PARTIAL_TAG
3920 kal_mem_set(&sbp_tag, 0, sizeof(mcf_tlvota_sbp_tag_t));
3921 sbp_tag.sbp_id = SBP_TAG_SBPID;
3922 strncpy(sbp_tag.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
3923 strncpy(sbp_tag.mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
3924
3925 for (i = 0; i < MAX_SIM_NUM; i++) {
3926 kal_mem_set(&test_lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
3927
3928 mcf_ret = mcf_read_tlvota_buffer_sbp_tag(i, sbp_tag, NVRAM_EF_MCF_TEST_OTA_LID, (kal_uint8 *)&test_lid_buffer, sizeof(nvram_ef_mcf_test_struct));
3929 if (mcf_ret != MCF_OTA_R_SUCCESS) {
3930 mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! i(%d), ret(%d) \r\n", i, mcf_ret);
3931 return KAL_FALSE;
3932 }
3933
3934 ret = mcf_check_test_lid_value((kal_uint8 *)&test_lid_buffer);
3935 if (ret == KAL_FALSE) {
3936 mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag positive test (partially matched tag) FAIL!!\r\n");
3937 return KAL_FALSE;
3938 }
3939 }
3940
3941 /*
3942 * Read TLV-OTA by LID & sbp_tag positive test - partially matched tag
3943 * NVRAM_EF_MCF_TEST_OTA_LID with tag SBP_PARTIAL_TAG (NA_NA_NA), but user searches SBP_FULL_TAG (12_33_21)
3944 */
3945 for (i = 0; i < MAX_SIM_NUM; i++) {
3946 tlvota_file = &(pMcf->tlvota_file[i]);
3947
3948 MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
3949 if (tlvota_file) {
3950 ret = mcf_ut_open_test_data("MCF_TLVOTA_SBP_NA_ut_gid_normal.mcfopota", (kal_char *)(tlvota_file->buff), MCF_MAX_TLVOTA_FILE_SIZE);
3951 if (ret == KAL_FALSE) {
3952 mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_TLVOTA_SBP_NA_ut_gid_normal.mcfopota");
3953 return KAL_FALSE;
3954 }
3955
3956 MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
3957 } else {
3958 mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! Fail to take write lock! \r\n");
3959 return KAL_FALSE;
3960 }
3961 }
3962
3963 kal_mem_set(&sbp_tag, 0, sizeof(mcf_tlvota_sbp_tag_t));
3964 sbp_tag.sbp_id = SBP_TAG_SBPID;
3965 strncpy(sbp_tag.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
3966 strncpy(sbp_tag.mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
3967
3968 for (i = 0; i < MAX_SIM_NUM; i++) {
3969 kal_mem_set(&test_lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
3970
3971 mcf_ret = mcf_read_tlvota_buffer_sbp_tag(i, sbp_tag, NVRAM_EF_MCF_TEST_OTA_LID, (kal_uint8 *)&test_lid_buffer, sizeof(nvram_ef_mcf_test_struct));
3972 if (mcf_ret != MCF_OTA_R_SUCCESS) {
3973 mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! ret(%d) \r\n", mcf_ret);
3974 return KAL_FALSE;
3975 }
3976
3977 ret = mcf_check_test_lid_value((kal_uint8 *)&test_lid_buffer);
3978 if (ret == KAL_FALSE) {
3979 mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag positive test (partially matched tag) FAIL!!\r\n");
3980 return KAL_FALSE;
3981 }
3982 }
3983
3984 /*
3985 * Read TLV-OTA by LID & sbp_tag positive test - fully matched tag
3986 * NVRAM_EF_MCF_TEST_OTA_LID with tag SBP_FULL_TAG (12_33_21), and user searches SBP_FULL_TAG (12_33_21)
3987 */
3988 for (i = 0; i < MAX_SIM_NUM; i++) {
3989 tlvota_file = &(pMcf->tlvota_file[i]);
3990
3991 MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
3992 if (tlvota_file) {
3993 ret = mcf_ut_open_test_data("MCF_TLVOTA_SBP_full_ut_gid_normal.mcfopota", (kal_char *)(tlvota_file->buff), MCF_MAX_TLVOTA_FILE_SIZE);
3994 if (ret == KAL_FALSE) {
3995 mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_TLVOTA_SBP_full_ut_gid_normal.mcfopota");
3996 return KAL_FALSE;
3997 }
3998
3999 MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
4000 } else {
4001 mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! Fail to take write lock! \r\n");
4002 return KAL_FALSE;
4003 }
4004 }
4005
4006 kal_mem_set(&sbp_tag, 0, sizeof(mcf_tlvota_sbp_tag_t));
4007 sbp_tag.sbp_id = SBP_TAG_SBPID;
4008 strncpy(sbp_tag.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
4009 strncpy(sbp_tag.mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
4010
4011 for (i = 0; i < MAX_SIM_NUM; i++) {
4012 kal_mem_set(&test_lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
4013
4014 mcf_ret = mcf_read_tlvota_buffer_sbp_tag(i, sbp_tag, NVRAM_EF_MCF_TEST_OTA_LID, (kal_uint8 *)&test_lid_buffer, sizeof(nvram_ef_mcf_test_struct));
4015 if (mcf_ret != MCF_OTA_R_SUCCESS) {
4016 mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! ret(%d) \r\n", mcf_ret);
4017 return KAL_FALSE;
4018 }
4019
4020 ret = mcf_check_test_lid_value((kal_uint8 *)&test_lid_buffer);
4021 if (ret == KAL_FALSE) {
4022 mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag positive test (fully matched tag) FAIL!!\r\n");
4023 return KAL_FALSE;
4024 }
4025 }
4026
4027 /*
4028 * Read TLV-OTA by LID & sbp_tag positive test - no matched tag
4029 * NVRAM_EF_MCF_TEST_OTA_LID with tag SBP_FULL_TAG (12_33_21), and user searches SBP_FULL_TAG (12_33_NA)
4030 */
4031 for (i = 0; i < MAX_SIM_NUM; i++) {
4032 tlvota_file = &(pMcf->tlvota_file[i]);
4033
4034 MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
4035 if (tlvota_file) {
4036 ret = mcf_ut_open_test_data("MCF_TLVOTA_SBP_full_ut_gid_normal.mcfopota", (kal_char *)(tlvota_file->buff), MCF_MAX_TLVOTA_FILE_SIZE);
4037 if (ret == KAL_FALSE) {
4038 mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_TLVOTA_SBP_full_ut_gid_normal.mcfopota");
4039 return KAL_FALSE;
4040 }
4041
4042 MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
4043 } else {
4044 mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! Fail to take write lock! \r\n");
4045 return KAL_FALSE;
4046 }
4047 }
4048
4049 kal_mem_set(&sbp_tag, 0, sizeof(mcf_tlvota_sbp_tag_t));
4050 sbp_tag.sbp_id = SBP_TAG_SBPID;
4051 strncpy(sbp_tag.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
4052 strncpy(sbp_tag.mnc, "", MAX_MNC_STR_LEN);
4053
4054 for (i = 0; i < MAX_SIM_NUM; i++) {
4055 kal_mem_set(&test_lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
4056
4057 mcf_ret = mcf_read_tlvota_buffer_sbp_tag(i, sbp_tag, NVRAM_EF_MCF_TEST_OTA_LID, (kal_uint8 *)&test_lid_buffer, sizeof(nvram_ef_mcf_test_struct));
4058 if (mcf_ret != MCF_OTA_R_SUCCESS) {
4059 mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! ret(%d) \r\n", mcf_ret);
4060 return KAL_FALSE;
4061 }
4062
4063 if (kal_mem_cmp(&test_lid_buffer, &empty_buffer, sizeof(nvram_ef_mcf_test_struct)) != 0) {
4064 mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag positive test (no matched tag) FAIL!!\r\n");
4065 return KAL_FALSE;
4066 }
4067 }
4068
4069 /*
4070 * Read TLV-OTA by LID & sbp_tag positive test - no matched tag
4071 * NVRAM_EF_MCF_TEST_OTA_LID with tag SBP_PARTIAL_TAG_NO_SBPID (NA_33_21), and user searches SBP_FULL_TAG (12_33_21)
4072 */
4073 for (i = 0; i < MAX_SIM_NUM; i++) {
4074 tlvota_file = &(pMcf->tlvota_file[i]);
4075
4076 MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
4077 if (tlvota_file) {
4078 ret = mcf_ut_open_test_data("MCF_TLVOTA_SBP_no_sbpid_ut_gid_normal.mcfopota", (kal_char *)(tlvota_file->buff), MCF_MAX_TLVOTA_FILE_SIZE);
4079 if (ret == KAL_FALSE) {
4080 mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_TLVOTA_SBP_no_sbpid_ut_gid_normal.mcfopota");
4081 return KAL_FALSE;
4082 }
4083
4084 MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
4085 } else {
4086 mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! Fail to take write lock! \r\n");
4087 return KAL_FALSE;
4088 }
4089 }
4090
4091 kal_mem_set(&sbp_tag, 0, sizeof(mcf_tlvota_sbp_tag_t));
4092 sbp_tag.sbp_id = SBP_TAG_SBPID;
4093 strncpy(sbp_tag.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
4094 strncpy(sbp_tag.mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
4095
4096 for (i = 0; i < MAX_SIM_NUM; i++) {
4097 kal_mem_set(&test_lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
4098
4099 mcf_ret = mcf_read_tlvota_buffer_sbp_tag(i, sbp_tag, NVRAM_EF_MCF_TEST_OTA_LID, (kal_uint8 *)&test_lid_buffer, sizeof(nvram_ef_mcf_test_struct));
4100 if (mcf_ret != MCF_OTA_R_SUCCESS) {
4101 mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! ret(%d) \r\n", mcf_ret);
4102 return KAL_FALSE;
4103 }
4104
4105 if (kal_mem_cmp(&test_lid_buffer, &empty_buffer, sizeof(nvram_ef_mcf_test_struct)) != 0) {
4106 mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag positive test (no matched tag) FAIL!!\r\n");
4107 return KAL_FALSE;
4108 }
4109 }
4110
4111 /*
4112 * Read TLV-OTA by LID & sbp_tag positive test - no matched tag
4113 * NVRAM_EF_MCF_TEST_OTA_LID with tag SBP_FULL_TAG (12_33_21), and user searches SBP_FULL_TAG (12_NA_NA)
4114 */
4115 for (i = 0; i < MAX_SIM_NUM; i++) {
4116 tlvota_file = &(pMcf->tlvota_file[i]);
4117
4118 MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
4119 if (tlvota_file) {
4120 ret = mcf_ut_open_test_data("MCF_TLVOTA_SBP_full_ut_gid_normal.mcfopota", (kal_char *)(tlvota_file->buff), MCF_MAX_TLVOTA_FILE_SIZE);
4121 if (ret == KAL_FALSE) {
4122 mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_TLVOTA_SBP_full_ut_gid_normal.mcfopota");
4123 return KAL_FALSE;
4124 }
4125
4126 MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
4127 } else {
4128 mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! Fail to take write lock! \r\n");
4129 return KAL_FALSE;
4130 }
4131 }
4132
4133 kal_mem_set(&sbp_tag, 0, sizeof(mcf_tlvota_sbp_tag_t));
4134 sbp_tag.sbp_id = SBP_TAG_SBPID;
4135 strncpy(sbp_tag.mcc, "", MAX_MCC_STR_LEN);
4136 strncpy(sbp_tag.mnc, "", MAX_MNC_STR_LEN);
4137
4138 for (i = 0; i < MAX_SIM_NUM; i++) {
4139 kal_mem_set(&test_lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
4140
4141 mcf_ret = mcf_read_tlvota_buffer_sbp_tag(i, sbp_tag, NVRAM_EF_MCF_TEST_OTA_LID, (kal_uint8 *)&test_lid_buffer, sizeof(nvram_ef_mcf_test_struct));
4142 if (mcf_ret != MCF_OTA_R_SUCCESS) {
4143 mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! ret(%d) \r\n", mcf_ret);
4144 return KAL_FALSE;
4145 }
4146
4147 if (kal_mem_cmp(&test_lid_buffer, &empty_buffer, sizeof(nvram_ef_mcf_test_struct)) != 0) {
4148 mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag positive test (no matched tag) FAIL!!\r\n");
4149 return KAL_FALSE;
4150 }
4151 }
4152
4153 /*
4154 * Read TLV-OTA by LID & sbp_tag positive test - partially matched tag
4155 * NVRAM_EF_MCF_TEST_OTA_LID with tag SBP_PARTIAL_TAG_NO_SBPID (NA_33_21), and user searches SBP_PARTIAL_TAG_NO_SBPID (NA_33_21)
4156 */
4157 for (i = 0; i < MAX_SIM_NUM; i++) {
4158 tlvota_file = &(pMcf->tlvota_file[i]);
4159
4160 MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
4161 if (tlvota_file) {
4162 ret = mcf_ut_open_test_data("MCF_TLVOTA_SBP_no_sbpid_ut_gid_normal.mcfopota", (kal_char *)(tlvota_file->buff), MCF_MAX_TLVOTA_FILE_SIZE);
4163 if (ret == KAL_FALSE) {
4164 mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_TLVOTA_SBP_no_sbpid_ut_gid_normal.mcfopota");
4165 return KAL_FALSE;
4166 }
4167
4168 MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
4169 } else {
4170 mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! Fail to take write lock! \r\n");
4171 return KAL_FALSE;
4172 }
4173 }
4174
4175 kal_mem_set(&sbp_tag, 0, sizeof(mcf_tlvota_sbp_tag_t));
4176 sbp_tag.sbp_id = SBP_ID_INVALID;
4177 strncpy(sbp_tag.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
4178 strncpy(sbp_tag.mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
4179
4180 for (i = 0; i < MAX_SIM_NUM; i++) {
4181 kal_mem_set(&test_lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
4182
4183 mcf_ret = mcf_read_tlvota_buffer_sbp_tag(i, sbp_tag, NVRAM_EF_MCF_TEST_OTA_LID, (kal_uint8 *)&test_lid_buffer, sizeof(nvram_ef_mcf_test_struct));
4184 if (mcf_ret != MCF_OTA_R_SUCCESS) {
4185 mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! ret(%d) \r\n", mcf_ret);
4186 return KAL_FALSE;
4187 }
4188
4189 if (kal_mem_cmp(&test_lid_buffer, &empty_buffer, sizeof(nvram_ef_mcf_test_struct)) != 0) {
4190 mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag positive test (no matched tag) FAIL!!\r\n");
4191 return KAL_FALSE;
4192 }
4193 }
4194
4195 /*
4196 * Read TLV-OTA by LID & sbp_tag positive test - partially matched tag
4197 * NVRAM_EF_MCF_TEST_OTA_LID with tag SBP_PARTIAL_TAG (12_NA_NA), and user searches SBP_PARTIAL_TAG (12_NA_NA)
4198 */
4199 for (i = 0; i < MAX_SIM_NUM; i++) {
4200 tlvota_file = &(pMcf->tlvota_file[i]);
4201
4202 MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
4203 if (tlvota_file) {
4204 ret = mcf_ut_open_test_data("MCF_OPOTA_ut_gid_3d_array_bit_byte_SBP_partial.mcfopota", (kal_char *)(tlvota_file->buff), MCF_MAX_TLVOTA_FILE_SIZE);
4205 if (ret == KAL_FALSE) {
4206 mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_OPOTA_ut_gid_3d_array_bit_byte_SBP_partial.mcfopota");
4207 return KAL_FALSE;
4208 }
4209
4210 MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
4211 } else {
4212 mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! Fail to take write lock! \r\n");
4213 return KAL_FALSE;
4214 }
4215 }
4216
4217 kal_mem_set(&sbp_tag, 0, sizeof(mcf_tlvota_sbp_tag_t));
4218 sbp_tag.sbp_id = SBP_TAG_SBPID;
4219 strncpy(sbp_tag.mcc, "NA", MAX_MCC_STR_LEN);
4220 strncpy(sbp_tag.mnc, "NA", MAX_MNC_STR_LEN);
4221
4222 for (i = 0; i < MAX_SIM_NUM; i++) {
4223 kal_mem_set(&test_lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
4224
4225 mcf_ret = mcf_read_tlvota_buffer_sbp_tag(i, sbp_tag, NVRAM_EF_MCF_TEST_OTA_LID, (kal_uint8 *)&test_lid_buffer, sizeof(nvram_ef_mcf_test_struct));
4226 if (mcf_ret != MCF_OTA_R_SUCCESS) {
4227 mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! ret(%d) \r\n", mcf_ret);
4228 return KAL_FALSE;
4229 }
4230
4231 if (kal_mem_cmp(&test_lid_buffer, &mcf_ut_test_lid_value_new_pattern, sizeof(nvram_ef_mcf_test_struct)) != 0) {
4232 mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag positive test (no matched tag) FAIL!!\r\n");
4233 return KAL_FALSE;
4234 }
4235 }
4236
4237 /*
4238 * General OPOTA INVALID_FILE / OPOTA SUCCESS
4239 * NVRAM_EF_MCF_TEST_OTA_LID with tag SBP_PARTIAL_TAG (12_NA_NA), and user searches SBP_PARTIAL_TAG (12_NA_NA)
4240 */
4241 tlvota_file = &(pMcf->general_tlvota_file);
4242 kal_mem_set(tlvota_file->buff, 0, MCF_MAX_TLVOTA_FILE_SIZE);
4243
4244 for (i = 0; i < MAX_SIM_NUM; i++) {
4245 tlvota_file = &(pMcf->tlvota_file[i]);
4246
4247 MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
4248 if (tlvota_file) {
4249 ret = mcf_ut_open_test_data("MCF_TLVOTA_SBP_partial_ut_gid_normal.mcfopota", (kal_char *)(tlvota_file->buff), MCF_MAX_TLVOTA_FILE_SIZE);
4250 if (ret == KAL_FALSE) {
4251 mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_TLVOTA_SBP_partial_ut_gid_normal.mcfopota");
4252 return KAL_FALSE;
4253 }
4254
4255 MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
4256 } else {
4257 mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! Fail to take write lock! \r\n");
4258 return KAL_FALSE;
4259 }
4260 }
4261
4262 kal_mem_set(&sbp_tag, 0, sizeof(mcf_tlvota_sbp_tag_t));
4263 sbp_tag.sbp_id = SBP_TAG_SBPID;
4264 strncpy(sbp_tag.mcc, "NA", MAX_MCC_STR_LEN);
4265 strncpy(sbp_tag.mnc, "NA", MAX_MNC_STR_LEN);
4266
4267 for (i = 0; i < MAX_SIM_NUM; i++) {
4268 kal_mem_set(&test_lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
4269
4270 mcf_ret = mcf_read_tlvota_buffer_sbp_tag(i, sbp_tag, NVRAM_EF_MCF_TEST_OTA_LID, (kal_uint8 *)&test_lid_buffer, sizeof(nvram_ef_mcf_test_struct));
4271 if (mcf_ret != MCF_OTA_R_SUCCESS) {
4272 mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! ret(%d) \r\n", mcf_ret);
4273 return KAL_FALSE;
4274 }
4275
4276 ret = mcf_check_test_lid_value((kal_uint8 *)&test_lid_buffer);
4277 if (ret == KAL_FALSE) {
4278 mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag positive test (partially matched tag) FAIL!!\r\n");
4279 return KAL_FALSE;
4280 }
4281 }
4282
4283 /*
4284 * General OPOTA SUCCESS / OPOTA INVALID_FILE
4285 * NVRAM_EF_MCF_TEST_OTA_LID with tag SBP_PARTIAL_TAG_NO_SBPID (NA_33_21), and user searches SBP_FULL_TAG (NA_33_21)
4286 */
4287 for (i = 0; i < MAX_SIM_NUM; i++) {
4288 tlvota_file = &(pMcf->tlvota_file[i]);
4289 kal_mem_set(tlvota_file->buff, 0, MCF_MAX_TLVOTA_FILE_SIZE);
4290 }
4291 tlvota_file = &(pMcf->general_tlvota_file);
4292
4293 MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
4294 if (tlvota_file) {
4295 ret = mcf_ut_open_test_data("MCF_TLVOTA_SBP_no_sbpid_ut_gid_normal.mcfopota", (kal_char *)(tlvota_file->buff), MCF_MAX_TLVOTA_FILE_SIZE);
4296 if (ret == KAL_FALSE) {
4297 mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_TLVOTA_SBP_no_sbpid_ut_gid_normal.mcfopota");
4298 return KAL_FALSE;
4299 }
4300
4301 MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
4302 } else {
4303 mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! Fail to take write lock! \r\n");
4304 return KAL_FALSE;
4305 }
4306
4307
4308 kal_mem_set(&sbp_tag, 0, sizeof(mcf_tlvota_sbp_tag_t));
4309 sbp_tag.sbp_id = SBP_ID_INVALID;
4310 strncpy(sbp_tag.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
4311 strncpy(sbp_tag.mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
4312
4313
4314 kal_mem_set(&test_lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
4315
4316 mcf_ret = mcf_read_tlvota_buffer_sbp_tag(0, sbp_tag, NVRAM_EF_MCF_TEST_OTA_LID, (kal_uint8 *)&test_lid_buffer, sizeof(nvram_ef_mcf_test_struct));
4317 if (mcf_ret != MCF_OTA_R_SUCCESS) {
4318 mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! ret(%d) \r\n", mcf_ret);
4319 return KAL_FALSE;
4320 }
4321
4322 ret = mcf_check_test_lid_value((kal_uint8 *)&test_lid_buffer);
4323 if (ret == KAL_FALSE) {
4324 mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag positive test (partially matched tag) FAIL!!\r\n");
4325 return KAL_FALSE;
4326 }
4327
4328
4329 MCF_UT_PASS();
4330 return KAL_TRUE;
4331}
4332#endif
4333
4334#if !defined(__MTK_TARGET__)
4335kal_bool mcf_ut_gid_reset_lid_full(void *p_param, kal_char *p_ret_err_str, kal_uint32 *p_ret_err_str_sz)
4336{
4337 mcf_t *pMcf = mcf_get_instance();
4338 mcf_ota_file_t *ota_file = &(pMcf->ota_file);
4339 mcf_tool_file_info_t *pFile = (mcf_tool_file_info_t *)(ota_file->buff);
4340 nvram_ef_mcf_ota_file_info_struct nv_ota_file;
4341 nvram_ef_mcf_sw_info_struct nv_sw_info;
4342 nvram_ef_mcf_test_struct empty_buffer = {0};
4343 mcf_ota_result_e mcf_ret;
4344 kal_bool ret;
4345 nvram_ef_mcf_test_struct test_lid_buffer;
4346 kal_uint8 *lid_buffer;
4347
4348 mcf_ut_init();
4349
4350 /* Write MCF OTA file version to NVRAM */
4351 kal_mem_set(&nv_ota_file, 0, sizeof(nvram_ef_mcf_ota_file_info_struct));
4352 strncpy(nv_ota_file.path, MCF_FS_DEFAULT_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN);
4353 strncpy(nv_ota_file.name, MCF_FS_DEFAULT_OTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN);
4354 if ( !nvram_external_write_data(NVRAM_EF_MCF_OTA_FILE_LID, 1, (kal_uint8 *)&nv_ota_file, sizeof(nvram_ef_mcf_ota_file_info_struct)) ) {
4355 mcf_ut_format_err_str("Fail to write MCF OTA file info to NVRAM!!\r\n");
4356 return KAL_FALSE;
4357 }
4358 kal_mem_set(&nv_sw_info, 0, sizeof(nvram_ef_mcf_sw_info_struct));
4359 strncpy(nv_sw_info.last_update_file.sw_version, MCF_UT_SW_VERNO, MCF_FILE_MAX_SW_VERSION_LEN);
4360 strncpy(nv_sw_info.last_update_file.gen_time, MCF_UT_GEN_TIME, MCF_FILE_MAX_GEN_TIME_LEN);
4361 strcpy(nv_sw_info.last_update_file.path, "");
4362 strcpy(nv_sw_info.last_update_file.name, "");
4363 if ( !nvram_external_write_data(NVRAM_EF_MCF_SW_INFO_LID, 1, (kal_uint8 *)&nv_sw_info, sizeof(nvram_ef_mcf_sw_info_struct)) ) {
4364 mcf_ut_format_err_str("Fail to write MCF sw info to NVRAM!!\r\n");
4365 return KAL_FALSE;
4366 }
4367
4368 /*
4369 * Reset all LID positive
4370 */
4371 MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
4372 if (ota_file) {
4373 ret = mcf_ut_open_test_data("MCF_OTA_ut_gid_normal.mcfota", (kal_char *)(ota_file->buff), MCF_MAX_OTA_FILE_SIZE);
4374 if (ret == KAL_FALSE) {
4375 mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_OTA_ut_gid_normal.mcfota");
4376 return KAL_FALSE;
4377 }
4378
4379 MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
4380 } else {
4381 mcf_ut_format_err_str("Reset LID FAIL!! Fail to take write lock! \r\n");
4382 return KAL_FALSE;
4383 }
4384
4385 mcf_ret = mcf_do_ota_full();
4386 if (mcf_ret != MCF_OTA_R_SUCCESS) {
4387 mcf_ut_format_err_str("Reset LID FAIL!! ret(%d) \r\n", mcf_ret);
4388 return KAL_FALSE;
4389 }
4390
4391 ret = mcf_check_test_lid_value(NULL);
4392 if (ret == KAL_FALSE) {
4393 mcf_ut_format_err_str("Reset LID FAIL!!\r\n");
4394 return KAL_FALSE;
4395 }
4396
4397 MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
4398 if (ota_file) {
4399 ret = mcf_ut_open_test_data("MCF_OTA_QUERY_ut_gid_normal.mcfota", (kal_char *)(ota_file->buff), MCF_MAX_OTA_FILE_SIZE);
4400 if (ret == KAL_FALSE) {
4401 mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_OTA_QUERY_ut_gid_normal.mcfota");
4402 return KAL_FALSE;
4403 }
4404
4405 MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
4406 } else {
4407 mcf_ut_format_err_str("Read OTA by LID FAIL!! Fail to take write lock! \r\n");
4408 return KAL_FALSE;
4409 }
4410
4411
4412 mcf_ret = mcf_do_ota_full();
4413 if (mcf_ret != MCF_OTA_R_SUCCESS) {
4414 mcf_ut_format_err_str("Reset LID FAIL!! ret(%d) \r\n", mcf_ret);
4415 return KAL_FALSE;
4416 }
4417
4418
4419 lid_buffer = (kal_uint8 *)get_ctrl_buffer(sizeof(nvram_ef_mcf_test_struct));
4420 if ( !nvram_external_read_data(NVRAM_EF_MCF_TEST_OTA_LID, 1, lid_buffer, sizeof(nvram_ef_mcf_test_struct)) ) {
4421 printf("Fail to read NVRAM_EF_MCF_TEST_OTA_LID!!\r\n");
4422 ret = KAL_FALSE;
4423 }
4424
4425 if (kal_mem_cmp(lid_buffer, &empty_buffer, sizeof(nvram_ef_mcf_test_struct)) != 0) {
4426 mcf_ut_format_err_str("Reset LID record 1 FAIL!!\r\n");
4427 return KAL_FALSE;
4428 }
4429
4430 free_ctrl_buffer_set_null(lid_buffer);
4431
4432
4433 kal_mem_set(&test_lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
4434
4435 mcf_ret = mcf_read_ota_buffer(NVRAM_EF_MCF_TEST_OTA_QUERY_LID, 1, (kal_uint8 *)&test_lid_buffer, sizeof(nvram_ef_mcf_test_struct));
4436 if (mcf_ret != MCF_OTA_R_SUCCESS) {
4437 mcf_ut_format_err_str("Reset LID Read OTA by LID FAIL!! ret(%d) \r\n", mcf_ret);
4438 return KAL_FALSE;
4439 }
4440
4441
4442 ret = mcf_check_test_lid_value((kal_uint8 *)&test_lid_buffer);
4443 if (ret == KAL_FALSE) {
4444 mcf_ut_format_err_str("Reset LID New OTA apply FAIL!!\r\n");
4445 return KAL_FALSE;
4446 }
4447
4448 /*
4449 * Reset all LID negative
4450 */
4451 MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
4452 if (ota_file) {
4453 ret = mcf_ut_open_test_data("MCF_OTA_ut_gid_normal.mcfota", (kal_char *)(ota_file->buff), MCF_MAX_OTA_FILE_SIZE);
4454 if (ret == KAL_FALSE) {
4455 mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_OTA_ut_gid_normal.mcfota");
4456 return KAL_FALSE;
4457 }
4458
4459 MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
4460 } else {
4461 mcf_ut_format_err_str("Reset LID FAIL!! Fail to take write lock! \r\n");
4462 return KAL_FALSE;
4463 }
4464
4465 pFile->operation_mask |= MCF_FILE_OP_NOT_RESET_LID;
4466
4467 mcf_ret = mcf_do_ota_full();
4468 if (mcf_ret != MCF_OTA_R_SUCCESS) {
4469 mcf_ut_format_err_str("Reset LID FAIL!! ret(%d) \r\n", mcf_ret);
4470 return KAL_FALSE;
4471 }
4472
4473 ret = mcf_check_test_lid_value(NULL);
4474 if (ret == KAL_FALSE) {
4475 mcf_ut_format_err_str("Reset LID FAIL!!\r\n");
4476 return KAL_FALSE;
4477 }
4478
4479 MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
4480 if (ota_file) {
4481 ret = mcf_ut_open_test_data("MCF_OTA_QUERY_ut_gid_normal.mcfota", (kal_char *)(ota_file->buff), MCF_MAX_OTA_FILE_SIZE);
4482 if (ret == KAL_FALSE) {
4483 mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_OTA_QUERY_ut_gid_normal.mcfota");
4484 return KAL_FALSE;
4485 }
4486
4487 MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
4488 } else {
4489 mcf_ut_format_err_str("Read OTA by LID FAIL!! Fail to take write lock! \r\n");
4490 return KAL_FALSE;
4491 }
4492
4493 pFile->operation_mask |= MCF_FILE_OP_NOT_RESET_LID;
4494
4495 mcf_ret = mcf_do_ota_full();
4496 if (mcf_ret != MCF_OTA_R_SUCCESS) {
4497 mcf_ut_format_err_str("Reset LID FAIL!! ret(%d) \r\n", mcf_ret);
4498 return KAL_FALSE;
4499 }
4500
4501 ret = mcf_check_test_lid_value(NULL);
4502 if (ret == KAL_FALSE) {
4503 mcf_ut_format_err_str("Reset LID New OTA apply FAIL!!\r\n");
4504 return KAL_FALSE;
4505 }
4506
4507
4508 kal_mem_set(&test_lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
4509
4510 mcf_ret = mcf_read_ota_buffer(NVRAM_EF_MCF_TEST_OTA_QUERY_LID, 1, (kal_uint8 *)&test_lid_buffer, sizeof(nvram_ef_mcf_test_struct));
4511 if (mcf_ret != MCF_OTA_R_SUCCESS) {
4512 mcf_ut_format_err_str("Reset LID Read OTA by LID FAIL!! ret(%d) \r\n", mcf_ret);
4513 return KAL_FALSE;
4514 }
4515
4516
4517 ret = mcf_check_test_lid_value((kal_uint8 *)&test_lid_buffer);
4518 if (ret == KAL_FALSE) {
4519 mcf_ut_format_err_str("Reset LID New OTA apply FAIL!!\r\n");
4520 return KAL_FALSE;
4521 }
4522
4523 MCF_UT_PASS();
4524 return KAL_TRUE;
4525}
4526#endif
4527
4528kal_bool mcf_ut_em_update_req_hdlr(void *p_param, kal_char *p_ret_err_str, kal_uint32 *p_ret_err_str_sz)
4529{
4530 mcf_t *pMcf = mcf_get_instance();
4531 l4cps_em_update_req_struct req;
4532 kal_bool ret;
4533
4534 mcf_ut_init();
4535
4536 /*
4537 * EM update request handler positive test - ON
4538 */
4539 com_Mcf.is_em_on = KAL_FALSE;
4540 req.em_src = EM_FROM_ELT;
4541 req.info_request[MCF_EM_OTA_FILE_INFO] = EM_ON;
4542
4543 ret = mcf_em_update_req_hdlr((local_para_struct *)&req);
4544 if ( (ret != KAL_TRUE) && (com_Mcf.is_em_on != KAL_TRUE) ) {
4545 mcf_ut_format_err_str("EM update request handler positive test (ON) FAIL!! \r\n");
4546 return KAL_FALSE;
4547 }
4548
4549 /*
4550 * EM update request handler positive test - OFF
4551 */
4552 com_Mcf.is_em_on = KAL_TRUE;
4553 req.em_src = EM_FROM_ELT;
4554 req.info_request[MCF_EM_OTA_FILE_INFO] = EM_OFF;
4555
4556 ret = mcf_em_update_req_hdlr((local_para_struct *)&req);
4557 if ( (ret != KAL_TRUE) && (com_Mcf.is_em_on != KAL_FALSE) ) {
4558 mcf_ut_format_err_str("EM update request handler positive test (OFF) FAIL!! \r\n");
4559 return KAL_FALSE;
4560 }
4561
4562 /*
4563 * EM update request handler positive test - No change
4564 */
4565 com_Mcf.is_em_on = KAL_TRUE;
4566 req.em_src = EM_FROM_ELT;
4567 req.info_request[MCF_EM_OTA_FILE_INFO] = EM_NC;
4568
4569 ret = mcf_em_update_req_hdlr((local_para_struct *)&req);
4570 if ( (ret != KAL_TRUE) && (com_Mcf.is_em_on != KAL_TRUE) ) {
4571 mcf_ut_format_err_str("EM update request handler positive test (No change) FAIL!! \r\n");
4572 return KAL_FALSE;
4573 }
4574
4575 /*
4576 * EM update request handler positive test - Invalid operation
4577 */
4578 com_Mcf.is_em_on = KAL_TRUE;
4579 req.em_src = EM_FROM_ELT;
4580 req.info_request[MCF_EM_OTA_FILE_INFO] = 0xFF;
4581
4582 ret = mcf_em_update_req_hdlr((local_para_struct *)&req);
4583 if (ret != KAL_FALSE) {
4584 mcf_ut_format_err_str("EM update request handler positive test (Invalid operation) FAIL!! \r\n");
4585 return KAL_FALSE;
4586 }
4587
4588 /*
4589 * EM update request handler positive test - Invalid EM source
4590 */
4591 com_Mcf.is_em_on = KAL_TRUE;
4592 req.em_src = EM_FROM_RMMI;
4593 req.info_request[MCF_EM_OTA_FILE_INFO] = EM_OFF;
4594
4595 ret = mcf_em_update_req_hdlr((local_para_struct *)&req);
4596 if (ret != KAL_FALSE) {
4597 mcf_ut_format_err_str("EM update request handler positive test (Invalid EM source) FAIL!! \r\n");
4598 return KAL_FALSE;
4599 }
4600
4601
4602 MCF_UT_PASS();
4603 return KAL_TRUE;
4604}
4605
4606#if defined(__MCF_FIND_TAG_SUPPORT__)
4607kal_bool mcf_ut_find_tag(void *p_param, kal_char *p_ret_err_str, kal_uint32 *p_ret_err_str_sz)
4608{
4609 kal_bool ret;
4610 kal_uint16 byte_offset, bit_offset;
4611 kal_uint32 size;
4612 mcf_tag_info_struct unuse;
4613 MCF_DB_STRUCT_VARIABLE const *unuse_db_ptr = NULL;
4614 kal_char tag[64];
4615
4616 // INT
4617 kal_mem_set(tag, 0, 64);
4618 strcpy(tag, "VAL_BYTE_11");
4619 ret = mcf_find_tag_offset(4098, tag, &byte_offset, &bit_offset, &size, &unuse_db_ptr, &unuse);
4620 if(ret != KAL_TRUE || byte_offset != 0 || bit_offset != 0 || size != 1)
4621 return KAL_FALSE;
4622
4623 // BIT
4624 kal_mem_set(tag, 0, 64);
4625 strcpy(tag, "VAL_BIT_BYTE_11.B1");
4626 ret = mcf_find_tag_offset(4098, tag, &byte_offset, &bit_offset, &size, &unuse_db_ptr, &unuse);
4627 if(ret != KAL_TRUE || byte_offset != 2 || bit_offset != 0 || size != 1)
4628 return KAL_FALSE;
4629
4630 kal_mem_set(tag, 0, 64);
4631 strcpy(tag, "VAL_BIT_BYTE_11.B4");
4632 ret = mcf_find_tag_offset(4098, tag, &byte_offset, &bit_offset, &size, &unuse_db_ptr, &unuse);
4633 if(ret != KAL_TRUE || byte_offset != 2 || bit_offset != 3 || size != 1)
4634 return KAL_FALSE;
4635
4636 kal_mem_set(tag, 0, 64);
4637 strcpy(tag, "VAL_BIT_BYTE_12.F4B");
4638 ret = mcf_find_tag_offset(4098, tag, &byte_offset, &bit_offset, &size, &unuse_db_ptr, &unuse);
4639 if(ret != KAL_TRUE || byte_offset != 3 || bit_offset != 0 || size != 4)
4640 return KAL_FALSE;
4641
4642 kal_mem_set(tag, 0, 64);
4643 strcpy(tag, "VAL_BIT_BYTE_12.L4B");
4644 ret = mcf_find_tag_offset(4098, tag, &byte_offset, &bit_offset, &size, &unuse_db_ptr, &unuse);
4645 if(ret != KAL_TRUE || byte_offset != 3 || bit_offset != 4 || size != 4)
4646 return KAL_FALSE;
4647
4648 kal_mem_set(tag, 0, 64);
4649 strcpy(tag, "VAL_DOUBLE_1");
4650 ret = mcf_find_tag_offset(4098, tag, &byte_offset, &bit_offset, &size, &unuse_db_ptr, &unuse);
4651 if(ret != KAL_TRUE || byte_offset != 24 || bit_offset != 0 || size != 8)
4652 return KAL_FALSE;
4653
4654 // array
4655 kal_mem_set(tag, 0, 64);
4656 strcpy(tag, "VAL_BUFFER_1");
4657 ret = mcf_find_tag_offset(4098, tag, &byte_offset, &bit_offset, &size, &unuse_db_ptr, &unuse);
4658 if(ret != KAL_TRUE || byte_offset != 32 || bit_offset != 0 || size != 32)
4659 return KAL_FALSE;
4660
4661 kal_mem_set(tag, 0, 64);
4662 strcpy(tag, "VAL_BUFFER_1[0]");
4663 ret = mcf_find_tag_offset(4098, tag, &byte_offset, &bit_offset, &size, &unuse_db_ptr, &unuse);
4664 if(ret != KAL_TRUE || byte_offset != 32 || bit_offset != 0 || size != 1)
4665 return KAL_FALSE;
4666
4667 kal_mem_set(tag, 0, 64);
4668 strcpy(tag, "VAL_BUFFER_1[10]");
4669 ret = mcf_find_tag_offset(4098, tag, &byte_offset, &bit_offset, &size, &unuse_db_ptr, &unuse);
4670 if(ret != KAL_TRUE || byte_offset != 42 || bit_offset != 0 || size != 1)
4671 return KAL_FALSE;
4672
4673 // struct
4674 kal_mem_set(tag, 0, 64);
4675 strcpy(tag, "VAL_STRUCT_1.VBYTE1");
4676 ret = mcf_find_tag_offset(4098, tag, &byte_offset, &bit_offset, &size, &unuse_db_ptr, &unuse);
4677 if(ret != KAL_TRUE || byte_offset != 64 || bit_offset != 0 || size != 1)
4678 return KAL_FALSE;
4679
4680 kal_mem_set(tag, 0, 64);
4681 strcpy(tag, "VAL_STRUCT_1.VDOUBLE");
4682 ret = mcf_find_tag_offset(4098, tag, &byte_offset, &bit_offset, &size, &unuse_db_ptr, &unuse);
4683 if(ret != KAL_TRUE || byte_offset != 88 || bit_offset != 0 || size != 8)
4684 return KAL_FALSE;
4685
4686 kal_mem_set(tag, 0, 64);
4687 strcpy(tag, "VAL_STRUCT_1.VBUFFER");
4688 ret = mcf_find_tag_offset(4098, tag, &byte_offset, &bit_offset, &size, &unuse_db_ptr, &unuse);
4689 if(ret != KAL_TRUE || byte_offset != 96 || bit_offset != 0 || size != 32)
4690 return KAL_FALSE;
4691
4692 kal_mem_set(tag, 0, 64);
4693 strcpy(tag, "VAL_STRUCT_1.VBUFFER[31]");
4694 ret = mcf_find_tag_offset(4098, tag, &byte_offset, &bit_offset, &size, &unuse_db_ptr, &unuse);
4695 if(ret != KAL_TRUE || byte_offset != 127 || bit_offset != 0 || size != 1)
4696 return KAL_FALSE;
4697
4698 kal_mem_set(tag, 0, 64);
4699 strcpy(tag, "VAL_STRUCT_3[0].VBUFFER[0]");
4700 ret = mcf_find_tag_offset(4098, tag, &byte_offset, &bit_offset, &size, &unuse_db_ptr, &unuse);
4701 if(ret != KAL_TRUE || byte_offset != 896 || bit_offset != 0 || size != 1)
4702 return KAL_FALSE;
4703
4704 kal_mem_set(tag, 0, 64);
4705 strcpy(tag, "VAL_STRUCT_3.VBUFFER[0]");
4706 ret = mcf_find_tag_offset(4098, tag, &byte_offset, &bit_offset, &size, &unuse_db_ptr, &unuse);
4707 if(ret != KAL_TRUE || byte_offset != 896 || bit_offset != 0 || size != 1)
4708 return KAL_FALSE;
4709
4710 kal_mem_set(tag, 0, 64);
4711 strcpy(tag, "VAL_STRUCT_3[0].VBUFFER");
4712 ret = mcf_find_tag_offset(4098, tag, &byte_offset, &bit_offset, &size, &unuse_db_ptr, &unuse);
4713 if(ret != KAL_TRUE || byte_offset != 896 || bit_offset != 0 || size != 32)
4714 return KAL_FALSE;
4715
4716 kal_mem_set(tag, 0, 64);
4717 strcpy(tag, "VAL_STRUCT_3[3].VBUFFER[0]");
4718 ret = mcf_find_tag_offset(4098, tag, &byte_offset, &bit_offset, &size, &unuse_db_ptr, &unuse);
4719 if(ret != KAL_TRUE || byte_offset != 2000 || bit_offset != 0 || size != 1)
4720 return KAL_FALSE;
4721
4722 kal_mem_set(tag, 0, 64);
4723 strcpy(tag, "VAL_STRUCT_3[3].VBUFFER[3]");
4724 ret = mcf_find_tag_offset(4098, tag, &byte_offset, &bit_offset, &size, &unuse_db_ptr, &unuse);
4725 if(ret != KAL_TRUE || byte_offset != 2003 || bit_offset != 0 || size != 1)
4726 return KAL_FALSE;
4727
4728 kal_mem_set(tag, 0, 64);
4729 strcpy(tag, "VAL_STRUCT_3[0].ARRAY_D[0][0][0]");
4730 ret = mcf_find_tag_offset(4098, tag, &byte_offset, &bit_offset, &size, &unuse_db_ptr, &unuse);
4731 if(ret != KAL_TRUE || byte_offset != 928 || bit_offset != 0 || size != 1)
4732 return KAL_FALSE;
4733
4734 kal_mem_set(tag, 0, 64);
4735 strcpy(tag, "VAL_STRUCT_3[0].ARRAY_D[4][3][2]");
4736 ret = mcf_find_tag_offset(4098, tag, &byte_offset, &bit_offset, &size, &unuse_db_ptr, &unuse);
4737 if(ret != KAL_TRUE || byte_offset != 987 || bit_offset != 0 || size != 1)
4738 return KAL_FALSE;
4739
4740 kal_mem_set(tag, 0, 64);
4741 strcpy(tag, "VAL_STRUCT_3[3].ARRAY_D[0][0][0]");
4742 ret = mcf_find_tag_offset(4098, tag, &byte_offset, &bit_offset, &size, &unuse_db_ptr, &unuse);
4743 if(ret != KAL_TRUE || byte_offset != 2032 || bit_offset != 0 || size != 1)
4744 return KAL_FALSE;
4745
4746 kal_mem_set(tag, 0, 64);
4747 strcpy(tag, "VAL_STRUCT_3[3].ARRAY_D[4][3][2]");
4748 ret = mcf_find_tag_offset(4098, tag, &byte_offset, &bit_offset, &size, &unuse_db_ptr, &unuse);
4749 if(ret != KAL_TRUE || byte_offset != 2091 || bit_offset != 0 || size != 1)
4750 return KAL_FALSE;
4751
4752 kal_mem_set(tag, 0, 64);
4753 strcpy(tag, "VAL_STRUCT_3[3].ARRAY_D4[0][0][2]");
4754 ret = mcf_find_tag_offset(4098, tag, &byte_offset, &bit_offset, &size, &unuse_db_ptr, &unuse);
4755 if(ret != KAL_TRUE || byte_offset != 2100 || bit_offset != 0 || size != 4)
4756 return KAL_FALSE;
4757
4758 kal_mem_set(tag, 0, 64);
4759 strcpy(tag, "VAL_STRUCT_3[3].ARRAY_D4[4][3][2]");
4760 ret = mcf_find_tag_offset(4098, tag, &byte_offset, &bit_offset, &size, &unuse_db_ptr, &unuse);
4761 if(ret != KAL_TRUE || byte_offset != 2328 || bit_offset != 0 || size != 4)
4762 return KAL_FALSE;
4763
4764 // can not find tag
4765 kal_mem_set(tag, 0, 64);
4766 strcpy(tag, "XXX");
4767 ret = mcf_find_tag_offset(4098, tag, &byte_offset, &bit_offset, &size, &unuse_db_ptr, &unuse);
4768 if(ret != KAL_FALSE)
4769 return KAL_FALSE;
4770
4771
4772 MCF_UT_PASS();
4773 return KAL_TRUE;
4774}
4775#endif
4776
4777#if defined(__MCF_FIND_GID_SUPPORT__)
4778kal_bool mcf_ut_find_gid(void *p_param, kal_char *p_ret_err_str, kal_uint32 *p_ret_err_str_sz)
4779{
4780 kal_bool ret = KAL_FALSE;
4781 kal_uint16 lid_num;
4782 kal_uint16 byte_offset;
4783 kal_int16 bit_offset;
4784 kal_uint32 size;
4785 kal_bool is_bit;
4786
4787 // val_byte_11
4788 ret = mcf_find_gid_offset(MCF_TEST_OTA_LID_BASE_GID + 44, "", &lid_num, &byte_offset, &bit_offset, &size, &is_bit);
4789 if(ret!= KAL_TRUE || lid_num != 4098 || byte_offset != 0 || bit_offset != -1 || size !=1 || is_bit != KAL_FALSE) return KAL_FALSE;
4790
4791 // val_bit_2byte_3.F2b
4792 ret = mcf_find_gid_offset(MCF_TEST_OTA_LID_BASE_GID + 1, "", &lid_num, &byte_offset, &bit_offset, &size, &is_bit);
4793 if(ret!= KAL_TRUE || lid_num != 4098 || byte_offset != 2336 || bit_offset != 8 || size != 2 || is_bit != KAL_TRUE) return KAL_FALSE;
4794
4795 // val_buffer_2[]
4796 ret = mcf_find_gid_offset(MCF_TEST_OTA_LID_BASE_GID + 43, "0$", &lid_num, &byte_offset, &bit_offset, &size, &is_bit);
4797 if(ret!= KAL_TRUE || lid_num != 4098 || byte_offset != 464 || bit_offset != -1 && size != 1 || is_bit != KAL_FALSE) return KAL_FALSE;
4798 ret = mcf_find_gid_offset(MCF_TEST_OTA_LID_BASE_GID + 43, "1$", &lid_num, &byte_offset, &bit_offset, &size, &is_bit);
4799 if(ret!= KAL_TRUE || lid_num != 4098 || byte_offset != 465 || bit_offset != -1 && size != 1 || is_bit != KAL_FALSE) return KAL_FALSE;
4800 ret = mcf_find_gid_offset(MCF_TEST_OTA_LID_BASE_GID + 43, "31$", &lid_num, &byte_offset, &bit_offset, &size, &is_bit);
4801 if(ret!= KAL_TRUE || lid_num != 4098 || byte_offset != 495 || bit_offset != -1 && size != 1 || is_bit != KAL_FALSE) return KAL_FALSE;
4802
4803 //val_struct_3[x].array_d[x][x][x]
4804 ret = mcf_find_gid_offset(MCF_TEST_OTA_LID_BASE_GID + 106, "0$0$0$0$", &lid_num, &byte_offset, &bit_offset, &size, &is_bit);
4805 if(ret!= KAL_TRUE || lid_num != 4098 || byte_offset != 928 || bit_offset != -1 && size != 1 || is_bit != KAL_FALSE) return KAL_FALSE;
4806 ret = mcf_find_gid_offset(MCF_TEST_OTA_LID_BASE_GID + 106, "0$4$3$2$", &lid_num, &byte_offset, &bit_offset, &size, &is_bit);
4807 if(ret!= KAL_TRUE || lid_num != 4098 || byte_offset != 987 || bit_offset != -1 && size != 1 || is_bit != KAL_FALSE) return KAL_FALSE;
4808 ret = mcf_find_gid_offset(MCF_TEST_OTA_LID_BASE_GID + 106, "2$0$0$0$", &lid_num, &byte_offset, &bit_offset, &size, &is_bit);
4809 if(ret!= KAL_TRUE || lid_num != 4098 || byte_offset != 1664 || bit_offset != -1 && size != 1 || is_bit != KAL_FALSE) return KAL_FALSE;
4810 ret = mcf_find_gid_offset(MCF_TEST_OTA_LID_BASE_GID + 106, "3$4$3$2$", &lid_num, &byte_offset, &bit_offset, &size, &is_bit);
4811 if(ret!= KAL_TRUE || lid_num != 4098 || byte_offset != 2091 || bit_offset != -1 && size != 1 || is_bit != KAL_FALSE) return KAL_FALSE;
4812
4813 // val_struct_3[x].vbit_byte1.b8
4814 ret = mcf_find_gid_offset(MCF_TEST_OTA_LID_BASE_GID + 116, "2$", &lid_num, &byte_offset, &bit_offset, &size, &is_bit);
4815 if(ret!= KAL_TRUE || lid_num != 4098 || byte_offset != 1602 || bit_offset != 7 || size != 1 || is_bit != KAL_TRUE) return KAL_FALSE;
4816 // val_struct_3[x].vbit_byte2.F4b
4817 ret = mcf_find_gid_offset(MCF_TEST_OTA_LID_BASE_GID + 118, "2$", &lid_num, &byte_offset, &bit_offset, &size, &is_bit);
4818 if(ret!= KAL_TRUE || lid_num != 4098 || byte_offset != 1603 || bit_offset != 0 || size != 4 || is_bit != KAL_TRUE) return KAL_FALSE;
4819 // val_struct_3[x].vbit_byte2.L4b
4820 ret = mcf_find_gid_offset(MCF_TEST_OTA_LID_BASE_GID + 119, "2$", &lid_num, &byte_offset, &bit_offset, &size, &is_bit);
4821 if(ret!= KAL_TRUE || lid_num != 4098 || byte_offset != 1603 || bit_offset != 4 || size != 4 || is_bit != KAL_TRUE) return KAL_FALSE;
4822
4823 // val_struct_1.vbuffer[]
4824 ret = mcf_find_gid_offset(MCF_TEST_OTA_LID_BASE_GID + 74, "0$", &lid_num, &byte_offset, &bit_offset, &size, &is_bit);
4825 if(ret!= KAL_TRUE || lid_num != 4098 || byte_offset != 96 || bit_offset != -1 || size != 1 || is_bit != KAL_FALSE) return KAL_FALSE;
4826 ret = mcf_find_gid_offset(MCF_TEST_OTA_LID_BASE_GID + 74, "31$", &lid_num, &byte_offset, &bit_offset, &size, &is_bit);
4827 if(ret!= KAL_TRUE || lid_num != 4098 || byte_offset != 127 || bit_offset != -1 || size != 1 || is_bit != KAL_FALSE) return KAL_FALSE;
4828
4829 // val_struct_1.array_d4[][][]
4830 ret = mcf_find_gid_offset(MCF_TEST_OTA_LID_BASE_GID + 61, "0$0$0$", &lid_num, &byte_offset, &bit_offset, &size, &is_bit);
4831 if(ret!= KAL_TRUE || lid_num != 4098 || byte_offset != 188 || bit_offset != -1 || size != 4 || is_bit != KAL_FALSE) return KAL_FALSE;
4832 ret = mcf_find_gid_offset(MCF_TEST_OTA_LID_BASE_GID + 61, "4$3$2$", &lid_num, &byte_offset, &bit_offset, &size, &is_bit);
4833 if(ret!= KAL_TRUE || lid_num != 4098 || byte_offset != 424 || bit_offset != -1 || size != 4 || is_bit != KAL_FALSE) return KAL_FALSE;
4834
4835 // val_struct_1.array_d[][][]
4836 ret = mcf_find_gid_offset(MCF_TEST_OTA_LID_BASE_GID + 60, "0$0$0$", &lid_num, &byte_offset, &bit_offset, &size, &is_bit);
4837 if(ret!= KAL_TRUE || lid_num != 4098 || byte_offset != 128 || bit_offset != -1 || size != 1 || is_bit != KAL_FALSE) return KAL_FALSE;
4838 ret = mcf_find_gid_offset(MCF_TEST_OTA_LID_BASE_GID + 60, "4$3$2$", &lid_num, &byte_offset, &bit_offset, &size, &is_bit);
4839 if(ret!= KAL_TRUE || lid_num != 4098 || byte_offset != 187 || bit_offset != -1 || size != 1 || is_bit != KAL_FALSE) return KAL_FALSE;
4840
4841 MCF_UT_PASS();
4842 return KAL_TRUE;
4843}
4844#endif
4845
4846kal_bool mcf_ut_mcf_encrypt_decrypt(void *p_param, kal_char *p_ret_err_str, kal_uint32 *p_ret_err_str_sz)
4847{
4848 kal_char password[] = "MTKTEST";
4849 kal_bool ret = KAL_FALSE;
4850 kal_char content[192] = {0};
4851 kal_uint32 content_length = 0;
4852 kal_char test_data[] = "What does it take to change everything? Technology that¡¦s great, not expensive. Technology that helps people change the world on their own terms.";
4853
4854
4855 strcpy(content, test_data);
4856 content_length = (strlen(test_data) + 0xF & ~0xF); // 16B alignment
4857
4858 // CASE1 : AES128 test
4859 ret = mcf_encrypt_128bit(password, content, content_length);
4860 if(ret == KAL_FALSE) return KAL_FALSE;
4861 ret = mcf_decrypt_128bit(password, content, content_length);
4862 if(ret == KAL_FALSE) return KAL_FALSE;
4863
4864 if(strcmp(content, test_data) != 0) return KAL_FALSE;
4865
4866 // CASE2 : AES256 test
4867 ret = mcf_encrypt_256bit(password, content, content_length);
4868 if(ret == KAL_FALSE) return KAL_FALSE;
4869 ret = mcf_decrypt_256bit(password, content, content_length);
4870 if(ret == KAL_FALSE) return KAL_FALSE;
4871
4872 if(strcmp(content, test_data) != 0) return KAL_FALSE;
4873
4874 MCF_UT_PASS();
4875 return KAL_TRUE;
4876}
4877
4878kal_bool mcf_ut_find_ini_item(void *p_param, kal_char *p_ret_err_str, kal_uint32 *p_ret_err_str_sz)
4879{
4880 mcf_t *pMcf = mcf_get_instance();
4881 mcf_ini_file_t *ini_file;
4882 kal_bool ret;
4883 kal_char value[64];
4884 kal_char tag[64];
4885
4886 mcf_ut_init();
4887
4888 ini_file = &(pMcf->ini_file);
4889
4890 //kal_mem_set(&ini_file, 0, sizeof(mcf_ini_file_t));
4891 /*
4892 * Read ini positive test
4893 */
4894
4895 ret = mcf_ut_open_test_data("MTK_MD_OTA_CONFIG.ini", (kal_char *)(ini_file->buff), MCF_MAX_INI_FILE_SIZE);
4896 if (ret == KAL_FALSE) {
4897 mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MTK_MD_OTA_CONFIG.ini");
4898 return KAL_FALSE;
4899 }
4900
4901 kal_mem_set(value, 0, 64);
4902 kal_mem_set(tag, 0, 64);
4903 strcpy(tag, "AP_Monitor_Time");
4904
4905 if (mcf_find_ini_item((kal_char *)ini_file->buff, tag, value, pMcf) != KAL_TRUE) {
4906 mcf_ut_format_err_str("Read ini file FAIL!! item(%s) \r\n", tag);
4907 return KAL_FALSE;
4908 }
4909
4910 if(strcmp(value,"120") != 0){
4911 mcf_ut_format_err_str("Read ini file positive test FAIL!!\r\n");
4912 //return KAL_FALSE;
4913 }
4914
4915 kal_mem_set(value, 0, 64);
4916 kal_mem_set(tag, 0, 64);
4917 strcpy(tag, "TagName");
4918
4919 if (mcf_find_ini_item((kal_char *)ini_file->buff, tag, value, pMcf) != KAL_TRUE) {
4920 mcf_ut_format_err_str("Read ini file FAIL!! item(%s) \r\n", tag);
4921 return KAL_FALSE;
4922 }
4923
4924 if(strcmp(value,"108_466_97,1_460_NA,1_460_02") != 0){
4925 mcf_ut_format_err_str("Read ini file positive test FAIL!!\r\n");
4926 return KAL_FALSE;
4927 }
4928
4929 kal_mem_set(value, 0, 64);
4930 kal_mem_set(tag, 0, 64);
4931 strcpy(tag, "AP_Monitor_Time");
4932
4933 if (mcf_find_ini_item((kal_char *)ini_file->buff, tag, value, pMcf) != KAL_TRUE) {
4934 mcf_ut_format_err_str("Read ini file FAIL!! item(%s) \r\n", tag);
4935 return KAL_FALSE;
4936 }
4937
4938 if(strcmp(value,"120") != 0){
4939 mcf_ut_format_err_str("Read ini file positive test FAIL!!\r\n");
4940 return KAL_FALSE;
4941 }
4942
4943 kal_mem_set(value, 0, 64);
4944 kal_mem_set(tag, 0, 64);
4945 strcpy(tag, "Gen_Time");
4946
4947 if (mcf_find_ini_item((kal_char *)ini_file->buff, tag, value, pMcf) != KAL_TRUE) {
4948 mcf_ut_format_err_str("Read ini file FAIL!! item(%s) \r\n", tag);
4949 return KAL_FALSE;
4950 }
4951
4952 if(strcmp(value,"2018.1025.120000") != 0){
4953 mcf_ut_format_err_str("Read ini file positive test FAIL!!\r\n");
4954 return KAL_FALSE;
4955 }
4956
4957 /*
4958 * Read ini positive test --- don't care uppercase
4959 */
4960
4961 kal_mem_set(value, 0, 64);
4962 kal_mem_set(tag, 0, 64);
4963 strcpy(tag, "GeN_TIme");
4964
4965 if (mcf_find_ini_item((kal_char *)ini_file->buff, tag, value, pMcf) != KAL_TRUE) {
4966 mcf_ut_format_err_str("Read ini file FAIL!! item(%s) \r\n", tag);
4967 return KAL_FALSE;
4968 }
4969
4970 if(strcmp(value,"2018.1025.120000") != 0){
4971 mcf_ut_format_err_str("Read ini file positive test FAIL!!\r\n");
4972 return KAL_FALSE;
4973 }
4974
4975 kal_mem_set(value, 0, 64);
4976 kal_mem_set(tag, 0, 64);
4977 strcpy(tag, "GEN_TIME");
4978
4979 if (mcf_find_ini_item((kal_char *)ini_file->buff, tag, value, pMcf) != KAL_TRUE) {
4980 mcf_ut_format_err_str("Read ini file FAIL!! item(%s) \r\n", tag);
4981 return KAL_FALSE;
4982 }
4983
4984 if(strcmp(value,"2018.1025.120000") != 0){
4985 mcf_ut_format_err_str("Read ini file positive test FAIL!!\r\n");
4986 return KAL_FALSE;
4987 }
4988
4989 kal_mem_set(value, 0, 64);
4990 kal_mem_set(tag, 0, 64);
4991 strcpy(tag, "gen_time");
4992
4993 if (mcf_find_ini_item((kal_char *)ini_file->buff, tag, value, pMcf) != KAL_TRUE) {
4994 mcf_ut_format_err_str("Read ini file FAIL!! item(%s) \r\n", tag);
4995 return KAL_FALSE;
4996 }
4997
4998 if(strcmp(value,"2018.1025.120000") != 0){
4999 mcf_ut_format_err_str("Read ini file positive test FAIL!!\r\n");
5000 return KAL_FALSE;
5001 }
5002
5003 /*
5004 * Read ini positive test --- don't care space
5005 */
5006 kal_mem_set(value, 0, 64);
5007 kal_mem_set(tag, 0, 64);
5008 strcpy(tag, "g e n_ tim e");
5009
5010 if (mcf_find_ini_item((kal_char *)ini_file->buff, tag, value, pMcf) != KAL_TRUE) {
5011 mcf_ut_format_err_str("Read ini file FAIL!! item(%s) \r\n", tag);
5012 return KAL_FALSE;
5013 }
5014
5015 if(strcmp(value,"2018.1025.120000") != 0){
5016 mcf_ut_format_err_str("Read ini file positive test FAIL!!\r\n");
5017 return KAL_FALSE;
5018 }
5019
5020 kal_mem_set(value, 0, 64);
5021 kal_mem_set(tag, 0, 64);
5022 strcpy(tag, "gen _ time");
5023
5024 if (mcf_find_ini_item((kal_char *)ini_file->buff, tag, value, pMcf) != KAL_TRUE) {
5025 mcf_ut_format_err_str("Read ini file FAIL!! item(%s) \r\n", tag);
5026 return KAL_FALSE;
5027 }
5028
5029 if(strcmp(value,"2018.1025.120000") != 0){
5030 mcf_ut_format_err_str("Read ini file positive test FAIL!!\r\n");
5031 return KAL_FALSE;
5032 }
5033
5034 kal_mem_set(value, 0, 64);
5035 kal_mem_set(tag, 0, 64);
5036 strcpy(tag, "AP _Monitor_Time");
5037
5038 if (mcf_find_ini_item((kal_char *)ini_file->buff, tag, value, pMcf) != KAL_TRUE) {
5039 mcf_ut_format_err_str("Read ini file FAIL!! item(%s) \r\n", tag);
5040 return KAL_FALSE;
5041 }
5042
5043 if(strcmp(value,"120") != 0){
5044 mcf_ut_format_err_str("Read ini file positive test FAIL!!\r\n");
5045 return KAL_FALSE;
5046 }
5047
5048 /*
5049 * Read ini negative test
5050 */
5051
5052 kal_mem_set(value, 0, 64);
5053 kal_mem_set(tag, 0, 64);
5054 strcpy(tag, "Critical");
5055
5056 if (mcf_find_ini_item((kal_char *)ini_file->buff, tag, value, pMcf) == KAL_TRUE) {
5057 mcf_ut_format_err_str("Read OTA by LID FAIL!! \r\n");
5058 return KAL_FALSE;
5059 }
5060
5061 kal_mem_set(value, 0, 64);
5062 kal_mem_set(tag, 0, 64);
5063 strcpy(tag, "Config");
5064
5065 if (mcf_find_ini_item((kal_char *)ini_file->buff, tag, value, pMcf) == KAL_TRUE) {
5066 mcf_ut_format_err_str("Read OTA by LID FAIL!! \r\n");
5067 return KAL_FALSE;
5068 }
5069
5070 kal_mem_set(value, 0, 64);
5071 kal_mem_set(tag, 0, 64);
5072 strcpy(tag, "GenTime");
5073
5074 if (mcf_find_ini_item((kal_char *)ini_file->buff, tag, value, pMcf) == KAL_TRUE) {
5075 mcf_ut_format_err_str("Read OTA by LID FAIL!! \r\n");
5076 return KAL_FALSE;
5077 }
5078
5079 kal_mem_set(value, 0, 64);
5080 kal_mem_set(tag, 0, 64);
5081 strcpy(tag, "Tag_Name");
5082
5083 if (mcf_find_ini_item((kal_char *)ini_file->buff, tag, value, pMcf) == KAL_TRUE) {
5084 mcf_ut_format_err_str("Read OTA by LID FAIL!! \r\n");
5085 return KAL_FALSE;
5086 }
5087
5088 kal_mem_set(value, 0, 64);
5089 kal_mem_set(tag, 0, 64);
5090 strcpy(tag, "108");
5091
5092 if (mcf_find_ini_item((kal_char *)ini_file->buff, tag, value, pMcf) == KAL_TRUE) {
5093 mcf_ut_format_err_str("Read OTA by LID FAIL!! \r\n");
5094 return KAL_FALSE;
5095 }
5096
5097 kal_mem_set(value, 0, 64);
5098 kal_mem_set(tag, 0, 64);
5099 strcpy(tag, "0000");
5100
5101 if (mcf_find_ini_item((kal_char *)ini_file->buff, tag, value, pMcf) == KAL_TRUE) {
5102 mcf_ut_format_err_str("Read OTA by LID FAIL!! \r\n");
5103 return KAL_FALSE;
5104 }
5105
5106
5107 MCF_UT_PASS();
5108 return KAL_TRUE;
5109}
5110
5111kal_bool mcf_ut_find_ini_sbp_id(void *p_param, kal_char *p_ret_err_str, kal_uint32 *p_ret_err_str_sz)
5112{
5113 kal_uint32 sbp_id[200];
5114 kal_uint16 sbp_id_num = 0;
5115 kal_uint16 i = 0;
5116 kal_uint32 sbp_id_ans[5]={108,1};
5117 kal_bool general = KAL_FALSE;
5118 kal_char tag[64];
5119
5120 mcf_ut_init();
5121
5122 /*
5123 * Read ini positive test
5124 */
5125
5126 kal_mem_set(tag, 0, 64);
5127 strcpy(tag, "108_466_97,1_460_NA,1_460_02");
5128 if (mcf_find_ini_sbp_id(tag, sbp_id, &sbp_id_num, &general) != KAL_TRUE) {
5129 mcf_ut_format_err_str("Find ini file sbp id FAIL!! item(%s) \r\n", tag);
5130 return KAL_FALSE;
5131 }
5132
5133
5134
5135
5136 for (i = 0; i < sbp_id_num; i++){
5137 if (sbp_id[i] != sbp_id_ans[i]){
5138 mcf_ut_format_err_str("Find ini file sbp id FAIL!! sbp id(%d) sbp id ans(%d) \r\n", sbp_id[i], sbp_id_ans[i]);
5139 return KAL_FALSE;
5140 }
5141 }
5142
5143 kal_mem_set(tag, 0, 64);
5144 strcpy(tag, "108_466_97,1_460_NA,1_460_02,1_450_01,1_10_1");
5145 if (mcf_find_ini_sbp_id(tag, sbp_id, &sbp_id_num, &general) != KAL_TRUE) {
5146 mcf_ut_format_err_str("Find ini file sbp id FAIL!! item(%s) \r\n", tag);
5147 return KAL_FALSE;
5148 }
5149
5150
5151
5152 for (i = 0; i < sbp_id_num; i++){
5153 if (sbp_id[i] != sbp_id_ans[i]){
5154 mcf_ut_format_err_str("Find ini file sbp id FAIL!! sbp id(%d) sbp id ans(%d) \r\n", sbp_id[i], sbp_id_ans[i]);
5155 return KAL_FALSE;
5156 }
5157 }
5158 kal_mem_set(tag, 0, 64);
5159 strcpy(tag, "108_470_97,108_466_97,1_460_NA,1_460_02");
5160 if (mcf_find_ini_sbp_id(tag, sbp_id, &sbp_id_num, &general) != KAL_TRUE) {
5161 mcf_ut_format_err_str("Find ini file sbp id FAIL!! item(%s) \r\n", tag);
5162 return KAL_FALSE;
5163 }
5164
5165
5166
5167 for (i = 0; i < sbp_id_num; i++){
5168 if (sbp_id[i] != sbp_id_ans[i]){
5169 mcf_ut_format_err_str("Find ini file sbp id FAIL!! sbp id(%d) sbp id ans(%d) \r\n", sbp_id[i], sbp_id_ans[i]);
5170 return KAL_FALSE;
5171 }
5172 }
5173
5174 kal_mem_set(tag, 0, 64);
5175 strcpy(tag, "108_470_97,108_466_97,1_460_NA,1_460_02,");
5176 if (mcf_find_ini_sbp_id(tag, sbp_id, &sbp_id_num, &general) != KAL_TRUE) {
5177 mcf_ut_format_err_str("Find ini file sbp id FAIL!! item(%s) \r\n", tag);
5178 return KAL_FALSE;
5179 }
5180
5181
5182
5183 for (i = 0; i < sbp_id_num; i++){
5184 if (sbp_id[i] != sbp_id_ans[i]){
5185 mcf_ut_format_err_str("Find ini file sbp id FAIL!! sbp id(%d) sbp id ans(%d) \r\n", sbp_id[i], sbp_id_ans[i]);
5186 return KAL_FALSE;
5187 }
5188 }
5189
5190 kal_mem_set(tag, 0, 64);
5191 strcpy(tag, "108_470_97,108_466_97,105_25_43,5_470_123,5_460_NA,1_460_NA,1_460_02");
5192 if (mcf_find_ini_sbp_id(tag, sbp_id, &sbp_id_num, &general) != KAL_TRUE) {
5193 mcf_ut_format_err_str("Find ini file sbp id FAIL!! item(%s) \r\n", tag);
5194 return KAL_FALSE;
5195 }
5196
5197
5198 sbp_id_ans[0]=108; sbp_id_ans[1]=105; sbp_id_ans[2]=5; sbp_id_ans[3]=1;
5199
5200
5201 for (i = 0; i < sbp_id_num; i++){
5202 if (sbp_id[i] != sbp_id_ans[i]){
5203 mcf_ut_format_err_str("Find ini file sbp id FAIL!! sbp id(%d) sbp id ans(%d) \r\n", sbp_id[i], sbp_id_ans[i]);
5204 return KAL_FALSE;
5205 }
5206 }
5207
5208 //NA case
5209 kal_mem_set(tag, 0, 64);
5210 strcpy(tag, "NA_123_45,NA_02_53,108_470_97,108_466_97,1_460_NA,1_460_02,");
5211 if (mcf_find_ini_sbp_id(tag, sbp_id, &sbp_id_num, &general) != KAL_TRUE) {
5212 mcf_ut_format_err_str("Find ini file sbp id FAIL!! item(%s) \r\n", tag);
5213 return KAL_FALSE;
5214 }
5215
5216 if (general != KAL_TRUE){
5217 mcf_ut_format_err_str("Find ini file sbp id FAIL!! general(%d) \r\n", general);
5218 return KAL_FALSE;
5219 }
5220
5221 //ICCID case
5222 kal_mem_set(tag, 0, 64);
5223 strcpy(tag, "123456,NA_02_53,108_470_97,108_466_97,1_460_NA,1_460_02,");
5224 if (mcf_find_ini_sbp_id(tag, sbp_id, &sbp_id_num, &general) != KAL_TRUE) {
5225 mcf_ut_format_err_str("Find ini file sbp id FAIL!! item(%s) \r\n", tag);
5226 return KAL_FALSE;
5227 }
5228
5229 if (general != KAL_TRUE){
5230 mcf_ut_format_err_str("Find ini file sbp id FAIL!! general(%d) \r\n", general);
5231 return KAL_FALSE;
5232 }
5233
5234 kal_mem_set(tag, 0, 64);
5235 strcpy(tag, "123456");
5236 if (mcf_find_ini_sbp_id(tag, sbp_id, &sbp_id_num, &general) != KAL_TRUE) {
5237 mcf_ut_format_err_str("Find ini file sbp id FAIL!! item(%s) \r\n", tag);
5238 return KAL_FALSE;
5239 }
5240
5241 if (general != KAL_TRUE){
5242 mcf_ut_format_err_str("Find ini file sbp id FAIL!! general(%d) \r\n", general);
5243 return KAL_FALSE;
5244 }
5245
5246 kal_mem_set(tag, 0, 64);
5247 strcpy(tag, "108_460_32,123456");
5248 if (mcf_find_ini_sbp_id(tag, sbp_id, &sbp_id_num, &general) != KAL_TRUE) {
5249 mcf_ut_format_err_str("Find ini file sbp id FAIL!! item(%s) \r\n", tag);
5250 return KAL_FALSE;
5251 }
5252
5253 if (general != KAL_TRUE){
5254 mcf_ut_format_err_str("Find ini file sbp id FAIL!! general(%d) \r\n", general);
5255 return KAL_FALSE;
5256 }
5257
5258 kal_mem_set(tag, 0, 64);
5259 strcpy(tag, "108_460_32");
5260 if (mcf_find_ini_sbp_id(tag, sbp_id, &sbp_id_num, &general) != KAL_TRUE) {
5261 mcf_ut_format_err_str("Find ini file sbp id FAIL!! item(%s) \r\n", tag);
5262 return KAL_FALSE;
5263 }
5264
5265 for (i = 0; i < sbp_id_num; i++){
5266 if (sbp_id[i] != sbp_id_ans[i]){
5267 mcf_ut_format_err_str("Find ini file sbp id FAIL!! sbp id(%d) sbp id ans(%d) \r\n", sbp_id[i], sbp_id_ans[i]);
5268 return KAL_FALSE;
5269 }
5270 }
5271
5272
5273
5274
5275 MCF_UT_PASS();
5276 return KAL_TRUE;
5277}
5278
5279kal_bool mcf_ut_compose_ini_item(void *p_param, kal_char *p_ret_err_str, kal_uint32 *p_ret_err_str_sz)
5280{
5281 kal_bool ret;
5282 mcf_t *pMcf = mcf_get_instance();
5283 mcf_ini_file_t *ini_file = &(pMcf->ini_file);
5284 kal_char value[64];
5285 kal_char test_data_path[512];
5286 kal_char *pos;
5287 kal_char tag[64];
5288 kal_char new_value[64];
5289 kal_char old_value[64];
5290
5291
5292 mcf_ut_init();
5293
5294
5295 /*
5296 * Read ini positive test
5297 */
5298 kal_mem_set(ini_file->buff, 0, MCF_MAX_INI_FILE_SIZE);
5299 kal_mem_set(ini_file->tmp_buff, 0, MCF_MAX_INI_FILE_SIZE);
5300 ret = mcf_ut_open_test_data("MTK_MD_OTA_CONFIG.ini", ini_file->buff, MCF_MAX_INI_FILE_SIZE);
5301 if (ret == KAL_FALSE) {
5302 mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MTK_MD_OTA_CONFIG.ini");
5303 return KAL_FALSE;
5304 }
5305
5306 kal_mem_set(tag, 0, 64);
5307 kal_mem_set(new_value, 0, 64);
5308 kal_mem_set(old_value, 0, 64);
5309 strcpy(tag, "AP_Monitor_Time");
5310 strcpy(old_value, "120");
5311 strcpy(new_value, "2");
5312
5313 if (mcf_compose_ini_item(ini_file->buff, ini_file->tmp_buff, tag, old_value, new_value) != KAL_TRUE) {
5314 mcf_ut_format_err_str("Find compose_ini_item FAIL!! item(%s) value(%s) \r\n", tag, new_value);
5315 return KAL_FALSE;
5316 }
5317
5318 /* Change write permission of ini file */
5319 getcwd(test_data_path, sizeof(test_data_path));
5320 pos = strstr(test_data_path, "mcu");
5321 kal_sprintf(pos + strlen("mcu"), "\\%s\\%s%c", MCF_UT_DB_FOLDER_PATH, "MTK_MD_OTA_CONFIG_WRITE.ini", '\0');
5322 chmod(test_data_path, 0666);
5323
5324 ret = mcf_ut_write_test_data("MTK_MD_OTA_CONFIG_WRITE.ini", ini_file->tmp_buff);
5325 if (ret == KAL_FALSE) {
5326 mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MTK_MD_OTA_CONFIG.ini");
5327 return KAL_FALSE;
5328 }
5329
5330
5331 /* Read again */
5332 ret = mcf_ut_open_test_data("MTK_MD_OTA_CONFIG_WRITE.ini", (kal_char *)(ini_file->buff), MCF_MAX_INI_FILE_SIZE);
5333 if (ret == KAL_FALSE) {
5334 mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MTK_MD_OTA_CONFIG_WRITE.ini");
5335 return KAL_FALSE;
5336 }
5337
5338 kal_mem_set(tag, 0, 64);
5339 kal_mem_set(new_value, 0, 64);
5340 kal_mem_set(old_value, 0, 64);
5341 strcpy(tag, "TagName");
5342 strcpy(old_value, "108_466_97,1_460_NA,1_460_02");
5343 strcpy(new_value, "108_466_97,1_460_02");
5344
5345 if (mcf_compose_ini_item(ini_file->buff, ini_file->tmp_buff, tag, old_value, new_value) != KAL_TRUE) {
5346 mcf_ut_format_err_str("Find compose_ini_item FAIL!! item(%s) value(%s) \r\n", tag, new_value);
5347 return KAL_FALSE;
5348 }
5349
5350 ret = mcf_ut_write_test_data("MTK_MD_OTA_CONFIG_WRITE.ini", ini_file->tmp_buff);
5351 if (ret == KAL_FALSE) {
5352 mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MTK_MD_OTA_CONFIG.ini");
5353 return KAL_FALSE;
5354 }
5355
5356
5357 /* Read again */
5358 ret = mcf_ut_open_test_data("MTK_MD_OTA_CONFIG_WRITE.ini", (kal_char *)(ini_file->buff), MCF_MAX_INI_FILE_SIZE);
5359 if (ret == KAL_FALSE) {
5360 mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MTK_MD_OTA_CONFIG_WRITE.ini");
5361 return KAL_FALSE;
5362 }
5363
5364 kal_mem_set(tag, 0, 64);
5365 kal_mem_set(new_value, 0, 64);
5366 kal_mem_set(old_value, 0, 64);
5367 strcpy(tag, "AP_Monitor_Time");
5368 strcpy(old_value, "2");
5369 strcpy(new_value, "23000");
5370
5371 if (mcf_compose_ini_item(ini_file->buff, ini_file->tmp_buff, tag, old_value, new_value) != KAL_TRUE) {
5372 mcf_ut_format_err_str("Find compose_ini_item FAIL!! item(%s) value(%s) \r\n", tag, new_value);
5373 return KAL_FALSE;
5374 }
5375
5376 ret = mcf_ut_write_test_data("MTK_MD_OTA_CONFIG_WRITE.ini", ini_file->tmp_buff);
5377 if (ret == KAL_FALSE) {
5378 mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MTK_MD_OTA_CONFIG.ini");
5379 return KAL_FALSE;
5380 }
5381
5382
5383 /* Read again */
5384 ret = mcf_ut_open_test_data("MTK_MD_OTA_CONFIG_WRITE.ini", (kal_char *)(ini_file->buff), MCF_MAX_INI_FILE_SIZE);
5385 if (ret == KAL_FALSE) {
5386 mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MTK_MD_OTA_CONFIG_WRITE.ini");
5387 return KAL_FALSE;
5388 }
5389
5390 kal_mem_set(tag, 0, 64);
5391 kal_mem_set(new_value, 0, 64);
5392 kal_mem_set(old_value, 0, 64);
5393 strcpy(tag, "Gen_Time");
5394 strcpy(old_value, "2018.1025.120000");
5395 strcpy(new_value, "2018.1104.182054");
5396
5397 if (mcf_compose_ini_item(ini_file->buff, ini_file->tmp_buff, tag, old_value, new_value) != KAL_TRUE) {
5398 mcf_ut_format_err_str("Find compose_ini_item FAIL!! item(%s) value(%s) \r\n", tag, new_value);
5399 return KAL_FALSE;
5400 }
5401
5402 ret = mcf_ut_write_test_data("MTK_MD_OTA_CONFIG_WRITE.ini", ini_file->tmp_buff);
5403 if (ret == KAL_FALSE) {
5404 mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MTK_MD_OTA_CONFIG.ini");
5405 return KAL_FALSE;
5406 }
5407
5408
5409 /* Read again */
5410 ret = mcf_ut_open_test_data("MTK_MD_OTA_CONFIG_WRITE.ini", (kal_char *)(ini_file->buff), MCF_MAX_INI_FILE_SIZE);
5411 if (ret == KAL_FALSE) {
5412 mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MTK_MD_OTA_CONFIG_WRITE.ini");
5413 return KAL_FALSE;
5414 }
5415
5416 /* New item */
5417
5418 kal_mem_set(tag, 0, 64);
5419 kal_mem_set(new_value, 0, 64);
5420 kal_mem_set(old_value, 0, 64);
5421 strcpy(tag, "Reboot_Mode");
5422 strcpy(old_value, "");
5423 strcpy(new_value, "1");
5424
5425 if (mcf_compose_ini_item(ini_file->buff, ini_file->tmp_buff, tag, old_value, new_value) != KAL_TRUE) {
5426 mcf_ut_format_err_str("Find compose_ini_item FAIL!! item(%s) value(%s) \r\n", tag, new_value);
5427 return KAL_FALSE;
5428 }
5429
5430 ret = mcf_ut_write_test_data("MTK_MD_OTA_CONFIG_WRITE.ini", ini_file->tmp_buff);
5431 if (ret == KAL_FALSE) {
5432 mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MTK_MD_OTA_CONFIG.ini");
5433 return KAL_FALSE;
5434 }
5435
5436
5437 /* Read again */
5438 ret = mcf_ut_open_test_data("MTK_MD_OTA_CONFIG_WRITE.ini", (kal_char *)(ini_file->buff), MCF_MAX_INI_FILE_SIZE);
5439 if (ret == KAL_FALSE) {
5440 mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MTK_MD_OTA_CONFIG_WRITE.ini");
5441 return KAL_FALSE;
5442 }
5443
5444 kal_mem_set(tag, 0, 64);
5445 kal_mem_set(new_value, 0, 64);
5446 kal_mem_set(old_value, 0, 64);
5447 strcpy(tag, "GenTime");
5448 strcpy(old_value, "");
5449 strcpy(new_value, "2018.1106.110355");
5450
5451 if (mcf_compose_ini_item(ini_file->buff, ini_file->tmp_buff, tag, old_value, new_value) != KAL_TRUE) {
5452 mcf_ut_format_err_str("Find compose_ini_item FAIL!! item(%s) value(%s) \r\n", tag, new_value);
5453 return KAL_FALSE;
5454 }
5455
5456 ret = mcf_ut_write_test_data("MTK_MD_OTA_CONFIG_WRITE.ini", ini_file->tmp_buff);
5457 if (ret == KAL_FALSE) {
5458 mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MTK_MD_OTA_CONFIG.ini");
5459 return KAL_FALSE;
5460 }
5461
5462
5463 /* Read again */
5464 ret = mcf_ut_open_test_data("MTK_MD_OTA_CONFIG_WRITE.ini", (kal_char *)(ini_file->buff), MCF_MAX_INI_FILE_SIZE);
5465 if (ret == KAL_FALSE) {
5466 mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MTK_MD_OTA_CONFIG_WRITE.ini");
5467 return KAL_FALSE;
5468 }
5469
5470 kal_mem_set(tag, 0, 64);
5471 kal_mem_set(new_value, 0, 64);
5472 kal_mem_set(old_value, 0, 64);
5473 strcpy(tag, "BatteryLife");
5474 strcpy(old_value, "");
5475 strcpy(new_value, "87%");
5476
5477 if (mcf_compose_ini_item(ini_file->buff, ini_file->tmp_buff, tag, old_value, new_value) != KAL_TRUE) {
5478 mcf_ut_format_err_str("Find compose_ini_item FAIL!! item(%s) value(%s) \r\n", tag, new_value);
5479 return KAL_FALSE;
5480 }
5481
5482 ret = mcf_ut_write_test_data("MTK_MD_OTA_CONFIG_WRITE.ini", ini_file->tmp_buff);
5483 if (ret == KAL_FALSE) {
5484 mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MTK_MD_OTA_CONFIG.ini");
5485 return KAL_FALSE;
5486 }
5487
5488 ret = mcf_ut_open_test_data("MTK_MD_OTA_CONFIG_WRITE.ini", (kal_char *)(ini_file->buff), MCF_MAX_INI_FILE_SIZE);
5489 if (ret == KAL_FALSE) {
5490 mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MTK_MD_OTA_CONFIG_WRITE.ini");
5491 return KAL_FALSE;
5492 }
5493
5494 kal_mem_set(value, 0, 64);
5495 kal_mem_set(tag, 0, 64);
5496 strcpy(tag, "AP_Monitor_Time");
5497
5498 if (mcf_find_ini_item((kal_char *)ini_file->buff, tag, value, pMcf) != KAL_TRUE) {
5499 mcf_ut_format_err_str("Read ini file FAIL!! item(%s) \r\n", tag);
5500 return KAL_FALSE;
5501 }
5502
5503 if(strcmp(value,"23000") != 0){
5504 mcf_ut_format_err_str("Read ini file positive test FAIL!!\r\n");
5505 return KAL_FALSE;
5506 }
5507
5508 kal_mem_set(value, 0, 64);
5509 kal_mem_set(tag, 0, 64);
5510 strcpy(tag, "GenTime");
5511
5512 if (mcf_find_ini_item((kal_char *)ini_file->buff, tag, value, pMcf) != KAL_TRUE) {
5513 mcf_ut_format_err_str("Read ini file FAIL!! item(%s) \r\n", tag);
5514 return KAL_FALSE;
5515 }
5516
5517 if(strcmp(value,"2018.1106.110355") != 0){
5518 mcf_ut_format_err_str("Read ini file positive test FAIL!!\r\n");
5519 return KAL_FALSE;
5520 }
5521
5522 kal_mem_set(value, 0, 64);
5523 kal_mem_set(tag, 0, 64);
5524 strcpy(tag, "TagName");
5525
5526 if (mcf_find_ini_item((kal_char *)ini_file->buff, tag, value, pMcf) != KAL_TRUE) {
5527 mcf_ut_format_err_str("Read ini file FAIL!! item(%s) \r\n", tag);
5528 return KAL_FALSE;
5529 }
5530
5531 if(strcmp(value,"108_466_97,1_460_02") != 0){
5532 mcf_ut_format_err_str("Read ini file positive test FAIL!!\r\n");
5533 return KAL_FALSE;
5534 }
5535
5536 kal_mem_set(value, 0, 64);
5537 kal_mem_set(tag, 0, 64);
5538 strcpy(tag, "Gen_Time");
5539
5540 if (mcf_find_ini_item((kal_char *)ini_file->buff, tag, value, pMcf) != KAL_TRUE) {
5541 mcf_ut_format_err_str("Read ini file FAIL!! item(%s) \r\n", tag);
5542 return KAL_FALSE;
5543 }
5544
5545 if(strcmp(value,"2018.1104.182054") != 0){
5546 mcf_ut_format_err_str("Read ini file positive test FAIL!!\r\n");
5547 return KAL_FALSE;
5548 }
5549
5550 kal_mem_set(value, 0, 64);
5551 kal_mem_set(tag, 0, 64);
5552 strcpy(tag, "Reboot_Mode");
5553
5554 if (mcf_find_ini_item((kal_char *)ini_file->buff, tag, value, pMcf) != KAL_TRUE) {
5555 mcf_ut_format_err_str("Read ini file FAIL!! item(%s) \r\n", tag);
5556 return KAL_FALSE;
5557 }
5558
5559 if(strcmp(value,"1") != 0){
5560 mcf_ut_format_err_str("Read ini file positive test FAIL!!\r\n");
5561 return KAL_FALSE;
5562 }
5563
5564 kal_mem_set(value, 0, 64);
5565 kal_mem_set(tag, 0, 64);
5566 strcpy(tag, "BatteryLife");
5567
5568 if (mcf_find_ini_item((kal_char *)ini_file->buff, tag, value, pMcf) != KAL_TRUE) {
5569 mcf_ut_format_err_str("Read ini file FAIL!! item(%s) \r\n", tag);
5570 return KAL_FALSE;
5571 }
5572
5573 if(strcmp(value,"87%") != 0){
5574 mcf_ut_format_err_str("Read ini file positive test FAIL!!\r\n");
5575 return KAL_FALSE;
5576 }
5577
5578 kal_mem_set(value, 0, 64);
5579 kal_mem_set(tag, 0, 64);
5580 strcpy(tag, "Battery Life");
5581
5582 if (mcf_find_ini_item((kal_char *)ini_file->buff, tag, value, pMcf) != KAL_TRUE) {
5583 mcf_ut_format_err_str("Read ini file FAIL!! item(%s) \r\n", tag);
5584 return KAL_FALSE;
5585 }
5586
5587 if(strcmp(value,"87%") != 0){
5588 mcf_ut_format_err_str("Read ini file positive test FAIL!!\r\n");
5589 return KAL_FALSE;
5590 }
5591
5592 kal_mem_set(value, 0, 64);
5593 kal_mem_set(tag, 0, 64);
5594 strcpy(tag, "BaTTery LIFE");
5595
5596 if (mcf_find_ini_item((kal_char *)ini_file->buff, tag, value, pMcf) != KAL_TRUE) {
5597 mcf_ut_format_err_str("Read ini file FAIL!! item(%s) \r\n", tag);
5598 return KAL_FALSE;
5599 }
5600
5601 if(strcmp(value,"87%") != 0){
5602 mcf_ut_format_err_str("Read ini file positive test FAIL!!\r\n");
5603 return KAL_FALSE;
5604 }
5605
5606 /* Read again */
5607 ret = mcf_ut_open_test_data("MTK_MD_OTA_CONFIG_WRITE.ini", (kal_char *)(ini_file->buff), MCF_MAX_INI_FILE_SIZE);
5608 if (ret == KAL_FALSE) {
5609 mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MTK_MD_OTA_CONFIG_WRITE.ini");
5610 return KAL_FALSE;
5611 }
5612
5613 kal_mem_set(tag, 0, 64);
5614 kal_mem_set(new_value, 0, 64);
5615 kal_mem_set(old_value, 0, 64);
5616 strcpy(tag, "Gen_Time");
5617 strcpy(old_value, "2018.1104.182054");
5618 strcpy(new_value, "");
5619
5620 if (mcf_compose_ini_item(ini_file->buff, ini_file->tmp_buff, tag, old_value, new_value) != KAL_TRUE) {
5621 mcf_ut_format_err_str("Find compose_ini_item FAIL!! item(%s) value(%s) \r\n", tag, new_value);
5622 return KAL_FALSE;
5623 }
5624
5625 ret = mcf_ut_write_test_data("MTK_MD_OTA_CONFIG_WRITE.ini", ini_file->tmp_buff);
5626 if (ret == KAL_FALSE) {
5627 mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MTK_MD_OTA_CONFIG.ini");
5628 return KAL_FALSE;
5629 }
5630
5631 ret = mcf_ut_open_test_data("MTK_MD_OTA_CONFIG_WRITE.ini", (kal_char *)(ini_file->buff), MCF_MAX_INI_FILE_SIZE);
5632 if (ret == KAL_FALSE) {
5633 mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MTK_MD_OTA_CONFIG_WRITE.ini");
5634 return KAL_FALSE;
5635 }
5636
5637 kal_mem_set(value, 0, 64);
5638 kal_mem_set(tag, 0, 64);
5639 strcpy(tag, "Gen_Time");
5640
5641 if (mcf_find_ini_item((kal_char *)ini_file->buff, tag, value, pMcf) != KAL_TRUE) {
5642 mcf_ut_format_err_str("Read ini file FAIL!! item(%s) \r\n", tag);
5643 return KAL_FALSE;
5644 }
5645
5646 if(strcmp(value,"") != 0){
5647 mcf_ut_format_err_str("Read ini file positive test FAIL!!\r\n");
5648 return KAL_FALSE;
5649 }
5650
5651 ret = mcf_ut_open_test_data("MTK_MD_OTA_CONFIG_WRITE.ini", (kal_char *)(ini_file->buff), MCF_MAX_INI_FILE_SIZE);
5652 if (ret == KAL_FALSE) {
5653 mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MTK_MD_OTA_CONFIG_WRITE.ini");
5654 return KAL_FALSE;
5655 }
5656
5657 kal_mem_set(tag, 0, 64);
5658 kal_mem_set(new_value, 0, 64);
5659 kal_mem_set(old_value, 0, 64);
5660 strcpy(tag, "Gen_Time");
5661 strcpy(old_value, "");
5662 strcpy(new_value, "125_25_67");
5663
5664 if (mcf_compose_ini_item(ini_file->buff, ini_file->tmp_buff, tag, old_value, new_value) != KAL_TRUE) {
5665 mcf_ut_format_err_str("Find compose_ini_item FAIL!! item(%s) value(%s) \r\n", tag, new_value);
5666 return KAL_FALSE;
5667 }
5668
5669 ret = mcf_ut_write_test_data("MTK_MD_OTA_CONFIG_WRITE.ini", ini_file->tmp_buff);
5670 if (ret == KAL_FALSE) {
5671 mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MTK_MD_OTA_CONFIG.ini");
5672 return KAL_FALSE;
5673 }
5674
5675 ret = mcf_ut_open_test_data("MTK_MD_OTA_CONFIG_WRITE.ini", (kal_char *)(ini_file->buff), MCF_MAX_INI_FILE_SIZE);
5676 if (ret == KAL_FALSE) {
5677 mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MTK_MD_OTA_CONFIG_WRITE.ini");
5678 return KAL_FALSE;
5679 }
5680
5681 kal_mem_set(value, 0, 64);
5682
5683 kal_mem_set(tag, 0, 64);
5684 strcpy(tag, "Gen_Time");
5685
5686 if (mcf_find_ini_item((kal_char *)ini_file->buff, tag, value, pMcf) != KAL_TRUE) {
5687 mcf_ut_format_err_str("Read ini file FAIL!! item(%s) \r\n", tag);
5688 return KAL_FALSE;
5689 }
5690
5691 if(strcmp(value,"125_25_67") != 0){
5692 mcf_ut_format_err_str("Read ini file positive test FAIL!!\r\n");
5693 return KAL_FALSE;
5694 }
5695
5696
5697 MCF_UT_PASS();
5698 return KAL_TRUE;
5699}
5700
5701kal_bool mcf_ut_mcf_boot_trace(void *p_param, kal_char *p_ret_err_str, kal_uint32 *p_ret_err_str_sz)
5702{
5703 kal_uint32 d1 = 100, d2 = 200;
5704 char string[] = "MCF TEST";
5705 char string2[] = "MCF TEST2";
5706 kal_uint32 i = 0;
5707
5708 mcf_do_ota_full();
5709
5710 MCF_BOOT_TRACE(MCF_BOOT_TRACE_TEST2);
5711 MCF_BOOT_TRACE(MCF_BOOT_TRACE_TEST1, d1);
5712 MCF_BOOT_TRACE(MCF_BOOT_TRACE_TEST3, string);
5713 MCF_BOOT_TRACE(MCF_BOOT_TRACE_TEST4, d1, string);
5714 MCF_BOOT_TRACE(MCF_BOOT_TRACE_TEST5, string, string2, d1);
5715
5716 for(i = 0;i< 10000;i++)
5717 {
5718 MCF_BOOT_TRACE(MCF_BOOT_TRACE_TEST5, string, string2, d1);
5719 }
5720
5721 mcf_dump_boot_trace();
5722
5723 MCF_UT_PASS();
5724 return KAL_TRUE;
5725}
5726
5727kal_bool mcf_ut_config_LID(void *p_param, kal_char *p_ret_err_str, kal_uint32 *p_ret_err_str_sz)
5728{
5729 kal_bool ret;
5730 l4c_mcf_config_lid_variable_operation_req_struct *req = NULL;
5731 l4c_mcf_config_lid_variable_operation_cnf_struct *cnf = NULL;
5732 mcf_ota_result_e mcf_ret = MCF_OTA_R_SUCCESS;
5733 mcf_t *pMcf = mcf_get_instance();
5734 mcf_ota_file_t *ota_file = &(pMcf->ota_file);
5735 mcf_tool_file_info_t *pFile = (mcf_tool_file_info_t *)(ota_file->buff);
5736 nvram_ef_mcf_ota_file_info_struct nv_ota_file;
5737 nvram_ef_mcf_sw_info_struct nv_sw_info;
5738 mcf_tlvota_file_t *tlvota_file;
5739 nvram_ef_mcf_tlvota_file_info_struct nv_tlvota_file;
5740 mcf_tlvota_sbp_tag_t sbp_tag;
5741 kal_uint8 i;
5742 kal_uint8 test_pattern[512];
5743
5744
5745 /* Write MCF OTA file version to NVRAM */
5746 kal_mem_set(&nv_ota_file, 0, sizeof(nvram_ef_mcf_ota_file_info_struct));
5747 strncpy(nv_ota_file.path, MCF_FS_DEFAULT_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN);
5748 strncpy(nv_ota_file.name, MCF_FS_DEFAULT_OTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN);
5749 if ( !nvram_external_write_data(NVRAM_EF_MCF_OTA_FILE_LID, 1, (kal_uint8 *)&nv_ota_file, sizeof(nvram_ef_mcf_ota_file_info_struct)) ) {
5750 mcf_ut_format_err_str("Fail to write MCF OTA file info to NVRAM!!\r\n");
5751 return KAL_FALSE;
5752 }
5753 kal_mem_set(&nv_sw_info, 0, sizeof(nvram_ef_mcf_sw_info_struct));
5754 strncpy(nv_sw_info.last_update_file.sw_version, MCF_UT_SW_VERNO, MCF_FILE_MAX_SW_VERSION_LEN);
5755 strncpy(nv_sw_info.last_update_file.gen_time, MCF_UT_GEN_TIME, MCF_FILE_MAX_GEN_TIME_LEN);
5756 strcpy(nv_sw_info.last_update_file.path, "");
5757 strcpy(nv_sw_info.last_update_file.name, "");
5758 if ( !nvram_external_write_data(NVRAM_EF_MCF_SW_INFO_LID, 1, (kal_uint8 *)&nv_sw_info, sizeof(nvram_ef_mcf_sw_info_struct)) ) {
5759 mcf_ut_format_err_str("Fail to write MCF sw info to NVRAM!!\r\n");
5760 return KAL_FALSE;
5761 }
5762
5763 /*
5764 * Apply default OTA
5765 */
5766 MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
5767 if (ota_file) {
5768 ret = mcf_ut_open_test_data("MCF_OTA_ut_normal.mcfota", (kal_char *)(ota_file->buff), MCF_MAX_OTA_FILE_SIZE);
5769 if (ret == KAL_FALSE) {
5770 mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_OTA_ut_normal.mcfota");
5771 return KAL_FALSE;
5772 }
5773
5774 MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
5775 } else {
5776 mcf_ut_format_err_str("Reset LID FAIL!! Fail to take write lock! \r\n");
5777 return KAL_FALSE;
5778 }
5779
5780 mcf_ret = mcf_do_ota_full();
5781 if (mcf_ret != MCF_OTA_R_SUCCESS) {
5782 mcf_ut_format_err_str("Reset LID FAIL!! ret(%d) \r\n", mcf_ret);
5783 return KAL_FALSE;
5784 }
5785
5786 ret = mcf_check_test_lid_value(NULL);
5787 if (ret == KAL_FALSE) {
5788 mcf_ut_format_err_str("Reset LID FAIL!!\r\n");
5789 return KAL_FALSE;
5790 }
5791
5792
5793
5794 /*
5795 * Set OTA path in default path positive test
5796 */
5797 req = (l4c_mcf_config_lid_variable_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_req_struct), TD_RESET);
5798 req->op = L4C_MCF_CONFIG_LID_VARIABLE_OPERATION;
5799 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
5800 req->lid_num = 4098;
5801 req->rec_id = 1;
5802 req->len = 0;
5803 strcpy(req->tag_name, "VAL_BYTE_11");
5804
5805 cnf = (l4c_mcf_config_lid_variable_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_cnf_struct), TD_RESET);
5806
5807
5808 mcf_ret = mcf_config_LID_variable(req, cnf);
5809 if (mcf_ret != MCF_OTA_R_SUCCESS) {
5810 mcf_ut_format_err_str("Config LID variable FAIL!!(%s)\r\n", "VAL_BYTE_11");
5811 return KAL_FALSE;
5812 }
5813
5814 kal_mem_set(test_pattern,0,512);
5815 mcf_bytes_to_hex(&(mcf_ut_test_lid_value_pattern.val_byte_11), cnf->len, KAL_FALSE, &test_pattern);
5816 mcf_toupper((char *)test_pattern);
5817
5818 if(strncmp((kal_char *)(cnf->value), test_pattern, cnf->len*2) != 0){
5819 mcf_ut_format_err_str("Config LID, VAL_BYTE_11, %s, %s\r\n", cnf->value, test_pattern);
5820 return KAL_FALSE;
5821 }
5822
5823 if(cnf->len != 1){
5824 mcf_ut_format_err_str("Config LID, VAL_BYTE_11, %d, %d\r\n", cnf->len, 1);
5825 return KAL_FALSE;
5826 }
5827
5828 free_local_para((local_para_struct *)req);
5829 free_local_para((local_para_struct *)cnf);
5830
5831 req = (l4c_mcf_config_lid_variable_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_req_struct), TD_RESET);
5832 req->op = L4C_MCF_CONFIG_LID_VARIABLE_OPERATION;
5833 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
5834 req->lid_num = 4098;
5835 req->rec_id = 1;
5836 req->len = 0;
5837 strcpy(req->tag_name, "VAL_BIT_BYTE_11");
5838
5839 cnf = (l4c_mcf_config_lid_variable_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_cnf_struct), TD_RESET);
5840
5841 mcf_ret = mcf_config_LID_variable(req, cnf);
5842 if (mcf_ret != MCF_OTA_R_SUCCESS) {
5843 mcf_ut_format_err_str("Config LID variable FAIL!!(%s)\r\n", "VAL_BIT_BYTE_11");
5844 return KAL_FALSE;
5845 }
5846
5847 kal_mem_set(test_pattern,0,512);
5848 mcf_bytes_to_hex(&(mcf_ut_test_lid_value_pattern.val_bit_byte_11), cnf->len, KAL_FALSE, &test_pattern);
5849 mcf_toupper((char *)test_pattern);
5850
5851 if(strncmp((kal_char *)(cnf->value), test_pattern, cnf->len*2) != 0){
5852 mcf_ut_format_err_str("Config LID, VAL_BIT_BYTE_11, %s, %s\r\n", cnf->value, test_pattern);
5853 return KAL_FALSE;
5854 }
5855
5856 if(cnf->len != 1){
5857 mcf_ut_format_err_str("Config LID, VAL_BIT_BYTE_11, %d, %d\r\n", cnf->len, 1);
5858 return KAL_FALSE;
5859 }
5860
5861 free_local_para((local_para_struct *)req);
5862 free_local_para((local_para_struct *)cnf);
5863
5864 req = (l4c_mcf_config_lid_variable_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_req_struct), TD_RESET);
5865 req->op = L4C_MCF_CONFIG_LID_VARIABLE_OPERATION;
5866 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
5867 req->lid_num = 4098;
5868 req->rec_id = 1;
5869 req->len = 0;
5870 strcpy(req->tag_name, "VAL_BIT_BYTE_11.B3");
5871
5872 cnf = (l4c_mcf_config_lid_variable_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_cnf_struct), TD_RESET);
5873
5874 mcf_ret = mcf_config_LID_variable(req, cnf);
5875 if (mcf_ret != MCF_OTA_R_SUCCESS) {
5876 mcf_ut_format_err_str("Config LID variable (%s) FAIL!!\r\n", "VAL_BIT_BYTE_11.B3");
5877 return KAL_FALSE;
5878 }
5879
5880 if(strncmp((kal_char *)(cnf->value), "01", cnf->len*2) != 0){
5881 mcf_ut_format_err_str("Config LID, VAL_BIT_BYTE_11.B3, %s, %s\r\n", cnf->value, "01");
5882 return KAL_FALSE;
5883 }
5884
5885 if(cnf->len != 1){
5886 mcf_ut_format_err_str("Config LID, VAL_BIT_BYTE_11.B3, %d, %d\r\n", cnf->len, 1);
5887 return KAL_FALSE;
5888 }
5889
5890 free_local_para((local_para_struct *)req);
5891 free_local_para((local_para_struct *)cnf);
5892
5893 req = (l4c_mcf_config_lid_variable_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_req_struct), TD_RESET);
5894 req->op = L4C_MCF_CONFIG_LID_VARIABLE_OPERATION;
5895 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
5896 req->lid_num = 4098;
5897 req->rec_id = 1;
5898 req->len = 0;
5899 strcpy(req->tag_name, "val_bit_byte_12");
5900
5901 cnf = (l4c_mcf_config_lid_variable_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_cnf_struct), TD_RESET);
5902
5903 mcf_ret = mcf_config_LID_variable(req, cnf);
5904 if (mcf_ret != MCF_OTA_R_SUCCESS) {
5905 mcf_ut_format_err_str("Config LID variable (%s) FAIL!!\r\n", "val_bit_byte_12");
5906 return KAL_FALSE;
5907 }
5908
5909 kal_mem_set(test_pattern,0,512);
5910 mcf_bytes_to_hex(&(mcf_ut_test_lid_value_pattern.val_bit_byte_12), cnf->len, KAL_FALSE, &test_pattern);
5911 mcf_toupper((char *)test_pattern);
5912
5913 if(strncmp((kal_char *)(cnf->value), test_pattern, cnf->len*2) != 0){
5914 mcf_ut_format_err_str("Config LID, val_bit_byte_12, %s, %s\r\n", cnf->value, test_pattern);
5915 return KAL_FALSE;
5916 }
5917
5918 if(cnf->len != 1){
5919 mcf_ut_format_err_str("Config LID, val_bit_byte_12, %d, %d\r\n", cnf->len, 1);
5920 return KAL_FALSE;
5921 }
5922
5923 free_local_para((local_para_struct *)req);
5924 free_local_para((local_para_struct *)cnf);
5925
5926 req = (l4c_mcf_config_lid_variable_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_req_struct), TD_RESET);
5927 req->op = L4C_MCF_CONFIG_LID_VARIABLE_OPERATION;
5928 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
5929 req->lid_num = 4098;
5930 req->rec_id = 1;
5931 req->len = 0;
5932 strcpy(req->tag_name, "val_bit_byte_12.L4b");
5933
5934 cnf = (l4c_mcf_config_lid_variable_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_cnf_struct), TD_RESET);
5935
5936 mcf_ret = mcf_config_LID_variable(req, cnf);
5937 if (mcf_ret != MCF_OTA_R_SUCCESS) {
5938 mcf_ut_format_err_str("Config LID variable (%s) FAIL!!\r\n", "val_bit_byte_12.L4b");
5939 return KAL_FALSE;
5940 }
5941
5942 if(strncmp((kal_char *)(cnf->value), "0F", cnf->len*2) != 0){
5943 mcf_ut_format_err_str("Config LID, val_bit_byte_12.F4b, %s, %s\r\n", cnf->value, test_pattern);
5944 return KAL_FALSE;
5945 }
5946
5947 if(cnf->len != 1){
5948 mcf_ut_format_err_str("Config LID, val_bit_byte_12.F4b, %d, %d\r\n", cnf->len, 1);
5949 return KAL_FALSE;
5950 }
5951
5952 free_local_para((local_para_struct *)req);
5953 free_local_para((local_para_struct *)cnf);
5954
5955
5956 req = (l4c_mcf_config_lid_variable_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_req_struct), TD_RESET);
5957 req->op = L4C_MCF_CONFIG_LID_VARIABLE_OPERATION;
5958 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
5959 req->lid_num = 4098;
5960 req->rec_id = 1;
5961 req->len = 0;
5962 strcpy(req->tag_name, "val_short_11");
5963
5964 cnf = (l4c_mcf_config_lid_variable_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_cnf_struct), TD_RESET);
5965
5966 mcf_ret = mcf_config_LID_variable(req, cnf);
5967 if (mcf_ret != MCF_OTA_R_SUCCESS) {
5968 mcf_ut_format_err_str("Config LID variable (%s) FAIL!!\r\n", "val_short_11");
5969 return KAL_FALSE;
5970 }
5971
5972 kal_mem_set(test_pattern,0,512);
5973 mcf_bytes_to_hex(&(mcf_ut_test_lid_value_pattern.val_short_11), cnf->len*2, KAL_FALSE, &test_pattern);
5974 mcf_toupper((char *)test_pattern);
5975
5976 if(strncmp((kal_char *)(cnf->value), test_pattern, cnf->len*4) != 0){
5977 mcf_ut_format_err_str("Config LID, val_short_11, %s, %s\r\n", cnf->value, test_pattern);
5978 return KAL_FALSE;
5979 }
5980
5981 if(cnf->len != 1){
5982 mcf_ut_format_err_str("Config LID, val_short_11, %d, %d\r\n", cnf->len, 1);
5983 return KAL_FALSE;
5984 }
5985
5986 free_local_para((local_para_struct *)req);
5987 free_local_para((local_para_struct *)cnf);
5988
5989 req = (l4c_mcf_config_lid_variable_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_req_struct), TD_RESET);
5990 req->op = L4C_MCF_CONFIG_LID_VARIABLE_OPERATION;
5991 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
5992 req->lid_num = 4098;
5993 req->rec_id = 1;
5994 req->len = 2;
5995 strcpy(req->tag_name, "val_double_1");
5996
5997 cnf = (l4c_mcf_config_lid_variable_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_cnf_struct), TD_RESET);
5998
5999 mcf_ret = mcf_config_LID_variable(req, cnf);
6000 if (mcf_ret != MCF_OTA_R_SUCCESS) {
6001 mcf_ut_format_err_str("Config LID variable (%s) FAIL!!\r\n", "val_double_1");
6002 return KAL_FALSE;
6003 }
6004
6005 kal_mem_set(test_pattern,0,512);
6006 mcf_bytes_to_hex(&(mcf_ut_test_lid_value_pattern.val_double_1), cnf->len*8, KAL_FALSE, &test_pattern);
6007 mcf_toupper((char *)test_pattern);
6008
6009 if(strncmp((kal_char *)(cnf->value), test_pattern, cnf->len*16) != 0){
6010 mcf_ut_format_err_str("Config LID, val_double_1, %s, %s\r\n", cnf->value, test_pattern);
6011 return KAL_FALSE;
6012 }
6013
6014 if(cnf->len != 1){
6015 mcf_ut_format_err_str("Config LID, val_double_1, %d, %d\r\n", cnf->len, 1);
6016 return KAL_FALSE;
6017 }
6018
6019 free_local_para((local_para_struct *)req);
6020 free_local_para((local_para_struct *)cnf);
6021
6022 req = (l4c_mcf_config_lid_variable_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_req_struct), TD_RESET);
6023 req->op = L4C_MCF_CONFIG_LID_VARIABLE_OPERATION;
6024 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
6025 req->lid_num = 4098;
6026 req->rec_id = 1;
6027 req->len = 2;
6028 strcpy(req->tag_name, "val_buffer_1");
6029
6030 cnf = (l4c_mcf_config_lid_variable_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_cnf_struct), TD_RESET);
6031
6032 mcf_ret = mcf_config_LID_variable(req, cnf);
6033 if (mcf_ret != MCF_OTA_R_SUCCESS) {
6034 mcf_ut_format_err_str("Config LID variable (%s) FAIL!!\r\n", "val_buffer_1");
6035 return KAL_FALSE;
6036 }
6037
6038 kal_mem_set(test_pattern,0,512);
6039 mcf_bytes_to_hex(&(mcf_ut_test_lid_value_pattern.val_buffer_1), cnf->len, KAL_FALSE, &test_pattern);
6040 mcf_toupper((char *)test_pattern);
6041
6042 if(strncmp((kal_char *)(cnf->value), test_pattern, cnf->len*2) != 0){
6043 mcf_ut_format_err_str("Config LID, val_buffer_1, %s, %s\r\n", cnf->value, test_pattern);
6044 return KAL_FALSE;
6045 }
6046
6047 if(cnf->len != 2){
6048 mcf_ut_format_err_str("Config LID, val_buffer_1, %d, %d\r\n", cnf->len, 1);
6049 return KAL_FALSE;
6050 }
6051
6052 free_local_para((local_para_struct *)req);
6053 free_local_para((local_para_struct *)cnf);
6054
6055 req = (l4c_mcf_config_lid_variable_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_req_struct), TD_RESET);
6056 req->op = L4C_MCF_CONFIG_LID_VARIABLE_OPERATION;
6057 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
6058 req->lid_num = 4098;
6059 req->rec_id = 1;
6060 req->len = 0;
6061 strcpy(req->tag_name, "val_buffer_1");
6062
6063 cnf = (l4c_mcf_config_lid_variable_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_cnf_struct), TD_RESET);
6064
6065 mcf_ret = mcf_config_LID_variable(req, cnf);
6066 if (mcf_ret != MCF_OTA_R_SUCCESS) {
6067 mcf_ut_format_err_str("Config LID variable (%s) FAIL!!\r\n", "val_buffer_1");
6068 return KAL_FALSE;
6069 }
6070
6071 kal_mem_set(test_pattern,0,512);
6072 mcf_bytes_to_hex(&(mcf_ut_test_lid_value_pattern.val_buffer_1), cnf->len, KAL_FALSE, &test_pattern);
6073 mcf_toupper((char *)test_pattern);
6074
6075 if(strncmp((kal_char *)(cnf->value), test_pattern, cnf->len*2) != 0){
6076 mcf_ut_format_err_str("Config LID, val_buffer_1, %s, %s\r\n", cnf->value, test_pattern);
6077 return KAL_FALSE;
6078 }
6079
6080 if(cnf->len != 32){
6081 mcf_ut_format_err_str("Config LID, val_buffer_1, %d, %d\r\n", cnf->len, 32);
6082 return KAL_FALSE;
6083 }
6084
6085 free_local_para((local_para_struct *)req);
6086 free_local_para((local_para_struct *)cnf);
6087
6088 req = (l4c_mcf_config_lid_variable_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_req_struct), TD_RESET);
6089 req->op = L4C_MCF_CONFIG_LID_VARIABLE_OPERATION;
6090 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
6091 req->lid_num = 4098;
6092 req->rec_id = 1;
6093 req->len = 2;
6094 strcpy(req->tag_name, "val_buffer_1[0]");
6095
6096 cnf = (l4c_mcf_config_lid_variable_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_cnf_struct), TD_RESET);
6097
6098 mcf_ret = mcf_config_LID_variable(req, cnf);
6099 if (mcf_ret != MCF_OTA_R_SUCCESS) {
6100 mcf_ut_format_err_str("Config LID variable (%s) FAIL!!\r\n", "val_buffer_1[0]");
6101 return KAL_FALSE;
6102 }
6103
6104 kal_mem_set(test_pattern,0,512);
6105 mcf_bytes_to_hex(&(mcf_ut_test_lid_value_pattern.val_buffer_1), cnf->len, KAL_FALSE, &test_pattern);
6106 mcf_toupper((char *)test_pattern);
6107
6108 if(strncmp((kal_char *)(cnf->value), test_pattern, cnf->len*2) != 0){
6109 mcf_ut_format_err_str("Config LID, val_buffer_1, %s, %s\r\n", cnf->value, test_pattern);
6110 return KAL_FALSE;
6111 }
6112
6113 if(cnf->len != 1){
6114 mcf_ut_format_err_str("Config LID, val_buffer_1, %d, %d\r\n", cnf->len, 1);
6115 return KAL_FALSE;
6116 }
6117
6118 free_local_para((local_para_struct *)req);
6119 free_local_para((local_para_struct *)cnf);
6120
6121 req = (l4c_mcf_config_lid_variable_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_req_struct), TD_RESET);
6122 req->op = L4C_MCF_CONFIG_LID_VARIABLE_OPERATION;
6123 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
6124 req->lid_num = 4098;
6125 req->rec_id = 1;
6126 req->len = 2;
6127 strcpy(req->tag_name, "val_struct_1.vfloat");
6128
6129 cnf = (l4c_mcf_config_lid_variable_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_cnf_struct), TD_RESET);
6130
6131 mcf_ret = mcf_config_LID_variable(req, cnf);
6132 if (mcf_ret != MCF_OTA_R_SUCCESS) {
6133 mcf_ut_format_err_str("Config LID variable (%s) FAIL!!\r\n", "val_struct_1.vfloat");
6134 return KAL_FALSE;
6135 }
6136
6137 kal_mem_set(test_pattern,0,512);
6138 mcf_bytes_to_hex(&(mcf_ut_test_lid_value_pattern.val_struct_1.vfloat), cnf->len*4, KAL_FALSE, &test_pattern);
6139 mcf_toupper((char *)test_pattern);
6140
6141 if(strncmp((kal_char *)(cnf->value), test_pattern, cnf->len*8) != 0){
6142 mcf_ut_format_err_str("Config LID, val_struct_1.vfloat, %s, %s\r\n", cnf->value, test_pattern);
6143 return KAL_FALSE;
6144 }
6145
6146 if(cnf->len != 1){
6147 mcf_ut_format_err_str("Config LID, val_struct_1.vfloat, %d, %d\r\n", cnf->len, 1);
6148 return KAL_FALSE;
6149 }
6150
6151 free_local_para((local_para_struct *)req);
6152 free_local_para((local_para_struct *)cnf);
6153
6154 req = (l4c_mcf_config_lid_variable_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_req_struct), TD_RESET);
6155 req->op = L4C_MCF_CONFIG_LID_VARIABLE_OPERATION;
6156 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
6157 req->lid_num = 4098;
6158 req->rec_id = 1;
6159 req->len = 2;
6160 strcpy(req->tag_name, "val_struct_3[0].vint");
6161
6162 cnf = (l4c_mcf_config_lid_variable_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_cnf_struct), TD_RESET);
6163
6164 mcf_ret = mcf_config_LID_variable(req, cnf);
6165 if (mcf_ret != MCF_OTA_R_SUCCESS) {
6166 mcf_ut_format_err_str("Config LID variable (%s) FAIL!!\r\n", "val_struct_3[0].vint");
6167 return KAL_FALSE;
6168 }
6169
6170 kal_mem_set(test_pattern,0,512);
6171 mcf_bytes_to_hex(&(mcf_ut_test_lid_value_pattern.val_struct_3[0].vint), cnf->len*4, KAL_FALSE, &test_pattern);
6172 mcf_toupper((char *)test_pattern);
6173
6174 if(strncmp((kal_char *)(cnf->value), test_pattern, cnf->len*8) != 0){
6175 mcf_ut_format_err_str("Config LID, val_struct_3[0].vint, %s, %s\r\n", cnf->value, test_pattern);
6176 return KAL_FALSE;
6177 }
6178
6179 if(cnf->len != 1){
6180 mcf_ut_format_err_str("Config LID, val_struct_3[0].vint, %d, %d\r\n", cnf->len, 1);
6181 return KAL_FALSE;
6182 }
6183
6184 free_local_para((local_para_struct *)req);
6185 free_local_para((local_para_struct *)cnf);
6186
6187 req = (l4c_mcf_config_lid_variable_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_req_struct), TD_RESET);
6188 req->op = L4C_MCF_CONFIG_LID_VARIABLE_OPERATION;
6189 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
6190 req->lid_num = 4098;
6191 req->rec_id = 1;
6192 req->len = 0;
6193 strcpy(req->tag_name, "VAL_STRUCT_3[0]");
6194
6195 cnf = (l4c_mcf_config_lid_variable_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_cnf_struct), TD_RESET);
6196
6197 mcf_ret = mcf_config_LID_variable(req, cnf);
6198 if (mcf_ret != MCF_OTA_R_SUCCESS) {
6199 mcf_ut_format_err_str("Config LID variable (%s) FAIL!!\r\n", "val_struct_3[0]");
6200 return KAL_FALSE;
6201 }
6202
6203 kal_mem_set(test_pattern,0,512);
6204 mcf_bytes_to_hex(&(mcf_ut_test_lid_value_pattern.val_struct_3[0]), cnf->len, KAL_FALSE, &test_pattern);
6205 mcf_toupper((char *)test_pattern);
6206
6207 if(strncmp((kal_char *)(cnf->value), test_pattern, 510) != 0){
6208 mcf_ut_format_err_str("Config LID, VAL_STRUCT_3[0], %s, %s\r\n", cnf->value, test_pattern);
6209 return KAL_FALSE;
6210 }
6211
6212 if(cnf->len != 255){
6213 mcf_ut_format_err_str("Config LID, VAL_STRUCT_3[0], %d, %d\r\n", cnf->len, 255);
6214 return KAL_FALSE;
6215 }
6216
6217 free_local_para((local_para_struct *)req);
6218 free_local_para((local_para_struct *)cnf);
6219
6220
6221
6222
6223 /* negative test */
6224
6225 req = (l4c_mcf_config_lid_variable_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_req_struct), TD_RESET);
6226 req->op = L4C_MCF_CONFIG_LID_VARIABLE_OPERATION;
6227 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
6228 req->lid_num = 4098;
6229 req->rec_id = 1;
6230 req->len = 0;
6231 strcpy(req->tag_name, "VAL_STRUCT_3[3].VBUFFER[2][4][5]");
6232
6233 cnf = (l4c_mcf_config_lid_variable_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_cnf_struct), TD_RESET);
6234
6235 mcf_ret = mcf_config_LID_variable(req, cnf);
6236 if (mcf_ret != MCF_OTA_R_INVALID_PARAMETER) {
6237 mcf_ut_format_err_str("Config LID variable (%s) FAIL!!\r\n", "VAL_STRUCT_3[3].VBUFFER[2][4][5]");
6238 return KAL_FALSE;
6239 }
6240
6241
6242 free_local_para((local_para_struct *)req);
6243 free_local_para((local_para_struct *)cnf);
6244
6245 /* Test TLV OTA */
6246 /* Write MCF TLV-OTA file version to NVRAM */
6247 kal_mem_set(&nv_tlvota_file, 0, sizeof(nvram_ef_mcf_tlvota_file_info_struct));
6248 strncpy(nv_tlvota_file.path, MCF_FS_DEFAULT_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN);
6249 strncpy(nv_tlvota_file.name, MCF_FS_DEFAULT_TLVOTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN);
6250 if ( !nvram_external_write_data(NVRAM_EF_MCF_TLVOTA_FILE_LID, 1, (kal_uint8 *)&nv_tlvota_file, sizeof(nvram_ef_mcf_tlvota_file_info_struct)) ) {
6251 mcf_ut_format_err_str("Fail to write MCF TLV-OTA file info to NVRAM!!\r\n");
6252 return KAL_FALSE;
6253 }
6254
6255 for (i = 0; i < MAX_SIM_NUM; i++) {
6256 tlvota_file = &(pMcf->tlvota_file[i]);
6257
6258 MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
6259 if (tlvota_file) {
6260 ret = mcf_ut_open_test_data("MCF_TLVOTA_SBP_NA_ut_normal.mcfopota", (kal_char *)(tlvota_file->buff), MCF_MAX_TLVOTA_FILE_SIZE);
6261 if (ret == KAL_FALSE) {
6262 mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_TLVOTA_SBP_NA_ut_normal.mcfopota");
6263 return KAL_FALSE;
6264 }
6265
6266 MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
6267 } else {
6268 mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! Fail to take write lock! \r\n");
6269 return KAL_FALSE;
6270 }
6271 }
6272
6273 kal_mem_set(&sbp_tag, 0, sizeof(mcf_tlvota_sbp_tag_t));
6274 sbp_tag.sbp_id = SBP_TAG_SBPID;
6275 strncpy(sbp_tag.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
6276 strncpy(sbp_tag.mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
6277
6278 req = (l4c_mcf_config_lid_variable_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_req_struct), TD_RESET);
6279 req->op = L4C_MCF_CONFIG_LID_VARIABLE_OPERATION;
6280 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OPOTA;
6281 req->lid_num = 4098;
6282 req->rec_id = 1;
6283 req->len = 0;
6284 req->ps_id = 0;
6285 strcpy(req->tag_name, "VAL_BYTE_11");
6286
6287 cnf = (l4c_mcf_config_lid_variable_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_cnf_struct), TD_RESET);
6288
6289
6290 mcf_ret = mcf_config_LID_variable(req, cnf);
6291 if (mcf_ret != MCF_OTA_R_SUCCESS) {
6292 mcf_ut_format_err_str("Config LID variable (%s) FAIL!!\r\n", "VAL_BYTE_11");
6293 return KAL_FALSE;
6294 }
6295
6296 kal_mem_set(test_pattern,0,512);
6297 mcf_bytes_to_hex(&(mcf_ut_test_lid_value_pattern.val_byte_11), cnf->len, KAL_FALSE, &test_pattern);
6298 mcf_toupper((char *)test_pattern);
6299
6300 if(strncmp((kal_char *)(cnf->value), test_pattern, cnf->len*2) != 0){
6301 mcf_ut_format_err_str("Config LID, VAL_BYTE_11, %s, %s\r\n", cnf->value, test_pattern);
6302 return KAL_FALSE;
6303 }
6304
6305 if(cnf->len != 1){
6306 mcf_ut_format_err_str("Config LID, VAL_BYTE_11, %d, %d\r\n", cnf->len, 1);
6307 return KAL_FALSE;
6308 }
6309
6310 free_local_para((local_para_struct *)req);
6311 free_local_para((local_para_struct *)cnf);
6312
6313
6314 /* Test 3-d array */
6315
6316 /* Write MCF OTA file version to NVRAM */
6317 kal_mem_set(&nv_ota_file, 0, sizeof(nvram_ef_mcf_ota_file_info_struct));
6318 strncpy(nv_ota_file.path, MCF_FS_DEFAULT_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN);
6319 strncpy(nv_ota_file.name, MCF_FS_DEFAULT_OTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN);
6320 if ( !nvram_external_write_data(NVRAM_EF_MCF_OTA_FILE_LID, 1, (kal_uint8 *)&nv_ota_file, sizeof(nvram_ef_mcf_ota_file_info_struct)) ) {
6321 mcf_ut_format_err_str("Fail to write MCF OTA file info to NVRAM!!\r\n");
6322 return KAL_FALSE;
6323 }
6324 kal_mem_set(&nv_sw_info, 0, sizeof(nvram_ef_mcf_sw_info_struct));
6325 strncpy(nv_sw_info.last_update_file.sw_version, MCF_UT_SW_VERNO, MCF_FILE_MAX_SW_VERSION_LEN);
6326 strncpy(nv_sw_info.last_update_file.gen_time, MCF_UT_GEN_TIME, MCF_FILE_MAX_GEN_TIME_LEN);
6327 strcpy(nv_sw_info.last_update_file.path, "");
6328 strcpy(nv_sw_info.last_update_file.name, "");
6329 if ( !nvram_external_write_data(NVRAM_EF_MCF_SW_INFO_LID, 1, (kal_uint8 *)&nv_sw_info, sizeof(nvram_ef_mcf_sw_info_struct)) ) {
6330 mcf_ut_format_err_str("Fail to write MCF sw info to NVRAM!!\r\n");
6331 return KAL_FALSE;
6332 }
6333
6334 /*
6335 * Apply 3-d array default OTA
6336 */
6337 MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
6338 if (ota_file) {
6339 ret = mcf_ut_open_test_data("MCF_OTA_ut_3d_array_normal.mcfota", (kal_char *)(ota_file->buff), MCF_MAX_OTA_FILE_SIZE);
6340 if (ret == KAL_FALSE) {
6341 mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_OTA_ut_3d_array_normal.mcfota");
6342 return KAL_FALSE;
6343 }
6344
6345 MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
6346 } else {
6347 mcf_ut_format_err_str("Reset LID FAIL!! Fail to take write lock! \r\n");
6348 return KAL_FALSE;
6349 }
6350
6351 mcf_ret = mcf_do_ota_full();
6352 if (mcf_ret != MCF_OTA_R_SUCCESS) {
6353 mcf_ut_format_err_str("Reset LID FAIL!! ret(%d) \r\n", mcf_ret);
6354 return KAL_FALSE;
6355 }
6356
6357 req = (l4c_mcf_config_lid_variable_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_req_struct), TD_RESET);
6358 req->op = L4C_MCF_CONFIG_LID_VARIABLE_OPERATION;
6359 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
6360 req->lid_num = 4098;
6361 req->rec_id = 1;
6362 req->len = 0;
6363 strcpy(req->tag_name, "VAL_STRUCT_3[0].ARRAY_D[4][3][2]");
6364
6365 cnf = (l4c_mcf_config_lid_variable_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_cnf_struct), TD_RESET);
6366
6367 mcf_ret = mcf_config_LID_variable(req, cnf);
6368 if (mcf_ret != MCF_OTA_R_SUCCESS) {
6369 mcf_ut_format_err_str("Config LID variable (%s) FAIL!!\r\n", "VAL_STRUCT_3[0].ARRAY_D[4][3][2]");
6370 return KAL_FALSE;
6371 }
6372
6373
6374 if(strncmp((kal_char *)(cnf->value), "06", cnf->len*2) != 0){
6375 mcf_ut_format_err_str("Config LID, VAL_STRUCT_3[0].ARRAY_D[4][3][2], %s, %s\r\n", cnf->value, "06");
6376 return KAL_FALSE;
6377 }
6378
6379 if(cnf->len != 1){
6380 mcf_ut_format_err_str("Config LID, VAL_STRUCT_3[0].ARRAY_D[4][3][2], %d, %d\r\n", cnf->len, 1);
6381 return KAL_FALSE;
6382 }
6383
6384 free_local_para((local_para_struct *)req);
6385 free_local_para((local_para_struct *)cnf);
6386
6387 req = (l4c_mcf_config_lid_variable_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_req_struct), TD_RESET);
6388 req->op = L4C_MCF_CONFIG_LID_VARIABLE_OPERATION;
6389 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
6390 req->lid_num = 4098;
6391 req->rec_id = 1;
6392 req->len = 4;
6393 strcpy(req->tag_name, "VAL_STRUCT_3[0].ARRAY_D[4][3]");
6394
6395 cnf = (l4c_mcf_config_lid_variable_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_cnf_struct), TD_RESET);
6396
6397 mcf_ret = mcf_config_LID_variable(req, cnf);
6398 if (mcf_ret != MCF_OTA_R_SUCCESS) {
6399 mcf_ut_format_err_str("Config LID variable (%s) FAIL!!\r\n", "VAL_STRUCT_3[0].ARRAY_D[4][3]");
6400 return KAL_FALSE;
6401 }
6402
6403
6404 if(strncmp((kal_char *)(cnf->value), "060606", cnf->len*2) != 0){
6405 mcf_ut_format_err_str("Config LID, VAL_STRUCT_3[0].ARRAY_D[4][3], %s, %s\r\n", cnf->value, "060606");
6406 return KAL_FALSE;
6407 }
6408
6409 if(cnf->len != 3){
6410 mcf_ut_format_err_str("Config LID, VAL_STRUCT_3[0].ARRAY_D[4][3], %d, %d\r\n", cnf->len, 3);
6411 return KAL_FALSE;
6412 }
6413
6414 free_local_para((local_para_struct *)req);
6415 free_local_para((local_para_struct *)cnf);
6416
6417 req = (l4c_mcf_config_lid_variable_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_req_struct), TD_RESET);
6418 req->op = L4C_MCF_CONFIG_LID_VARIABLE_OPERATION;
6419 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
6420 req->lid_num = 4098;
6421 req->rec_id = 1;
6422 req->len = 0;
6423 strcpy(req->tag_name, "VAL_STRUCT_3[0].ARRAY_D[4][3]");
6424
6425 cnf = (l4c_mcf_config_lid_variable_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_cnf_struct), TD_RESET);
6426
6427 mcf_ret = mcf_config_LID_variable(req, cnf);
6428 if (mcf_ret != MCF_OTA_R_SUCCESS) {
6429 mcf_ut_format_err_str("Config LID variable (%s) FAIL!!\r\n", "VAL_STRUCT_3[0].ARRAY_D[4][3]");
6430 return KAL_FALSE;
6431 }
6432
6433
6434 if(strncmp((kal_char *)(cnf->value), "060606", cnf->len*2) != 0){
6435 mcf_ut_format_err_str("Config LID, VAL_STRUCT_3[0].ARRAY_D[4][3], %s, %s\r\n", cnf->value, "060606");
6436 return KAL_FALSE;
6437 }
6438
6439 if(cnf->len != 3){
6440 mcf_ut_format_err_str("Config LID, VAL_STRUCT_3[0].ARRAY_D[4][3], %d, %d\r\n", cnf->len, 3);
6441 return KAL_FALSE;
6442 }
6443
6444 free_local_para((local_para_struct *)req);
6445 free_local_para((local_para_struct *)cnf);
6446
6447 req = (l4c_mcf_config_lid_variable_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_req_struct), TD_RESET);
6448 req->op = L4C_MCF_CONFIG_LID_VARIABLE_OPERATION;
6449 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
6450 req->lid_num = 4098;
6451 req->rec_id = 1;
6452 req->len = 0;
6453 strcpy(req->tag_name, "VAL_STRUCT_3[0].ARRAY_D[4]");
6454
6455 cnf = (l4c_mcf_config_lid_variable_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_cnf_struct), TD_RESET);
6456
6457 mcf_ret = mcf_config_LID_variable(req, cnf);
6458 if (mcf_ret != MCF_OTA_R_SUCCESS) {
6459 mcf_ut_format_err_str("Config LID variable (%s) FAIL!!\r\n", "VAL_STRUCT_3[0].ARRAY_D[4]");
6460 return KAL_FALSE;
6461 }
6462
6463
6464 if(strncmp((kal_char *)(cnf->value), "060606060606060606060606", cnf->len*2) != 0){
6465 mcf_ut_format_err_str("Config LID, VAL_STRUCT_3[0].ARRAY_D[4], %s, %s\r\n", cnf->value, "060606060606060606060606");
6466 return KAL_FALSE;
6467 }
6468
6469 if(cnf->len != 12){
6470 mcf_ut_format_err_str("Config LID, VAL_STRUCT_3[0].ARRAY_D[4], %d, %d\r\n", cnf->len, 12);
6471 return KAL_FALSE;
6472 }
6473
6474 free_local_para((local_para_struct *)req);
6475 free_local_para((local_para_struct *)cnf);
6476
6477 req = (l4c_mcf_config_lid_variable_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_req_struct), TD_RESET);
6478 req->op = L4C_MCF_CONFIG_LID_VARIABLE_OPERATION;
6479 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
6480 req->lid_num = 4098;
6481 req->rec_id = 1;
6482 req->len = 0;
6483 strcpy(req->tag_name, "VAL_STRUCT_3[0].ARRAY_D");
6484
6485 cnf = (l4c_mcf_config_lid_variable_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_cnf_struct), TD_RESET);
6486
6487 mcf_ret = mcf_config_LID_variable(req, cnf);
6488 if (mcf_ret != MCF_OTA_R_SUCCESS) {
6489 mcf_ut_format_err_str("Config LID variable (%s) FAIL!!\r\n", "VAL_STRUCT_3[0].ARRAY_D");
6490 return KAL_FALSE;
6491 }
6492
6493
6494 if(strncmp((kal_char *)(cnf->value), "060606060606060606060606060606060606060606060606060606060606060606060606060606060606060606060606060606060606060606060606", cnf->len*2) != 0){
6495 mcf_ut_format_err_str("Config LID, VAL_STRUCT_3[0].ARRAY_D, %s, %s\r\n", cnf->value, "060606060606060606060606060606060606060606060606060606060606060606060606060606060606060606060606060606060606060606060606060606060606060606060606");
6496 return KAL_FALSE;
6497 }
6498
6499 if(cnf->len != 60){
6500 mcf_ut_format_err_str("Config LID, VAL_STRUCT_3[0].ARRAY_D, %d, %d\r\n", cnf->len, 60);
6501 return KAL_FALSE;
6502 }
6503
6504 free_local_para((local_para_struct *)req);
6505 free_local_para((local_para_struct *)cnf);
6506
6507 req = (l4c_mcf_config_lid_variable_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_req_struct), TD_RESET);
6508 req->op = L4C_MCF_CONFIG_LID_VARIABLE_OPERATION;
6509 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
6510 req->lid_num = 4098;
6511 req->rec_id = 1;
6512 req->len = 2;
6513 strcpy(req->tag_name, "VAL_STRUCT_3[0].ARRAY_D[4][2]");
6514
6515 cnf = (l4c_mcf_config_lid_variable_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_cnf_struct), TD_RESET);
6516
6517 mcf_ret = mcf_config_LID_variable(req, cnf);
6518 if (mcf_ret != MCF_OTA_R_SUCCESS) {
6519 mcf_ut_format_err_str("Config LID variable (%s) FAIL!!\r\n", "VAL_STRUCT_3[0].ARRAY_D[4][2]");
6520 return KAL_FALSE;
6521 }
6522
6523
6524 if(strncmp((kal_char *)(cnf->value), "0606", cnf->len*2) != 0){
6525 mcf_ut_format_err_str("Config LID, VAL_STRUCT_3[0].ARRAY_D[4][2], %s, %s\r\n", cnf->value, "0606");
6526 return KAL_FALSE;
6527 }
6528
6529 if(cnf->len != 2){
6530 mcf_ut_format_err_str("Config LID, VAL_STRUCT_3[0].ARRAY_D[4][2], %d, %d\r\n", cnf->len, 2);
6531 return KAL_FALSE;
6532 }
6533
6534 free_local_para((local_para_struct *)req);
6535 free_local_para((local_para_struct *)cnf);
6536
6537 req = (l4c_mcf_config_lid_variable_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_req_struct), TD_RESET);
6538 req->op = L4C_MCF_CONFIG_LID_VARIABLE_OPERATION;
6539 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
6540 req->lid_num = 4098;
6541 req->rec_id = 1;
6542 req->len = 10;
6543 strcpy(req->tag_name, "VAL_STRUCT_3[0].ARRAY_D[3]");
6544
6545 cnf = (l4c_mcf_config_lid_variable_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_cnf_struct), TD_RESET);
6546
6547 mcf_ret = mcf_config_LID_variable(req, cnf);
6548 if (mcf_ret != MCF_OTA_R_SUCCESS) {
6549 mcf_ut_format_err_str("Config LID variable (%s) FAIL!!\r\n", "VAL_STRUCT_3[0].ARRAY_D[3]");
6550 return KAL_FALSE;
6551 }
6552
6553
6554 if(strncmp((kal_char *)(cnf->value), "06060606060606060606", cnf->len*2) != 0){
6555 mcf_ut_format_err_str("Config LID, VAL_STRUCT_3[0].ARRAY_D[3], %s, %s\r\n", cnf->value, "06060606060606060606");
6556 return KAL_FALSE;
6557 }
6558
6559 if(cnf->len != 10){
6560 mcf_ut_format_err_str("Config LID, VAL_STRUCT_3[0].ARRAY_D[3], %d, %d\r\n", cnf->len, 2);
6561 return KAL_FALSE;
6562 }
6563
6564 free_local_para((local_para_struct *)req);
6565 free_local_para((local_para_struct *)cnf);
6566
6567
6568 /* Different variable size */
6569
6570 req = (l4c_mcf_config_lid_variable_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_req_struct), TD_RESET);
6571 req->op = L4C_MCF_CONFIG_LID_VARIABLE_OPERATION;
6572 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
6573 req->lid_num = 4098;
6574 req->rec_id = 1;
6575 req->len = 0;
6576 strcpy(req->tag_name, "VAL_STRUCT_3[0].ARRAY_D4[4][3][2]");
6577
6578 cnf = (l4c_mcf_config_lid_variable_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_cnf_struct), TD_RESET);
6579
6580 mcf_ret = mcf_config_LID_variable(req, cnf);
6581 if (mcf_ret != MCF_OTA_R_SUCCESS) {
6582 mcf_ut_format_err_str("Config LID variable (%s) FAIL!!\r\n", "VAL_STRUCT_3[0].ARRAY_D4[4][3][2]");
6583 return KAL_FALSE;
6584 }
6585
6586
6587 if(strncmp((kal_char *)(cnf->value), "06000000", cnf->len*8) != 0){
6588 mcf_ut_format_err_str("Config LID, VAL_STRUCT_3[0].ARRAY_D4[4][3][2], %s, %s\r\n", cnf->value, "06000000");
6589 return KAL_FALSE;
6590 }
6591
6592 if(cnf->len != 1){
6593 mcf_ut_format_err_str("Config LID, VAL_STRUCT_3[0].ARRAY_D4[4][3][2], %d, %d\r\n", cnf->len, 1);
6594 return KAL_FALSE;
6595 }
6596
6597 free_local_para((local_para_struct *)req);
6598 free_local_para((local_para_struct *)cnf);
6599
6600 req = (l4c_mcf_config_lid_variable_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_req_struct), TD_RESET);
6601 req->op = L4C_MCF_CONFIG_LID_VARIABLE_OPERATION;
6602 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
6603 req->lid_num = 4098;
6604 req->rec_id = 1;
6605 req->len = 0;
6606 strcpy(req->tag_name, "VAL_STRUCT_3[0].ARRAY_D4[4][3]");
6607
6608 cnf = (l4c_mcf_config_lid_variable_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_cnf_struct), TD_RESET);
6609
6610 mcf_ret = mcf_config_LID_variable(req, cnf);
6611 if (mcf_ret != MCF_OTA_R_SUCCESS) {
6612 mcf_ut_format_err_str("Config LID variable (%s) FAIL!!\r\n", "VAL_STRUCT_3[0].ARRAY_D4[4][3]");
6613 return KAL_FALSE;
6614 }
6615
6616
6617 if(strncmp((kal_char *)(cnf->value), "060000000600000006000000", cnf->len*8) != 0){
6618 mcf_ut_format_err_str("Config LID, VAL_STRUCT_3[0].ARRAY_D4[4][3], %s, %s\r\n", cnf->value, "060000000600000006000000");
6619 return KAL_FALSE;
6620 }
6621
6622 if(cnf->len != 3){
6623 mcf_ut_format_err_str("Config LID, VAL_STRUCT_3[0].ARRAY_D4[4][3], %d, %d\r\n", cnf->len, 3);
6624 return KAL_FALSE;
6625 }
6626
6627 free_local_para((local_para_struct *)req);
6628 free_local_para((local_para_struct *)cnf);
6629
6630 req = (l4c_mcf_config_lid_variable_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_req_struct), TD_RESET);
6631 req->op = L4C_MCF_CONFIG_LID_VARIABLE_OPERATION;
6632 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
6633 req->lid_num = 4098;
6634 req->rec_id = 1;
6635 req->len = 0;
6636 strcpy(req->tag_name, "VAL_STRUCT_3[0].ARRAY_D4[4]");
6637
6638 cnf = (l4c_mcf_config_lid_variable_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_cnf_struct), TD_RESET);
6639
6640 mcf_ret = mcf_config_LID_variable(req, cnf);
6641 if (mcf_ret != MCF_OTA_R_SUCCESS) {
6642 mcf_ut_format_err_str("Config LID variable (%s) FAIL!!\r\n", "VAL_STRUCT_3[0].ARRAY_D4[4]");
6643 return KAL_FALSE;
6644 }
6645
6646
6647 if(strncmp((kal_char *)(cnf->value), "060000000600000006000000060000000600000006000000060000000600000006000000060000000600000006000000", cnf->len*8) != 0){
6648 mcf_ut_format_err_str("Config LID, VAL_STRUCT_3[0].ARRAY_D4[4], %s, %s\r\n", cnf->value, "060000000600000006000000060000000600000006000000060000000600000006000000060000000600000006000000");
6649 return KAL_FALSE;
6650 }
6651
6652 if(cnf->len != 12){
6653 mcf_ut_format_err_str("Config LID, VAL_STRUCT_3[0].ARRAY_D4[4], %d, %d\r\n", cnf->len, 12);
6654 return KAL_FALSE;
6655 }
6656
6657 free_local_para((local_para_struct *)req);
6658 free_local_para((local_para_struct *)cnf);
6659
6660 req = (l4c_mcf_config_lid_variable_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_req_struct), TD_RESET);
6661 req->op = L4C_MCF_CONFIG_LID_VARIABLE_OPERATION;
6662 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
6663 req->lid_num = 4098;
6664 req->rec_id = 1;
6665 req->len = 2;
6666 strcpy(req->tag_name, "VAL_STRUCT_3[0].ARRAY_D4[4]");
6667
6668 cnf = (l4c_mcf_config_lid_variable_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_cnf_struct), TD_RESET);
6669
6670 mcf_ret = mcf_config_LID_variable(req, cnf);
6671 if (mcf_ret != MCF_OTA_R_SUCCESS) {
6672 mcf_ut_format_err_str("Config LID variable (%s) FAIL!!\r\n", "VAL_STRUCT_3[0].ARRAY_D4[4]");
6673 return KAL_FALSE;
6674 }
6675
6676
6677 if(strncmp((kal_char *)(cnf->value), "0600000006000000", cnf->len*8) != 0){
6678 mcf_ut_format_err_str("Config LID, VAL_STRUCT_3[0].ARRAY_D4[4], %s, %s\r\n", cnf->value, "0600000006000000");
6679 return KAL_FALSE;
6680 }
6681
6682 if(cnf->len != 2){
6683 mcf_ut_format_err_str("Config LID, VAL_STRUCT_3[0].ARRAY_D4[4], %d, %d\r\n", cnf->len, 2);
6684 return KAL_FALSE;
6685 }
6686
6687 free_local_para((local_para_struct *)req);
6688 free_local_para((local_para_struct *)cnf);
6689
6690 req = (l4c_mcf_config_lid_variable_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_req_struct), TD_RESET);
6691 req->op = L4C_MCF_CONFIG_LID_VARIABLE_OPERATION;
6692 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
6693 req->lid_num = 4098;
6694 req->rec_id = 1;
6695 req->len = 2;
6696 strcpy(req->tag_name, "VAL_STRUCT_3[0].ARRAY_D4[4][2]");
6697
6698 cnf = (l4c_mcf_config_lid_variable_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_cnf_struct), TD_RESET);
6699
6700 mcf_ret = mcf_config_LID_variable(req, cnf);
6701 if (mcf_ret != MCF_OTA_R_SUCCESS) {
6702 mcf_ut_format_err_str("Config LID variable (%s) FAIL!!\r\n", "VAL_STRUCT_3[0].ARRAY_D4[4][2]");
6703 return KAL_FALSE;
6704 }
6705
6706
6707 if(strncmp((kal_char *)(cnf->value), "0600000006000000", cnf->len*8) != 0){
6708 mcf_ut_format_err_str("Config LID, VAL_STRUCT_3[0].ARRAY_D4[4], %s, %s\r\n", cnf->value, "0600000006000000");
6709 return KAL_FALSE;
6710 }
6711
6712 if(cnf->len != 2){
6713 mcf_ut_format_err_str("Config LID, VAL_STRUCT_3[0].ARRAY_D4[4], %d, %d\r\n", cnf->len, 2);
6714 return KAL_FALSE;
6715 }
6716
6717 free_local_para((local_para_struct *)req);
6718 free_local_para((local_para_struct *)cnf);
6719
6720 req = (l4c_mcf_config_lid_variable_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_req_struct), TD_RESET);
6721 req->op = L4C_MCF_CONFIG_LID_VARIABLE_OPERATION;
6722 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
6723 req->lid_num = 4098;
6724 req->rec_id = 1;
6725 req->len = 0;
6726 strcpy(req->tag_name, "VAL_STRUCT_3[0].ARRAY_D4");
6727
6728 cnf = (l4c_mcf_config_lid_variable_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_cnf_struct), TD_RESET);
6729
6730 mcf_ret = mcf_config_LID_variable(req, cnf);
6731 if (mcf_ret != MCF_OTA_R_SUCCESS) {
6732 mcf_ut_format_err_str("Config LID variable (%s) FAIL!!\r\n", "VAL_STRUCT_3[0].ARRAY_D4");
6733 return KAL_FALSE;
6734 }
6735
6736 kal_mem_set(test_pattern, 0 , 512);
6737 for (i = 0; i < cnf->len; i++){
6738 kal_mem_cpy(test_pattern+(i*8),"06000000",8);
6739 }
6740
6741 if(strncmp((kal_char *)(cnf->value), test_pattern, cnf->len*8) != 0){
6742 mcf_ut_format_err_str("Config LID, VAL_STRUCT_3[0].ARRAY_D4, %s, %s\r\n", cnf->value, test_pattern);
6743 return KAL_FALSE;
6744 }
6745
6746 if(cnf->len != 60){
6747 mcf_ut_format_err_str("Config LID, VAL_STRUCT_3[0].ARRAY_D4, %d, %d\r\n", cnf->len, 60);
6748 return KAL_FALSE;
6749 }
6750
6751 free_local_para((local_para_struct *)req);
6752 free_local_para((local_para_struct *)cnf);
6753
6754 /* Nagative test case */
6755
6756 req = (l4c_mcf_config_lid_variable_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_req_struct), TD_RESET);
6757 req->op = L4C_MCF_CONFIG_LID_VARIABLE_OPERATION;
6758 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
6759 req->lid_num = 4098;
6760 req->rec_id = 1;
6761 req->len = 0;
6762 strcpy(req->tag_name, "VAL_STRUCT_3[0].ARRAY_D[5]");
6763
6764 cnf = (l4c_mcf_config_lid_variable_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_cnf_struct), TD_RESET);
6765
6766 mcf_ret = mcf_config_LID_variable(req, cnf);
6767 if (mcf_ret != MCF_OTA_R_INVALID_PARAMETER) {
6768 mcf_ut_format_err_str("Config LID variable (%s) FAIL!!\r\n", "VAL_STRUCT_3[0].ARRAY_D[5]");
6769 return KAL_FALSE;
6770 }
6771
6772 free_local_para((local_para_struct *)req);
6773 free_local_para((local_para_struct *)cnf);
6774
6775 req = (l4c_mcf_config_lid_variable_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_req_struct), TD_RESET);
6776 req->op = L4C_MCF_CONFIG_LID_VARIABLE_OPERATION;
6777 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
6778 req->lid_num = 4098;
6779 req->rec_id = 1;
6780 req->len = 0;
6781 strcpy(req->tag_name, "VAL_STRUCT_3[4]");
6782
6783 cnf = (l4c_mcf_config_lid_variable_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_cnf_struct), TD_RESET);
6784
6785 mcf_ret = mcf_config_LID_variable(req, cnf);
6786 if (mcf_ret != MCF_OTA_R_INVALID_PARAMETER) {
6787 mcf_ut_format_err_str("Config LID variable (%s) FAIL!!\r\n", "VAL_STRUCT_3[4]");
6788 return KAL_FALSE;
6789 }
6790
6791 free_local_para((local_para_struct *)req);
6792 free_local_para((local_para_struct *)cnf);
6793
6794 /*
6795 * Apply 2bytes to bit default OTA
6796 */
6797 MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
6798 if (ota_file) {
6799 ret = mcf_ut_open_test_data("MCF_OTA_ut_2_byte_4_byte_normal.mcfota", (kal_char *)(ota_file->buff), MCF_MAX_OTA_FILE_SIZE);
6800 if (ret == KAL_FALSE) {
6801 mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_OTA_ut_2byte_normal.mcfota");
6802 return KAL_FALSE;
6803 }
6804
6805 MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
6806 } else {
6807 mcf_ut_format_err_str("Reset LID FAIL!! Fail to take write lock! \r\n");
6808 return KAL_FALSE;
6809 }
6810
6811 mcf_ret = mcf_do_ota_full();
6812 if (mcf_ret != MCF_OTA_R_SUCCESS) {
6813 mcf_ut_format_err_str("Reset LID FAIL!! ret(%d) \r\n", mcf_ret);
6814 return KAL_FALSE;
6815 }
6816
6817 req = (l4c_mcf_config_lid_variable_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_req_struct), TD_RESET);
6818 req->op = L4C_MCF_CONFIG_LID_VARIABLE_OPERATION;
6819 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
6820 req->lid_num = 4098;
6821 req->rec_id = 1;
6822 req->len = 0;
6823 strcpy(req->tag_name, "val_bit_2byte_3");
6824
6825 cnf = (l4c_mcf_config_lid_variable_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_cnf_struct), TD_RESET);
6826
6827 mcf_ret = mcf_config_LID_variable(req, cnf);
6828 if (mcf_ret != MCF_OTA_R_SUCCESS) {
6829 mcf_ut_format_err_str("Config LID variable (%s) FAIL!!\r\n", "val_bit_2byte_3");
6830 return KAL_FALSE;
6831 }
6832
6833
6834 if(strncmp((kal_char *)(cnf->value), "F02F", cnf->len*4) != 0){
6835 mcf_ut_format_err_str("Config LID, val_bit_2byte_3, %s, %s\r\n", cnf->value, "F02F");
6836 return KAL_FALSE;
6837 }
6838
6839 if(cnf->len != 2){
6840 mcf_ut_format_err_str("Config LID, val_bit_2byte_3, %d, %d\r\n", cnf->len, 2);
6841 return KAL_FALSE;
6842 }
6843
6844 free_local_para((local_para_struct *)req);
6845 free_local_para((local_para_struct *)cnf);
6846
6847 req = (l4c_mcf_config_lid_variable_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_req_struct), TD_RESET);
6848 req->op = L4C_MCF_CONFIG_LID_VARIABLE_OPERATION;
6849 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
6850 req->lid_num = 4098;
6851 req->rec_id = 1;
6852 req->len = 0;
6853 strcpy(req->tag_name, "val_bit_2byte_3.F4b");
6854
6855 cnf = (l4c_mcf_config_lid_variable_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_cnf_struct), TD_RESET);
6856
6857 mcf_ret = mcf_config_LID_variable(req, cnf);
6858 if (mcf_ret != MCF_OTA_R_SUCCESS) {
6859 mcf_ut_format_err_str("Config LID variable (%s) FAIL!!\r\n", "val_bit_2byte_3.F4b");
6860 return KAL_FALSE;
6861 }
6862
6863
6864 if(strncmp((kal_char *)(cnf->value), "00", cnf->len*2) != 0){
6865 mcf_ut_format_err_str("Config LID, val_bit_2byte_3.F4b, %s, %s\r\n", cnf->value, "00");
6866 return KAL_FALSE;
6867 }
6868
6869 if(cnf->len != 1){
6870 mcf_ut_format_err_str("Config LID, val_bit_2byte_3.F4b, %d, %d\r\n", cnf->len, 1);
6871 return KAL_FALSE;
6872 }
6873
6874 free_local_para((local_para_struct *)req);
6875 free_local_para((local_para_struct *)cnf);
6876
6877 req = (l4c_mcf_config_lid_variable_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_req_struct), TD_RESET);
6878 req->op = L4C_MCF_CONFIG_LID_VARIABLE_OPERATION;
6879 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
6880 req->lid_num = 4098;
6881 req->rec_id = 1;
6882 req->len = 0;
6883 strcpy(req->tag_name, "val_bit_2byte_3.L4b");
6884
6885 cnf = (l4c_mcf_config_lid_variable_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_cnf_struct), TD_RESET);
6886
6887 mcf_ret = mcf_config_LID_variable(req, cnf);
6888 if (mcf_ret != MCF_OTA_R_SUCCESS) {
6889 mcf_ut_format_err_str("Config LID variable (%s) FAIL!!\r\n", "val_bit_2byte_3.L4b");
6890 return KAL_FALSE;
6891 }
6892
6893
6894 if(strncmp((kal_char *)(cnf->value), "0F", cnf->len*2) != 0){
6895 mcf_ut_format_err_str("Config LID, val_bit_2byte_3.L4b, %s, %s\r\n", cnf->value, "0F");
6896 return KAL_FALSE;
6897 }
6898
6899 if(cnf->len != 1){
6900 mcf_ut_format_err_str("Config LID, val_bit_2byte_3.L4b, %d, %d\r\n", cnf->len, 1);
6901 return KAL_FALSE;
6902 }
6903
6904 free_local_para((local_para_struct *)req);
6905 free_local_para((local_para_struct *)cnf);
6906
6907 req = (l4c_mcf_config_lid_variable_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_req_struct), TD_RESET);
6908 req->op = L4C_MCF_CONFIG_LID_VARIABLE_OPERATION;
6909 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
6910 req->lid_num = 4098;
6911 req->rec_id = 1;
6912 req->len = 0;
6913 strcpy(req->tag_name, "val_bit_2byte_3.F2b");
6914
6915 cnf = (l4c_mcf_config_lid_variable_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_cnf_struct), TD_RESET);
6916
6917 mcf_ret = mcf_config_LID_variable(req, cnf);
6918 if (mcf_ret != MCF_OTA_R_SUCCESS) {
6919 mcf_ut_format_err_str("Config LID variable (%s) FAIL!!\r\n", "val_bit_2byte_3.F2b");
6920 return KAL_FALSE;
6921 }
6922
6923
6924 if(strncmp((kal_char *)(cnf->value), "03", cnf->len*2) != 0){
6925 mcf_ut_format_err_str("Config LID, val_bit_2byte_3.F2b, %s, %s\r\n", cnf->value, "03");
6926 return KAL_FALSE;
6927 }
6928
6929 if(cnf->len != 1){
6930 mcf_ut_format_err_str("Config LID, val_bit_2byte_3.F2b, %d, %d\r\n", cnf->len, 1);
6931 return KAL_FALSE;
6932 }
6933
6934 free_local_para((local_para_struct *)req);
6935 free_local_para((local_para_struct *)cnf);
6936
6937 req = (l4c_mcf_config_lid_variable_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_req_struct), TD_RESET);
6938 req->op = L4C_MCF_CONFIG_LID_VARIABLE_OPERATION;
6939 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
6940 req->lid_num = 4098;
6941 req->rec_id = 1;
6942 req->len = 0;
6943 strcpy(req->tag_name, "val_bit_2byte_3.L2b");
6944
6945 cnf = (l4c_mcf_config_lid_variable_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_cnf_struct), TD_RESET);
6946
6947 mcf_ret = mcf_config_LID_variable(req, cnf);
6948 if (mcf_ret != MCF_OTA_R_SUCCESS) {
6949 mcf_ut_format_err_str("Config LID variable (%s) FAIL!!\r\n", "val_bit_2byte_3.L2b");
6950 return KAL_FALSE;
6951 }
6952
6953
6954 if(strncmp((kal_char *)(cnf->value), "03", cnf->len*2) != 0){
6955 mcf_ut_format_err_str("Config LID, val_bit_2byte_3.L2b, %s, %s\r\n", cnf->value, "03");
6956 return KAL_FALSE;
6957 }
6958
6959 if(cnf->len != 1){
6960 mcf_ut_format_err_str("Config LID, val_bit_2byte_3.L2b, %d, %d\r\n", cnf->len, 1);
6961 return KAL_FALSE;
6962 }
6963
6964 free_local_para((local_para_struct *)req);
6965 free_local_para((local_para_struct *)cnf);
6966
6967 req = (l4c_mcf_config_lid_variable_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_req_struct), TD_RESET);
6968 req->op = L4C_MCF_CONFIG_LID_VARIABLE_OPERATION;
6969 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
6970 req->lid_num = 4098;
6971 req->rec_id = 1;
6972 req->len = 0;
6973 strcpy(req->tag_name, "val_bit_2byte_3.b2");
6974
6975 cnf = (l4c_mcf_config_lid_variable_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_cnf_struct), TD_RESET);
6976
6977 mcf_ret = mcf_config_LID_variable(req, cnf);
6978 if (mcf_ret != MCF_OTA_R_SUCCESS) {
6979 mcf_ut_format_err_str("Config LID variable (%s) FAIL!!\r\n", "val_bit_2byte_3.b2");
6980 return KAL_FALSE;
6981 }
6982
6983
6984 if(strncmp((kal_char *)(cnf->value), "01", cnf->len*2) != 0){
6985 mcf_ut_format_err_str("Config LID, val_bit_2byte_3.b2, %s, %s\r\n", cnf->value, "01");
6986 return KAL_FALSE;
6987 }
6988
6989 if(cnf->len != 1){
6990 mcf_ut_format_err_str("Config LID, val_bit_2byte_3.b2, %d, %d\r\n", cnf->len, 1);
6991 return KAL_FALSE;
6992 }
6993
6994 free_local_para((local_para_struct *)req);
6995 free_local_para((local_para_struct *)cnf);
6996
6997 req = (l4c_mcf_config_lid_variable_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_req_struct), TD_RESET);
6998 req->op = L4C_MCF_CONFIG_LID_VARIABLE_OPERATION;
6999 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
7000 req->lid_num = 4098;
7001 req->rec_id = 1;
7002 req->len = 0;
7003 strcpy(req->tag_name, "val_bit_4byte_3");
7004
7005 cnf = (l4c_mcf_config_lid_variable_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_cnf_struct), TD_RESET);
7006
7007 mcf_ret = mcf_config_LID_variable(req, cnf);
7008 if (mcf_ret != MCF_OTA_R_SUCCESS) {
7009 mcf_ut_format_err_str("Config LID variable (%s) FAIL!!\r\n", "val_bit_4byte_3");
7010 return KAL_FALSE;
7011 }
7012
7013
7014 if(strncmp((kal_char *)(cnf->value), "0001FE0F", cnf->len*2) != 0){
7015 mcf_ut_format_err_str("Config LID, val_bit_4byte_3, %s, %s\r\n", cnf->value, "0001FE0F");
7016 return KAL_FALSE;
7017 }
7018
7019 if(cnf->len != 4){
7020 mcf_ut_format_err_str("Config LID, val_bit_4byte_3, %d, %d\r\n", cnf->len, 4);
7021 return KAL_FALSE;
7022 }
7023
7024 free_local_para((local_para_struct *)req);
7025 free_local_para((local_para_struct *)cnf);
7026
7027 req = (l4c_mcf_config_lid_variable_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_req_struct), TD_RESET);
7028 req->op = L4C_MCF_CONFIG_LID_VARIABLE_OPERATION;
7029 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
7030 req->lid_num = 4098;
7031 req->rec_id = 1;
7032 req->len = 0;
7033 strcpy(req->tag_name, "val_bit_4byte_3.F9b");
7034
7035 cnf = (l4c_mcf_config_lid_variable_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_cnf_struct), TD_RESET);
7036
7037 mcf_ret = mcf_config_LID_variable(req, cnf);
7038 if (mcf_ret != MCF_OTA_R_SUCCESS) {
7039 mcf_ut_format_err_str("Config LID variable (%s) FAIL!!\r\n", "val_bit_4byte_3.F9b");
7040 return KAL_FALSE;
7041 }
7042
7043
7044 if(strncmp((kal_char *)(cnf->value), "0001", cnf->len*2) != 0){
7045 mcf_ut_format_err_str("Config LID, val_bit_4byte_3.F9b, %s, %s\r\n", cnf->value, "0001");
7046 return KAL_FALSE;
7047 }
7048
7049 if(cnf->len != 2){
7050 mcf_ut_format_err_str("Config LID, val_bit_4byte_3.F9b, %d, %d\r\n", cnf->len, 2);
7051 return KAL_FALSE;
7052 }
7053
7054 free_local_para((local_para_struct *)req);
7055 free_local_para((local_para_struct *)cnf);
7056
7057 req = (l4c_mcf_config_lid_variable_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_req_struct), TD_RESET);
7058 req->op = L4C_MCF_CONFIG_LID_VARIABLE_OPERATION;
7059 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
7060 req->lid_num = 4098;
7061 req->rec_id = 1;
7062 req->len = 0;
7063 strcpy(req->tag_name, "val_bit_4byte_3.F4b");
7064
7065 cnf = (l4c_mcf_config_lid_variable_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_cnf_struct), TD_RESET);
7066
7067 mcf_ret = mcf_config_LID_variable(req, cnf);
7068 if (mcf_ret != MCF_OTA_R_SUCCESS) {
7069 mcf_ut_format_err_str("Config LID variable (%s) FAIL!!\r\n", "val_bit_4byte_3.F4b");
7070 return KAL_FALSE;
7071 }
7072
7073
7074 if(strncmp((kal_char *)(cnf->value), "0F", cnf->len*2) != 0){
7075 mcf_ut_format_err_str("Config LID, val_bit_4byte_3.F4b, %s, %s\r\n", cnf->value, "0F");
7076 return KAL_FALSE;
7077 }
7078
7079 if(cnf->len != 1){
7080 mcf_ut_format_err_str("Config LID, val_bit_4byte_3.F4b, %d, %d\r\n", cnf->len, 1);
7081 return KAL_FALSE;
7082 }
7083
7084 free_local_para((local_para_struct *)req);
7085 free_local_para((local_para_struct *)cnf);
7086
7087 req = (l4c_mcf_config_lid_variable_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_req_struct), TD_RESET);
7088 req->op = L4C_MCF_CONFIG_LID_VARIABLE_OPERATION;
7089 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
7090 req->lid_num = 4098;
7091 req->rec_id = 1;
7092 req->len = 0;
7093 strcpy(req->tag_name, "val_bit_4byte_3.F2b");
7094
7095 cnf = (l4c_mcf_config_lid_variable_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_cnf_struct), TD_RESET);
7096
7097 mcf_ret = mcf_config_LID_variable(req, cnf);
7098 if (mcf_ret != MCF_OTA_R_SUCCESS) {
7099 mcf_ut_format_err_str("Config LID variable (%s) FAIL!!\r\n", "val_bit_4byte_3.F2b");
7100 return KAL_FALSE;
7101 }
7102
7103
7104 if(strncmp((kal_char *)(cnf->value), "03", cnf->len*2) != 0){
7105 mcf_ut_format_err_str("Config LID, val_bit_4byte_3.F2b, %s, %s\r\n", cnf->value, "03");
7106 return KAL_FALSE;
7107 }
7108
7109 if(cnf->len != 1){
7110 mcf_ut_format_err_str("Config LID, val_bit_4byte_3.F2b, %d, %d\r\n", cnf->len, 1);
7111 return KAL_FALSE;
7112 }
7113
7114 free_local_para((local_para_struct *)req);
7115 free_local_para((local_para_struct *)cnf);
7116
7117 MCF_UT_PASS();
7118 return KAL_TRUE;
7119}
7120
7121kal_bool mcf_ut_query_variable_value(void *p_param, kal_char *p_ret_err_str, kal_uint32 *p_ret_err_str_sz)
7122{
7123 kal_bool ret;
7124 l4c_mcf_variable_value_operation_req_struct *req = NULL;
7125 l4c_mcf_variable_value_operation_cnf_struct *cnf = NULL;
7126 mcf_ota_result_e mcf_ret = MCF_OTA_R_SUCCESS;
7127 mcf_t *pMcf = mcf_get_instance();
7128 mcf_ota_file_t *ota_file = &(pMcf->ota_file);
7129 mcf_tool_file_info_t *pFile = (mcf_tool_file_info_t *)(ota_file->buff);
7130 nvram_ef_mcf_ota_file_info_struct nv_ota_file;
7131 nvram_ef_mcf_sw_info_struct nv_sw_info;
7132 mcf_tlvota_file_t *tlvota_file;
7133 nvram_ef_mcf_tlvota_file_info_struct nv_tlvota_file;
7134 mcf_tlvota_sbp_tag_t sbp_tag;
7135 kal_uint8 i;
7136 kal_uint8 test_pattern[512];
7137 kal_uint8 array_tag[16];
7138 nvram_ef_mcf_test_struct nv_lid_buffer;
7139
7140#ifdef __MCF_FIND_TAG_SUPPORT__
7141 /* Write MCF OTA file version to NVRAM */
7142 kal_mem_set(&nv_ota_file, 0, sizeof(nvram_ef_mcf_ota_file_info_struct));
7143 strncpy(nv_ota_file.path, MCF_FS_DEFAULT_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN);
7144 strncpy(nv_ota_file.name, MCF_FS_DEFAULT_OTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN);
7145 if ( !nvram_external_write_data(NVRAM_EF_MCF_OTA_FILE_LID, 1, (kal_uint8 *)&nv_ota_file, sizeof(nvram_ef_mcf_ota_file_info_struct)) ) {
7146 mcf_ut_format_err_str("Fail to write MCF OTA file info to NVRAM!!\r\n");
7147 return KAL_FALSE;
7148 }
7149 kal_mem_set(&nv_sw_info, 0, sizeof(nvram_ef_mcf_sw_info_struct));
7150 strncpy(nv_sw_info.last_update_file.sw_version, MCF_UT_SW_VERNO, MCF_FILE_MAX_SW_VERSION_LEN);
7151 strncpy(nv_sw_info.last_update_file.gen_time, MCF_UT_GEN_TIME, MCF_FILE_MAX_GEN_TIME_LEN);
7152 strcpy(nv_sw_info.last_update_file.path, "");
7153 strcpy(nv_sw_info.last_update_file.name, "");
7154 if ( !nvram_external_write_data(NVRAM_EF_MCF_SW_INFO_LID, 1, (kal_uint8 *)&nv_sw_info, sizeof(nvram_ef_mcf_sw_info_struct)) ) {
7155 mcf_ut_format_err_str("Fail to write MCF sw info to NVRAM!!\r\n");
7156 return KAL_FALSE;
7157 }
7158
7159 /*
7160 * Apply default OTA
7161 */
7162 MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
7163 if (ota_file) {
7164 ret = mcf_ut_open_test_data("MCF_OTA_ut_normal.mcfota", (kal_char *)(ota_file->buff), MCF_MAX_OTA_FILE_SIZE);
7165 if (ret == KAL_FALSE) {
7166 mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_OTA_ut_normal.mcfota");
7167 return KAL_FALSE;
7168 }
7169
7170 MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
7171 } else {
7172 mcf_ut_format_err_str("Reset LID FAIL!! Fail to take write lock! \r\n");
7173 return KAL_FALSE;
7174 }
7175
7176 mcf_ret = mcf_do_ota_full();
7177 if (mcf_ret != MCF_OTA_R_SUCCESS) {
7178 mcf_ut_format_err_str("Reset LID FAIL!! ret(%d) \r\n", mcf_ret);
7179 return KAL_FALSE;
7180 }
7181
7182 ret = mcf_check_test_lid_value(NULL);
7183 if (ret == KAL_FALSE) {
7184 mcf_ut_format_err_str("Reset LID FAIL!!\r\n");
7185 return KAL_FALSE;
7186 }
7187 //Byte operation
7188 req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
7189 req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
7190 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
7191 req->format = L4C_MCF_QUERY_VARIABLE_FORM_PATH;
7192 req->num = 4098;
7193 req->rec_id = 1;
7194 req->len = 0;
7195 strcpy(req->config, "VAL_BYTE_11");
7196
7197 cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
7198
7199
7200 mcf_ret = mcf_query_variable_value(req, cnf);
7201 if (mcf_ret != MCF_OTA_R_SUCCESS) {
7202 mcf_ut_format_err_str("Query Variable Value (%s) FAIL!!\r\n", "VAL_BYTE_11");
7203 return KAL_FALSE;
7204 }
7205
7206 kal_mem_set(test_pattern,0,512);
7207 mcf_bytes_to_hex(&(mcf_ut_test_lid_value_pattern.val_byte_11), cnf->len, KAL_FALSE, &test_pattern);
7208 mcf_toupper((char *)test_pattern);
7209
7210 if(strncmp((kal_char *)(cnf->value), test_pattern, cnf->len*2) != 0){
7211 mcf_ut_format_err_str("VAL_BYTE_11, %s, %s\r\n", cnf->value, test_pattern);
7212 return KAL_FALSE;
7213 }
7214
7215 if(cnf->len != 1){
7216 mcf_ut_format_err_str("VAL_BYTE_11, %d, %d\r\n", cnf->len, 1);
7217 return KAL_FALSE;
7218 }
7219
7220 free_local_para((local_para_struct *)req);
7221 free_local_para((local_para_struct *)cnf);
7222
7223 //Bit operation
7224 req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
7225 req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
7226 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
7227 req->format = L4C_MCF_QUERY_VARIABLE_FORM_PATH;
7228 req->num = 4098;
7229 req->rec_id = 1;
7230 req->len = 0;
7231 strcpy(req->config, "VAL_BIT_BYTE_11");
7232
7233 cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
7234
7235 mcf_ret = mcf_query_variable_value(req, cnf);
7236 if (mcf_ret != MCF_OTA_R_SUCCESS) {
7237 mcf_ut_format_err_str("Query Variable Value (%s) FAIL!!\r\n", "VAL_BYTE_11");
7238 return KAL_FALSE;
7239 }
7240
7241 kal_mem_set(test_pattern,0,512);
7242 mcf_bytes_to_hex(&(mcf_ut_test_lid_value_pattern.val_bit_byte_11), cnf->len, KAL_FALSE, &test_pattern);
7243 mcf_toupper((char *)test_pattern);
7244
7245 if(strncmp((kal_char *)(cnf->value), test_pattern, cnf->len*2) != 0){
7246 mcf_ut_format_err_str("VAL_BIT_BYTE_11, %s, %s\r\n", cnf->value, test_pattern);
7247 return KAL_FALSE;
7248 }
7249
7250 if(cnf->len != 1){
7251 mcf_ut_format_err_str("VAL_BIT_BYTE_11, %d, %d\r\n", cnf->len, 1);
7252 return KAL_FALSE;
7253 }
7254
7255 free_local_para((local_para_struct *)req);
7256 free_local_para((local_para_struct *)cnf);
7257
7258 req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
7259 req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
7260 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
7261 req->format = L4C_MCF_QUERY_VARIABLE_FORM_PATH;
7262 req->num = 4098;
7263 req->rec_id = 1;
7264 req->len = 0;
7265 strcpy(req->config, "VAL_BIT_BYTE_11.B3");
7266
7267 cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
7268
7269 mcf_ret = mcf_query_variable_value(req, cnf);
7270 if (mcf_ret != MCF_OTA_R_SUCCESS) {
7271 mcf_ut_format_err_str("Query Variable Value (%s) FAIL!!\r\n", "VAL_BYTE_11.B3");
7272 return KAL_FALSE;
7273 }
7274
7275 if(strncmp((kal_char *)(cnf->value), "01", cnf->len*2) != 0){
7276 mcf_ut_format_err_str("VAL_BIT_BYTE_11.B3, %s, %s\r\n", cnf->value, "01");
7277 return KAL_FALSE;
7278 }
7279
7280 if(cnf->len != 1){
7281 mcf_ut_format_err_str("VAL_BIT_BYTE_11.B3, %d, %d\r\n", cnf->len, 1);
7282 return KAL_FALSE;
7283 }
7284
7285 free_local_para((local_para_struct *)req);
7286 free_local_para((local_para_struct *)cnf);
7287
7288 req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
7289 req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
7290 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
7291 req->format = L4C_MCF_QUERY_VARIABLE_FORM_PATH;
7292 req->num = 4098;
7293 req->rec_id = 1;
7294 req->len = 0;
7295 strcpy(req->config, "val_bit_byte_12");
7296
7297 cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
7298
7299 mcf_ret = mcf_query_variable_value(req, cnf);
7300 if (mcf_ret != MCF_OTA_R_SUCCESS) {
7301 mcf_ut_format_err_str("Query Variable Value (%s) FAIL!!\r\n", "val_bit_byte_12");
7302 return KAL_FALSE;
7303 }
7304
7305 kal_mem_set(test_pattern,0,512);
7306 mcf_bytes_to_hex(&(mcf_ut_test_lid_value_pattern.val_bit_byte_12), cnf->len, KAL_FALSE, &test_pattern);
7307 mcf_toupper((char *)test_pattern);
7308
7309 if(strncmp((kal_char *)(cnf->value), test_pattern, cnf->len*2) != 0){
7310 mcf_ut_format_err_str("val_bit_byte_12, %s, %s\r\n", cnf->value, test_pattern);
7311 return KAL_FALSE;
7312 }
7313
7314 if(cnf->len != 1){
7315 mcf_ut_format_err_str("val_bit_byte_12, %d, %d\r\n", cnf->len, 1);
7316 return KAL_FALSE;
7317 }
7318
7319 free_local_para((local_para_struct *)req);
7320 free_local_para((local_para_struct *)cnf);
7321
7322 req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
7323 req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
7324 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
7325 req->format = L4C_MCF_QUERY_VARIABLE_FORM_PATH;
7326 req->num = 4098;
7327 req->rec_id = 1;
7328 req->len = 0;
7329 strcpy(req->config, "val_bit_byte_12.L4b");
7330
7331 cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
7332
7333 mcf_ret = mcf_query_variable_value(req, cnf);
7334 if (mcf_ret != MCF_OTA_R_SUCCESS) {
7335 mcf_ut_format_err_str("Query Variable Value (%s) FAIL!!\r\n", "val_bit_byte_12.L4b");
7336 return KAL_FALSE;
7337 }
7338
7339 if(strncmp((kal_char *)(cnf->value), "0F", cnf->len*2) != 0){
7340 mcf_ut_format_err_str("val_bit_byte_12.F4b, %s, %s\r\n", cnf->value, test_pattern);
7341 return KAL_FALSE;
7342 }
7343
7344 if(cnf->len != 1){
7345 mcf_ut_format_err_str("val_bit_byte_12.F4b, %d, %d\r\n", cnf->len, 1);
7346 return KAL_FALSE;
7347 }
7348
7349 free_local_para((local_para_struct *)req);
7350 free_local_para((local_para_struct *)cnf);
7351
7352 //short operation
7353 req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
7354 req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
7355 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
7356 req->format = L4C_MCF_QUERY_VARIABLE_FORM_PATH;
7357 req->num = 4098;
7358 req->rec_id = 1;
7359 req->len = 0;
7360 strcpy(req->config, "val_short_11");
7361
7362 cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
7363
7364 mcf_ret = mcf_query_variable_value(req, cnf);
7365 if (mcf_ret != MCF_OTA_R_SUCCESS) {
7366 mcf_ut_format_err_str("Query Variable Value (%s) FAIL!!\r\n", "val_short_11");
7367 return KAL_FALSE;
7368 }
7369
7370 kal_mem_set(test_pattern,0,512);
7371 mcf_bytes_to_hex(&(mcf_ut_test_lid_value_pattern.val_short_11), cnf->len*2, KAL_FALSE, &test_pattern);
7372 mcf_toupper((char *)test_pattern);
7373
7374 if(strncmp((kal_char *)(cnf->value), test_pattern, cnf->len*4) != 0){
7375 mcf_ut_format_err_str("val_short_11, %s, %s\r\n", cnf->value, test_pattern);
7376 return KAL_FALSE;
7377 }
7378
7379 if(cnf->len != 1){
7380 mcf_ut_format_err_str("val_short_11, %d, %d\r\n", cnf->len, 1);
7381 return KAL_FALSE;
7382 }
7383
7384 free_local_para((local_para_struct *)req);
7385 free_local_para((local_para_struct *)cnf);
7386
7387
7388 //double operation
7389 req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
7390 req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
7391 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
7392 req->format = L4C_MCF_QUERY_VARIABLE_FORM_PATH;
7393 req->num = 4098;
7394 req->rec_id = 1;
7395 req->len = 2;
7396 strcpy(req->config, "val_double_1");
7397
7398 cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
7399
7400 mcf_ret = mcf_query_variable_value(req, cnf);
7401 if (mcf_ret != MCF_OTA_R_SUCCESS) {
7402 mcf_ut_format_err_str("Query Variable Value (%s) FAIL!!\r\n", "val_double_1");
7403 return KAL_FALSE;
7404 }
7405
7406 kal_mem_set(test_pattern,0,512);
7407 mcf_bytes_to_hex(&(mcf_ut_test_lid_value_pattern.val_double_1), cnf->len*8, KAL_FALSE, &test_pattern);
7408 mcf_toupper((char *)test_pattern);
7409
7410 if(strncmp((kal_char *)(cnf->value), test_pattern, cnf->len*16) != 0){
7411 mcf_ut_format_err_str("val_double_1, %s, %s\r\n", cnf->value, test_pattern);
7412 return KAL_FALSE;
7413 }
7414
7415 if(cnf->len != 1){
7416 mcf_ut_format_err_str("val_double_1, %d, %d\r\n", cnf->len, 1);
7417 return KAL_FALSE;
7418 }
7419
7420 free_local_para((local_para_struct *)req);
7421 free_local_para((local_para_struct *)cnf);
7422
7423 //buffer operation with len = 2
7424 req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
7425 req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
7426 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
7427 req->format = L4C_MCF_QUERY_VARIABLE_FORM_PATH;
7428 req->num = 4098;
7429 req->rec_id = 1;
7430 req->len = 2;
7431 strcpy(req->config, "val_buffer_1");
7432
7433 cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
7434
7435 mcf_ret = mcf_query_variable_value(req, cnf);
7436 if (mcf_ret != MCF_OTA_R_SUCCESS) {
7437 mcf_ut_format_err_str("Query Variable Value (%s) FAIL!!\r\n", "val_buffer_1");
7438 return KAL_FALSE;
7439 }
7440
7441 kal_mem_set(test_pattern,0,512);
7442 mcf_bytes_to_hex(&(mcf_ut_test_lid_value_pattern.val_buffer_1), cnf->len, KAL_FALSE, &test_pattern);
7443 mcf_toupper((char *)test_pattern);
7444
7445 if(strncmp((kal_char *)(cnf->value), test_pattern, cnf->len*2) != 0){
7446 mcf_ut_format_err_str("val_buffer_1, %s, %s\r\n", cnf->value, test_pattern);
7447 return KAL_FALSE;
7448 }
7449
7450 if(cnf->len != 2){
7451 mcf_ut_format_err_str("val_buffer_1, %d, %d\r\n", cnf->len, 1);
7452 return KAL_FALSE;
7453 }
7454
7455 free_local_para((local_para_struct *)req);
7456 free_local_para((local_para_struct *)cnf);
7457
7458 //buffer operation - read all buffer
7459 req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
7460 req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
7461 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
7462 req->format = L4C_MCF_QUERY_VARIABLE_FORM_PATH;
7463 req->num = 4098;
7464 req->rec_id = 1;
7465 req->len = 0;
7466 strcpy(req->config, "val_buffer_1");
7467
7468 cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
7469
7470 mcf_ret = mcf_query_variable_value(req, cnf);
7471 if (mcf_ret != MCF_OTA_R_SUCCESS) {
7472 mcf_ut_format_err_str("Query Variable Value (%s) FAIL!!\r\n", "val_buffer_1");
7473 return KAL_FALSE;
7474 }
7475
7476 kal_mem_set(test_pattern,0,512);
7477 mcf_bytes_to_hex(&(mcf_ut_test_lid_value_pattern.val_buffer_1), cnf->len, KAL_FALSE, &test_pattern);
7478 mcf_toupper((char *)test_pattern);
7479
7480 if(strncmp((kal_char *)(cnf->value), test_pattern, cnf->len*2) != 0){
7481 mcf_ut_format_err_str("val_buffer_1, %s, %s\r\n", cnf->value, test_pattern);
7482 return KAL_FALSE;
7483 }
7484
7485 if(cnf->len != 32){
7486 mcf_ut_format_err_str("val_buffer_1, %d, %d\r\n", cnf->len, 32);
7487 return KAL_FALSE;
7488 }
7489
7490 free_local_para((local_para_struct *)req);
7491 free_local_para((local_para_struct *)cnf);
7492
7493 //buffer operation
7494 req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
7495 req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
7496 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
7497 req->format = L4C_MCF_QUERY_VARIABLE_FORM_PATH;
7498 req->num = 4098;
7499 req->rec_id = 1;
7500 req->len = 2;
7501 strcpy(req->config, "val_buffer_1[0]");
7502
7503 cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
7504
7505 mcf_ret = mcf_query_variable_value(req, cnf);
7506 if (mcf_ret != MCF_OTA_R_SUCCESS) {
7507 mcf_ut_format_err_str("Query Variable Value (%s) FAIL!!\r\n", "val_buffer_1[0]");
7508 return KAL_FALSE;
7509 }
7510
7511 kal_mem_set(test_pattern,0,512);
7512 mcf_bytes_to_hex(&(mcf_ut_test_lid_value_pattern.val_buffer_1), cnf->len, KAL_FALSE, &test_pattern);
7513 mcf_toupper((char *)test_pattern);
7514
7515 if(strncmp((kal_char *)(cnf->value), test_pattern, cnf->len*2) != 0){
7516 mcf_ut_format_err_str("val_buffer_1, %s, %s\r\n", cnf->value, test_pattern);
7517 return KAL_FALSE;
7518 }
7519
7520 if(cnf->len != 1){
7521 mcf_ut_format_err_str("val_buffer_1, %d, %d\r\n", cnf->len, 1);
7522 return KAL_FALSE;
7523 }
7524
7525 free_local_para((local_para_struct *)req);
7526 free_local_para((local_para_struct *)cnf);
7527
7528 //float operation
7529 req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
7530 req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
7531 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
7532 req->format = L4C_MCF_QUERY_VARIABLE_FORM_PATH;
7533 req->num = 4098;
7534 req->rec_id = 1;
7535 req->len = 2;
7536 strcpy(req->config, "val_struct_1.vfloat");
7537
7538 cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
7539
7540 mcf_ret = mcf_query_variable_value(req, cnf);
7541 if (mcf_ret != MCF_OTA_R_SUCCESS) {
7542 mcf_ut_format_err_str("Query Variable Value (%s) FAIL!!\r\n", "val_struct_1.vfloat");
7543 return KAL_FALSE;
7544 }
7545
7546 kal_mem_set(test_pattern,0,512);
7547 mcf_bytes_to_hex(&(mcf_ut_test_lid_value_pattern.val_struct_1.vfloat), cnf->len*4, KAL_FALSE, &test_pattern);
7548 mcf_toupper((char *)test_pattern);
7549
7550 if(strncmp((kal_char *)(cnf->value), test_pattern, cnf->len*8) != 0){
7551 mcf_ut_format_err_str("val_struct_1.vfloat, %s, %s\r\n", cnf->value, test_pattern);
7552 return KAL_FALSE;
7553 }
7554
7555 if(cnf->len != 1){
7556 mcf_ut_format_err_str("val_struct_1.vfloat, %d, %d\r\n", cnf->len, 1);
7557 return KAL_FALSE;
7558 }
7559
7560 free_local_para((local_para_struct *)req);
7561 free_local_para((local_para_struct *)cnf);
7562
7563 //int in struct operation
7564 req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
7565 req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
7566 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
7567 req->format = L4C_MCF_QUERY_VARIABLE_FORM_PATH;
7568 req->num = 4098;
7569 req->rec_id = 1;
7570 req->len = 2;
7571 strcpy(req->config, "val_struct_3[0].vint");
7572
7573 cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
7574
7575 mcf_ret = mcf_query_variable_value(req, cnf);
7576 if (mcf_ret != MCF_OTA_R_SUCCESS) {
7577 mcf_ut_format_err_str("Query Variable Value (%s) FAIL!!\r\n", "val_struct_3[0].vint");
7578 return KAL_FALSE;
7579 }
7580
7581 kal_mem_set(test_pattern,0,512);
7582 mcf_bytes_to_hex(&(mcf_ut_test_lid_value_pattern.val_struct_3[0].vint), cnf->len*4, KAL_FALSE, &test_pattern);
7583 mcf_toupper((char *)test_pattern);
7584
7585 if(strncmp((kal_char *)(cnf->value), test_pattern, cnf->len*8) != 0){
7586 mcf_ut_format_err_str("val_struct_3[0].vint, %s, %s\r\n", cnf->value, test_pattern);
7587 return KAL_FALSE;
7588 }
7589
7590 if(cnf->len != 1){
7591 mcf_ut_format_err_str("val_struct_3[0].vint, %d, %d\r\n", cnf->len, 1);
7592 return KAL_FALSE;
7593 }
7594
7595 free_local_para((local_para_struct *)req);
7596 free_local_para((local_para_struct *)cnf);
7597
7598 //struct operation
7599 req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
7600 req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
7601 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
7602 req->format = L4C_MCF_QUERY_VARIABLE_FORM_PATH;
7603 req->num = 4098;
7604 req->rec_id = 1;
7605 req->len = 0;
7606 strcpy(req->config, "VAL_STRUCT_3[0]");
7607
7608 cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
7609
7610 mcf_ret = mcf_query_variable_value(req, cnf);
7611 if (mcf_ret != MCF_OTA_R_SUCCESS) {
7612 mcf_ut_format_err_str("Query Variable Value (%s) FAIL!!\r\n", "val_struct_3[0]");
7613 return KAL_FALSE;
7614 }
7615
7616 kal_mem_set(test_pattern,0,512);
7617 mcf_bytes_to_hex(&(mcf_ut_test_lid_value_pattern.val_struct_3[0]), cnf->len, KAL_FALSE, &test_pattern);
7618 mcf_toupper((char *)test_pattern);
7619
7620 if(strncmp((kal_char *)(cnf->value), test_pattern, 510) != 0){
7621 mcf_ut_format_err_str("VAL_STRUCT_3[0], %s, %s\r\n", cnf->value, test_pattern);
7622 return KAL_FALSE;
7623 }
7624
7625 if(cnf->len != 255){
7626 mcf_ut_format_err_str("VAL_STRUCT_3[0], %d, %d\r\n", cnf->len, 255);
7627 return KAL_FALSE;
7628 }
7629
7630 free_local_para((local_para_struct *)req);
7631 free_local_para((local_para_struct *)cnf);
7632
7633 //buffer in struct operation
7634 req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
7635 req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
7636 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
7637 req->format = L4C_MCF_QUERY_VARIABLE_FORM_PATH;
7638 req->num = 4098;
7639 req->rec_id = 1;
7640 req->len = 0;
7641 strcpy(req->config, "VAL_STRUCT_3[3].VBUFFER[2][4][5]");
7642
7643 cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
7644
7645 mcf_ret = mcf_query_variable_value(req, cnf);
7646 if (mcf_ret != MCF_OTA_R_INVALID_PARAMETER) {
7647 mcf_ut_format_err_str("Query Variable Value (%s) FAIL!!\r\n", "VAL_STRUCT_3[3].VBUFFER[2][4][5]");
7648 return KAL_FALSE;
7649 }
7650
7651
7652 free_local_para((local_para_struct *)req);
7653 free_local_para((local_para_struct *)cnf);
7654
7655
7656 /* Test TLV OTA */
7657 /* Write MCF TLV-OTA file version to NVRAM */
7658 kal_mem_set(&nv_tlvota_file, 0, sizeof(nvram_ef_mcf_tlvota_file_info_struct));
7659 strncpy(nv_tlvota_file.path, MCF_FS_DEFAULT_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN);
7660 strncpy(nv_tlvota_file.name, MCF_FS_DEFAULT_TLVOTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN);
7661 if ( !nvram_external_write_data(NVRAM_EF_MCF_TLVOTA_FILE_LID, 1, (kal_uint8 *)&nv_tlvota_file, sizeof(nvram_ef_mcf_tlvota_file_info_struct)) ) {
7662 mcf_ut_format_err_str("Fail to write MCF TLV-OTA file info to NVRAM!!\r\n");
7663 return KAL_FALSE;
7664 }
7665
7666 for (i = 0; i < MAX_SIM_NUM; i++) {
7667 tlvota_file = &(pMcf->tlvota_file[i]);
7668
7669 MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
7670 if (tlvota_file) {
7671 ret = mcf_ut_open_test_data("MCF_TLVOTA_SBP_NA_ut_normal.mcfopota", (kal_char *)(tlvota_file->buff), MCF_MAX_TLVOTA_FILE_SIZE);
7672 if (ret == KAL_FALSE) {
7673 mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_TLVOTA_SBP_NA_ut_normal.mcfopota");
7674 return KAL_FALSE;
7675 }
7676
7677 MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
7678 } else {
7679 mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! Fail to take write lock! \r\n");
7680 return KAL_FALSE;
7681 }
7682 }
7683
7684 kal_mem_set(&sbp_tag, 0, sizeof(mcf_tlvota_sbp_tag_t));
7685 sbp_tag.sbp_id = SBP_TAG_SBPID;
7686 strncpy(sbp_tag.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
7687 strncpy(sbp_tag.mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
7688
7689 //byte operation
7690 req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
7691 req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
7692 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OPOTA;
7693 req->format = L4C_MCF_QUERY_VARIABLE_FORM_PATH;
7694 req->num = 4098;
7695 req->rec_id = 1;
7696 req->len = 0;
7697 req->ps_id = 0;
7698 strcpy(req->config, "VAL_BYTE_11");
7699
7700 cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
7701
7702 mcf_ret = mcf_query_variable_value(req, cnf);
7703 if (mcf_ret != MCF_OTA_R_SUCCESS) {
7704 mcf_ut_format_err_str("Query Variable Value (%s) FAIL!!\r\n", "VAL_BYTE_11");
7705 return KAL_FALSE;
7706 }
7707
7708 kal_mem_set(test_pattern,0,512);
7709 mcf_bytes_to_hex(&(mcf_ut_test_lid_value_pattern.val_byte_11), cnf->len, KAL_FALSE, &test_pattern);
7710 mcf_toupper((char *)test_pattern);
7711
7712 if(strncmp((kal_char *)(cnf->value), test_pattern, cnf->len*2) != 0){
7713 mcf_ut_format_err_str("VAL_BYTE_11, %s, %s\r\n", cnf->value, test_pattern);
7714 return KAL_FALSE;
7715 }
7716
7717 if(cnf->len != 1){
7718 mcf_ut_format_err_str("VAL_BYTE_11, %d, %d\r\n", cnf->len, 1);
7719 return KAL_FALSE;
7720 }
7721
7722 free_local_para((local_para_struct *)req);
7723 free_local_para((local_para_struct *)cnf);
7724
7725
7726 /* Test 3-d array */
7727
7728 /* Write MCF OTA file version to NVRAM */
7729 kal_mem_set(&nv_ota_file, 0, sizeof(nvram_ef_mcf_ota_file_info_struct));
7730 strncpy(nv_ota_file.path, MCF_FS_DEFAULT_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN);
7731 strncpy(nv_ota_file.name, MCF_FS_DEFAULT_OTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN);
7732 if ( !nvram_external_write_data(NVRAM_EF_MCF_OTA_FILE_LID, 1, (kal_uint8 *)&nv_ota_file, sizeof(nvram_ef_mcf_ota_file_info_struct)) ) {
7733 mcf_ut_format_err_str("Fail to write MCF OTA file info to NVRAM!!\r\n");
7734 return KAL_FALSE;
7735 }
7736 kal_mem_set(&nv_sw_info, 0, sizeof(nvram_ef_mcf_sw_info_struct));
7737 strncpy(nv_sw_info.last_update_file.sw_version, MCF_UT_SW_VERNO, MCF_FILE_MAX_SW_VERSION_LEN);
7738 strncpy(nv_sw_info.last_update_file.gen_time, MCF_UT_GEN_TIME, MCF_FILE_MAX_GEN_TIME_LEN);
7739 strcpy(nv_sw_info.last_update_file.path, "");
7740 strcpy(nv_sw_info.last_update_file.name, "");
7741 if ( !nvram_external_write_data(NVRAM_EF_MCF_SW_INFO_LID, 1, (kal_uint8 *)&nv_sw_info, sizeof(nvram_ef_mcf_sw_info_struct)) ) {
7742 mcf_ut_format_err_str("Fail to write MCF sw info to NVRAM!!\r\n");
7743 return KAL_FALSE;
7744 }
7745
7746 /*
7747 * Apply 3-d array default OTA
7748 */
7749 MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
7750 if (ota_file) {
7751 ret = mcf_ut_open_test_data("MCF_OTA_ut_3d_array_normal.mcfota", (kal_char *)(ota_file->buff), MCF_MAX_OTA_FILE_SIZE);
7752 if (ret == KAL_FALSE) {
7753 mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_OTA_ut_3d_array_normal.mcfota");
7754 return KAL_FALSE;
7755 }
7756
7757 MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
7758 } else {
7759 mcf_ut_format_err_str("Reset LID FAIL!! Fail to take write lock! \r\n");
7760 return KAL_FALSE;
7761 }
7762
7763 mcf_ret = mcf_do_ota_full();
7764 if (mcf_ret != MCF_OTA_R_SUCCESS) {
7765 mcf_ut_format_err_str("Reset LID FAIL!! ret(%d) \r\n", mcf_ret);
7766 return KAL_FALSE;
7767 }
7768
7769 req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
7770 req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
7771 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
7772 req->format = L4C_MCF_QUERY_VARIABLE_FORM_PATH;
7773 req->num = 4098;
7774 req->rec_id = 1;
7775 req->len = 0;
7776 strcpy(req->config, "VAL_STRUCT_3[0].ARRAY_D[4][3][2]");
7777
7778 cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
7779
7780 mcf_ret = mcf_query_variable_value(req, cnf);
7781 if (mcf_ret != MCF_OTA_R_SUCCESS) {
7782 mcf_ut_format_err_str("Query Variable Value (%s) FAIL!!\r\n", "VAL_STRUCT_3[0].ARRAY_D[4][3][2]");
7783 return KAL_FALSE;
7784 }
7785
7786
7787 if(strncmp((kal_char *)(cnf->value), "06", cnf->len*2) != 0){
7788 mcf_ut_format_err_str("VAL_STRUCT_3[0].ARRAY_D[4][3][2], %s, %s\r\n", cnf->value, "06");
7789 return KAL_FALSE;
7790 }
7791
7792 if(cnf->len != 1){
7793 mcf_ut_format_err_str("VAL_STRUCT_3[0].ARRAY_D[4][3][2], %d, %d\r\n", cnf->len, 1);
7794 return KAL_FALSE;
7795 }
7796
7797 free_local_para((local_para_struct *)req);
7798 free_local_para((local_para_struct *)cnf);
7799
7800 req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
7801 req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
7802 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
7803 req->format = L4C_MCF_QUERY_VARIABLE_FORM_PATH;
7804 req->num = 4098;
7805 req->rec_id = 1;
7806 req->len = 4;
7807 strcpy(req->config, "VAL_STRUCT_3[0].ARRAY_D[4][3]");
7808
7809 cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
7810
7811 mcf_ret = mcf_query_variable_value(req, cnf);
7812 if (mcf_ret != MCF_OTA_R_SUCCESS) {
7813 mcf_ut_format_err_str("Query Variable Value (%s) FAIL!!\r\n", "VAL_STRUCT_3[0].ARRAY_D[4][3]");
7814 return KAL_FALSE;
7815 }
7816
7817
7818 if(strncmp((kal_char *)(cnf->value), "060606", cnf->len*2) != 0){
7819 mcf_ut_format_err_str("VAL_STRUCT_3[0].ARRAY_D[4][3], %s, %s\r\n", cnf->value, "060606");
7820 return KAL_FALSE;
7821 }
7822
7823 if(cnf->len != 3){
7824 mcf_ut_format_err_str("VAL_STRUCT_3[0].ARRAY_D[4][3], %d, %d\r\n", cnf->len, 3);
7825 return KAL_FALSE;
7826 }
7827
7828 free_local_para((local_para_struct *)req);
7829 free_local_para((local_para_struct *)cnf);
7830
7831 req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
7832 req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
7833 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
7834 req->format = L4C_MCF_QUERY_VARIABLE_FORM_PATH;
7835 req->num = 4098;
7836 req->rec_id = 1;
7837 req->len = 0;
7838 strcpy(req->config, "VAL_STRUCT_3[0].ARRAY_D[4][3]");
7839
7840 cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
7841
7842 mcf_ret = mcf_query_variable_value(req, cnf);
7843 if (mcf_ret != MCF_OTA_R_SUCCESS) {
7844 mcf_ut_format_err_str("Query Variable Value (%s) FAIL!!\r\n", "VAL_STRUCT_3[0].ARRAY_D[4][3]");
7845 return KAL_FALSE;
7846 }
7847
7848
7849 if(strncmp((kal_char *)(cnf->value), "060606", cnf->len*2) != 0){
7850 mcf_ut_format_err_str("VAL_STRUCT_3[0].ARRAY_D[4][3], %s, %s\r\n", cnf->value, "060606");
7851 return KAL_FALSE;
7852 }
7853
7854 if(cnf->len != 3){
7855 mcf_ut_format_err_str("VAL_STRUCT_3[0].ARRAY_D[4][3], %d, %d\r\n", cnf->len, 3);
7856 return KAL_FALSE;
7857 }
7858
7859 free_local_para((local_para_struct *)req);
7860 free_local_para((local_para_struct *)cnf);
7861
7862 req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
7863 req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
7864 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
7865 req->format = L4C_MCF_QUERY_VARIABLE_FORM_PATH;
7866 req->num = 4098;
7867 req->rec_id = 1;
7868 req->len = 0;
7869 strcpy(req->config, "VAL_STRUCT_3[0].ARRAY_D[4]");
7870
7871 cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
7872
7873 mcf_ret = mcf_query_variable_value(req, cnf);
7874 if (mcf_ret != MCF_OTA_R_SUCCESS) {
7875 mcf_ut_format_err_str("Query Variable Value (%s) FAIL!!\r\n", "VAL_STRUCT_3[0].ARRAY_D[4]");
7876 return KAL_FALSE;
7877 }
7878
7879
7880 if(strncmp((kal_char *)(cnf->value), "060606060606060606060606", cnf->len*2) != 0){
7881 mcf_ut_format_err_str("VAL_STRUCT_3[0].ARRAY_D[4], %s, %s\r\n", cnf->value, "060606060606060606060606");
7882 return KAL_FALSE;
7883 }
7884
7885 if(cnf->len != 12){
7886 mcf_ut_format_err_str("VAL_STRUCT_3[0].ARRAY_D[4], %d, %d\r\n", cnf->len, 12);
7887 return KAL_FALSE;
7888 }
7889
7890 free_local_para((local_para_struct *)req);
7891 free_local_para((local_para_struct *)cnf);
7892
7893 req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
7894 req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
7895 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
7896 req->format = L4C_MCF_QUERY_VARIABLE_FORM_PATH;
7897 req->num = 4098;
7898 req->rec_id = 1;
7899 req->len = 0;
7900 strcpy(req->config, "VAL_STRUCT_3[0].ARRAY_D");
7901
7902 cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
7903
7904 mcf_ret = mcf_query_variable_value(req, cnf);
7905 if (mcf_ret != MCF_OTA_R_SUCCESS) {
7906 mcf_ut_format_err_str("Query Variable Value (%s) FAIL!!\r\n", "VAL_STRUCT_3[0].ARRAY_D");
7907 return KAL_FALSE;
7908 }
7909
7910
7911 if(strncmp((kal_char *)(cnf->value), "060606060606060606060606060606060606060606060606060606060606060606060606060606060606060606060606060606060606060606060606", cnf->len*2) != 0){
7912 mcf_ut_format_err_str("VAL_STRUCT_3[0].ARRAY_D, %s, %s\r\n", cnf->value, "060606060606060606060606060606060606060606060606060606060606060606060606060606060606060606060606060606060606060606060606060606060606060606060606");
7913 return KAL_FALSE;
7914 }
7915
7916 if(cnf->len != 60){
7917 mcf_ut_format_err_str("VAL_STRUCT_3[0].ARRAY_D, %d, %d\r\n", cnf->len, 60);
7918 return KAL_FALSE;
7919 }
7920
7921 free_local_para((local_para_struct *)req);
7922 free_local_para((local_para_struct *)cnf);
7923
7924 req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
7925 req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
7926 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
7927 req->format = L4C_MCF_QUERY_VARIABLE_FORM_PATH;
7928 req->num = 4098;
7929 req->rec_id = 1;
7930 req->len = 2;
7931 strcpy(req->config, "VAL_STRUCT_3[0].ARRAY_D[4][2]");
7932
7933 cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
7934
7935 mcf_ret = mcf_query_variable_value(req, cnf);
7936 if (mcf_ret != MCF_OTA_R_SUCCESS) {
7937 mcf_ut_format_err_str("Query Variable Value (%s) FAIL!!\r\n", "VAL_STRUCT_3[0].ARRAY_D[4][2]");
7938 return KAL_FALSE;
7939 }
7940
7941
7942 if(strncmp((kal_char *)(cnf->value), "0606", cnf->len*2) != 0){
7943 mcf_ut_format_err_str("VAL_STRUCT_3[0].ARRAY_D[4][2], %s, %s\r\n", cnf->value, "0606");
7944 return KAL_FALSE;
7945 }
7946
7947 if(cnf->len != 2){
7948 mcf_ut_format_err_str("VAL_STRUCT_3[0].ARRAY_D[4][2], %d, %d\r\n", cnf->len, 2);
7949 return KAL_FALSE;
7950 }
7951
7952 free_local_para((local_para_struct *)req);
7953 free_local_para((local_para_struct *)cnf);
7954
7955 req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
7956 req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
7957 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
7958 req->format = L4C_MCF_QUERY_VARIABLE_FORM_PATH;
7959 req->num = 4098;
7960 req->rec_id = 1;
7961 req->len = 10;
7962 strcpy(req->config, "VAL_STRUCT_3[0].ARRAY_D[3]");
7963
7964 cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
7965
7966 mcf_ret = mcf_query_variable_value(req, cnf);
7967 if (mcf_ret != MCF_OTA_R_SUCCESS) {
7968 mcf_ut_format_err_str("Query Variable Value (%s) FAIL!!\r\n", "VAL_STRUCT_3[0].ARRAY_D[3]");
7969 return KAL_FALSE;
7970 }
7971
7972
7973 if(strncmp((kal_char *)(cnf->value), "06060606060606060606", cnf->len*2) != 0){
7974 mcf_ut_format_err_str("VAL_STRUCT_3[0].ARRAY_D[3], %s, %s\r\n", cnf->value, "06060606060606060606");
7975 return KAL_FALSE;
7976 }
7977
7978 if(cnf->len != 10){
7979 mcf_ut_format_err_str("VAL_STRUCT_3[0].ARRAY_D[3], %d, %d\r\n", cnf->len, 2);
7980 return KAL_FALSE;
7981 }
7982
7983 free_local_para((local_para_struct *)req);
7984 free_local_para((local_para_struct *)cnf);
7985
7986
7987 /* Different variable size */
7988
7989 req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
7990 req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
7991 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
7992 req->format = L4C_MCF_QUERY_VARIABLE_FORM_PATH;
7993 req->num = 4098;
7994 req->rec_id = 1;
7995 req->len = 0;
7996 strcpy(req->config, "VAL_STRUCT_3[0].ARRAY_D4[4][3][2]");
7997
7998 cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
7999
8000 mcf_ret = mcf_query_variable_value(req, cnf);
8001 if (mcf_ret != MCF_OTA_R_SUCCESS) {
8002 mcf_ut_format_err_str("Query Variable Value (%s) FAIL!!\r\n", "VAL_STRUCT_3[0].ARRAY_D4[4][3][2]");
8003 return KAL_FALSE;
8004 }
8005
8006
8007 if(strncmp((kal_char *)(cnf->value), "06000000", cnf->len*8) != 0){
8008 mcf_ut_format_err_str("VAL_STRUCT_3[0].ARRAY_D4[4][3][2], %s, %s\r\n", cnf->value, "06000000");
8009 return KAL_FALSE;
8010 }
8011
8012 if(cnf->len != 1){
8013 mcf_ut_format_err_str("VAL_STRUCT_3[0].ARRAY_D4[4][3][2], %d, %d\r\n", cnf->len, 1);
8014 return KAL_FALSE;
8015 }
8016
8017 free_local_para((local_para_struct *)req);
8018 free_local_para((local_para_struct *)cnf);
8019
8020 req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
8021 req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
8022 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
8023 req->format = L4C_MCF_QUERY_VARIABLE_FORM_PATH;
8024 req->num = 4098;
8025 req->rec_id = 1;
8026 req->len = 0;
8027 strcpy(req->config, "VAL_STRUCT_3[0].ARRAY_D4[4][3]");
8028
8029 cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
8030
8031 mcf_ret = mcf_query_variable_value(req, cnf);
8032 if (mcf_ret != MCF_OTA_R_SUCCESS) {
8033 mcf_ut_format_err_str("Query Variable Value (%s) FAIL!!\r\n", "VAL_STRUCT_3[0].ARRAY_D4[4][3]");
8034 return KAL_FALSE;
8035 }
8036
8037
8038 if(strncmp((kal_char *)(cnf->value), "060000000600000006000000", cnf->len*8) != 0){
8039 mcf_ut_format_err_str("VAL_STRUCT_3[0].ARRAY_D4[4][3], %s, %s\r\n", cnf->value, "060000000600000006000000");
8040 return KAL_FALSE;
8041 }
8042
8043 if(cnf->len != 3){
8044 mcf_ut_format_err_str("VAL_STRUCT_3[0].ARRAY_D4[4][3], %d, %d\r\n", cnf->len, 3);
8045 return KAL_FALSE;
8046 }
8047
8048 free_local_para((local_para_struct *)req);
8049 free_local_para((local_para_struct *)cnf);
8050
8051 req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
8052 req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
8053 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
8054 req->format = L4C_MCF_QUERY_VARIABLE_FORM_PATH;
8055 req->num = 4098;
8056 req->rec_id = 1;
8057 req->len = 0;
8058 strcpy(req->config, "VAL_STRUCT_3[0].ARRAY_D4[4]");
8059
8060 cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
8061
8062 mcf_ret = mcf_query_variable_value(req, cnf);
8063 if (mcf_ret != MCF_OTA_R_SUCCESS) {
8064 mcf_ut_format_err_str("Query Variable Value (%s) FAIL!!\r\n", "VAL_STRUCT_3[0].ARRAY_D4[4]");
8065 return KAL_FALSE;
8066 }
8067
8068
8069 if(strncmp((kal_char *)(cnf->value), "060000000600000006000000060000000600000006000000060000000600000006000000060000000600000006000000", cnf->len*8) != 0){
8070 mcf_ut_format_err_str("VAL_STRUCT_3[0].ARRAY_D4[4], %s, %s\r\n", cnf->value, "060000000600000006000000060000000600000006000000060000000600000006000000060000000600000006000000");
8071 return KAL_FALSE;
8072 }
8073
8074 if(cnf->len != 12){
8075 mcf_ut_format_err_str("VAL_STRUCT_3[0].ARRAY_D4[4], %d, %d\r\n", cnf->len, 12);
8076 return KAL_FALSE;
8077 }
8078
8079 free_local_para((local_para_struct *)req);
8080 free_local_para((local_para_struct *)cnf);
8081
8082 req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
8083 req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
8084 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
8085 req->format = L4C_MCF_QUERY_VARIABLE_FORM_PATH;
8086 req->num = 4098;
8087 req->rec_id = 1;
8088 req->len = 2;
8089 strcpy(req->config, "VAL_STRUCT_3[0].ARRAY_D4[4]");
8090
8091 cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
8092
8093 mcf_ret = mcf_query_variable_value(req, cnf);
8094 if (mcf_ret != MCF_OTA_R_SUCCESS) {
8095 mcf_ut_format_err_str("Query Variable Value (%s) FAIL!!\r\n", "VAL_STRUCT_3[0].ARRAY_D4[4]");
8096 return KAL_FALSE;
8097 }
8098
8099
8100 if(strncmp((kal_char *)(cnf->value), "0600000006000000", cnf->len*8) != 0){
8101 mcf_ut_format_err_str("VAL_STRUCT_3[0].ARRAY_D4[4], %s, %s\r\n", cnf->value, "0600000006000000");
8102 return KAL_FALSE;
8103 }
8104
8105 if(cnf->len != 2){
8106 mcf_ut_format_err_str("VAL_STRUCT_3[0].ARRAY_D4[4], %d, %d\r\n", cnf->len, 2);
8107 return KAL_FALSE;
8108 }
8109
8110 free_local_para((local_para_struct *)req);
8111 free_local_para((local_para_struct *)cnf);
8112
8113 req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
8114 req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
8115 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
8116 req->format = L4C_MCF_QUERY_VARIABLE_FORM_PATH;
8117 req->num = 4098;
8118 req->rec_id = 1;
8119 req->len = 2;
8120 strcpy(req->config, "VAL_STRUCT_3[0].ARRAY_D4[4][2]");
8121
8122 cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
8123
8124 mcf_ret = mcf_query_variable_value(req, cnf);
8125 if (mcf_ret != MCF_OTA_R_SUCCESS) {
8126 mcf_ut_format_err_str("Query Variable Value (%s) FAIL!!\r\n", "VAL_STRUCT_3[0].ARRAY_D4[4][2]");
8127 return KAL_FALSE;
8128 }
8129
8130
8131 if(strncmp((kal_char *)(cnf->value), "0600000006000000", cnf->len*8) != 0){
8132 mcf_ut_format_err_str("VAL_STRUCT_3[0].ARRAY_D4[4], %s, %s\r\n", cnf->value, "0600000006000000");
8133 return KAL_FALSE;
8134 }
8135
8136 if(cnf->len != 2){
8137 mcf_ut_format_err_str("VAL_STRUCT_3[0].ARRAY_D4[4], %d, %d\r\n", cnf->len, 2);
8138 return KAL_FALSE;
8139 }
8140
8141 free_local_para((local_para_struct *)req);
8142 free_local_para((local_para_struct *)cnf);
8143
8144 req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
8145 req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
8146 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
8147 req->format = L4C_MCF_QUERY_VARIABLE_FORM_PATH;
8148 req->num = 4098;
8149 req->rec_id = 1;
8150 req->len = 0;
8151 strcpy(req->config, "VAL_STRUCT_3[0].ARRAY_D4");
8152
8153 cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
8154
8155 mcf_ret = mcf_query_variable_value(req, cnf);
8156 if (mcf_ret != MCF_OTA_R_SUCCESS) {
8157 mcf_ut_format_err_str("Query Variable Value (%s) FAIL!!\r\n", "VAL_STRUCT_3[0].ARRAY_D4");
8158 return KAL_FALSE;
8159 }
8160
8161 kal_mem_set(test_pattern, 0 , 512);
8162 for (i = 0; i < cnf->len; i++){
8163 kal_mem_cpy(test_pattern+(i*8),"06000000",8);
8164 }
8165
8166 if(strncmp((kal_char *)(cnf->value), test_pattern, cnf->len*8) != 0){
8167 mcf_ut_format_err_str("VAL_STRUCT_3[0].ARRAY_D4, %s, %s\r\n", cnf->value, test_pattern);
8168 return KAL_FALSE;
8169 }
8170
8171 if(cnf->len != 60){
8172 mcf_ut_format_err_str("VAL_STRUCT_3[0].ARRAY_D4, %d, %d\r\n", cnf->len, 60);
8173 return KAL_FALSE;
8174 }
8175
8176 free_local_para((local_para_struct *)req);
8177 free_local_para((local_para_struct *)cnf);
8178
8179 /* Nagative test case */
8180
8181 req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
8182 req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
8183 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
8184 req->format = L4C_MCF_QUERY_VARIABLE_FORM_PATH;
8185 req->num = 4098;
8186 req->rec_id = 1;
8187 req->len = 0;
8188 strcpy(req->config, "VAL_STRUCT_3[0].ARRAY_D[5]");
8189
8190 cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
8191
8192 mcf_ret = mcf_query_variable_value(req, cnf);
8193 if (mcf_ret != MCF_OTA_R_INVALID_PARAMETER) {
8194 mcf_ut_format_err_str("Query Variable Value (%s) FAIL!!\r\n", "VAL_STRUCT_3[0].ARRAY_D[5]");
8195 return KAL_FALSE;
8196 }
8197
8198 free_local_para((local_para_struct *)req);
8199 free_local_para((local_para_struct *)cnf);
8200
8201 req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
8202 req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
8203 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
8204 req->format = L4C_MCF_QUERY_VARIABLE_FORM_PATH;
8205 req->num = 4098;
8206 req->rec_id = 1;
8207 req->len = 0;
8208 strcpy(req->config, "VAL_STRUCT_3[4]");
8209
8210 cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
8211
8212 mcf_ret = mcf_query_variable_value(req, cnf);
8213 if (mcf_ret != MCF_OTA_R_INVALID_PARAMETER) {
8214 mcf_ut_format_err_str("Query Variable Value (%s) FAIL!!\r\n", "VAL_STRUCT_3[4]");
8215 return KAL_FALSE;
8216 }
8217
8218 free_local_para((local_para_struct *)req);
8219 free_local_para((local_para_struct *)cnf);
8220
8221 /*
8222 * Apply 2bytes to bit default OTA
8223 */
8224 MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
8225 if (ota_file) {
8226 ret = mcf_ut_open_test_data("MCF_OTA_ut_2_byte_4_byte_normal.mcfota", (kal_char *)(ota_file->buff), MCF_MAX_OTA_FILE_SIZE);
8227 if (ret == KAL_FALSE) {
8228 mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_OTA_ut_2byte_normal.mcfota");
8229 return KAL_FALSE;
8230 }
8231
8232 MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
8233 } else {
8234 mcf_ut_format_err_str("Reset LID FAIL!! Fail to take write lock! \r\n");
8235 return KAL_FALSE;
8236 }
8237
8238 mcf_ret = mcf_do_ota_full();
8239 if (mcf_ret != MCF_OTA_R_SUCCESS) {
8240 mcf_ut_format_err_str("Reset LID FAIL!! ret(%d) \r\n", mcf_ret);
8241 return KAL_FALSE;
8242 }
8243
8244 req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
8245 req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
8246 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
8247 req->format = L4C_MCF_QUERY_VARIABLE_FORM_PATH;
8248 req->num = 4098;
8249 req->rec_id = 1;
8250 req->len = 0;
8251 strcpy(req->config, "val_bit_2byte_3");
8252
8253 cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
8254
8255 mcf_ret = mcf_query_variable_value(req, cnf);
8256 if (mcf_ret != MCF_OTA_R_SUCCESS) {
8257 mcf_ut_format_err_str("Query Variable Value (%s) FAIL!!\r\n", "val_bit_2byte_3");
8258 return KAL_FALSE;
8259 }
8260
8261
8262 if(strncmp((kal_char *)(cnf->value), "F02F", cnf->len*4) != 0){
8263 mcf_ut_format_err_str("val_bit_2byte_3, %s, %s\r\n", cnf->value, "F02F");
8264 return KAL_FALSE;
8265 }
8266
8267 if(cnf->len != 2){
8268 mcf_ut_format_err_str("val_bit_2byte_3, %d, %d\r\n", cnf->len, 2);
8269 return KAL_FALSE;
8270 }
8271
8272 free_local_para((local_para_struct *)req);
8273 free_local_para((local_para_struct *)cnf);
8274
8275 req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
8276 req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
8277 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
8278 req->format = L4C_MCF_QUERY_VARIABLE_FORM_PATH;
8279 req->num = 4098;
8280 req->rec_id = 1;
8281 req->len = 0;
8282 strcpy(req->config, "val_bit_2byte_3.F4b");
8283
8284 cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
8285
8286 mcf_ret = mcf_query_variable_value(req, cnf);
8287 if (mcf_ret != MCF_OTA_R_SUCCESS) {
8288 mcf_ut_format_err_str("Query Variable Value (%s) FAIL!!\r\n", "val_bit_2byte_3.F4b");
8289 return KAL_FALSE;
8290 }
8291
8292
8293 if(strncmp((kal_char *)(cnf->value), "00", cnf->len*2) != 0){
8294 mcf_ut_format_err_str("val_bit_2byte_3.F4b, %s, %s\r\n", cnf->value, "00");
8295 return KAL_FALSE;
8296 }
8297
8298 if(cnf->len != 1){
8299 mcf_ut_format_err_str("val_bit_2byte_3.F4b, %d, %d\r\n", cnf->len, 1);
8300 return KAL_FALSE;
8301 }
8302
8303 free_local_para((local_para_struct *)req);
8304 free_local_para((local_para_struct *)cnf);
8305
8306 req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
8307 req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
8308 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
8309 req->format = L4C_MCF_QUERY_VARIABLE_FORM_PATH;
8310 req->num = 4098;
8311 req->rec_id = 1;
8312 req->len = 0;
8313 strcpy(req->config, "val_bit_2byte_3.L4b");
8314
8315 cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
8316
8317 mcf_ret = mcf_query_variable_value(req, cnf);
8318 if (mcf_ret != MCF_OTA_R_SUCCESS) {
8319 mcf_ut_format_err_str("Query Variable Value (%s) FAIL!!\r\n", "val_bit_2byte_3.L4b");
8320 return KAL_FALSE;
8321 }
8322
8323
8324 if(strncmp((kal_char *)(cnf->value), "0F", cnf->len*2) != 0){
8325 mcf_ut_format_err_str("val_bit_2byte_3.L4b, %s, %s\r\n", cnf->value, "0F");
8326 return KAL_FALSE;
8327 }
8328
8329 if(cnf->len != 1){
8330 mcf_ut_format_err_str("val_bit_2byte_3.L4b, %d, %d\r\n", cnf->len, 1);
8331 return KAL_FALSE;
8332 }
8333
8334 free_local_para((local_para_struct *)req);
8335 free_local_para((local_para_struct *)cnf);
8336
8337 req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
8338 req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
8339 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
8340 req->format = L4C_MCF_QUERY_VARIABLE_FORM_PATH;
8341 req->num = 4098;
8342 req->rec_id = 1;
8343 req->len = 0;
8344 strcpy(req->config, "val_bit_2byte_3.F2b");
8345
8346 cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
8347
8348 mcf_ret = mcf_query_variable_value(req, cnf);
8349 if (mcf_ret != MCF_OTA_R_SUCCESS) {
8350 mcf_ut_format_err_str("Query Variable Value (%s) FAIL!!\r\n", "val_bit_2byte_3.F2b");
8351 return KAL_FALSE;
8352 }
8353
8354
8355 if(strncmp((kal_char *)(cnf->value), "03", cnf->len*2) != 0){
8356 mcf_ut_format_err_str("val_bit_2byte_3.F2b, %s, %s\r\n", cnf->value, "03");
8357 return KAL_FALSE;
8358 }
8359
8360 if(cnf->len != 1){
8361 mcf_ut_format_err_str("val_bit_2byte_3.F2b, %d, %d\r\n", cnf->len, 1);
8362 return KAL_FALSE;
8363 }
8364
8365 free_local_para((local_para_struct *)req);
8366 free_local_para((local_para_struct *)cnf);
8367
8368 req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
8369 req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
8370 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
8371 req->format = L4C_MCF_QUERY_VARIABLE_FORM_PATH;
8372 req->num = 4098;
8373 req->rec_id = 1;
8374 req->len = 0;
8375 strcpy(req->config, "val_bit_2byte_3.L2b");
8376
8377 cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
8378
8379 mcf_ret = mcf_query_variable_value(req, cnf);
8380 if (mcf_ret != MCF_OTA_R_SUCCESS) {
8381 mcf_ut_format_err_str("Query Variable Value (%s) FAIL!!\r\n", "val_bit_2byte_3.L2b");
8382 return KAL_FALSE;
8383 }
8384
8385
8386 if(strncmp((kal_char *)(cnf->value), "03", cnf->len*2) != 0){
8387 mcf_ut_format_err_str("val_bit_2byte_3.L2b, %s, %s\r\n", cnf->value, "03");
8388 return KAL_FALSE;
8389 }
8390
8391 if(cnf->len != 1){
8392 mcf_ut_format_err_str("val_bit_2byte_3.L2b, %d, %d\r\n", cnf->len, 1);
8393 return KAL_FALSE;
8394 }
8395
8396 free_local_para((local_para_struct *)req);
8397 free_local_para((local_para_struct *)cnf);
8398
8399 req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
8400 req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
8401 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
8402 req->format = L4C_MCF_QUERY_VARIABLE_FORM_PATH;
8403 req->num = 4098;
8404 req->rec_id = 1;
8405 req->len = 0;
8406 strcpy(req->config, "val_bit_2byte_3.b2");
8407
8408 cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
8409
8410 mcf_ret = mcf_query_variable_value(req, cnf);
8411 if (mcf_ret != MCF_OTA_R_SUCCESS) {
8412 mcf_ut_format_err_str("Query Variable Value (%s) FAIL!!\r\n", "val_bit_2byte_3.b2");
8413 return KAL_FALSE;
8414 }
8415
8416
8417 if(strncmp((kal_char *)(cnf->value), "01", cnf->len*2) != 0){
8418 mcf_ut_format_err_str("val_bit_2byte_3.b2, %s, %s\r\n", cnf->value, "01");
8419 return KAL_FALSE;
8420 }
8421
8422 if(cnf->len != 1){
8423 mcf_ut_format_err_str("val_bit_2byte_3.b2, %d, %d\r\n", cnf->len, 1);
8424 return KAL_FALSE;
8425 }
8426
8427 free_local_para((local_para_struct *)req);
8428 free_local_para((local_para_struct *)cnf);
8429
8430 req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
8431 req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
8432 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
8433 req->format = L4C_MCF_QUERY_VARIABLE_FORM_PATH;
8434 req->num = 4098;
8435 req->rec_id = 1;
8436 req->len = 0;
8437 strcpy(req->config, "val_bit_4byte_3");
8438
8439 cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
8440
8441 mcf_ret = mcf_query_variable_value(req, cnf);
8442 if (mcf_ret != MCF_OTA_R_SUCCESS) {
8443 mcf_ut_format_err_str("Query Variable Value (%s) FAIL!!\r\n", "val_bit_4byte_3");
8444 return KAL_FALSE;
8445 }
8446
8447
8448 if(strncmp((kal_char *)(cnf->value), "0001FE0F", cnf->len*2) != 0){
8449 mcf_ut_format_err_str("val_bit_4byte_3, %s, %s\r\n", cnf->value, "0001FE0F");
8450 return KAL_FALSE;
8451 }
8452
8453 if(cnf->len != 4){
8454 mcf_ut_format_err_str("val_bit_4byte_3, %d, %d\r\n", cnf->len, 4);
8455 return KAL_FALSE;
8456 }
8457
8458 free_local_para((local_para_struct *)req);
8459 free_local_para((local_para_struct *)cnf);
8460
8461 req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
8462 req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
8463 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
8464 req->format = L4C_MCF_QUERY_VARIABLE_FORM_PATH;
8465 req->num = 4098;
8466 req->rec_id = 1;
8467 req->len = 0;
8468 strcpy(req->config, "val_bit_4byte_3.F9b");
8469
8470 cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
8471
8472 mcf_ret = mcf_query_variable_value(req, cnf);
8473 if (mcf_ret != MCF_OTA_R_SUCCESS) {
8474 mcf_ut_format_err_str("Query Variable Value (%s) FAIL!!\r\n", "val_bit_4byte_3.F9b");
8475 return KAL_FALSE;
8476 }
8477
8478
8479 if(strncmp((kal_char *)(cnf->value), "0001", cnf->len*2) != 0){
8480 mcf_ut_format_err_str("val_bit_4byte_3.F9b, %s, %s\r\n", cnf->value, "0001");
8481 return KAL_FALSE;
8482 }
8483
8484 if(cnf->len != 2){
8485 mcf_ut_format_err_str("val_bit_4byte_3.F9b, %d, %d\r\n", cnf->len, 2);
8486 return KAL_FALSE;
8487 }
8488
8489 free_local_para((local_para_struct *)req);
8490 free_local_para((local_para_struct *)cnf);
8491
8492 req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
8493 req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
8494 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
8495 req->format = L4C_MCF_QUERY_VARIABLE_FORM_PATH;
8496 req->num = 4098;
8497 req->rec_id = 1;
8498 req->len = 0;
8499 strcpy(req->config, "val_bit_4byte_3.F4b");
8500
8501 cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
8502
8503 mcf_ret = mcf_query_variable_value(req, cnf);
8504 if (mcf_ret != MCF_OTA_R_SUCCESS) {
8505 mcf_ut_format_err_str("Query Variable Value (%s) FAIL!!\r\n", "val_bit_4byte_3.F4b");
8506 return KAL_FALSE;
8507 }
8508
8509
8510 if(strncmp((kal_char *)(cnf->value), "0F", cnf->len*2) != 0){
8511 mcf_ut_format_err_str("val_bit_4byte_3.F4b, %s, %s\r\n", cnf->value, "0F");
8512 return KAL_FALSE;
8513 }
8514
8515 if(cnf->len != 1){
8516 mcf_ut_format_err_str("val_bit_4byte_3.F4b, %d, %d\r\n", cnf->len, 1);
8517 return KAL_FALSE;
8518 }
8519
8520 free_local_para((local_para_struct *)req);
8521 free_local_para((local_para_struct *)cnf);
8522
8523 req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
8524 req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
8525 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
8526 req->format = L4C_MCF_QUERY_VARIABLE_FORM_PATH;
8527 req->num = 4098;
8528 req->rec_id = 1;
8529 req->len = 0;
8530 strcpy(req->config, "val_bit_4byte_3.F2b");
8531
8532 cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
8533
8534 mcf_ret = mcf_query_variable_value(req, cnf);
8535 if (mcf_ret != MCF_OTA_R_SUCCESS) {
8536 mcf_ut_format_err_str("Query Variable Value (%s) FAIL!!\r\n", "val_bit_4byte_3.F2b");
8537 return KAL_FALSE;
8538 }
8539
8540
8541 if(strncmp((kal_char *)(cnf->value), "03", cnf->len*2) != 0){
8542 mcf_ut_format_err_str("val_bit_4byte_3.F2b, %s, %s\r\n", cnf->value, "03");
8543 return KAL_FALSE;
8544 }
8545
8546 if(cnf->len != 1){
8547 mcf_ut_format_err_str("val_bit_4byte_3.F2b, %d, %d\r\n", cnf->len, 1);
8548 return KAL_FALSE;
8549 }
8550
8551 free_local_para((local_para_struct *)req);
8552 free_local_para((local_para_struct *)cnf);
8553
8554#else
8555
8556#endif
8557
8558 /*Query variable with gid format*/
8559 /* Write MCF OTA file version to NVRAM */
8560 kal_mem_set(&nv_ota_file, 0, sizeof(nvram_ef_mcf_ota_file_info_struct));
8561 strncpy(nv_ota_file.path, MCF_FS_DEFAULT_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN);
8562 strncpy(nv_ota_file.name, MCF_FS_DEFAULT_OTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN);
8563 if ( !nvram_external_write_data(NVRAM_EF_MCF_OTA_FILE_LID, 1, (kal_uint8 *)&nv_ota_file, sizeof(nvram_ef_mcf_ota_file_info_struct)) ) {
8564 mcf_ut_format_err_str("Fail to write MCF OTA file info to NVRAM!!\r\n");
8565 return KAL_FALSE;
8566 }
8567 kal_mem_set(&nv_sw_info, 0, sizeof(nvram_ef_mcf_sw_info_struct));
8568 strncpy(nv_sw_info.last_update_file.sw_version, MCF_UT_SW_VERNO, MCF_FILE_MAX_SW_VERSION_LEN);
8569 strncpy(nv_sw_info.last_update_file.gen_time, MCF_UT_GEN_TIME, MCF_FILE_MAX_GEN_TIME_LEN);
8570 strcpy(nv_sw_info.last_update_file.path, "");
8571 strcpy(nv_sw_info.last_update_file.name, "");
8572 if ( !nvram_external_write_data(NVRAM_EF_MCF_SW_INFO_LID, 1, (kal_uint8 *)&nv_sw_info, sizeof(nvram_ef_mcf_sw_info_struct)) ) {
8573 mcf_ut_format_err_str("Fail to write MCF sw info to NVRAM!!\r\n");
8574 return KAL_FALSE;
8575 }
8576
8577 /*
8578 * Apply default OTA
8579 */
8580 MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
8581 if (ota_file) {
8582 ret = mcf_ut_open_test_data("MCF_OTA_ut_gid_normal.mcfota", (kal_char *)(ota_file->buff), MCF_MAX_OTA_FILE_SIZE);
8583 if (ret == KAL_FALSE) {
8584 mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_OTA_ut_gid_normal.mcfota");
8585 return KAL_FALSE;
8586 }
8587
8588 MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
8589 } else {
8590 mcf_ut_format_err_str("Reset LID FAIL!! Fail to take write lock! \r\n");
8591 return KAL_FALSE;
8592 }
8593
8594 mcf_ret = mcf_do_ota_full();
8595 if (mcf_ret != MCF_OTA_R_SUCCESS) {
8596 mcf_ut_format_err_str("Reset LID FAIL!! ret(%d) \r\n", mcf_ret);
8597 return KAL_FALSE;
8598 }
8599
8600 ret = mcf_check_test_lid_value(NULL);
8601 if (ret == KAL_FALSE) {
8602 mcf_ut_format_err_str("Reset LID FAIL!!\r\n");
8603 return KAL_FALSE;
8604 }
8605 //Byte operation - VAL_BYTE_11
8606 req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
8607 req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
8608 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
8609 req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
8610 req->num = MCF_TEST_OTA_LID_BASE_GID+44;
8611 req->rec_id = 1;
8612 req->len = 0;
8613 kal_mem_set(array_tag, 0, 16);
8614 strcpy(req->config, array_tag);
8615
8616 cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
8617
8618
8619 mcf_ret = mcf_query_variable_value(req, cnf);
8620 if (mcf_ret != MCF_OTA_R_SUCCESS) {
8621 mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "VAL_BYTE_11");
8622 return KAL_FALSE;
8623 }
8624
8625 kal_mem_set(test_pattern,0,512);
8626 mcf_bytes_to_hex(&(mcf_ut_test_lid_value_pattern.val_byte_11), cnf->len, KAL_FALSE, &test_pattern);
8627 mcf_toupper((char *)test_pattern);
8628
8629 if(strncmp((kal_char *)(cnf->value), test_pattern, cnf->len*2) != 0){
8630 mcf_ut_format_err_str("VAL_BYTE_11, %s, %s\r\n", cnf->value, test_pattern);
8631 return KAL_FALSE;
8632 }
8633
8634 if(cnf->len != 1){
8635 mcf_ut_format_err_str("VAL_BYTE_11, %d, %d\r\n", cnf->len, 1);
8636 return KAL_FALSE;
8637 }
8638
8639 free_local_para((local_para_struct *)req);
8640 free_local_para((local_para_struct *)cnf);
8641
8642 //Bit operation - VAL_BIT_BYTE_11
8643 req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
8644 req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
8645 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
8646 req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
8647 req->num = MCF_TEST_OTA_LID_BASE_GID+18;
8648 req->rec_id = 1;
8649 req->len = 0;
8650 kal_mem_set(array_tag, 0, 16);
8651 strcpy(req->config, array_tag);
8652
8653 cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
8654
8655 mcf_ret = mcf_query_variable_value(req, cnf);
8656 if (mcf_ret != MCF_OTA_R_SUCCESS) {
8657 mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "VAL_BIT_BYTE_11");
8658 return KAL_FALSE;
8659 }
8660
8661 kal_mem_set(test_pattern,0,512);
8662 mcf_bytes_to_hex(&(mcf_ut_test_lid_value_pattern.val_bit_byte_11), cnf->len, KAL_FALSE, &test_pattern);
8663 mcf_toupper((char *)test_pattern);
8664
8665 if(strncmp((kal_char *)(cnf->value), test_pattern, cnf->len*2) != 0){
8666 mcf_ut_format_err_str("VAL_BIT_BYTE_11, %s, %s\r\n", cnf->value, test_pattern);
8667 return KAL_FALSE;
8668 }
8669
8670 if(cnf->len != 1){
8671 mcf_ut_format_err_str("VAL_BIT_BYTE_11, %d, %d\r\n", cnf->len, 1);
8672 return KAL_FALSE;
8673 }
8674
8675 free_local_para((local_para_struct *)req);
8676 free_local_para((local_para_struct *)cnf);
8677
8678 //Bit operation - VAL_BIT_BYTE_11.B3
8679 req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
8680 req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
8681 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
8682 req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
8683 req->num = MCF_TEST_OTA_LID_BASE_GID+21;
8684 req->rec_id = 1;
8685 req->len = 0;
8686 kal_mem_set(array_tag, 0, 16);
8687 strcpy(req->config, array_tag);
8688
8689 cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
8690
8691 mcf_ret = mcf_query_variable_value(req, cnf);
8692 if (mcf_ret != MCF_OTA_R_SUCCESS) {
8693 mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "VAL_BIT_BYTE_11.B3");
8694 return KAL_FALSE;
8695 }
8696
8697 if(strncmp((kal_char *)(cnf->value), "01", cnf->len*2) != 0){
8698 mcf_ut_format_err_str("VAL_BIT_BYTE_11.B3, %s, %s\r\n", cnf->value, "01");
8699 return KAL_FALSE;
8700 }
8701
8702 if(cnf->len != 1){
8703 mcf_ut_format_err_str("VAL_BIT_BYTE_11.B3, %d, %d\r\n", cnf->len, 1);
8704 return KAL_FALSE;
8705 }
8706
8707 free_local_para((local_para_struct *)req);
8708 free_local_para((local_para_struct *)cnf);
8709
8710 //Bit operation - val_bit_byte_12
8711 req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
8712 req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
8713 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
8714 req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
8715 req->num = MCF_TEST_OTA_LID_BASE_GID+27;
8716 req->rec_id = 1;
8717 req->len = 0;
8718 strcpy(req->config, "");
8719
8720 cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
8721
8722 mcf_ret = mcf_query_variable_value(req, cnf);
8723 if (mcf_ret != MCF_OTA_R_SUCCESS) {
8724 mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "val_bit_byte_12");
8725 return KAL_FALSE;
8726 }
8727
8728 kal_mem_set(test_pattern,0,512);
8729 mcf_bytes_to_hex(&(mcf_ut_test_lid_value_pattern.val_bit_byte_12), cnf->len, KAL_FALSE, &test_pattern);
8730 mcf_toupper((char *)test_pattern);
8731
8732 if(strncmp((kal_char *)(cnf->value), test_pattern, cnf->len*2) != 0){
8733 mcf_ut_format_err_str("val_bit_byte_12, %s, %s\r\n", cnf->value, test_pattern);
8734 return KAL_FALSE;
8735 }
8736
8737 if(cnf->len != 1){
8738 mcf_ut_format_err_str("val_bit_byte_12, %d, %d\r\n", cnf->len, 1);
8739 return KAL_FALSE;
8740 }
8741
8742 free_local_para((local_para_struct *)req);
8743 free_local_para((local_para_struct *)cnf);
8744
8745 //Bit operation - val_bit_byte_12.L4b
8746 req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
8747 req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
8748 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
8749 req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
8750 req->num = MCF_TEST_OTA_LID_BASE_GID+29;
8751 req->rec_id = 1;
8752 req->len = 0;
8753 strcpy(req->config, "");
8754
8755 cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
8756
8757 mcf_ret = mcf_query_variable_value(req, cnf);
8758 if (mcf_ret != MCF_OTA_R_SUCCESS) {
8759 mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "val_bit_byte_12.L4b");
8760 return KAL_FALSE;
8761 }
8762
8763 if(strncmp((kal_char *)(cnf->value), "0F", cnf->len*2) != 0){
8764 mcf_ut_format_err_str("val_bit_byte_12.F4b, %s, %s\r\n", cnf->value, test_pattern);
8765 return KAL_FALSE;
8766 }
8767
8768 if(cnf->len != 1){
8769 mcf_ut_format_err_str("val_bit_byte_12.F4b, %d, %d\r\n", cnf->len, 1);
8770 return KAL_FALSE;
8771 }
8772
8773 free_local_para((local_para_struct *)req);
8774 free_local_para((local_para_struct *)cnf);
8775
8776 //short operation - val_short_11
8777 req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
8778 req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
8779 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
8780 req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
8781 req->num = MCF_TEST_OTA_LID_BASE_GID+56;
8782 req->rec_id = 1;
8783 req->len = 0;
8784 strcpy(req->config, "");
8785
8786 cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
8787
8788 mcf_ret = mcf_query_variable_value(req, cnf);
8789 if (mcf_ret != MCF_OTA_R_SUCCESS) {
8790 mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "val_short_11");
8791 return KAL_FALSE;
8792 }
8793
8794 kal_mem_set(test_pattern,0,512);
8795 mcf_bytes_to_hex(&(mcf_ut_test_lid_value_pattern.val_short_11), cnf->len, KAL_FALSE, &test_pattern);
8796 mcf_toupper((char *)test_pattern);
8797
8798 if(strncmp((kal_char *)(cnf->value), test_pattern, cnf->len*2) != 0){
8799 mcf_ut_format_err_str("val_short_11, %s, %s\r\n", cnf->value, test_pattern);
8800 return KAL_FALSE;
8801 }
8802
8803 if(cnf->len != 2){
8804 mcf_ut_format_err_str("val_short_11, %d, %d\r\n", cnf->len, 2);
8805 return KAL_FALSE;
8806 }
8807
8808 free_local_para((local_para_struct *)req);
8809 free_local_para((local_para_struct *)cnf);
8810
8811
8812 //double operation - val_double_1
8813 req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
8814 req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
8815 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
8816 req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
8817 req->num = MCF_TEST_OTA_LID_BASE_GID+48;
8818 req->rec_id = 1;
8819 req->len = 0;
8820 strcpy(req->config, "");
8821
8822 cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
8823
8824 mcf_ret = mcf_query_variable_value(req, cnf);
8825 if (mcf_ret != MCF_OTA_R_SUCCESS) {
8826 mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "val_double_1");
8827 return KAL_FALSE;
8828 }
8829
8830 kal_mem_set(test_pattern,0,512);
8831 mcf_bytes_to_hex(&(mcf_ut_test_lid_value_pattern.val_double_1), cnf->len, KAL_FALSE, &test_pattern);
8832 mcf_toupper((char *)test_pattern);
8833
8834 if(strncmp((kal_char *)(cnf->value), test_pattern, cnf->len*2) != 0){
8835 mcf_ut_format_err_str("val_double_1, %s, %s\r\n", cnf->value, test_pattern);
8836 return KAL_FALSE;
8837 }
8838
8839 if(cnf->len != 8){
8840 mcf_ut_format_err_str("val_double_1, %d, %d\r\n", cnf->len, 8);
8841 return KAL_FALSE;
8842 }
8843
8844 free_local_para((local_para_struct *)req);
8845 free_local_para((local_para_struct *)cnf);
8846
8847 //buffer operation with len = 2 - val_buffer_1
8848 req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
8849 req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
8850 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
8851 req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
8852 req->num = MCF_TEST_OTA_LID_BASE_GID+42;
8853 req->rec_id = 1;
8854 req->len = 2;
8855 strcpy(req->config, "");
8856
8857 cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
8858
8859 mcf_ret = mcf_query_variable_value(req, cnf);
8860 if (mcf_ret != MCF_OTA_R_SUCCESS) {
8861 mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "val_buffer_1");
8862 return KAL_FALSE;
8863 }
8864
8865 kal_mem_set(test_pattern,0,512);
8866 mcf_bytes_to_hex(&(mcf_ut_test_lid_value_pattern.val_buffer_1), cnf->len, KAL_FALSE, &test_pattern);
8867 mcf_toupper((char *)test_pattern);
8868
8869 if(strncmp((kal_char *)(cnf->value), test_pattern, cnf->len*2) != 0){
8870 mcf_ut_format_err_str("val_buffer_1, %s, %s\r\n", cnf->value, test_pattern);
8871 return KAL_FALSE;
8872 }
8873
8874 if(cnf->len != 2){
8875 mcf_ut_format_err_str("val_buffer_1, %d, %d\r\n", cnf->len, 2);
8876 return KAL_FALSE;
8877 }
8878
8879 free_local_para((local_para_struct *)req);
8880 free_local_para((local_para_struct *)cnf);
8881
8882 //buffer operation - read all buffer - val_buffer_1[0]
8883 req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
8884 req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
8885 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
8886 req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
8887 req->num = MCF_TEST_OTA_LID_BASE_GID+42;
8888 req->rec_id = 1;
8889 req->len = 32;
8890 strcpy(req->config, "0");
8891
8892 cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
8893
8894 mcf_ret = mcf_query_variable_value(req, cnf);
8895 if (mcf_ret != MCF_OTA_R_SUCCESS) {
8896 mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "val_buffer_1[0]");
8897 return KAL_FALSE;
8898 }
8899
8900 kal_mem_set(test_pattern,0,512);
8901 mcf_bytes_to_hex(&(mcf_ut_test_lid_value_pattern.val_buffer_1), cnf->len, KAL_FALSE, &test_pattern);
8902 mcf_toupper((char *)test_pattern);
8903
8904 if(strncmp((kal_char *)(cnf->value), test_pattern, cnf->len*2) != 0){
8905 mcf_ut_format_err_str("val_buffer_1[0], %s, %s\r\n", cnf->value, test_pattern);
8906 return KAL_FALSE;
8907 }
8908
8909 if(cnf->len != 32){
8910 mcf_ut_format_err_str("val_buffer_1[0], %d, %d\r\n", cnf->len, 32);
8911 return KAL_FALSE;
8912 }
8913
8914 free_local_para((local_para_struct *)req);
8915 free_local_para((local_para_struct *)cnf);
8916
8917 //buffer operation - val_buffer_1[0]
8918 req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
8919 req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
8920 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
8921 req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
8922 req->num = MCF_TEST_OTA_LID_BASE_GID+42;
8923 req->rec_id = 1;
8924 req->len = 2;
8925 strcpy(req->config, "0");
8926
8927 cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
8928
8929 mcf_ret = mcf_query_variable_value(req, cnf);
8930 if (mcf_ret != MCF_OTA_R_SUCCESS) {
8931 mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "val_buffer_1[0]");
8932 return KAL_FALSE;
8933 }
8934
8935 kal_mem_set(test_pattern,0,512);
8936 mcf_bytes_to_hex(&(mcf_ut_test_lid_value_pattern.val_buffer_1), cnf->len, KAL_FALSE, &test_pattern);
8937 mcf_toupper((char *)test_pattern);
8938
8939 if(strncmp((kal_char *)(cnf->value), test_pattern, cnf->len*2) != 0){
8940 mcf_ut_format_err_str("val_buffer_1[0], %s, %s\r\n", cnf->value, test_pattern);
8941 return KAL_FALSE;
8942 }
8943
8944 if(cnf->len != 2){
8945 mcf_ut_format_err_str("val_buffer_1[0], %d, %d\r\n", cnf->len, 2);
8946 return KAL_FALSE;
8947 }
8948
8949 free_local_para((local_para_struct *)req);
8950 free_local_para((local_para_struct *)cnf);
8951
8952 //float operation - val_struct_1.vfloat
8953 req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
8954 req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
8955 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
8956 req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
8957 req->num = MCF_TEST_OTA_LID_BASE_GID+78;
8958 req->rec_id = 1;
8959 req->len = 4;
8960 strcpy(req->config, "");
8961
8962 cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
8963
8964 mcf_ret = mcf_query_variable_value(req, cnf);
8965 if (mcf_ret != MCF_OTA_R_SUCCESS) {
8966 mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "val_struct_1.vfloat");
8967 return KAL_FALSE;
8968 }
8969
8970 kal_mem_set(test_pattern,0,512);
8971 mcf_bytes_to_hex(&(mcf_ut_test_lid_value_pattern.val_struct_1.vfloat), cnf->len, KAL_FALSE, &test_pattern);
8972 mcf_toupper((char *)test_pattern);
8973
8974 if(strncmp((kal_char *)(cnf->value), test_pattern, cnf->len*2) != 0){
8975 mcf_ut_format_err_str("val_struct_1.vfloat, %s, %s\r\n", cnf->value, test_pattern);
8976 return KAL_FALSE;
8977 }
8978
8979 if(cnf->len != 4){
8980 mcf_ut_format_err_str("val_struct_1.vfloat, %d, %d\r\n", cnf->len, 4);
8981 return KAL_FALSE;
8982 }
8983
8984 free_local_para((local_para_struct *)req);
8985 free_local_para((local_para_struct *)cnf);
8986
8987 //int in struct operation - val_struct_3[0].vint
8988 req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
8989 req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
8990 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
8991 req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
8992 req->num = MCF_TEST_OTA_LID_BASE_GID+125;
8993 req->rec_id = 1;
8994 req->len = 0;
8995 strcpy(req->config, "0");
8996
8997 cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
8998
8999 mcf_ret = mcf_query_variable_value(req, cnf);
9000 if (mcf_ret != MCF_OTA_R_SUCCESS) {
9001 mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "val_struct_3[0].vint");
9002 return KAL_FALSE;
9003 }
9004
9005 kal_mem_set(test_pattern,0,512);
9006 mcf_bytes_to_hex(&(mcf_ut_test_lid_value_pattern.val_struct_3[0].vint), cnf->len, KAL_FALSE, &test_pattern);
9007 mcf_toupper((char *)test_pattern);
9008
9009 if(strncmp((kal_char *)(cnf->value), test_pattern, cnf->len*2) != 0){
9010 mcf_ut_format_err_str("val_struct_3[0].vint, %s, %s\r\n", cnf->value, test_pattern);
9011 return KAL_FALSE;
9012 }
9013
9014 if(cnf->len != 4){
9015 mcf_ut_format_err_str("val_struct_3[0].vint, %d, %d\r\n", cnf->len, 4);
9016 return KAL_FALSE;
9017 }
9018
9019 free_local_para((local_para_struct *)req);
9020 free_local_para((local_para_struct *)cnf);
9021
9022
9023 //buffer in struct operation - VAL_STRUCT_3[3].VBUFFER[2][4][5]
9024 req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
9025 req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
9026 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
9027 req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
9028 req->num = MCF_TEST_OTA_LID_BASE_GID+120;
9029 req->rec_id = 1;
9030 req->len = 0;
9031 strcpy(req->config, "3,2,4,5");
9032
9033 cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
9034
9035 mcf_ret = mcf_query_variable_value(req, cnf);
9036 if (mcf_ret != MCF_OTA_R_SUCCESS) {
9037 mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "VAL_STRUCT_3[3].VBUFFER[2][4][5]");
9038 return KAL_FALSE;
9039 }
9040
9041 kal_mem_set(test_pattern,0,512);
9042 mcf_bytes_to_hex(&(mcf_ut_test_lid_value_pattern.val_struct_3[3].vbuffer[2]), cnf->len, KAL_FALSE, &test_pattern);
9043 mcf_toupper((char *)test_pattern);
9044
9045 if(strncmp((kal_char *)(cnf->value), test_pattern, cnf->len*2) != 0){
9046 mcf_ut_format_err_str("VAL_STRUCT_3[3].VBUFFER[2][4][5], %s, %s\r\n", cnf->value, test_pattern);
9047 return KAL_FALSE;
9048 }
9049
9050 if(cnf->len != 1){
9051 mcf_ut_format_err_str("VAL_STRUCT_3[3].VBUFFER[2][4][5], %d, %d\r\n", cnf->len, 1);
9052 return KAL_FALSE;
9053 }
9054
9055
9056 free_local_para((local_para_struct *)req);
9057 free_local_para((local_para_struct *)cnf);
9058
9059 /* Test TLV OTA */
9060 /* Write MCF TLV-OTA file version to NVRAM */
9061 kal_mem_set(&nv_tlvota_file, 0, sizeof(nvram_ef_mcf_tlvota_file_info_struct));
9062 strncpy(nv_tlvota_file.path, MCF_FS_DEFAULT_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN);
9063 strncpy(nv_tlvota_file.name, MCF_FS_DEFAULT_TLVOTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN);
9064 if ( !nvram_external_write_data(NVRAM_EF_MCF_TLVOTA_FILE_LID, 1, (kal_uint8 *)&nv_tlvota_file, sizeof(nvram_ef_mcf_tlvota_file_info_struct)) ) {
9065 mcf_ut_format_err_str("Fail to write MCF TLV-OTA file info to NVRAM!!\r\n");
9066 return KAL_FALSE;
9067 }
9068
9069 for (i = 0; i < MAX_SIM_NUM; i++) {
9070 tlvota_file = &(pMcf->tlvota_file[i]);
9071
9072 MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
9073 if (tlvota_file) {
9074 ret = mcf_ut_open_test_data("MCF_TLVOTA_SBP_NA_ut_gid_normal.mcfopota", (kal_char *)(tlvota_file->buff), MCF_MAX_TLVOTA_FILE_SIZE);
9075 if (ret == KAL_FALSE) {
9076 mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_TLVOTA_SBP_NA_ut_gid_normal.mcfopota");
9077 return KAL_FALSE;
9078 }
9079
9080 MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
9081 } else {
9082 mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! Fail to take write lock! \r\n");
9083 return KAL_FALSE;
9084 }
9085 }
9086
9087 kal_mem_set(&sbp_tag, 0, sizeof(mcf_tlvota_sbp_tag_t));
9088 sbp_tag.sbp_id = SBP_TAG_SBPID;
9089 strncpy(sbp_tag.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
9090 strncpy(sbp_tag.mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
9091
9092 //byte operation - VAL_BYTE_11
9093 req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
9094 req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
9095 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OPOTA;
9096 req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
9097 req->num = MCF_TEST_OTA_LID_BASE_GID+44;
9098 req->rec_id = 1;
9099 req->len = 0;
9100 req->ps_id = 0;
9101 strcpy(req->config, "");
9102
9103 cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
9104
9105 mcf_ret = mcf_query_variable_value(req, cnf);
9106 if (mcf_ret != MCF_OTA_R_SUCCESS) {
9107 mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "VAL_BYTE_11");
9108 return KAL_FALSE;
9109 }
9110
9111 kal_mem_set(test_pattern,0,512);
9112 mcf_bytes_to_hex(&(mcf_ut_test_lid_value_pattern.val_byte_11), cnf->len, KAL_FALSE, &test_pattern);
9113 mcf_toupper((char *)test_pattern);
9114
9115 if(strncmp((kal_char *)(cnf->value), test_pattern, cnf->len*2) != 0){
9116 mcf_ut_format_err_str("VAL_BYTE_11, %s, %s\r\n", cnf->value, test_pattern);
9117 return KAL_FALSE;
9118 }
9119
9120 if(cnf->len != 1){
9121 mcf_ut_format_err_str("VAL_BYTE_11, %d, %d\r\n", cnf->len, 1);
9122 return KAL_FALSE;
9123 }
9124
9125 free_local_para((local_para_struct *)req);
9126 free_local_para((local_para_struct *)cnf);
9127
9128
9129 /* Test 3-d array */
9130
9131 /* Write MCF OTA file version to NVRAM */
9132 kal_mem_set(&nv_ota_file, 0, sizeof(nvram_ef_mcf_ota_file_info_struct));
9133 strncpy(nv_ota_file.path, MCF_FS_DEFAULT_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN);
9134 strncpy(nv_ota_file.name, MCF_FS_DEFAULT_OTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN);
9135 if ( !nvram_external_write_data(NVRAM_EF_MCF_OTA_FILE_LID, 1, (kal_uint8 *)&nv_ota_file, sizeof(nvram_ef_mcf_ota_file_info_struct)) ) {
9136 mcf_ut_format_err_str("Fail to write MCF OTA file info to NVRAM!!\r\n");
9137 return KAL_FALSE;
9138 }
9139 kal_mem_set(&nv_sw_info, 0, sizeof(nvram_ef_mcf_sw_info_struct));
9140 strncpy(nv_sw_info.last_update_file.sw_version, MCF_UT_SW_VERNO, MCF_FILE_MAX_SW_VERSION_LEN);
9141 strncpy(nv_sw_info.last_update_file.gen_time, MCF_UT_GEN_TIME, MCF_FILE_MAX_GEN_TIME_LEN);
9142 strcpy(nv_sw_info.last_update_file.path, "");
9143 strcpy(nv_sw_info.last_update_file.name, "");
9144 if ( !nvram_external_write_data(NVRAM_EF_MCF_SW_INFO_LID, 1, (kal_uint8 *)&nv_sw_info, sizeof(nvram_ef_mcf_sw_info_struct)) ) {
9145 mcf_ut_format_err_str("Fail to write MCF sw info to NVRAM!!\r\n");
9146 return KAL_FALSE;
9147 }
9148
9149 /*
9150 * Apply 3-d array and bit byte operation default OTA
9151 */
9152 MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
9153 if (ota_file) {
9154 ret = mcf_ut_open_test_data("MCF_OTA_3d_array_and_bit_byte_ut_gid_normal.mcfota", (kal_char *)(ota_file->buff), MCF_MAX_OTA_FILE_SIZE);
9155 if (ret == KAL_FALSE) {
9156 mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_OTA_3d_array_and_bit_byte_ut_gid_normal.mcfota");
9157 return KAL_FALSE;
9158 }
9159
9160 MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
9161 } else {
9162 mcf_ut_format_err_str("Reset LID FAIL!! Fail to take write lock! \r\n");
9163 return KAL_FALSE;
9164 }
9165
9166 mcf_ret = mcf_do_ota_full();
9167 if (mcf_ret != MCF_OTA_R_SUCCESS) {
9168 mcf_ut_format_err_str("Reset LID FAIL!! ret(%d) \r\n", mcf_ret);
9169 return KAL_FALSE;
9170 }
9171
9172 if ( !nvram_external_read_data(NVRAM_EF_MCF_TEST_OTA_LID, 1, (kal_uint8 *)&nv_lid_buffer, sizeof(nvram_ef_mcf_test_struct)) ) {
9173 mcf_ut_format_err_str("Fail to read NVRAM_EF_MCF_TEST_OTA_LID!!\r\n");
9174 ret = KAL_FALSE;
9175 }
9176
9177 if ( kal_mem_cmp((kal_uint8 *)&nv_lid_buffer, &mcf_ut_test_lid_value_new_pattern, sizeof(nvram_ef_mcf_test_struct)) != 0 ) {
9178 ret = KAL_FALSE;
9179 mcf_ut_format_err_str("Do full OTA positive test (SW verno match) FAIL!!\r\n");
9180 }
9181
9182 //3-D array operation - VAL_STRUCT_3[0].ARRAY_D[4][3][2]
9183 req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
9184 req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
9185 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
9186 req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
9187 req->num = MCF_TEST_OTA_LID_BASE_GID+106;
9188 req->rec_id = 1;
9189 req->len = 0;
9190 strcpy(req->config, "0,4,3,2");
9191
9192 cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
9193
9194 mcf_ret = mcf_query_variable_value(req, cnf);
9195 if (mcf_ret != MCF_OTA_R_SUCCESS) {
9196 mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "VAL_STRUCT_3[0].ARRAY_D[4][3][2]");
9197 return KAL_FALSE;
9198 }
9199
9200 kal_mem_set(test_pattern,0,512);
9201 mcf_bytes_to_hex(&(mcf_ut_test_lid_value_new_pattern.val_struct_3[0].array_d[4][3][2]), cnf->len, KAL_FALSE, &test_pattern);
9202 mcf_toupper((char *)test_pattern);
9203
9204 if(strncmp((kal_char *)(cnf->value), test_pattern, cnf->len*2) != 0){
9205 mcf_ut_format_err_str("VAL_STRUCT_3[0].ARRAY_D[4][3][2], %s, %s\r\n", cnf->value, test_pattern);
9206 return KAL_FALSE;
9207 }
9208
9209 if(cnf->len != 1){
9210 mcf_ut_format_err_str("VAL_STRUCT_3[0].ARRAY_D[4][3][2], %d, %d\r\n", cnf->len, 1);
9211 return KAL_FALSE;
9212 }
9213
9214 free_local_para((local_para_struct *)req);
9215 free_local_para((local_para_struct *)cnf);
9216
9217 //3-D array operation - VAL_STRUCT_3[0].ARRAY_D[4][3]
9218 req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
9219 req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
9220 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
9221 req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
9222 req->num = MCF_TEST_OTA_LID_BASE_GID+106;
9223 req->rec_id = 1;
9224 req->len = 0;
9225 strcpy(req->config, "0,4,3");
9226
9227 cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
9228
9229 mcf_ret = mcf_query_variable_value(req, cnf);
9230 if (mcf_ret != MCF_OTA_R_SUCCESS) {
9231 mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "VAL_STRUCT_3[0].ARRAY_D[4][3]");
9232 return KAL_FALSE;
9233 }
9234
9235 kal_mem_set(test_pattern,0,512);
9236 mcf_bytes_to_hex(&(mcf_ut_test_lid_value_new_pattern.val_struct_3[0].array_d[4][3]), cnf->len, KAL_FALSE, &test_pattern);
9237 mcf_toupper((char *)test_pattern);
9238
9239 if(strncmp((kal_char *)(cnf->value), test_pattern, cnf->len*2) != 0){
9240 mcf_ut_format_err_str("VAL_STRUCT_3[0].ARRAY_D[4][3], %s, %s\r\n", cnf->value, test_pattern);
9241 return KAL_FALSE;
9242 }
9243
9244 if(cnf->len != 1){
9245 mcf_ut_format_err_str("VAL_STRUCT_3[0].ARRAY_D[4][3], %d, %d\r\n", cnf->len, 1);
9246 return KAL_FALSE;
9247 }
9248
9249 free_local_para((local_para_struct *)req);
9250 free_local_para((local_para_struct *)cnf);
9251
9252 //3-D array operation - VAL_STRUCT_3[0].ARRAY_D[4]
9253 req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
9254 req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
9255 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
9256 req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
9257 req->num = MCF_TEST_OTA_LID_BASE_GID+106;
9258 req->rec_id = 1;
9259 req->len = 0;
9260 strcpy(req->config, "0,4");
9261
9262 cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
9263
9264 mcf_ret = mcf_query_variable_value(req, cnf);
9265 if (mcf_ret != MCF_OTA_R_SUCCESS) {
9266 mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "VAL_STRUCT_3[0].ARRAY_D[4]");
9267 return KAL_FALSE;
9268 }
9269
9270 kal_mem_set(test_pattern,0,512);
9271 mcf_bytes_to_hex(&(mcf_ut_test_lid_value_new_pattern.val_struct_3[0].array_d[4]), cnf->len, KAL_FALSE, &test_pattern);
9272 mcf_toupper((char *)test_pattern);
9273
9274 if(strncmp((kal_char *)(cnf->value), test_pattern, cnf->len*2) != 0){
9275 mcf_ut_format_err_str("VAL_STRUCT_3[0].ARRAY_D[4], %s, %s\r\n", cnf->value, test_pattern);
9276 return KAL_FALSE;
9277 }
9278
9279 if(cnf->len != 1){
9280 mcf_ut_format_err_str("VAL_STRUCT_3[0].ARRAY_D[4], %d, %d\r\n", cnf->len, 1);
9281 return KAL_FALSE;
9282 }
9283
9284 free_local_para((local_para_struct *)req);
9285 free_local_para((local_para_struct *)cnf);
9286
9287 //3-D array operation - VAL_STRUCT_3[0].ARRAY_D
9288 req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
9289 req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
9290 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
9291 req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
9292 req->num = MCF_TEST_OTA_LID_BASE_GID+106;
9293 req->rec_id = 1;
9294 req->len = 0;
9295 strcpy(req->config, "0");
9296
9297 cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
9298
9299 mcf_ret = mcf_query_variable_value(req, cnf);
9300 if (mcf_ret != MCF_OTA_R_SUCCESS) {
9301 mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "VAL_STRUCT_3[0].ARRAY_D");
9302 return KAL_FALSE;
9303 }
9304
9305 kal_mem_set(test_pattern,0,512);
9306 mcf_bytes_to_hex(&(mcf_ut_test_lid_value_new_pattern.val_struct_3[0].array_d), cnf->len, KAL_FALSE, &test_pattern);
9307 mcf_toupper((char *)test_pattern);
9308
9309 if(strncmp((kal_char *)(cnf->value), test_pattern, cnf->len*2) != 0){
9310 mcf_ut_format_err_str("VAL_STRUCT_3[0].ARRAY_D, %s, %s\r\n", cnf->value, test_pattern);
9311 return KAL_FALSE;
9312 }
9313
9314 if(cnf->len != 1){
9315 mcf_ut_format_err_str("VAL_STRUCT_3[0].ARRAY_D, %d, %d\r\n", cnf->len, 1);
9316 return KAL_FALSE;
9317 }
9318
9319 free_local_para((local_para_struct *)req);
9320 free_local_para((local_para_struct *)cnf);
9321
9322 //3-D array operation - VAL_STRUCT_3[0].ARRAY_D[4][2]
9323 req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
9324 req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
9325 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
9326 req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
9327 req->num = MCF_TEST_OTA_LID_BASE_GID+106;
9328 req->rec_id = 1;
9329 req->len = 2;
9330 strcpy(req->config, "0,4,2");
9331
9332 cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
9333
9334 mcf_ret = mcf_query_variable_value(req, cnf);
9335 if (mcf_ret != MCF_OTA_R_SUCCESS) {
9336 mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "VAL_STRUCT_3[0].ARRAY_D[4][2]");
9337 return KAL_FALSE;
9338 }
9339
9340 kal_mem_set(test_pattern,0,512);
9341 mcf_bytes_to_hex(&(mcf_ut_test_lid_value_new_pattern.val_struct_3[0].array_d[4][2]), cnf->len, KAL_FALSE, &test_pattern);
9342 mcf_toupper((char *)test_pattern);
9343
9344 if(strncmp((kal_char *)(cnf->value), test_pattern, cnf->len*2) != 0){
9345 mcf_ut_format_err_str("VAL_STRUCT_3[0].ARRAY_D[4][2], %s, %s\r\n", cnf->value, test_pattern);
9346 return KAL_FALSE;
9347 }
9348
9349 if(cnf->len != 2){
9350 mcf_ut_format_err_str("VAL_STRUCT_3[0].ARRAY_D[4][2], %d, %d\r\n", cnf->len, 2);
9351 return KAL_FALSE;
9352 }
9353
9354 free_local_para((local_para_struct *)req);
9355 free_local_para((local_para_struct *)cnf);
9356
9357 //3-D array operation - VAL_STRUCT_3[0].ARRAY_D[3]
9358 req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
9359 req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
9360 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
9361 req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
9362 req->num = MCF_TEST_OTA_LID_BASE_GID+106;
9363 req->rec_id = 1;
9364 req->len = 10;
9365 strcpy(req->config, "0,3");
9366
9367 cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
9368
9369 mcf_ret = mcf_query_variable_value(req, cnf);
9370 if (mcf_ret != MCF_OTA_R_SUCCESS) {
9371 mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "VAL_STRUCT_3[0].ARRAY_D[3]");
9372 return KAL_FALSE;
9373 }
9374
9375 kal_mem_set(test_pattern,0,512);
9376 mcf_bytes_to_hex(&(mcf_ut_test_lid_value_new_pattern.val_struct_3[0].array_d[3]), cnf->len, KAL_FALSE, &test_pattern);
9377 mcf_toupper((char *)test_pattern);
9378
9379 if(strncmp((kal_char *)(cnf->value), test_pattern, cnf->len*2) != 0){
9380 mcf_ut_format_err_str("VAL_STRUCT_3[0].ARRAY_D[3], %s, %s\r\n", cnf->value, test_pattern);
9381 return KAL_FALSE;
9382 }
9383
9384 if(cnf->len != 10){
9385 mcf_ut_format_err_str("VAL_STRUCT_3[0].ARRAY_D[3], %d, %d\r\n", cnf->len, 10);
9386 return KAL_FALSE;
9387 }
9388
9389 free_local_para((local_para_struct *)req);
9390 free_local_para((local_para_struct *)cnf);
9391
9392
9393 /* Different variable size */
9394
9395 //3-D array operation - VAL_STRUCT_3[0].ARRAY_D4[4][3][2]
9396 req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
9397 req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
9398 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
9399 req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
9400 req->num = MCF_TEST_OTA_LID_BASE_GID+107;
9401 req->rec_id = 1;
9402 req->len = 0;
9403 strcpy(req->config, "0,4,3,2");
9404
9405 cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
9406
9407 mcf_ret = mcf_query_variable_value(req, cnf);
9408 if (mcf_ret != MCF_OTA_R_SUCCESS) {
9409 mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "VAL_STRUCT_3[0].ARRAY_D4[4][3][2]");
9410 return KAL_FALSE;
9411 }
9412
9413 kal_mem_set(test_pattern,0,512);
9414 mcf_bytes_to_hex(&(mcf_ut_test_lid_value_new_pattern.val_struct_3[0].array_d4[4][3][2]), cnf->len, KAL_FALSE, &test_pattern);
9415 mcf_toupper((char *)test_pattern);
9416
9417 if(strncmp((kal_char *)(cnf->value), test_pattern, cnf->len*2) != 0){
9418 mcf_ut_format_err_str("VAL_STRUCT_3[0].ARRAY_D4[4][3][2], %s, %s\r\n", cnf->value, test_pattern);
9419 return KAL_FALSE;
9420 }
9421
9422 if(cnf->len != 4){
9423 mcf_ut_format_err_str("VAL_STRUCT_3[0].ARRAY_D4[4][3][2], %d, %d\r\n", cnf->len, 4);
9424 return KAL_FALSE;
9425 }
9426
9427 free_local_para((local_para_struct *)req);
9428 free_local_para((local_para_struct *)cnf);
9429
9430 //3-D array operation - VAL_STRUCT_3[0].ARRAY_D4[4][3]
9431 req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
9432 req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
9433 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
9434 req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
9435 req->num = MCF_TEST_OTA_LID_BASE_GID+107;
9436 req->rec_id = 1;
9437 req->len = 0;
9438 strcpy(req->config, "0,4,3");
9439
9440 cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
9441
9442 mcf_ret = mcf_query_variable_value(req, cnf);
9443 if (mcf_ret != MCF_OTA_R_SUCCESS) {
9444 mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "VAL_STRUCT_3[0].ARRAY_D4[4][3]");
9445 return KAL_FALSE;
9446 }
9447
9448 kal_mem_set(test_pattern,0,512);
9449 mcf_bytes_to_hex(&(mcf_ut_test_lid_value_new_pattern.val_struct_3[0].array_d4[4][3]), cnf->len, KAL_FALSE, &test_pattern);
9450 mcf_toupper((char *)test_pattern);
9451
9452 if(strncmp((kal_char *)(cnf->value), test_pattern, cnf->len*2) != 0){
9453 mcf_ut_format_err_str("VAL_STRUCT_3[0].ARRAY_D4[4][3], %s, %s\r\n", cnf->value, test_pattern);
9454 return KAL_FALSE;
9455 }
9456
9457 if(cnf->len != 4){
9458 mcf_ut_format_err_str("VAL_STRUCT_3[0].ARRAY_D4[4][3], %d, %d\r\n", cnf->len, 4);
9459 return KAL_FALSE;
9460 }
9461
9462 free_local_para((local_para_struct *)req);
9463 free_local_para((local_para_struct *)cnf);
9464
9465 //3-D array operation - VAL_STRUCT_3[0].ARRAY_D4[4]
9466 req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
9467 req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
9468 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
9469 req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
9470 req->num = MCF_TEST_OTA_LID_BASE_GID+107;
9471 req->rec_id = 1;
9472 req->len = 0;
9473 strcpy(req->config, "0,4");
9474
9475 cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
9476
9477 mcf_ret = mcf_query_variable_value(req, cnf);
9478 if (mcf_ret != MCF_OTA_R_SUCCESS) {
9479 mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "VAL_STRUCT_3[0].ARRAY_D4[4]");
9480 return KAL_FALSE;
9481 }
9482
9483 kal_mem_set(test_pattern,0,512);
9484 mcf_bytes_to_hex(&(mcf_ut_test_lid_value_new_pattern.val_struct_3[0].array_d4[4]), cnf->len, KAL_FALSE, &test_pattern);
9485 mcf_toupper((char *)test_pattern);
9486
9487 if(strncmp((kal_char *)(cnf->value), test_pattern, cnf->len*2) != 0){
9488 mcf_ut_format_err_str("VAL_STRUCT_3[0].ARRAY_D4[4], %s, %s\r\n", cnf->value, test_pattern);
9489 return KAL_FALSE;
9490 }
9491
9492 if(cnf->len != 4){
9493 mcf_ut_format_err_str("VAL_STRUCT_3[0].ARRAY_D4[4], %d, %d\r\n", cnf->len, 4);
9494 return KAL_FALSE;
9495 }
9496
9497 free_local_para((local_para_struct *)req);
9498 free_local_para((local_para_struct *)cnf);
9499
9500 //3-D array operation - VAL_STRUCT_3[0].ARRAY_D4[4]
9501 req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
9502 req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
9503 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
9504 req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
9505 req->num = MCF_TEST_OTA_LID_BASE_GID+107;
9506 req->rec_id = 1;
9507 req->len = 2;
9508 strcpy(req->config, "0,4");
9509
9510 cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
9511
9512 mcf_ret = mcf_query_variable_value(req, cnf);
9513 if (mcf_ret != MCF_OTA_R_SUCCESS) {
9514 mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "VAL_STRUCT_3[0].ARRAY_D4[4]");
9515 return KAL_FALSE;
9516 }
9517
9518 kal_mem_set(test_pattern,0,512);
9519 mcf_bytes_to_hex(&(mcf_ut_test_lid_value_new_pattern.val_struct_3[0].array_d4[4]), cnf->len, KAL_FALSE, &test_pattern);
9520 mcf_toupper((char *)test_pattern);
9521
9522 if(strncmp((kal_char *)(cnf->value), test_pattern, cnf->len*2) != 0){
9523 mcf_ut_format_err_str("VAL_STRUCT_3[0].ARRAY_D4[4], %s, %s\r\n", cnf->value, test_pattern);
9524 return KAL_FALSE;
9525 }
9526
9527 if(cnf->len != 2){
9528 mcf_ut_format_err_str("VAL_STRUCT_3[0].ARRAY_D4[4], %d, %d\r\n", cnf->len, 2);
9529 return KAL_FALSE;
9530 }
9531
9532 free_local_para((local_para_struct *)req);
9533 free_local_para((local_para_struct *)cnf);
9534
9535 //3-D array operation - VAL_STRUCT_3[0].ARRAY_D4[4][2]
9536 req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
9537 req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
9538 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
9539 req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
9540 req->num = MCF_TEST_OTA_LID_BASE_GID+107;
9541 req->rec_id = 1;
9542 req->len = 2;
9543 strcpy(req->config, "0,4,2");
9544
9545 cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
9546
9547 mcf_ret = mcf_query_variable_value(req, cnf);
9548 if (mcf_ret != MCF_OTA_R_SUCCESS) {
9549 mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "VAL_STRUCT_3[0].ARRAY_D4[4][2]");
9550 return KAL_FALSE;
9551 }
9552
9553 kal_mem_set(test_pattern,0,512);
9554 mcf_bytes_to_hex(&(mcf_ut_test_lid_value_new_pattern.val_struct_3[0].array_d4[4]), cnf->len, KAL_FALSE, &test_pattern);
9555 mcf_toupper((char *)test_pattern);
9556
9557 if(strncmp((kal_char *)(cnf->value), test_pattern, cnf->len*2) != 0){
9558 mcf_ut_format_err_str("VAL_STRUCT_3[0].ARRAY_D4[4][2], %s, %s\r\n", cnf->value, test_pattern);
9559 return KAL_FALSE;
9560 }
9561
9562 if(cnf->len != 2){
9563 mcf_ut_format_err_str("VAL_STRUCT_3[0].ARRAY_D4[4][2], %d, %d\r\n", cnf->len, 2);
9564 return KAL_FALSE;
9565 }
9566
9567 free_local_para((local_para_struct *)req);
9568 free_local_para((local_para_struct *)cnf);
9569
9570 //3-D array operation - VAL_STRUCT_3[0].ARRAY_D4
9571 req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
9572 req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
9573 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
9574 req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
9575 req->num = MCF_TEST_OTA_LID_BASE_GID+107;
9576 req->rec_id = 1;
9577 req->len = 0;
9578 strcpy(req->config, "0");
9579
9580 cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
9581
9582 mcf_ret = mcf_query_variable_value(req, cnf);
9583 if (mcf_ret != MCF_OTA_R_SUCCESS) {
9584 mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "VAL_STRUCT_3[0].ARRAY_D4");
9585 return KAL_FALSE;
9586 }
9587
9588 kal_mem_set(test_pattern,0,512);
9589 mcf_bytes_to_hex(&(mcf_ut_test_lid_value_new_pattern.val_struct_3[0].array_d4), cnf->len, KAL_FALSE, &test_pattern);
9590 mcf_toupper((char *)test_pattern);
9591
9592 if(strncmp((kal_char *)(cnf->value), test_pattern, cnf->len*2) != 0){
9593 mcf_ut_format_err_str("VAL_STRUCT_3[0].ARRAY_D4, %s, %s\r\n", cnf->value, test_pattern);
9594 return KAL_FALSE;
9595 }
9596
9597 if(cnf->len != 4){
9598 mcf_ut_format_err_str("VAL_STRUCT_3[0].ARRAY_D4, %d, %d\r\n", cnf->len, 4);
9599 return KAL_FALSE;
9600 }
9601
9602 free_local_para((local_para_struct *)req);
9603 free_local_para((local_para_struct *)cnf);
9604
9605 /* Nagative test case */
9606
9607 //over array size - VAL_STRUCT_3[0].ARRAY_D[5]
9608 req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
9609 req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
9610 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
9611 req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
9612 req->num = MCF_TEST_OTA_LID_BASE_GID+106;
9613 req->rec_id = 1;
9614 req->len = 0;
9615 strcpy(req->config, "0,5");
9616
9617 cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
9618
9619 mcf_ret = mcf_query_variable_value(req, cnf);
9620 if (mcf_ret != MCF_OTA_R_INVALID_PARAMETER) {
9621 mcf_ut_format_err_str("over array size! VAL_STRUCT_3[0].ARRAY_D[5] is not FAIL!!\r\n");
9622 return KAL_FALSE;
9623 }
9624
9625 free_local_para((local_para_struct *)req);
9626 free_local_para((local_para_struct *)cnf);
9627
9628 //over array size - VAL_STRUCT_3[4].ARRAY_D
9629 req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
9630 req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
9631 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
9632 req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
9633 req->num = MCF_TEST_OTA_LID_BASE_GID+106;
9634 req->rec_id = 1;
9635 req->len = 0;
9636 strcpy(req->config, "4");
9637
9638 cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
9639
9640 mcf_ret = mcf_query_variable_value(req, cnf);
9641 if (mcf_ret != MCF_OTA_R_INVALID_PARAMETER) {
9642 mcf_ut_format_err_str("over array size! VAL_STRUCT_3[4].ARRAY_D is not FAIL!!\r\n");
9643 return KAL_FALSE;
9644 }
9645
9646 free_local_para((local_para_struct *)req);
9647 free_local_para((local_para_struct *)cnf);
9648
9649 //2 byte bit operation- val_bit_2byte_3
9650 req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
9651 req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
9652 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
9653 req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
9654 req->num = MCF_TEST_OTA_LID_BASE_GID;
9655 req->rec_id = 1;
9656 req->len = 0;
9657 strcpy(req->config, "");
9658
9659 cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
9660
9661 mcf_ret = mcf_query_variable_value(req, cnf);
9662 if (mcf_ret != MCF_OTA_R_SUCCESS) {
9663 mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "val_bit_2byte_3");
9664 return KAL_FALSE;
9665 }
9666
9667
9668 if(strncmp((kal_char *)(cnf->value), "FFFF", cnf->len*2) != 0){
9669 mcf_ut_format_err_str("val_bit_2byte_3, %s, %s\r\n", cnf->value, "FFFF");
9670 return KAL_FALSE;
9671 }
9672
9673 if(cnf->len != 2){
9674 mcf_ut_format_err_str("val_bit_2byte_3, %d, %d\r\n", cnf->len, 2);
9675 return KAL_FALSE;
9676 }
9677
9678 free_local_para((local_para_struct *)req);
9679 free_local_para((local_para_struct *)cnf);
9680
9681 //2 byte bit operation- val_bit_2byte_3.F4b
9682 req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
9683 req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
9684 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
9685 req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
9686 req->num = MCF_TEST_OTA_LID_BASE_GID+2;
9687 req->rec_id = 1;
9688 req->len = 0;
9689 strcpy(req->config, "");
9690
9691 cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
9692
9693 mcf_ret = mcf_query_variable_value(req, cnf);
9694 if (mcf_ret != MCF_OTA_R_SUCCESS) {
9695 mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "val_bit_2byte_3.F4b");
9696 return KAL_FALSE;
9697 }
9698
9699
9700 if(strncmp((cnf->value), "0F", cnf->len*2) != 0){
9701 mcf_ut_format_err_str("val_bit_2byte_3.F4b, %s, %s\r\n", cnf->value, "0F");
9702 return KAL_FALSE;
9703 }
9704
9705 if(cnf->len != 1){
9706 mcf_ut_format_err_str("val_bit_2byte_3.F4b, %d, %d\r\n", cnf->len, 1);
9707 return KAL_FALSE;
9708 }
9709
9710 free_local_para((local_para_struct *)req);
9711 free_local_para((local_para_struct *)cnf);
9712
9713 //2 byte bit operation - val_bit_2byte_3.L4b
9714 req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
9715 req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
9716 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
9717 req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
9718 req->num = MCF_TEST_OTA_LID_BASE_GID+4;
9719 req->rec_id = 1;
9720 req->len = 0;
9721 strcpy(req->config, "");
9722
9723 cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
9724
9725 mcf_ret = mcf_query_variable_value(req, cnf);
9726 if (mcf_ret != MCF_OTA_R_SUCCESS) {
9727 mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "val_bit_2byte_3.L4b");
9728 return KAL_FALSE;
9729 }
9730
9731
9732 if(strncmp((kal_char *)(cnf->value), "0F", cnf->len*2) != 0){
9733 mcf_ut_format_err_str("val_bit_2byte_3.L4b, %s, %s\r\n", cnf->value, "0F");
9734 return KAL_FALSE;
9735 }
9736
9737 if(cnf->len != 1){
9738 mcf_ut_format_err_str("val_bit_2byte_3.L4b, %d, %d\r\n", cnf->len, 1);
9739 return KAL_FALSE;
9740 }
9741
9742 free_local_para((local_para_struct *)req);
9743 free_local_para((local_para_struct *)cnf);
9744
9745 //2 byte bit operation - val_bit_2byte_3.F2b
9746 req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
9747 req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
9748 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
9749 req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
9750 req->num = MCF_TEST_OTA_LID_BASE_GID+1;
9751 req->rec_id = 1;
9752 req->len = 0;
9753 strcpy(req->config, "");
9754
9755 cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
9756
9757 mcf_ret = mcf_query_variable_value(req, cnf);
9758 if (mcf_ret != MCF_OTA_R_SUCCESS) {
9759 mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "val_bit_2byte_3.F2b");
9760 return KAL_FALSE;
9761 }
9762
9763 if(strncmp((kal_char *)(cnf->value), "03", cnf->len*2) != 0){
9764 mcf_ut_format_err_str("val_bit_2byte_3.F2b, %s, %s\r\n", cnf->value, "03");
9765 return KAL_FALSE;
9766 }
9767
9768 if(cnf->len != 1){
9769 mcf_ut_format_err_str("val_bit_2byte_3.F2b, %d, %d\r\n", cnf->len, 1);
9770 return KAL_FALSE;
9771 }
9772
9773 free_local_para((local_para_struct *)req);
9774 free_local_para((local_para_struct *)cnf);
9775
9776 //2 byte bit operation - val_bit_2byte_3.L2b
9777 req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
9778 req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
9779 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
9780 req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
9781 req->num = MCF_TEST_OTA_LID_BASE_GID+3;
9782 req->rec_id = 1;
9783 req->len = 0;
9784 strcpy(req->config, "");
9785
9786 cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
9787
9788 mcf_ret = mcf_query_variable_value(req, cnf);
9789 if (mcf_ret != MCF_OTA_R_SUCCESS) {
9790 mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "val_bit_2byte_3.L2b");
9791 return KAL_FALSE;
9792 }
9793
9794
9795 if(strncmp((kal_char *)(cnf->value), "03", cnf->len*2) != 0){
9796 mcf_ut_format_err_str("val_bit_2byte_3.L2b, %s, %s\r\n", cnf->value, "03");
9797 return KAL_FALSE;
9798 }
9799
9800 if(cnf->len != 1){
9801 mcf_ut_format_err_str("val_bit_2byte_3.L2b, %d, %d\r\n", cnf->len, 1);
9802 return KAL_FALSE;
9803 }
9804
9805 free_local_para((local_para_struct *)req);
9806 free_local_para((local_para_struct *)cnf);
9807
9808 //2 byte bit operation - val_bit_2byte_3.b2
9809 req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
9810 req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
9811 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
9812 req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
9813 req->num = MCF_TEST_OTA_LID_BASE_GID+6;
9814 req->rec_id = 1;
9815 req->len = 0;
9816 strcpy(req->config, "");
9817
9818 cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
9819
9820 mcf_ret = mcf_query_variable_value(req, cnf);
9821 if (mcf_ret != MCF_OTA_R_SUCCESS) {
9822 mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "val_bit_2byte_3.b2");
9823 return KAL_FALSE;
9824 }
9825
9826 if(strncmp((kal_char *)(cnf->value), "01", cnf->len*2) != 0){
9827 mcf_ut_format_err_str("val_bit_2byte_3.b2, %s, %s\r\n", cnf->value, "01");
9828 return KAL_FALSE;
9829 }
9830
9831 if(cnf->len != 1){
9832 mcf_ut_format_err_str("val_bit_2byte_3.b2, %d, %d\r\n", cnf->len, 1);
9833 return KAL_FALSE;
9834 }
9835
9836 free_local_para((local_para_struct *)req);
9837 free_local_para((local_para_struct *)cnf);
9838
9839 //2 byte bit operation - val_bit_4byte_3
9840 req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
9841 req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
9842 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
9843 req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
9844 req->num = MCF_TEST_OTA_LID_BASE_GID+9;
9845 req->rec_id = 1;
9846 req->len = 0;
9847 strcpy(req->config, "");
9848
9849 cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
9850
9851 mcf_ret = mcf_query_variable_value(req, cnf);
9852 if (mcf_ret != MCF_OTA_R_SUCCESS) {
9853 mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "val_bit_4byte_3");
9854 return KAL_FALSE;
9855 }
9856
9857 if(strncmp((kal_char *)(cnf->value), "FFFFFFFF", cnf->len*2) != 0){
9858 mcf_ut_format_err_str("val_bit_4byte_3, %s, %s\r\n", cnf->value, "FFFFFFFF");
9859 return KAL_FALSE;
9860 }
9861
9862 if(cnf->len != 4){
9863 mcf_ut_format_err_str("val_bit_4byte_3, %d, %d\r\n", cnf->len, 4);
9864 return KAL_FALSE;
9865 }
9866
9867 free_local_para((local_para_struct *)req);
9868 free_local_para((local_para_struct *)cnf);
9869
9870 //2 byte bit operation - val_bit_4byte_3.F9b
9871 req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
9872 req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
9873 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
9874 req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
9875 req->num = MCF_TEST_OTA_LID_BASE_GID+12;
9876 req->rec_id = 1;
9877 req->len = 0;
9878 strcpy(req->config, "");
9879
9880 cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
9881
9882 mcf_ret = mcf_query_variable_value(req, cnf);
9883 if (mcf_ret != MCF_OTA_R_SUCCESS) {
9884 mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "val_bit_4byte_3.F9b");
9885 return KAL_FALSE;
9886 }
9887
9888 if(strncmp((kal_char *)(cnf->value), "FF01", cnf->len*2) != 0){
9889 mcf_ut_format_err_str("val_bit_4byte_3.F9b, %s, %s\r\n", cnf->value, "FF01");
9890 return KAL_FALSE;
9891 }
9892
9893 if(cnf->len != 2){
9894 mcf_ut_format_err_str("val_bit_4byte_3.F9b, %d, %d\r\n", cnf->len, 2);
9895 return KAL_FALSE;
9896 }
9897
9898 free_local_para((local_para_struct *)req);
9899 free_local_para((local_para_struct *)cnf);
9900
9901 //2 byte bit operation - val_bit_4byte_3.F4b
9902 req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
9903 req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
9904 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
9905 req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
9906 req->num = MCF_TEST_OTA_LID_BASE_GID+11;
9907 req->rec_id = 1;
9908 req->len = 0;
9909 strcpy(req->config, "");
9910
9911 cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
9912
9913 mcf_ret = mcf_query_variable_value(req, cnf);
9914 if (mcf_ret != MCF_OTA_R_SUCCESS) {
9915 mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "val_bit_4byte_3.F4b");
9916 return KAL_FALSE;
9917 }
9918
9919 if(strncmp((kal_char *)(cnf->value), "0F", cnf->len*2) != 0){
9920 mcf_ut_format_err_str("val_bit_4byte_3.F4b, %s, %s\r\n", cnf->value, "0F");
9921 return KAL_FALSE;
9922 }
9923
9924 if(cnf->len != 1){
9925 mcf_ut_format_err_str("val_bit_4byte_3.F4b, %d, %d\r\n", cnf->len, 1);
9926 return KAL_FALSE;
9927 }
9928
9929 free_local_para((local_para_struct *)req);
9930 free_local_para((local_para_struct *)cnf);
9931
9932 //2 byte bit operation - val_bit_4byte_3
9933 req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
9934 req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
9935 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
9936 req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
9937 req->num = MCF_TEST_OTA_LID_BASE_GID+10;
9938 req->rec_id = 1;
9939 req->len = 0;
9940 strcpy(req->config, "");
9941
9942 cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
9943
9944 mcf_ret = mcf_query_variable_value(req, cnf);
9945 if (mcf_ret != MCF_OTA_R_SUCCESS) {
9946 mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "val_bit_4byte_3.F2b");
9947 return KAL_FALSE;
9948 }
9949
9950 if(strncmp((kal_char *)(cnf->value), "03", cnf->len*2) != 0){
9951 mcf_ut_format_err_str("val_bit_4byte_3.F2b, %s, %s\r\n", cnf->value, "03");
9952 return KAL_FALSE;
9953 }
9954
9955 if(cnf->len != 1){
9956 mcf_ut_format_err_str("val_bit_4byte_3.F2b, %d, %d\r\n", cnf->len, 1);
9957 return KAL_FALSE;
9958 }
9959
9960 free_local_para((local_para_struct *)req);
9961 free_local_para((local_para_struct *)cnf);
9962
9963 /* Negative test */
9964 //3-D array operation - VAL_STRUCT_3[0].ARRAY_D[3] - not end '$'
9965 req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
9966 req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
9967 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
9968 req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
9969 req->num = MCF_TEST_OTA_LID_BASE_GID+106;
9970 req->rec_id = 1;
9971 req->len = 10;
9972 strcpy(req->config, "0,3");
9973
9974 cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
9975
9976 mcf_ret = mcf_query_variable_value(req, cnf);
9977 if (mcf_ret != MCF_OTA_R_SUCCESS) {
9978 mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "VAL_STRUCT_3[0].ARRAY_D[3]");
9979 return KAL_FALSE;
9980 }
9981
9982 kal_mem_set(test_pattern,0,512);
9983 mcf_bytes_to_hex(&(mcf_ut_test_lid_value_new_pattern.val_struct_3[0].array_d[3]), cnf->len, KAL_FALSE, &test_pattern);
9984 mcf_toupper((char *)test_pattern);
9985
9986 if(strncmp((kal_char *)(cnf->value), test_pattern, cnf->len*2) != 0){
9987 mcf_ut_format_err_str("VAL_STRUCT_3[0].ARRAY_D[3], %s, %s\r\n", cnf->value, test_pattern);
9988 return KAL_FALSE;
9989 }
9990
9991 if(cnf->len != 10){
9992 mcf_ut_format_err_str("VAL_STRUCT_3[0].ARRAY_D[3], %d, %d\r\n", cnf->len, 10);
9993 return KAL_FALSE;
9994 }
9995
9996 free_local_para((local_para_struct *)req);
9997 free_local_para((local_para_struct *)cnf);
9998
9999 //3-D array operation - VAL_STRUCT_3[0].ARRAY_D[3] - not use '$' to separate - result = VAL_STRUCT_3[0].ARRAY_D[0]
10000 req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
10001 req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
10002 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
10003 req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
10004 req->num = MCF_TEST_OTA_LID_BASE_GID+106;
10005 req->rec_id = 1;
10006 req->len = 1;
10007 strcpy(req->config, "0,3");
10008
10009 cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
10010
10011 mcf_ret = mcf_query_variable_value(req, cnf);
10012 if (mcf_ret != MCF_OTA_R_SUCCESS) {
10013 mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "VAL_STRUCT_3[0].ARRAY_D[3]");
10014 return KAL_FALSE;
10015 }
10016
10017 kal_mem_set(test_pattern,0,512);
10018 mcf_bytes_to_hex(&(mcf_ut_test_lid_value_new_pattern.val_struct_3[0].array_d[3]), cnf->len, KAL_FALSE, &test_pattern);
10019 mcf_toupper((char *)test_pattern);
10020
10021 if(strncmp((kal_char *)(cnf->value), test_pattern, cnf->len*2) != 0){
10022 mcf_ut_format_err_str("VAL_STRUCT_3[0].ARRAY_D[3], %s, %s\r\n", cnf->value, test_pattern);
10023 return KAL_FALSE;
10024 }
10025
10026 if(cnf->len != 1){
10027 mcf_ut_format_err_str("VAL_STRUCT_3[0].ARRAY_D[3], %d, %d\r\n", cnf->len, 1);
10028 return KAL_FALSE;
10029 }
10030
10031 free_local_para((local_para_struct *)req);
10032 free_local_para((local_para_struct *)cnf);
10033
10034 //Read len is too large - val_bit_4byte_3(4 byte)
10035 req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
10036 req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
10037 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
10038 req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
10039 req->num = MCF_TEST_OTA_LID_BASE_GID+9;
10040 req->rec_id = 1;
10041 req->len = 4;
10042 strcpy(req->config, "");
10043
10044 cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
10045
10046 mcf_ret = mcf_query_variable_value(req, cnf);
10047 if (mcf_ret != MCF_OTA_R_SUCCESS) {
10048 mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "val_bit_4byte_3.F2b");
10049 return KAL_FALSE;
10050 }
10051
10052 if(strncmp((kal_char *)(cnf->value), "FFFFFFFF", cnf->len*2) != 0){
10053 mcf_ut_format_err_str("val_bit_4byte_3.F2b, %s, %s\r\n", cnf->value, "03");
10054 return KAL_FALSE;
10055 }
10056
10057 if(cnf->len != 4){
10058 mcf_ut_format_err_str("val_bit_4byte_3.F2b, %d, %d\r\n", cnf->len, 4);
10059 return KAL_FALSE;
10060 }
10061
10062 free_local_para((local_para_struct *)req);
10063 free_local_para((local_para_struct *)cnf);
10064
10065 MCF_UT_PASS();
10066 return KAL_TRUE;
10067}
10068
10069#if !defined(__MTK_TARGET__)
10070kal_bool mcf_ut_mcf_check_lid_need_reset(void *p_param, kal_char *p_ret_err_str, kal_uint32 *p_ret_err_str_sz)
10071{
10072 mcf_t *pMcf = mcf_get_instance();
10073 mcf_ota_file_t *ota_file = &(pMcf->ota_file);
10074 nvram_ef_mcf_ota_file_info_struct nv_ota_file;
10075 nvram_ef_mcf_sw_info_struct nv_sw_info;
10076 mcf_ota_result_e mcf_ret;
10077 kal_bool ret;
10078
10079 mcf_ut_init();
10080
10081 /*
10082 * Check LID need reset positive test - Modify 3 LIDs
10083 */
10084 /* Write MCF OTA file version to NVRAM */
10085 kal_mem_set(&nv_ota_file, 0, sizeof(nvram_ef_mcf_ota_file_info_struct));
10086 strncpy(nv_ota_file.path, MCF_FS_DEFAULT_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN);
10087 strncpy(nv_ota_file.name, MCF_FS_DEFAULT_OTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN);
10088 if ( !nvram_external_write_data(NVRAM_EF_MCF_OTA_FILE_LID, 1, (kal_uint8 *)&nv_ota_file, sizeof(nvram_ef_mcf_ota_file_info_struct)) ) {
10089 mcf_ut_format_err_str("Fail to write MCF OTA file info to NVRAM!!\r\n");
10090 return KAL_FALSE;
10091 }
10092 kal_mem_set(&nv_sw_info, 0, sizeof(nvram_ef_mcf_sw_info_struct));
10093 strncpy(nv_sw_info.last_update_file.sw_version, MCF_UT_SW_VERNO, MCF_FILE_MAX_SW_VERSION_LEN);
10094 strncpy(nv_sw_info.last_update_file.gen_time, MCF_UT_GEN_TIME, MCF_FILE_MAX_GEN_TIME_LEN);
10095 strcpy(nv_sw_info.last_update_file.path, "");
10096 strcpy(nv_sw_info.last_update_file.name, "");
10097 if ( !nvram_external_write_data(NVRAM_EF_MCF_SW_INFO_LID, 1, (kal_uint8 *)&nv_sw_info, sizeof(nvram_ef_mcf_sw_info_struct)) ) {
10098 mcf_ut_format_err_str("Fail to write MCF sw info to NVRAM!!\r\n");
10099 return KAL_FALSE;
10100 }
10101
10102 MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
10103 if (ota_file) {
10104 ret = mcf_ut_open_test_data("OTA_3_LIDs.mcfota", (kal_char *)(ota_file->buff), MCF_MAX_OTA_FILE_SIZE);
10105 if (ret == KAL_FALSE) {
10106 mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "OTA_3_LIDs.mcfota");
10107 return KAL_FALSE;
10108 }
10109
10110 MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
10111 } else {
10112 mcf_ut_format_err_str("Do full OTA FAIL!! Fail to take write lock! \r\n");
10113 return KAL_FALSE;
10114 }
10115
10116 kal_mem_set(&mcf_last_mod_lid_g, 0, sizeof(nvram_mcf_lid_info_struct));
10117 kal_mem_set(&mcf_curr_mod_lid_g, 0, sizeof(nvram_mcf_lid_info_struct));
10118 mcf_ret = mcf_do_ota_full();
10119 if (mcf_ret != MCF_OTA_R_SUCCESS) {
10120 mcf_ut_format_err_str("Do full OTA FAIL!! ret(%d) \r\n", mcf_ret);
10121 return KAL_FALSE;
10122 }
10123
10124 ret = mcf_check_lid_need_reset(NVRAM_EF_MCF_TEST_OTA_LID);
10125 if (ret != KAL_TRUE) {
10126 mcf_ut_format_err_str("Check LID need reset positive test (Modify 3 LIDs) FAIL!! ret(%d), LID(%d) \r\n", ret, NVRAM_EF_MCF_TEST_OTA_LID);
10127 return KAL_FALSE;
10128 }
10129
10130 ret = mcf_check_lid_need_reset(NVRAM_EF_IMS_PROFILE_LID);
10131 if (ret != KAL_TRUE) {
10132 mcf_ut_format_err_str("Check LID need reset positive test (Modify 3 LIDs) FAIL!! ret(%d), LID(%d) \r\n", ret, NVRAM_EF_IMS_PROFILE_LID);
10133 return KAL_FALSE;
10134 }
10135
10136 ret = mcf_check_lid_need_reset(NVRAM_EF_XCAP_PROFILE_LID);
10137 if (ret != KAL_TRUE) {
10138 mcf_ut_format_err_str("Check LID need reset positive test (Modify 3 LIDs) FAIL!! ret(%d), LID(%d) \r\n", ret, NVRAM_EF_XCAP_PROFILE_LID);
10139 return KAL_FALSE;
10140 }
10141
10142 /*
10143 * Check LID need reset positive test - Modify 2 LIDs
10144 */
10145 /* Write MCF OTA file version to NVRAM */
10146 kal_mem_set(&nv_ota_file, 0, sizeof(nvram_ef_mcf_ota_file_info_struct));
10147 strncpy(nv_ota_file.path, MCF_FS_DEFAULT_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN);
10148 strncpy(nv_ota_file.name, MCF_FS_DEFAULT_OTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN);
10149 if ( !nvram_external_write_data(NVRAM_EF_MCF_OTA_FILE_LID, 1, (kal_uint8 *)&nv_ota_file, sizeof(nvram_ef_mcf_ota_file_info_struct)) ) {
10150 mcf_ut_format_err_str("Fail to write MCF OTA file info to NVRAM!!\r\n");
10151 return KAL_FALSE;
10152 }
10153 kal_mem_set(&nv_sw_info, 0, sizeof(nvram_ef_mcf_sw_info_struct));
10154 strncpy(nv_sw_info.last_update_file.sw_version, MCF_UT_SW_VERNO, MCF_FILE_MAX_SW_VERSION_LEN);
10155 strncpy(nv_sw_info.last_update_file.gen_time, MCF_UT_GEN_TIME, MCF_FILE_MAX_GEN_TIME_LEN);
10156 strcpy(nv_sw_info.last_update_file.path, "");
10157 strcpy(nv_sw_info.last_update_file.name, "");
10158 if ( !nvram_external_write_data(NVRAM_EF_MCF_SW_INFO_LID, 1, (kal_uint8 *)&nv_sw_info, sizeof(nvram_ef_mcf_sw_info_struct)) ) {
10159 mcf_ut_format_err_str("Fail to write MCF sw info to NVRAM!!\r\n");
10160 return KAL_FALSE;
10161 }
10162
10163 MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
10164 if (ota_file) {
10165 ret = mcf_ut_open_test_data("OTA_2_LIDs.mcfota", (kal_char *)(ota_file->buff), MCF_MAX_OTA_FILE_SIZE);
10166 if (ret == KAL_FALSE) {
10167 mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "OTA_2_LIDs.mcfota");
10168 return KAL_FALSE;
10169 }
10170
10171 MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
10172 } else {
10173 mcf_ut_format_err_str("Do full OTA FAIL!! Fail to take write lock! \r\n");
10174 return KAL_FALSE;
10175 }
10176
10177 kal_mem_set(&mcf_last_mod_lid_g, 0, sizeof(nvram_mcf_lid_info_struct));
10178 kal_mem_set(&mcf_curr_mod_lid_g, 0, sizeof(nvram_mcf_lid_info_struct));
10179 mcf_ret = mcf_do_ota_full();
10180 if (mcf_ret != MCF_OTA_R_SUCCESS) {
10181 mcf_ut_format_err_str("Do full OTA FAIL!! ret(%d) \r\n", mcf_ret);
10182 return KAL_FALSE;
10183 }
10184
10185 ret = mcf_check_lid_need_reset(NVRAM_EF_MCF_TEST_OTA_LID);
10186 if (ret != KAL_TRUE) {
10187 mcf_ut_format_err_str("Check LID need reset positive test (Modify 2 LIDs) FAIL!! ret(%d), LID(%d) \r\n", ret, NVRAM_EF_MCF_TEST_OTA_LID);
10188 return KAL_FALSE;
10189 }
10190
10191 ret = mcf_check_lid_need_reset(NVRAM_EF_IMS_PROFILE_LID);
10192 if (ret != KAL_TRUE) {
10193 mcf_ut_format_err_str("Check LID need reset positive test (Modify 2 LIDs) FAIL!! ret(%d), LID(%d) \r\n", ret, NVRAM_EF_IMS_PROFILE_LID);
10194 return KAL_FALSE;
10195 }
10196
10197 ret = mcf_check_lid_need_reset(NVRAM_EF_XCAP_PROFILE_LID);
10198 if (ret != KAL_TRUE) {
10199 mcf_ut_format_err_str("Check LID need reset positive test (Modify 2 LIDs) FAIL!! ret(%d), LID(%d) \r\n", ret, NVRAM_EF_XCAP_PROFILE_LID);
10200 return KAL_FALSE;
10201 }
10202
10203 /*
10204 * Check LID need reset positive test - OTA file does not update
10205 */
10206 kal_mem_set(&mcf_last_mod_lid_g, 0, sizeof(nvram_mcf_lid_info_struct));
10207 kal_mem_set(&mcf_curr_mod_lid_g, 0, sizeof(nvram_mcf_lid_info_struct));
10208 mcf_ret = mcf_do_ota_full();
10209 if (mcf_ret != MCF_OTA_R_SUCCESS) {
10210 mcf_ut_format_err_str("Do full OTA FAIL!! ret(%d) \r\n", mcf_ret);
10211 return KAL_FALSE;
10212 }
10213
10214 ret = mcf_check_lid_need_reset(NVRAM_EF_MCF_TEST_OTA_LID);
10215 if (ret != KAL_FALSE) {
10216 mcf_ut_format_err_str("Check LID need reset positive test (OTA file does not update) FAIL!! ret(%d), LID(%d) \r\n", ret, NVRAM_EF_MCF_TEST_OTA_LID);
10217 return KAL_FALSE;
10218 }
10219
10220 ret = mcf_check_lid_need_reset(NVRAM_EF_IMS_PROFILE_LID);
10221 if (ret != KAL_FALSE) {
10222 mcf_ut_format_err_str("Check LID need reset positive test (OTA file does not update) FAIL!! ret(%d), LID(%d) \r\n", ret, NVRAM_EF_IMS_PROFILE_LID);
10223 return KAL_FALSE;
10224 }
10225
10226 ret = mcf_check_lid_need_reset(NVRAM_EF_XCAP_PROFILE_LID);
10227 if (ret != KAL_FALSE) {
10228 mcf_ut_format_err_str("Check LID need reset positive test (OTA file does not update) FAIL!! ret(%d), LID(%d) \r\n", ret, NVRAM_EF_XCAP_PROFILE_LID);
10229 return KAL_FALSE;
10230 }
10231
10232 /*
10233 * Check LID need reset positive test - Max last LID list count
10234 */
10235 kal_mem_set(&mcf_last_mod_lid_g, 0, sizeof(nvram_mcf_lid_info_struct));
10236 kal_mem_set(&mcf_curr_mod_lid_g, 0, sizeof(nvram_mcf_lid_info_struct));
10237 mcf_last_mod_lid_g.lid_cnt = NVRAM_MCF_SAVE_LAST_LID_CNT;
10238
10239 ret = mcf_check_lid_need_reset(NVRAM_EF_MCF_TEST_OTA_LID);
10240 if (ret != KAL_TRUE) {
10241 mcf_ut_format_err_str("Check LID need reset positive test (Max last LID list count) FAIL!! ret(%d), LID(%d) \r\n", ret, NVRAM_EF_MCF_TEST_OTA_LID);
10242 return KAL_FALSE;
10243 }
10244
10245 ret = mcf_check_lid_need_reset(NVRAM_EF_IMS_PROFILE_LID);
10246 if (ret != KAL_TRUE) {
10247 mcf_ut_format_err_str("Check LID need reset positive test (Max last LID list count) FAIL!! ret(%d), LID(%d) \r\n", ret, NVRAM_EF_IMS_PROFILE_LID);
10248 return KAL_FALSE;
10249 }
10250
10251 ret = mcf_check_lid_need_reset(NVRAM_EF_XCAP_PROFILE_LID);
10252 if (ret != KAL_TRUE) {
10253 mcf_ut_format_err_str("Check LID need reset positive test (Max last LID list count) FAIL!! ret(%d), LID(%d) \r\n", ret, NVRAM_EF_XCAP_PROFILE_LID);
10254 return KAL_FALSE;
10255 }
10256
10257 /*
10258 * Check LID need reset positive test - Max current LID list count
10259 */
10260 kal_mem_set(&mcf_last_mod_lid_g, 0, sizeof(nvram_mcf_lid_info_struct));
10261 kal_mem_set(&mcf_curr_mod_lid_g, 0, sizeof(nvram_mcf_lid_info_struct));
10262 mcf_curr_mod_lid_g.lid_cnt = NVRAM_MCF_SAVE_LAST_LID_CNT;
10263
10264 ret = mcf_check_lid_need_reset(NVRAM_EF_MCF_TEST_OTA_LID);
10265 if (ret != KAL_TRUE) {
10266 mcf_ut_format_err_str("Check LID need reset positive test (Max current LID list count) FAIL!! ret(%d), LID(%d) \r\n", ret, NVRAM_EF_MCF_TEST_OTA_LID);
10267 return KAL_FALSE;
10268 }
10269
10270 ret = mcf_check_lid_need_reset(NVRAM_EF_IMS_PROFILE_LID);
10271 if (ret != KAL_TRUE) {
10272 mcf_ut_format_err_str("Check LID need reset positive test (Max current LID list count) FAIL!! ret(%d), LID(%d) \r\n", ret, NVRAM_EF_IMS_PROFILE_LID);
10273 return KAL_FALSE;
10274 }
10275
10276 ret = mcf_check_lid_need_reset(NVRAM_EF_XCAP_PROFILE_LID);
10277 if (ret != KAL_TRUE) {
10278 mcf_ut_format_err_str("Check LID need reset positive test (Max current LID list count) FAIL!! ret(%d), LID(%d) \r\n", ret, NVRAM_EF_XCAP_PROFILE_LID);
10279 return KAL_FALSE;
10280 }
10281
10282
10283 MCF_UT_PASS();
10284 return KAL_TRUE;
10285}
10286kal_bool mcf_ut_gid_mcf_check_lid_need_reset(void *p_param, kal_char *p_ret_err_str, kal_uint32 *p_ret_err_str_sz)
10287{
10288 mcf_t *pMcf = mcf_get_instance();
10289 mcf_ota_file_t *ota_file = &(pMcf->ota_file);
10290 nvram_ef_mcf_ota_file_info_struct nv_ota_file;
10291 nvram_ef_mcf_sw_info_struct nv_sw_info;
10292 mcf_ota_result_e mcf_ret;
10293 kal_bool ret;
10294
10295 mcf_ut_init();
10296
10297 /*
10298 * Check LID need reset positive test - Modify 3 LIDs
10299 */
10300 /* Write MCF OTA file version to NVRAM */
10301 kal_mem_set(&nv_ota_file, 0, sizeof(nvram_ef_mcf_ota_file_info_struct));
10302 strncpy(nv_ota_file.path, MCF_FS_DEFAULT_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN);
10303 strncpy(nv_ota_file.name, MCF_FS_DEFAULT_OTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN);
10304 if ( !nvram_external_write_data(NVRAM_EF_MCF_OTA_FILE_LID, 1, (kal_uint8 *)&nv_ota_file, sizeof(nvram_ef_mcf_ota_file_info_struct)) ) {
10305 mcf_ut_format_err_str("Fail to write MCF OTA file info to NVRAM!!\r\n");
10306 return KAL_FALSE;
10307 }
10308 kal_mem_set(&nv_sw_info, 0, sizeof(nvram_ef_mcf_sw_info_struct));
10309 strncpy(nv_sw_info.last_update_file.sw_version, MCF_UT_SW_VERNO, MCF_FILE_MAX_SW_VERSION_LEN);
10310 strncpy(nv_sw_info.last_update_file.gen_time, MCF_UT_GEN_TIME, MCF_FILE_MAX_GEN_TIME_LEN);
10311 strcpy(nv_sw_info.last_update_file.path, "");
10312 strcpy(nv_sw_info.last_update_file.name, "");
10313 if ( !nvram_external_write_data(NVRAM_EF_MCF_SW_INFO_LID, 1, (kal_uint8 *)&nv_sw_info, sizeof(nvram_ef_mcf_sw_info_struct)) ) {
10314 mcf_ut_format_err_str("Fail to write MCF sw info to NVRAM!!\r\n");
10315 return KAL_FALSE;
10316 }
10317
10318 MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
10319 if (ota_file) {
10320 ret = mcf_ut_open_test_data("OTA_3_LIDs_ut_gid_normal.mcfota", (kal_char *)(ota_file->buff), MCF_MAX_OTA_FILE_SIZE);
10321 if (ret == KAL_FALSE) {
10322 mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "OTA_3_LIDs_ut_gid_normal.mcfota");
10323 return KAL_FALSE;
10324 }
10325
10326 MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
10327 } else {
10328 mcf_ut_format_err_str("Do full OTA FAIL!! Fail to take write lock! \r\n");
10329 return KAL_FALSE;
10330 }
10331
10332 kal_mem_set(&mcf_last_mod_lid_g, 0, sizeof(nvram_mcf_lid_info_struct));
10333 kal_mem_set(&mcf_curr_mod_lid_g, 0, sizeof(nvram_mcf_lid_info_struct));
10334 mcf_ret = mcf_do_ota_full();
10335 if (mcf_ret != MCF_OTA_R_SUCCESS) {
10336 mcf_ut_format_err_str("Do full OTA FAIL!! ret(%d) \r\n", mcf_ret);
10337 return KAL_FALSE;
10338 }
10339
10340 ret = mcf_check_lid_need_reset(NVRAM_EF_MCF_TEST_OTA_LID);
10341 if (ret != KAL_TRUE) {
10342 mcf_ut_format_err_str("Check LID need reset positive test (Modify 3 LIDs) FAIL!! ret(%d), LID(%d) \r\n", ret, NVRAM_EF_MCF_TEST_OTA_LID);
10343 return KAL_FALSE;
10344 }
10345
10346 ret = mcf_check_lid_need_reset(NVRAM_EF_IMS_PROFILE_LID);
10347 if (ret != KAL_TRUE) {
10348 mcf_ut_format_err_str("Check LID need reset positive test (Modify 3 LIDs) FAIL!! ret(%d), LID(%d) \r\n", ret, NVRAM_EF_IMS_PROFILE_LID);
10349 return KAL_FALSE;
10350 }
10351
10352 ret = mcf_check_lid_need_reset(NVRAM_EF_XCAP_PROFILE_LID);
10353 if (ret != KAL_TRUE) {
10354 mcf_ut_format_err_str("Check LID need reset positive test (Modify 3 LIDs) FAIL!! ret(%d), LID(%d) \r\n", ret, NVRAM_EF_XCAP_PROFILE_LID);
10355 return KAL_FALSE;
10356 }
10357
10358 /*
10359 * Check LID need reset positive test - Modify 2 LIDs
10360 */
10361 /* Write MCF OTA file version to NVRAM */
10362 kal_mem_set(&nv_ota_file, 0, sizeof(nvram_ef_mcf_ota_file_info_struct));
10363 strncpy(nv_ota_file.path, MCF_FS_DEFAULT_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN);
10364 strncpy(nv_ota_file.name, MCF_FS_DEFAULT_OTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN);
10365 if ( !nvram_external_write_data(NVRAM_EF_MCF_OTA_FILE_LID, 1, (kal_uint8 *)&nv_ota_file, sizeof(nvram_ef_mcf_ota_file_info_struct)) ) {
10366 mcf_ut_format_err_str("Fail to write MCF OTA file info to NVRAM!!\r\n");
10367 return KAL_FALSE;
10368 }
10369 kal_mem_set(&nv_sw_info, 0, sizeof(nvram_ef_mcf_sw_info_struct));
10370 strncpy(nv_sw_info.last_update_file.sw_version, MCF_UT_SW_VERNO, MCF_FILE_MAX_SW_VERSION_LEN);
10371 strncpy(nv_sw_info.last_update_file.gen_time, MCF_UT_GEN_TIME, MCF_FILE_MAX_GEN_TIME_LEN);
10372 strcpy(nv_sw_info.last_update_file.path, "");
10373 strcpy(nv_sw_info.last_update_file.name, "");
10374 if ( !nvram_external_write_data(NVRAM_EF_MCF_SW_INFO_LID, 1, (kal_uint8 *)&nv_sw_info, sizeof(nvram_ef_mcf_sw_info_struct)) ) {
10375 mcf_ut_format_err_str("Fail to write MCF sw info to NVRAM!!\r\n");
10376 return KAL_FALSE;
10377 }
10378
10379 MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
10380 if (ota_file) {
10381 ret = mcf_ut_open_test_data("OTA_2_LIDs_ut_gid_normal.mcfota", (kal_char *)(ota_file->buff), MCF_MAX_OTA_FILE_SIZE);
10382 if (ret == KAL_FALSE) {
10383 mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "OTA_2_LIDs_ut_gid_normal.mcfota");
10384 return KAL_FALSE;
10385 }
10386
10387 MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
10388 } else {
10389 mcf_ut_format_err_str("Do full OTA FAIL!! Fail to take write lock! \r\n");
10390 return KAL_FALSE;
10391 }
10392
10393 kal_mem_set(&mcf_last_mod_lid_g, 0, sizeof(nvram_mcf_lid_info_struct));
10394 kal_mem_set(&mcf_curr_mod_lid_g, 0, sizeof(nvram_mcf_lid_info_struct));
10395 mcf_ret = mcf_do_ota_full();
10396 if (mcf_ret != MCF_OTA_R_SUCCESS) {
10397 mcf_ut_format_err_str("Do full OTA FAIL!! ret(%d) \r\n", mcf_ret);
10398 return KAL_FALSE;
10399 }
10400
10401 ret = mcf_check_lid_need_reset(NVRAM_EF_MCF_TEST_OTA_LID);
10402 if (ret != KAL_TRUE) {
10403 mcf_ut_format_err_str("Check LID need reset positive test (Modify 2 LIDs) FAIL!! ret(%d), LID(%d) \r\n", ret, NVRAM_EF_MCF_TEST_OTA_LID);
10404 return KAL_FALSE;
10405 }
10406
10407 ret = mcf_check_lid_need_reset(NVRAM_EF_IMS_PROFILE_LID);
10408 if (ret != KAL_TRUE) {
10409 mcf_ut_format_err_str("Check LID need reset positive test (Modify 2 LIDs) FAIL!! ret(%d), LID(%d) \r\n", ret, NVRAM_EF_IMS_PROFILE_LID);
10410 return KAL_FALSE;
10411 }
10412
10413 ret = mcf_check_lid_need_reset(NVRAM_EF_XCAP_PROFILE_LID);
10414 if (ret != KAL_TRUE) {
10415 mcf_ut_format_err_str("Check LID need reset positive test (Modify 2 LIDs) FAIL!! ret(%d), LID(%d) \r\n", ret, NVRAM_EF_XCAP_PROFILE_LID);
10416 return KAL_FALSE;
10417 }
10418
10419 /*
10420 * Check LID need reset positive test - OTA file does not update
10421 */
10422 kal_mem_set(&mcf_last_mod_lid_g, 0, sizeof(nvram_mcf_lid_info_struct));
10423 kal_mem_set(&mcf_curr_mod_lid_g, 0, sizeof(nvram_mcf_lid_info_struct));
10424 mcf_ret = mcf_do_ota_full();
10425 if (mcf_ret != MCF_OTA_R_SUCCESS) {
10426 mcf_ut_format_err_str("Do full OTA FAIL!! ret(%d) \r\n", mcf_ret);
10427 return KAL_FALSE;
10428 }
10429
10430 ret = mcf_check_lid_need_reset(NVRAM_EF_MCF_TEST_OTA_LID);
10431 if (ret != KAL_FALSE) {
10432 mcf_ut_format_err_str("Check LID need reset positive test (OTA file does not update) FAIL!! ret(%d), LID(%d) \r\n", ret, NVRAM_EF_MCF_TEST_OTA_LID);
10433 return KAL_FALSE;
10434 }
10435
10436 ret = mcf_check_lid_need_reset(NVRAM_EF_IMS_PROFILE_LID);
10437 if (ret != KAL_FALSE) {
10438 mcf_ut_format_err_str("Check LID need reset positive test (OTA file does not update) FAIL!! ret(%d), LID(%d) \r\n", ret, NVRAM_EF_IMS_PROFILE_LID);
10439 return KAL_FALSE;
10440 }
10441
10442 ret = mcf_check_lid_need_reset(NVRAM_EF_XCAP_PROFILE_LID);
10443 if (ret != KAL_FALSE) {
10444 mcf_ut_format_err_str("Check LID need reset positive test (OTA file does not update) FAIL!! ret(%d), LID(%d) \r\n", ret, NVRAM_EF_XCAP_PROFILE_LID);
10445 return KAL_FALSE;
10446 }
10447
10448 /*
10449 * Check LID need reset positive test - Max last LID list count
10450 */
10451 kal_mem_set(&mcf_last_mod_lid_g, 0, sizeof(nvram_mcf_lid_info_struct));
10452 kal_mem_set(&mcf_curr_mod_lid_g, 0, sizeof(nvram_mcf_lid_info_struct));
10453 mcf_last_mod_lid_g.lid_cnt = NVRAM_MCF_SAVE_LAST_LID_CNT;
10454
10455 ret = mcf_check_lid_need_reset(NVRAM_EF_MCF_TEST_OTA_LID);
10456 if (ret != KAL_TRUE) {
10457 mcf_ut_format_err_str("Check LID need reset positive test (Max last LID list count) FAIL!! ret(%d), LID(%d) \r\n", ret, NVRAM_EF_MCF_TEST_OTA_LID);
10458 return KAL_FALSE;
10459 }
10460
10461 ret = mcf_check_lid_need_reset(NVRAM_EF_IMS_PROFILE_LID);
10462 if (ret != KAL_TRUE) {
10463 mcf_ut_format_err_str("Check LID need reset positive test (Max last LID list count) FAIL!! ret(%d), LID(%d) \r\n", ret, NVRAM_EF_IMS_PROFILE_LID);
10464 return KAL_FALSE;
10465 }
10466
10467 ret = mcf_check_lid_need_reset(NVRAM_EF_XCAP_PROFILE_LID);
10468 if (ret != KAL_TRUE) {
10469 mcf_ut_format_err_str("Check LID need reset positive test (Max last LID list count) FAIL!! ret(%d), LID(%d) \r\n", ret, NVRAM_EF_XCAP_PROFILE_LID);
10470 return KAL_FALSE;
10471 }
10472
10473 /*
10474 * Check LID need reset positive test - Max current LID list count
10475 */
10476 kal_mem_set(&mcf_last_mod_lid_g, 0, sizeof(nvram_mcf_lid_info_struct));
10477 kal_mem_set(&mcf_curr_mod_lid_g, 0, sizeof(nvram_mcf_lid_info_struct));
10478 mcf_curr_mod_lid_g.lid_cnt = NVRAM_MCF_SAVE_LAST_LID_CNT;
10479
10480 ret = mcf_check_lid_need_reset(NVRAM_EF_MCF_TEST_OTA_LID);
10481 if (ret != KAL_TRUE) {
10482 mcf_ut_format_err_str("Check LID need reset positive test (Max current LID list count) FAIL!! ret(%d), LID(%d) \r\n", ret, NVRAM_EF_MCF_TEST_OTA_LID);
10483 return KAL_FALSE;
10484 }
10485
10486 ret = mcf_check_lid_need_reset(NVRAM_EF_IMS_PROFILE_LID);
10487 if (ret != KAL_TRUE) {
10488 mcf_ut_format_err_str("Check LID need reset positive test (Max current LID list count) FAIL!! ret(%d), LID(%d) \r\n", ret, NVRAM_EF_IMS_PROFILE_LID);
10489 return KAL_FALSE;
10490 }
10491
10492 ret = mcf_check_lid_need_reset(NVRAM_EF_XCAP_PROFILE_LID);
10493 if (ret != KAL_TRUE) {
10494 mcf_ut_format_err_str("Check LID need reset positive test (Max current LID list count) FAIL!! ret(%d), LID(%d) \r\n", ret, NVRAM_EF_XCAP_PROFILE_LID);
10495 return KAL_FALSE;
10496 }
10497
10498
10499 MCF_UT_PASS();
10500 return KAL_TRUE;
10501}
10502
10503kal_bool mcf_ut_gid_mcf_check_lid_need_reset_by_psid(void *p_param, kal_char *p_ret_err_str, kal_uint32 *p_ret_err_str_sz)
10504{
10505 mcf_t *pMcf = mcf_get_instance();
10506 mcf_tool_file_info_t *pFile;
10507 mcf_tool_gid_tlvota_file_item_t *pItem;
10508 mcf_tlvota_file_t *tlvota_file;
10509 nvram_ef_mcf_tlvota_file_info_struct nv_tlvota_file;
10510 mcf_ota_result_e mcf_ret;
10511 kal_bool ret;
10512 kal_uint8 i;
10513 sbp_reconfig_custom_param_struct param_ptr;
10514 nvram_ef_mcf_sw_info_struct nv_sw_info;
10515
10516 mcf_ut_init();
10517
10518 if ( !nvram_external_read_data(NVRAM_EF_MCF_SW_INFO_LID, 1, (kal_uint8 *)&nv_sw_info, sizeof(nvram_ef_mcf_sw_info_struct))) {
10519 mcf_ut_format_err_str("Read NVRAM_EF_MCF_SW_INFO_LID FAIL!");
10520 return KAL_FALSE;
10521 }
10522
10523 strncpy(nv_sw_info.version, release_verno(), MCF_SW_VERNO_LEN);
10524 strncpy(nv_sw_info.build_time, build_date_time(), MCF_SW_BUILD_TIME_LEN);
10525
10526 if ( !nvram_external_write_data(NVRAM_EF_MCF_SW_INFO_LID, 1, (kal_uint8 *)&nv_sw_info, sizeof(nvram_ef_mcf_sw_info_struct))) {
10527 mcf_ut_format_err_str("Write NVRAM_EF_MCF_SW_INFO_LID FAIL!");
10528 return KAL_FALSE;
10529 }
10530
10531 /*
10532 * Check LID need reset positive test - Modify 3 LIDs with SBP_PARTIAL_TAG
10533 */
10534 /* Write MCF TLV-OTA file version to NVRAM */
10535 kal_mem_set(&nv_tlvota_file, 0, sizeof(nvram_ef_mcf_tlvota_file_info_struct));
10536 strncpy(nv_tlvota_file.path, MCF_FS_DEFAULT_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN);
10537 strncpy(nv_tlvota_file.name, MCF_FS_DEFAULT_TLVOTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN);
10538 if ( !nvram_external_write_data(NVRAM_EF_MCF_TLVOTA_FILE_LID, 1, (kal_uint8 *)&nv_tlvota_file, sizeof(nvram_ef_mcf_tlvota_file_info_struct)) ) {
10539 mcf_ut_format_err_str("Fail to write MCF TLV-OTA file info to NVRAM!!\r\n");
10540 return KAL_FALSE;
10541 }
10542
10543 kal_mem_set(&mcf_tlvota_last_mod_lid_g, 0, sizeof(nvram_mcf_lid_info_struct)*MAX_SIM_NUM);
10544 kal_mem_set(&mcf_tlvota_curr_mod_lid_g, 0, sizeof(nvram_mcf_lid_info_struct)*MAX_SIM_NUM);
10545
10546
10547 for (i = 0; i < MAX_SIM_NUM; i++) {
10548 tlvota_file = &(pMcf->tlvota_file[i]);
10549
10550 MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
10551 if (tlvota_file) {
10552 pFile = (mcf_tool_file_info_t *)(tlvota_file->buff);
10553 pItem = (mcf_tool_gid_tlvota_file_item_t *)(tlvota_file->buff + sizeof(mcf_tool_file_info_t));
10554
10555 ret = mcf_ut_open_test_data("MCF_TLVOTA_SBP_partial_ut_3LIDs_gid_normal.mcfopota", (kal_char *)(tlvota_file->buff), MCF_MAX_TLVOTA_FILE_SIZE);
10556 if (ret == KAL_FALSE) {
10557 mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_TLVOTA_SBP_partial_ut_3LIDs_gid_normal.mcfopota");
10558 return KAL_FALSE;
10559 }
10560
10561 MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
10562 } else {
10563 mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! Fail to take write lock! \r\n");
10564 return KAL_FALSE;
10565 }
10566 }
10567
10568 for (i = 0; i < MAX_SIM_NUM; i++) {
10569 // NVRAM_EF_MCF_TEST_OTA_LID with SBP_PARTIAL_TAG
10570 param_ptr.sbp_id = SBP_TAG_SBPID;
10571 param_ptr.ps_id = l4c_gemini_get_switched_sim_id(i);
10572 kal_mem_cpy(param_ptr.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
10573 kal_mem_cpy(param_ptr.mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
10574 kal_mem_set(param_ptr.iccid, 0, 21);
10575
10576 is_read_general_tlvota[i] = KAL_FALSE;
10577 is_read_tlvota[i] = KAL_TRUE;
10578 pMcf->is_ignore_dsbp[i] = KAL_TRUE;
10579
10580 ret = mcf_auto_select_tlvota_file(&param_ptr);
10581 if (ret != KAL_TRUE) {
10582 mcf_ut_format_err_str("auto select tlvota file FAIL!! ret(%d) \r\n", ret);
10583 return KAL_FALSE;
10584 }
10585
10586 ret = mcf_check_lid_need_reset_by_psid(NVRAM_EF_MCF_TEST_OTA_LID, l4c_gemini_get_switched_sim_id(i));
10587 if (ret != KAL_TRUE) {
10588 mcf_ut_format_err_str("Check LID need reset positive test (Modify 3 LIDs with SBP_PARTIAL_TAG) FAIL!! ret(%d), LID(%d) \r\n", ret, NVRAM_EF_MCF_TEST_OTA_LID);
10589 return KAL_FALSE;
10590 }
10591
10592 ret = mcf_check_lid_need_reset_by_psid(NVRAM_EF_IMS_PROFILE_LID, l4c_gemini_get_switched_sim_id(i));
10593 if (ret != KAL_TRUE) {
10594 mcf_ut_format_err_str("Check LID need reset positive test (Modify 3 LIDs with SBP_PARTIAL_TAG) FAIL!! ret(%d), LID(%d) \r\n", ret, NVRAM_EF_IMS_PROFILE_LID);
10595 return KAL_FALSE;
10596 }
10597
10598 ret = mcf_check_lid_need_reset_by_psid(NVRAM_EF_XCAP_PROFILE_LID, l4c_gemini_get_switched_sim_id(i));
10599 if (ret != KAL_TRUE) {
10600 mcf_ut_format_err_str("Check LID need reset positive test (Modify 3 LIDs with SBP_PARTIAL_TAG) FAIL!! ret(%d), LID(%d) \r\n", ret, NVRAM_EF_XCAP_PROFILE_LID);
10601 return KAL_FALSE;
10602 }
10603
10604 mcf_set_config_after_dsbp(l4c_gemini_get_switched_sim_id(i));
10605 }
10606
10607 /*
10608 * Check LID need reset positive test - Modify 2 LIDs
10609 */
10610
10611 /* Read MCF TLV-OTA file into cache buffer */
10612 if ( !nvram_external_read_data(NVRAM_EF_MCF_TLVOTA_FILE_LID, 1, (kal_uint8 *)&nv_tlvota_file, sizeof(nvram_ef_mcf_tlvota_file_info_struct))) {
10613 mcf_ut_format_err_str("Fail to read MCF TLV-OTA file info to NVRAM!!\r\n");
10614 return KAL_FALSE;
10615 }
10616
10617 /* Write MCF TLV-OTA file version to NVRAM */
10618 strncpy(nv_tlvota_file.path, MCF_FS_DEFAULT_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN);
10619 strncpy(nv_tlvota_file.name, MCF_FS_DEFAULT_TLVOTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN);
10620 if ( !nvram_external_write_data(NVRAM_EF_MCF_TLVOTA_FILE_LID, 1, (kal_uint8 *)&nv_tlvota_file, sizeof(nvram_ef_mcf_tlvota_file_info_struct)) ) {
10621 mcf_ut_format_err_str("Fail to write MCF TLV-OTA file info to NVRAM!!\r\n");
10622 return KAL_FALSE;
10623 }
10624
10625 kal_mem_set(&mcf_tlvota_last_mod_lid_g, 0, sizeof(nvram_mcf_lid_info_struct)*MAX_SIM_NUM);
10626 kal_mem_set(&mcf_tlvota_curr_mod_lid_g, 0, sizeof(nvram_mcf_lid_info_struct)*MAX_SIM_NUM);
10627
10628 for (i = 0; i < MAX_SIM_NUM; i++) {
10629 tlvota_file = &(pMcf->tlvota_file[i]);
10630
10631 MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
10632 if (tlvota_file) {
10633 pFile = (mcf_tool_file_info_t *)(tlvota_file->buff);
10634 pItem = (mcf_tool_gid_tlvota_file_item_t *)(tlvota_file->buff + sizeof(mcf_tool_file_info_t));
10635
10636 ret = mcf_ut_open_test_data("MCF_TLVOTA_SBP_partial_ut_2LIDs_gid_normal.mcfopota", (kal_char *)(tlvota_file->buff), MCF_MAX_TLVOTA_FILE_SIZE);
10637 if (ret == KAL_FALSE) {
10638 mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_TLVOTA_SBP_partial_ut_2LIDs_gid_normal.mcfopota");
10639 return KAL_FALSE;
10640 }
10641
10642 MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
10643 } else {
10644 mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! Fail to take write lock! \r\n");
10645 return KAL_FALSE;
10646 }
10647 }
10648
10649 for (i = 0; i < MAX_SIM_NUM; i++) {
10650 // NVRAM_EF_MCF_TEST_OTA_LID with SBP_PARTIAL_TAG
10651 param_ptr.sbp_id = SBP_TAG_SBPID;
10652 param_ptr.ps_id = l4c_gemini_get_switched_sim_id(i);
10653 kal_mem_cpy(param_ptr.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
10654 kal_mem_cpy(param_ptr.mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
10655 kal_mem_set(param_ptr.iccid, 0, 21);
10656
10657 is_read_general_tlvota[i] = KAL_FALSE;
10658 is_read_tlvota[i] = KAL_TRUE;
10659 pMcf->is_ignore_dsbp[i] = KAL_TRUE;
10660
10661 ret = mcf_auto_select_tlvota_file(&param_ptr);
10662 if (ret != KAL_TRUE) {
10663 mcf_ut_format_err_str("auto select tlvota file FAIL!! ret(%d) \r\n", ret);
10664 return KAL_FALSE;
10665 }
10666
10667 ret = mcf_check_lid_need_reset_by_psid(NVRAM_EF_MCF_TEST_OTA_LID, l4c_gemini_get_switched_sim_id(i));
10668 if (ret != KAL_TRUE) {
10669 mcf_ut_format_err_str("Check LID need reset positive test (Modify 2 LIDs) FAIL!! ret(%d), LID(%d) \r\n", ret, NVRAM_EF_MCF_TEST_OTA_LID);
10670 return KAL_FALSE;
10671 }
10672
10673 ret = mcf_check_lid_need_reset_by_psid(NVRAM_EF_IMS_PROFILE_LID, l4c_gemini_get_switched_sim_id(i));
10674 if (ret != KAL_TRUE) {
10675 mcf_ut_format_err_str("Check LID need reset positive test (Modify 2 LIDs) FAIL!! ret(%d), LID(%d) \r\n", ret, NVRAM_EF_IMS_PROFILE_LID);
10676 return KAL_FALSE;
10677 }
10678
10679 ret = mcf_check_lid_need_reset_by_psid(NVRAM_EF_XCAP_PROFILE_LID, l4c_gemini_get_switched_sim_id(i));
10680 if (ret != KAL_TRUE) {
10681 mcf_ut_format_err_str("Check LID need reset positive test (Modify 2 LIDs) FAIL!! ret(%d), LID(%d) \r\n", ret, NVRAM_EF_XCAP_PROFILE_LID);
10682 return KAL_FALSE;
10683 }
10684 mcf_set_config_after_dsbp(l4c_gemini_get_switched_sim_id(i));
10685 }
10686
10687 /*
10688 * Check LID need reset positive test - TLV-OTA file does not update
10689 */
10690
10691 kal_mem_set(&mcf_tlvota_last_mod_lid_g, 0, sizeof(nvram_mcf_lid_info_struct)*MAX_SIM_NUM);
10692 kal_mem_set(&mcf_tlvota_curr_mod_lid_g, 0, sizeof(nvram_mcf_lid_info_struct)*MAX_SIM_NUM);
10693
10694 for (i = 0; i < MAX_SIM_NUM; i++) {
10695 // NVRAM_EF_MCF_TEST_OTA_LID with SBP_PARTIAL_TAG
10696 param_ptr.sbp_id = SBP_TAG_SBPID;
10697 param_ptr.ps_id = l4c_gemini_get_switched_sim_id(i);
10698 kal_mem_cpy(param_ptr.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
10699 kal_mem_cpy(param_ptr.mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
10700 kal_mem_set(param_ptr.iccid, 0, 21);
10701
10702 pMcf->is_ignore_dsbp[i] = KAL_TRUE;
10703
10704 ret = mcf_auto_select_tlvota_file(&param_ptr);
10705 if (ret != KAL_TRUE) {
10706 mcf_ut_format_err_str("auto select tlvota file FAIL!! ret(%d) \r\n", ret);
10707 return KAL_FALSE;
10708 }
10709
10710 ret = mcf_check_lid_need_reset_by_psid(NVRAM_EF_MCF_TEST_OTA_LID, l4c_gemini_get_switched_sim_id(i));
10711 if (ret != KAL_FALSE) {
10712 mcf_ut_format_err_str("Check LID need reset positive test (TLV-OTA file does not update) FAIL!! ret(%d), LID(%d) \r\n", ret, NVRAM_EF_MCF_TEST_OTA_LID);
10713 return KAL_FALSE;
10714 }
10715
10716 ret = mcf_check_lid_need_reset_by_psid(NVRAM_EF_IMS_PROFILE_LID, l4c_gemini_get_switched_sim_id(i));
10717 if (ret != KAL_FALSE) {
10718 mcf_ut_format_err_str("Check LID need reset positive test (TLV-OTA file does not update) FAIL!! ret(%d), LID(%d) \r\n", ret, NVRAM_EF_IMS_PROFILE_LID);
10719 return KAL_FALSE;
10720 }
10721
10722 ret = mcf_check_lid_need_reset_by_psid(NVRAM_EF_XCAP_PROFILE_LID, l4c_gemini_get_switched_sim_id(i));
10723 if (ret != KAL_FALSE) {
10724 mcf_ut_format_err_str("Check LID need reset positive test (TLV-OTA file does not update) FAIL!! ret(%d), LID(%d) \r\n", ret, NVRAM_EF_XCAP_PROFILE_LID);
10725 return KAL_FALSE;
10726 }
10727 mcf_set_config_after_dsbp(l4c_gemini_get_switched_sim_id(i));
10728 }
10729
10730 /*
10731 * Check LID need reset positive test - Max last LID list count
10732 */
10733 kal_mem_set(&mcf_tlvota_last_mod_lid_g, 0, sizeof(nvram_mcf_lid_info_struct)*MAX_SIM_NUM);
10734 kal_mem_set(&mcf_tlvota_curr_mod_lid_g, 0, sizeof(nvram_mcf_lid_info_struct)*MAX_SIM_NUM);
10735 for (i = 0; i < MAX_SIM_NUM; i++) {
10736 mcf_tlvota_last_mod_lid_g[i].lid_cnt = NVRAM_MCF_SAVE_LAST_LID_CNT;
10737
10738 ret = mcf_check_lid_need_reset_by_psid(NVRAM_EF_MCF_TEST_OTA_LID, l4c_gemini_get_switched_sim_id(i));
10739 if (ret != KAL_TRUE) {
10740 mcf_ut_format_err_str("Check LID need reset positive test (Modify 2 LIDs) FAIL!! ret(%d), LID(%d) \r\n", ret, NVRAM_EF_MCF_TEST_OTA_LID);
10741 return KAL_FALSE;
10742 }
10743
10744 ret = mcf_check_lid_need_reset_by_psid(NVRAM_EF_IMS_PROFILE_LID, l4c_gemini_get_switched_sim_id(i));
10745 if (ret != KAL_TRUE) {
10746 mcf_ut_format_err_str("Check LID need reset positive test (Modify 2 LIDs) FAIL!! ret(%d), LID(%d) \r\n", ret, NVRAM_EF_IMS_PROFILE_LID);
10747 return KAL_FALSE;
10748 }
10749
10750 ret = mcf_check_lid_need_reset_by_psid(NVRAM_EF_XCAP_PROFILE_LID, l4c_gemini_get_switched_sim_id(i));
10751 if (ret != KAL_TRUE) {
10752 mcf_ut_format_err_str("Check LID need reset positive test (Modify 2 LIDs) FAIL!! ret(%d), LID(%d) \r\n", ret, NVRAM_EF_XCAP_PROFILE_LID);
10753 return KAL_FALSE;
10754 }
10755 }
10756
10757 /*
10758 * Check LID need reset positive test - Max current LID list count
10759 */
10760 kal_mem_set(&mcf_tlvota_last_mod_lid_g, 0, sizeof(nvram_mcf_lid_info_struct)*MAX_SIM_NUM);
10761 kal_mem_set(&mcf_tlvota_curr_mod_lid_g, 0, sizeof(nvram_mcf_lid_info_struct)*MAX_SIM_NUM);
10762 for (i = 0; i < MAX_SIM_NUM; i++) {
10763 mcf_tlvota_curr_mod_lid_g[i].lid_cnt = NVRAM_MCF_SAVE_LAST_LID_CNT;
10764
10765 ret = mcf_check_lid_need_reset_by_psid(NVRAM_EF_MCF_TEST_OTA_LID, l4c_gemini_get_switched_sim_id(i));
10766 if (ret != KAL_TRUE) {
10767 mcf_ut_format_err_str("Check LID need reset positive test (Modify 2 LIDs) FAIL!! ret(%d), LID(%d) \r\n", ret, NVRAM_EF_MCF_TEST_OTA_LID);
10768 return KAL_FALSE;
10769 }
10770
10771 ret = mcf_check_lid_need_reset_by_psid(NVRAM_EF_IMS_PROFILE_LID, l4c_gemini_get_switched_sim_id(i));
10772 if (ret != KAL_TRUE) {
10773 mcf_ut_format_err_str("Check LID need reset positive test (Modify 2 LIDs) FAIL!! ret(%d), LID(%d) \r\n", ret, NVRAM_EF_IMS_PROFILE_LID);
10774 return KAL_FALSE;
10775 }
10776
10777 ret = mcf_check_lid_need_reset_by_psid(NVRAM_EF_XCAP_PROFILE_LID, l4c_gemini_get_switched_sim_id(i));
10778 if (ret != KAL_TRUE) {
10779 mcf_ut_format_err_str("Check LID need reset positive test (Modify 2 LIDs) FAIL!! ret(%d), LID(%d) \r\n", ret, NVRAM_EF_XCAP_PROFILE_LID);
10780 return KAL_FALSE;
10781 }
10782 }
10783
10784 /*
10785 * Check LID need reset positive test - Modify 3 LIDs with SBP_PARTIAL_TAG_WITH_MCC
10786 */
10787 /* Write MCF TLV-OTA file version to NVRAM */
10788 kal_mem_set(&nv_tlvota_file, 0, sizeof(nvram_ef_mcf_tlvota_file_info_struct));
10789 strncpy(nv_tlvota_file.path, MCF_FS_DEFAULT_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN);
10790 strncpy(nv_tlvota_file.name, MCF_FS_DEFAULT_TLVOTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN);
10791 if ( !nvram_external_write_data(NVRAM_EF_MCF_TLVOTA_FILE_LID, 1, (kal_uint8 *)&nv_tlvota_file, sizeof(nvram_ef_mcf_tlvota_file_info_struct)) ) {
10792 mcf_ut_format_err_str("Fail to write MCF TLV-OTA file info to NVRAM!!\r\n");
10793 return KAL_FALSE;
10794 }
10795
10796 kal_mem_set(&mcf_tlvota_last_mod_lid_g, 0, sizeof(nvram_mcf_lid_info_struct)*MAX_SIM_NUM);
10797 kal_mem_set(&mcf_tlvota_curr_mod_lid_g, 0, sizeof(nvram_mcf_lid_info_struct)*MAX_SIM_NUM);
10798
10799
10800 for (i = 0; i < MAX_SIM_NUM; i++) {
10801 tlvota_file = &(pMcf->tlvota_file[i]);
10802
10803 MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
10804 if (tlvota_file) {
10805 pFile = (mcf_tool_file_info_t *)(tlvota_file->buff);
10806 pItem = (mcf_tool_gid_tlvota_file_item_t *)(tlvota_file->buff + sizeof(mcf_tool_file_info_t));
10807
10808 ret = mcf_ut_open_test_data("MCF_TLVOTA_SBP_partial_tag_with_mcc_ut_3LIDs_gid_normal.mcfopota", (kal_char *)(tlvota_file->buff), MCF_MAX_TLVOTA_FILE_SIZE);
10809 if (ret == KAL_FALSE) {
10810 mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_TLVOTA_SBP_partial_tag_with_mcc_ut_3LIDs_gid_normal.mcfopota");
10811 return KAL_FALSE;
10812 }
10813
10814 MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
10815 } else {
10816 mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! Fail to take write lock! \r\n");
10817 return KAL_FALSE;
10818 }
10819 }
10820
10821 for (i = 0; i < MAX_SIM_NUM; i++) {
10822 // NVRAM_EF_MCF_TEST_OTA_LID with SBP_PARTIAL_TAG_WITH_MCC
10823 param_ptr.sbp_id = SBP_TAG_SBPID;
10824 param_ptr.ps_id = l4c_gemini_get_switched_sim_id(i);
10825 kal_mem_cpy(param_ptr.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
10826 kal_mem_cpy(param_ptr.mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
10827 kal_mem_set(param_ptr.iccid, 0, 21);
10828
10829 is_read_general_tlvota[i] = KAL_FALSE;
10830 is_read_tlvota[i] = KAL_TRUE;
10831 pMcf->is_ignore_dsbp[i] = KAL_TRUE;
10832
10833 ret = mcf_auto_select_tlvota_file(&param_ptr);
10834 if (ret != KAL_TRUE) {
10835 mcf_ut_format_err_str("auto select tlvota file FAIL!! ret(%d) \r\n", ret);
10836 return KAL_FALSE;
10837 }
10838
10839 ret = mcf_check_lid_need_reset_by_psid(NVRAM_EF_MCF_TEST_OTA_LID, l4c_gemini_get_switched_sim_id(i));
10840 if (ret != KAL_TRUE) {
10841 mcf_ut_format_err_str("Check LID need reset positive test (Modify 3 LIDs with SBP_partial_tag_with_mcc) FAIL!! ret(%d), LID(%d) \r\n", ret, NVRAM_EF_MCF_TEST_OTA_LID);
10842 return KAL_FALSE;
10843 }
10844
10845 ret = mcf_check_lid_need_reset_by_psid(NVRAM_EF_IMS_PROFILE_LID, l4c_gemini_get_switched_sim_id(i));
10846 if (ret != KAL_TRUE) {
10847 mcf_ut_format_err_str("Check LID need reset positive test (Modify 3 LIDs with SBP_partial_tag_with_mcc) FAIL!! ret(%d), LID(%d) \r\n", ret, NVRAM_EF_IMS_PROFILE_LID);
10848 return KAL_FALSE;
10849 }
10850
10851 ret = mcf_check_lid_need_reset_by_psid(NVRAM_EF_XCAP_PROFILE_LID, l4c_gemini_get_switched_sim_id(i));
10852 if (ret != KAL_TRUE) {
10853 mcf_ut_format_err_str("Check LID need reset positive test (Modify 3 LIDs with SBP_partial_tag_with_mcc) FAIL!! ret(%d), LID(%d) \r\n", ret, NVRAM_EF_XCAP_PROFILE_LID);
10854 return KAL_FALSE;
10855 }
10856
10857 mcf_set_config_after_dsbp(l4c_gemini_get_switched_sim_id(i));
10858 }
10859
10860 /*
10861 * Check LID need reset positive test - Modify 3 LIDs with SBP_FULL_TAG
10862 */
10863 /* Write MCF TLV-OTA file version to NVRAM */
10864 kal_mem_set(&nv_tlvota_file, 0, sizeof(nvram_ef_mcf_tlvota_file_info_struct));
10865 strncpy(nv_tlvota_file.path, MCF_FS_DEFAULT_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN);
10866 strncpy(nv_tlvota_file.name, MCF_FS_DEFAULT_TLVOTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN);
10867 if ( !nvram_external_write_data(NVRAM_EF_MCF_TLVOTA_FILE_LID, 1, (kal_uint8 *)&nv_tlvota_file, sizeof(nvram_ef_mcf_tlvota_file_info_struct)) ) {
10868 mcf_ut_format_err_str("Fail to write MCF TLV-OTA file info to NVRAM!!\r\n");
10869 return KAL_FALSE;
10870 }
10871
10872 kal_mem_set(&mcf_tlvota_last_mod_lid_g, 0, sizeof(nvram_mcf_lid_info_struct)*MAX_SIM_NUM);
10873 kal_mem_set(&mcf_tlvota_curr_mod_lid_g, 0, sizeof(nvram_mcf_lid_info_struct)*MAX_SIM_NUM);
10874
10875
10876 for (i = 0; i < MAX_SIM_NUM; i++) {
10877 tlvota_file = &(pMcf->tlvota_file[i]);
10878
10879 MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
10880 if (tlvota_file) {
10881 pFile = (mcf_tool_file_info_t *)(tlvota_file->buff);
10882 pItem = (mcf_tool_gid_tlvota_file_item_t *)(tlvota_file->buff + sizeof(mcf_tool_file_info_t));
10883
10884 ret = mcf_ut_open_test_data("MCF_TLVOTA_SBP_full_tag_ut_3LIDs_gid_normal.mcfopota", (kal_char *)(tlvota_file->buff), MCF_MAX_TLVOTA_FILE_SIZE);
10885 if (ret == KAL_FALSE) {
10886 mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_TLVOTA_SBP_full_tag_ut_3LIDs_gid_normal.mcfopota");
10887 return KAL_FALSE;
10888 }
10889
10890 MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
10891 } else {
10892 mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! Fail to take write lock! \r\n");
10893 return KAL_FALSE;
10894 }
10895 }
10896
10897 for (i = 0; i < MAX_SIM_NUM; i++) {
10898 // NVRAM_EF_MCF_TEST_OTA_LID with SBP_FULL_TAG
10899 param_ptr.sbp_id = SBP_TAG_SBPID;
10900 param_ptr.ps_id = l4c_gemini_get_switched_sim_id(i);
10901 kal_mem_cpy(param_ptr.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
10902 kal_mem_cpy(param_ptr.mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
10903 kal_mem_set(param_ptr.iccid, 0, 21);
10904
10905 is_read_general_tlvota[i] = KAL_FALSE;
10906 is_read_tlvota[i] = KAL_TRUE;
10907 pMcf->is_ignore_dsbp[i] = KAL_TRUE;
10908
10909 ret = mcf_auto_select_tlvota_file(&param_ptr);
10910 if (ret != KAL_TRUE) {
10911 mcf_ut_format_err_str("auto select tlvota file FAIL!! ret(%d) \r\n", ret);
10912 return KAL_FALSE;
10913 }
10914
10915 ret = mcf_check_lid_need_reset_by_psid(NVRAM_EF_MCF_TEST_OTA_LID, l4c_gemini_get_switched_sim_id(i));
10916 if (ret != KAL_TRUE) {
10917 mcf_ut_format_err_str("Check LID need reset positive test (Modify 3 LIDs with SBP_full_tag) FAIL!! ret(%d), LID(%d) \r\n", ret, NVRAM_EF_MCF_TEST_OTA_LID);
10918 return KAL_FALSE;
10919 }
10920
10921 ret = mcf_check_lid_need_reset_by_psid(NVRAM_EF_IMS_PROFILE_LID, l4c_gemini_get_switched_sim_id(i));
10922 if (ret != KAL_TRUE) {
10923 mcf_ut_format_err_str("Check LID need reset positive test (Modify 3 LIDs with SBP_full_tag) FAIL!! ret(%d), LID(%d) \r\n", ret, NVRAM_EF_IMS_PROFILE_LID);
10924 return KAL_FALSE;
10925 }
10926
10927 ret = mcf_check_lid_need_reset_by_psid(NVRAM_EF_XCAP_PROFILE_LID, l4c_gemini_get_switched_sim_id(i));
10928 if (ret != KAL_TRUE) {
10929 mcf_ut_format_err_str("Check LID need reset positive test (Modify 3 LIDs with SBP_full_tag) FAIL!! ret(%d), LID(%d) \r\n", ret, NVRAM_EF_XCAP_PROFILE_LID);
10930 return KAL_FALSE;
10931 }
10932
10933 mcf_set_config_after_dsbp(l4c_gemini_get_switched_sim_id(i));
10934 }
10935
10936 /*
10937 * Check LID need reset positive test - Modify 3 LIDs by auto select apply
10938 */
10939 /* Write MCF TLV-OTA file version to NVRAM */
10940 kal_mem_set(&nv_tlvota_file, 0, sizeof(nvram_ef_mcf_tlvota_file_info_struct));
10941 if ( !nvram_external_write_data(NVRAM_EF_MCF_TLVOTA_FILE_LID, 1, (kal_uint8 *)&nv_tlvota_file, sizeof(nvram_ef_mcf_tlvota_file_info_struct)) ) {
10942 mcf_ut_format_err_str("Fail to write MCF TLV-OTA file info to NVRAM!!\r\n");
10943 return KAL_FALSE;
10944 }
10945
10946 kal_mem_set(&mcf_tlvota_last_mod_lid_g, 0, sizeof(nvram_mcf_lid_info_struct)*MAX_SIM_NUM);
10947 kal_mem_set(&mcf_tlvota_curr_mod_lid_g, 0, sizeof(nvram_mcf_lid_info_struct)*MAX_SIM_NUM);
10948
10949
10950 for (i = 0; i < MAX_SIM_NUM; i++) {
10951 tlvota_file = &(pMcf->tlvota_file[i]);
10952
10953 MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
10954 if (tlvota_file) {
10955 pFile = (mcf_tool_file_info_t *)(tlvota_file->buff);
10956 pItem = (mcf_tool_gid_tlvota_file_item_t *)(tlvota_file->buff + sizeof(mcf_tool_file_info_t));
10957
10958 ret = mcf_ut_open_test_data("MTK_OPOTA_SBPID_12.mcfopota", (kal_char *)(tlvota_file->buff), MCF_MAX_TLVOTA_FILE_SIZE);
10959 if (ret == KAL_FALSE) {
10960 mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MTK_OPOTA_SBPID_12.mcfopota");
10961 return KAL_FALSE;
10962 }
10963
10964 tlvota_file->last_mod_time = MCF_UT_GEN_TIME;
10965 MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
10966 } else {
10967 mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! Fail to take write lock! \r\n");
10968 return KAL_FALSE;
10969 }
10970 }
10971
10972 for (i = 0; i < MAX_SIM_NUM; i++) {
10973 param_ptr.sbp_id = SBP_TAG_SBPID;
10974 param_ptr.ps_id = l4c_gemini_get_switched_sim_id(i);
10975 kal_mem_cpy(param_ptr.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
10976 kal_mem_cpy(param_ptr.mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
10977 kal_mem_set(param_ptr.iccid, 0, 21);
10978
10979 is_read_general_tlvota[i] = KAL_FALSE;
10980 is_read_tlvota[i] = KAL_FALSE;
10981 pMcf->is_ignore_dsbp[i] = KAL_FALSE;
10982
10983 ret = mcf_auto_select_tlvota_file(&param_ptr);
10984 if (ret != KAL_TRUE) {
10985 mcf_ut_format_err_str("auto select tlvota file FAIL!! ret(%d) \r\n", ret);
10986 return KAL_FALSE;
10987 }
10988
10989 ret = mcf_check_lid_need_reset_by_psid(NVRAM_EF_MCF_TEST_OTA_LID, l4c_gemini_get_switched_sim_id(i));
10990 if (ret != KAL_TRUE) {
10991 mcf_ut_format_err_str("Check LID need reset positive test (Modify 3 LIDs with SBP_full_tag) FAIL!! ret(%d), LID(%d) \r\n", ret, NVRAM_EF_MCF_TEST_OTA_LID);
10992 return KAL_FALSE;
10993 }
10994
10995 ret = mcf_check_lid_need_reset_by_psid(NVRAM_EF_IMS_PROFILE_LID, l4c_gemini_get_switched_sim_id(i));
10996 if (ret != KAL_TRUE) {
10997 mcf_ut_format_err_str("Check LID need reset positive test (Modify 3 LIDs with SBP_full_tag) FAIL!! ret(%d), LID(%d) \r\n", ret, NVRAM_EF_IMS_PROFILE_LID);
10998 return KAL_FALSE;
10999 }
11000
11001 ret = mcf_check_lid_need_reset_by_psid(NVRAM_EF_XCAP_PROFILE_LID, l4c_gemini_get_switched_sim_id(i));
11002 if (ret != KAL_TRUE) {
11003 mcf_ut_format_err_str("Check LID need reset positive test (Modify 3 LIDs with SBP_full_tag) FAIL!! ret(%d), LID(%d) \r\n", ret, NVRAM_EF_XCAP_PROFILE_LID);
11004 return KAL_FALSE;
11005 }
11006 }
11007
11008 for (i = 0; i < MAX_SIM_NUM; i++){
11009 mcf_set_config_after_dsbp(l4c_gemini_get_switched_sim_id(i));
11010 }
11011
11012 /*General TLV-OTA*/
11013
11014 /*
11015 * Check LID need reset positive test - Modify 3 LIDs
11016 */
11017 /* Write MCF TLV-OTA file version to NVRAM */
11018 kal_mem_set(&nv_tlvota_file, 0, sizeof(nvram_ef_mcf_tlvota_file_info_struct));
11019 strncpy(nv_tlvota_file.path, MCF_FS_DEFAULT_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN);
11020 strncpy(nv_tlvota_file.name, MCF_FS_DEFAULT_TLVOTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN);
11021 if ( !nvram_external_write_data(NVRAM_EF_MCF_GENERAL_TLVOTA_FILE_LID, 1, (kal_uint8 *)&nv_tlvota_file, sizeof(nvram_ef_mcf_tlvota_file_info_struct)) ) {
11022 mcf_ut_format_err_str("Fail to write MCF General TLV-OTA file info to NVRAM!!\r\n");
11023 return KAL_FALSE;
11024 }
11025
11026 kal_mem_set(&mcf_general_tlvota_last_mod_lid_g, 0, sizeof(nvram_mcf_lid_info_struct)*MAX_SIM_NUM);
11027 kal_mem_set(&mcf_general_tlvota_curr_mod_lid_g, 0, sizeof(nvram_mcf_lid_info_struct)*MAX_SIM_NUM);
11028
11029 tlvota_file = &(pMcf->general_tlvota_file);
11030
11031 MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
11032 if (tlvota_file) {
11033 pFile = (mcf_tool_file_info_t *)(tlvota_file->buff);
11034 pItem = (mcf_tool_gid_tlvota_file_item_t *)(tlvota_file->buff + sizeof(mcf_tool_file_info_t));
11035
11036 ret = mcf_ut_open_test_data("MCF_TLVOTA_SBP_NA_ut_3LIDs_gid_normal.mcfopota", (kal_char *)(tlvota_file->buff), MCF_MAX_TLVOTA_FILE_SIZE);
11037 if (ret == KAL_FALSE) {
11038 mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_TLVOTA_SBP_NA_ut_3LIDs_gid_normal.mcfopota");
11039 return KAL_FALSE;
11040 }
11041
11042 MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
11043 } else {
11044 mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! Fail to take write lock! \r\n");
11045 return KAL_FALSE;
11046 }
11047 kal_mem_set(is_read_general_tlvota, 0, MAX_SIM_NUM);
11048
11049 for (i = 0; i < MAX_SIM_NUM; i++) {
11050 // NVRAM_EF_MCF_TEST_OTA_LID
11051 param_ptr.sbp_id = SBP_TAG_SBPID;
11052 param_ptr.ps_id = l4c_gemini_get_switched_sim_id(i);
11053 kal_mem_cpy(param_ptr.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
11054 kal_mem_cpy(param_ptr.mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
11055 kal_mem_set(param_ptr.iccid, 0, 21);
11056
11057 is_read_tlvota[i] = KAL_FALSE;
11058 pMcf->is_ignore_dsbp[i] = KAL_TRUE;
11059 is_read_general_tlvota[i] = KAL_TRUE;
11060
11061 ret = mcf_auto_select_tlvota_file(&param_ptr);
11062 if (ret != KAL_TRUE) {
11063 mcf_ut_format_err_str("auto select tlvota file FAIL!! ret(%d) \r\n", ret);
11064 return KAL_FALSE;
11065 }
11066
11067 ret = mcf_check_lid_need_reset_by_psid(NVRAM_EF_MCF_TEST_OTA_LID, l4c_gemini_get_switched_sim_id(i));
11068 if (ret != KAL_TRUE) {
11069 mcf_ut_format_err_str("Check LID need reset positive test (Modify 3 LIDs with NA tag) FAIL!! ret(%d), LID(%d) \r\n", ret, NVRAM_EF_MCF_TEST_OTA_LID);
11070 return KAL_FALSE;
11071 }
11072
11073 ret = mcf_check_lid_need_reset_by_psid(NVRAM_EF_IMS_PROFILE_LID, l4c_gemini_get_switched_sim_id(i));
11074 if (ret != KAL_TRUE) {
11075 mcf_ut_format_err_str("Check LID need reset positive test (Modify 3 LIDs with NA tag) FAIL!! ret(%d), LID(%d) \r\n", ret, NVRAM_EF_IMS_PROFILE_LID);
11076 return KAL_FALSE;
11077 }
11078
11079 ret = mcf_check_lid_need_reset_by_psid(NVRAM_EF_XCAP_PROFILE_LID, l4c_gemini_get_switched_sim_id(i));
11080 if (ret != KAL_TRUE) {
11081 mcf_ut_format_err_str("Check LID need reset positive test (Modify 3 LIDs with NA tag) FAIL!! ret(%d), LID(%d) \r\n", ret, NVRAM_EF_XCAP_PROFILE_LID);
11082 return KAL_FALSE;
11083 }
11084
11085 mcf_set_config_after_dsbp(l4c_gemini_get_switched_sim_id(i));
11086 }
11087
11088 /*
11089 * Check LID need reset positive test - Modify 2 LIDs
11090 */
11091
11092 /* Read MCF TLV-OTA file into cache buffer */
11093 if ( !nvram_external_read_data(NVRAM_EF_MCF_GENERAL_TLVOTA_FILE_LID, 1, (kal_uint8 *)&nv_tlvota_file, sizeof(nvram_ef_mcf_tlvota_file_info_struct))) {
11094 mcf_ut_format_err_str("Fail to read MCF General TLV-OTA file info to NVRAM!!\r\n");
11095 return KAL_FALSE;
11096 }
11097
11098 /* Write MCF TLV-OTA file version to NVRAM */
11099 strncpy(nv_tlvota_file.path, MCF_FS_DEFAULT_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN);
11100 strncpy(nv_tlvota_file.name, MCF_FS_DEFAULT_TLVOTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN);
11101 if ( !nvram_external_write_data(NVRAM_EF_MCF_GENERAL_TLVOTA_FILE_LID, 1, (kal_uint8 *)&nv_tlvota_file, sizeof(nvram_ef_mcf_tlvota_file_info_struct)) ) {
11102 mcf_ut_format_err_str("Fail to write MCF General TLV-OTA file info to NVRAM!!\r\n");
11103 return KAL_FALSE;
11104 }
11105
11106 kal_mem_set(&mcf_general_tlvota_last_mod_lid_g, 0, sizeof(nvram_mcf_lid_info_struct)*MAX_SIM_NUM);
11107 kal_mem_set(&mcf_general_tlvota_curr_mod_lid_g, 0, sizeof(nvram_mcf_lid_info_struct)*MAX_SIM_NUM);
11108
11109 tlvota_file = &(pMcf->general_tlvota_file);
11110
11111 MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
11112 if (tlvota_file) {
11113 pFile = (mcf_tool_file_info_t *)(tlvota_file->buff);
11114 pItem = (mcf_tool_gid_tlvota_file_item_t *)(tlvota_file->buff + sizeof(mcf_tool_file_info_t));
11115
11116 ret = mcf_ut_open_test_data("MCF_TLVOTA_SBP_NA_ut_2LIDs_gid_normal.mcfopota", (kal_char *)(tlvota_file->buff), MCF_MAX_TLVOTA_FILE_SIZE);
11117 if (ret == KAL_FALSE) {
11118 mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_TLVOTA_SBP_NA_ut_2LIDs_gid_normal.mcfopota");
11119 return KAL_FALSE;
11120 }
11121
11122 MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
11123 } else {
11124 mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! Fail to take write lock! \r\n");
11125 return KAL_FALSE;
11126 }
11127 kal_mem_set(is_read_general_tlvota, 0, MAX_SIM_NUM);
11128 for (i = 0; i < MAX_SIM_NUM; i++) {
11129 // NVRAM_EF_MCF_TEST_OTA_LID
11130 param_ptr.sbp_id = SBP_TAG_SBPID;
11131 param_ptr.ps_id = l4c_gemini_get_switched_sim_id(i);
11132 kal_mem_cpy(param_ptr.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
11133 kal_mem_cpy(param_ptr.mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
11134 kal_mem_set(param_ptr.iccid, 0, 21);
11135
11136 is_read_tlvota[i] = KAL_FALSE;
11137 pMcf->is_ignore_dsbp[i] = KAL_TRUE;
11138 is_read_general_tlvota[i] = KAL_TRUE;
11139
11140 ret = mcf_auto_select_tlvota_file(&param_ptr);
11141 if (ret != KAL_TRUE) {
11142 mcf_ut_format_err_str("auto select tlvota file FAIL!! ret(%d) \r\n", ret);
11143 return KAL_FALSE;
11144 }
11145
11146 ret = mcf_check_lid_need_reset_by_psid(NVRAM_EF_MCF_TEST_OTA_LID, l4c_gemini_get_switched_sim_id(i));
11147 if (ret != KAL_TRUE) {
11148 mcf_ut_format_err_str("Check LID need reset positive test (Modify 2 LIDs with NA tag) FAIL!! ret(%d), LID(%d) \r\n", ret, NVRAM_EF_MCF_TEST_OTA_LID);
11149 return KAL_FALSE;
11150 }
11151
11152 ret = mcf_check_lid_need_reset_by_psid(NVRAM_EF_IMS_PROFILE_LID, l4c_gemini_get_switched_sim_id(i));
11153 if (ret != KAL_TRUE) {
11154 mcf_ut_format_err_str("Check LID need reset positive test (Modify 2 LIDs with NA tag) FAIL!! ret(%d), LID(%d) \r\n", ret, NVRAM_EF_IMS_PROFILE_LID);
11155 return KAL_FALSE;
11156 }
11157
11158 ret = mcf_check_lid_need_reset_by_psid(NVRAM_EF_XCAP_PROFILE_LID, l4c_gemini_get_switched_sim_id(i));
11159 if (ret != KAL_TRUE) {
11160 mcf_ut_format_err_str("Check LID need reset positive test (Modify 2 LIDs with NA tag) FAIL!! ret(%d), LID(%d) \r\n", ret, NVRAM_EF_XCAP_PROFILE_LID);
11161 return KAL_FALSE;
11162 }
11163 mcf_set_config_after_dsbp(l4c_gemini_get_switched_sim_id(i));
11164 }
11165
11166 /*
11167 * Check LID need reset positive test - General TLV-OTA file does not update
11168 */
11169
11170 kal_mem_set(&mcf_general_tlvota_last_mod_lid_g, 0, sizeof(nvram_mcf_lid_info_struct)*MAX_SIM_NUM);
11171 kal_mem_set(&mcf_general_tlvota_curr_mod_lid_g, 0, sizeof(nvram_mcf_lid_info_struct)*MAX_SIM_NUM);
11172
11173 for (i = 0; i < MAX_SIM_NUM; i++) {
11174 // NVRAM_EF_MCF_TEST_OTA_LID
11175 param_ptr.sbp_id = SBP_TAG_SBPID;
11176 param_ptr.ps_id = l4c_gemini_get_switched_sim_id(i);
11177 kal_mem_cpy(param_ptr.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
11178 kal_mem_cpy(param_ptr.mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
11179 kal_mem_set(param_ptr.iccid, 0, 21);
11180
11181 pMcf->is_ignore_dsbp[i] = KAL_TRUE;
11182
11183 ret = mcf_auto_select_tlvota_file(&param_ptr);
11184 if (ret != KAL_TRUE) {
11185 mcf_ut_format_err_str("auto select tlvota file FAIL!! ret(%d) \r\n", ret);
11186 return KAL_FALSE;
11187 }
11188
11189 ret = mcf_check_lid_need_reset_by_psid(NVRAM_EF_MCF_TEST_OTA_LID, l4c_gemini_get_switched_sim_id(i));
11190 if (ret != KAL_FALSE) {
11191 mcf_ut_format_err_str("Check LID need reset positive test (TLV-OTA file does not update) FAIL!! ret(%d), LID(%d) \r\n", ret, NVRAM_EF_MCF_TEST_OTA_LID);
11192 return KAL_FALSE;
11193 }
11194
11195 ret = mcf_check_lid_need_reset_by_psid(NVRAM_EF_IMS_PROFILE_LID, l4c_gemini_get_switched_sim_id(i));
11196 if (ret != KAL_FALSE) {
11197 mcf_ut_format_err_str("Check LID need reset positive test (TLV-OTA file does not update) FAIL!! ret(%d), LID(%d) \r\n", ret, NVRAM_EF_IMS_PROFILE_LID);
11198 return KAL_FALSE;
11199 }
11200
11201 ret = mcf_check_lid_need_reset_by_psid(NVRAM_EF_XCAP_PROFILE_LID, l4c_gemini_get_switched_sim_id(i));
11202 if (ret != KAL_FALSE) {
11203 mcf_ut_format_err_str("Check LID need reset positive test (TLV-OTA file does not update) FAIL!! ret(%d), LID(%d) \r\n", ret, NVRAM_EF_XCAP_PROFILE_LID);
11204 return KAL_FALSE;
11205 }
11206 mcf_set_config_after_dsbp(l4c_gemini_get_switched_sim_id(i));
11207 }
11208
11209 /*
11210 * Check LID need reset positive test - Modify 3 LIDs with ICCID tag by auto select apply
11211 */
11212 /* Write MCF TLV-OTA file version to NVRAM */
11213 kal_mem_set(&nv_tlvota_file, 0, sizeof(nvram_ef_mcf_tlvota_file_info_struct));
11214 if ( !nvram_external_write_data(NVRAM_EF_MCF_GENERAL_TLVOTA_FILE_LID, 1, (kal_uint8 *)&nv_tlvota_file, sizeof(nvram_ef_mcf_tlvota_file_info_struct)) ) {
11215 mcf_ut_format_err_str("Fail to write MCF General TLV-OTA file info to NVRAM!!\r\n");
11216 return KAL_FALSE;
11217 }
11218
11219 kal_mem_set(&mcf_general_tlvota_last_mod_lid_g, 0, sizeof(nvram_mcf_lid_info_struct)*MAX_SIM_NUM);
11220 kal_mem_set(&mcf_general_tlvota_curr_mod_lid_g, 0, sizeof(nvram_mcf_lid_info_struct)*MAX_SIM_NUM);
11221
11222 tlvota_file = &(pMcf->general_tlvota_file);
11223
11224 MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
11225 if (tlvota_file) {
11226 pFile = (mcf_tool_file_info_t *)(tlvota_file->buff);
11227 pItem = (mcf_tool_gid_tlvota_file_item_t *)(tlvota_file->buff + sizeof(mcf_tool_file_info_t));
11228
11229 ret = mcf_ut_open_test_data("MCF_TLVOTA_ICCID_ut_3LIDs_gid_normal.mcfopota", (kal_char *)(tlvota_file->buff), MCF_MAX_TLVOTA_FILE_SIZE);
11230 if (ret == KAL_FALSE) {
11231 mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_TLVOTA_ICCID_ut_3LIDs_gid_normal.mcfopota");
11232 return KAL_FALSE;
11233 }
11234 tlvota_file->last_mod_time = MCF_UT_GEN_TIME;
11235
11236 MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
11237 } else {
11238 mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! Fail to take write lock! \r\n");
11239 return KAL_FALSE;
11240 }
11241
11242 kal_mem_set(is_read_general_tlvota, 0, MAX_SIM_NUM);
11243
11244 for (i = 0; i < MAX_SIM_NUM; i++) {
11245 // NVRAM_EF_MCF_TEST_OTA_LID
11246 param_ptr.sbp_id = SBP_TAG_SBPID;
11247 param_ptr.ps_id = l4c_gemini_get_switched_sim_id(i);
11248 kal_mem_cpy(param_ptr.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
11249 kal_mem_cpy(param_ptr.mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
11250 strcpy(param_ptr.iccid, SBP_PARTIAL_TAG);
11251
11252 is_read_tlvota[i] = KAL_FALSE;
11253 pMcf->is_ignore_dsbp[i] = KAL_FALSE;
11254
11255 ret = mcf_auto_select_tlvota_file(&param_ptr);
11256 if (ret != KAL_TRUE) {
11257 mcf_ut_format_err_str("auto select tlvota file FAIL!! ret(%d) \r\n", ret);
11258 return KAL_FALSE;
11259 }
11260
11261 ret = mcf_check_lid_need_reset_by_psid(NVRAM_EF_MCF_TEST_OTA_LID, l4c_gemini_get_switched_sim_id(i));
11262 if (ret != KAL_TRUE) {
11263 mcf_ut_format_err_str("Check LID need reset positive test (Modify 3 LIDs with NA tag) FAIL!! ret(%d), LID(%d) \r\n", ret, NVRAM_EF_MCF_TEST_OTA_LID);
11264 return KAL_FALSE;
11265 }
11266
11267 ret = mcf_check_lid_need_reset_by_psid(NVRAM_EF_IMS_PROFILE_LID, l4c_gemini_get_switched_sim_id(i));
11268 if (ret != KAL_TRUE) {
11269 mcf_ut_format_err_str("Check LID need reset positive test (Modify 3 LIDs with NA tag) FAIL!! ret(%d), LID(%d) \r\n", ret, NVRAM_EF_IMS_PROFILE_LID);
11270 return KAL_FALSE;
11271 }
11272
11273 ret = mcf_check_lid_need_reset_by_psid(NVRAM_EF_XCAP_PROFILE_LID, l4c_gemini_get_switched_sim_id(i));
11274 if (ret != KAL_TRUE) {
11275 mcf_ut_format_err_str("Check LID need reset positive test (Modify 3 LIDs with NA tag) FAIL!! ret(%d), LID(%d) \r\n", ret, NVRAM_EF_XCAP_PROFILE_LID);
11276 return KAL_FALSE;
11277 }
11278 }
11279 for (i = 0; i < MAX_SIM_NUM; i++){
11280 mcf_set_config_after_dsbp(l4c_gemini_get_switched_sim_id(i));
11281 }
11282
11283 /*
11284 * Check LID need reset positive test - Apply SIM1 and SIM2 and General OP-OTA separately
11285 */
11286 /* Write MCF TLV-OTA file version to NVRAM */
11287 kal_mem_set(&nv_tlvota_file, 0, sizeof(nvram_ef_mcf_tlvota_file_info_struct));
11288 if ( !nvram_external_write_data(NVRAM_EF_MCF_TLVOTA_FILE_LID, 1, (kal_uint8 *)&nv_tlvota_file, sizeof(nvram_ef_mcf_tlvota_file_info_struct)) ) {
11289 mcf_ut_format_err_str("Fail to write MCF TLV-OTA file info to NVRAM!!\r\n");
11290 return KAL_FALSE;
11291 }
11292
11293 kal_mem_set(&mcf_tlvota_last_mod_lid_g, 0, sizeof(nvram_mcf_lid_info_struct)*MAX_SIM_NUM);
11294 kal_mem_set(&mcf_tlvota_curr_mod_lid_g, 0, sizeof(nvram_mcf_lid_info_struct)*MAX_SIM_NUM);
11295
11296
11297 tlvota_file = &(pMcf->tlvota_file[0]);
11298
11299 MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
11300 if (tlvota_file) {
11301 pFile = (mcf_tool_file_info_t *)(tlvota_file->buff);
11302 pItem = (mcf_tool_gid_tlvota_file_item_t *)(tlvota_file->buff + sizeof(mcf_tool_file_info_t));
11303
11304 ret = mcf_ut_open_test_data("MTK_OPOTA_SBPID_12.mcfopota", (kal_char *)(tlvota_file->buff), MCF_MAX_TLVOTA_FILE_SIZE);
11305 if (ret == KAL_FALSE) {
11306 mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MTK_OPOTA_SBPID_12.mcfopota");
11307 return KAL_FALSE;
11308 }
11309
11310 tlvota_file->last_mod_time = MCF_UT_GEN_TIME;
11311 kal_mem_set(&(tlvota_file->last_file), 0, sizeof(mcf_file_info_t));
11312 MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
11313 } else {
11314 mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! Fail to take write lock! \r\n");
11315 return KAL_FALSE;
11316 }
11317
11318 param_ptr.sbp_id = SBP_TAG_SBPID;
11319 param_ptr.ps_id = l4c_gemini_get_switched_sim_id(0);
11320 kal_mem_cpy(param_ptr.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
11321 kal_mem_cpy(param_ptr.mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
11322 kal_mem_set(param_ptr.iccid, 0, 21);
11323
11324 is_read_general_tlvota[0] = KAL_FALSE;
11325 is_read_tlvota[0] = KAL_FALSE;
11326 pMcf->is_ignore_dsbp[i] = KAL_FALSE;
11327
11328 ret = mcf_auto_select_tlvota_file(&param_ptr);
11329 if (ret != KAL_TRUE) {
11330 mcf_ut_format_err_str("auto select tlvota file FAIL!! ret(%d) \r\n", ret);
11331 return KAL_FALSE;
11332 }
11333
11334 ret = mcf_check_lid_need_reset_by_psid(NVRAM_EF_MCF_TEST_OTA_LID, l4c_gemini_get_switched_sim_id(0));
11335 if (ret != KAL_TRUE) {
11336 mcf_ut_format_err_str("Apply SIM1 and SIM2 and General OP-OTA separately FAIL!! ret(%d), LID(%d) \r\n", ret, NVRAM_EF_MCF_TEST_OTA_LID);
11337 return KAL_FALSE;
11338 }
11339
11340 ret = mcf_check_lid_need_reset_by_psid(NVRAM_EF_IMS_PROFILE_LID, l4c_gemini_get_switched_sim_id(0));
11341 if (ret != KAL_TRUE) {
11342 mcf_ut_format_err_str("Apply SIM1 and SIM2 and General OP-OTA separately FAIL!! ret(%d), LID(%d) \r\n", ret, NVRAM_EF_IMS_PROFILE_LID);
11343 return KAL_FALSE;
11344 }
11345
11346 ret = mcf_check_lid_need_reset_by_psid(NVRAM_EF_XCAP_PROFILE_LID, l4c_gemini_get_switched_sim_id(0));
11347 if (ret != KAL_TRUE) {
11348 mcf_ut_format_err_str("Apply SIM1 and SIM2 and General OP-OTA separately FAIL!! ret(%d), LID(%d) \r\n", ret, NVRAM_EF_XCAP_PROFILE_LID);
11349 return KAL_FALSE;
11350 }
11351
11352 mcf_set_config_after_dsbp(l4c_gemini_get_switched_sim_id(0));
11353
11354 tlvota_file = &(pMcf->tlvota_file[1]);
11355
11356 MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
11357 if (tlvota_file) {
11358 pFile = (mcf_tool_file_info_t *)(tlvota_file->buff);
11359 pItem = (mcf_tool_gid_tlvota_file_item_t *)(tlvota_file->buff + sizeof(mcf_tool_file_info_t));
11360
11361 ret = mcf_ut_open_test_data("MTK_OPOTA_SBPID_12.mcfopota", (kal_char *)(tlvota_file->buff), MCF_MAX_TLVOTA_FILE_SIZE);
11362 if (ret == KAL_FALSE) {
11363 mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MTK_OPOTA_SBPID_12.mcfopota");
11364 return KAL_FALSE;
11365 }
11366
11367 tlvota_file->last_mod_time = MCF_UT_GEN_TIME;
11368 kal_mem_set(&(tlvota_file->last_file), 0, sizeof(mcf_file_info_t));
11369 MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
11370 } else {
11371 mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! Fail to take write lock! \r\n");
11372 return KAL_FALSE;
11373 }
11374
11375 param_ptr.sbp_id = SBP_TAG_SBPID;
11376 param_ptr.ps_id = l4c_gemini_get_switched_sim_id(1);
11377 kal_mem_cpy(param_ptr.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
11378 kal_mem_cpy(param_ptr.mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
11379 kal_mem_set(param_ptr.iccid, 0, 21);
11380
11381 is_read_general_tlvota[1] = KAL_FALSE;
11382 is_read_tlvota[1] = KAL_FALSE;
11383 pMcf->is_ignore_dsbp[i] = KAL_FALSE;
11384
11385 ret = mcf_auto_select_tlvota_file(&param_ptr);
11386 if (ret != KAL_TRUE) {
11387 mcf_ut_format_err_str("auto select tlvota file FAIL!! ret(%d) \r\n", ret);
11388 return KAL_FALSE;
11389 }
11390
11391 ret = mcf_check_lid_need_reset_by_psid(NVRAM_EF_MCF_TEST_OTA_LID, l4c_gemini_get_switched_sim_id(1));
11392 if (ret != KAL_TRUE) {
11393 mcf_ut_format_err_str("Apply SIM1 and SIM2 and General OP-OTA separately FAIL!! ret(%d), LID(%d) \r\n", ret, NVRAM_EF_MCF_TEST_OTA_LID);
11394 return KAL_FALSE;
11395 }
11396
11397 ret = mcf_check_lid_need_reset_by_psid(NVRAM_EF_IMS_PROFILE_LID, l4c_gemini_get_switched_sim_id(1));
11398 if (ret != KAL_TRUE) {
11399 mcf_ut_format_err_str("Apply SIM1 and SIM2 and General OP-OTA separately FAIL!! ret(%d), LID(%d) \r\n", ret, NVRAM_EF_IMS_PROFILE_LID);
11400 return KAL_FALSE;
11401 }
11402
11403 ret = mcf_check_lid_need_reset_by_psid(NVRAM_EF_XCAP_PROFILE_LID, l4c_gemini_get_switched_sim_id(1));
11404 if (ret != KAL_TRUE) {
11405 mcf_ut_format_err_str("Apply SIM1 and SIM2 and General OP-OTA separately FAIL!! ret(%d), LID(%d) \r\n", ret, NVRAM_EF_XCAP_PROFILE_LID);
11406 return KAL_FALSE;
11407 }
11408
11409 mcf_set_config_after_dsbp(l4c_gemini_get_switched_sim_id(1));
11410
11411 tlvota_file = &(pMcf->general_tlvota_file);
11412
11413 MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
11414 if (tlvota_file) {
11415 pFile = (mcf_tool_file_info_t *)(tlvota_file->buff);
11416 pItem = (mcf_tool_gid_tlvota_file_item_t *)(tlvota_file->buff + sizeof(mcf_tool_file_info_t));
11417
11418 ret = mcf_ut_open_test_data("MCF_TLVOTA_SBP_NA_ut_2LIDs_gid_normal.mcfopota", (kal_char *)(tlvota_file->buff), MCF_MAX_TLVOTA_FILE_SIZE);
11419 if (ret == KAL_FALSE) {
11420 mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_TLVOTA_SBP_NA_ut_2LIDs_gid_normal.mcfopota");
11421 return KAL_FALSE;
11422 }
11423
11424 tlvota_file->last_mod_time = MCF_UT_GEN_TIME;
11425 MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
11426 } else {
11427 mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! Fail to take write lock! \r\n");
11428 return KAL_FALSE;
11429 }
11430
11431 kal_mem_set(is_read_general_tlvota, 0, MAX_SIM_NUM);
11432
11433 for(i = 0; i < MAX_SIM_NUM; i++){
11434 param_ptr.sbp_id = SBP_TAG_SBPID;
11435 param_ptr.ps_id = l4c_gemini_get_switched_sim_id(i);
11436 kal_mem_cpy(param_ptr.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
11437 kal_mem_cpy(param_ptr.mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
11438 kal_mem_set(param_ptr.iccid, 0, 21);
11439
11440
11441 is_read_tlvota[i] = KAL_FALSE;
11442 pMcf->is_ignore_dsbp[i] = KAL_FALSE;
11443
11444 ret = mcf_auto_select_tlvota_file(&param_ptr);
11445 if (ret != KAL_TRUE) {
11446 mcf_ut_format_err_str("auto select tlvota file FAIL!! ret(%d) \r\n", ret);
11447 return KAL_FALSE;
11448 }
11449
11450 ret = mcf_check_lid_need_reset_by_psid(NVRAM_EF_MCF_TEST_OTA_LID, l4c_gemini_get_switched_sim_id(i));
11451 if (ret != KAL_TRUE) {
11452 mcf_ut_format_err_str("Check LID need reset positive test (Modify 3 LIDs with SBP_full_tag) FAIL!! ret(%d), LID(%d) \r\n", ret, NVRAM_EF_MCF_TEST_OTA_LID);
11453 return KAL_FALSE;
11454 }
11455
11456 ret = mcf_check_lid_need_reset_by_psid(NVRAM_EF_IMS_PROFILE_LID, l4c_gemini_get_switched_sim_id(i));
11457 if (ret != KAL_TRUE) {
11458 mcf_ut_format_err_str("Check LID need reset positive test (Modify 3 LIDs with SBP_full_tag) FAIL!! ret(%d), LID(%d) \r\n", ret, NVRAM_EF_IMS_PROFILE_LID);
11459 return KAL_FALSE;
11460 }
11461
11462 ret = mcf_check_lid_need_reset_by_psid(NVRAM_EF_XCAP_PROFILE_LID, l4c_gemini_get_switched_sim_id(i));
11463 if (ret != KAL_TRUE) {
11464 mcf_ut_format_err_str("Check LID need reset positive test (Modify 3 LIDs with SBP_full_tag) FAIL!! ret(%d), LID(%d) \r\n", ret, NVRAM_EF_XCAP_PROFILE_LID);
11465 return KAL_FALSE;
11466 }
11467 }
11468
11469 for(i = 0; i < MAX_SIM_NUM; i++){
11470 mcf_set_config_after_dsbp(l4c_gemini_get_switched_sim_id(i));
11471 }
11472
11473 /*
11474 * Check LID need reset positive test - Change SIM1, SIM2 card
11475 */
11476
11477 kal_mem_set(&nv_tlvota_file, 0, sizeof(nvram_ef_mcf_tlvota_file_info_struct));
11478 strncpy(nv_tlvota_file.path, MCF_FS_DEFAULT_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN);
11479 strncpy(nv_tlvota_file.name, MCF_FS_DEFAULT_TLVOTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN);
11480 if ( !nvram_external_write_data(NVRAM_EF_MCF_TLVOTA_FILE_LID, 1, (kal_uint8 *)&nv_tlvota_file, sizeof(nvram_ef_mcf_tlvota_file_info_struct)) ) {
11481 mcf_ut_format_err_str("Fail to write MCF TLV-OTA file info to NVRAM!!\r\n");
11482 return KAL_FALSE;
11483 }
11484
11485 kal_mem_set(&mcf_tlvota_last_mod_lid_g, 0, sizeof(nvram_mcf_lid_info_struct)*MAX_SIM_NUM);
11486 kal_mem_set(&mcf_tlvota_curr_mod_lid_g, 0, sizeof(nvram_mcf_lid_info_struct)*MAX_SIM_NUM);
11487
11488
11489 for (i = 0; i < MAX_SIM_NUM; i++) {
11490 tlvota_file = &(pMcf->tlvota_file[i]);
11491
11492 MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
11493 if (tlvota_file) {
11494 pFile = (mcf_tool_file_info_t *)(tlvota_file->buff);
11495 pItem = (mcf_tool_gid_tlvota_file_item_t *)(tlvota_file->buff + sizeof(mcf_tool_file_info_t));
11496
11497 ret = mcf_ut_open_test_data("MCF_TLVOTA_SBP_partial_ut_3LIDs_gid_normal.mcfopota", (kal_char *)(tlvota_file->buff), MCF_MAX_TLVOTA_FILE_SIZE);
11498 if (ret == KAL_FALSE) {
11499 mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_TLVOTA_SBP_partial_ut_3LIDs_gid_normal.mcfopota");
11500 return KAL_FALSE;
11501 }
11502
11503 MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
11504 } else {
11505 mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! Fail to take write lock! \r\n");
11506 return KAL_FALSE;
11507 }
11508 }
11509
11510 for (i = 0; i < MAX_SIM_NUM; i++) {
11511 // NVRAM_EF_MCF_TEST_OTA_LID with SBP_PARTIAL_TAG
11512 param_ptr.sbp_id = SBP_TAG_SBPID;
11513 param_ptr.ps_id = l4c_gemini_get_switched_sim_id(i);
11514 kal_mem_cpy(param_ptr.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
11515 kal_mem_cpy(param_ptr.mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
11516 kal_mem_set(param_ptr.iccid, 0, 21);
11517
11518 is_read_general_tlvota[i] = KAL_FALSE;
11519 is_read_tlvota[i] = KAL_TRUE;
11520 pMcf->is_ignore_dsbp[i] = KAL_TRUE;
11521
11522 ret = mcf_auto_select_tlvota_file(&param_ptr);
11523 if (ret != KAL_TRUE) {
11524 mcf_ut_format_err_str("auto select tlvota file FAIL!! ret(%d) \r\n", ret);
11525 return KAL_FALSE;
11526 }
11527
11528 ret = mcf_check_lid_need_reset_by_psid(NVRAM_EF_MCF_TEST_OTA_LID, l4c_gemini_get_switched_sim_id(i));
11529 if (ret != KAL_TRUE) {
11530 mcf_ut_format_err_str("Check LID need reset positive test (Modify 3 LIDs with SBP_PARTIAL_TAG) FAIL!! ret(%d), LID(%d) \r\n", ret, NVRAM_EF_MCF_TEST_OTA_LID);
11531 return KAL_FALSE;
11532 }
11533
11534 ret = mcf_check_lid_need_reset_by_psid(NVRAM_EF_IMS_PROFILE_LID, l4c_gemini_get_switched_sim_id(i));
11535 if (ret != KAL_TRUE) {
11536 mcf_ut_format_err_str("Check LID need reset positive test (Modify 3 LIDs with SBP_PARTIAL_TAG) FAIL!! ret(%d), LID(%d) \r\n", ret, NVRAM_EF_IMS_PROFILE_LID);
11537 return KAL_FALSE;
11538 }
11539
11540 ret = mcf_check_lid_need_reset_by_psid(NVRAM_EF_XCAP_PROFILE_LID, l4c_gemini_get_switched_sim_id(i));
11541 if (ret != KAL_TRUE) {
11542 mcf_ut_format_err_str("Check LID need reset positive test (Modify 3 LIDs with SBP_PARTIAL_TAG) FAIL!! ret(%d), LID(%d) \r\n", ret, NVRAM_EF_XCAP_PROFILE_LID);
11543 return KAL_FALSE;
11544 }
11545
11546 mcf_set_config_after_dsbp(l4c_gemini_get_switched_sim_id(i));
11547 }
11548
11549 //Change SIM1/SIM2
11550
11551 for (i = 0; i < MAX_SIM_NUM; i++) {
11552 // NVRAM_EF_MCF_TEST_OTA_LID with SBP_PARTIAL_TAG
11553 param_ptr.sbp_id = 108;
11554 param_ptr.ps_id = l4c_gemini_get_switched_sim_id(i);
11555 kal_mem_cpy(param_ptr.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
11556 kal_mem_cpy(param_ptr.mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
11557 kal_mem_set(param_ptr.iccid, 0, 21);
11558
11559 is_read_general_tlvota[i] = KAL_FALSE;
11560 is_read_tlvota[i] = KAL_FALSE;
11561 pMcf->is_ignore_dsbp[i] = KAL_TRUE;
11562
11563 ret = mcf_auto_select_tlvota_file(&param_ptr);
11564 if (ret != KAL_TRUE) {
11565 mcf_ut_format_err_str("auto select tlvota file FAIL!! ret(%d) \r\n", ret);
11566 return KAL_FALSE;
11567 }
11568
11569 ret = mcf_check_lid_need_reset_by_psid(NVRAM_EF_MCF_TEST_OTA_LID, l4c_gemini_get_switched_sim_id(i));
11570 if (ret != KAL_FALSE) {
11571 mcf_ut_format_err_str("Check LID need reset positive test (Modify 3 LIDs with SBP_PARTIAL_TAG) FAIL!! ret(%d), LID(%d) \r\n", ret, NVRAM_EF_MCF_TEST_OTA_LID);
11572 return KAL_FALSE;
11573 }
11574
11575 ret = mcf_check_lid_need_reset_by_psid(NVRAM_EF_IMS_PROFILE_LID, l4c_gemini_get_switched_sim_id(i));
11576 if (ret != KAL_FALSE) {
11577 mcf_ut_format_err_str("Check LID need reset positive test (Modify 3 LIDs with SBP_PARTIAL_TAG) FAIL!! ret(%d), LID(%d) \r\n", ret, NVRAM_EF_IMS_PROFILE_LID);
11578 return KAL_FALSE;
11579 }
11580
11581 ret = mcf_check_lid_need_reset_by_psid(NVRAM_EF_XCAP_PROFILE_LID, l4c_gemini_get_switched_sim_id(i));
11582 if (ret != KAL_FALSE) {
11583 mcf_ut_format_err_str("Check LID need reset positive test (Modify 3 LIDs with SBP_PARTIAL_TAG) FAIL!! ret(%d), LID(%d) \r\n", ret, NVRAM_EF_XCAP_PROFILE_LID);
11584 return KAL_FALSE;
11585 }
11586
11587 mcf_set_config_after_dsbp(l4c_gemini_get_switched_sim_id(i));
11588 }
11589
11590
11591 MCF_UT_PASS();
11592 return KAL_TRUE;
11593}
11594kal_bool mcf_ut_mcf_check_ota_need_update(void *p_param, kal_char *p_ret_err_str, kal_uint32 *p_ret_err_str_sz)
11595{
11596 kal_bool ret;
11597 mcf_tlvota_sbp_tag_t sbp_tag;
11598 kal_char iccid_tag[16];
11599 mcf_t *pMcf = mcf_get_instance();
11600 mcf_tool_file_info_t *pFile;
11601 mcf_tool_tlvota_file_item_t *pItem;
11602 mcf_tlvota_file_t *tlvota_file;
11603 sbp_reconfig_custom_param_struct param_ptr;
11604 nvram_ef_mcf_sw_info_struct nv_sw_info;
11605
11606 mcf_ut_init();
11607
11608 if ( !nvram_external_read_data(NVRAM_EF_MCF_SW_INFO_LID, 1, (kal_uint8 *)&nv_sw_info, sizeof(nvram_ef_mcf_sw_info_struct))) {
11609 mcf_ut_format_err_str("Read NVRAM_EF_MCF_SW_INFO_LID FAIL!");
11610 return KAL_FALSE;
11611 }
11612
11613 strncpy(nv_sw_info.version, release_verno(), MCF_SW_VERNO_LEN);
11614 strncpy(nv_sw_info.build_time, build_date_time(), MCF_SW_BUILD_TIME_LEN);
11615
11616 if ( !nvram_external_write_data(NVRAM_EF_MCF_SW_INFO_LID, 1, (kal_uint8 *)&nv_sw_info, sizeof(nvram_ef_mcf_sw_info_struct))) {
11617 mcf_ut_format_err_str("Write NVRAM_EF_MCF_SW_INFO_LID FAIL!");
11618 return KAL_FALSE;
11619 }
11620
11621 /*
11622 * TLV-OTA file test
11623 */
11624 /* First time, need to update TLV-OTA*/
11625
11626 /* Fill TLV-OTA file into buffer */
11627
11628 tlvota_file = &(pMcf->tlvota_file[0]);
11629
11630 MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
11631 if (tlvota_file) {
11632 pFile = (mcf_tool_file_info_t *)(tlvota_file->buff);
11633 pItem = (mcf_tool_gid_tlvota_file_item_t *)(tlvota_file->buff + sizeof(mcf_tool_file_info_t));
11634
11635 ret = mcf_ut_open_test_data("MTK_OPOTA_SBPID_12.mcfopota", (kal_char *)(tlvota_file->buff), MCF_MAX_TLVOTA_FILE_SIZE);
11636 if (ret == KAL_FALSE) {
11637 mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MTK_OPOTA_SBPID_12.mcfopota");
11638 return KAL_FALSE;
11639 }
11640
11641 MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
11642 } else {
11643 mcf_ut_format_err_str("Read TLV-OTA FAIL!! Fail to take write lock! \r\n");
11644 return KAL_FALSE;
11645 }
11646
11647
11648 // fill in SBP TAG
11649 kal_mem_set(&sbp_tag, 0, sizeof(mcf_tlvota_sbp_tag_t));
11650 sbp_tag.sbp_id = SBP_TAG_SBPID;
11651 strncpy(sbp_tag.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
11652 strncpy(sbp_tag.mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
11653
11654 kal_mem_set(&iccid_tag, 0, sizeof(kal_char));
11655 strcpy(iccid_tag, SBP_PARTIAL_TAG);
11656
11657 param_ptr.sbp_id = SBP_TAG_SBPID;
11658 param_ptr.ps_id = l4c_gemini_get_switched_sim_id(0);
11659 kal_mem_cpy(param_ptr.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
11660 kal_mem_cpy(param_ptr.mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
11661 kal_mem_set(param_ptr.iccid, 0, 21);
11662
11663
11664 // Check TLV-OTA need update
11665 ret = mcf_check_ota_need_update(param_ptr.ps_id, sbp_tag, iccid_tag);
11666 if (ret != KAL_TRUE) {
11667 mcf_ut_format_err_str("mcf_check_ota_need_update FAIL! ret(%d) \r\n", ret);
11668 return KAL_FALSE;
11669 }
11670
11671 //DSBP flow
11672 ret = mcf_auto_select_tlvota_file(&param_ptr);
11673 if (ret != KAL_TRUE) {
11674 mcf_ut_format_err_str("mcf_auto_select_tlvota_file FAIL! ret(%d) \r\n", ret);
11675 return KAL_FALSE;
11676 }
11677 mcf_set_config_after_dsbp(l4c_gemini_get_switched_sim_id(param_ptr.ps_id));
11678
11679
11680 /* Second time, do not change TLV-OTA, no need to update */
11681
11682 // Check TLV-OTA need update
11683 ret = mcf_check_ota_need_update(param_ptr.ps_id, sbp_tag, iccid_tag);
11684 if (ret != KAL_FALSE) {
11685 mcf_ut_format_err_str("mcf_check_ota_need_update FAIL! ret(%d) \r\n", ret);
11686 return KAL_FALSE;
11687 }
11688
11689 //DSBP flow
11690 ret = mcf_auto_select_tlvota_file(&param_ptr);
11691 if (ret != KAL_TRUE) {
11692 mcf_ut_format_err_str("mcf_auto_select_tlvota_file FAIL! ret(%d) \r\n", ret);
11693 return KAL_FALSE;
11694 }
11695 mcf_set_config_after_dsbp(l4c_gemini_get_switched_sim_id(param_ptr.ps_id));
11696
11697 /* When chang sim card, need to update */
11698
11699 // fill in SBP TAG
11700 kal_mem_set(&sbp_tag, 0, sizeof(mcf_tlvota_sbp_tag_t));
11701 sbp_tag.sbp_id = 1;
11702 strncpy(sbp_tag.mcc, "460", MAX_MCC_STR_LEN);
11703 strncpy(sbp_tag.mnc, "01", MAX_MNC_STR_LEN);
11704
11705 kal_mem_set(&iccid_tag, 0, sizeof(kal_char));
11706 strcpy(iccid_tag, SBP_PARTIAL_TAG);
11707
11708 param_ptr.sbp_id = 1;
11709 param_ptr.ps_id = l4c_gemini_get_switched_sim_id(0);
11710 kal_mem_cpy(param_ptr.mcc, "460", MAX_MCC_STR_LEN);
11711 kal_mem_cpy(param_ptr.mnc, "01", MAX_MNC_STR_LEN);
11712 kal_mem_set(param_ptr.iccid, 0, 21);
11713
11714 /* Fill TLV-OTA file into buffer */
11715
11716 tlvota_file = &(pMcf->tlvota_file[0]);
11717
11718 MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
11719 if (tlvota_file) {
11720 pFile = (mcf_tool_file_info_t *)(tlvota_file->buff);
11721 pItem = (mcf_tool_gid_tlvota_file_item_t *)(tlvota_file->buff + sizeof(mcf_tool_file_info_t));
11722
11723 ret = mcf_ut_open_test_data("MTK_OPOTA_SBPID_1.mcfopota", (kal_char *)(tlvota_file->buff), MCF_MAX_TLVOTA_FILE_SIZE);
11724 if (ret == KAL_FALSE) {
11725 mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MTK_OPOTA_SBPID_1.mcfopota");
11726 return KAL_FALSE;
11727 }
11728
11729 MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
11730 } else {
11731 mcf_ut_format_err_str("Read TLV-OTA FAIL!! Fail to take write lock! \r\n");
11732 return KAL_FALSE;
11733 }
11734
11735 // Check TLV-OTA need update
11736 ret = mcf_check_ota_need_update(param_ptr.ps_id, sbp_tag, iccid_tag);
11737 if (ret != KAL_TRUE) {
11738 mcf_ut_format_err_str("mcf_check_ota_need_update FAIL! ret(%d) \r\n", ret);
11739 return KAL_FALSE;
11740 }
11741
11742 /*
11743 * General TLV-OTA file test
11744 */
11745 /* First time, need to update TLV-OTA*/
11746
11747 /* Fill TLV-OTA file into buffer */
11748
11749 tlvota_file = &(pMcf->general_tlvota_file);
11750
11751 MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
11752 if (tlvota_file) {
11753 pFile = (mcf_tool_file_info_t *)(tlvota_file->buff);
11754 pItem = (mcf_tool_gid_tlvota_file_item_t *)(tlvota_file->buff + sizeof(mcf_tool_file_info_t));
11755
11756 ret = mcf_ut_open_test_data("MTK_OPOTA_GENERAL.mcfopota", (kal_char *)(tlvota_file->buff), MCF_MAX_TLVOTA_FILE_SIZE);
11757 if (ret == KAL_FALSE) {
11758 mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MTK_OPOTA_GENERAL.mcfopota");
11759 return KAL_FALSE;
11760 }
11761
11762 MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
11763 } else {
11764 mcf_ut_format_err_str("Read TLV-OTA FAIL!! Fail to take write lock! \r\n");
11765 return KAL_FALSE;
11766 }
11767
11768
11769 // fill in SBP TAG
11770 kal_mem_set(&sbp_tag, 0, sizeof(mcf_tlvota_sbp_tag_t));
11771 sbp_tag.sbp_id = SBP_TAG_SBPID;
11772 strncpy(sbp_tag.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
11773 strncpy(sbp_tag.mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
11774
11775 kal_mem_set(&iccid_tag, 0, sizeof(kal_char));
11776 strcpy(iccid_tag, SBP_PARTIAL_TAG);
11777
11778 param_ptr.sbp_id = SBP_TAG_SBPID;
11779 param_ptr.ps_id = l4c_gemini_get_switched_sim_id(0);
11780 kal_mem_cpy(param_ptr.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
11781 kal_mem_cpy(param_ptr.mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
11782 kal_mem_set(param_ptr.iccid, 0, 21);
11783
11784
11785 // Check TLV-OTA need update
11786 ret = mcf_check_ota_need_update(param_ptr.ps_id, sbp_tag, iccid_tag);
11787 if (ret != KAL_TRUE) {
11788 mcf_ut_format_err_str("mcf_check_ota_need_update FAIL! ret(%d) \r\n", ret);
11789 return KAL_FALSE;
11790 }
11791
11792 //DSBP flow
11793 ret = mcf_auto_select_tlvota_file(&param_ptr);
11794 if (ret != KAL_TRUE) {
11795 mcf_ut_format_err_str("mcf_auto_select_tlvota_file FAIL! ret(%d) \r\n", ret);
11796 return KAL_FALSE;
11797 }
11798 mcf_set_config_after_dsbp(l4c_gemini_get_switched_sim_id(param_ptr.ps_id));
11799
11800
11801
11802 /* Second time, do not change General TLV-OTA, no need to update */
11803
11804 // Check TLV-OTA need update
11805 ret = mcf_check_ota_need_update(param_ptr.ps_id, sbp_tag, iccid_tag);
11806 if (ret != KAL_FALSE) {
11807 mcf_ut_format_err_str("mcf_check_ota_need_update FAIL! ret(%d) \r\n", ret);
11808 return KAL_FALSE;
11809 }
11810
11811 //DSBP flow
11812 ret = mcf_auto_select_tlvota_file(&param_ptr);
11813 if (ret != KAL_TRUE) {
11814 mcf_ut_format_err_str("mcf_auto_select_tlvota_file FAIL! ret(%d) \r\n", ret);
11815 return KAL_FALSE;
11816 }
11817 mcf_set_config_after_dsbp(l4c_gemini_get_switched_sim_id(param_ptr.ps_id));
11818
11819 MCF_UT_PASS();
11820 return KAL_TRUE;
11821
11822}
11823
11824kal_bool mcf_ut_mcf_get_tlvota_file_result(void *p_param, kal_char *p_ret_err_str, kal_uint32 *p_ret_err_str_sz)
11825{
11826 kal_bool ret;
11827 mcf_tlvota_sbp_tag_t sbp_tag;
11828 kal_char iccid_tag[16];
11829 mcf_t *pMcf = mcf_get_instance();
11830 mcf_tool_file_info_t *pFile;
11831 mcf_tool_tlvota_file_item_t *pItem;
11832 mcf_tlvota_file_t *tlvota_file;
11833 sbp_reconfig_custom_param_struct param_ptr;
11834 nvram_ef_mcf_sw_info_struct nv_sw_info;
11835 mcf_ota_result_e mcf_ret = MCF_OTA_R_SUCCESS;
11836 kal_uint8 i;
11837
11838 mcf_ut_init();
11839
11840 if ( !nvram_external_read_data(NVRAM_EF_MCF_SW_INFO_LID, 1, (kal_uint8 *)&nv_sw_info, sizeof(nvram_ef_mcf_sw_info_struct))) {
11841 mcf_ut_format_err_str("Read NVRAM_EF_MCF_SW_INFO_LID FAIL!");
11842 return KAL_FALSE;
11843 }
11844
11845 strncpy(nv_sw_info.version, release_verno(), MCF_SW_VERNO_LEN);
11846 strncpy(nv_sw_info.build_time, build_date_time(), MCF_SW_BUILD_TIME_LEN);
11847
11848 if ( !nvram_external_write_data(NVRAM_EF_MCF_SW_INFO_LID, 1, (kal_uint8 *)&nv_sw_info, sizeof(nvram_ef_mcf_sw_info_struct))) {
11849 mcf_ut_format_err_str("Write NVRAM_EF_MCF_SW_INFO_LID FAIL!");
11850 return KAL_FALSE;
11851 }
11852
11853 /*
11854 * TLV-OTA file test
11855 */
11856 /* First time, need to update TLV-OTA*/
11857
11858 /* Fill TLV-OTA file into buffer */
11859
11860 tlvota_file = &(pMcf->tlvota_file[0]);
11861
11862 MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
11863 if (tlvota_file) {
11864 pFile = (mcf_tool_file_info_t *)(tlvota_file->buff);
11865 pItem = (mcf_tool_gid_tlvota_file_item_t *)(tlvota_file->buff + sizeof(mcf_tool_file_info_t));
11866
11867 ret = mcf_ut_open_test_data("MTK_OPOTA_SBPID_12.mcfopota", (kal_char *)(tlvota_file->buff), MCF_MAX_TLVOTA_FILE_SIZE);
11868 if (ret == KAL_FALSE) {
11869 mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MTK_OPOTA_SBPID_12.mcfopota");
11870 return KAL_FALSE;
11871 }
11872
11873 MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
11874 } else {
11875 mcf_ut_format_err_str("Read TLV-OTA FAIL!! Fail to take write lock! \r\n");
11876 return KAL_FALSE;
11877 }
11878
11879
11880 // fill in SBP TAG
11881 kal_mem_set(&sbp_tag, 0, sizeof(mcf_tlvota_sbp_tag_t));
11882 sbp_tag.sbp_id = SBP_TAG_SBPID;
11883 strncpy(sbp_tag.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
11884 strncpy(sbp_tag.mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
11885
11886 kal_mem_set(&iccid_tag, 0, sizeof(kal_char));
11887 strcpy(iccid_tag, SBP_PARTIAL_TAG);
11888
11889 param_ptr.sbp_id = SBP_TAG_SBPID;
11890 param_ptr.ps_id = l4c_gemini_get_switched_sim_id(0);
11891 kal_mem_cpy(param_ptr.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
11892 kal_mem_cpy(param_ptr.mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
11893 kal_mem_set(param_ptr.iccid, 0, 21);
11894
11895 //DSBP flow
11896 ret = mcf_auto_select_tlvota_file(&param_ptr);
11897 if (ret != KAL_TRUE) {
11898 mcf_ut_format_err_str("mcf_auto_select_tlvota_file FAIL! ret(%d) \r\n", ret);
11899 return KAL_FALSE;
11900 }
11901 mcf_set_config_after_dsbp(l4c_gemini_get_switched_sim_id(param_ptr.ps_id));
11902
11903 mcf_ret = mcf_get_tlvota_file_result(param_ptr.ps_id);
11904
11905 if (mcf_ret != MCF_OTA_R_SUCCESS){
11906 mcf_ut_format_err_str("mcf_get_tlvota_file_result FAIL! ret(%d) \r\n", mcf_ret);
11907 return KAL_FALSE;
11908 }
11909
11910
11911 /* Second time, do not change TLV-OTA, no need to update */
11912
11913 //DSBP flow
11914 ret = mcf_auto_select_tlvota_file(&param_ptr);
11915 if (ret != KAL_TRUE) {
11916 mcf_ut_format_err_str("mcf_auto_select_tlvota_file FAIL! ret(%d) \r\n", ret);
11917 return KAL_FALSE;
11918 }
11919 mcf_set_config_after_dsbp(l4c_gemini_get_switched_sim_id(param_ptr.ps_id));
11920
11921 mcf_ret = mcf_get_tlvota_file_result(param_ptr.ps_id);
11922
11923 if (mcf_ret != MCF_OTA_R_SUCCESS){
11924 mcf_ut_format_err_str("mcf_get_tlvota_file_result FAIL! ret(%d) \r\n", mcf_ret);
11925 return KAL_FALSE;
11926 }
11927
11928
11929 /* When chang sim card, need to update */
11930
11931 // fill in SBP TAG
11932 kal_mem_set(&sbp_tag, 0, sizeof(mcf_tlvota_sbp_tag_t));
11933 sbp_tag.sbp_id = 1;
11934 strncpy(sbp_tag.mcc, "460", MAX_MCC_STR_LEN);
11935 strncpy(sbp_tag.mnc, "01", MAX_MNC_STR_LEN);
11936
11937 kal_mem_set(&iccid_tag, 0, sizeof(kal_char));
11938 strcpy(iccid_tag, SBP_PARTIAL_TAG);
11939
11940 param_ptr.sbp_id = 1;
11941 param_ptr.ps_id = l4c_gemini_get_switched_sim_id(0);
11942 kal_mem_cpy(param_ptr.mcc, "460", MAX_MCC_STR_LEN);
11943 kal_mem_cpy(param_ptr.mnc, "01", MAX_MNC_STR_LEN);
11944 kal_mem_set(param_ptr.iccid, 0, 21);
11945
11946 /* Fill TLV-OTA file into buffer */
11947
11948 tlvota_file = &(pMcf->tlvota_file[0]);
11949
11950 MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
11951 if (tlvota_file) {
11952 pFile = (mcf_tool_file_info_t *)(tlvota_file->buff);
11953 pItem = (mcf_tool_gid_tlvota_file_item_t *)(tlvota_file->buff + sizeof(mcf_tool_file_info_t));
11954
11955 ret = mcf_ut_open_test_data("MTK_OPOTA_SBPID_1.mcfopota", (kal_char *)(tlvota_file->buff), MCF_MAX_TLVOTA_FILE_SIZE);
11956 if (ret == KAL_FALSE) {
11957 mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MTK_OPOTA_SBPID_1.mcfopota");
11958 return KAL_FALSE;
11959 }
11960
11961 MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
11962 } else {
11963 mcf_ut_format_err_str("Read TLV-OTA FAIL!! Fail to take write lock! \r\n");
11964 return KAL_FALSE;
11965 }
11966
11967 //DSBP flow
11968 ret = mcf_auto_select_tlvota_file(&param_ptr);
11969 if (ret != KAL_TRUE) {
11970 mcf_ut_format_err_str("mcf_auto_select_tlvota_file FAIL! ret(%d) \r\n", ret);
11971 return KAL_FALSE;
11972 }
11973 mcf_set_config_after_dsbp(l4c_gemini_get_switched_sim_id(param_ptr.ps_id));
11974
11975 mcf_ret = mcf_get_tlvota_file_result(param_ptr.ps_id);
11976
11977 if (mcf_ret != MCF_OTA_R_SUCCESS){
11978 mcf_ut_format_err_str("mcf_get_tlvota_file_result FAIL! ret(%d) \r\n", mcf_ret);
11979 return KAL_FALSE;
11980 }
11981
11982 /*
11983 *
11984 * False positive test - Invalid TLVOTA file
11985 *
11986 */
11987
11988 for(i = 0; i < MAX_SIM_NUM; i++){
11989 // fill in SBP TAG
11990 kal_mem_set(&sbp_tag, 0, sizeof(mcf_tlvota_sbp_tag_t));
11991 sbp_tag.sbp_id = SBP_TAG_SBPID;
11992 strncpy(sbp_tag.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
11993 strncpy(sbp_tag.mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
11994
11995 kal_mem_set(&iccid_tag, 0, sizeof(kal_char));
11996 strcpy(iccid_tag, SBP_PARTIAL_TAG);
11997
11998 param_ptr.sbp_id = SBP_TAG_SBPID;
11999 param_ptr.ps_id = l4c_gemini_get_switched_sim_id(i);
12000 kal_mem_cpy(param_ptr.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
12001 kal_mem_cpy(param_ptr.mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
12002 kal_mem_set(param_ptr.iccid, 0, 21);
12003
12004 /* Use OTA file */
12005
12006 tlvota_file = &(pMcf->tlvota_file[i]);
12007
12008 MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
12009 if (tlvota_file) {
12010 pFile = (mcf_tool_file_info_t *)(tlvota_file->buff);
12011 pItem = (mcf_tool_gid_tlvota_file_item_t *)(tlvota_file->buff + sizeof(mcf_tool_file_info_t));
12012
12013 ret = mcf_ut_open_test_data("MCF_OTA_ut_gid_normal.mcfota", (kal_char *)(tlvota_file->buff), MCF_MAX_TLVOTA_FILE_SIZE);
12014 if (ret == KAL_FALSE) {
12015 mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_OTA_ut_gid_normal.mcfota");
12016 return KAL_FALSE;
12017 }
12018
12019 MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
12020 } else {
12021 mcf_ut_format_err_str("Read TLV-OTA FAIL!! Fail to take write lock! \r\n");
12022 return KAL_FALSE;
12023 }
12024
12025 //DSBP flow
12026 ret = mcf_auto_select_tlvota_file(&param_ptr);
12027 if (ret != KAL_FALSE) {
12028 mcf_ut_format_err_str("mcf_auto_select_tlvota_file FAIL! ret(%d) \r\n", ret);
12029 return KAL_FALSE;
12030 }
12031 mcf_set_config_after_dsbp(l4c_gemini_get_switched_sim_id(param_ptr.ps_id));
12032 mcf_ret = mcf_get_tlvota_file_result(param_ptr.ps_id);
12033
12034 if (mcf_ret != MCF_OTA_R_INVALID_FILE){
12035 mcf_ut_format_err_str("mcf_get_tlvota_file_result FAIL! ret(%d) \r\n", mcf_ret);
12036 return KAL_FALSE;
12037 }
12038 }
12039
12040 /*
12041 *
12042 * False positive test - decyption FAIL
12043 *
12044 */
12045
12046 for(i = 0; i < MAX_SIM_NUM; i++){
12047 // fill in SBP TAG
12048 kal_mem_set(&sbp_tag, 0, sizeof(mcf_tlvota_sbp_tag_t));
12049 sbp_tag.sbp_id = SBP_TAG_SBPID;
12050 strncpy(sbp_tag.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
12051 strncpy(sbp_tag.mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
12052
12053 kal_mem_set(&iccid_tag, 0, sizeof(kal_char));
12054 strcpy(iccid_tag, SBP_PARTIAL_TAG);
12055
12056 param_ptr.sbp_id = SBP_TAG_SBPID;
12057 param_ptr.ps_id = l4c_gemini_get_switched_sim_id(i);
12058 kal_mem_cpy(param_ptr.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
12059 kal_mem_cpy(param_ptr.mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
12060 kal_mem_set(param_ptr.iccid, 0, 21);
12061
12062 /* Use error AES-128 file */
12063
12064 tlvota_file = &(pMcf->tlvota_file[i]);
12065
12066 MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
12067 if (tlvota_file) {
12068 pFile = (mcf_tool_file_info_t *)(tlvota_file->buff);
12069 pItem = (mcf_tool_gid_tlvota_file_item_t *)(tlvota_file->buff + sizeof(mcf_tool_file_info_t));
12070
12071 ret = mcf_ut_open_test_data("MCF_TLVOTA_SBP_full_ut_gid_encyption_wrong_key.mcfopota", (kal_char *)(tlvota_file->buff), MCF_MAX_TLVOTA_FILE_SIZE);
12072 if (ret == KAL_FALSE) {
12073 mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_TLVOTA_SBP_full_ut_gid_encyption_wrong_key.mcfopota");
12074 return KAL_FALSE;
12075 }
12076
12077 MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
12078 } else {
12079 mcf_ut_format_err_str("Read TLV-OTA FAIL!! Fail to take write lock! \r\n");
12080 return KAL_FALSE;
12081 }
12082
12083 //DSBP flow
12084 ret = mcf_auto_select_tlvota_file(&param_ptr);
12085 if (ret != KAL_FALSE) {
12086 mcf_ut_format_err_str("mcf_auto_select_tlvota_file FAIL! ret(%d) \r\n", ret);
12087 return KAL_FALSE;
12088 }
12089 mcf_set_config_after_dsbp(l4c_gemini_get_switched_sim_id(param_ptr.ps_id));
12090 mcf_ret = mcf_get_tlvota_file_result(param_ptr.ps_id);
12091
12092 if (mcf_ret != MCF_OTA_R_CHECKSUM_ERROR){
12093 mcf_ut_format_err_str("mcf_get_tlvota_file_result FAIL! ret(%d) \r\n", mcf_ret);
12094 return KAL_FALSE;
12095 }
12096 }
12097
12098 /*
12099 *
12100 * False positive test - digest FAIL
12101 *
12102 */
12103
12104 for(i = 0; i < MAX_SIM_NUM; i++){
12105 // fill in SBP TAG
12106 kal_mem_set(&sbp_tag, 0, sizeof(mcf_tlvota_sbp_tag_t));
12107 sbp_tag.sbp_id = SBP_TAG_SBPID;
12108 strncpy(sbp_tag.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
12109 strncpy(sbp_tag.mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
12110
12111 kal_mem_set(&iccid_tag, 0, sizeof(kal_char));
12112 strcpy(iccid_tag, SBP_PARTIAL_TAG);
12113
12114 param_ptr.sbp_id = SBP_TAG_SBPID;
12115 param_ptr.ps_id = l4c_gemini_get_switched_sim_id(i);
12116 kal_mem_cpy(param_ptr.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
12117 kal_mem_cpy(param_ptr.mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
12118 kal_mem_set(param_ptr.iccid, 0, 21);
12119
12120 /* Use error AES-128 file */
12121
12122 tlvota_file = &(pMcf->tlvota_file[i]);
12123
12124 MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
12125 if (tlvota_file) {
12126 pFile = (mcf_tool_file_info_t *)(tlvota_file->buff);
12127 pItem = (mcf_tool_gid_tlvota_file_item_t *)(tlvota_file->buff + sizeof(mcf_tool_file_info_t));
12128
12129 ret = mcf_ut_open_test_data("MCF_TLVOTA_SBP_full_ut_gid_wrong_RSA2048.mcfopota", (kal_char *)(tlvota_file->buff), MCF_MAX_TLVOTA_FILE_SIZE);
12130 if (ret == KAL_FALSE) {
12131 mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_TLVOTA_SBP_full_ut_gid_wrong_RSA2048.mcfopota");
12132 return KAL_FALSE;
12133 }
12134
12135 MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
12136 } else {
12137 mcf_ut_format_err_str("Read TLV-OTA FAIL!! Fail to take write lock! \r\n");
12138 return KAL_FALSE;
12139 }
12140
12141 //DSBP flow
12142 ret = mcf_auto_select_tlvota_file(&param_ptr);
12143 if (ret != KAL_FALSE) {
12144 mcf_ut_format_err_str("mcf_auto_select_tlvota_file FAIL! ret(%d) \r\n", ret);
12145 return KAL_FALSE;
12146 }
12147 mcf_set_config_after_dsbp(l4c_gemini_get_switched_sim_id(param_ptr.ps_id));
12148 mcf_ret = mcf_get_tlvota_file_result(param_ptr.ps_id);
12149
12150 if (mcf_ret != MCF_OTA_R_DIGEST_FAIL){
12151 mcf_ut_format_err_str("mcf_get_tlvota_file_result FAIL! ret(%d) \r\n", mcf_ret);
12152 return KAL_FALSE;
12153 }
12154 }
12155
12156 /*
12157 *
12158 * False positive test - Invalid TLVOTA file - mcf_check_ota_need_update
12159 *
12160 */
12161
12162 for(i = 0; i < MAX_SIM_NUM; i++){
12163 // fill in SBP TAG
12164 kal_mem_set(&sbp_tag, 0, sizeof(mcf_tlvota_sbp_tag_t));
12165 sbp_tag.sbp_id = SBP_TAG_SBPID;
12166 strncpy(sbp_tag.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
12167 strncpy(sbp_tag.mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
12168
12169 kal_mem_set(&iccid_tag, 0, sizeof(kal_char));
12170 strcpy(iccid_tag, SBP_PARTIAL_TAG);
12171
12172 param_ptr.sbp_id = SBP_TAG_SBPID;
12173 param_ptr.ps_id = l4c_gemini_get_switched_sim_id(i);
12174 kal_mem_cpy(param_ptr.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
12175 kal_mem_cpy(param_ptr.mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
12176 kal_mem_set(param_ptr.iccid, 0, 21);
12177
12178 /* Use OTA file */
12179
12180 tlvota_file = &(pMcf->tlvota_file[i]);
12181
12182 MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
12183 if (tlvota_file) {
12184 pFile = (mcf_tool_file_info_t *)(tlvota_file->buff);
12185 pItem = (mcf_tool_gid_tlvota_file_item_t *)(tlvota_file->buff + sizeof(mcf_tool_file_info_t));
12186
12187 ret = mcf_ut_open_test_data("MCF_OTA_ut_gid_normal.mcfota", (kal_char *)(tlvota_file->buff), MCF_MAX_TLVOTA_FILE_SIZE);
12188 if (ret == KAL_FALSE) {
12189 mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_OTA_ut_gid_normal.mcfota");
12190 return KAL_FALSE;
12191 }
12192
12193 MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
12194 } else {
12195 mcf_ut_format_err_str("Read TLV-OTA FAIL!! Fail to take write lock! \r\n");
12196 return KAL_FALSE;
12197 }
12198
12199
12200 // Check TLV-OTA need update
12201 ret = mcf_check_ota_need_update(param_ptr.ps_id, sbp_tag, iccid_tag);
12202 if (ret != KAL_TRUE) {
12203 mcf_ut_format_err_str("mcf_check_ota_need_update FAIL! ret(%d) \r\n", ret);
12204 return KAL_FALSE;
12205 }
12206
12207 //DSBP flow
12208 ret = mcf_auto_select_tlvota_file(&param_ptr);
12209 if (ret != KAL_FALSE) {
12210 mcf_ut_format_err_str("mcf_auto_select_tlvota_file FAIL! ret(%d) \r\n", ret);
12211 return KAL_FALSE;
12212 }
12213 mcf_set_config_after_dsbp(l4c_gemini_get_switched_sim_id(param_ptr.ps_id));
12214 mcf_ret = mcf_get_tlvota_file_result(param_ptr.ps_id);
12215
12216 if (mcf_ret != MCF_OTA_R_INVALID_FILE){
12217 mcf_ut_format_err_str("mcf_get_tlvota_file_result FAIL! ret(%d) \r\n", mcf_ret);
12218 return KAL_FALSE;
12219 }
12220 }
12221
12222 /*
12223 *
12224 * False positive test - decyption FAIL - mcf_check_ota_need_update
12225 *
12226 */
12227
12228 for(i = 0; i < MAX_SIM_NUM; i++){
12229 // fill in SBP TAG
12230 kal_mem_set(&sbp_tag, 0, sizeof(mcf_tlvota_sbp_tag_t));
12231 sbp_tag.sbp_id = SBP_TAG_SBPID;
12232 strncpy(sbp_tag.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
12233 strncpy(sbp_tag.mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
12234
12235 kal_mem_set(&iccid_tag, 0, sizeof(kal_char));
12236 strcpy(iccid_tag, SBP_PARTIAL_TAG);
12237
12238 param_ptr.sbp_id = SBP_TAG_SBPID;
12239 param_ptr.ps_id = l4c_gemini_get_switched_sim_id(i);
12240 kal_mem_cpy(param_ptr.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
12241 kal_mem_cpy(param_ptr.mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
12242 kal_mem_set(param_ptr.iccid, 0, 21);
12243
12244 /* Use error AES-128 file */
12245
12246 tlvota_file = &(pMcf->tlvota_file[i]);
12247
12248 MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
12249 if (tlvota_file) {
12250 pFile = (mcf_tool_file_info_t *)(tlvota_file->buff);
12251 pItem = (mcf_tool_gid_tlvota_file_item_t *)(tlvota_file->buff + sizeof(mcf_tool_file_info_t));
12252
12253 ret = mcf_ut_open_test_data("MCF_TLVOTA_SBP_full_ut_gid_encyption_wrong_key.mcfopota", (kal_char *)(tlvota_file->buff), MCF_MAX_TLVOTA_FILE_SIZE);
12254 if (ret == KAL_FALSE) {
12255 mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_TLVOTA_SBP_full_ut_gid_encyption_wrong_key.mcfopota");
12256 return KAL_FALSE;
12257 }
12258
12259 MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
12260 } else {
12261 mcf_ut_format_err_str("Read TLV-OTA FAIL!! Fail to take write lock! \r\n");
12262 return KAL_FALSE;
12263 }
12264
12265 // Check TLV-OTA need update
12266 ret = mcf_check_ota_need_update(param_ptr.ps_id, sbp_tag, iccid_tag);
12267 if (ret != KAL_TRUE) {
12268 mcf_ut_format_err_str("mcf_check_ota_need_update FAIL! ret(%d) \r\n", ret);
12269 return KAL_FALSE;
12270 }
12271
12272 /* Use error AES-128 file */
12273
12274 tlvota_file = &(pMcf->tlvota_file[i]);
12275
12276 MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
12277 if (tlvota_file) {
12278 pFile = (mcf_tool_file_info_t *)(tlvota_file->buff);
12279 pItem = (mcf_tool_gid_tlvota_file_item_t *)(tlvota_file->buff + sizeof(mcf_tool_file_info_t));
12280
12281 ret = mcf_ut_open_test_data("MCF_TLVOTA_SBP_full_ut_gid_encyption_wrong_key.mcfopota", (kal_char *)(tlvota_file->buff), MCF_MAX_TLVOTA_FILE_SIZE);
12282 if (ret == KAL_FALSE) {
12283 mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_TLVOTA_SBP_full_ut_gid_encyption_wrong_key.mcfopota");
12284 return KAL_FALSE;
12285 }
12286
12287 MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
12288 } else {
12289 mcf_ut_format_err_str("Read TLV-OTA FAIL!! Fail to take write lock! \r\n");
12290 return KAL_FALSE;
12291 }
12292
12293 //DSBP flow
12294 ret = mcf_auto_select_tlvota_file(&param_ptr);
12295 if (ret != KAL_FALSE) {
12296 mcf_ut_format_err_str("mcf_auto_select_tlvota_file FAIL! ret(%d) \r\n", ret);
12297 return KAL_FALSE;
12298 }
12299 mcf_set_config_after_dsbp(l4c_gemini_get_switched_sim_id(param_ptr.ps_id));
12300 mcf_ret = mcf_get_tlvota_file_result(param_ptr.ps_id);
12301
12302 if (mcf_ret != MCF_OTA_R_CHECKSUM_ERROR){
12303 mcf_ut_format_err_str("mcf_get_tlvota_file_result FAIL! ret(%d) \r\n", mcf_ret);
12304 return KAL_FALSE;
12305 }
12306 }
12307
12308 /*
12309 *
12310 * False positive test - digest FAIL - mcf_check_ota_need_update
12311 *
12312 */
12313
12314 for(i = 0; i < MAX_SIM_NUM; i++){
12315 // fill in SBP TAG
12316 kal_mem_set(&sbp_tag, 0, sizeof(mcf_tlvota_sbp_tag_t));
12317 sbp_tag.sbp_id = SBP_TAG_SBPID;
12318 strncpy(sbp_tag.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
12319 strncpy(sbp_tag.mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
12320
12321 kal_mem_set(&iccid_tag, 0, sizeof(kal_char));
12322 strcpy(iccid_tag, SBP_PARTIAL_TAG);
12323
12324 param_ptr.sbp_id = SBP_TAG_SBPID;
12325 param_ptr.ps_id = l4c_gemini_get_switched_sim_id(i);
12326 kal_mem_cpy(param_ptr.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
12327 kal_mem_cpy(param_ptr.mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
12328 kal_mem_set(param_ptr.iccid, 0, 21);
12329
12330 /* Use error RSA2048 file */
12331
12332 tlvota_file = &(pMcf->tlvota_file[i]);
12333
12334 MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
12335 if (tlvota_file) {
12336 pFile = (mcf_tool_file_info_t *)(tlvota_file->buff);
12337 pItem = (mcf_tool_gid_tlvota_file_item_t *)(tlvota_file->buff + sizeof(mcf_tool_file_info_t));
12338
12339 ret = mcf_ut_open_test_data("MCF_TLVOTA_SBP_full_ut_gid_wrong_RSA2048.mcfopota", (kal_char *)(tlvota_file->buff), MCF_MAX_TLVOTA_FILE_SIZE);
12340 if (ret == KAL_FALSE) {
12341 mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_TLVOTA_SBP_full_ut_gid_wrong_RSA2048.mcfopota");
12342 return KAL_FALSE;
12343 }
12344
12345 MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
12346 } else {
12347 mcf_ut_format_err_str("Read TLV-OTA FAIL!! Fail to take write lock! \r\n");
12348 return KAL_FALSE;
12349 }
12350
12351 // Check TLV-OTA need update
12352 ret = mcf_check_ota_need_update(param_ptr.ps_id, sbp_tag, iccid_tag);
12353 if (ret != KAL_TRUE) {
12354 mcf_ut_format_err_str("mcf_check_ota_need_update FAIL! ret(%d) \r\n", ret);
12355 return KAL_FALSE;
12356 }
12357
12358 /* Use error RSA2048 file */
12359
12360 tlvota_file = &(pMcf->tlvota_file[i]);
12361
12362 MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
12363 if (tlvota_file) {
12364 pFile = (mcf_tool_file_info_t *)(tlvota_file->buff);
12365 pItem = (mcf_tool_gid_tlvota_file_item_t *)(tlvota_file->buff + sizeof(mcf_tool_file_info_t));
12366
12367 ret = mcf_ut_open_test_data("MCF_TLVOTA_SBP_full_ut_gid_wrong_RSA2048.mcfopota", (kal_char *)(tlvota_file->buff), MCF_MAX_TLVOTA_FILE_SIZE);
12368 if (ret == KAL_FALSE) {
12369 mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_TLVOTA_SBP_full_ut_gid_wrong_RSA2048.mcfopota");
12370 return KAL_FALSE;
12371 }
12372
12373 MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
12374 } else {
12375 mcf_ut_format_err_str("Read TLV-OTA FAIL!! Fail to take write lock! \r\n");
12376 return KAL_FALSE;
12377 }
12378
12379 //DSBP flow
12380 ret = mcf_auto_select_tlvota_file(&param_ptr);
12381 if (ret != KAL_FALSE) {
12382 mcf_ut_format_err_str("mcf_auto_select_tlvota_file FAIL! ret(%d) \r\n", ret);
12383 return KAL_FALSE;
12384 }
12385 mcf_set_config_after_dsbp(l4c_gemini_get_switched_sim_id(param_ptr.ps_id));
12386 mcf_ret = mcf_get_tlvota_file_result(param_ptr.ps_id);
12387
12388 if (mcf_ret != MCF_OTA_R_DIGEST_FAIL){
12389 mcf_ut_format_err_str("mcf_get_tlvota_file_result FAIL! ret(%d) \r\n", mcf_ret);
12390 return KAL_FALSE;
12391 }
12392 }
12393
12394 MCF_UT_PASS();
12395 return KAL_TRUE;
12396
12397}
12398#endif
12399
12400#if defined(__MCF_UT_FRAMEWORK_SUPPORT__)
12401extern kal_bool mcf_utfwk_sample_code_start_ut();
12402kal_bool mcf_utfwk_sample_code_ut(void *p_param, kal_char *p_ret_err_str, kal_uint32 *p_ret_err_str_sz)
12403{
12404 kal_bool ret = KAL_TRUE;
12405 ret = mcf_utfwk_sample_code_start_ut();
12406 if (ret != KAL_TRUE) {
12407 mcf_ut_format_err_str("mcf utfwk sample code failed \r\n");
12408 return KAL_FALSE;
12409 }
12410 MCF_UT_PASS();
12411 return KAL_TRUE;
12412}
12413
12414kal_bool mcf_utfwk_ut_test_flow (void *p_param, kal_char *p_ret_err_str, kal_uint32 *p_ret_err_str_sz)
12415{
12416 kal_bool ret = KAL_TRUE;
12417 static mcf_utfwk_ota_input_struct ota_input;
12418 kal_char ota_data_path[512];
12419 kal_char *pos;
12420 kal_uint8 *dump_buffer;
12421 nvram_errno_enum nvram_api_ret;
12422 nvram_ltable_entry_struct lid_info = {0};
12423 static kal_uint32 value;
12424 kal_uint64 sh_value;
12425 kal_uint8 oring_value[20];
12426 kal_uint8 hex_value[20];
12427 kal_uint32 sim_id = 0;
12428 static mcf_utfwk_config_variable_struct var;
12429 static mcf_utfwk_config_variable_struct var_arr[5];
12430 static kal_uint32 value1;
12431 static kal_uint32 bit_value;
12432 nvram_ef_mcf_test_struct test_lid_buffer;
12433
12434
12435 /* Normal Case */
12436 kal_mem_set(&ota_input, 0, sizeof(mcf_utfwk_ota_input_struct));
12437 ota_input.lid[0] = NVRAM_EF_MCF_TEST_OTA_LID;
12438 ota_input.lid_cnt = 1;
12439 ota_input.ota_type = MCF_UTFWK_ATTR_OTA;
12440
12441 getcwd(ota_data_path, sizeof(ota_data_path));
12442 pos = strstr(ota_data_path, "mcu");
12443 kal_sprintf(pos + strlen("mcu"), "\\%s\\%s%c", MCF_UT_DB_FOLDER_PATH, "MCF_OTA_ut_gid_normal.mcfota", '\0');
12444
12445 ota_input.input_op = MCF_UTFWK_OTA_FILE_PATH;
12446 strcpy(ota_input.input_mode.file_path_name, ota_data_path);
12447
12448 ret = mcf_utfwk_initial_env(ota_input);
12449 if (ret == KAL_FALSE){
12450 return ret;
12451 }
12452
12453 mcf_utfwk_execute();
12454
12455 nvram_api_ret = nvram_external_get_lid_info(NVRAM_EF_MCF_TEST_OTA_LID, &lid_info);
12456 if (nvram_api_ret != NVRAM_ERRNO_SUCCESS) {
12457 ret = KAL_FALSE;
12458
12459 return ret;
12460 }
12461
12462 dump_buffer = (kal_uint8 *)get_ctrl_buffer(sizeof(nvram_ef_mcf_test_struct));
12463 kal_mem_set(dump_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
12464
12465 if(mcf_utfwk_dump_result(NVRAM_EF_MCF_TEST_OTA_LID, 1, MCF_UTFWK_DUMP_LID, dump_buffer, lid_info.size, 0, "") != KAL_TRUE){
12466 ret = KAL_FALSE;
12467 return KAL_FALSE;
12468 }
12469
12470
12471 if ( kal_mem_cmp(dump_buffer, &mcf_ut_test_lid_value_pattern, sizeof(nvram_ef_mcf_test_struct)) != 0 ) {
12472 ret = KAL_FALSE;
12473 return KAL_FALSE;
12474 }
12475
12476 free_ctrl_buffer_set_null(dump_buffer);
12477
12478 mcf_utfwk_reset();
12479
12480 /* OTA for Query Case */
12481 kal_mem_set(&ota_input, 0, sizeof(mcf_utfwk_ota_input_struct));
12482
12483 ota_input.lid[0] = NVRAM_EF_MCF_TEST_OTA_QUERY_LID;
12484 ota_input.lid_cnt = 1;
12485 ota_input.ota_type = MCF_UTFWK_ATTR_OTA;
12486
12487 getcwd(ota_data_path, sizeof(ota_data_path));
12488 pos = strstr(ota_data_path, "mcu");
12489 kal_sprintf(pos + strlen("mcu"), "\\%s\\%s%c", MCF_UT_DB_FOLDER_PATH, "MCF_OTA_QUERY_ut_gid_normal.mcfota", '\0');
12490
12491 ota_input.input_op = MCF_UTFWK_OTA_FILE_PATH;
12492 strcpy(ota_input.input_mode.file_path_name, ota_data_path);
12493
12494 ret = mcf_utfwk_initial_env(ota_input);
12495 if (ret == KAL_FALSE){
12496 return ret;
12497 }
12498
12499 mcf_utfwk_execute();
12500
12501 nvram_api_ret = nvram_external_get_lid_info(NVRAM_EF_MCF_TEST_OTA_QUERY_LID, &lid_info);
12502 if (nvram_api_ret != NVRAM_ERRNO_SUCCESS) {
12503
12504 ret = KAL_FALSE;
12505 return ret;
12506 }
12507
12508 kal_mem_set(&test_lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
12509
12510 if((lid_info.attr & NVRAM_ATTR_MCF_OTA_FOR_QUERY) != 0) {
12511 if(mcf_read_ota_buffer(NVRAM_EF_MCF_TEST_OTA_QUERY_LID, 1, (kal_uint8 *)&test_lid_buffer, sizeof(nvram_ef_mcf_test_struct)) != MCF_OTA_R_SUCCESS){
12512 ret = KAL_FALSE;
12513 return ret;
12514 }
12515 }else {
12516 ret = KAL_FALSE;
12517 return ret;
12518 }
12519
12520 if ( kal_mem_cmp(&test_lid_buffer, &mcf_ut_test_lid_value_pattern, sizeof(nvram_ef_mcf_test_struct)) != 0 ) {
12521 ret = KAL_FALSE;
12522 return ret;
12523 }
12524
12525 dump_buffer = (kal_uint8 *)get_ctrl_buffer(sizeof(nvram_ef_mcf_test_struct));
12526 kal_mem_set(dump_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
12527
12528 if(mcf_utfwk_dump_result(NVRAM_EF_MCF_TEST_OTA_QUERY_LID, 1, MCF_UTFWK_DUMP_LID, dump_buffer, lid_info.size, 0, "") != KAL_TRUE){
12529 ret = KAL_FALSE;
12530 return KAL_FALSE;
12531 }
12532
12533 if ( kal_mem_cmp(dump_buffer, &mcf_ut_test_lid_value_pattern, sizeof(nvram_ef_mcf_test_struct)) != 0 ) {
12534 ret = KAL_FALSE;
12535
12536 return KAL_FALSE;
12537 }
12538
12539 free_ctrl_buffer_set_null(dump_buffer);
12540
12541 mcf_utfwk_reset();
12542
12543
12544 /* Generate OTA Case */
12545
12546 kal_mem_set(&ota_input, 0, sizeof(mcf_utfwk_ota_input_struct));
12547 kal_mem_set(&var, 0, sizeof(mcf_utfwk_config_variable_struct));
12548
12549 ota_input.lid[0] = NVRAM_EF_MCF_TEST_OTA_LID;
12550 ota_input.lid_cnt = 1;
12551 ota_input.ota_type = MCF_UTFWK_ATTR_OTA;
12552 ota_input.input_op = MCF_UTFWK_OTA_VARIABLE_CONFIG;
12553
12554 //VAL_STRUCT_3[0].ARRAY_D[4][3][2]
12555 var.gid = MCF_TEST_OTA_LID_BASE_GID+106;
12556 strcpy(var.array_index, "0$4$3$2$");
12557 value = 12;
12558 var.value = &value;
12559 var.value_len = 1;
12560 var.rec_id = 1;
12561 ota_input.input_mode.var_info.var = &var;
12562 ota_input.input_mode.var_info.var_cnt = 1;
12563
12564 ret = mcf_utfwk_initial_env(ota_input);
12565 if (ret == KAL_FALSE){
12566 return ret;
12567 }
12568
12569 mcf_utfwk_execute();
12570
12571 nvram_api_ret = nvram_external_get_lid_info(NVRAM_EF_MCF_TEST_OTA_LID, &lid_info);
12572 if (nvram_api_ret != NVRAM_ERRNO_SUCCESS) {
12573
12574 ret = KAL_FALSE;
12575 return ret;
12576 }
12577
12578 dump_buffer = (kal_uint8 *)get_ctrl_buffer(sizeof(nvram_ef_mcf_test_struct));
12579 kal_mem_set(dump_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
12580
12581 if(mcf_utfwk_dump_result(NVRAM_EF_MCF_TEST_OTA_LID, 1, MCF_UTFWK_DUMP_ONE_VARIABLE, dump_buffer, 1, var.gid, var.array_index) != KAL_TRUE){
12582 ret = KAL_FALSE;
12583 return KAL_FALSE;
12584 }
12585
12586 mcf_bytes_to_hex(&value, 1, KAL_FALSE, &oring_value);
12587 mcf_bytes_to_hex(dump_buffer, 1, KAL_FALSE, &hex_value);
12588
12589 if (strncmp(hex_value, oring_value, 2) != 0 ) {
12590 ret = KAL_FALSE;
12591 return KAL_FALSE;
12592 }
12593
12594 free_ctrl_buffer_set_null(dump_buffer);
12595
12596 mcf_utfwk_reset();
12597
12598 /* Generate OTA Case - 2 variables */
12599
12600 kal_mem_set(&ota_input, 0, sizeof(mcf_utfwk_ota_input_struct));
12601 kal_mem_set(&var_arr, 0, sizeof(mcf_utfwk_config_variable_struct)*5);
12602
12603 ota_input.lid[0] = NVRAM_EF_MCF_TEST_OTA_LID;
12604 ota_input.lid_cnt = 1;
12605 ota_input.ota_type = MCF_UTFWK_ATTR_OTA;
12606 ota_input.input_op = MCF_UTFWK_OTA_VARIABLE_CONFIG;
12607
12608 //VAL_STRUCT_3[0].ARRAY_D[4][3][2]
12609 var_arr[0].gid = MCF_TEST_OTA_LID_BASE_GID+106;
12610 strcpy(var_arr[0].array_index, "0$4$3$2$");
12611 value = 12;
12612 var_arr[0].value = &value;
12613 var_arr[0].value_len = 1;
12614 var_arr[0].rec_id = 1;
12615
12616 //val_byte_11
12617 var_arr[1].gid = MCF_TEST_OTA_LID_BASE_GID+44;
12618 value1 = 32;
12619 var_arr[1].value = &value1;
12620 var_arr[1].value_len = 1;
12621 var_arr[1].rec_id = 1;
12622 ota_input.input_mode.var_info.var = var_arr;
12623 ota_input.input_mode.var_info.var_cnt = 2;
12624
12625
12626 ret = mcf_utfwk_initial_env(ota_input);
12627 if (ret == KAL_FALSE){
12628 return ret;
12629 }
12630
12631 mcf_utfwk_execute();
12632
12633 nvram_api_ret = nvram_external_get_lid_info(NVRAM_EF_MCF_TEST_OTA_LID, &lid_info);
12634 if (nvram_api_ret != NVRAM_ERRNO_SUCCESS) {
12635
12636 ret = KAL_FALSE;
12637 return ret;
12638 }
12639
12640 dump_buffer = (kal_uint8 *)get_ctrl_buffer(sizeof(nvram_ef_mcf_test_struct));
12641 kal_mem_set(dump_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
12642
12643 if(mcf_utfwk_dump_result(NVRAM_EF_MCF_TEST_OTA_LID, 1, MCF_UTFWK_DUMP_ONE_VARIABLE, dump_buffer, 1, var_arr[0].gid, var_arr[0].array_index) != KAL_TRUE){
12644 ret = KAL_FALSE;
12645 return KAL_FALSE;
12646 }
12647
12648 mcf_bytes_to_hex(&value, 1, KAL_FALSE, &oring_value);
12649 mcf_bytes_to_hex(dump_buffer, 1, KAL_FALSE, &hex_value);
12650
12651 if (strncmp(hex_value, oring_value, 2) != 0 ) {
12652 ret = KAL_FALSE;
12653 return KAL_FALSE;
12654 }
12655
12656 kal_mem_set(dump_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
12657
12658 if(mcf_utfwk_dump_result(NVRAM_EF_MCF_TEST_OTA_LID, 1, MCF_UTFWK_DUMP_ONE_VARIABLE, dump_buffer, 1, var_arr[1].gid, var_arr[1].array_index) != KAL_TRUE){
12659 ret = KAL_FALSE;
12660 return KAL_FALSE;
12661 }
12662
12663 mcf_bytes_to_hex(&value1, 1, KAL_FALSE, &oring_value);
12664 mcf_bytes_to_hex(dump_buffer, 1, KAL_FALSE, &hex_value);
12665
12666 if (strncmp(hex_value, oring_value, 2) != 0 ) {
12667 ret = KAL_FALSE;
12668 return KAL_FALSE;
12669 }
12670
12671 free_ctrl_buffer_set_null(dump_buffer);
12672
12673 mcf_utfwk_reset();
12674
12675 /* OP OTA Case */
12676
12677 kal_mem_set(&ota_input, 0, sizeof(mcf_utfwk_ota_input_struct));
12678 kal_mem_set(&mcf_utfwk_lid_buffer,0, sizeof(nvram_ef_mcf_test_struct));
12679
12680 ota_input.lid[0] = NVRAM_EF_MCF_TEST_OTA_LID;
12681 ota_input.lid_cnt = 1;
12682 ota_input.ota_type = MCF_UTFWK_ATTR_OTA_BY_OP;
12683 ota_input.sim_id = 0;
12684 ota_input.sbp_id = SBP_TAG_SBPID;
12685 strncpy(ota_input.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
12686 strncpy(ota_input.mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
12687
12688 getcwd(ota_data_path, sizeof(ota_data_path));
12689 pos = strstr(ota_data_path, "mcu");
12690 kal_sprintf(pos + strlen("mcu"), "\\%s\\%s%c", MCF_UT_DB_FOLDER_PATH, "MCF_TLVOTA_SBP_full_ut_gid_normal.mcfopota", '\0');
12691
12692 ota_input.input_op = MCF_UTFWK_OTA_FILE_PATH;
12693 strcpy(ota_input.input_mode.file_path_name, ota_data_path);
12694
12695 ret = mcf_utfwk_initial_env(ota_input);
12696 if (ret == KAL_FALSE){
12697 return ret;
12698 }
12699
12700 mcf_utfwk_initial_dsbp_callback(mcf_utfwk_dsbp_callback);
12701
12702 mcf_utfwk_execute();
12703
12704 if ( kal_mem_cmp(&mcf_utfwk_lid_buffer, &mcf_ut_test_lid_value_pattern, sizeof(nvram_ef_mcf_test_struct)) != 0 ) {
12705 ret = KAL_FALSE;
12706 return ret;
12707 }
12708
12709 nvram_api_ret = nvram_external_get_lid_info(NVRAM_EF_MCF_TEST_OTA_LID, &lid_info);
12710 if (nvram_api_ret != NVRAM_ERRNO_SUCCESS) {
12711
12712 ret = KAL_FALSE;
12713 return ret;
12714 }
12715
12716 dump_buffer = (kal_uint8 *)get_ctrl_buffer(sizeof(nvram_ef_mcf_test_struct));
12717 kal_mem_set(dump_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
12718
12719 if(mcf_utfwk_dump_result(NVRAM_EF_MCF_TEST_OTA_LID, 1, MCF_UTFWK_DUMP_LID, dump_buffer, lid_info.size, 0, "") != KAL_TRUE){
12720 ret = KAL_FALSE;
12721 return KAL_FALSE;
12722 }
12723
12724
12725 if ( kal_mem_cmp(dump_buffer, &mcf_ut_test_lid_value_pattern, sizeof(nvram_ef_mcf_test_struct)) != 0 ) {
12726 ret = KAL_FALSE;
12727 return KAL_FALSE;
12728 }
12729
12730 free_ctrl_buffer_set_null(dump_buffer);
12731
12732 mcf_utfwk_reset();
12733
12734 /* OP OTA Generate Case */
12735
12736 kal_mem_set(&ota_input, 0, sizeof(mcf_utfwk_ota_input_struct));
12737 kal_mem_set(&var_arr, 0, sizeof(mcf_utfwk_config_variable_struct)*5);
12738 kal_mem_set(&mcf_utfwk_lid_buffer,0, sizeof(nvram_ef_mcf_test_struct));
12739
12740 ota_input.lid[0] = NVRAM_EF_MCF_TEST_OTA_LID;
12741 ota_input.lid_cnt = 1;
12742 ota_input.ota_type = MCF_UTFWK_ATTR_OTA_BY_OP;
12743 ota_input.sim_id = 0;
12744 ota_input.sbp_id = SBP_TAG_SBPID;
12745 strncpy(ota_input.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
12746 strncpy(ota_input.mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
12747
12748
12749 ota_input.input_mode.var_info.tag_type = 1;
12750 ota_input.input_op = MCF_UTFWK_OTA_VARIABLE_CONFIG;
12751 //VAL_BYTE_11
12752 var_arr[0].gid = MCF_TEST_OTA_LID_BASE_GID+44;
12753 value = 32;
12754 var_arr[0].value = &value;
12755 var_arr[0].value_len = 1;
12756 var_arr[0].rec_id = 1;
12757 //VAL_STRUCT_3[0].ARRAY_D[4][3][2]
12758 var_arr[1].gid = MCF_TEST_OTA_LID_BASE_GID+106;
12759 strcpy(var_arr[1].array_index, "0$4$3$2$");
12760 value1 = 64;
12761 var_arr[1].value = &value1;
12762 var_arr[1].value_len = 1;
12763 var_arr[1].rec_id = 1;
12764 //VAL_SHORT_11
12765 var_arr[2].gid = MCF_TEST_OTA_LID_BASE_GID+56;
12766 sh_value = 5566;
12767 var_arr[2].value = &sh_value;
12768 var_arr[2].value_len = 2;
12769 var_arr[2].rec_id = 1;
12770 //VAL_BIT_BYTE_11.B3
12771 var_arr[3].gid = MCF_TEST_OTA_LID_BASE_GID+21;
12772 bit_value = 1;
12773 var_arr[3].value = &bit_value;
12774 var_arr[3].value_len = 1;
12775 var_arr[3].rec_id = 1;
12776
12777
12778 ota_input.input_mode.var_info.var = var_arr;
12779 ota_input.input_mode.var_info.var_cnt = 4;
12780
12781 ret = mcf_utfwk_initial_env(ota_input);
12782 if (ret == KAL_FALSE){
12783 return ret;
12784 }
12785
12786 mcf_utfwk_initial_dsbp_callback(mcf_utfwk_dsbp_callback);
12787
12788 mcf_utfwk_execute();
12789
12790 nvram_api_ret = nvram_external_get_lid_info(NVRAM_EF_MCF_TEST_OTA_LID, &lid_info);
12791 if (nvram_api_ret != NVRAM_ERRNO_SUCCESS) {
12792
12793 ret = KAL_FALSE;
12794 return ret;
12795 }
12796
12797 dump_buffer = (kal_uint8 *)get_ctrl_buffer(sizeof(nvram_ef_mcf_test_struct));
12798 kal_mem_set(dump_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
12799
12800 if(mcf_utfwk_dump_result(NVRAM_EF_MCF_TEST_OTA_LID, 1, MCF_UTFWK_DUMP_ONE_VARIABLE, dump_buffer, 1, var_arr[0].gid, var_arr[0].array_index) != KAL_TRUE){
12801 ret = KAL_FALSE;
12802 return KAL_FALSE;
12803 }
12804
12805 mcf_bytes_to_hex(&value, 1, KAL_FALSE, &oring_value);
12806 mcf_bytes_to_hex(dump_buffer, 1, KAL_FALSE, &hex_value);
12807
12808 if (strncmp(hex_value, oring_value, 2) != 0 ) {
12809 ret = KAL_FALSE;
12810 return KAL_FALSE;
12811 }
12812
12813 kal_mem_set(dump_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
12814
12815 if(mcf_utfwk_dump_result(NVRAM_EF_MCF_TEST_OTA_LID, 1, MCF_UTFWK_DUMP_ONE_VARIABLE, dump_buffer, 1, var_arr[1].gid, var_arr[1].array_index) != KAL_TRUE){
12816 ret = KAL_FALSE;
12817 return KAL_FALSE;
12818 }
12819
12820 mcf_bytes_to_hex(&value1, 1, KAL_FALSE, &oring_value);
12821 mcf_bytes_to_hex(dump_buffer, 1, KAL_FALSE, &hex_value);
12822
12823 if (strncmp(hex_value, oring_value, 2) != 0 ) {
12824 ret = KAL_FALSE;
12825 return KAL_FALSE;
12826 }
12827
12828 kal_mem_set(dump_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
12829
12830 if(mcf_utfwk_dump_result(NVRAM_EF_MCF_TEST_OTA_LID, 1, MCF_UTFWK_DUMP_ONE_VARIABLE, dump_buffer, 2, var_arr[2].gid, var_arr[2].array_index) != KAL_TRUE){
12831 ret = KAL_FALSE;
12832 return KAL_FALSE;
12833 }
12834
12835 mcf_bytes_to_hex(&sh_value, 2, KAL_FALSE, &oring_value);
12836 mcf_bytes_to_hex(dump_buffer, 2, KAL_FALSE, &hex_value);
12837
12838 if (strncmp(hex_value, oring_value, 4) != 0 ) {
12839 ret = KAL_FALSE;
12840 return KAL_FALSE;
12841 }
12842
12843 kal_mem_set(dump_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
12844
12845 if(mcf_utfwk_dump_result(NVRAM_EF_MCF_TEST_OTA_LID, 1, MCF_UTFWK_DUMP_ONE_VARIABLE, dump_buffer, 1, var_arr[3].gid, var_arr[3].array_index) != KAL_TRUE){
12846 ret = KAL_FALSE;
12847 return KAL_FALSE;
12848 }
12849
12850 mcf_bytes_to_hex(&bit_value, 1, KAL_FALSE, &oring_value);
12851 mcf_bytes_to_hex(dump_buffer, 1, KAL_FALSE, &hex_value);
12852
12853 if (strncmp(hex_value, oring_value, 2) != 0 ) {
12854 ret = KAL_FALSE;
12855 return KAL_FALSE;
12856 }
12857
12858 free_ctrl_buffer_set_null(dump_buffer);
12859
12860 mcf_utfwk_reset();
12861
12862
12863 MCF_UT_PASS();
12864 return KAL_TRUE;
12865}
12866#endif
12867#if defined(__MCF_COMBINE_FILE_SUPPORT__)
12868kal_uint8 test_file1[MCF_MAX_OTA_FILE_SIZE];
12869kal_uint8 test_file2[MCF_MAX_OTA_FILE_SIZE];
12870kal_uint8 output_file[MCF_MAX_OTA_FILE_SIZE];
12871kal_bool mcf_merge_ota_file_ut(void *p_param, kal_char *p_ret_err_str, kal_uint32 *p_ret_err_str_sz)
12872{
12873 kal_char ota_data_path[512];
12874 kal_bool ret = KAL_FALSE;
12875 FILE *file1, *file2;
12876 kal_char *pos;
12877 kal_bool mcf_ret;
12878
12879 // ========== BASIC TEST ========== //
12880 getcwd(ota_data_path, sizeof(ota_data_path));
12881 pos = strstr(ota_data_path, "mcu");
12882 kal_sprintf(pos + strlen("mcu"), "\\%s\\%s", MCF_UT_DB_FOLDER_PATH, "OTA_2_LIDs_ut_gid_normal.mcfota");
12883 file1 = fopen(ota_data_path, "rb");
12884
12885 getcwd(ota_data_path, sizeof(ota_data_path));
12886 pos = strstr(ota_data_path, "mcu");
12887 kal_sprintf(pos + strlen("mcu"), "\\%s\\%s", MCF_UT_DB_FOLDER_PATH, "OTA_3_LIDs_ut_gid_normal.mcfota");
12888 file2 = fopen(ota_data_path, "rb");
12889
12890 if(file1 != NULL && file2 != NULL)
12891 {
12892 kal_mem_set(test_file1, 0, sizeof(test_file1));
12893 fread(test_file1, sizeof(test_file1), 1, file1);
12894 fclose(file1);
12895 kal_mem_set(test_file2, 0, sizeof(test_file2));
12896 fread(test_file2, sizeof(test_file2), 1, file2);
12897 fclose(file2);
12898 } else {
12899 mcf_ut_format_err_str("Merge OTA open file failed!!\r\n");
12900 return KAL_FALSE;
12901 }
12902 ret = mcf_merge_ota_buffer(test_file1, test_file2, output_file, sizeof(output_file));
12903 if (ret == KAL_FALSE){
12904 mcf_ut_format_err_str("Merge OTA buffer failed!!\r\n");
12905 return KAL_FALSE;
12906 }
12907
12908 // checksum comparasion
12909 {
12910 mcf_tool_file_info_t *output_header = (mcf_tool_file_info_t *)output_file;
12911 if (mcf_check_check_sum((kal_uint32 *)output_file, output_header->file_size) != 0) {
12912 mcf_ut_format_err_str("Merge OTA buffer checksim failed!!\r\n");
12913 return KAL_FALSE;
12914 }
12915 }
12916
12917 // ========== VALUE TEST : no encypted file========== //
12918 {
12919 mcf_t *pMcf = mcf_get_instance();
12920 mcf_ota_file_t *ota_file = &(pMcf->ota_file);
12921 mcf_tool_file_info_t *pFile = (mcf_tool_file_info_t *)(ota_file->buff);
12922 nvram_ef_mcf_test_struct test_lid_buffer;
12923 mcf_tool_file_info_t *file_header;
12924
12925 getcwd(ota_data_path, sizeof(ota_data_path));
12926 pos = strstr(ota_data_path, "mcu");
12927 kal_sprintf(pos + strlen("mcu"), "\\%s\\%s", MCF_UT_DB_FOLDER_PATH, "MCF_OTA_ut_gid_normal.mcfota");
12928 file1 = fopen(ota_data_path, "rb");
12929
12930 getcwd(ota_data_path, sizeof(ota_data_path));
12931 pos = strstr(ota_data_path, "mcu");
12932 kal_sprintf(pos + strlen("mcu"), "\\%s\\%s", MCF_UT_DB_FOLDER_PATH, "MCF_OTA_QUERY_ut_gid_normal.mcfota");
12933 file2 = fopen(ota_data_path, "rb");
12934
12935 if (file1 != NULL && file2 != NULL)
12936 {
12937 kal_mem_set(test_file1, 0, sizeof(test_file1));
12938 fread(test_file1, sizeof(test_file1), 1, file1);
12939 fclose(file1);
12940 kal_mem_set(test_file2, 0, sizeof(test_file2));
12941 fread(test_file2, sizeof(test_file2), 1, file2);
12942 fclose(file2);
12943 }
12944 else {
12945 mcf_ut_format_err_str("Merge OTA open file failed!!\r\n");
12946 return KAL_FALSE;
12947 }
12948 file_header = (mcf_tool_file_info_t *)test_file2;
12949 file_header->operation_mask |= MCF_FILE_OP_AES_128;
12950 ret = mcf_merge_ota_buffer(test_file1, test_file2, output_file, sizeof(output_file));
12951 if (ret == KAL_FALSE) {
12952 mcf_ut_format_err_str("Merge OTA buffer failed!!\r\n");
12953 return KAL_FALSE;
12954 }
12955
12956 getcwd(ota_data_path, sizeof(ota_data_path));
12957 pos = strstr(ota_data_path, "mcu");
12958 kal_sprintf(pos + strlen("mcu"), "\\%s\\%s", MCF_UT_DB_FOLDER_PATH, "MCF_OTA_GID_MERGE.mcfota");
12959 file1 = fopen(ota_data_path, "wb");
12960
12961 if (file1 != NULL)
12962 {
12963 mcf_tool_file_info_t *output_header = (mcf_tool_file_info_t *)output_file;
12964 fwrite(output_file, 1, output_header->file_size, file1);
12965 fclose(file1);
12966 }
12967 else {
12968 return KAL_FALSE;
12969 }
12970
12971 if (ota_file) {
12972 ret = mcf_ut_open_test_data("MCF_OTA_GID_MERGE.mcfota", (kal_char *)(ota_file->buff), MCF_MAX_OTA_FILE_SIZE);
12973 if (ret == KAL_FALSE) {
12974 mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_OTA_GID_MERGE.mcfota");
12975 return KAL_FALSE;
12976 }
12977 }
12978 else {
12979 mcf_ut_format_err_str("Do full OTA FAIL!! Fail to take write lock! \r\n");
12980 return KAL_FALSE;
12981 }
12982
12983 mcf_ret = mcf_do_ota_full();
12984 if (mcf_ret != MCF_OTA_R_SUCCESS) {
12985 mcf_ut_format_err_str("Do full OTA FAIL!! ret(%d) \r\n", mcf_ret);
12986 return KAL_FALSE;
12987 }
12988
12989 ret = mcf_check_test_lid_value(NULL);
12990 if (ret == KAL_FALSE) {
12991 mcf_ut_format_err_str("Do full OTA positive test FAIL!!\r\n");
12992 return KAL_FALSE;
12993 }
12994
12995 // Record index 1
12996 kal_mem_set(&test_lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
12997
12998 mcf_ret = mcf_read_ota_buffer(NVRAM_EF_MCF_TEST_OTA_QUERY_LID, 1, (kal_uint8 *)&test_lid_buffer, sizeof(nvram_ef_mcf_test_struct));
12999 if (mcf_ret != MCF_OTA_R_SUCCESS) {
13000 mcf_ut_format_err_str("Read OTA by LID FAIL!! ret(%d) \r\n", mcf_ret);
13001 return KAL_FALSE;
13002 }
13003
13004 ret = mcf_check_test_lid_value((kal_uint8 *)&test_lid_buffer);
13005 if (ret == KAL_FALSE) {
13006 mcf_ut_format_err_str("Read OTA by LID positive test FAIL!!\r\n");
13007 return KAL_FALSE;
13008 }
13009
13010 // Record index 2
13011 kal_mem_set(&test_lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
13012
13013 mcf_ret = mcf_read_ota_buffer(NVRAM_EF_MCF_TEST_OTA_QUERY_LID, 2, (kal_uint8 *)&test_lid_buffer, sizeof(nvram_ef_mcf_test_struct));
13014 if (mcf_ret != MCF_OTA_R_SUCCESS) {
13015 mcf_ut_format_err_str("Read OTA by LID FAIL!! ret(%d) \r\n", mcf_ret);
13016 return KAL_FALSE;
13017 }
13018
13019 ret = mcf_check_test_lid_value((kal_uint8 *)&test_lid_buffer);
13020 if (ret == KAL_FALSE) {
13021 mcf_ut_format_err_str("Read OTA by LID positive test FAIL!!\r\n");
13022 return KAL_FALSE;
13023 }
13024 }
13025 // ========== VALUE TEST : encypted file========== //
13026 {
13027 mcf_t *pMcf = mcf_get_instance();
13028 mcf_ota_file_t *ota_file = &(pMcf->ota_file);
13029 mcf_tool_file_info_t *pFile = (mcf_tool_file_info_t *)(ota_file->buff);
13030 nvram_ef_mcf_test_struct test_lid_buffer;
13031 mcf_tool_file_info_t *file_header;
13032 kal_char password[32] = {0};
13033
13034 getcwd(ota_data_path, sizeof(ota_data_path));
13035 pos = strstr(ota_data_path, "mcu");
13036 kal_sprintf(pos + strlen("mcu"), "\\%s\\%s", MCF_UT_DB_FOLDER_PATH, "MCF_OTA_ut_gid_normal_AES256_RSA3072.mcfota");
13037 file1 = fopen(ota_data_path, "rb");
13038
13039 getcwd(ota_data_path, sizeof(ota_data_path));
13040 pos = strstr(ota_data_path, "mcu");
13041 kal_sprintf(pos + strlen("mcu"), "\\%s\\%s", MCF_UT_DB_FOLDER_PATH, "MCF_OTA_QUERY_ut_gid_normal_AES256_RSA3072.mcfota");
13042 file2 = fopen(ota_data_path, "rb");
13043
13044 if (file1 != NULL && file2 != NULL)
13045 {
13046 kal_mem_set(test_file1, 0, sizeof(test_file1));
13047 fread(test_file1, sizeof(test_file1), 1, file1);
13048 fclose(file1);
13049 kal_mem_set(test_file2, 0, sizeof(test_file2));
13050 fread(test_file2, sizeof(test_file2), 1, file2);
13051 fclose(file2);
13052 }
13053 else {
13054 mcf_ut_format_err_str("Merge OTA open file failed!!\r\n");
13055 return KAL_FALSE;
13056 }
13057
13058 // decrypt input file
13059 file_header = (mcf_tool_file_info_t *)test_file1;
13060 mcf_get_custom_aes_password(password);
13061 if (mcf_decrypt_256bit(password, (kal_char *)file_header + file_header->total_len, (file_header->file_size - file_header->total_len)) != KAL_TRUE)
13062 return KAL_FALSE;
13063
13064 file_header = (mcf_tool_file_info_t *)test_file2;
13065 if (mcf_decrypt_256bit(password, (kal_char *)file_header + file_header->total_len, (file_header->file_size - file_header->total_len)) != KAL_TRUE)
13066 return KAL_FALSE;
13067
13068
13069 ret = mcf_merge_ota_buffer(test_file1, test_file2, output_file, sizeof(output_file));
13070 if (ret == KAL_FALSE) {
13071 mcf_ut_format_err_str("Merge OTA buffer failed!!\r\n");
13072 return KAL_FALSE;
13073 }
13074
13075 getcwd(ota_data_path, sizeof(ota_data_path));
13076 pos = strstr(ota_data_path, "mcu");
13077 kal_sprintf(pos + strlen("mcu"), "\\%s\\%s", MCF_UT_DB_FOLDER_PATH, "MCF_OTA_GID_MERGE_AES256.mcfota");
13078 file1 = fopen(ota_data_path, "wb");
13079
13080 if (file1 != NULL)
13081 {
13082 mcf_tool_file_info_t *output_header = (mcf_tool_file_info_t *)output_file;
13083 fwrite(output_file, 1, output_header->file_size, file1);
13084 fclose(file1);
13085 }
13086 else {
13087 return KAL_FALSE;
13088 }
13089
13090 if (ota_file) {
13091 ret = mcf_ut_open_test_data("MCF_OTA_GID_MERGE_AES256.mcfota", (kal_char *)(ota_file->buff), MCF_MAX_OTA_FILE_SIZE);
13092 if (ret == KAL_FALSE) {
13093 mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_OTA_GID_MERGE_AES256.mcfota");
13094 return KAL_FALSE;
13095 }
13096 }
13097 else {
13098 mcf_ut_format_err_str("Do full OTA FAIL!! Fail to take write lock! \r\n");
13099 return KAL_FALSE;
13100 }
13101
13102 mcf_ret = mcf_do_ota_full();
13103 if (mcf_ret != MCF_OTA_R_SUCCESS) {
13104 mcf_ut_format_err_str("Do full OTA FAIL!! ret(%d) \r\n", mcf_ret);
13105 return KAL_FALSE;
13106 }
13107
13108 ret = mcf_check_test_lid_value(NULL);
13109 if (ret == KAL_FALSE) {
13110 mcf_ut_format_err_str("Do full OTA positive test FAIL!!\r\n");
13111 return KAL_FALSE;
13112 }
13113
13114 // Record index 1
13115 kal_mem_set(&test_lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
13116
13117 mcf_ret = mcf_read_ota_buffer(NVRAM_EF_MCF_TEST_OTA_QUERY_LID, 1, (kal_uint8 *)&test_lid_buffer, sizeof(nvram_ef_mcf_test_struct));
13118 if (mcf_ret != MCF_OTA_R_SUCCESS) {
13119 mcf_ut_format_err_str("Read OTA by LID FAIL!! ret(%d) \r\n", mcf_ret);
13120 return KAL_FALSE;
13121 }
13122
13123 ret = mcf_check_test_lid_value((kal_uint8 *)&test_lid_buffer);
13124 if (ret == KAL_FALSE) {
13125 mcf_ut_format_err_str("Read OTA by LID positive test FAIL!!\r\n");
13126 return KAL_FALSE;
13127 }
13128
13129 // Record index 2
13130 kal_mem_set(&test_lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
13131
13132 mcf_ret = mcf_read_ota_buffer(NVRAM_EF_MCF_TEST_OTA_QUERY_LID, 2, (kal_uint8 *)&test_lid_buffer, sizeof(nvram_ef_mcf_test_struct));
13133 if (mcf_ret != MCF_OTA_R_SUCCESS) {
13134 mcf_ut_format_err_str("Read OTA by LID FAIL!! ret(%d) \r\n", mcf_ret);
13135 return KAL_FALSE;
13136 }
13137
13138 ret = mcf_check_test_lid_value((kal_uint8 *)&test_lid_buffer);
13139 if (ret == KAL_FALSE) {
13140 mcf_ut_format_err_str("Read OTA by LID positive test FAIL!!\r\n");
13141 return KAL_FALSE;
13142 }
13143 }
13144
13145 // ========== BIG FILE TEST ========== //
13146 getcwd(ota_data_path, sizeof(ota_data_path));
13147 pos = strstr(ota_data_path, "mcu");
13148 kal_sprintf(pos + strlen("mcu"), "\\%s\\%s", MCF_UT_DB_FOLDER_PATH, "MCF_OTA_ut_big_size.mcfota");
13149 file1 = fopen(ota_data_path, "rb");
13150
13151 getcwd(ota_data_path, sizeof(ota_data_path));
13152 pos = strstr(ota_data_path, "mcu");
13153 kal_sprintf(pos + strlen("mcu"), "\\%s\\%s", MCF_UT_DB_FOLDER_PATH, "MCF_OTA_ut_big_size.mcfota");
13154 file2 = fopen(ota_data_path, "rb");
13155
13156 if(file1 != NULL && file2 != NULL)
13157 {
13158 kal_mem_set(test_file1, 0, sizeof(test_file1));
13159 fread(test_file1, sizeof(test_file1), 1, file1);
13160 fclose(file1);
13161 kal_mem_set(test_file2, 0, sizeof(test_file2));
13162 fread(test_file2, sizeof(test_file2), 1, file2);
13163 fclose(file2);
13164 } else {
13165 mcf_ut_format_err_str("Merge OTA open file failed!!\r\n");
13166 return KAL_FALSE;
13167 }
13168 ret = mcf_merge_ota_buffer(test_file1, test_file2, output_file, sizeof(output_file));
13169 if (ret == KAL_FALSE){
13170 mcf_ut_format_err_str("Merge OTA buffer failed!!\r\n");
13171 return KAL_FALSE;
13172 }
13173 MCF_UT_PASS();
13174 return KAL_TRUE;
13175}
13176
13177kal_bool mcf_merge_ota_by_op_file_ut(void *p_param, kal_char *p_ret_err_str, kal_uint32 *p_ret_err_str_sz)
13178{
13179 kal_char ota_data_path[512];
13180 kal_bool ret = KAL_FALSE;
13181 FILE *file1, *file2;
13182 kal_char *pos;
13183
13184 getcwd(ota_data_path, sizeof(ota_data_path));
13185 pos = strstr(ota_data_path, "mcu");
13186 kal_sprintf(pos + strlen("mcu"), "\\%s\\%s", MCF_UT_DB_FOLDER_PATH, "MTK_OPOTA_SBPID_1.mcfopota");
13187 file1 = fopen(ota_data_path, "rb");
13188
13189 getcwd(ota_data_path, sizeof(ota_data_path));
13190 pos = strstr(ota_data_path, "mcu");
13191 kal_sprintf(pos + strlen("mcu"), "\\%s\\%s", MCF_UT_DB_FOLDER_PATH, "MTK_OPOTA_SBPID_2.mcfopota");
13192 file2 = fopen(ota_data_path, "rb");
13193
13194 if (file1 != NULL && file2 != NULL)
13195 {
13196 kal_mem_set(test_file1, 0, sizeof(test_file1));
13197 fread(test_file1, sizeof(test_file1), 1, file1);
13198 fclose(file1);
13199 kal_mem_set(test_file2, 0, sizeof(test_file2));
13200 fread(test_file2, sizeof(test_file2), 1, file2);
13201 fclose(file2);
13202 }
13203 else {
13204 mcf_ut_format_err_str("Merge OTA by OP open file failed!!\r\n");
13205 return KAL_FALSE;
13206 }
13207 ret = mcf_merge_ota_buffer(test_file1, test_file2, output_file, sizeof(output_file));
13208 if (ret == KAL_FALSE) {
13209 mcf_ut_format_err_str("Merge OTA by OP buffer failed!!\r\n");
13210 return KAL_FALSE;
13211 }
13212 // checksum comparasion
13213 {
13214 mcf_tool_file_info_t *output_header = (mcf_tool_file_info_t *)output_file;
13215 if (mcf_check_check_sum((kal_uint32 *)output_file, output_header->file_size) != 0) {
13216 mcf_ut_format_err_str("Merge OTA by OP buffer checksim failed!!\r\n");
13217 return KAL_FALSE;
13218 }
13219 }
13220 // ========== VALUE TEST : no encrypted file========== //
13221 {
13222 mcf_t *pMcf = mcf_get_instance();
13223 mcf_tool_file_info_t *pFile;
13224 mcf_tool_gid_tlvota_file_item_t *pItem;
13225 mcf_tlvota_file_t *tlvota_file;
13226 nvram_ef_mcf_tlvota_file_info_struct nv_tlvota_file;
13227 nvram_ef_mcf_test_struct test_lid_buffer;
13228 nvram_ef_mcf_test_struct empty_buffer = { 0 };
13229 mcf_tlvota_sbp_tag_t sbp_tag;
13230 kal_uint8 i;
13231 mcf_ota_result_e mcf_ret;
13232 kal_bool ret;
13233 mcf_tool_file_info_t *file_header;
13234
13235 getcwd(ota_data_path, sizeof(ota_data_path));
13236 pos = strstr(ota_data_path, "mcu");
13237 kal_sprintf(pos + strlen("mcu"), "\\%s\\%s", MCF_UT_DB_FOLDER_PATH, "MCF_TLVOTA_SBP_full_ut_gid_normal.mcfopota");
13238 file1 = fopen(ota_data_path, "rb");
13239
13240 getcwd(ota_data_path, sizeof(ota_data_path));
13241 pos = strstr(ota_data_path, "mcu");
13242 kal_sprintf(pos + strlen("mcu"), "\\%s\\%s", MCF_UT_DB_FOLDER_PATH, "MCF_TLVOTA_SBP_partial_ut_gid_normal.mcfopota");
13243 file2 = fopen(ota_data_path, "rb");
13244
13245 if (file1 != NULL && file2 != NULL)
13246 {
13247 kal_mem_set(test_file1, 0, sizeof(test_file1));
13248 fread(test_file1, sizeof(test_file1), 1, file1);
13249 fclose(file1);
13250 kal_mem_set(test_file2, 0, sizeof(test_file2));
13251 fread(test_file2, sizeof(test_file2), 1, file2);
13252 fclose(file2);
13253 }
13254 else {
13255 mcf_ut_format_err_str("Merge OTA open file failed!!\r\n");
13256 return KAL_FALSE;
13257 }
13258 file_header = (mcf_tool_file_info_t *)test_file2;
13259 //file_header->operation_mask |= MCF_FILE_OP_AES_128;
13260 ret = mcf_merge_ota_buffer(test_file1, test_file2, output_file, sizeof(output_file));
13261 if (ret == KAL_FALSE) {
13262 mcf_ut_format_err_str("Merge OTA buffer failed!!\r\n");
13263 return KAL_FALSE;
13264 }
13265
13266 getcwd(ota_data_path, sizeof(ota_data_path));
13267 pos = strstr(ota_data_path, "mcu");
13268 kal_sprintf(pos + strlen("mcu"), "\\%s\\%s", MCF_UT_DB_FOLDER_PATH, "MCF_OTA_BY_OP_GID_MERGE.mcfota");
13269 file1 = fopen(ota_data_path, "wb");
13270
13271 if (file1 != NULL)
13272 {
13273 mcf_tool_file_info_t *output_header = (mcf_tool_file_info_t *)output_file;
13274 fwrite(output_file, 1, output_header->file_size, file1);
13275 fclose(file1);
13276 }
13277 else {
13278 return KAL_FALSE;
13279 }
13280 /*
13281 * Read TLV-OTA by LID & sbp_tag positive test - partially matched tag
13282 * NVRAM_EF_MCF_TEST_OTA_LID with tag SBP_PARTIAL_TAG (12_NA_NA), but user searches SBP_FULL_TAG (12_33_21)
13283 */
13284 /* Fill TLV-OTA file into buffer */
13285 for (i = 0; i < MAX_SIM_NUM; i++) {
13286 tlvota_file = &(pMcf->tlvota_file[i]);
13287
13288 if (tlvota_file) {
13289 pFile = (mcf_tool_file_info_t *)(tlvota_file->buff);
13290 pItem = (mcf_tool_gid_tlvota_file_item_t *)(tlvota_file->buff + sizeof(mcf_tool_file_info_t));
13291
13292 ret = mcf_ut_open_test_data("MCF_OTA_BY_OP_GID_MERGE.mcfota", (kal_char *)(tlvota_file->buff), MCF_MAX_TLVOTA_FILE_SIZE);
13293 if (ret == KAL_FALSE) {
13294 mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_OTA_BY_OP_GID_MERGE.mcfota");
13295 return KAL_FALSE;
13296 }
13297
13298 }
13299 else {
13300 mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! Fail to take write lock! \r\n");
13301 return KAL_FALSE;
13302 }
13303 }
13304
13305 // NVRAM_EF_MCF_TEST_OTA_LID with SBP_PARTIAL_TAG
13306 kal_mem_set(&sbp_tag, 0, sizeof(mcf_tlvota_sbp_tag_t));
13307 sbp_tag.sbp_id = SBP_TAG_SBPID;
13308 strncpy(sbp_tag.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
13309 strncpy(sbp_tag.mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
13310
13311 for (i = 0; i < MAX_SIM_NUM; i++) {
13312 kal_mem_set(&test_lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
13313
13314 mcf_ret = mcf_read_tlvota_buffer_sbp_tag(i, sbp_tag, NVRAM_EF_MCF_TEST_OTA_LID, (kal_uint8 *)&test_lid_buffer, sizeof(nvram_ef_mcf_test_struct));
13315 if (mcf_ret != MCF_OTA_R_SUCCESS) {
13316 mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! i(%d), ret(%d) \r\n", i, mcf_ret);
13317 return KAL_FALSE;
13318 }
13319
13320 ret = mcf_check_test_lid_value((kal_uint8 *)&test_lid_buffer);
13321 if (ret == KAL_FALSE) {
13322 mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag positive test (partially matched tag) FAIL!!\r\n");
13323 return KAL_FALSE;
13324 }
13325 }
13326 }
13327
13328 // ========== VALUE TEST : encrypted file========== //
13329 {
13330 mcf_t *pMcf = mcf_get_instance();
13331 mcf_tool_file_info_t *pFile;
13332 mcf_tool_gid_tlvota_file_item_t *pItem;
13333 mcf_tlvota_file_t *tlvota_file;
13334 nvram_ef_mcf_tlvota_file_info_struct nv_tlvota_file;
13335 nvram_ef_mcf_test_struct test_lid_buffer;
13336 nvram_ef_mcf_test_struct empty_buffer = { 0 };
13337 mcf_tlvota_sbp_tag_t sbp_tag;
13338 kal_uint8 i;
13339 mcf_ota_result_e mcf_ret;
13340 kal_bool ret;
13341 mcf_tool_file_info_t *file_header;
13342 kal_char password[32] = {0};
13343
13344 getcwd(ota_data_path, sizeof(ota_data_path));
13345 pos = strstr(ota_data_path, "mcu");
13346 kal_sprintf(pos + strlen("mcu"), "\\%s\\%s", MCF_UT_DB_FOLDER_PATH, "MCF_TLVOTA_SBP_full_ut_gid_normal_AES256_RSA3072.mcfopota");
13347 file1 = fopen(ota_data_path, "rb");
13348
13349 getcwd(ota_data_path, sizeof(ota_data_path));
13350 pos = strstr(ota_data_path, "mcu");
13351 kal_sprintf(pos + strlen("mcu"), "\\%s\\%s", MCF_UT_DB_FOLDER_PATH, "MCF_TLVOTA_SBP_partial_ut_gid_normal_AES256_RSA3072.mcfopota");
13352 file2 = fopen(ota_data_path, "rb");
13353
13354 if (file1 != NULL && file2 != NULL)
13355 {
13356 kal_mem_set(test_file1, 0, sizeof(test_file1));
13357 fread(test_file1, sizeof(test_file1), 1, file1);
13358 fclose(file1);
13359 kal_mem_set(test_file2, 0, sizeof(test_file2));
13360 fread(test_file2, sizeof(test_file2), 1, file2);
13361 fclose(file2);
13362 }
13363 else {
13364 mcf_ut_format_err_str("Merge OTA open file failed!!\r\n");
13365 return KAL_FALSE;
13366 }
13367
13368 // decrypt input file
13369 file_header = (mcf_tool_file_info_t *)test_file1;
13370 mcf_get_custom_aes_password(password);
13371 if (mcf_decrypt_256bit(password, (kal_char *)file_header + file_header->total_len, (file_header->file_size - file_header->total_len)) != KAL_TRUE)
13372 return KAL_FALSE;
13373
13374 file_header = (mcf_tool_file_info_t *)test_file2;
13375 if (mcf_decrypt_256bit(password, (kal_char *)file_header + file_header->total_len, (file_header->file_size - file_header->total_len)) != KAL_TRUE)
13376 return KAL_FALSE;
13377
13378 ret = mcf_merge_ota_buffer(test_file1, test_file2, output_file, sizeof(output_file));
13379 if (ret == KAL_FALSE) {
13380 mcf_ut_format_err_str("Merge OTA buffer failed!!\r\n");
13381 return KAL_FALSE;
13382 }
13383
13384 getcwd(ota_data_path, sizeof(ota_data_path));
13385 pos = strstr(ota_data_path, "mcu");
13386 kal_sprintf(pos + strlen("mcu"), "\\%s\\%s", MCF_UT_DB_FOLDER_PATH, "MCF_OTA_BY_OP_GID_MERGE_AES256.mcfota");
13387 file1 = fopen(ota_data_path, "wb");
13388
13389 if (file1 != NULL)
13390 {
13391 mcf_tool_file_info_t *output_header = (mcf_tool_file_info_t *)output_file;
13392 fwrite(output_file, 1, output_header->file_size, file1);
13393 fclose(file1);
13394 }
13395 else {
13396 return KAL_FALSE;
13397 }
13398 /*
13399 * Read TLV-OTA by LID & sbp_tag positive test - partially matched tag
13400 * NVRAM_EF_MCF_TEST_OTA_LID with tag SBP_PARTIAL_TAG (12_NA_NA), but user searches SBP_FULL_TAG (12_33_21)
13401 */
13402 /* Fill TLV-OTA file into buffer */
13403 for (i = 0; i < MAX_SIM_NUM; i++) {
13404 tlvota_file = &(pMcf->tlvota_file[i]);
13405
13406 if (tlvota_file) {
13407 l4c_mcf_path_type_enum *apply_path_type;
13408 kal_char apply_filename[256],
13409 pFile = (mcf_tool_file_info_t *)(tlvota_file->buff);
13410 pItem = (mcf_tool_gid_tlvota_file_item_t *)(tlvota_file->buff + sizeof(mcf_tool_file_info_t));
13411
13412 ret = mcf_ut_open_test_data("MCF_OTA_BY_OP_GID_MERGE_AES256.mcfota", (kal_char *)(tlvota_file->buff), MCF_MAX_TLVOTA_FILE_SIZE);
13413 mcf_read_tlvota_file(KAL_FALSE, i, "", "", &apply_path_type, apply_filename, pMcf);
13414 if (ret == KAL_FALSE) {
13415 mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_OTA_BY_OP_GID_MERGE_AES256.mcfota");
13416 return KAL_FALSE;
13417 }
13418
13419 }
13420 else {
13421 mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! Fail to take write lock! \r\n");
13422 return KAL_FALSE;
13423 }
13424 }
13425
13426 // NVRAM_EF_MCF_TEST_OTA_LID with SBP_PARTIAL_TAG
13427 kal_mem_set(&sbp_tag, 0, sizeof(mcf_tlvota_sbp_tag_t));
13428 sbp_tag.sbp_id = SBP_TAG_SBPID;
13429 strncpy(sbp_tag.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
13430 strncpy(sbp_tag.mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
13431
13432 for (i = 0; i < MAX_SIM_NUM; i++) {
13433 kal_mem_set(&test_lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
13434
13435 mcf_ret = mcf_read_tlvota_buffer_sbp_tag(i, sbp_tag, NVRAM_EF_MCF_TEST_OTA_LID, (kal_uint8 *)&test_lid_buffer, sizeof(nvram_ef_mcf_test_struct));
13436 if (mcf_ret != MCF_OTA_R_SUCCESS) {
13437 mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! i(%d), ret(%d) \r\n", i, mcf_ret);
13438 return KAL_FALSE;
13439 }
13440
13441 ret = mcf_check_test_lid_value((kal_uint8 *)&test_lid_buffer);
13442 if (ret == KAL_FALSE) {
13443 mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag positive test (partially matched tag) FAIL!!\r\n");
13444 return KAL_FALSE;
13445 }
13446 }
13447 }
13448 MCF_UT_PASS();
13449 return KAL_TRUE;
13450}
13451
13452kal_uint8 gid_buffer[256];
13453kal_bool mcf_merge_one_gid_ut(void *p_param, kal_char *p_ret_err_str, kal_uint32 *p_ret_err_str_sz)
13454{
13455 kal_bool ret = KAL_FALSE;
13456 mcf_tool_gid_ota_file_item_t *ota_gid;
13457 mcf_tool_gid_tlvota_file_item_t *ota_by_op_gid;
13458 kal_uint32 *value;
13459
13460 kal_mem_set(gid_buffer, 0, sizeof(gid_buffer));
13461 ota_gid = gid_buffer;
13462 ota_gid->global_id = 5103;
13463 ota_gid->record_idx = 1;
13464 ota_gid->value_len = 4;
13465 value = &ota_gid->buff_start;
13466 *value = 6;
13467 ota_gid->total_len = (kal_uint32)&ota_gid->buff_start + ota_gid->value_len - (kal_uint32)gid_buffer;
13468
13469 mcf_merge_one_gid(ota_gid, MCF_TYPE_OTA, output_file, sizeof(output_file), MCF_FILE_OP_CHECKSUM);
13470 // check result
13471 {
13472 mcf_tool_file_info_t *output_header = (mcf_tool_file_info_t *)output_file;
13473 kal_uint8 *current_pos = NULL;
13474 if (output_header->item_num != 1) {
13475 mcf_ut_format_err_str("Merge one gid item_num FAIL!!\r\n");
13476 return KAL_FALSE;
13477 }
13478 if (output_header->operation_mask != MCF_FILE_OP_CHECKSUM) {
13479 mcf_ut_format_err_str("Merge one gid mask FAIL!!\r\n");
13480 return KAL_FALSE;
13481 }
13482 if (mcf_check_check_sum((kal_uint32 *)output_file, output_header->file_size) != 0) {
13483 mcf_ut_format_err_str("Merge one gid checksum failed!!\r\n");
13484 return KAL_FALSE;
13485 }
13486 current_pos = (kal_uint8 *)output_header + output_header->total_len;
13487 if (kal_mem_cmp(ota_gid, current_pos, ota_gid->total_len)) {
13488 mcf_ut_format_err_str("Merge one gid value failed!!\r\n");
13489 return KAL_FALSE;
13490 }
13491 }
13492
13493 kal_mem_set(gid_buffer, 0, sizeof(gid_buffer));
13494 ota_by_op_gid = gid_buffer;
13495 ota_by_op_gid->global_id = 5103;
13496 ota_by_op_gid->value_len = 4;
13497
13498 ota_by_op_gid->tag_type = MCF_TLVOTA_TAG_SBPID;
13499 ota_by_op_gid->tag_len = strlen(SBP_FULL_TAG);
13500 strcpy((kal_uint32)&ota_by_op_gid->buff_start, SBP_FULL_TAG);
13501 value = &ota_by_op_gid->buff_start + ota_by_op_gid->tag_len;
13502 *value = 6;
13503 ota_by_op_gid->total_len = (kal_uint32)&ota_by_op_gid->buff_start + ota_by_op_gid->value_len + ota_by_op_gid->tag_len - (kal_uint32)gid_buffer;
13504
13505 mcf_merge_one_gid(ota_by_op_gid, MCF_TYPE_OTA_BY_OP, output_file, sizeof(output_file), MCF_FILE_OP_CHECKSUM);
13506 // check result
13507 {
13508 mcf_tool_file_info_t *output_header = (mcf_tool_file_info_t *)output_file;
13509 kal_uint8 *current_pos = NULL;
13510 if (output_header->item_num != 1) {
13511 mcf_ut_format_err_str("Merge one gid item_num FAIL!!\r\n");
13512 return KAL_FALSE;
13513 }
13514 if (output_header->operation_mask != MCF_FILE_OP_CHECKSUM) {
13515 mcf_ut_format_err_str("Merge one gid mask FAIL!!\r\n");
13516 return KAL_FALSE;
13517 }
13518 if (mcf_check_check_sum((kal_uint32 *)output_file, output_header->file_size) != 0) {
13519 mcf_ut_format_err_str("Merge one gid checksum failed!!\r\n");
13520 return KAL_FALSE;
13521 }
13522 current_pos = (kal_uint8 *)output_header + output_header->total_len;
13523 if (kal_mem_cmp(ota_by_op_gid, current_pos, ota_by_op_gid->total_len)) {
13524 mcf_ut_format_err_str("Merge one gid value failed!!\r\n");
13525 return KAL_FALSE;
13526 }
13527 }
13528 MCF_UT_PASS();
13529 return KAL_TRUE;
13530}
13531
13532
13533kal_bool mcf_merge_ota_by_op_merge_one_gid_ut(void *p_param, kal_char *p_ret_err_str, kal_uint32 *p_ret_err_str_sz)
13534{
13535 kal_char ota_data_path[512];
13536 kal_bool ret = KAL_FALSE;
13537 FILE *file1, *file2;
13538 kal_char *pos;
13539
13540 getcwd(ota_data_path, sizeof(ota_data_path));
13541 pos = strstr(ota_data_path, "mcu");
13542 kal_sprintf(pos + strlen("mcu"), "\\%s\\%s", MCF_UT_DB_FOLDER_PATH, "MTK_OPOTA_SBPID_1.mcfopota");
13543 file1 = fopen(ota_data_path, "rb");
13544
13545 if (file1 != NULL)
13546 {
13547 kal_mem_set(test_file1, 0, sizeof(test_file1));
13548 fread(test_file1, sizeof(test_file1), 1, file1);
13549 fclose(file1);
13550 }
13551 else {
13552 mcf_ut_format_err_str("Merge OTA by OP open file failed!!\r\n");
13553 return KAL_FALSE;
13554 }
13555
13556 mcf_tool_gid_tlvota_file_item_t *ota_by_op_gid;
13557 kal_uint32 *value;
13558
13559 kal_mem_set(gid_buffer, 0, sizeof(gid_buffer));
13560 ota_by_op_gid = gid_buffer;
13561 ota_by_op_gid->global_id = 5103;
13562 ota_by_op_gid->value_len = 4;
13563
13564 ota_by_op_gid->tag_type = MCF_TLVOTA_TAG_SBPID;
13565 ota_by_op_gid->tag_len = strlen(SBP_FULL_TAG);
13566 strcpy((kal_uint32)&ota_by_op_gid->buff_start, SBP_FULL_TAG);
13567 value = &ota_by_op_gid->buff_start + ota_by_op_gid->tag_len;
13568 *value = 6;
13569 ota_by_op_gid->total_len = (kal_uint32)&ota_by_op_gid->buff_start + ota_by_op_gid->value_len + ota_by_op_gid->tag_len - (kal_uint32)gid_buffer;
13570
13571 mcf_merge_one_gid(ota_by_op_gid, MCF_TYPE_OTA_BY_OP, test_file2, sizeof(test_file2), MCF_FILE_OP_CHECKSUM);
13572
13573 ret = mcf_merge_ota_buffer(test_file1, test_file2, output_file, sizeof(output_file));
13574 if (ret == KAL_FALSE) {
13575 mcf_ut_format_err_str("Merge OTA by OP buffer failed!!\r\n");
13576 return KAL_FALSE;
13577 }
13578 MCF_UT_PASS();
13579 return KAL_TRUE;
13580}
13581
13582kal_bool mcf_merge_encrypted_ota_file_ut(void *p_param, kal_char *p_ret_err_str, kal_uint32 *p_ret_err_str_sz)
13583{
13584 kal_char ota_data_path[512];
13585 kal_bool ret = KAL_FALSE;
13586 FILE *file1, *file2;
13587 kal_char *pos;
13588 kal_bool mcf_ret;
13589 kal_char password[32] = {0};
13590 mcf_tool_file_info_t *file_header;
13591
13592 // ========== BASIC TEST ========== //
13593 getcwd(ota_data_path, sizeof(ota_data_path));
13594 pos = strstr(ota_data_path, "mcu");
13595 kal_sprintf(pos + strlen("mcu"), "\\%s\\%s", MCF_UT_DB_FOLDER_PATH, "AES256_SHA256_RSA2048.mcfota");
13596 file1 = fopen(ota_data_path, "rb");
13597
13598 getcwd(ota_data_path, sizeof(ota_data_path));
13599 pos = strstr(ota_data_path, "mcu");
13600 kal_sprintf(pos + strlen("mcu"), "\\%s\\%s", MCF_UT_DB_FOLDER_PATH, "AES256_SHA384_RSA3072.mcfota");
13601 file2 = fopen(ota_data_path, "rb");
13602
13603 if(file1 != NULL && file2 != NULL)
13604 {
13605 kal_mem_set(test_file1, 0, sizeof(test_file1));
13606 fread(test_file1, sizeof(test_file1), 1, file1);
13607 fclose(file1);
13608 kal_mem_set(test_file2, 0, sizeof(test_file2));
13609 fread(test_file2, sizeof(test_file2), 1, file2);
13610 fclose(file2);
13611 } else {
13612 mcf_ut_format_err_str("Merge OTA open file failed!!\r\n");
13613 return KAL_FALSE;
13614 }
13615
13616 // decrypt input file
13617 file_header = (mcf_tool_file_info_t *)test_file1;
13618 mcf_get_custom_aes_password(password);
13619 if (mcf_decrypt_256bit(password, (kal_char *)file_header + file_header->total_len, (file_header->file_size - file_header->total_len)) != KAL_TRUE)
13620 return KAL_FALSE;
13621
13622 file_header = (mcf_tool_file_info_t *)test_file2;
13623 if (mcf_decrypt_256bit(password, (kal_char *)file_header + file_header->total_len, (file_header->file_size - file_header->total_len)) != KAL_TRUE)
13624 return KAL_FALSE;
13625
13626 ret = mcf_merge_ota_buffer(test_file1, test_file2, output_file, sizeof(output_file));
13627 if (ret == KAL_FALSE){
13628 mcf_ut_format_err_str("Merge OTA buffer failed!!\r\n");
13629 return KAL_FALSE;
13630 }
13631
13632 // decrypt merge file
13633 file_header = (mcf_tool_file_info_t *)output_file;
13634 if (mcf_decrypt_256bit(password, (kal_char *)file_header + file_header->total_len, (file_header->file_size - file_header->total_len)) != KAL_TRUE)
13635 return KAL_FALSE;
13636
13637 // checksum comparasion
13638 {
13639 mcf_tool_file_info_t *output_header = (mcf_tool_file_info_t *)output_file;
13640 if (mcf_check_check_sum((kal_uint32 *)output_file, output_header->file_size) != 0) {
13641 mcf_ut_format_err_str("Merge OTA buffer checksim failed!!\r\n");
13642 return KAL_FALSE;
13643 }
13644 }
13645
13646 MCF_UT_PASS();
13647 return KAL_TRUE;
13648}
13649kal_bool mcf_ut_combined_ota_file(void *p_param, kal_char *p_ret_err_str, kal_uint32 *p_ret_err_str_sz)
13650{
13651 mcf_t *pMcf = mcf_get_instance();
13652 mcf_ota_file_t *ota_file = &(pMcf->ota_file);
13653 mcf_tool_file_info_t *pFile = (mcf_tool_file_info_t *)(ota_file->buff);
13654 nvram_ef_mcf_ota_file_info_struct nv_ota_file;
13655 nvram_ef_mcf_sw_info_struct nv_sw_info;
13656 kal_uint8 *lid_buffer;
13657 nvram_ef_mcf_test_struct empty_buffer = {0};
13658 mcf_ota_result_e mcf_ret;
13659 kal_bool ret;
13660 kal_uint32 i;
13661 nvram_ef_mcf_test_struct nv_lid_buffer;
13662 nvram_ef_mcf_test_struct test_lid_buffer;
13663 l4c_mcf_set_config_req_struct *assigned_file_req;
13664 l4c_mcf_set_config_req_struct *combined_file_req;
13665 mcf_tool_gid_tlvota_file_item_t *pItem;
13666 mcf_tlvota_file_t *tlvota_file;
13667 nvram_ef_mcf_tlvota_file_info_struct nv_tlvota_file;
13668 mcf_tlvota_sbp_tag_t sbp_tag;
13669 sbp_reconfig_custom_param_struct param_ptr;
13670
13671
13672 mcf_ut_init();
13673
13674 /*
13675 * Merge two file positive test - Same path
13676 */
13677
13678 /* Write MCF OTA file version to NVRAM */
13679 kal_mem_set(&nv_ota_file, 0, sizeof(nvram_ef_mcf_ota_file_info_struct));
13680 strncpy(nv_ota_file.path, MCF_FS_DEFAULT_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN);
13681 strncpy(nv_ota_file.name, MCF_FS_DEFAULT_OTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN);
13682 if ( !nvram_external_write_data(NVRAM_EF_MCF_OTA_FILE_LID, 1, (kal_uint8 *)&nv_ota_file, sizeof(nvram_ef_mcf_ota_file_info_struct)) ) {
13683 mcf_ut_format_err_str("Fail to write MCF OTA file info to NVRAM!!\r\n");
13684 return KAL_FALSE;
13685 }
13686 kal_mem_set(&nv_sw_info, 0, sizeof(nvram_ef_mcf_sw_info_struct));
13687 strncpy(nv_sw_info.last_update_file.sw_version, MCF_UT_SW_VERNO, MCF_FILE_MAX_SW_VERSION_LEN);
13688 strncpy(nv_sw_info.last_update_file.gen_time, MCF_UT_GEN_TIME, MCF_FILE_MAX_GEN_TIME_LEN);
13689 strcpy(nv_sw_info.last_update_file.path, "");
13690 strcpy(nv_sw_info.last_update_file.name, "");
13691 if ( !nvram_external_write_data(NVRAM_EF_MCF_SW_INFO_LID, 1, (kal_uint8 *)&nv_sw_info, sizeof(nvram_ef_mcf_sw_info_struct)) ) {
13692 mcf_ut_format_err_str("Fail to write MCF sw info to NVRAM!!\r\n");
13693 return KAL_FALSE;
13694 }
13695
13696 kal_mem_set(&mcf_last_mod_lid_g, 0, sizeof(nvram_mcf_lid_info_struct));
13697 kal_mem_set(&mcf_curr_mod_lid_g, 0, sizeof(nvram_mcf_lid_info_struct));
13698
13699 assigned_file_req = (l4c_mcf_set_config_req_struct *)construct_local_para(sizeof(l4c_mcf_set_config_req_struct), TD_RESET);
13700 assigned_file_req->op = L4C_MCF_CONFIG_ASSIGN_COMBINED_PATH;
13701 assigned_file_req->config_type = L4C_MCF_CONFIG_TYPE_DEFAULT_BIN;
13702 assigned_file_req->path_type = L4C_MCF_PATH_TYPE_RUNTIME;
13703 strcpy(assigned_file_req->config1,"MCF_OTA_ut_merge.mcfota");
13704
13705 if(mcf_assign_combined_file_path(assigned_file_req) != MCF_OTA_R_SUCCESS){
13706 mcf_ut_format_err_str("Assign combined OTA fail!! \r\n");
13707 return KAL_FALSE;
13708 }
13709
13710 free_local_para((local_para_struct *)assigned_file_req);
13711
13712 /* First apply MCF_OTA_ut_gid_normal - reset */
13713
13714 combined_file_req = (l4c_mcf_set_config_req_struct *)construct_local_para(sizeof(l4c_mcf_set_config_req_struct), TD_RESET);
13715 combined_file_req->op = L4C_MCF_CONFIG_SET_FILE_PATH_AND_AUTO_SELECT_BIN;
13716 combined_file_req->config_type = L4C_MCF_CONFIG_TYPE_DEFAULT_BIN;
13717 combined_file_req->path_type = L4C_MCF_PATH_TYPE_RUNTIME;
13718 strcpy(combined_file_req->config1,"MCF_OTA_ut_normal.mcfota");
13719 combined_file_req->reset = KAL_TRUE;
13720
13721 MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
13722 if (ota_file) {
13723 ret = mcf_ut_open_test_data("MCF_OTA_ut_gid_normal.mcfota", (kal_char *)(ota_file->buff), MCF_MAX_OTA_FILE_SIZE);
13724 if (ret == KAL_FALSE) {
13725 mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_OTA_ut_gid_normal.mcfota");
13726 return KAL_FALSE;
13727 }
13728
13729 MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
13730 } else {
13731 mcf_ut_format_err_str("Do full OTA FAIL!! Fail to take write lock! \r\n");
13732 return KAL_FALSE;
13733 }
13734
13735 if(mcf_combined_ota_file(combined_file_req) != MCF_OTA_R_SUCCESS){
13736 mcf_ut_format_err_str("Combine OTA fail!! \r\n");
13737 return KAL_FALSE;
13738 }
13739
13740 /* Second. apply MCF_OTA_QUERY_ut_gid_normal.mcfota - append */
13741 combined_file_req->op = L4C_MCF_CONFIG_SET_FILE_PATH_AND_AUTO_SELECT_BIN;
13742 combined_file_req->config_type = L4C_MCF_CONFIG_TYPE_DEFAULT_BIN;
13743 combined_file_req->path_type = L4C_MCF_PATH_TYPE_RUNTIME;
13744 strcpy(combined_file_req->config1,"MCF_OTA_QUERY_ut_gid_normal.mcfota");
13745 combined_file_req->reset = KAL_FALSE;
13746
13747 if(mcf_combined_ota_file(combined_file_req) != MCF_OTA_R_SUCCESS){
13748 mcf_ut_format_err_str("Combine OTA fail!! \r\n");
13749 return KAL_FALSE;
13750 }
13751
13752 MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
13753 if (ota_file) {
13754 kal_mem_cpy(mcf_file_buffer, ota_file->buff, MCF_MAX_OTA_FILE_SIZE);
13755 MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
13756 } else {
13757 mcf_ut_format_err_str("Do full OTA FAIL!! Fail to take write lock! \r\n");
13758 return KAL_FALSE;
13759 }
13760
13761 MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
13762 if (ota_file) {
13763 ret = mcf_ut_open_test_data("MCF_OTA_QUERY_ut_gid_normal.mcfota", (kal_char *)(ota_file->buff), MCF_MAX_OTA_FILE_SIZE);
13764 if (ret == KAL_FALSE) {
13765 mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_OTA_QUERY_ut_gid_normal.mcfota");
13766 return KAL_FALSE;
13767 }
13768
13769 MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
13770 } else {
13771 mcf_ut_format_err_str("Do full OTA FAIL!! Fail to take write lock! \r\n");
13772 return KAL_FALSE;
13773 }
13774
13775 MCF_R_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
13776 if (ota_file) {
13777 if(mcf_merge_ota_buffer(mcf_file_buffer, ota_file->buff, mcf_merge_buffer, MCF_MAX_OTA_FILE_SIZE) != KAL_TRUE){
13778 mcf_ut_format_err_str("Merge OTA file FAIL!!\r\n");
13779 ret = KAL_FALSE;
13780 MCF_R_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
13781 return ret;
13782 }
13783 MCF_R_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
13784 }
13785
13786 free_local_para((local_para_struct *)combined_file_req);
13787
13788 if ( !nvram_external_read_data(NVRAM_EF_MCF_OTA_FILE_LID, 1, (kal_uint8 *)&nv_ota_file, sizeof(nvram_ef_mcf_ota_file_info_struct)) ) {
13789 mcf_ut_format_err_str("Fail to write MCF OTA file info to NVRAM!!\r\n");
13790 return KAL_FALSE;
13791 }
13792
13793 if(strcmp(nv_ota_file.path,MCF_FS_CUSTOM_FOLDER_PATH) != 0){
13794 mcf_ut_format_err_str("Fail to store file path!!\r\n");
13795 return KAL_FALSE;
13796 }
13797
13798 if(strcmp(nv_ota_file.name,"MCF_OTA_ut_merge.mcfota") != 0){
13799 mcf_ut_format_err_str("Fail to store file name!!\r\n");
13800 return KAL_FALSE;
13801 }
13802
13803 MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
13804 if (ota_file) {
13805 kal_mem_cpy((kal_char *)(ota_file->buff), mcf_merge_buffer, MCF_MAX_OTA_FILE_SIZE);
13806 MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
13807 } else {
13808 mcf_ut_format_err_str("Do full OTA FAIL!! Fail to take write lock! \r\n");
13809 return KAL_FALSE;
13810 }
13811
13812 mcf_ret = mcf_do_ota_full();
13813 if (mcf_ret != MCF_OTA_R_SUCCESS) {
13814 mcf_ut_format_err_str("Do full OTA FAIL!! ret(%d) \r\n", mcf_ret);
13815 return KAL_FALSE;
13816 }
13817
13818 ret = mcf_check_test_lid_value(NULL);
13819 if (ret == KAL_FALSE) {
13820 mcf_ut_format_err_str("Do full OTA positive test (Both SW verno of file and MD mismatch) FAIL!!\r\n");
13821 return KAL_FALSE;
13822 }
13823
13824 //first reset NVRAM_EF_MCF_TEST_OTA_LID
13825 ret = mcf_check_lid_need_reset(NVRAM_EF_MCF_TEST_OTA_LID);
13826 if (ret != KAL_TRUE) {
13827 mcf_ut_format_err_str("Check LID need reset FAIL!! ret(%d), LID(%d) \r\n", ret, NVRAM_EF_MCF_TEST_OTA_LID);
13828 return KAL_FALSE;
13829 }
13830
13831 ret = mcf_check_lid_need_reset(NVRAM_EF_MCF_TEST_OTA_QUERY_LID);
13832 if (ret != KAL_FALSE) {
13833 mcf_ut_format_err_str("Check LID need reset positive test (Modify 3 LIDs) FAIL!! ret(%d), LID(%d) \r\n", ret, NVRAM_EF_IMS_PROFILE_LID);
13834 return KAL_FALSE;
13835 }
13836
13837 kal_mem_set(&test_lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
13838
13839 mcf_ret = mcf_read_ota_buffer(NVRAM_EF_MCF_TEST_OTA_QUERY_LID, 1, (kal_uint8 *)&test_lid_buffer, sizeof(nvram_ef_mcf_test_struct));
13840 if (mcf_ret != MCF_OTA_R_SUCCESS) {
13841 mcf_ut_format_err_str("Read OTA by LID FAIL!! ret(%d) \r\n", mcf_ret);
13842 return KAL_FALSE;
13843 }
13844
13845 ret = mcf_check_test_lid_value((kal_uint8 *)&test_lid_buffer);
13846 if (ret == KAL_FALSE) {
13847 mcf_ut_format_err_str("Read OTA by LID positive test FAIL!!\r\n");
13848 return KAL_FALSE;
13849 }
13850
13851 /*
13852 * Merge two file positive test - different path
13853 */
13854
13855 /* Write MCF OTA file version to NVRAM */
13856 kal_mem_set(&nv_ota_file, 0, sizeof(nvram_ef_mcf_ota_file_info_struct));
13857 strncpy(nv_ota_file.path, MCF_FS_DEFAULT_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN);
13858 strncpy(nv_ota_file.name, MCF_FS_DEFAULT_OTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN);
13859 if ( !nvram_external_write_data(NVRAM_EF_MCF_OTA_FILE_LID, 1, (kal_uint8 *)&nv_ota_file, sizeof(nvram_ef_mcf_ota_file_info_struct)) ) {
13860 mcf_ut_format_err_str("Fail to write MCF OTA file info to NVRAM!!\r\n");
13861 return KAL_FALSE;
13862 }
13863 kal_mem_set(&nv_sw_info, 0, sizeof(nvram_ef_mcf_sw_info_struct));
13864 strncpy(nv_sw_info.last_update_file.sw_version, MCF_UT_SW_VERNO, MCF_FILE_MAX_SW_VERSION_LEN);
13865 strncpy(nv_sw_info.last_update_file.gen_time, MCF_UT_GEN_TIME, MCF_FILE_MAX_GEN_TIME_LEN);
13866 strcpy(nv_sw_info.last_update_file.path, "");
13867 strcpy(nv_sw_info.last_update_file.name, "");
13868 if ( !nvram_external_write_data(NVRAM_EF_MCF_SW_INFO_LID, 1, (kal_uint8 *)&nv_sw_info, sizeof(nvram_ef_mcf_sw_info_struct)) ) {
13869 mcf_ut_format_err_str("Fail to write MCF sw info to NVRAM!!\r\n");
13870 return KAL_FALSE;
13871 }
13872
13873 kal_mem_set(&mcf_last_mod_lid_g, 0, sizeof(nvram_mcf_lid_info_struct));
13874 kal_mem_set(&mcf_curr_mod_lid_g, 0, sizeof(nvram_mcf_lid_info_struct));
13875
13876 /* Reset NVRAM_EF_MCF_INTERNAL_INFO_LID */
13877 kal_mem_set(&nv_int_info, 0, sizeof(nvram_ef_mcf_internal_info_struct));
13878 if ( !nvram_external_write_data(NVRAM_EF_MCF_INTERNAL_INFO_LID, 1, (kal_uint8 *)&nv_int_info, sizeof(nvram_ef_mcf_internal_info_struct)) ) {
13879 mcf_ut_format_err_str("Fail to write NVRAM_EF_MCF_INTERNAL_INFO_LID to NVRAM!!\r\n");
13880 return KAL_FALSE;
13881 }
13882
13883 assigned_file_req = (l4c_mcf_set_config_req_struct *)construct_local_para(sizeof(l4c_mcf_set_config_req_struct), TD_RESET);
13884 assigned_file_req->op = L4C_MCF_CONFIG_ASSIGN_COMBINED_PATH;
13885 assigned_file_req->config_type = L4C_MCF_CONFIG_TYPE_DEFAULT_BIN;
13886 assigned_file_req->path_type = L4C_MCF_PATH_TYPE_RUNTIME;
13887 strcpy(assigned_file_req->config1,"MCF_OTA_ut_merge.mcfota");
13888
13889 if(mcf_assign_combined_file_path(assigned_file_req) != MCF_OTA_R_SUCCESS){
13890 mcf_ut_format_err_str("Assign combined OTA fail!! \r\n");
13891 return KAL_FALSE;
13892 }
13893
13894 free_local_para((local_para_struct *)assigned_file_req);
13895
13896 /* First apply MCF_OTA_ut_gid_normal - reset */
13897
13898 combined_file_req = (l4c_mcf_set_config_req_struct *)construct_local_para(sizeof(l4c_mcf_set_config_req_struct), TD_RESET);
13899 combined_file_req->op = L4C_MCF_CONFIG_SET_FILE_PATH_AND_AUTO_SELECT_BIN;
13900 combined_file_req->config_type = L4C_MCF_CONFIG_TYPE_DEFAULT_BIN;
13901 combined_file_req->path_type = L4C_MCF_PATH_TYPE_RUNTIME;
13902 strcpy(combined_file_req->config1,"MCF_OTA_ut_normal.mcfota");
13903 combined_file_req->reset = KAL_TRUE;
13904
13905 MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
13906 if (ota_file) {
13907 ret = mcf_ut_open_test_data("MCF_OTA_ut_gid_normal.mcfota", (kal_char *)(ota_file->buff), MCF_MAX_OTA_FILE_SIZE);
13908 if (ret == KAL_FALSE) {
13909 mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_OTA_ut_gid_normal.mcfota");
13910 return KAL_FALSE;
13911 }
13912
13913 MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
13914 } else {
13915 mcf_ut_format_err_str("Do full OTA FAIL!! Fail to take write lock! \r\n");
13916 return KAL_FALSE;
13917 }
13918
13919 if(mcf_combined_ota_file(combined_file_req) != MCF_OTA_R_SUCCESS){
13920 mcf_ut_format_err_str("Combine OTA fail!! \r\n");
13921 return KAL_FALSE;
13922 }
13923
13924 /* Second. apply MCF_OTA_QUERY_ut_gid_normal.mcfota - append */
13925 combined_file_req->op = L4C_MCF_CONFIG_SET_FILE_PATH_AND_AUTO_SELECT_BIN;
13926 combined_file_req->config_type = L4C_MCF_CONFIG_TYPE_DEFAULT_BIN;
13927 combined_file_req->path_type = L4C_MCF_PATH_TYPE_RUNTIME;
13928 strcpy(combined_file_req->config1,"MCF_OTA_QUERY_ut_gid_normal.mcfota");
13929 combined_file_req->reset = KAL_FALSE;
13930
13931 if(mcf_combined_ota_file(combined_file_req) != MCF_OTA_R_SUCCESS){
13932 mcf_ut_format_err_str("Combine OTA fail!! \r\n");
13933 return KAL_FALSE;
13934 }
13935
13936 MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
13937 if (ota_file) {
13938 kal_mem_cpy(mcf_file_buffer, ota_file->buff, MCF_MAX_OTA_FILE_SIZE);
13939 MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
13940 } else {
13941 mcf_ut_format_err_str("Do full OTA FAIL!! Fail to take write lock! \r\n");
13942 return KAL_FALSE;
13943 }
13944
13945 MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
13946 if (ota_file) {
13947 ret = mcf_ut_open_test_data("MCF_OTA_QUERY_ut_gid_normal.mcfota", (kal_char *)(ota_file->buff), MCF_MAX_OTA_FILE_SIZE);
13948 if (ret == KAL_FALSE) {
13949 mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_OTA_QUERY_ut_gid_normal.mcfota");
13950 return KAL_FALSE;
13951 }
13952
13953 MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
13954 } else {
13955 mcf_ut_format_err_str("Do full OTA FAIL!! Fail to take write lock! \r\n");
13956 return KAL_FALSE;
13957 }
13958
13959 MCF_R_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
13960 if (ota_file) {
13961 if(mcf_merge_ota_buffer(mcf_file_buffer, ota_file->buff, mcf_merge_buffer, MCF_MAX_OTA_FILE_SIZE) != KAL_TRUE){
13962 mcf_ut_format_err_str("Merge OTA file FAIL!!\r\n");
13963 ret = KAL_FALSE;
13964 MCF_R_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
13965 return ret;
13966 }
13967 MCF_R_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
13968 }
13969
13970 free_local_para((local_para_struct *)combined_file_req);
13971
13972 if ( !nvram_external_read_data(NVRAM_EF_MCF_OTA_FILE_LID, 1, (kal_uint8 *)&nv_ota_file, sizeof(nvram_ef_mcf_ota_file_info_struct)) ) {
13973 mcf_ut_format_err_str("Fail to write MCF OTA file info to NVRAM!!\r\n");
13974 return KAL_FALSE;
13975 }
13976
13977 if(strcmp(nv_ota_file.path,MCF_FS_CUSTOM_FOLDER_PATH) != 0){
13978 mcf_ut_format_err_str("Fail to store file path!!\r\n");
13979 return KAL_FALSE;
13980 }
13981
13982 if(strcmp(nv_ota_file.name,"MCF_OTA_ut_merge.mcfota") != 0){
13983 mcf_ut_format_err_str("Fail to store file name!!\r\n");
13984 return KAL_FALSE;
13985 }
13986
13987 MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
13988 if (ota_file) {
13989 kal_mem_cpy((kal_char *)(ota_file->buff), mcf_merge_buffer, MCF_MAX_OTA_FILE_SIZE);
13990 MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
13991 } else {
13992 mcf_ut_format_err_str("Do full OTA FAIL!! Fail to take write lock! \r\n");
13993 return KAL_FALSE;
13994 }
13995
13996 mcf_ret = mcf_do_ota_full();
13997 if (mcf_ret != MCF_OTA_R_SUCCESS) {
13998 mcf_ut_format_err_str("Do full OTA FAIL!! ret(%d) \r\n", mcf_ret);
13999 return KAL_FALSE;
14000 }
14001
14002 ret = mcf_check_test_lid_value(NULL);
14003 if (ret == KAL_FALSE) {
14004 mcf_ut_format_err_str("Do full OTA positive test (Both SW verno of file and MD mismatch) FAIL!!\r\n");
14005 return KAL_FALSE;
14006 }
14007
14008 //first reset, second append
14009 ret = mcf_check_lid_need_reset(NVRAM_EF_MCF_TEST_OTA_LID);
14010 if (ret != KAL_TRUE) {
14011 mcf_ut_format_err_str("Check LID need reset FAIL!! ret(%d), LID(%d) \r\n", ret, NVRAM_EF_MCF_TEST_OTA_LID);
14012 return KAL_FALSE;
14013 }
14014
14015 ret = mcf_check_lid_need_reset(NVRAM_EF_MCF_TEST_OTA_QUERY_LID);
14016 if (ret != KAL_FALSE) {
14017 mcf_ut_format_err_str("Check LID need reset FAIL!! ret(%d), LID(%d) \r\n", ret, NVRAM_EF_IMS_PROFILE_LID);
14018 return KAL_FALSE;
14019 }
14020
14021 kal_mem_set(&test_lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
14022
14023 mcf_ret = mcf_read_ota_buffer(NVRAM_EF_MCF_TEST_OTA_QUERY_LID, 1, (kal_uint8 *)&test_lid_buffer, sizeof(nvram_ef_mcf_test_struct));
14024 if (mcf_ret != MCF_OTA_R_SUCCESS) {
14025 mcf_ut_format_err_str("Read OTA by LID FAIL!! ret(%d) \r\n", mcf_ret);
14026 return KAL_FALSE;
14027 }
14028
14029 ret = mcf_check_test_lid_value((kal_uint8 *)&test_lid_buffer);
14030 if (ret == KAL_FALSE) {
14031 mcf_ut_format_err_str("Read OTA by LID positive test FAIL!!\r\n");
14032 return KAL_FALSE;
14033 }
14034
14035 /*
14036 * Merge two file positive test - Same path - both of reset
14037 */
14038
14039 /* Write MCF OTA file version to NVRAM */
14040 kal_mem_set(&nv_ota_file, 0, sizeof(nvram_ef_mcf_ota_file_info_struct));
14041 strncpy(nv_ota_file.path, MCF_FS_DEFAULT_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN);
14042 strncpy(nv_ota_file.name, MCF_FS_DEFAULT_OTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN);
14043 if ( !nvram_external_write_data(NVRAM_EF_MCF_OTA_FILE_LID, 1, (kal_uint8 *)&nv_ota_file, sizeof(nvram_ef_mcf_ota_file_info_struct)) ) {
14044 mcf_ut_format_err_str("Fail to write MCF OTA file info to NVRAM!!\r\n");
14045 return KAL_FALSE;
14046 }
14047 kal_mem_set(&nv_sw_info, 0, sizeof(nvram_ef_mcf_sw_info_struct));
14048 strncpy(nv_sw_info.last_update_file.sw_version, MCF_UT_SW_VERNO, MCF_FILE_MAX_SW_VERSION_LEN);
14049 strncpy(nv_sw_info.last_update_file.gen_time, MCF_UT_GEN_TIME, MCF_FILE_MAX_GEN_TIME_LEN);
14050 strcpy(nv_sw_info.last_update_file.path, "");
14051 strcpy(nv_sw_info.last_update_file.name, "");
14052 if ( !nvram_external_write_data(NVRAM_EF_MCF_SW_INFO_LID, 1, (kal_uint8 *)&nv_sw_info, sizeof(nvram_ef_mcf_sw_info_struct)) ) {
14053 mcf_ut_format_err_str("Fail to write MCF sw info to NVRAM!!\r\n");
14054 return KAL_FALSE;
14055 }
14056
14057 kal_mem_set(&mcf_last_mod_lid_g, 0, sizeof(nvram_mcf_lid_info_struct));
14058 kal_mem_set(&mcf_curr_mod_lid_g, 0, sizeof(nvram_mcf_lid_info_struct));
14059
14060 /* Reset NVRAM_EF_MCF_INTERNAL_INFO_LID */
14061 kal_mem_set(&nv_int_info, 0, sizeof(nvram_ef_mcf_internal_info_struct));
14062 if ( !nvram_external_write_data(NVRAM_EF_MCF_INTERNAL_INFO_LID, 1, (kal_uint8 *)&nv_int_info, sizeof(nvram_ef_mcf_internal_info_struct)) ) {
14063 mcf_ut_format_err_str("Fail to write NVRAM_EF_MCF_INTERNAL_INFO_LID to NVRAM!!\r\n");
14064 return KAL_FALSE;
14065 }
14066
14067 /* Reset NVRAM_EF_MCF_INTERNAL_INFO_LID */
14068 kal_mem_set(&nv_int_info, 0, sizeof(nvram_ef_mcf_internal_info_struct));
14069
14070 assigned_file_req = (l4c_mcf_set_config_req_struct *)construct_local_para(sizeof(l4c_mcf_set_config_req_struct), TD_RESET);
14071 assigned_file_req->op = L4C_MCF_CONFIG_ASSIGN_COMBINED_PATH;
14072 assigned_file_req->config_type = L4C_MCF_CONFIG_TYPE_DEFAULT_BIN;
14073 assigned_file_req->path_type = L4C_MCF_PATH_TYPE_RUNTIME;
14074 strcpy(assigned_file_req->config1,"MCF_OTA_ut_merge.mcfota");
14075
14076 if(mcf_assign_combined_file_path(assigned_file_req) != MCF_OTA_R_SUCCESS){
14077 mcf_ut_format_err_str("Assign combined OTA fail!! \r\n");
14078 return KAL_FALSE;
14079 }
14080
14081 free_local_para((local_para_struct *)assigned_file_req);
14082
14083 /* First. apply MCF_OTA_QUERY_ut_gid_normal.mcfota - reset */
14084 combined_file_req = (l4c_mcf_set_config_req_struct *)construct_local_para(sizeof(l4c_mcf_set_config_req_struct), TD_RESET);
14085 combined_file_req->op = L4C_MCF_CONFIG_SET_FILE_PATH_AND_AUTO_SELECT_BIN;
14086 combined_file_req->config_type = L4C_MCF_CONFIG_TYPE_DEFAULT_BIN;
14087 combined_file_req->path_type = L4C_MCF_PATH_TYPE_RUNTIME;
14088 strcpy(combined_file_req->config1,"MCF_OTA_QUERY_ut_gid_normal.mcfota");
14089 combined_file_req->reset = KAL_TRUE;
14090
14091 MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
14092 if (ota_file) {
14093 ret = mcf_ut_open_test_data("MCF_OTA_QUERY_ut_gid_normal.mcfota", (kal_char *)(ota_file->buff), MCF_MAX_OTA_FILE_SIZE);
14094 if (ret == KAL_FALSE) {
14095 mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_OTA_QUERY_ut_gid_normal.mcfota");
14096 return KAL_FALSE;
14097 }
14098
14099 MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
14100 } else {
14101 mcf_ut_format_err_str("Do full OTA FAIL!! Fail to take write lock! \r\n");
14102 return KAL_FALSE;
14103 }
14104
14105 if(mcf_combined_ota_file(combined_file_req) != MCF_OTA_R_SUCCESS){
14106 mcf_ut_format_err_str("Combine OTA fail!! \r\n");
14107 return KAL_FALSE;
14108 }
14109
14110 /* Second apply MCF_OTA_ut_gid_normal - reset */
14111
14112 combined_file_req->op = L4C_MCF_CONFIG_SET_FILE_PATH_AND_AUTO_SELECT_BIN;
14113 combined_file_req->config_type = L4C_MCF_CONFIG_TYPE_DEFAULT_BIN;
14114 combined_file_req->path_type = L4C_MCF_PATH_TYPE_RUNTIME;
14115 strcpy(combined_file_req->config1,"MCF_OTA_ut_gid_normal.mcfota");
14116 combined_file_req->reset = KAL_TRUE;
14117
14118 MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
14119 if (ota_file) {
14120 ret = mcf_ut_open_test_data("MCF_OTA_ut_gid_normal.mcfota", (kal_char *)(ota_file->buff), MCF_MAX_OTA_FILE_SIZE);
14121 if (ret == KAL_FALSE) {
14122 mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_OTA_ut_gid_normal.mcfota");
14123 return KAL_FALSE;
14124 }
14125
14126 MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
14127 } else {
14128 mcf_ut_format_err_str("Do full OTA FAIL!! Fail to take write lock! \r\n");
14129 return KAL_FALSE;
14130 }
14131
14132 if(mcf_combined_ota_file(combined_file_req) != MCF_OTA_R_SUCCESS){
14133 mcf_ut_format_err_str("Combine OTA fail!! \r\n");
14134 return KAL_FALSE;
14135 }
14136
14137 free_local_para((local_para_struct *)combined_file_req);
14138
14139 if ( !nvram_external_read_data(NVRAM_EF_MCF_OTA_FILE_LID, 1, (kal_uint8 *)&nv_ota_file, sizeof(nvram_ef_mcf_ota_file_info_struct)) ) {
14140 mcf_ut_format_err_str("Fail to write MCF OTA file info to NVRAM!!\r\n");
14141 return KAL_FALSE;
14142 }
14143
14144 if(strcmp(nv_ota_file.path,MCF_FS_CUSTOM_FOLDER_PATH) != 0){
14145 mcf_ut_format_err_str("Fail to store file path!!\r\n");
14146 return KAL_FALSE;
14147 }
14148
14149 if(strcmp(nv_ota_file.name,"MCF_OTA_ut_gid_normal.mcfota") != 0){
14150 mcf_ut_format_err_str("Fail to store file name!!\r\n");
14151 return KAL_FALSE;
14152 }
14153
14154 MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
14155 if (ota_file) {
14156 ret = mcf_ut_open_test_data("MCF_OTA_ut_gid_normal.mcfota", (kal_char *)(ota_file->buff), MCF_MAX_OTA_FILE_SIZE);
14157 if (ret == KAL_FALSE) {
14158 mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_OTA_ut_gid_normal.mcfota");
14159 return KAL_FALSE;
14160 }
14161
14162 MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
14163 } else {
14164 mcf_ut_format_err_str("Do full OTA FAIL!! Fail to take write lock! \r\n");
14165 return KAL_FALSE;
14166 }
14167
14168 mcf_ret = mcf_do_ota_full();
14169 if (mcf_ret != MCF_OTA_R_SUCCESS) {
14170 mcf_ut_format_err_str("Do full OTA FAIL!! ret(%d) \r\n", mcf_ret);
14171 return KAL_FALSE;
14172 }
14173
14174 ret = mcf_check_test_lid_value(NULL);
14175 if (ret == KAL_FALSE) {
14176 mcf_ut_format_err_str("Do full OTA positive test (Both SW verno of file and MD mismatch) FAIL!!\r\n");
14177 return KAL_FALSE;
14178 }
14179
14180 //Due to reset, need to reset
14181
14182 ret = mcf_check_lid_need_reset(NVRAM_EF_MCF_TEST_OTA_LID);
14183 if (ret != KAL_TRUE) {
14184 mcf_ut_format_err_str("Check LID need reset FAIL!! ret(%d), LID(%d) \r\n", ret, NVRAM_EF_MCF_TEST_OTA_LID);
14185 return KAL_FALSE;
14186 }
14187
14188 kal_mem_set(&test_lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
14189
14190 mcf_ret = mcf_read_ota_buffer(NVRAM_EF_MCF_TEST_OTA_QUERY_LID, 1, (kal_uint8 *)&test_lid_buffer, sizeof(nvram_ef_mcf_test_struct));
14191 if (mcf_ret != MCF_OTA_R_SUCCESS) {
14192 mcf_ut_format_err_str("Read OTA by LID FAIL!! ret(%d) \r\n", mcf_ret);
14193 return KAL_FALSE;
14194 }
14195
14196 if (kal_mem_cmp(&test_lid_buffer, &empty_buffer, sizeof(nvram_ef_mcf_test_struct)) != 0) {
14197 mcf_ut_format_err_str("Reset LID FAIL!!\r\n");
14198 return KAL_FALSE;
14199 }
14200
14201 /*
14202 * Merge two file positive test - Same path - both of append
14203 */
14204
14205 /* Write MCF OTA file version to NVRAM */
14206 kal_mem_set(&nv_ota_file, 0, sizeof(nvram_ef_mcf_ota_file_info_struct));
14207 strncpy(nv_ota_file.path, MCF_FS_DEFAULT_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN);
14208 strncpy(nv_ota_file.name, MCF_FS_DEFAULT_OTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN);
14209 if ( !nvram_external_write_data(NVRAM_EF_MCF_OTA_FILE_LID, 1, (kal_uint8 *)&nv_ota_file, sizeof(nvram_ef_mcf_ota_file_info_struct)) ) {
14210 mcf_ut_format_err_str("Fail to write MCF OTA file info to NVRAM!!\r\n");
14211 return KAL_FALSE;
14212 }
14213 kal_mem_set(&nv_sw_info, 0, sizeof(nvram_ef_mcf_sw_info_struct));
14214 strncpy(nv_sw_info.last_update_file.sw_version, MCF_UT_SW_VERNO, MCF_FILE_MAX_SW_VERSION_LEN);
14215 strncpy(nv_sw_info.last_update_file.gen_time, MCF_UT_GEN_TIME, MCF_FILE_MAX_GEN_TIME_LEN);
14216 strcpy(nv_sw_info.last_update_file.path, "");
14217 strcpy(nv_sw_info.last_update_file.name, "");
14218 if ( !nvram_external_write_data(NVRAM_EF_MCF_SW_INFO_LID, 1, (kal_uint8 *)&nv_sw_info, sizeof(nvram_ef_mcf_sw_info_struct)) ) {
14219 mcf_ut_format_err_str("Fail to write MCF sw info to NVRAM!!\r\n");
14220 return KAL_FALSE;
14221 }
14222
14223 kal_mem_set(&mcf_last_mod_lid_g, 0, sizeof(nvram_mcf_lid_info_struct));
14224 kal_mem_set(&mcf_curr_mod_lid_g, 0, sizeof(nvram_mcf_lid_info_struct));
14225
14226 /* Reset NVRAM_EF_MCF_INTERNAL_INFO_LID */
14227 kal_mem_set(&nv_int_info, 0, sizeof(nvram_ef_mcf_internal_info_struct));
14228 if ( !nvram_external_write_data(NVRAM_EF_MCF_INTERNAL_INFO_LID, 1, (kal_uint8 *)&nv_int_info, sizeof(nvram_ef_mcf_internal_info_struct)) ) {
14229 mcf_ut_format_err_str("Fail to write NVRAM_EF_MCF_INTERNAL_INFO_LID to NVRAM!!\r\n");
14230 return KAL_FALSE;
14231 }
14232
14233 assigned_file_req = (l4c_mcf_set_config_req_struct *)construct_local_para(sizeof(l4c_mcf_set_config_req_struct), TD_RESET);
14234 assigned_file_req->op = L4C_MCF_CONFIG_ASSIGN_COMBINED_PATH;
14235 assigned_file_req->config_type = L4C_MCF_CONFIG_TYPE_DEFAULT_BIN;
14236 assigned_file_req->path_type = L4C_MCF_PATH_TYPE_RUNTIME;
14237 strcpy(assigned_file_req->config1,"MCF_OTA_ut_merge.mcfota");
14238
14239 if(mcf_assign_combined_file_path(assigned_file_req) != MCF_OTA_R_SUCCESS){
14240 mcf_ut_format_err_str("Assign combined OTA fail!! \r\n");
14241 return KAL_FALSE;
14242 }
14243
14244 free_local_para((local_para_struct *)assigned_file_req);
14245
14246 MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
14247 if (ota_file) {
14248 kal_mem_set(ota_file->buff, 0, MCF_MAX_OTA_FILE_SIZE);
14249
14250 MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
14251 } else {
14252 mcf_ut_format_err_str("Do full OTA FAIL!! Fail to take write lock! \r\n");
14253 return KAL_FALSE;
14254 }
14255
14256 /* First. apply MCF_OTA_QUERY_ut_gid_normal.mcfota - append */
14257 combined_file_req = (l4c_mcf_set_config_req_struct *)construct_local_para(sizeof(l4c_mcf_set_config_req_struct), TD_RESET);
14258 combined_file_req->op = L4C_MCF_CONFIG_SET_FILE_PATH_AND_AUTO_SELECT_BIN;
14259 combined_file_req->config_type = L4C_MCF_CONFIG_TYPE_DEFAULT_BIN;
14260 combined_file_req->path_type = L4C_MCF_PATH_TYPE_RUNTIME;
14261 strcpy(combined_file_req->config1,"MCF_OTA_QUERY_ut_gid_normal.mcfota");
14262 combined_file_req->reset = KAL_FALSE;
14263
14264 MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
14265 if (ota_file) {
14266 ret = mcf_ut_open_test_data("MCF_OTA_QUERY_ut_gid_normal.mcfota", (kal_char *)(ota_file->buff), MCF_MAX_OTA_FILE_SIZE);
14267 if (ret == KAL_FALSE) {
14268 mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_OTA_QUERY_ut_gid_normal.mcfota");
14269 return KAL_FALSE;
14270 }
14271
14272 MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
14273 } else {
14274 mcf_ut_format_err_str("Do full OTA FAIL!! Fail to take write lock! \r\n");
14275 return KAL_FALSE;
14276 }
14277
14278 if(mcf_combined_ota_file(combined_file_req) != MCF_OTA_R_SUCCESS){
14279 mcf_ut_format_err_str("Combine OTA fail!! \r\n");
14280 return KAL_FALSE;
14281 }
14282
14283 /* Second apply MCF_OTA_ut_gid_normal - append */
14284
14285 combined_file_req->op = L4C_MCF_CONFIG_SET_FILE_PATH_AND_AUTO_SELECT_BIN;
14286 combined_file_req->config_type = L4C_MCF_CONFIG_TYPE_DEFAULT_BIN;
14287 combined_file_req->path_type = L4C_MCF_PATH_TYPE_RUNTIME;
14288 strcpy(combined_file_req->config1,"MCF_OTA_ut_normal.mcfota");
14289 combined_file_req->reset = KAL_FALSE;
14290
14291
14292 if(mcf_combined_ota_file(combined_file_req) != MCF_OTA_R_SUCCESS){
14293 mcf_ut_format_err_str("Combine OTA fail!! \r\n");
14294 return KAL_FALSE;
14295 }
14296
14297 MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
14298 if (ota_file) {
14299 kal_mem_cpy(mcf_file_buffer, ota_file->buff, MCF_MAX_OTA_FILE_SIZE);
14300 MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
14301 } else {
14302 mcf_ut_format_err_str("Do full OTA FAIL!! Fail to take write lock! \r\n");
14303 return KAL_FALSE;
14304 }
14305
14306 MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
14307 if (ota_file) {
14308 ret = mcf_ut_open_test_data("MCF_OTA_ut_gid_normal.mcfota", (kal_char *)(ota_file->buff), MCF_MAX_OTA_FILE_SIZE);
14309 if (ret == KAL_FALSE) {
14310 mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_OTA_ut_gid_normal.mcfota");
14311 return KAL_FALSE;
14312 }
14313
14314 MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
14315 } else {
14316 mcf_ut_format_err_str("Do full OTA FAIL!! Fail to take write lock! \r\n");
14317 return KAL_FALSE;
14318 }
14319
14320 MCF_R_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
14321 if (ota_file) {
14322 if(mcf_merge_ota_buffer(mcf_file_buffer, ota_file->buff, mcf_merge_buffer, MCF_MAX_OTA_FILE_SIZE) != KAL_TRUE){
14323 mcf_ut_format_err_str("Merge OTA file FAIL!!\r\n");
14324 ret = KAL_FALSE;
14325 MCF_R_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
14326 return ret;
14327 }
14328 MCF_R_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
14329 }
14330
14331 free_local_para((local_para_struct *)combined_file_req);
14332
14333 if ( !nvram_external_read_data(NVRAM_EF_MCF_OTA_FILE_LID, 1, (kal_uint8 *)&nv_ota_file, sizeof(nvram_ef_mcf_ota_file_info_struct)) ) {
14334 mcf_ut_format_err_str("Fail to write MCF OTA file info to NVRAM!!\r\n");
14335 return KAL_FALSE;
14336 }
14337
14338 if(strcmp(nv_ota_file.path,MCF_FS_CUSTOM_FOLDER_PATH) != 0){
14339 mcf_ut_format_err_str("Fail to store file path!!\r\n");
14340 return KAL_FALSE;
14341 }
14342
14343 if(strcmp(nv_ota_file.name,"MCF_OTA_ut_merge.mcfota") != 0){
14344 mcf_ut_format_err_str("Fail to store file name!!\r\n");
14345 return KAL_FALSE;
14346 }
14347
14348 MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
14349 if (ota_file) {
14350 kal_mem_cpy((kal_char *)(ota_file->buff), mcf_merge_buffer, MCF_MAX_OTA_FILE_SIZE);
14351 MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
14352 } else {
14353 mcf_ut_format_err_str("Do full OTA FAIL!! Fail to take write lock! \r\n");
14354 return KAL_FALSE;
14355 }
14356
14357 mcf_ret = mcf_do_ota_full();
14358 if (mcf_ret != MCF_OTA_R_SUCCESS) {
14359 mcf_ut_format_err_str("Do full OTA FAIL!! ret(%d) \r\n", mcf_ret);
14360 return KAL_FALSE;
14361 }
14362
14363 ret = mcf_check_test_lid_value(NULL);
14364 if (ret == KAL_FALSE) {
14365 mcf_ut_format_err_str("Do full OTA positive test (Both SW verno of file and MD mismatch) FAIL!!\r\n");
14366 return KAL_FALSE;
14367 }
14368
14369 //Due to append, no need to reset
14370 ret = mcf_check_lid_need_reset(NVRAM_EF_MCF_TEST_OTA_LID);
14371 if (ret != KAL_FALSE) {
14372 mcf_ut_format_err_str("Check LID need reset positive test (Modify 3 LIDs) FAIL!! ret(%d), LID(%d) \r\n", ret, NVRAM_EF_MCF_TEST_OTA_LID);
14373 return KAL_FALSE;
14374 }
14375
14376 ret = mcf_check_lid_need_reset(NVRAM_EF_MCF_TEST_OTA_QUERY_LID);
14377 if (ret != KAL_FALSE) {
14378 mcf_ut_format_err_str("Check LID need reset positive test (Modify 3 LIDs) FAIL!! ret(%d), LID(%d) \r\n", ret, NVRAM_EF_IMS_PROFILE_LID);
14379 return KAL_FALSE;
14380 }
14381
14382 kal_mem_set(&test_lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
14383
14384 mcf_ret = mcf_read_ota_buffer(NVRAM_EF_MCF_TEST_OTA_QUERY_LID, 1, (kal_uint8 *)&test_lid_buffer, sizeof(nvram_ef_mcf_test_struct));
14385 if (mcf_ret != MCF_OTA_R_SUCCESS) {
14386 mcf_ut_format_err_str("Read OTA by LID FAIL!! ret(%d) \r\n", mcf_ret);
14387 return KAL_FALSE;
14388 }
14389
14390 ret = mcf_check_test_lid_value((kal_uint8 *)&test_lid_buffer);
14391 if (ret == KAL_FALSE) {
14392 mcf_ut_format_err_str("Read OTA by LID positive test FAIL!!\r\n");
14393 return KAL_FALSE;
14394 }
14395
14396 //Deactive combine OTA
14397 combined_file_req = (l4c_mcf_set_config_req_struct *)construct_local_para(sizeof(l4c_mcf_set_config_req_struct), TD_RESET);
14398 combined_file_req->op = L4C_MCF_CONFIG_SET_FILE_PATH_AND_AUTO_SELECT_BIN;
14399 combined_file_req->config_type = L4C_MCF_CONFIG_TYPE_DEFAULT_BIN;
14400 combined_file_req->path_type = L4C_MCF_PATH_TYPE_RUNTIME;
14401 strcpy(combined_file_req->config1,"");
14402 combined_file_req->reset = KAL_FALSE;
14403
14404
14405 if(mcf_combined_ota_file(combined_file_req) != MCF_OTA_R_SUCCESS){
14406 mcf_ut_format_err_str("Combine OTA fail!! \r\n");
14407 return KAL_FALSE;
14408 }
14409
14410 MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
14411 if (ota_file) {
14412 ret = mcf_ut_open_test_data("MCF_OTA_ut_gid_normal.mcfota", (kal_char *)(ota_file->buff), MCF_MAX_OTA_FILE_SIZE);
14413 if (ret == KAL_FALSE) {
14414 mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_OTA_ut_gid_normal.mcfota");
14415 return KAL_FALSE;
14416 }
14417
14418 MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
14419 } else {
14420 mcf_ut_format_err_str("Do full OTA FAIL!! Fail to take write lock! \r\n");
14421 return KAL_FALSE;
14422 }
14423
14424 free_local_para((local_para_struct *)combined_file_req);
14425
14426 if ( !nvram_external_read_data(NVRAM_EF_MCF_OTA_FILE_LID, 1, (kal_uint8 *)&nv_ota_file, sizeof(nvram_ef_mcf_ota_file_info_struct)) ) {
14427 mcf_ut_format_err_str("Fail to write MCF OTA file info to NVRAM!!\r\n");
14428 return KAL_FALSE;
14429 }
14430
14431 if(strcmp(nv_ota_file.path,"") != 0){
14432 mcf_ut_format_err_str("Fail to store file path!!\r\n");
14433 return KAL_FALSE;
14434 }
14435
14436 if(strcmp(nv_ota_file.name,"") != 0){
14437 mcf_ut_format_err_str("Fail to store file name!!\r\n");
14438 return KAL_FALSE;
14439 }
14440
14441 mcf_ret = mcf_do_ota_full();
14442 if (mcf_ret != MCF_OTA_R_SUCCESS) {
14443 mcf_ut_format_err_str("Do full OTA FAIL!! ret(%d) \r\n", mcf_ret);
14444 return KAL_FALSE;
14445 }
14446
14447 ret = mcf_check_test_lid_value(NULL);
14448 if (ret == KAL_FALSE) {
14449 mcf_ut_format_err_str("Do full OTA positive test (Both SW verno of file and MD mismatch) FAIL!!\r\n");
14450 return KAL_FALSE;
14451 }
14452
14453 ret = mcf_check_lid_need_reset(NVRAM_EF_MCF_TEST_OTA_LID);
14454 if (ret != KAL_TRUE) {
14455 mcf_ut_format_err_str("Check LID need reset positive test (Modify 3 LIDs) FAIL!! ret(%d), LID(%d) \r\n", ret, NVRAM_EF_MCF_TEST_OTA_LID);
14456 return KAL_FALSE;
14457 }
14458
14459
14460 /*
14461 * Read TLV-OTA by LID & sbp_tag positive test - partially matched tag
14462 * NVRAM_EF_MCF_TEST_OTA_LID with tag SBP_PARTIAL_TAG (12_NA_NA), but user searches SBP_FULL_TAG (12_33_21)
14463 */
14464 /* Fill TLV-OTA file into buffer */
14465 /*Merge two OP-OTA file positive test - Same path */
14466
14467 /* Write MCF TLV-OTA file version to NVRAM */
14468 kal_mem_set(&nv_tlvota_file, 0, sizeof(nvram_ef_mcf_tlvota_file_info_struct));
14469 strncpy(nv_tlvota_file.path, MCF_FS_DEFAULT_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN);
14470 strncpy(nv_tlvota_file.name, MCF_FS_DEFAULT_TLVOTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN);
14471 if ( !nvram_external_write_data(NVRAM_EF_MCF_TLVOTA_FILE_LID, 1, (kal_uint8 *)&nv_tlvota_file, sizeof(nvram_ef_mcf_tlvota_file_info_struct)) ) {
14472 mcf_ut_format_err_str("Fail to write MCF TLV-OTA file info to NVRAM!!\r\n");
14473 return KAL_FALSE;
14474 }
14475
14476 /* Reset NVRAM_EF_MCF_INTERNAL_INFO_LID */
14477 kal_mem_set(&nv_int_info, 0, sizeof(nvram_ef_mcf_internal_info_struct));
14478 if ( !nvram_external_write_data(NVRAM_EF_MCF_INTERNAL_INFO_LID, 1, (kal_uint8 *)&nv_int_info, sizeof(nvram_ef_mcf_internal_info_struct)) ) {
14479 mcf_ut_format_err_str("Fail to write NVRAM_EF_MCF_INTERNAL_INFO_LID to NVRAM!!\r\n");
14480 return KAL_FALSE;
14481 }
14482
14483 /*Assign merged file name*/
14484 assigned_file_req = (l4c_mcf_set_config_req_struct *)construct_local_para(sizeof(l4c_mcf_set_config_req_struct), TD_RESET);
14485 assigned_file_req->op = L4C_MCF_CONFIG_ASSIGN_COMBINED_PATH;
14486 assigned_file_req->config_type = L4C_MCF_CONFIG_TYPE_CARRIER_BIN;
14487 assigned_file_req->path_type = L4C_MCF_PATH_TYPE_RUNTIME;
14488 strcpy(assigned_file_req->config1,"MCF_OPOTA_ut_merge.mcfopota");
14489
14490 if(mcf_assign_combined_file_path(assigned_file_req) != MCF_OTA_R_SUCCESS){
14491 mcf_ut_format_err_str("Assign combined OTA fail!! \r\n");
14492 return KAL_FALSE;
14493 }
14494
14495 free_local_para((local_para_struct *)assigned_file_req);
14496
14497 /* First. apply MCF_TLVOTA_SBP_partial_ut_gid_normal.mcfopota - reset */
14498 combined_file_req = (l4c_mcf_set_config_req_struct *)construct_local_para(sizeof(l4c_mcf_set_config_req_struct), TD_RESET);
14499 combined_file_req->op = L4C_MCF_CONFIG_SET_FILE_PATH_AND_AUTO_SELECT_BIN;
14500 combined_file_req->config_type = L4C_MCF_CONFIG_TYPE_CARRIER_BIN;
14501 combined_file_req->path_type = L4C_MCF_PATH_TYPE_RUNTIME;
14502 strcpy(combined_file_req->config1,"MCF_TLVOTA_SBP_partial_ut_gid_normal.mcfopota");
14503 combined_file_req->reset = KAL_TRUE;
14504
14505 tlvota_file = &(pMcf->tlvota_file[0]);
14506
14507 MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
14508 if (tlvota_file) {
14509 pFile = (mcf_tool_file_info_t *)(tlvota_file->buff);
14510 pItem = (mcf_tool_gid_tlvota_file_item_t *)(tlvota_file->buff + sizeof(mcf_tool_file_info_t));
14511
14512 ret = mcf_ut_open_test_data("MCF_TLVOTA_SBP_partial_ut_gid_normal.mcfopota", (kal_char *)(tlvota_file->buff), MCF_MAX_TLVOTA_FILE_SIZE);
14513 if (ret == KAL_FALSE) {
14514 mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_TLVOTA_SBP_partial_ut_gid_normal.mcfopota");
14515 return KAL_FALSE;
14516 }
14517
14518 MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
14519 } else {
14520 mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! Fail to take write lock! \r\n");
14521 return KAL_FALSE;
14522 }
14523
14524 if(mcf_combined_ota_file(combined_file_req) != MCF_OTA_R_SUCCESS){
14525 mcf_ut_format_err_str("Combine OTA fail!! \r\n");
14526 return KAL_FALSE;
14527 }
14528
14529
14530 /* Second. apply MCF_TLVOTA_SBP_full_ut_gid_query_normal.mcfopota - append */
14531 combined_file_req->op = L4C_MCF_CONFIG_SET_FILE_PATH_AND_AUTO_SELECT_BIN;
14532 combined_file_req->config_type = L4C_MCF_CONFIG_TYPE_CARRIER_BIN;
14533 combined_file_req->path_type = L4C_MCF_PATH_TYPE_RUNTIME;
14534 strcpy(combined_file_req->config1,"MCF_TLVOTA_SBP_full_ut_gid_query_normal.mcfopota");
14535 combined_file_req->reset = KAL_FALSE;
14536
14537 tlvota_file = &(pMcf->tlvota_file[0]);
14538
14539 if(mcf_combined_ota_file(combined_file_req) != MCF_OTA_R_SUCCESS){
14540 mcf_ut_format_err_str("Combine OTA fail!! \r\n");
14541 return KAL_FALSE;
14542 }
14543
14544 //Due to append, no need to reset
14545 ret = mcf_check_lid_need_reset_by_psid(NVRAM_EF_MCF_TEST_OTA_LID, 0);
14546 if (ret != KAL_FALSE) {
14547 mcf_ut_format_err_str("Check LID need reset positive test (Modify 3 LIDs) FAIL!! ret(%d), LID(%d) \r\n", ret, NVRAM_EF_MCF_TEST_OTA_LID);
14548 return KAL_FALSE;
14549 }
14550
14551 ret = mcf_check_lid_need_reset_by_psid(NVRAM_EF_MCF_TEST_OTA_QUERY_LID, 0);
14552 if (ret != KAL_FALSE) {
14553 mcf_ut_format_err_str("Check LID need reset positive test (Modify 3 LIDs) FAIL!! ret(%d), LID(%d) \r\n", ret, NVRAM_EF_IMS_PROFILE_LID);
14554 return KAL_FALSE;
14555 }
14556
14557
14558 MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
14559 if (tlvota_file) {
14560 kal_mem_cpy(mcf_file_buffer, (kal_char *)(tlvota_file->buff), MCF_MAX_TLVOTA_FILE_SIZE);
14561
14562 MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
14563 } else {
14564 mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! Fail to take write lock! \r\n");
14565 return KAL_FALSE;
14566 }
14567
14568 MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
14569 if (tlvota_file) {
14570 pFile = (mcf_tool_file_info_t *)(tlvota_file->buff);
14571 pItem = (mcf_tool_gid_tlvota_file_item_t *)(tlvota_file->buff + sizeof(mcf_tool_file_info_t));
14572
14573 ret = mcf_ut_open_test_data("MCF_TLVOTA_SBP_full_ut_gid_query_normal.mcfopota", (kal_char *)(tlvota_file->buff), MCF_MAX_TLVOTA_FILE_SIZE);
14574 if (ret == KAL_FALSE) {
14575 mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_TLVOTA_SBP_full_ut_gid_query_normal.mcfopota");
14576 return KAL_FALSE;
14577 }
14578
14579 MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
14580 } else {
14581 mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! Fail to take write lock! \r\n");
14582 return KAL_FALSE;
14583 }
14584
14585 MCF_R_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
14586 if (tlvota_file) {
14587 if(mcf_merge_ota_buffer(mcf_file_buffer, tlvota_file->buff, mcf_merge_buffer, MCF_MAX_TLVOTA_FILE_SIZE) != KAL_TRUE){
14588 //XXX
14589 ret = MCF_OTA_R_INVALID_PARAMETER;
14590 MCF_R_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
14591 return ret;
14592 }
14593 MCF_R_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
14594 }
14595
14596 free_local_para((local_para_struct *)combined_file_req);
14597
14598 if ( !nvram_external_read_data(NVRAM_EF_MCF_TLVOTA_FILE_LID, 1, (kal_uint8 *)&nv_tlvota_file, sizeof(nvram_ef_mcf_tlvota_file_info_struct)) ) {
14599 mcf_ut_format_err_str("Fail to write MCF TLVOTA file info to NVRAM!!\r\n");
14600 return KAL_FALSE;
14601 }
14602
14603 if(strcmp(nv_tlvota_file.path,MCF_FS_CUSTOM_FOLDER_PATH) != 0){
14604 mcf_ut_format_err_str("Fail to store file path!!\r\n");
14605 return KAL_FALSE;
14606 }
14607
14608 if(strcmp(nv_tlvota_file.name,"MCF_OPOTA_ut_merge.mcfopota") != 0){
14609 mcf_ut_format_err_str("Fail to store file name!!\r\n");
14610 return KAL_FALSE;
14611 }
14612
14613 MCF_R_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
14614 if (tlvota_file) {
14615 kal_mem_cpy(tlvota_file->buff, mcf_merge_buffer, MCF_MAX_TLVOTA_FILE_SIZE);
14616 MCF_R_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
14617 }
14618
14619 // NVRAM_EF_MCF_TEST_OTA_LID with SBP_PARTIAL_TAG
14620 kal_mem_set(&sbp_tag, 0, sizeof(mcf_tlvota_sbp_tag_t));
14621 sbp_tag.sbp_id = SBP_TAG_SBPID;
14622 strncpy(sbp_tag.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
14623 strncpy(sbp_tag.mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
14624
14625
14626 kal_mem_set(&test_lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
14627
14628 mcf_ret = mcf_read_tlvota_buffer_sbp_tag(0, sbp_tag, NVRAM_EF_MCF_TEST_OTA_LID, (kal_uint8 *)&test_lid_buffer, sizeof(nvram_ef_mcf_test_struct));
14629 if (mcf_ret != MCF_OTA_R_SUCCESS) {
14630 mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! i(%d), ret(%d) \r\n", 0, mcf_ret);
14631 return KAL_FALSE;
14632 }
14633
14634 ret = mcf_check_test_lid_value((kal_uint8 *)&test_lid_buffer);
14635 if (ret == KAL_FALSE) {
14636 mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag positive test (partially matched tag) FAIL!!\r\n");
14637 return KAL_FALSE;
14638 }
14639
14640 kal_mem_set(&test_lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
14641
14642 mcf_ret = mcf_read_tlvota_buffer_sbp_tag(0, sbp_tag, NVRAM_EF_MCF_TEST_OTA_QUERY_LID, (kal_uint8 *)&test_lid_buffer, sizeof(nvram_ef_mcf_test_struct));
14643 if (mcf_ret != MCF_OTA_R_SUCCESS) {
14644 mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! i(%d), ret(%d) \r\n", 0, mcf_ret);
14645 return KAL_FALSE;
14646 }
14647
14648 ret = mcf_check_test_lid_value((kal_uint8 *)&test_lid_buffer);
14649 if (ret == KAL_FALSE) {
14650 mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag positive test (partially matched tag) FAIL!!\r\n");
14651 return KAL_FALSE;
14652 }
14653
14654 /* Test By OP merged reset */
14655
14656 /* Write MCF TLV-OTA file version to NVRAM */
14657 kal_mem_set(&nv_tlvota_file, 0, sizeof(nvram_ef_mcf_tlvota_file_info_struct));
14658 strncpy(nv_tlvota_file.path, MCF_FS_DEFAULT_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN);
14659 strncpy(nv_tlvota_file.name, MCF_FS_DEFAULT_TLVOTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN);
14660 if ( !nvram_external_write_data(NVRAM_EF_MCF_TLVOTA_FILE_LID, 1, (kal_uint8 *)&nv_tlvota_file, sizeof(nvram_ef_mcf_tlvota_file_info_struct)) ) {
14661 mcf_ut_format_err_str("Fail to write MCF TLV-OTA file info to NVRAM!!\r\n");
14662 return KAL_FALSE;
14663 }
14664
14665 /* Reset NVRAM_EF_MCF_INTERNAL_INFO_LID */
14666 kal_mem_set(&nv_int_info, 0, sizeof(nvram_ef_mcf_internal_info_struct));
14667 if ( !nvram_external_write_data(NVRAM_EF_MCF_INTERNAL_INFO_LID, 1, (kal_uint8 *)&nv_int_info, sizeof(nvram_ef_mcf_internal_info_struct)) ) {
14668 mcf_ut_format_err_str("Fail to write NVRAM_EF_MCF_INTERNAL_INFO_LID to NVRAM!!\r\n");
14669 return KAL_FALSE;
14670 }
14671
14672 /*Assign merged file name*/
14673 assigned_file_req = (l4c_mcf_set_config_req_struct *)construct_local_para(sizeof(l4c_mcf_set_config_req_struct), TD_RESET);
14674 assigned_file_req->op = L4C_MCF_CONFIG_ASSIGN_COMBINED_PATH;
14675 assigned_file_req->config_type = L4C_MCF_CONFIG_TYPE_CARRIER_BIN;
14676 assigned_file_req->path_type = L4C_MCF_PATH_TYPE_RUNTIME;
14677 strcpy(assigned_file_req->config1,"MCF_OPOTA_ut_merge.mcfopota");
14678
14679 if(mcf_assign_combined_file_path(assigned_file_req) != MCF_OTA_R_SUCCESS){
14680 mcf_ut_format_err_str("Assign combined OTA fail!! \r\n");
14681 return KAL_FALSE;
14682 }
14683
14684 free_local_para((local_para_struct *)assigned_file_req);
14685
14686 /* First. apply MCF_TLVOTA_SBP_partial_ut_3LIDs_gid_normal.mcfopota - reset */
14687 combined_file_req = (l4c_mcf_set_config_req_struct *)construct_local_para(sizeof(l4c_mcf_set_config_req_struct), TD_RESET);
14688 combined_file_req->op = L4C_MCF_CONFIG_SET_FILE_PATH_AND_AUTO_SELECT_BIN;
14689 combined_file_req->config_type = L4C_MCF_CONFIG_TYPE_CARRIER_BIN;
14690 combined_file_req->path_type = L4C_MCF_PATH_TYPE_RUNTIME;
14691 strcpy(combined_file_req->config1,"MCF_TLVOTA_SBP_partial_ut_3LIDs_gid_normal.mcfopota");
14692 combined_file_req->reset = KAL_TRUE;
14693
14694 tlvota_file = &(pMcf->tlvota_file[0]);
14695
14696 MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
14697 if (tlvota_file) {
14698 pFile = (mcf_tool_file_info_t *)(tlvota_file->buff);
14699 pItem = (mcf_tool_gid_tlvota_file_item_t *)(tlvota_file->buff + sizeof(mcf_tool_file_info_t));
14700
14701 ret = mcf_ut_open_test_data("MCF_TLVOTA_SBP_partial_ut_3LIDs_gid_normal.mcfopota", (kal_char *)(tlvota_file->buff), MCF_MAX_TLVOTA_FILE_SIZE);
14702 if (ret == KAL_FALSE) {
14703 mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_TLVOTA_SBP_partial_ut_3LIDs_gid_normal.mcfopota");
14704 return KAL_FALSE;
14705 }
14706
14707 MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
14708 } else {
14709 mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! Fail to take write lock! \r\n");
14710 return KAL_FALSE;
14711 }
14712
14713 if(mcf_combined_ota_file(combined_file_req) != MCF_OTA_R_SUCCESS){
14714 mcf_ut_format_err_str("Combine OTA fail!! \r\n");
14715 return KAL_FALSE;
14716 }
14717
14718
14719 /* Second. apply MCF_TLVOTA_SBP_partial_ut_2LIDs_gid_normal.mcfopota - append */
14720 combined_file_req->op = L4C_MCF_CONFIG_SET_FILE_PATH_AND_AUTO_SELECT_BIN;
14721 combined_file_req->config_type = L4C_MCF_CONFIG_TYPE_CARRIER_BIN;
14722 combined_file_req->path_type = L4C_MCF_PATH_TYPE_RUNTIME;
14723 strcpy(combined_file_req->config1,"MCF_TLVOTA_SBP_partial_ut_2LIDs_gid_normal.mcfopota");
14724 combined_file_req->reset = KAL_FALSE;
14725 combined_file_req->trigger_dsbp = KAL_TRUE;
14726
14727 tlvota_file = &(pMcf->tlvota_file[0]);
14728
14729 if(mcf_combined_ota_file(combined_file_req) != MCF_OTA_R_SUCCESS){
14730 mcf_ut_format_err_str("Combine OTA fail!! \r\n");
14731 return KAL_FALSE;
14732 }
14733
14734 MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
14735 if (tlvota_file) {
14736 kal_mem_cpy(mcf_file_buffer, (kal_char *)(tlvota_file->buff), MCF_MAX_TLVOTA_FILE_SIZE);
14737
14738 MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
14739 } else {
14740 mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! Fail to take write lock! \r\n");
14741 return KAL_FALSE;
14742 }
14743
14744 MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
14745 if (tlvota_file) {
14746 pFile = (mcf_tool_file_info_t *)(tlvota_file->buff);
14747 pItem = (mcf_tool_gid_tlvota_file_item_t *)(tlvota_file->buff + sizeof(mcf_tool_file_info_t));
14748
14749 ret = mcf_ut_open_test_data("MCF_TLVOTA_SBP_partial_ut_2LIDs_gid_normal.mcfopota", (kal_char *)(tlvota_file->buff), MCF_MAX_TLVOTA_FILE_SIZE);
14750 if (ret == KAL_FALSE) {
14751 mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_TLVOTA_SBP_partial_ut_2LIDs_gid_normal.mcfopota");
14752 return KAL_FALSE;
14753 }
14754
14755 MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
14756 } else {
14757 mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! Fail to take write lock! \r\n");
14758 return KAL_FALSE;
14759 }
14760
14761 MCF_R_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
14762 if (tlvota_file) {
14763 if(mcf_merge_ota_buffer(mcf_file_buffer, tlvota_file->buff, mcf_merge_buffer, MCF_MAX_TLVOTA_FILE_SIZE) != KAL_TRUE){
14764 //XXX
14765 ret = MCF_OTA_R_INVALID_PARAMETER;
14766 MCF_R_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
14767 return ret;
14768 }
14769 MCF_R_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
14770 }
14771
14772 free_local_para((local_para_struct *)combined_file_req);
14773
14774 if ( !nvram_external_read_data(NVRAM_EF_MCF_TLVOTA_FILE_LID, 1, (kal_uint8 *)&nv_tlvota_file, sizeof(nvram_ef_mcf_tlvota_file_info_struct)) ) {
14775 mcf_ut_format_err_str("Fail to write MCF TLVOTA file info to NVRAM!!\r\n");
14776 return KAL_FALSE;
14777 }
14778
14779 if(strcmp(nv_tlvota_file.path,MCF_FS_CUSTOM_FOLDER_PATH) != 0){
14780 mcf_ut_format_err_str("Fail to store file path!!\r\n");
14781 return KAL_FALSE;
14782 }
14783
14784 if(strcmp(nv_tlvota_file.name,"MCF_OPOTA_ut_merge.mcfopota") != 0){
14785 mcf_ut_format_err_str("Fail to store file name!!\r\n");
14786 return KAL_FALSE;
14787 }
14788
14789 MCF_R_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
14790 if (tlvota_file) {
14791 kal_mem_cpy(tlvota_file->buff, mcf_merge_buffer, MCF_MAX_TLVOTA_FILE_SIZE);
14792 MCF_R_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
14793 }
14794
14795 param_ptr.sbp_id = SBP_TAG_SBPID;
14796 param_ptr.ps_id = 0;
14797 kal_mem_cpy(param_ptr.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
14798 kal_mem_cpy(param_ptr.mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
14799 kal_mem_set(param_ptr.iccid, 0, 21);
14800
14801 ret = mcf_auto_select_tlvota_file(&param_ptr);
14802 if (ret != KAL_TRUE) {
14803 mcf_ut_format_err_str("auto select tlvota file FAIL!! ret(%d) \r\n", ret);
14804 return KAL_FALSE;
14805 }
14806
14807 //Due to append, no need to reset
14808 ret = mcf_check_lid_need_reset_by_psid(NVRAM_EF_MCF_TEST_OTA_LID, 0);
14809 if (ret != KAL_FALSE) {
14810 mcf_ut_format_err_str("Check LID need reset positive test (Modify 2 LIDs) FAIL!! ret(%d), LID(%d) \r\n", ret, NVRAM_EF_MCF_TEST_OTA_LID);
14811 return KAL_FALSE;
14812 }
14813
14814 ret = mcf_check_lid_need_reset_by_psid(NVRAM_EF_IMS_PROFILE_LID, 0);
14815 if (ret != KAL_FALSE) {
14816 mcf_ut_format_err_str("Check LID need reset positive test (Modify 2 LIDs) FAIL!! ret(%d), LID(%d) \r\n", ret, NVRAM_EF_IMS_PROFILE_LID);
14817 return KAL_FALSE;
14818 }
14819
14820 ret = mcf_check_lid_need_reset_by_psid(NVRAM_EF_XCAP_PROFILE_LID, 0);
14821 if (ret != KAL_FALSE) {
14822 mcf_ut_format_err_str("Check LID need reset positive test (Modify 2 LIDs) FAIL!! ret(%d), LID(%d) \r\n", ret, NVRAM_EF_XCAP_PROFILE_LID);
14823 return KAL_FALSE;
14824 }
14825
14826 ret = mcf_set_config_after_dsbp(0);
14827 if (ret != KAL_TRUE) {
14828 mcf_ut_format_err_str("can not set config. ret(%d) \r\n", ret);
14829 return KAL_FALSE;
14830 }
14831
14832 //Apply MCF_TLVOTA_SBP_partial_ut_gid_normal with reset
14833
14834 combined_file_req = (l4c_mcf_set_config_req_struct *)construct_local_para(sizeof(l4c_mcf_set_config_req_struct), TD_RESET);
14835 combined_file_req->op = L4C_MCF_CONFIG_SET_FILE_PATH_AND_AUTO_SELECT_BIN;
14836 combined_file_req->config_type = L4C_MCF_CONFIG_TYPE_CARRIER_BIN;
14837 combined_file_req->path_type = L4C_MCF_PATH_TYPE_RUNTIME;
14838 strcpy(combined_file_req->config1,"MCF_TLVOTA_SBP_partial_ut_gid_normal.mcfopota");
14839 combined_file_req->reset = KAL_TRUE;
14840 combined_file_req->trigger_dsbp = KAL_TRUE;
14841
14842 tlvota_file = &(pMcf->tlvota_file[0]);
14843
14844 MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
14845 if (tlvota_file) {
14846 pFile = (mcf_tool_file_info_t *)(tlvota_file->buff);
14847 pItem = (mcf_tool_gid_tlvota_file_item_t *)(tlvota_file->buff + sizeof(mcf_tool_file_info_t));
14848
14849 ret = mcf_ut_open_test_data("MCF_TLVOTA_SBP_partial_ut_gid_normal.mcfopota", (kal_char *)(tlvota_file->buff), MCF_MAX_TLVOTA_FILE_SIZE);
14850 if (ret == KAL_FALSE) {
14851 mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_TLVOTA_SBP_partial_ut_gid_normal.mcfopota");
14852 return KAL_FALSE;
14853 }
14854
14855 MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
14856 } else {
14857 mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! Fail to take write lock! \r\n");
14858 return KAL_FALSE;
14859 }
14860
14861 if(mcf_combined_ota_file(combined_file_req) != MCF_OTA_R_SUCCESS){
14862 mcf_ut_format_err_str("Combine OTA fail!! \r\n");
14863 return KAL_FALSE;
14864 }
14865 free_local_para((local_para_struct *)combined_file_req);
14866
14867 param_ptr.sbp_id = SBP_TAG_SBPID;
14868 param_ptr.ps_id = 0;
14869 kal_mem_cpy(param_ptr.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
14870 kal_mem_cpy(param_ptr.mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
14871 kal_mem_set(param_ptr.iccid, 0, 21);
14872
14873 ret = mcf_auto_select_tlvota_file(&param_ptr);
14874 if (ret != KAL_TRUE) {
14875 mcf_ut_format_err_str("auto select tlvota file FAIL!! ret(%d) \r\n", ret);
14876 return KAL_FALSE;
14877 }
14878
14879 //Due to reset, need to reset
14880 ret = mcf_check_lid_need_reset_by_psid(NVRAM_EF_MCF_TEST_OTA_LID, 0);
14881 if (ret != KAL_TRUE) {
14882 mcf_ut_format_err_str("Check LID need reset reset test FAIL!! ret(%d), LID(%d) \r\n", ret, NVRAM_EF_MCF_TEST_OTA_LID);
14883 return KAL_FALSE;
14884 }
14885
14886 ret = mcf_check_lid_need_reset_by_psid(NVRAM_EF_IMS_PROFILE_LID, 0);
14887 if (ret != KAL_TRUE) {
14888 mcf_ut_format_err_str("Check LID need reset reset test FAIL!! ret(%d), LID(%d) \r\n", ret, NVRAM_EF_IMS_PROFILE_LID);
14889 return KAL_FALSE;
14890 }
14891
14892 ret = mcf_check_lid_need_reset_by_psid(NVRAM_EF_XCAP_PROFILE_LID, 0);
14893 if (ret != KAL_TRUE) {
14894 mcf_ut_format_err_str("Check LID need reset reset test FAIL!! ret(%d), LID(%d) \r\n", ret, NVRAM_EF_XCAP_PROFILE_LID);
14895 return KAL_FALSE;
14896 }
14897
14898
14899 MCF_UT_PASS();
14900 return KAL_TRUE;
14901}
14902
14903kal_bool mcf_ut_write_variable_value(void *p_param, kal_char *p_ret_err_str, kal_uint32 *p_ret_err_str_sz)
14904{
14905 kal_bool ret;
14906 l4c_mcf_variable_value_operation_req_struct *req = NULL;
14907 l4c_mcf_variable_value_operation_cnf_struct *cnf = NULL;
14908 mcf_ota_result_e mcf_ret = MCF_OTA_R_SUCCESS;
14909 mcf_t *pMcf = mcf_get_instance();
14910 mcf_ota_file_t *ota_file = &(pMcf->ota_file);
14911 mcf_tool_file_info_t *pFile = (mcf_tool_file_info_t *)(ota_file->buff);
14912 nvram_ef_mcf_ota_file_info_struct nv_ota_file;
14913 nvram_ef_mcf_sw_info_struct nv_sw_info;
14914 mcf_tlvota_file_t *tlvota_file;
14915 nvram_ef_mcf_tlvota_file_info_struct nv_tlvota_file;
14916 mcf_tlvota_sbp_tag_t sbp_tag;
14917 kal_uint8 i;
14918 kal_uint8 test_pattern[512];
14919 kal_uint8 array_tag[16];
14920 nvram_ef_mcf_test_struct nv_lid_buffer;
14921 kal_uint32 int_value;
14922 kal_char value[256];
14923 kal_uint16 sh_value;
14924 nvram_ef_mcf_test_struct lid_buffer;
14925 l4c_mcf_variable_value_operation_req_struct *query_req = NULL;
14926 l4c_mcf_variable_value_operation_cnf_struct *query_cnf = NULL;
14927 double db_value;
14928 float fl_value;
14929 kal_uint8 ch_value;
14930
14931 mcf_ut_init();
14932
14933 /* Write MCF OTA file version to NVRAM */
14934 kal_mem_set(&nv_ota_file, 0, sizeof(nvram_ef_mcf_ota_file_info_struct));
14935 strncpy(nv_ota_file.path, MCF_FS_DEFAULT_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN);
14936 strncpy(nv_ota_file.name, MCF_FS_DEFAULT_OTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN);
14937 if ( !nvram_external_write_data(NVRAM_EF_MCF_OTA_FILE_LID, 1, (kal_uint8 *)&nv_ota_file, sizeof(nvram_ef_mcf_ota_file_info_struct)) ) {
14938 mcf_ut_format_err_str("Fail to write MCF OTA file info to NVRAM!!\r\n");
14939 return KAL_FALSE;
14940 }
14941 kal_mem_set(&nv_sw_info, 0, sizeof(nvram_ef_mcf_sw_info_struct));
14942 strncpy(nv_sw_info.last_update_file.sw_version, MCF_UT_SW_VERNO, MCF_FILE_MAX_SW_VERSION_LEN);
14943 strncpy(nv_sw_info.last_update_file.gen_time, MCF_UT_GEN_TIME, MCF_FILE_MAX_GEN_TIME_LEN);
14944 strcpy(nv_sw_info.last_update_file.path, "");
14945 strcpy(nv_sw_info.last_update_file.name, "");
14946 if ( !nvram_external_write_data(NVRAM_EF_MCF_SW_INFO_LID, 1, (kal_uint8 *)&nv_sw_info, sizeof(nvram_ef_mcf_sw_info_struct)) ) {
14947 mcf_ut_format_err_str("Fail to write MCF sw info to NVRAM!!\r\n");
14948 return KAL_FALSE;
14949 }
14950
14951 //Byte operation - VAL_BYTE_11
14952 req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
14953 req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
14954 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_WRITE_OTA;
14955 req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
14956 req->num = MCF_TEST_OTA_LID_BASE_GID+44;
14957 req->rec_id = 1;
14958 req->len = 1;
14959 kal_mem_set(array_tag, 0, 16);
14960 strcpy(req->config, array_tag);
14961 int_value = 64;
14962 mcf_bytes_to_hex(&int_value, 1, KAL_FALSE, &value);
14963 strcpy((kal_char *)(req->value), value);
14964
14965 cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
14966
14967
14968 mcf_ret = mcf_set_variable_value(req, cnf);
14969 if (mcf_ret != MCF_OTA_R_SUCCESS) {
14970 mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "VAL_BYTE_11");
14971 return KAL_FALSE;
14972 }
14973
14974 MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
14975 if (ota_file) {
14976 kal_mem_cpy(ota_file->buff, mcf_merge_buffer, MCF_MAX_OTA_FILE_SIZE);
14977
14978 MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
14979 } else {
14980 mcf_ut_format_err_str("Do full OTA FAIL!! Fail to take write lock! \r\n");
14981 return KAL_FALSE;
14982 }
14983
14984 mcf_ret = mcf_do_ota_full();
14985 if (mcf_ret != MCF_OTA_R_SUCCESS) {
14986 mcf_ut_format_err_str("Reset LID FAIL!! ret(%d) \r\n", mcf_ret);
14987 return KAL_FALSE;
14988 }
14989
14990 if ( !nvram_external_read_data(NVRAM_EF_MCF_TEST_OTA_LID, 1, &lid_buffer, sizeof(nvram_ef_mcf_test_struct)) ) {
14991 printf("Fail to read NVRAM_EF_MCF_TEST_OTA_LID!!\r\n");
14992 ret = KAL_FALSE;
14993 }
14994
14995 kal_mem_set(test_pattern,0,512);
14996 mcf_bytes_to_hex(&(lid_buffer.val_byte_11), 1, KAL_FALSE, &test_pattern);
14997 mcf_toupper((char *)test_pattern);
14998 mcf_toupper((char *)req->value);
14999
15000 if(strncmp((kal_char *)(req->value), test_pattern, cnf->len*2) != 0){
15001 mcf_ut_format_err_str("VAL_BYTE_11, %s, %s\r\n", req->value, test_pattern);
15002 return KAL_FALSE;
15003 }
15004
15005 if(cnf->len != 1){
15006 mcf_ut_format_err_str("VAL_BYTE_11, %d, %d\r\n", cnf->len, 1);
15007 return KAL_FALSE;
15008 }
15009
15010
15011 free_local_para((local_para_struct *)req);
15012 free_local_para((local_para_struct *)cnf);
15013
15014 /* Write MCF OTA file version to NVRAM */
15015 kal_mem_set(&nv_ota_file, 0, sizeof(nvram_ef_mcf_ota_file_info_struct));
15016 strncpy(nv_ota_file.path, MCF_FS_DEFAULT_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN);
15017 strncpy(nv_ota_file.name, MCF_FS_DEFAULT_OTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN);
15018 if ( !nvram_external_write_data(NVRAM_EF_MCF_OTA_FILE_LID, 1, (kal_uint8 *)&nv_ota_file, sizeof(nvram_ef_mcf_ota_file_info_struct)) ) {
15019 mcf_ut_format_err_str("Fail to write MCF OTA file info to NVRAM!!\r\n");
15020 return KAL_FALSE;
15021 }
15022 kal_mem_set(&nv_sw_info, 0, sizeof(nvram_ef_mcf_sw_info_struct));
15023 strncpy(nv_sw_info.last_update_file.sw_version, MCF_UT_SW_VERNO, MCF_FILE_MAX_SW_VERSION_LEN);
15024 strncpy(nv_sw_info.last_update_file.gen_time, MCF_UT_GEN_TIME, MCF_FILE_MAX_GEN_TIME_LEN);
15025 strcpy(nv_sw_info.last_update_file.path, "");
15026 strcpy(nv_sw_info.last_update_file.name, "");
15027 if ( !nvram_external_write_data(NVRAM_EF_MCF_SW_INFO_LID, 1, (kal_uint8 *)&nv_sw_info, sizeof(nvram_ef_mcf_sw_info_struct)) ) {
15028 mcf_ut_format_err_str("Fail to write MCF sw info to NVRAM!!\r\n");
15029 return KAL_FALSE;
15030 }
15031
15032 //Bit operation - VAL_BIT_BYTE_11
15033 req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
15034 req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
15035 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_WRITE_OTA;
15036 req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
15037 req->num = MCF_TEST_OTA_LID_BASE_GID+18;
15038 req->rec_id = 1;
15039 req->len = 0;
15040 kal_mem_set(array_tag, 0, 16);
15041 strcpy(req->config, array_tag);
15042 int_value = 255;
15043 mcf_bytes_to_hex(&int_value, 1, KAL_FALSE, &value);
15044 strcpy((kal_char *)(req->value), value);
15045
15046 cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
15047
15048 mcf_ret = mcf_set_variable_value(req, cnf);
15049 if (mcf_ret != MCF_OTA_R_SUCCESS) {
15050 mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "VAL_BYTE_11");
15051 return KAL_FALSE;
15052 }
15053
15054 MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
15055 if (ota_file) {
15056 kal_mem_cpy(ota_file->buff, mcf_merge_buffer, MCF_MAX_OTA_FILE_SIZE);
15057
15058 MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
15059 } else {
15060 mcf_ut_format_err_str("Do full OTA FAIL!! Fail to take write lock! \r\n");
15061 return KAL_FALSE;
15062 }
15063
15064 mcf_ret = mcf_do_ota_full();
15065 if (mcf_ret != MCF_OTA_R_SUCCESS) {
15066 mcf_ut_format_err_str("Reset LID FAIL!! ret(%d) \r\n", mcf_ret);
15067 return KAL_FALSE;
15068 }
15069
15070 if ( !nvram_external_read_data(NVRAM_EF_MCF_TEST_OTA_LID, 1, &lid_buffer, sizeof(nvram_ef_mcf_test_struct)) ) {
15071 printf("Fail to read NVRAM_EF_MCF_TEST_OTA_LID!!\r\n");
15072 ret = KAL_FALSE;
15073 }
15074
15075 kal_mem_set(test_pattern,0,512);
15076 mcf_bytes_to_hex(&(lid_buffer.val_bit_byte_11), 1, KAL_FALSE, &test_pattern);
15077 mcf_toupper((char *)test_pattern);
15078 mcf_toupper((char *)req->value);
15079
15080 if(strncmp((kal_char *)(req->value), test_pattern, cnf->len*2) != 0){
15081 mcf_ut_format_err_str("val_bit_byte_11, %s, %s\r\n", req->value, test_pattern);
15082 return KAL_FALSE;
15083 }
15084
15085 if(cnf->len != 1){
15086 mcf_ut_format_err_str("val_bit_byte_11, %d, %d\r\n", cnf->len, 1);
15087 return KAL_FALSE;
15088 }
15089
15090 free_local_para((local_para_struct *)req);
15091 free_local_para((local_para_struct *)cnf);
15092
15093 /* Write MCF OTA file version to NVRAM */
15094 kal_mem_set(&nv_ota_file, 0, sizeof(nvram_ef_mcf_ota_file_info_struct));
15095 strncpy(nv_ota_file.path, MCF_FS_DEFAULT_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN);
15096 strncpy(nv_ota_file.name, MCF_FS_DEFAULT_OTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN);
15097 if ( !nvram_external_write_data(NVRAM_EF_MCF_OTA_FILE_LID, 1, (kal_uint8 *)&nv_ota_file, sizeof(nvram_ef_mcf_ota_file_info_struct)) ) {
15098 mcf_ut_format_err_str("Fail to write MCF OTA file info to NVRAM!!\r\n");
15099 return KAL_FALSE;
15100 }
15101 kal_mem_set(&nv_sw_info, 0, sizeof(nvram_ef_mcf_sw_info_struct));
15102 strncpy(nv_sw_info.last_update_file.sw_version, MCF_UT_SW_VERNO, MCF_FILE_MAX_SW_VERSION_LEN);
15103 strncpy(nv_sw_info.last_update_file.gen_time, MCF_UT_GEN_TIME, MCF_FILE_MAX_GEN_TIME_LEN);
15104 strcpy(nv_sw_info.last_update_file.path, "");
15105 strcpy(nv_sw_info.last_update_file.name, "");
15106 if ( !nvram_external_write_data(NVRAM_EF_MCF_SW_INFO_LID, 1, (kal_uint8 *)&nv_sw_info, sizeof(nvram_ef_mcf_sw_info_struct)) ) {
15107 mcf_ut_format_err_str("Fail to write MCF sw info to NVRAM!!\r\n");
15108 return KAL_FALSE;
15109 }
15110
15111 //Bit operation - VAL_BIT_BYTE_11.B3
15112 req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
15113 req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
15114 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_WRITE_OTA;
15115 req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
15116 req->num = MCF_TEST_OTA_LID_BASE_GID+21;
15117 req->rec_id = 1;
15118 req->len = 0;
15119 kal_mem_set(array_tag, 0, 16);
15120 strcpy(req->config, array_tag);
15121 int_value = 255;
15122 mcf_bytes_to_hex(&int_value, 1, KAL_FALSE, &value);
15123 strcpy((kal_char *)(req->value), value);
15124
15125 cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
15126
15127 mcf_ret = mcf_set_variable_value(req, cnf);
15128 if (mcf_ret != MCF_OTA_R_SUCCESS) {
15129 mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "VAL_BYTE_11");
15130 return KAL_FALSE;
15131 }
15132
15133 MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
15134 if (ota_file) {
15135 kal_mem_cpy(ota_file->buff, mcf_merge_buffer, MCF_MAX_OTA_FILE_SIZE);
15136
15137 MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
15138 } else {
15139 mcf_ut_format_err_str("Do full OTA FAIL!! Fail to take write lock! \r\n");
15140 return KAL_FALSE;
15141 }
15142
15143 mcf_ret = mcf_do_ota_full();
15144 if (mcf_ret != MCF_OTA_R_SUCCESS) {
15145 mcf_ut_format_err_str("Reset LID FAIL!! ret(%d) \r\n", mcf_ret);
15146 return KAL_FALSE;
15147 }
15148
15149 if ( !nvram_external_read_data(NVRAM_EF_MCF_TEST_OTA_LID, 1, &lid_buffer, sizeof(nvram_ef_mcf_test_struct)) ) {
15150 printf("Fail to read NVRAM_EF_MCF_TEST_OTA_LID!!\r\n");
15151 ret = KAL_FALSE;
15152 }
15153
15154 query_req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
15155 query_req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
15156 query_req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
15157 query_req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
15158 query_req->num = MCF_TEST_OTA_LID_BASE_GID+21;
15159 query_req->rec_id = 1;
15160 query_req->len = 0;
15161 kal_mem_set(array_tag, 0, 16);
15162 strcpy(query_req->config, array_tag);
15163
15164 query_cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
15165
15166 mcf_ret = mcf_query_variable_value(query_req, query_cnf);
15167 if (mcf_ret != MCF_OTA_R_SUCCESS) {
15168 mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "VAL_BIT_BYTE_11.B3");
15169 return KAL_FALSE;
15170 }
15171
15172 if(strncmp((query_cnf->value), "01", cnf->len*2) != 0){
15173 mcf_ut_format_err_str("VAL_BIT_BYTE_11.B3, %s, %s\r\n", cnf->value, "01");
15174 return KAL_FALSE;
15175 }
15176
15177
15178 if(cnf->len != 1){
15179 mcf_ut_format_err_str("VAL_BIT_BYTE_11.B3, %d, %d\r\n", cnf->len, 1);
15180 return KAL_FALSE;
15181 }
15182
15183 free_local_para((local_para_struct *)req);
15184 free_local_para((local_para_struct *)cnf);
15185 free_local_para((local_para_struct *)query_req);
15186 free_local_para((local_para_struct *)query_cnf);
15187
15188 /* Write MCF OTA file version to NVRAM */
15189 kal_mem_set(&nv_ota_file, 0, sizeof(nvram_ef_mcf_ota_file_info_struct));
15190 strncpy(nv_ota_file.path, MCF_FS_DEFAULT_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN);
15191 strncpy(nv_ota_file.name, MCF_FS_DEFAULT_OTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN);
15192 if ( !nvram_external_write_data(NVRAM_EF_MCF_OTA_FILE_LID, 1, (kal_uint8 *)&nv_ota_file, sizeof(nvram_ef_mcf_ota_file_info_struct)) ) {
15193 mcf_ut_format_err_str("Fail to write MCF OTA file info to NVRAM!!\r\n");
15194 return KAL_FALSE;
15195 }
15196 kal_mem_set(&nv_sw_info, 0, sizeof(nvram_ef_mcf_sw_info_struct));
15197 strncpy(nv_sw_info.last_update_file.sw_version, MCF_UT_SW_VERNO, MCF_FILE_MAX_SW_VERSION_LEN);
15198 strncpy(nv_sw_info.last_update_file.gen_time, MCF_UT_GEN_TIME, MCF_FILE_MAX_GEN_TIME_LEN);
15199 strcpy(nv_sw_info.last_update_file.path, "");
15200 strcpy(nv_sw_info.last_update_file.name, "");
15201 if ( !nvram_external_write_data(NVRAM_EF_MCF_SW_INFO_LID, 1, (kal_uint8 *)&nv_sw_info, sizeof(nvram_ef_mcf_sw_info_struct)) ) {
15202 mcf_ut_format_err_str("Fail to write MCF sw info to NVRAM!!\r\n");
15203 return KAL_FALSE;
15204 }
15205
15206 //Bit operation - val_bit_byte_12
15207 req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
15208 req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
15209 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_WRITE_OTA;
15210 req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
15211 req->num = MCF_TEST_OTA_LID_BASE_GID+27;
15212 req->rec_id = 1;
15213 req->len = 1;
15214 strcpy(req->config, "");
15215 int_value = 16;
15216 mcf_bytes_to_hex(&int_value, 1, KAL_FALSE, &value);
15217 strcpy((kal_char *)(req->value), value);
15218
15219 cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
15220
15221 mcf_ret = mcf_set_variable_value(req, cnf);
15222 if (mcf_ret != MCF_OTA_R_SUCCESS) {
15223 mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "VAL_BYTE_11");
15224 return KAL_FALSE;
15225 }
15226
15227 MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
15228 if (ota_file) {
15229 kal_mem_cpy(ota_file->buff, mcf_merge_buffer, MCF_MAX_OTA_FILE_SIZE);
15230
15231 MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
15232 } else {
15233 mcf_ut_format_err_str("Do full OTA FAIL!! Fail to take write lock! \r\n");
15234 return KAL_FALSE;
15235 }
15236
15237 mcf_ret = mcf_do_ota_full();
15238 if (mcf_ret != MCF_OTA_R_SUCCESS) {
15239 mcf_ut_format_err_str("Reset LID FAIL!! ret(%d) \r\n", mcf_ret);
15240 return KAL_FALSE;
15241 }
15242
15243 if ( !nvram_external_read_data(NVRAM_EF_MCF_TEST_OTA_LID, 1, &lid_buffer, sizeof(nvram_ef_mcf_test_struct)) ) {
15244 printf("Fail to read NVRAM_EF_MCF_TEST_OTA_LID!!\r\n");
15245 ret = KAL_FALSE;
15246 }
15247
15248 kal_mem_set(test_pattern,0,512);
15249 mcf_bytes_to_hex(&(lid_buffer.val_bit_byte_12), 1, KAL_FALSE, &test_pattern);
15250 mcf_toupper((char *)test_pattern);
15251 mcf_toupper((char *)req->value);
15252
15253 if(strncmp((kal_char *)(req->value), test_pattern, cnf->len*2) != 0){
15254 mcf_ut_format_err_str("val_bit_byte_12, %s, %s\r\n", req->value, test_pattern);
15255 return KAL_FALSE;
15256 }
15257
15258 if(cnf->len != 1){
15259 mcf_ut_format_err_str("val_bit_byte_12, %d, %d\r\n", cnf->len, 1);
15260 return KAL_FALSE;
15261 }
15262
15263 free_local_para((local_para_struct *)req);
15264 free_local_para((local_para_struct *)cnf);
15265
15266 /* Write MCF OTA file version to NVRAM */
15267 kal_mem_set(&nv_ota_file, 0, sizeof(nvram_ef_mcf_ota_file_info_struct));
15268 strncpy(nv_ota_file.path, MCF_FS_DEFAULT_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN);
15269 strncpy(nv_ota_file.name, MCF_FS_DEFAULT_OTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN);
15270 if ( !nvram_external_write_data(NVRAM_EF_MCF_OTA_FILE_LID, 1, (kal_uint8 *)&nv_ota_file, sizeof(nvram_ef_mcf_ota_file_info_struct)) ) {
15271 mcf_ut_format_err_str("Fail to write MCF OTA file info to NVRAM!!\r\n");
15272 return KAL_FALSE;
15273 }
15274 kal_mem_set(&nv_sw_info, 0, sizeof(nvram_ef_mcf_sw_info_struct));
15275 strncpy(nv_sw_info.last_update_file.sw_version, MCF_UT_SW_VERNO, MCF_FILE_MAX_SW_VERSION_LEN);
15276 strncpy(nv_sw_info.last_update_file.gen_time, MCF_UT_GEN_TIME, MCF_FILE_MAX_GEN_TIME_LEN);
15277 strcpy(nv_sw_info.last_update_file.path, "");
15278 strcpy(nv_sw_info.last_update_file.name, "");
15279 if ( !nvram_external_write_data(NVRAM_EF_MCF_SW_INFO_LID, 1, (kal_uint8 *)&nv_sw_info, sizeof(nvram_ef_mcf_sw_info_struct)) ) {
15280 mcf_ut_format_err_str("Fail to write MCF sw info to NVRAM!!\r\n");
15281 return KAL_FALSE;
15282 }
15283
15284 //Bit operation - val_bit_byte_12.L4b
15285 req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
15286 req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
15287 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_WRITE_OTA;
15288 req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
15289 req->num = MCF_TEST_OTA_LID_BASE_GID+29;
15290 req->rec_id = 1;
15291 req->len = 0;
15292 strcpy(req->config, "");
15293 int_value = 15;
15294 mcf_bytes_to_hex(&int_value, 1, KAL_FALSE, &value);
15295 strcpy((kal_char *)(req->value), value);
15296
15297 cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
15298
15299 mcf_ret = mcf_set_variable_value(req, cnf);
15300 if (mcf_ret != MCF_OTA_R_SUCCESS) {
15301 mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "VAL_BYTE_11");
15302 return KAL_FALSE;
15303 }
15304
15305 MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
15306 if (ota_file) {
15307 kal_mem_cpy(ota_file->buff, mcf_merge_buffer, MCF_MAX_OTA_FILE_SIZE);
15308
15309 MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
15310 } else {
15311 mcf_ut_format_err_str("Do full OTA FAIL!! Fail to take write lock! \r\n");
15312 return KAL_FALSE;
15313 }
15314
15315 mcf_ret = mcf_do_ota_full();
15316 if (mcf_ret != MCF_OTA_R_SUCCESS) {
15317 mcf_ut_format_err_str("Reset LID FAIL!! ret(%d) \r\n", mcf_ret);
15318 return KAL_FALSE;
15319 }
15320
15321 query_req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
15322 query_req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
15323 query_req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
15324 query_req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
15325 query_req->num = MCF_TEST_OTA_LID_BASE_GID+29;
15326 query_req->rec_id = 1;
15327 query_req->len = 0;
15328 kal_mem_set(array_tag, 0, 16);
15329 strcpy(query_req->config, array_tag);
15330
15331 query_cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
15332
15333 mcf_ret = mcf_query_variable_value(query_req, query_cnf);
15334 if (mcf_ret != MCF_OTA_R_SUCCESS) {
15335 mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "VAL_BIT_BYTE_11.B3");
15336 return KAL_FALSE;
15337 }
15338
15339 if(strncmp(query_cnf->value, "0F", cnf->len*2+2) != 0){
15340 mcf_ut_format_err_str("val_bit_byte_12.F4b, %s, %s\r\n", cnf->value, "0F");
15341 return KAL_FALSE;
15342 }
15343
15344
15345 if(query_cnf->len != 1){
15346 mcf_ut_format_err_str("val_bit_byte_12.F4b, %d, %d\r\n", cnf->len, 1);
15347 return KAL_FALSE;
15348 }
15349
15350 free_local_para((local_para_struct *)req);
15351 free_local_para((local_para_struct *)cnf);
15352 free_local_para((local_para_struct *)query_req);
15353 free_local_para((local_para_struct *)query_cnf);
15354
15355 /* Write MCF OTA file version to NVRAM */
15356 kal_mem_set(&nv_ota_file, 0, sizeof(nvram_ef_mcf_ota_file_info_struct));
15357 strncpy(nv_ota_file.path, MCF_FS_DEFAULT_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN);
15358 strncpy(nv_ota_file.name, MCF_FS_DEFAULT_OTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN);
15359 if ( !nvram_external_write_data(NVRAM_EF_MCF_OTA_FILE_LID, 1, (kal_uint8 *)&nv_ota_file, sizeof(nvram_ef_mcf_ota_file_info_struct)) ) {
15360 mcf_ut_format_err_str("Fail to write MCF OTA file info to NVRAM!!\r\n");
15361 return KAL_FALSE;
15362 }
15363 kal_mem_set(&nv_sw_info, 0, sizeof(nvram_ef_mcf_sw_info_struct));
15364 strncpy(nv_sw_info.last_update_file.sw_version, MCF_UT_SW_VERNO, MCF_FILE_MAX_SW_VERSION_LEN);
15365 strncpy(nv_sw_info.last_update_file.gen_time, MCF_UT_GEN_TIME, MCF_FILE_MAX_GEN_TIME_LEN);
15366 strcpy(nv_sw_info.last_update_file.path, "");
15367 strcpy(nv_sw_info.last_update_file.name, "");
15368 if ( !nvram_external_write_data(NVRAM_EF_MCF_SW_INFO_LID, 1, (kal_uint8 *)&nv_sw_info, sizeof(nvram_ef_mcf_sw_info_struct)) ) {
15369 mcf_ut_format_err_str("Fail to write MCF sw info to NVRAM!!\r\n");
15370 return KAL_FALSE;
15371 }
15372
15373 //short operation - val_short_11
15374 req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
15375 req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
15376 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_WRITE_OTA;
15377 req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
15378 req->num = MCF_TEST_OTA_LID_BASE_GID+56;
15379 req->rec_id = 1;
15380 req->len = 0;
15381 strcpy(req->config, "");
15382 sh_value = 256;
15383 mcf_bytes_to_hex(&sh_value, 2, KAL_FALSE, &value);
15384 strcpy((kal_char *)(req->value), value);
15385
15386 cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
15387
15388 mcf_ret = mcf_set_variable_value(req, cnf);
15389 if (mcf_ret != MCF_OTA_R_SUCCESS) {
15390 mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "VAL_BYTE_11");
15391 return KAL_FALSE;
15392 }
15393
15394 MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
15395 if (ota_file) {
15396 kal_mem_cpy(ota_file->buff, mcf_merge_buffer, MCF_MAX_OTA_FILE_SIZE);
15397
15398 MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
15399 } else {
15400 mcf_ut_format_err_str("Do full OTA FAIL!! Fail to take write lock! \r\n");
15401 return KAL_FALSE;
15402 }
15403
15404 mcf_ret = mcf_do_ota_full();
15405 if (mcf_ret != MCF_OTA_R_SUCCESS) {
15406 mcf_ut_format_err_str("Reset LID FAIL!! ret(%d) \r\n", mcf_ret);
15407 return KAL_FALSE;
15408 }
15409
15410 if ( !nvram_external_read_data(NVRAM_EF_MCF_TEST_OTA_LID, 1, &lid_buffer, sizeof(nvram_ef_mcf_test_struct)) ) {
15411 printf("Fail to read NVRAM_EF_MCF_TEST_OTA_LID!!\r\n");
15412 ret = KAL_FALSE;
15413 }
15414
15415 kal_mem_set(test_pattern,0,512);
15416 mcf_bytes_to_hex(&(lid_buffer.val_short_11), 2, KAL_FALSE, &test_pattern);
15417 mcf_toupper((char *)test_pattern);
15418 mcf_toupper((char *)req->value);
15419
15420 if(strncmp((kal_char *)(req->value), test_pattern, cnf->len*2) != 0){
15421 mcf_ut_format_err_str("val_short_11, %s, %s\r\n", cnf->value, test_pattern);
15422 return KAL_FALSE;
15423 }
15424
15425 if(cnf->len != 2){
15426 mcf_ut_format_err_str("val_short_11, %d, %d\r\n", cnf->len, 2);
15427 return KAL_FALSE;
15428 }
15429
15430 free_local_para((local_para_struct *)req);
15431 free_local_para((local_para_struct *)cnf);
15432
15433 /* Write MCF OTA file version to NVRAM */
15434 kal_mem_set(&nv_ota_file, 0, sizeof(nvram_ef_mcf_ota_file_info_struct));
15435 strncpy(nv_ota_file.path, MCF_FS_DEFAULT_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN);
15436 strncpy(nv_ota_file.name, MCF_FS_DEFAULT_OTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN);
15437 if ( !nvram_external_write_data(NVRAM_EF_MCF_OTA_FILE_LID, 1, (kal_uint8 *)&nv_ota_file, sizeof(nvram_ef_mcf_ota_file_info_struct)) ) {
15438 mcf_ut_format_err_str("Fail to write MCF OTA file info to NVRAM!!\r\n");
15439 return KAL_FALSE;
15440 }
15441 kal_mem_set(&nv_sw_info, 0, sizeof(nvram_ef_mcf_sw_info_struct));
15442 strncpy(nv_sw_info.last_update_file.sw_version, MCF_UT_SW_VERNO, MCF_FILE_MAX_SW_VERSION_LEN);
15443 strncpy(nv_sw_info.last_update_file.gen_time, MCF_UT_GEN_TIME, MCF_FILE_MAX_GEN_TIME_LEN);
15444 strcpy(nv_sw_info.last_update_file.path, "");
15445 strcpy(nv_sw_info.last_update_file.name, "");
15446 if ( !nvram_external_write_data(NVRAM_EF_MCF_SW_INFO_LID, 1, (kal_uint8 *)&nv_sw_info, sizeof(nvram_ef_mcf_sw_info_struct)) ) {
15447 mcf_ut_format_err_str("Fail to write MCF sw info to NVRAM!!\r\n");
15448 return KAL_FALSE;
15449 }
15450
15451 //double operation - val_double_1
15452 req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
15453 req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
15454 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_WRITE_OTA;
15455 req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
15456 req->num = MCF_TEST_OTA_LID_BASE_GID+48;
15457 req->rec_id = 1;
15458 req->len = 0;
15459 strcpy(req->config, "");
15460 db_value = 6.6;
15461 mcf_bytes_to_hex(&db_value, 8, KAL_FALSE, &value);
15462 strcpy((kal_char *)(req->value), value);
15463
15464 cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
15465
15466 mcf_ret = mcf_set_variable_value(req, cnf);
15467 if (mcf_ret != MCF_OTA_R_SUCCESS) {
15468 mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "VAL_BYTE_11");
15469 return KAL_FALSE;
15470 }
15471
15472 MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
15473 if (ota_file) {
15474 kal_mem_cpy(ota_file->buff, mcf_merge_buffer, MCF_MAX_OTA_FILE_SIZE);
15475
15476 MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
15477 } else {
15478 mcf_ut_format_err_str("Do full OTA FAIL!! Fail to take write lock! \r\n");
15479 return KAL_FALSE;
15480 }
15481
15482 mcf_ret = mcf_do_ota_full();
15483 if (mcf_ret != MCF_OTA_R_SUCCESS) {
15484 mcf_ut_format_err_str("Reset LID FAIL!! ret(%d) \r\n", mcf_ret);
15485 return KAL_FALSE;
15486 }
15487
15488 if ( !nvram_external_read_data(NVRAM_EF_MCF_TEST_OTA_LID, 1, &lid_buffer, sizeof(nvram_ef_mcf_test_struct)) ) {
15489 printf("Fail to read NVRAM_EF_MCF_TEST_OTA_LID!!\r\n");
15490 ret = KAL_FALSE;
15491 }
15492
15493
15494 kal_mem_set(test_pattern,0,512);
15495 mcf_bytes_to_hex(&(lid_buffer.val_double_1), cnf->len, KAL_FALSE, &test_pattern);
15496 mcf_toupper((char *)test_pattern);
15497 mcf_toupper((char *)req->value);
15498
15499 if(strncmp((kal_char *)(req->value), test_pattern, cnf->len*2) != 0){
15500 mcf_ut_format_err_str("val_double_1, %s, %s\r\n", cnf->value, test_pattern);
15501 return KAL_FALSE;
15502 }
15503
15504 if(cnf->len != 8){
15505 mcf_ut_format_err_str("val_double_1, %d, %d\r\n", cnf->len, 8);
15506 return KAL_FALSE;
15507 }
15508
15509 free_local_para((local_para_struct *)req);
15510 free_local_para((local_para_struct *)cnf);
15511
15512 /* Write MCF OTA file version to NVRAM */
15513 kal_mem_set(&nv_ota_file, 0, sizeof(nvram_ef_mcf_ota_file_info_struct));
15514 strncpy(nv_ota_file.path, MCF_FS_DEFAULT_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN);
15515 strncpy(nv_ota_file.name, MCF_FS_DEFAULT_OTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN);
15516 if ( !nvram_external_write_data(NVRAM_EF_MCF_OTA_FILE_LID, 1, (kal_uint8 *)&nv_ota_file, sizeof(nvram_ef_mcf_ota_file_info_struct)) ) {
15517 mcf_ut_format_err_str("Fail to write MCF OTA file info to NVRAM!!\r\n");
15518 return KAL_FALSE;
15519 }
15520 kal_mem_set(&nv_sw_info, 0, sizeof(nvram_ef_mcf_sw_info_struct));
15521 strncpy(nv_sw_info.last_update_file.sw_version, MCF_UT_SW_VERNO, MCF_FILE_MAX_SW_VERSION_LEN);
15522 strncpy(nv_sw_info.last_update_file.gen_time, MCF_UT_GEN_TIME, MCF_FILE_MAX_GEN_TIME_LEN);
15523 strcpy(nv_sw_info.last_update_file.path, "");
15524 strcpy(nv_sw_info.last_update_file.name, "");
15525 if ( !nvram_external_write_data(NVRAM_EF_MCF_SW_INFO_LID, 1, (kal_uint8 *)&nv_sw_info, sizeof(nvram_ef_mcf_sw_info_struct)) ) {
15526 mcf_ut_format_err_str("Fail to write MCF sw info to NVRAM!!\r\n");
15527 return KAL_FALSE;
15528 }
15529
15530 //buffer operation - val_buffer_1[0]
15531 req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
15532 req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
15533 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_WRITE_OTA;
15534 req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
15535 req->num = MCF_TEST_OTA_LID_BASE_GID+42;
15536 req->rec_id = 1;
15537 req->len = 1;
15538 strcpy(req->config, "0");
15539 ch_value = 'M';
15540 mcf_bytes_to_hex(&ch_value, 1, KAL_FALSE, &value);
15541 strcpy((kal_char *)(req->value), value);
15542
15543 cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
15544
15545 mcf_ret = mcf_set_variable_value(req, cnf);
15546 if (mcf_ret != MCF_OTA_R_SUCCESS) {
15547 mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "VAL_BYTE_11");
15548 return KAL_FALSE;
15549 }
15550
15551 MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
15552 if (ota_file) {
15553 kal_mem_cpy(ota_file->buff, mcf_merge_buffer, MCF_MAX_OTA_FILE_SIZE);
15554
15555 MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
15556 } else {
15557 mcf_ut_format_err_str("Do full OTA FAIL!! Fail to take write lock! \r\n");
15558 return KAL_FALSE;
15559 }
15560
15561 mcf_ret = mcf_do_ota_full();
15562 if (mcf_ret != MCF_OTA_R_SUCCESS) {
15563 mcf_ut_format_err_str("Reset LID FAIL!! ret(%d) \r\n", mcf_ret);
15564 return KAL_FALSE;
15565 }
15566
15567 if ( !nvram_external_read_data(NVRAM_EF_MCF_TEST_OTA_LID, 1, &lid_buffer, sizeof(nvram_ef_mcf_test_struct)) ) {
15568 printf("Fail to read NVRAM_EF_MCF_TEST_OTA_LID!!\r\n");
15569 ret = KAL_FALSE;
15570 }
15571
15572 kal_mem_set(test_pattern,0,512);
15573 mcf_bytes_to_hex(&(lid_buffer.val_buffer_1), cnf->len, KAL_FALSE, &test_pattern);
15574 mcf_toupper((char *)test_pattern);
15575 mcf_toupper((char *)req->value);
15576
15577 if(strncmp((kal_char *)(req->value), test_pattern, cnf->len*2) != 0){
15578 mcf_ut_format_err_str("val_buffer_1[0], %s, %s\r\n", cnf->value, test_pattern);
15579 return KAL_FALSE;
15580 }
15581
15582 if(cnf->len != 1){
15583 mcf_ut_format_err_str("val_buffer_1[0], %d, %d\r\n", cnf->len, 1);
15584 return KAL_FALSE;
15585 }
15586
15587 free_local_para((local_para_struct *)req);
15588 free_local_para((local_para_struct *)cnf);
15589
15590 /* Write MCF OTA file version to NVRAM */
15591 kal_mem_set(&nv_ota_file, 0, sizeof(nvram_ef_mcf_ota_file_info_struct));
15592 strncpy(nv_ota_file.path, MCF_FS_DEFAULT_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN);
15593 strncpy(nv_ota_file.name, MCF_FS_DEFAULT_OTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN);
15594 if ( !nvram_external_write_data(NVRAM_EF_MCF_OTA_FILE_LID, 1, (kal_uint8 *)&nv_ota_file, sizeof(nvram_ef_mcf_ota_file_info_struct)) ) {
15595 mcf_ut_format_err_str("Fail to write MCF OTA file info to NVRAM!!\r\n");
15596 return KAL_FALSE;
15597 }
15598 kal_mem_set(&nv_sw_info, 0, sizeof(nvram_ef_mcf_sw_info_struct));
15599 strncpy(nv_sw_info.last_update_file.sw_version, MCF_UT_SW_VERNO, MCF_FILE_MAX_SW_VERSION_LEN);
15600 strncpy(nv_sw_info.last_update_file.gen_time, MCF_UT_GEN_TIME, MCF_FILE_MAX_GEN_TIME_LEN);
15601 strcpy(nv_sw_info.last_update_file.path, "");
15602 strcpy(nv_sw_info.last_update_file.name, "");
15603 if ( !nvram_external_write_data(NVRAM_EF_MCF_SW_INFO_LID, 1, (kal_uint8 *)&nv_sw_info, sizeof(nvram_ef_mcf_sw_info_struct)) ) {
15604 mcf_ut_format_err_str("Fail to write MCF sw info to NVRAM!!\r\n");
15605 return KAL_FALSE;
15606 }
15607
15608 //float operation - val_struct_1.vfloat
15609 req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
15610 req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
15611 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_WRITE_OTA;
15612 req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
15613 req->num = MCF_TEST_OTA_LID_BASE_GID+78;
15614 req->rec_id = 1;
15615 req->len = 4;
15616 strcpy(req->config, "");
15617 fl_value = 0.4;
15618 mcf_bytes_to_hex(&fl_value, 4, KAL_FALSE, &value);
15619 strcpy((kal_char *)(req->value), value);
15620
15621 cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
15622
15623 mcf_ret = mcf_set_variable_value(req, cnf);
15624 if (mcf_ret != MCF_OTA_R_SUCCESS) {
15625 mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "VAL_BYTE_11");
15626 return KAL_FALSE;
15627 }
15628
15629 MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
15630 if (ota_file) {
15631 kal_mem_cpy(ota_file->buff, mcf_merge_buffer, MCF_MAX_OTA_FILE_SIZE);
15632
15633 MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
15634 } else {
15635 mcf_ut_format_err_str("Do full OTA FAIL!! Fail to take write lock! \r\n");
15636 return KAL_FALSE;
15637 }
15638
15639 mcf_ret = mcf_do_ota_full();
15640 if (mcf_ret != MCF_OTA_R_SUCCESS) {
15641 mcf_ut_format_err_str("Reset LID FAIL!! ret(%d) \r\n", mcf_ret);
15642 return KAL_FALSE;
15643 }
15644
15645 if ( !nvram_external_read_data(NVRAM_EF_MCF_TEST_OTA_LID, 1, &lid_buffer, sizeof(nvram_ef_mcf_test_struct)) ) {
15646 printf("Fail to read NVRAM_EF_MCF_TEST_OTA_LID!!\r\n");
15647 ret = KAL_FALSE;
15648 }
15649
15650 kal_mem_set(test_pattern,0,512);
15651 mcf_bytes_to_hex(&(lid_buffer.val_struct_1.vfloat), cnf->len, KAL_FALSE, &test_pattern);
15652 mcf_toupper((char *)test_pattern);
15653 mcf_toupper((char *)req->value);
15654
15655 if(strncmp((kal_char *)(req->value), test_pattern, cnf->len*2) != 0){
15656 mcf_ut_format_err_str("val_struct_1.vfloat, %s, %s\r\n", cnf->value, test_pattern);
15657 return KAL_FALSE;
15658 }
15659
15660 if(cnf->len != 4){
15661 mcf_ut_format_err_str("val_struct_1.vfloat, %d, %d\r\n", cnf->len, 4);
15662 return KAL_FALSE;
15663 }
15664
15665 free_local_para((local_para_struct *)req);
15666 free_local_para((local_para_struct *)cnf);
15667
15668 /* Write MCF OTA file version to NVRAM */
15669 kal_mem_set(&nv_ota_file, 0, sizeof(nvram_ef_mcf_ota_file_info_struct));
15670 strncpy(nv_ota_file.path, MCF_FS_DEFAULT_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN);
15671 strncpy(nv_ota_file.name, MCF_FS_DEFAULT_OTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN);
15672 if ( !nvram_external_write_data(NVRAM_EF_MCF_OTA_FILE_LID, 1, (kal_uint8 *)&nv_ota_file, sizeof(nvram_ef_mcf_ota_file_info_struct)) ) {
15673 mcf_ut_format_err_str("Fail to write MCF OTA file info to NVRAM!!\r\n");
15674 return KAL_FALSE;
15675 }
15676 kal_mem_set(&nv_sw_info, 0, sizeof(nvram_ef_mcf_sw_info_struct));
15677 strncpy(nv_sw_info.last_update_file.sw_version, MCF_UT_SW_VERNO, MCF_FILE_MAX_SW_VERSION_LEN);
15678 strncpy(nv_sw_info.last_update_file.gen_time, MCF_UT_GEN_TIME, MCF_FILE_MAX_GEN_TIME_LEN);
15679 strcpy(nv_sw_info.last_update_file.path, "");
15680 strcpy(nv_sw_info.last_update_file.name, "");
15681 if ( !nvram_external_write_data(NVRAM_EF_MCF_SW_INFO_LID, 1, (kal_uint8 *)&nv_sw_info, sizeof(nvram_ef_mcf_sw_info_struct)) ) {
15682 mcf_ut_format_err_str("Fail to write MCF sw info to NVRAM!!\r\n");
15683 return KAL_FALSE;
15684 }
15685
15686 //int in struct operation - val_struct_3[0].vint
15687 req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
15688 req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
15689 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_WRITE_OTA;
15690 req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
15691 req->num = MCF_TEST_OTA_LID_BASE_GID+125;
15692 req->rec_id = 1;
15693 req->len = 0;
15694 strcpy(req->config, "0");
15695 int_value = 66;
15696 mcf_bytes_to_hex(&int_value, 4, KAL_FALSE, &value);
15697 strcpy((kal_char *)(req->value), value);
15698
15699 cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
15700
15701 mcf_ret = mcf_set_variable_value(req, cnf);
15702 if (mcf_ret != MCF_OTA_R_SUCCESS) {
15703 mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "VAL_BYTE_11");
15704 return KAL_FALSE;
15705 }
15706
15707 MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
15708 if (ota_file) {
15709 kal_mem_cpy(ota_file->buff, mcf_merge_buffer, MCF_MAX_OTA_FILE_SIZE);
15710
15711 MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
15712 } else {
15713 mcf_ut_format_err_str("Do full OTA FAIL!! Fail to take write lock! \r\n");
15714 return KAL_FALSE;
15715 }
15716
15717 mcf_ret = mcf_do_ota_full();
15718 if (mcf_ret != MCF_OTA_R_SUCCESS) {
15719 mcf_ut_format_err_str("Reset LID FAIL!! ret(%d) \r\n", mcf_ret);
15720 return KAL_FALSE;
15721 }
15722
15723 if ( !nvram_external_read_data(NVRAM_EF_MCF_TEST_OTA_LID, 1, &lid_buffer, sizeof(nvram_ef_mcf_test_struct)) ) {
15724 printf("Fail to read NVRAM_EF_MCF_TEST_OTA_LID!!\r\n");
15725 ret = KAL_FALSE;
15726 }
15727
15728 kal_mem_set(test_pattern,0,512);
15729 mcf_bytes_to_hex(&(lid_buffer.val_struct_3[0].vint), cnf->len, KAL_FALSE, &test_pattern);
15730 mcf_toupper((char *)test_pattern);
15731 mcf_toupper((char *)req->value);
15732
15733 if(strncmp((kal_char *)(req->value), test_pattern, cnf->len*2) != 0){
15734 mcf_ut_format_err_str("val_struct_3[0].vint, %s, %s\r\n", cnf->value, test_pattern);
15735 return KAL_FALSE;
15736 }
15737
15738 if(cnf->len != 4){
15739 mcf_ut_format_err_str("val_struct_3[0].vint, %d, %d\r\n", cnf->len, 4);
15740 return KAL_FALSE;
15741 }
15742
15743 free_local_para((local_para_struct *)req);
15744 free_local_para((local_para_struct *)cnf);
15745
15746 /* Write MCF OTA file version to NVRAM */
15747 kal_mem_set(&nv_ota_file, 0, sizeof(nvram_ef_mcf_ota_file_info_struct));
15748 strncpy(nv_ota_file.path, MCF_FS_DEFAULT_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN);
15749 strncpy(nv_ota_file.name, MCF_FS_DEFAULT_OTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN);
15750 if ( !nvram_external_write_data(NVRAM_EF_MCF_OTA_FILE_LID, 1, (kal_uint8 *)&nv_ota_file, sizeof(nvram_ef_mcf_ota_file_info_struct)) ) {
15751 mcf_ut_format_err_str("Fail to write MCF OTA file info to NVRAM!!\r\n");
15752 return KAL_FALSE;
15753 }
15754 kal_mem_set(&nv_sw_info, 0, sizeof(nvram_ef_mcf_sw_info_struct));
15755 strncpy(nv_sw_info.last_update_file.sw_version, MCF_UT_SW_VERNO, MCF_FILE_MAX_SW_VERSION_LEN);
15756 strncpy(nv_sw_info.last_update_file.gen_time, MCF_UT_GEN_TIME, MCF_FILE_MAX_GEN_TIME_LEN);
15757 strcpy(nv_sw_info.last_update_file.path, "");
15758 strcpy(nv_sw_info.last_update_file.name, "");
15759 if ( !nvram_external_write_data(NVRAM_EF_MCF_SW_INFO_LID, 1, (kal_uint8 *)&nv_sw_info, sizeof(nvram_ef_mcf_sw_info_struct)) ) {
15760 mcf_ut_format_err_str("Fail to write MCF sw info to NVRAM!!\r\n");
15761 return KAL_FALSE;
15762 }
15763
15764 //buffer in struct operation - VAL_STRUCT_3[3].VBUFFER[2][4][5]
15765 req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
15766 req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
15767 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_WRITE_OTA;
15768 req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
15769 req->num = MCF_TEST_OTA_LID_BASE_GID+120;
15770 req->rec_id = 1;
15771 req->len = 0;
15772 strcpy(req->config, "3,2,4,5");
15773 ch_value = 'C';
15774 mcf_bytes_to_hex(&ch_value, 1, KAL_FALSE, &value);
15775 strcpy((kal_char *)(req->value), value);
15776
15777 cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
15778
15779 mcf_ret = mcf_set_variable_value(req, cnf);
15780 if (mcf_ret != MCF_OTA_R_SUCCESS) {
15781 mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "VAL_BYTE_11");
15782 return KAL_FALSE;
15783 }
15784
15785 MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
15786 if (ota_file) {
15787 kal_mem_cpy(ota_file->buff, mcf_merge_buffer, MCF_MAX_OTA_FILE_SIZE);
15788
15789 MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
15790 } else {
15791 mcf_ut_format_err_str("Do full OTA FAIL!! Fail to take write lock! \r\n");
15792 return KAL_FALSE;
15793 }
15794
15795 mcf_ret = mcf_do_ota_full();
15796 if (mcf_ret != MCF_OTA_R_SUCCESS) {
15797 mcf_ut_format_err_str("Reset LID FAIL!! ret(%d) \r\n", mcf_ret);
15798 return KAL_FALSE;
15799 }
15800
15801 if ( !nvram_external_read_data(NVRAM_EF_MCF_TEST_OTA_LID, 1, &lid_buffer, sizeof(nvram_ef_mcf_test_struct)) ) {
15802 printf("Fail to read NVRAM_EF_MCF_TEST_OTA_LID!!\r\n");
15803 ret = KAL_FALSE;
15804 }
15805
15806 kal_mem_set(test_pattern,0,512);
15807 mcf_bytes_to_hex(&(lid_buffer.val_struct_3[3].vbuffer[2]), cnf->len, KAL_FALSE, &test_pattern);
15808 mcf_toupper((char *)test_pattern);
15809 mcf_toupper((char *)req->value);
15810
15811 if(strncmp((kal_char *)(req->value), test_pattern, cnf->len*2) != 0){
15812 mcf_ut_format_err_str("VAL_STRUCT_3[3].VBUFFER[2][4][5], %s, %s\r\n", cnf->value, test_pattern);
15813 return KAL_FALSE;
15814 }
15815
15816 if(cnf->len != 1){
15817 mcf_ut_format_err_str("VAL_STRUCT_3[3].VBUFFER[2][4][5], %d, %d\r\n", cnf->len, 1);
15818 return KAL_FALSE;
15819 }
15820
15821
15822 free_local_para((local_para_struct *)req);
15823 free_local_para((local_para_struct *)cnf);
15824
15825 //Test value byte is not equal to variable size
15826
15827 /* Write MCF OTA file version to NVRAM */
15828 kal_mem_set(&nv_ota_file, 0, sizeof(nvram_ef_mcf_ota_file_info_struct));
15829 strncpy(nv_ota_file.path, MCF_FS_DEFAULT_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN);
15830 strncpy(nv_ota_file.name, MCF_FS_DEFAULT_OTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN);
15831 if ( !nvram_external_write_data(NVRAM_EF_MCF_OTA_FILE_LID, 1, (kal_uint8 *)&nv_ota_file, sizeof(nvram_ef_mcf_ota_file_info_struct)) ) {
15832 mcf_ut_format_err_str("Fail to write MCF OTA file info to NVRAM!!\r\n");
15833 return KAL_FALSE;
15834 }
15835 kal_mem_set(&nv_sw_info, 0, sizeof(nvram_ef_mcf_sw_info_struct));
15836 strncpy(nv_sw_info.last_update_file.sw_version, MCF_UT_SW_VERNO, MCF_FILE_MAX_SW_VERSION_LEN);
15837 strncpy(nv_sw_info.last_update_file.gen_time, MCF_UT_GEN_TIME, MCF_FILE_MAX_GEN_TIME_LEN);
15838 strcpy(nv_sw_info.last_update_file.path, "");
15839 strcpy(nv_sw_info.last_update_file.name, "");
15840 if ( !nvram_external_write_data(NVRAM_EF_MCF_SW_INFO_LID, 1, (kal_uint8 *)&nv_sw_info, sizeof(nvram_ef_mcf_sw_info_struct)) ) {
15841 mcf_ut_format_err_str("Fail to write MCF sw info to NVRAM!!\r\n");
15842 return KAL_FALSE;
15843 }
15844
15845 //buffer operation - val_long_1
15846 req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
15847 req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
15848 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_WRITE_OTA;
15849 req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
15850 req->num = 5113;
15851 req->rec_id = 1;
15852 req->len = 1;
15853 strcpy((kal_char *)(req->value), "be15");
15854
15855 cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
15856
15857 mcf_ret = mcf_set_variable_value(req, cnf);
15858 if (mcf_ret != MCF_OTA_R_SUCCESS) {
15859 mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "VAL_BYTE_11");
15860 return KAL_FALSE;
15861 }
15862
15863 MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
15864 if (ota_file) {
15865 kal_mem_cpy(ota_file->buff, mcf_merge_buffer, MCF_MAX_OTA_FILE_SIZE);
15866
15867 MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
15868 } else {
15869 mcf_ut_format_err_str("Do full OTA FAIL!! Fail to take write lock! \r\n");
15870 return KAL_FALSE;
15871 }
15872
15873 mcf_ret = mcf_do_ota_full();
15874 if (mcf_ret != MCF_OTA_R_SUCCESS) {
15875 mcf_ut_format_err_str("Reset LID FAIL!! ret(%d) \r\n", mcf_ret);
15876 return KAL_FALSE;
15877 }
15878
15879 if ( !nvram_external_read_data(NVRAM_EF_MCF_TEST_OTA_LID, 1, &lid_buffer, sizeof(nvram_ef_mcf_test_struct)) ) {
15880 printf("Fail to read NVRAM_EF_MCF_TEST_OTA_LID!!\r\n");
15881 ret = KAL_FALSE;
15882 }
15883
15884 kal_mem_set(test_pattern,0,512);
15885 mcf_bytes_to_hex(&(lid_buffer.val_long_1), cnf->len, KAL_FALSE, &test_pattern);
15886 mcf_toupper((char *)test_pattern);
15887 mcf_toupper((char *)req->value);
15888
15889 if(strncmp(test_pattern, "BE15000000000000", cnf->len*2) != 0){
15890 mcf_ut_format_err_str("val_long_1, %s, %s\r\n", "BE15000000000000", test_pattern);
15891 return KAL_FALSE;
15892 }
15893
15894 if(cnf->len != 8){
15895 mcf_ut_format_err_str("val_long_1, %d, %d\r\n", cnf->len, 1);
15896 return KAL_FALSE;
15897 }
15898
15899 free_local_para((local_para_struct *)req);
15900 free_local_para((local_para_struct *)cnf);
15901
15902 /*Test TLVOTA file*/
15903 /* Write MCF TLV-OTA file version to NVRAM */
15904 kal_mem_set(&nv_tlvota_file, 0, sizeof(nvram_ef_mcf_tlvota_file_info_struct));
15905 strncpy(nv_tlvota_file.path, MCF_FS_DEFAULT_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN);
15906 strncpy(nv_tlvota_file.name, MCF_FS_DEFAULT_TLVOTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN);
15907 if ( !nvram_external_write_data(NVRAM_EF_MCF_TLVOTA_FILE_LID, 1, (kal_uint8 *)&nv_tlvota_file, sizeof(nvram_ef_mcf_tlvota_file_info_struct)) ) {
15908 mcf_ut_format_err_str("Fail to write MCF TLV-OTA file info to NVRAM!!\r\n");
15909 return KAL_FALSE;
15910 }
15911
15912 kal_mem_set(&sbp_tag, 0, sizeof(mcf_tlvota_sbp_tag_t));
15913 sbp_tag.sbp_id = SBP_TAG_SBPID;
15914 strncpy(sbp_tag.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
15915 strncpy(sbp_tag.mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
15916
15917 for (i = 0; i < MAX_SIM_NUM; i++) {
15918 tlvota_file = &(pMcf->tlvota_file[i]);
15919 tlvota_file->sbp_id = SBP_TAG_SBPID;
15920 strncpy(tlvota_file->mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
15921 strncpy(tlvota_file->mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
15922
15923 //Byte operation - VAL_BYTE_11
15924 req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
15925 req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
15926 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_WRITE_OPOTA;
15927 req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
15928 req->num = MCF_TEST_OTA_LID_BASE_GID+44;
15929 req->ps_id = i;
15930 req->len = 1;
15931 kal_mem_set(array_tag, 0, 16);
15932 strcpy(req->config, array_tag);
15933 int_value = 64;
15934 mcf_bytes_to_hex(&int_value, 1, KAL_FALSE, &value);
15935 strcpy((kal_char *)(req->value), value);
15936
15937 cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
15938
15939
15940 mcf_ret = mcf_set_variable_value(req, cnf);
15941 if (mcf_ret != MCF_OTA_R_SUCCESS) {
15942 mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "VAL_BYTE_11");
15943 return KAL_FALSE;
15944 }
15945
15946 MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
15947 if (tlvota_file) {
15948 kal_mem_cpy(tlvota_file->buff, mcf_merge_buffer, MCF_MAX_TLVOTA_FILE_SIZE);
15949
15950 MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
15951 } else {
15952 mcf_ut_format_err_str("Fail to take write lock! \r\n");
15953 return KAL_FALSE;
15954 }
15955
15956 kal_mem_set(&lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
15957
15958 mcf_ret = mcf_read_tlvota_buffer_sbp_tag(i, sbp_tag, NVRAM_EF_MCF_TEST_OTA_LID, (kal_uint8 *)&lid_buffer, sizeof(nvram_ef_mcf_test_struct));
15959 if (mcf_ret != MCF_OTA_R_SUCCESS) {
15960 mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! i(%d), ret(%d) \r\n", i, mcf_ret);
15961 return KAL_FALSE;
15962 }
15963
15964 kal_mem_set(test_pattern,0,512);
15965 mcf_bytes_to_hex(&(lid_buffer.val_byte_11), 1, KAL_FALSE, &test_pattern);
15966 mcf_toupper((char *)test_pattern);
15967 mcf_toupper((char *)req->value);
15968
15969 if(strncmp((kal_char *)(req->value), test_pattern, cnf->len*2) != 0){
15970 mcf_ut_format_err_str("VAL_BYTE_11, %s, %s\r\n", req->value, test_pattern);
15971 return KAL_FALSE;
15972 }
15973
15974 if(cnf->len != 1){
15975 mcf_ut_format_err_str("VAL_BYTE_11, %d, %d\r\n", cnf->len, 1);
15976 return KAL_FALSE;
15977 }
15978 free_local_para((local_para_struct *)req);
15979 free_local_para((local_para_struct *)cnf);
15980 }
15981
15982 //Bit operation - VAL_BIT_BYTE_11
15983 /* Write MCF TLV-OTA file version to NVRAM */
15984 kal_mem_set(&nv_tlvota_file, 0, sizeof(nvram_ef_mcf_tlvota_file_info_struct));
15985 strncpy(nv_tlvota_file.path, MCF_FS_DEFAULT_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN);
15986 strncpy(nv_tlvota_file.name, MCF_FS_DEFAULT_TLVOTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN);
15987 if ( !nvram_external_write_data(NVRAM_EF_MCF_TLVOTA_FILE_LID, 1, (kal_uint8 *)&nv_tlvota_file, sizeof(nvram_ef_mcf_tlvota_file_info_struct)) ) {
15988 mcf_ut_format_err_str("Fail to write MCF TLV-OTA file info to NVRAM!!\r\n");
15989 return KAL_FALSE;
15990 }
15991
15992 kal_mem_set(&sbp_tag, 0, sizeof(mcf_tlvota_sbp_tag_t));
15993 sbp_tag.sbp_id = SBP_TAG_SBPID;
15994 strncpy(sbp_tag.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
15995 strncpy(sbp_tag.mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
15996
15997 for (i = 0; i < MAX_SIM_NUM; i++) {
15998 tlvota_file = &(pMcf->tlvota_file[i]);
15999 tlvota_file->sbp_id = SBP_TAG_SBPID;
16000 strncpy(tlvota_file->mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
16001 strncpy(tlvota_file->mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
16002
16003 //Byte operation - VAL_BYTE_11
16004 req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
16005 req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
16006 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_WRITE_OPOTA;
16007 req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
16008 req->num = MCF_TEST_OTA_LID_BASE_GID+18;
16009 req->ps_id = i;
16010 req->len = 1;
16011 kal_mem_set(array_tag, 0, 16);
16012 strcpy(req->config, array_tag);
16013 int_value = 255;
16014 mcf_bytes_to_hex(&int_value, 1, KAL_FALSE, &value);
16015 strcpy((kal_char *)(req->value), value);
16016
16017 cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
16018
16019
16020 mcf_ret = mcf_set_variable_value(req, cnf);
16021 if (mcf_ret != MCF_OTA_R_SUCCESS) {
16022 mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "VAL_BYTE_11");
16023 return KAL_FALSE;
16024 }
16025
16026 MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
16027 if (tlvota_file) {
16028 kal_mem_cpy(tlvota_file->buff, mcf_merge_buffer, MCF_MAX_TLVOTA_FILE_SIZE);
16029
16030 MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
16031 } else {
16032 mcf_ut_format_err_str("Fail to take write lock! \r\n");
16033 return KAL_FALSE;
16034 }
16035
16036 kal_mem_set(&lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
16037
16038 mcf_ret = mcf_read_tlvota_buffer_sbp_tag(i, sbp_tag, NVRAM_EF_MCF_TEST_OTA_LID, (kal_uint8 *)&lid_buffer, sizeof(nvram_ef_mcf_test_struct));
16039 if (mcf_ret != MCF_OTA_R_SUCCESS) {
16040 mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! i(%d), ret(%d) \r\n", i, mcf_ret);
16041 return KAL_FALSE;
16042 }
16043
16044 kal_mem_set(test_pattern,0,512);
16045 mcf_bytes_to_hex(&(lid_buffer.val_bit_byte_11), 1, KAL_FALSE, &test_pattern);
16046 mcf_toupper((char *)test_pattern);
16047 mcf_toupper((char *)req->value);
16048
16049 if(strncmp((kal_char *)(req->value), test_pattern, cnf->len*2) != 0){
16050 mcf_ut_format_err_str("val_bit_byte_11, %s, %s\r\n", req->value, test_pattern);
16051 return KAL_FALSE;
16052 }
16053
16054 if(cnf->len != 1){
16055 mcf_ut_format_err_str("val_bit_byte_11, %d, %d\r\n", cnf->len, 1);
16056 return KAL_FALSE;
16057 }
16058 free_local_para((local_para_struct *)req);
16059 free_local_para((local_para_struct *)cnf);
16060 }
16061
16062 //Bit operation - VAL_BIT_BYTE_11.B3
16063 /* Write MCF TLV-OTA file version to NVRAM */
16064 kal_mem_set(&nv_tlvota_file, 0, sizeof(nvram_ef_mcf_tlvota_file_info_struct));
16065 strncpy(nv_tlvota_file.path, MCF_FS_DEFAULT_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN);
16066 strncpy(nv_tlvota_file.name, MCF_FS_DEFAULT_TLVOTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN);
16067 if ( !nvram_external_write_data(NVRAM_EF_MCF_TLVOTA_FILE_LID, 1, (kal_uint8 *)&nv_tlvota_file, sizeof(nvram_ef_mcf_tlvota_file_info_struct)) ) {
16068 mcf_ut_format_err_str("Fail to write MCF TLV-OTA file info to NVRAM!!\r\n");
16069 return KAL_FALSE;
16070 }
16071
16072 kal_mem_set(&sbp_tag, 0, sizeof(mcf_tlvota_sbp_tag_t));
16073 sbp_tag.sbp_id = SBP_TAG_SBPID;
16074 strncpy(sbp_tag.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
16075 strncpy(sbp_tag.mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
16076
16077 for (i = 0; i < MAX_SIM_NUM; i++) {
16078 tlvota_file = &(pMcf->tlvota_file[i]);
16079 tlvota_file->sbp_id = SBP_TAG_SBPID;
16080 strncpy(tlvota_file->mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
16081 strncpy(tlvota_file->mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
16082
16083 //Byte operation - VAL_BIT_BYTE_11.B3
16084 req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
16085 req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
16086 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_WRITE_OPOTA;
16087 req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
16088 req->num = MCF_TEST_OTA_LID_BASE_GID+21;
16089 req->ps_id = i;
16090 req->len = 1;
16091 kal_mem_set(array_tag, 0, 16);
16092 strcpy(req->config, array_tag);
16093 int_value = 255;
16094 mcf_bytes_to_hex(&int_value, 1, KAL_FALSE, &value);
16095 strcpy((kal_char *)(req->value), value);
16096
16097 cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
16098
16099
16100 mcf_ret = mcf_set_variable_value(req, cnf);
16101 if (mcf_ret != MCF_OTA_R_SUCCESS) {
16102 mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "VAL_BYTE_11");
16103 return KAL_FALSE;
16104 }
16105
16106 MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
16107 if (tlvota_file) {
16108 kal_mem_cpy(tlvota_file->buff, mcf_merge_buffer, MCF_MAX_TLVOTA_FILE_SIZE);
16109
16110 MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
16111 } else {
16112 mcf_ut_format_err_str("Fail to take write lock! \r\n");
16113 return KAL_FALSE;
16114 }
16115
16116 query_req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
16117 query_req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
16118 query_req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OPOTA;
16119 query_req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
16120 query_req->num = MCF_TEST_OTA_LID_BASE_GID+21;
16121 query_req->ps_id = i;
16122 query_req->len = 0;
16123 kal_mem_set(array_tag, 0, 16);
16124 strcpy(query_req->config, array_tag);
16125
16126 query_cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
16127
16128 mcf_ret = mcf_query_variable_value(query_req, query_cnf);
16129 if (mcf_ret != MCF_OTA_R_SUCCESS) {
16130 mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "VAL_BIT_BYTE_11.B3");
16131 return KAL_FALSE;
16132 }
16133
16134 if(strncmp(query_cnf->value, "01", cnf->len*2) != 0){
16135 mcf_ut_format_err_str("VAL_BIT_BYTE_11.B3, %s, %s\r\n", cnf->value, "01");
16136 return KAL_FALSE;
16137 }
16138
16139
16140 if(cnf->len != 1){
16141 mcf_ut_format_err_str("VAL_BIT_BYTE_11.B3, %d, %d\r\n", cnf->len, 1);
16142 return KAL_FALSE;
16143 }
16144
16145 free_local_para((local_para_struct *)req);
16146 free_local_para((local_para_struct *)cnf);
16147 free_local_para((local_para_struct *)query_req);
16148 free_local_para((local_para_struct *)query_cnf);
16149 }
16150
16151 //Bit operation - val_bit_byte_12
16152 /* Write MCF TLV-OTA file version to NVRAM */
16153 kal_mem_set(&nv_tlvota_file, 0, sizeof(nvram_ef_mcf_tlvota_file_info_struct));
16154 strncpy(nv_tlvota_file.path, MCF_FS_DEFAULT_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN);
16155 strncpy(nv_tlvota_file.name, MCF_FS_DEFAULT_TLVOTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN);
16156 if ( !nvram_external_write_data(NVRAM_EF_MCF_TLVOTA_FILE_LID, 1, (kal_uint8 *)&nv_tlvota_file, sizeof(nvram_ef_mcf_tlvota_file_info_struct)) ) {
16157 mcf_ut_format_err_str("Fail to write MCF TLV-OTA file info to NVRAM!!\r\n");
16158 return KAL_FALSE;
16159 }
16160
16161 kal_mem_set(&sbp_tag, 0, sizeof(mcf_tlvota_sbp_tag_t));
16162 sbp_tag.sbp_id = SBP_TAG_SBPID;
16163 strncpy(sbp_tag.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
16164 strncpy(sbp_tag.mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
16165
16166 for (i = 0; i < MAX_SIM_NUM; i++) {
16167 tlvota_file = &(pMcf->tlvota_file[i]);
16168 tlvota_file->sbp_id = SBP_TAG_SBPID;
16169 strncpy(tlvota_file->mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
16170 strncpy(tlvota_file->mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
16171
16172 //Byte operation - VAL_BYTE_11
16173 req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
16174 req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
16175 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_WRITE_OPOTA;
16176 req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
16177 req->num = MCF_TEST_OTA_LID_BASE_GID+27;
16178 req->ps_id = i;
16179 req->len = 1;
16180 kal_mem_set(array_tag, 0, 16);
16181 strcpy(req->config, array_tag);
16182 int_value = 16;
16183 mcf_bytes_to_hex(&int_value, 1, KAL_FALSE, &value);
16184 strcpy((kal_char *)(req->value), value);
16185
16186 cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
16187
16188
16189 mcf_ret = mcf_set_variable_value(req, cnf);
16190 if (mcf_ret != MCF_OTA_R_SUCCESS) {
16191 mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "VAL_BYTE_11");
16192 return KAL_FALSE;
16193 }
16194
16195 MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
16196 if (tlvota_file) {
16197 kal_mem_cpy(tlvota_file->buff, mcf_merge_buffer, MCF_MAX_TLVOTA_FILE_SIZE);
16198
16199 MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
16200 } else {
16201 mcf_ut_format_err_str("Fail to take write lock! \r\n");
16202 return KAL_FALSE;
16203 }
16204
16205 kal_mem_set(&lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
16206
16207 mcf_ret = mcf_read_tlvota_buffer_sbp_tag(i, sbp_tag, NVRAM_EF_MCF_TEST_OTA_LID, (kal_uint8 *)&lid_buffer, sizeof(nvram_ef_mcf_test_struct));
16208 if (mcf_ret != MCF_OTA_R_SUCCESS) {
16209 mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! i(%d), ret(%d) \r\n", i, mcf_ret);
16210 return KAL_FALSE;
16211 }
16212
16213 kal_mem_set(test_pattern,0,512);
16214 mcf_bytes_to_hex(&(lid_buffer.val_bit_byte_12), 1, KAL_FALSE, &test_pattern);
16215 mcf_toupper((char *)test_pattern);
16216 mcf_toupper((char *)req->value);
16217
16218 if(strncmp((kal_char *)(req->value), test_pattern, cnf->len*2) != 0){
16219 mcf_ut_format_err_str("val_bit_byte_12, %s, %s\r\n", req->value, test_pattern);
16220 return KAL_FALSE;
16221 }
16222
16223 if(cnf->len != 1){
16224 mcf_ut_format_err_str("val_bit_byte_12, %d, %d\r\n", cnf->len, 1);
16225 return KAL_FALSE;
16226 }
16227 free_local_para((local_para_struct *)req);
16228 free_local_para((local_para_struct *)cnf);
16229 }
16230
16231 //Bit operation - val_bit_byte_12.L4b
16232 /* Write MCF TLV-OTA file version to NVRAM */
16233 kal_mem_set(&nv_tlvota_file, 0, sizeof(nvram_ef_mcf_tlvota_file_info_struct));
16234 strncpy(nv_tlvota_file.path, MCF_FS_DEFAULT_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN);
16235 strncpy(nv_tlvota_file.name, MCF_FS_DEFAULT_TLVOTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN);
16236 if ( !nvram_external_write_data(NVRAM_EF_MCF_TLVOTA_FILE_LID, 1, (kal_uint8 *)&nv_tlvota_file, sizeof(nvram_ef_mcf_tlvota_file_info_struct)) ) {
16237 mcf_ut_format_err_str("Fail to write MCF TLV-OTA file info to NVRAM!!\r\n");
16238 return KAL_FALSE;
16239 }
16240
16241 kal_mem_set(&sbp_tag, 0, sizeof(mcf_tlvota_sbp_tag_t));
16242 sbp_tag.sbp_id = SBP_TAG_SBPID;
16243 strncpy(sbp_tag.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
16244 strncpy(sbp_tag.mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
16245
16246 for (i = 0; i < MAX_SIM_NUM; i++) {
16247 tlvota_file = &(pMcf->tlvota_file[i]);
16248 tlvota_file->sbp_id = SBP_TAG_SBPID;
16249 strncpy(tlvota_file->mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
16250 strncpy(tlvota_file->mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
16251
16252 //Byte operation - VAL_BYTE_11
16253 req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
16254 req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
16255 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_WRITE_OPOTA;
16256 req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
16257 req->num = MCF_TEST_OTA_LID_BASE_GID+29;
16258 req->ps_id = i;
16259 req->len = 1;
16260 kal_mem_set(array_tag, 0, 16);
16261 strcpy(req->config, array_tag);
16262 int_value = 15;
16263 mcf_bytes_to_hex(&int_value, 1, KAL_FALSE, &value);
16264 strcpy((kal_char *)(req->value), value);
16265
16266 cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
16267
16268
16269 mcf_ret = mcf_set_variable_value(req, cnf);
16270 if (mcf_ret != MCF_OTA_R_SUCCESS) {
16271 mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "VAL_BYTE_11");
16272 return KAL_FALSE;
16273 }
16274
16275 MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
16276 if (tlvota_file) {
16277 kal_mem_cpy(tlvota_file->buff, mcf_merge_buffer, MCF_MAX_TLVOTA_FILE_SIZE);
16278
16279 MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
16280 } else {
16281 mcf_ut_format_err_str("Fail to take write lock! \r\n");
16282 return KAL_FALSE;
16283 }
16284
16285 query_req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
16286 query_req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
16287 query_req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OPOTA;
16288 query_req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
16289 query_req->num = MCF_TEST_OTA_LID_BASE_GID+29;
16290 query_req->ps_id = i;
16291 query_req->len = 0;
16292 kal_mem_set(array_tag, 0, 16);
16293 strcpy(query_req->config, array_tag);
16294
16295 query_cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
16296
16297 mcf_ret = mcf_query_variable_value(query_req, query_cnf);
16298 if (mcf_ret != MCF_OTA_R_SUCCESS) {
16299 mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "VAL_BIT_BYTE_11.B3");
16300 return KAL_FALSE;
16301 }
16302
16303 if(strncmp(query_cnf->value, "0F", cnf->len*2) != 0){
16304 mcf_ut_format_err_str("VAL_BIT_BYTE_12.L4B, %s, %s\r\n", cnf->value, "01");
16305 return KAL_FALSE;
16306 }
16307
16308
16309 if(query_cnf->len != 1){
16310 mcf_ut_format_err_str("VAL_BIT_BYTE_12.L4B, %d, %d\r\n", cnf->len, 1);
16311 return KAL_FALSE;
16312 }
16313
16314
16315 free_local_para((local_para_struct *)req);
16316 free_local_para((local_para_struct *)cnf);
16317 free_local_para((local_para_struct *)query_req);
16318 free_local_para((local_para_struct *)query_cnf);
16319 }
16320
16321 //short operation - val_short_11
16322 /* Write MCF TLV-OTA file version to NVRAM */
16323 kal_mem_set(&nv_tlvota_file, 0, sizeof(nvram_ef_mcf_tlvota_file_info_struct));
16324 strncpy(nv_tlvota_file.path, MCF_FS_DEFAULT_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN);
16325 strncpy(nv_tlvota_file.name, MCF_FS_DEFAULT_TLVOTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN);
16326 if ( !nvram_external_write_data(NVRAM_EF_MCF_TLVOTA_FILE_LID, 1, (kal_uint8 *)&nv_tlvota_file, sizeof(nvram_ef_mcf_tlvota_file_info_struct)) ) {
16327 mcf_ut_format_err_str("Fail to write MCF TLV-OTA file info to NVRAM!!\r\n");
16328 return KAL_FALSE;
16329 }
16330
16331 kal_mem_set(&sbp_tag, 0, sizeof(mcf_tlvota_sbp_tag_t));
16332 sbp_tag.sbp_id = SBP_TAG_SBPID;
16333 strncpy(sbp_tag.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
16334 strncpy(sbp_tag.mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
16335
16336 for (i = 0; i < MAX_SIM_NUM; i++) {
16337 tlvota_file = &(pMcf->tlvota_file[i]);
16338 tlvota_file->sbp_id = SBP_TAG_SBPID;
16339 strncpy(tlvota_file->mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
16340 strncpy(tlvota_file->mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
16341
16342 //Byte operation - VAL_BYTE_11
16343 req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
16344 req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
16345 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_WRITE_OPOTA;
16346 req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
16347 req->num = MCF_TEST_OTA_LID_BASE_GID+56;
16348 req->ps_id = i;
16349 req->len = 1;
16350 kal_mem_set(array_tag, 0, 16);
16351 strcpy(req->config, array_tag);
16352 sh_value = 256;
16353 mcf_bytes_to_hex(&sh_value, 2, KAL_FALSE, &value);
16354 strcpy((kal_char *)(req->value), value);
16355
16356 cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
16357
16358 mcf_ret = mcf_set_variable_value(req, cnf);
16359 if (mcf_ret != MCF_OTA_R_SUCCESS) {
16360 mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "VAL_BYTE_11");
16361 return KAL_FALSE;
16362 }
16363
16364 MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
16365 if (tlvota_file) {
16366 kal_mem_cpy(tlvota_file->buff, mcf_merge_buffer, MCF_MAX_TLVOTA_FILE_SIZE);
16367
16368 MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
16369 } else {
16370 mcf_ut_format_err_str("Fail to take write lock! \r\n");
16371 return KAL_FALSE;
16372 }
16373
16374 kal_mem_set(&lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
16375
16376 mcf_ret = mcf_read_tlvota_buffer_sbp_tag(i, sbp_tag, NVRAM_EF_MCF_TEST_OTA_LID, (kal_uint8 *)&lid_buffer, sizeof(nvram_ef_mcf_test_struct));
16377 if (mcf_ret != MCF_OTA_R_SUCCESS) {
16378 mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! i(%d), ret(%d) \r\n", i, mcf_ret);
16379 return KAL_FALSE;
16380 }
16381
16382 kal_mem_set(test_pattern,0,512);
16383 mcf_bytes_to_hex(&(lid_buffer.val_short_11), 2, KAL_FALSE, &test_pattern);
16384 mcf_toupper((char *)test_pattern);
16385 mcf_toupper((char *)req->value);
16386
16387 if(strncmp((kal_char *)(req->value), test_pattern, cnf->len*2) != 0){
16388 mcf_ut_format_err_str("val_short_11, %s, %s\r\n", cnf->value, test_pattern);
16389 return KAL_FALSE;
16390 }
16391
16392 if(cnf->len != 2){
16393 mcf_ut_format_err_str("val_short_11, %d, %d\r\n", cnf->len, 2);
16394 return KAL_FALSE;
16395 }
16396 free_local_para((local_para_struct *)req);
16397 free_local_para((local_para_struct *)cnf);
16398 }
16399
16400 //double operation - val_double_1
16401 /* Write MCF TLV-OTA file version to NVRAM */
16402 kal_mem_set(&nv_tlvota_file, 0, sizeof(nvram_ef_mcf_tlvota_file_info_struct));
16403 strncpy(nv_tlvota_file.path, MCF_FS_DEFAULT_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN);
16404 strncpy(nv_tlvota_file.name, MCF_FS_DEFAULT_TLVOTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN);
16405 if ( !nvram_external_write_data(NVRAM_EF_MCF_TLVOTA_FILE_LID, 1, (kal_uint8 *)&nv_tlvota_file, sizeof(nvram_ef_mcf_tlvota_file_info_struct)) ) {
16406 mcf_ut_format_err_str("Fail to write MCF TLV-OTA file info to NVRAM!!\r\n");
16407 return KAL_FALSE;
16408 }
16409
16410 kal_mem_set(&sbp_tag, 0, sizeof(mcf_tlvota_sbp_tag_t));
16411 sbp_tag.sbp_id = SBP_TAG_SBPID;
16412 strncpy(sbp_tag.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
16413 strncpy(sbp_tag.mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
16414
16415 for (i = 0; i < MAX_SIM_NUM; i++) {
16416 tlvota_file = &(pMcf->tlvota_file[i]);
16417 tlvota_file->sbp_id = SBP_TAG_SBPID;
16418 strncpy(tlvota_file->mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
16419 strncpy(tlvota_file->mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
16420
16421 //Byte operation - VAL_BYTE_11
16422 req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
16423 req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
16424 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_WRITE_OPOTA;
16425 req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
16426 req->num = MCF_TEST_OTA_LID_BASE_GID+48;
16427 req->ps_id = i;
16428 req->len = 1;
16429 kal_mem_set(array_tag, 0, 16);
16430 strcpy(req->config, array_tag);
16431 db_value = 6.6;
16432 mcf_bytes_to_hex(&db_value, 8, KAL_FALSE, &value);
16433 strcpy((kal_char *)(req->value), value);
16434
16435 cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
16436
16437 mcf_ret = mcf_set_variable_value(req, cnf);
16438 if (mcf_ret != MCF_OTA_R_SUCCESS) {
16439 mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "VAL_BYTE_11");
16440 return KAL_FALSE;
16441 }
16442
16443 MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
16444 if (tlvota_file) {
16445 kal_mem_cpy(tlvota_file->buff, mcf_merge_buffer, MCF_MAX_TLVOTA_FILE_SIZE);
16446
16447 MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
16448 } else {
16449 mcf_ut_format_err_str("Fail to take write lock! \r\n");
16450 return KAL_FALSE;
16451 }
16452
16453 kal_mem_set(&lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
16454
16455 mcf_ret = mcf_read_tlvota_buffer_sbp_tag(i, sbp_tag, NVRAM_EF_MCF_TEST_OTA_LID, (kal_uint8 *)&lid_buffer, sizeof(nvram_ef_mcf_test_struct));
16456 if (mcf_ret != MCF_OTA_R_SUCCESS) {
16457 mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! i(%d), ret(%d) \r\n", i, mcf_ret);
16458 return KAL_FALSE;
16459 }
16460
16461 kal_mem_set(test_pattern,0,512);
16462 mcf_bytes_to_hex(&(lid_buffer.val_double_1), cnf->len, KAL_FALSE, &test_pattern);
16463 mcf_toupper((char *)test_pattern);
16464 mcf_toupper((char *)req->value);
16465
16466 if(strncmp((kal_char *)(req->value), test_pattern, cnf->len*2) != 0){
16467 mcf_ut_format_err_str("val_double_1, %s, %s\r\n", cnf->value, test_pattern);
16468 return KAL_FALSE;
16469 }
16470
16471 if(cnf->len != 8){
16472 mcf_ut_format_err_str("val_double_1, %d, %d\r\n", cnf->len, 8);
16473 return KAL_FALSE;
16474 }
16475 free_local_para((local_para_struct *)req);
16476 free_local_para((local_para_struct *)cnf);
16477 }
16478
16479 //buffer operation - val_buffer_1[0]
16480 /* Write MCF TLV-OTA file version to NVRAM */
16481 kal_mem_set(&nv_tlvota_file, 0, sizeof(nvram_ef_mcf_tlvota_file_info_struct));
16482 strncpy(nv_tlvota_file.path, MCF_FS_DEFAULT_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN);
16483 strncpy(nv_tlvota_file.name, MCF_FS_DEFAULT_TLVOTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN);
16484 if ( !nvram_external_write_data(NVRAM_EF_MCF_TLVOTA_FILE_LID, 1, (kal_uint8 *)&nv_tlvota_file, sizeof(nvram_ef_mcf_tlvota_file_info_struct)) ) {
16485 mcf_ut_format_err_str("Fail to write MCF TLV-OTA file info to NVRAM!!\r\n");
16486 return KAL_FALSE;
16487 }
16488
16489 kal_mem_set(&sbp_tag, 0, sizeof(mcf_tlvota_sbp_tag_t));
16490 sbp_tag.sbp_id = SBP_TAG_SBPID;
16491 strncpy(sbp_tag.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
16492 strncpy(sbp_tag.mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
16493
16494 for (i = 0; i < MAX_SIM_NUM; i++) {
16495 tlvota_file = &(pMcf->tlvota_file[i]);
16496 tlvota_file->sbp_id = SBP_TAG_SBPID;
16497 strncpy(tlvota_file->mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
16498 strncpy(tlvota_file->mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
16499
16500 //Byte operation - VAL_BYTE_11
16501 req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
16502 req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
16503 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_WRITE_OPOTA;
16504 req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
16505 req->num = MCF_TEST_OTA_LID_BASE_GID+42;
16506 req->ps_id = i;
16507 req->len = 1;
16508 strcpy(req->config, "0");
16509 ch_value = 'M';
16510 mcf_bytes_to_hex(&ch_value, 1, KAL_FALSE, &value);
16511 strcpy((kal_char *)(req->value), value);
16512
16513 cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
16514
16515 mcf_ret = mcf_set_variable_value(req, cnf);
16516 if (mcf_ret != MCF_OTA_R_SUCCESS) {
16517 mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "VAL_BYTE_11");
16518 return KAL_FALSE;
16519 }
16520
16521 MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
16522 if (tlvota_file) {
16523 kal_mem_cpy(tlvota_file->buff, mcf_merge_buffer, MCF_MAX_TLVOTA_FILE_SIZE);
16524
16525 MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
16526 } else {
16527 mcf_ut_format_err_str("Fail to take write lock! \r\n");
16528 return KAL_FALSE;
16529 }
16530
16531 kal_mem_set(&lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
16532
16533 mcf_ret = mcf_read_tlvota_buffer_sbp_tag(i, sbp_tag, NVRAM_EF_MCF_TEST_OTA_LID, (kal_uint8 *)&lid_buffer, sizeof(nvram_ef_mcf_test_struct));
16534 if (mcf_ret != MCF_OTA_R_SUCCESS) {
16535 mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! i(%d), ret(%d) \r\n", i, mcf_ret);
16536 return KAL_FALSE;
16537 }
16538
16539 kal_mem_set(test_pattern,0,512);
16540 mcf_bytes_to_hex(&(lid_buffer.val_buffer_1), cnf->len, KAL_FALSE, &test_pattern);
16541 mcf_toupper((char *)test_pattern);
16542 mcf_toupper((char *)req->value);
16543
16544 if(strncmp((kal_char *)(req->value), test_pattern, cnf->len*2) != 0){
16545 mcf_ut_format_err_str("val_buffer_1[0], %s, %s\r\n", cnf->value, test_pattern);
16546 return KAL_FALSE;
16547 }
16548
16549 if(cnf->len != 1){
16550 mcf_ut_format_err_str("val_buffer_1[0], %d, %d\r\n", cnf->len, 1);
16551 return KAL_FALSE;
16552 }
16553 free_local_para((local_para_struct *)req);
16554 free_local_para((local_para_struct *)cnf);
16555 }
16556
16557 //float operation - val_struct_1.vfloat
16558 /* Write MCF TLV-OTA file version to NVRAM */
16559 kal_mem_set(&nv_tlvota_file, 0, sizeof(nvram_ef_mcf_tlvota_file_info_struct));
16560 strncpy(nv_tlvota_file.path, MCF_FS_DEFAULT_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN);
16561 strncpy(nv_tlvota_file.name, MCF_FS_DEFAULT_TLVOTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN);
16562 if ( !nvram_external_write_data(NVRAM_EF_MCF_TLVOTA_FILE_LID, 1, (kal_uint8 *)&nv_tlvota_file, sizeof(nvram_ef_mcf_tlvota_file_info_struct)) ) {
16563 mcf_ut_format_err_str("Fail to write MCF TLV-OTA file info to NVRAM!!\r\n");
16564 return KAL_FALSE;
16565 }
16566
16567 kal_mem_set(&sbp_tag, 0, sizeof(mcf_tlvota_sbp_tag_t));
16568 sbp_tag.sbp_id = SBP_TAG_SBPID;
16569 strncpy(sbp_tag.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
16570 strncpy(sbp_tag.mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
16571
16572 for (i = 0; i < MAX_SIM_NUM; i++) {
16573 tlvota_file = &(pMcf->tlvota_file[i]);
16574 tlvota_file->sbp_id = SBP_TAG_SBPID;
16575 strncpy(tlvota_file->mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
16576 strncpy(tlvota_file->mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
16577
16578 //Byte operation - VAL_BYTE_11
16579 req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
16580 req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
16581 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_WRITE_OPOTA;
16582 req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
16583 req->num = MCF_TEST_OTA_LID_BASE_GID+78;
16584 req->ps_id = i;
16585 req->len = 4;
16586 strcpy(req->config, "");
16587 fl_value = 0.4;
16588 mcf_bytes_to_hex(&fl_value, 4, KAL_FALSE, &value);
16589 strcpy((kal_char *)(req->value), value);
16590
16591 cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
16592
16593 mcf_ret = mcf_set_variable_value(req, cnf);
16594 if (mcf_ret != MCF_OTA_R_SUCCESS) {
16595 mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "VAL_BYTE_11");
16596 return KAL_FALSE;
16597 }
16598
16599 MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
16600 if (tlvota_file) {
16601 kal_mem_cpy(tlvota_file->buff, mcf_merge_buffer, MCF_MAX_TLVOTA_FILE_SIZE);
16602
16603 MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
16604 } else {
16605 mcf_ut_format_err_str("Fail to take write lock! \r\n");
16606 return KAL_FALSE;
16607 }
16608
16609 kal_mem_set(&lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
16610
16611 mcf_ret = mcf_read_tlvota_buffer_sbp_tag(i, sbp_tag, NVRAM_EF_MCF_TEST_OTA_LID, (kal_uint8 *)&lid_buffer, sizeof(nvram_ef_mcf_test_struct));
16612 if (mcf_ret != MCF_OTA_R_SUCCESS) {
16613 mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! i(%d), ret(%d) \r\n", i, mcf_ret);
16614 return KAL_FALSE;
16615 }
16616
16617 kal_mem_set(test_pattern,0,512);
16618 mcf_bytes_to_hex(&(lid_buffer.val_struct_1.vfloat), cnf->len, KAL_FALSE, &test_pattern);
16619 mcf_toupper((char *)test_pattern);
16620 mcf_toupper((char *)req->value);
16621
16622 if(strncmp((kal_char *)(req->value), test_pattern, cnf->len*2) != 0){
16623 mcf_ut_format_err_str("val_struct_1.vfloat, %s, %s\r\n", cnf->value, test_pattern);
16624 return KAL_FALSE;
16625 }
16626
16627 if(cnf->len != 4){
16628 mcf_ut_format_err_str("val_struct_1.vfloat, %d, %d\r\n", cnf->len, 4);
16629 return KAL_FALSE;
16630 }
16631 free_local_para((local_para_struct *)req);
16632 free_local_para((local_para_struct *)cnf);
16633 }
16634
16635 //int in struct operation - val_struct_3[0].vint
16636 /* Write MCF TLV-OTA file version to NVRAM */
16637 kal_mem_set(&nv_tlvota_file, 0, sizeof(nvram_ef_mcf_tlvota_file_info_struct));
16638 strncpy(nv_tlvota_file.path, MCF_FS_DEFAULT_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN);
16639 strncpy(nv_tlvota_file.name, MCF_FS_DEFAULT_TLVOTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN);
16640 if ( !nvram_external_write_data(NVRAM_EF_MCF_TLVOTA_FILE_LID, 1, (kal_uint8 *)&nv_tlvota_file, sizeof(nvram_ef_mcf_tlvota_file_info_struct)) ) {
16641 mcf_ut_format_err_str("Fail to write MCF TLV-OTA file info to NVRAM!!\r\n");
16642 return KAL_FALSE;
16643 }
16644
16645 kal_mem_set(&sbp_tag, 0, sizeof(mcf_tlvota_sbp_tag_t));
16646 sbp_tag.sbp_id = SBP_TAG_SBPID;
16647 strncpy(sbp_tag.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
16648 strncpy(sbp_tag.mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
16649
16650 for (i = 0; i < MAX_SIM_NUM; i++) {
16651 tlvota_file = &(pMcf->tlvota_file[i]);
16652 tlvota_file->sbp_id = SBP_TAG_SBPID;
16653 strncpy(tlvota_file->mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
16654 strncpy(tlvota_file->mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
16655
16656 //Byte operation - VAL_BYTE_11
16657 req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
16658 req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
16659 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_WRITE_OPOTA;
16660 req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
16661 req->num = MCF_TEST_OTA_LID_BASE_GID+125;
16662 req->ps_id = i;
16663 req->len = 0;
16664 strcpy(req->config, "0");
16665 int_value = 66;
16666 mcf_bytes_to_hex(&int_value, 4, KAL_FALSE, &value);
16667 strcpy((kal_char *)(req->value), value);
16668
16669 cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
16670
16671 mcf_ret = mcf_set_variable_value(req, cnf);
16672 if (mcf_ret != MCF_OTA_R_SUCCESS) {
16673 mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "VAL_BYTE_11");
16674 return KAL_FALSE;
16675 }
16676
16677 MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
16678 if (tlvota_file) {
16679 kal_mem_cpy(tlvota_file->buff, mcf_merge_buffer, MCF_MAX_TLVOTA_FILE_SIZE);
16680
16681 MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
16682 } else {
16683 mcf_ut_format_err_str("Fail to take write lock! \r\n");
16684 return KAL_FALSE;
16685 }
16686
16687 kal_mem_set(&lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
16688
16689 mcf_ret = mcf_read_tlvota_buffer_sbp_tag(i, sbp_tag, NVRAM_EF_MCF_TEST_OTA_LID, (kal_uint8 *)&lid_buffer, sizeof(nvram_ef_mcf_test_struct));
16690 if (mcf_ret != MCF_OTA_R_SUCCESS) {
16691 mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! i(%d), ret(%d) \r\n", i, mcf_ret);
16692 return KAL_FALSE;
16693 }
16694
16695 kal_mem_set(test_pattern,0,512);
16696 mcf_bytes_to_hex(&(lid_buffer.val_struct_3[0].vint), cnf->len, KAL_FALSE, &test_pattern);
16697 mcf_toupper((char *)test_pattern);
16698 mcf_toupper((char *)req->value);
16699
16700 if(strncmp((kal_char *)(req->value), test_pattern, cnf->len*2) != 0){
16701 mcf_ut_format_err_str("val_struct_3[0].vint, %s, %s\r\n", cnf->value, test_pattern);
16702 return KAL_FALSE;
16703 }
16704
16705 if(cnf->len != 4){
16706 mcf_ut_format_err_str("val_struct_3[0].vint, %d, %d\r\n", cnf->len, 4);
16707 return KAL_FALSE;
16708 }
16709 free_local_para((local_para_struct *)req);
16710 free_local_para((local_para_struct *)cnf);
16711 }
16712
16713 //buffer in struct operation - VAL_STRUCT_3[3].VBUFFER[2][4][5]
16714 /* Write MCF TLV-OTA file version to NVRAM */
16715 kal_mem_set(&nv_tlvota_file, 0, sizeof(nvram_ef_mcf_tlvota_file_info_struct));
16716 strncpy(nv_tlvota_file.path, MCF_FS_DEFAULT_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN);
16717 strncpy(nv_tlvota_file.name, MCF_FS_DEFAULT_TLVOTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN);
16718 if ( !nvram_external_write_data(NVRAM_EF_MCF_TLVOTA_FILE_LID, 1, (kal_uint8 *)&nv_tlvota_file, sizeof(nvram_ef_mcf_tlvota_file_info_struct)) ) {
16719 mcf_ut_format_err_str("Fail to write MCF TLV-OTA file info to NVRAM!!\r\n");
16720 return KAL_FALSE;
16721 }
16722
16723 kal_mem_set(&sbp_tag, 0, sizeof(mcf_tlvota_sbp_tag_t));
16724 sbp_tag.sbp_id = SBP_TAG_SBPID;
16725 strncpy(sbp_tag.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
16726 strncpy(sbp_tag.mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
16727
16728 for (i = 0; i < MAX_SIM_NUM; i++) {
16729 tlvota_file = &(pMcf->tlvota_file[i]);
16730 tlvota_file->sbp_id = SBP_TAG_SBPID;
16731 strncpy(tlvota_file->mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
16732 strncpy(tlvota_file->mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
16733
16734 //Byte operation - VAL_BYTE_11
16735 req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
16736 req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
16737 req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_WRITE_OPOTA;
16738 req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
16739 req->num = MCF_TEST_OTA_LID_BASE_GID+120;
16740 req->ps_id = i;
16741 req->len = 0;
16742 strcpy(req->config, "3,2,4,5");
16743 ch_value = 'C';
16744 mcf_bytes_to_hex(&ch_value, 1, KAL_FALSE, &value);
16745 strcpy((kal_char *)(req->value), value);
16746
16747 cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
16748
16749 mcf_ret = mcf_set_variable_value(req, cnf);
16750 if (mcf_ret != MCF_OTA_R_SUCCESS) {
16751 mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "VAL_BYTE_11");
16752 return KAL_FALSE;
16753 }
16754
16755 MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
16756 if (tlvota_file) {
16757 kal_mem_cpy(tlvota_file->buff, mcf_merge_buffer, MCF_MAX_TLVOTA_FILE_SIZE);
16758
16759 MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
16760 } else {
16761 mcf_ut_format_err_str("Fail to take write lock! \r\n");
16762 return KAL_FALSE;
16763 }
16764
16765 kal_mem_set(&lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
16766
16767 mcf_ret = mcf_read_tlvota_buffer_sbp_tag(i, sbp_tag, NVRAM_EF_MCF_TEST_OTA_LID, (kal_uint8 *)&lid_buffer, sizeof(nvram_ef_mcf_test_struct));
16768 if (mcf_ret != MCF_OTA_R_SUCCESS) {
16769 mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! i(%d), ret(%d) \r\n", i, mcf_ret);
16770 return KAL_FALSE;
16771 }
16772
16773 kal_mem_set(test_pattern,0,512);
16774 mcf_bytes_to_hex(&(lid_buffer.val_struct_3[3].vbuffer[2]), cnf->len, KAL_FALSE, &test_pattern);
16775 mcf_toupper((char *)test_pattern);
16776 mcf_toupper((char *)req->value);
16777
16778 if(strncmp((kal_char *)(req->value), test_pattern, cnf->len*2) != 0){
16779 mcf_ut_format_err_str("VAL_STRUCT_3[3].VBUFFER[2][4][5], %s, %s\r\n", cnf->value, test_pattern);
16780 return KAL_FALSE;
16781 }
16782
16783 if(cnf->len != 1){
16784 mcf_ut_format_err_str("VAL_STRUCT_3[3].VBUFFER[2][4][5], %d, %d\r\n", cnf->len, 1);
16785 return KAL_FALSE;
16786 }
16787 free_local_para((local_para_struct *)req);
16788 free_local_para((local_para_struct *)cnf);
16789 }
16790
16791 MCF_UT_PASS();
16792 return KAL_TRUE;
16793}
16794#endif
16795
16796kal_char mcf_ut_digest_file[MCF_MAX_OTA_FILE_SIZE];
16797kal_bool mcf_ut_mcf_verify_digest(void *p_param, kal_char *p_ret_err_str, kal_uint32 *p_ret_err_str_sz)
16798{
16799 kal_uint32 ret = KAL_TRUE;
16800 kal_uint32 checksum = KAL_TRUE;
16801 mcf_tool_file_info_t *ota_file;
16802 mcf_digest *sign;
16803
16804 // CASE1 : verify pure digest by SHA256+RSA2048
16805 ret = mcf_ut_open_test_data("SHA256_RSA2048.mcfota", mcf_ut_digest_file, MCF_MAX_OTA_FILE_SIZE);
16806 if(ret == KAL_FALSE) return KAL_FALSE;
16807
16808 ota_file = (mcf_tool_file_info_t *) mcf_ut_digest_file;
16809 sign = (kal_char *)ota_file + ota_file->file_size;
16810
16811 ret = mcf_verify_digest(MCF_FILE_OP_SHA256_RSA2048, ota_file, sign);
16812 if(ret == KAL_FALSE) return KAL_FALSE;
16813
16814 // CASE2 : verify AES128 & digest by SHA256+RSA2048
16815
16816 ret = mcf_ut_open_test_data("AES128_SHA256_RSA2048.mcfota", mcf_ut_digest_file, MCF_MAX_OTA_FILE_SIZE);
16817 if(ret == KAL_FALSE) return KAL_FALSE;
16818
16819 ota_file = (mcf_tool_file_info_t *) mcf_ut_digest_file;
16820 sign = (kal_char *)ota_file + ota_file->file_size;
16821
16822 ret = mcf_verify_digest(MCF_FILE_OP_SHA256_RSA2048, ota_file, sign);
16823 if(ret == KAL_FALSE) return KAL_FALSE;
16824
16825 {
16826 kal_char password[32] = { '\0' };
16827 mcf_get_custom_aes_password(password);
16828 mcf_decrypt_128bit((kal_char *)password, ((kal_char *)ota_file + ota_file->total_len), (ota_file->file_size - ota_file->total_len));
16829 checksum = mcf_check_check_sum((kal_uint32 *)(ota_file), ota_file->file_size);
16830 if(checksum != 0) return KAL_FALSE;
16831 }
16832
16833 // CASE3 : verify AES256 & digest by SHA256+RSA2048
16834
16835 ret = mcf_ut_open_test_data("AES256_SHA256_RSA2048.mcfota", mcf_ut_digest_file, MCF_MAX_OTA_FILE_SIZE);
16836 if(ret == KAL_FALSE) return KAL_FALSE;
16837
16838 ota_file = (mcf_tool_file_info_t *) mcf_ut_digest_file;
16839 sign = (kal_char *)ota_file + ota_file->file_size;
16840
16841 ret = mcf_verify_digest(MCF_FILE_OP_SHA256_RSA2048, ota_file, sign);
16842 if(ret == KAL_FALSE) return KAL_FALSE;
16843
16844 {
16845 kal_char password[32] = { '\0' };
16846 mcf_get_custom_aes_password(password);
16847 mcf_decrypt_256bit((kal_char *)password, ((kal_char *)ota_file + ota_file->total_len), (ota_file->file_size - ota_file->total_len));
16848 checksum = mcf_check_check_sum((kal_uint32 *)(ota_file), ota_file->file_size);
16849 if(checksum != 0) return KAL_FALSE;
16850 }
16851
16852 // CASE4 : verify pure digest by SHA384+RSA3072
16853 ret = mcf_ut_open_test_data("SHA384_RSA3072.mcfota", mcf_ut_digest_file, MCF_MAX_OTA_FILE_SIZE);
16854 if(ret == KAL_FALSE) return KAL_FALSE;
16855
16856 ota_file = (mcf_tool_file_info_t *) mcf_ut_digest_file;
16857 sign = (kal_char *)ota_file + ota_file->file_size;
16858
16859 ret = mcf_verify_digest(MCF_FILE_OP_SHA384_RSA3072, ota_file, sign);
16860 if(ret == KAL_FALSE) return KAL_FALSE;
16861
16862 // CASE5 : verify AES128 & pure digest by SHA384+RSA3072
16863
16864 ret = mcf_ut_open_test_data("AES128_SHA384_RSA3072.mcfota", mcf_ut_digest_file, MCF_MAX_OTA_FILE_SIZE);
16865 if(ret == KAL_FALSE) return KAL_FALSE;
16866
16867 ota_file = (mcf_tool_file_info_t *) mcf_ut_digest_file;
16868 sign = (kal_char *)ota_file + ota_file->file_size;
16869
16870 ret = mcf_verify_digest(MCF_FILE_OP_SHA384_RSA3072, ota_file, sign);
16871 if(ret == KAL_FALSE) return KAL_FALSE;
16872
16873 {
16874 kal_char password[32] = { '\0' };
16875 mcf_get_custom_aes_password(password);
16876 mcf_decrypt_128bit((kal_char *)password, ((kal_char *)ota_file + ota_file->total_len), (ota_file->file_size - ota_file->total_len));
16877 checksum = mcf_check_check_sum((kal_uint32 *)(ota_file), ota_file->file_size);
16878 if(checksum != 0) return KAL_FALSE;
16879 }
16880
16881 // CASE6 : verify AES256 & pure digest by SHA384+RSA3072
16882
16883 ret = mcf_ut_open_test_data("AES256_SHA384_RSA3072.mcfota", mcf_ut_digest_file, MCF_MAX_OTA_FILE_SIZE);
16884 if(ret == KAL_FALSE) return KAL_FALSE;
16885
16886 ota_file = (mcf_tool_file_info_t *) mcf_ut_digest_file;
16887 sign = (kal_char *)ota_file + ota_file->file_size;
16888
16889 ret = mcf_verify_digest(MCF_FILE_OP_SHA384_RSA3072, ota_file, sign);
16890 if(ret == KAL_FALSE) return KAL_FALSE;
16891
16892 {
16893 kal_char password[32] = { '\0' };
16894 mcf_get_custom_aes_password(password);
16895 mcf_decrypt_256bit((kal_char *)password, ((kal_char *)ota_file + ota_file->total_len), (ota_file->file_size - ota_file->total_len));
16896 checksum = mcf_check_check_sum((kal_uint32 *)(ota_file), ota_file->file_size);
16897 if(checksum != 0) return KAL_FALSE;
16898 }
16899
16900 // CASE7 : Test wrong digest for SHA256 RSA2048
16901 ret = mcf_ut_open_test_data("wrong_SHA256_RSA2048.mcfota", mcf_ut_digest_file, MCF_MAX_OTA_FILE_SIZE);
16902 if(ret == KAL_FALSE) return KAL_FALSE;
16903
16904 ota_file = (mcf_tool_file_info_t *) mcf_ut_digest_file;
16905 sign = (kal_char *)ota_file + ota_file->file_size;
16906
16907 ret = mcf_verify_digest(MCF_FILE_OP_SHA256_RSA2048, ota_file, sign);
16908 if(ret == KAL_TRUE) return KAL_FALSE;
16909
16910 // CASE8 : Test wrong digest for SHA384 RSA3072
16911 ret = mcf_ut_open_test_data("wrong_SHA384_RSA3072.mcfota", mcf_ut_digest_file, MCF_MAX_OTA_FILE_SIZE);
16912 if(ret == KAL_FALSE) return KAL_FALSE;
16913
16914 ota_file = (mcf_tool_file_info_t *) mcf_ut_digest_file;
16915 sign = (kal_char *)ota_file + ota_file->file_size;
16916
16917 ret = mcf_verify_digest(MCF_FILE_OP_SHA384_RSA3072, ota_file, sign);
16918 if(ret == KAL_TRUE) return KAL_FALSE;
16919
16920 MCF_UT_PASS();
16921 return KAL_TRUE;
16922}
16923
16924/*------------------------------------------------------------------------------
16925 * Public fucntions.
16926 *----------------------------------------------------------------------------*/
16927#define MCF_UT_CASE(_func, _param) { #_func, _func, _param }
16928
16929kal_bool mcf_ut_st_create(void)
16930{
16931 static ST_TCASE_T mcf_ut_cases_s[] = {
16932
16933 MCF_UT_CASE(mcf_ut_mcf_set_file_path_dsbp_passive_mode, NULL),
16934 MCF_UT_CASE(mcf_ut_mcf_set_file_path_dsbp_active_mode, NULL),
16935 MCF_UT_CASE(mcf_ut_mcf_get_applied_file_path, NULL),
16936#if !defined(__MTK_TARGET__)
16937 MCF_UT_CASE(mcf_ut_find_ini_item, NULL),
16938 MCF_UT_CASE(mcf_ut_find_ini_sbp_id, NULL),
16939 MCF_UT_CASE(mcf_ut_compose_ini_item, NULL),
16940 MCF_UT_CASE(mcf_ut_gid_do_ota_full, NULL),
16941 MCF_UT_CASE(mcf_ut_gid_do_ota_by_lid, NULL),
16942 MCF_UT_CASE(mcf_ut_gid_read_ota_buffer, NULL),
16943 MCF_UT_CASE(mcf_ut_gid_read_tlvota_buffer, NULL),
16944 MCF_UT_CASE(mcf_ut_gid_read_tlvota_buffer_sbp, NULL),
16945 MCF_UT_CASE(mcf_ut_gid_reset_lid_full, NULL),
16946 MCF_UT_CASE(mcf_ut_gid_mcf_check_lid_need_reset, NULL),
16947 MCF_UT_CASE(mcf_ut_mcf_check_ota_need_update, NULL),
16948 MCF_UT_CASE(mcf_ut_mcf_get_tlvota_file_result, NULL),
16949 #if defined(__MCF_COMBINE_FILE_SUPPORT__)
16950 MCF_UT_CASE(mcf_ut_combined_ota_file, NULL),
16951 MCF_UT_CASE(mcf_ut_write_variable_value, NULL),
16952 #endif
16953#endif
16954#if defined(__MCF_UT_FRAMEWORK_SUPPORT__)
16955 MCF_UT_CASE(mcf_utfwk_ut_test_flow, NULL),
16956 MCF_UT_CASE(mcf_utfwk_sample_code_ut, NULL),
16957#endif
16958 MCF_UT_CASE(mcf_ut_em_update_req_hdlr, NULL),
16959#if defined(__MCF_FIND_TAG_SUPPORT__)
16960 MCF_UT_CASE(mcf_ut_find_tag, NULL),
16961 MCF_UT_CASE(mcf_ut_config_LID, NULL),
16962 #if !defined(__MTK_TARGET__)
16963 MCF_UT_CASE(mcf_ut_do_ota_full, NULL),
16964 MCF_UT_CASE(mcf_ut_do_ota_by_lid, NULL),
16965 MCF_UT_CASE(mcf_ut_read_ota_buffer, NULL),
16966 MCF_UT_CASE(mcf_ut_read_tlvota_buffer, NULL),
16967 MCF_UT_CASE(mcf_ut_read_tlvota_buffer_sbp, NULL),
16968 MCF_UT_CASE(mcf_ut_reset_lid_full, NULL),
16969 MCF_UT_CASE(mcf_ut_mcf_check_lid_need_reset, NULL),
16970 #endif
16971#endif
16972#if defined(__MCF_FIND_GID_SUPPORT__)
16973 MCF_UT_CASE(mcf_ut_find_gid, NULL),
16974 MCF_UT_CASE(mcf_ut_query_variable_value, NULL),
16975#endif
16976 MCF_UT_CASE(mcf_ut_gid_mcf_check_lid_need_reset_by_psid, NULL),
16977 MCF_UT_CASE(mcf_ut_mcf_encrypt_decrypt, NULL),
16978 MCF_UT_CASE(mcf_ut_mcf_verify_digest, NULL),
16979 #if defined(__MCF_COMBINE_FILE_SUPPORT__)
16980 MCF_UT_CASE(mcf_merge_ota_file_ut, NULL),
16981 MCF_UT_CASE(mcf_merge_ota_by_op_file_ut, NULL),
16982 MCF_UT_CASE(mcf_merge_one_gid_ut, NULL),
16983 MCF_UT_CASE(mcf_merge_ota_by_op_merge_one_gid_ut, NULL),
16984 MCF_UT_CASE(mcf_merge_encrypted_ota_file_ut, NULL),
16985 #endif
16986 //MCF_UT_CASE(mcf_ut_mcf_boot_trace, NULL),
16987
16988
16989 };
16990
16991#if defined(TEST_MCF_TEST_TASK)
16992 {
16993 kal_uint32 i = 0;
16994 kal_bool ret = KAL_FALSE;
16995 kal_char p_ret_err_str[100];
16996 kal_uint32 p_ret_err_str_sz;
16997 for (i = 0 ; i < (sizeof(mcf_ut_cases_s)/sizeof(ST_TCASE_T)) ; i++)
16998 {
16999 ret = mcf_ut_cases_s[i].test_func(mcf_ut_cases_s[i].test_param, p_ret_err_str, &p_ret_err_str_sz);
17000 if (ret == KAL_FALSE)
17001 ASSERT(0);
17002 }
17003 }
17004#elif defined(TEST_SYS_TEST_TASK)
17005 return st_reg_test("MCF", &(mcf_ut_cases_s[0]), (sizeof(mcf_ut_cases_s)/sizeof(ST_TCASE_T)));
17006#endif
17007}
17008
17009#if defined(TEST_MCF_TEST_TASK)
17010kal_bool mcf_test_task_init(void)
17011{
17012 return KAL_TRUE;
17013}
17014
17015void mcf_test_task_main(task_entry_struct *task_entry_ptr)
17016{
17017 ilm_struct current_ilm;
17018
17019 kal_set_active_module_id(MOD_MCF_TEST);
17020
17021 mcf_ut_st_create();
17022 // external queue, this may suspend.*/
17023 while(1)
17024 {
17025 if (KAL_TRUE == msg_receive_extq(&current_ilm)) {
17026 // handle ILM
17027 destroy_ilm(&current_ilm);
17028 }
17029 }
17030}
17031
17032kal_bool mcf_test_create(comptask_handler_struct **handle)
17033{
17034 static const comptask_handler_struct mcf_test_task_info =
17035 {
17036 mcf_test_task_main, /* task entry function */
17037 mcf_test_task_init, /* task initialization function */
17038 NULL /* task reset handler */
17039 };
17040
17041 *handle = (comptask_handler_struct *)&mcf_test_task_info;
17042 return KAL_TRUE;
17043}
17044#endif
17045