[Feature]Upload Modem source code
Change-Id: Id4294f30faced84d3e6fd6d5e61e1111bf287a37
diff --git a/mcu/service/mcf/src/mcf_ut.c b/mcu/service/mcf/src/mcf_ut.c
new file mode 100644
index 0000000..792c9e7
--- /dev/null
+++ b/mcu/service/mcf/src/mcf_ut.c
@@ -0,0 +1,17045 @@
+/*****************************************************************************
+* Copyright Statement:
+* --------------------
+* This software is protected by Copyright and the information contained
+* herein is confidential. The software may not be copied and the information
+* contained herein may not be used or disclosed except with the written
+* permission of MediaTek Inc. (C) 2018
+*
+* BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+* THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+* RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
+* AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
+* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
+* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
+* NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
+* SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
+* SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
+* THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
+* NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
+* SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
+*
+* BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
+* LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
+* AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
+* OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
+* MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+*
+* THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
+* WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
+* LAWS PRINCIPLES. ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
+* RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
+* THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
+*
+*****************************************************************************/
+
+/*******************************************************************************
+ * Filename:
+ * ---------
+ * mcf_ut.c
+ *
+ * Project:
+ * --------
+ * UMOLYA
+ *
+ * Description:
+ * ------------
+ * MD Configuration Framework unit test implementation.
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *==============================================================================
+ * HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *==============================================================================
+ *******************************************************************************/
+
+#include "kal_public_api.h"
+#include "sys_test.h"
+#include "fs_general_api.h"
+#include <direct.h>
+#include "syscomp_config.h"
+
+#include "em_msgid.h"
+#include "em_l4_common_public_struct.h"
+#include "em_mcf_public_struct.h"
+#include "em_struct.h"
+
+#include "nvram_interface.h"
+#include "nvram_group_def.h"
+#include "mcf_nvram_editor.h"
+
+#include "mcf_if.h"
+#include "mcf_util.h"
+#include "mcf_defs.h"
+#include "mcf_object.h"
+#include "mcf_debug.h"
+#include "mcf_utfwk.h"
+
+/*------------------------------------------------------------------------------
+ * Constant definition.
+ *----------------------------------------------------------------------------*/
+#define MCF_FS_DUMMY_AP_FILE_PATH "/nvdata/mdota"
+#define MCF_TEST_OTA_LID_BASE_GID 5059
+#define MCF_TEST_OTA_QUERY_LID_BASE_GID 5188
+
+/*------------------------------------------------------------------------------
+ * Private Helper macros.
+ *----------------------------------------------------------------------------*/
+#define MCF_UT_FAKE_PRINT 2
+#if MCF_UT_FAKE_PRINT == 1
+ extern int fake_print(const char *fmt, ...);
+ #define _mcf_ut_printf fake_print
+#elif MCF_UT_FAKE_PRINT == 2
+ #define _mcf_ut_printf printf
+#else
+ #define _mcf_ut_printf(...)
+#endif
+
+#define mcf_ut_printf(_fmts, ...) \
+ _mcf_ut_printf("%s(): " _fmts, __FUNCTION__, ##__VA_ARGS__)
+
+#define mcf_ut_format_err_str(_fmts, ...) \
+ kal_sprintf(p_ret_err_str, "%s():%d: " _fmts, __FUNCTION__, __LINE__, ##__VA_ARGS__); \
+ mcf_ut_printf("[FAILED] %s():%d: " _fmts, __FUNCTION__, __LINE__, ##__VA_ARGS__)
+
+#define MCF_UT_PASS() mcf_ut_printf("PASSED\n")
+
+/*------------------------------------------------------------------------------
+ * Global variables.
+ *----------------------------------------------------------------------------*/
+extern nvram_mcf_lid_info_struct mcf_last_mod_lid_g;
+extern nvram_mcf_lid_info_struct mcf_curr_mod_lid_g;
+extern nvram_mcf_lid_info_struct mcf_tlvota_last_mod_lid_g[MAX_SIM_NUM];
+extern nvram_mcf_lid_info_struct mcf_tlvota_curr_mod_lid_g[MAX_SIM_NUM];
+extern nvram_mcf_lid_info_struct mcf_general_tlvota_last_mod_lid_g[MAX_SIM_NUM];
+extern nvram_mcf_lid_info_struct mcf_general_tlvota_curr_mod_lid_g[MAX_SIM_NUM];
+extern kal_bool is_read_tlvota[MAX_SIM_NUM];
+extern kal_bool is_read_general_tlvota[MAX_SIM_NUM];
+extern nvram_ef_mcf_internal_info_struct nv_int_info;
+#ifdef __MCF_COMBINE_FILE_SUPPORT__
+extern kal_uint8 mcf_merge_buffer[MCF_MAX_TLVOTA_FILE_SIZE];
+kal_uint8 mcf_file_buffer[MCF_MAX_TLVOTA_FILE_SIZE];
+#endif
+
+/*------------------------------------------------------------------------------
+ * Private variables.
+ *----------------------------------------------------------------------------*/
+static nvram_ef_mcf_test_struct mcf_utfwk_lid_buffer;
+/* OTA test LID value pattern */
+static const nvram_ef_mcf_test_struct mcf_ut_test_lid_value_pattern = {
+ 6, // val_byte_11
+ 6, // val_byte_12
+ 0x6, // val_bit_byte_11
+ 0xf0, // val_bit_byte_12
+ 6, // val_short_11
+ 6, // val_short_12
+ 6, // val_int_1
+ 6, // val_float_1
+ 6, // val_long_1
+ 6.6, // val_double_1
+ "MCF Test 66", // val_buffer_1
+ {6, 6, 0x6, 0xf0, 6, 6, 6, 6, 6, 6.6, "MCF Test 66"}, // val_struct_1
+ 6, // val_byte_21
+ 6, // val_byte_22
+ 0x6, // val_bit_byte_21
+ 0xf0, // val_bit_byte_22
+ 6, // val_short_21
+ 6, // val_short_22
+ 6, // val_int_2
+ 6, // val_float_2
+ 6, // val_long_2
+ 6.6, // val_double_2
+ "MCF Test 66", // val_buffer_2
+ {6, 6, 0x6, 0xf0, 6, 6, 6, 6, 6, 6.6, "MCF Test 66"}, // val_struct_2
+ {{6, 6, 0x6, 0x6, 6, 6, 6, 6, 6, 6.6, "MCF"}, // val_struct_3[0]
+ {6, 6, 0x6, 0x6, 6, 6, 6, 6, 6, 6.6, "MCF"}, // val_struct_3[1]
+ {6, 6, 0x6, 0x6, 6, 6, 6, 6, 6, 6.6, "MCF"}, // val_struct_3[2]
+ {6, 6, 0x6, 0x6, 6, 6, 6, 6, 6, 6.6, "MCF"}} // val_struct_3[3]
+};
+
+/* OTA test LID value pattern */
+static nvram_ef_mcf_test_struct mcf_ut_test_lid_value_new_pattern = {
+ 0, // val_byte_11
+ 0, // val_byte_12
+ 0x0, // val_bit_byte_11
+ 0x0, // val_bit_byte_12
+ 0, // val_short_11
+ 0, // val_short_12
+ 0, // val_int_1
+ 0, // val_float_1
+ 0, // val_long_1
+ 0, // val_double_1
+ "", // val_buffer_1
+ {0, 0, 0x0, 0x0, 0, 0, 0, 0, 0, 0, "", {"MCF"}, {1,2,3}}, // val_struct_1
+ 0, // val_byte_21
+ 0, // val_byte_22
+ 0x0, // val_bit_byte_21
+ 0x0, // val_bit_byte_22
+ 0, // val_short_21
+ 0, // val_short_22
+ 0, // val_int_2
+ 0, // val_float_2
+ 0, // val_long_2
+ 0, // val_double_2
+ "", // val_buffer_2
+ {0, 0, 0x0, 0x0, 0, 0, 0, 0, 0, 0, "", {"MCF"}, {1,2,3}}, // val_struct_2
+ {{0, 0, 0x0, 0x0, 0, 0, 0, 0, 0, 0, "", {"MCF"}, {1,2,3}}, // val_struct_3[0]
+ {0, 0, 0x0, 0x0, 0, 0, 0, 0, 0, 0, "", {"MCF"}, {1,2,3}}, // val_struct_3[1]
+ {0, 0, 0x0, 0x0, 0, 0, 0, 0, 0, 0, "", {"MCF"}, {1,2,3}}, // val_struct_3[2]
+ {0, 0, 0x0, 0x0, 0, 0, 0, 0, 0, 0, "", {"MCF"}, {1,2,3}}}, // val_struct_3[3]
+ 0xFFFF,
+ 0xFFFFFFFF,
+ 0xFF,
+ 0xFF,
+ 0xFFFF,
+ 0xFFFFFFFF
+};
+
+/*------------------------------------------------------------------------------
+ * Private fucntions.
+ *----------------------------------------------------------------------------*/
+extern kal_char* release_verno(void);
+extern kal_char* build_date_time(void);
+extern sim_interface_enum l4c_gemini_get_actual_sim_id(sim_interface_enum simId);
+extern kal_bool mcf_set_file_path(l4c_mcf_set_config_req_struct *req);
+extern kal_bool mcf_get_applied_file_path(l4c_mcf_get_config_req_struct *req, l4c_mcf_get_config_cnf_struct *resp);
+extern kal_bool mcf_em_update_req_hdlr(local_para_struct *local_para_ptr);
+extern chmod(const char *_Filename,int _Mode);
+
+void mcf_ut_init(void)
+{
+ mcf_t *pMcf;
+ mcf_ota_file_t *ota_file;
+ mcf_tlvota_file_t *tlvota_file;
+ kal_uint8 *lid_buffer;
+ kal_uint32 i;
+
+ pMcf = mcf_get_instance();
+ ota_file = &(pMcf->ota_file);
+ kal_mem_set(pMcf, 0, sizeof(mcf_t));
+
+ /* Object init */
+ MCF_INIT_OBJECT_BEGIN(ota_file, mcf_enhmutex_g);
+ MCF_INIT_OBJECT_END(ota_file, mcf_enhmutex_g);
+
+ for (i = 0; i < MAX_SIM_NUM; i++) {
+ tlvota_file = &(pMcf->tlvota_file[i]);
+ MCF_INIT_OBJECT_BEGIN(tlvota_file, mcf_enhmutex_g);
+ MCF_INIT_OBJECT_END(tlvota_file, mcf_enhmutex_g);
+ }
+
+ tlvota_file = &(pMcf->general_tlvota_file);
+ MCF_INIT_OBJECT_BEGIN(tlvota_file, mcf_enhmutex_g);
+ MCF_INIT_OBJECT_END(tlvota_file, mcf_enhmutex_g);
+
+ /* Reset NVRAM_EF_MCF_OTA_FILE_LID */
+ lid_buffer = (kal_uint8 *)get_ctrl_buffer(sizeof(nvram_ef_mcf_ota_file_info_struct));
+ kal_mem_set(lid_buffer, 0, sizeof(nvram_ef_mcf_ota_file_info_struct));
+ for(i = 0; i < NVRAM_EF_MCF_OTA_FILE_TOTAL; i++) {
+ if ( !nvram_external_write_data(NVRAM_EF_MCF_OTA_FILE_LID, i+1, lid_buffer, sizeof(nvram_ef_mcf_ota_file_info_struct)) ) {
+ printf("Fail to reset NVRAM_EF_MCF_OTA_FILE_LID!!\r\n");
+ }
+ }
+ free_ctrl_buffer_set_null(lid_buffer);
+
+ /* Reset NVRAM_EF_MCF_TLVOTA_FILE_LID */
+ lid_buffer = (kal_uint8 *)get_ctrl_buffer(sizeof(nvram_ef_mcf_tlvota_file_info_struct));
+ kal_mem_set(lid_buffer, 0, sizeof(nvram_ef_mcf_tlvota_file_info_struct));
+ for(i = 0; i < NVRAM_EF_MCF_TLVOTA_FILE_TOTAL; i++) {
+ if ( !nvram_external_write_data(NVRAM_EF_MCF_TLVOTA_FILE_LID, i+1, lid_buffer, sizeof(nvram_ef_mcf_tlvota_file_info_struct)) ) {
+ printf("Fail to reset NVRAM_EF_MCF_TLVOTA_FILE_LID!!\r\n");
+ }
+ }
+ free_ctrl_buffer_set_null(lid_buffer);
+
+ /* Reset NVRAM_EF_MCF_TEST_OTA_LID */
+ lid_buffer = (kal_uint8 *)get_ctrl_buffer(sizeof(nvram_ef_mcf_test_struct));
+ kal_mem_set(lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
+ for(i = 0; i < NVRAM_EF_MCF_TEST_OTA_TOTAL; i++) {
+ if ( !nvram_external_write_data(NVRAM_EF_MCF_TEST_OTA_LID, i+1, lid_buffer, sizeof(nvram_ef_mcf_test_struct)) ) {
+ printf("Fail to reset NVRAM_EF_MCF_TEST_OTA_LID!!\r\n");
+ }
+ }
+ free_ctrl_buffer_set_null(lid_buffer);
+
+ /* Reset NVRAM_EF_MCF_TEST_OTA_QUERY_LID */
+ lid_buffer = (kal_uint8 *)get_ctrl_buffer(sizeof(nvram_ef_mcf_test_struct));
+ kal_mem_set(lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
+ for(i = 0; i < NVRAM_EF_MCF_TEST_OTA_QUERY_TOTAL; i++) {
+ if ( !nvram_external_write_data(NVRAM_EF_MCF_TEST_OTA_QUERY_LID, i+1, lid_buffer, sizeof(nvram_ef_mcf_test_struct)) ) {
+ printf("Fail to reset NVRAM_EF_MCF_TEST_OTA_QUERY_LID!!\r\n");
+ }
+ }
+ free_ctrl_buffer_set_null(lid_buffer);
+
+ /* Reset NVRAM_EF_MCF_SW_INFO_LID */
+ lid_buffer = (kal_uint8 *)get_ctrl_buffer(sizeof(nvram_ef_mcf_sw_info_struct));
+ kal_mem_set(lid_buffer, 0, sizeof(nvram_ef_mcf_sw_info_struct));
+ for(i = 0; i < NVRAM_EF_MCF_SW_INFO_TOTAL; i++) {
+ if ( !nvram_external_write_data(NVRAM_EF_MCF_SW_INFO_LID, i+1, lid_buffer, sizeof(nvram_ef_mcf_sw_info_struct)) ) {
+ printf("Fail to reset NVRAM_EF_MCF_SW_INFO_LID!!\r\n");
+ }
+ }
+ free_ctrl_buffer_set_null(lid_buffer);
+
+ /* Reset NVRAM_EF_MCF_INTERNAL_INFO_LID */
+ lid_buffer = (kal_uint8 *)get_ctrl_buffer(sizeof(nvram_ef_mcf_internal_info_struct));
+ kal_mem_set(lid_buffer, 0, sizeof(nvram_ef_mcf_internal_info_struct));
+ for(i = 0; i < NVRAM_EF_MCF_INTERNAL_INFO_TOTAL; i++) {
+ if ( !nvram_external_write_data(NVRAM_EF_MCF_INTERNAL_INFO_LID, i+1, lid_buffer, sizeof(nvram_ef_mcf_internal_info_struct)) ) {
+ printf("Fail to reset NVRAM_EF_MCF_INTERNAL_INFO_LID!!\r\n");
+ }
+ }
+ free_ctrl_buffer_set_null(lid_buffer);
+
+ return;
+}
+
+#if !defined(__MTK_TARGET__)
+kal_bool mcf_ut_open_test_data(kal_char *filename, kal_char *data_buff, kal_uint32 size)
+{
+ kal_char test_data_path[512];
+ kal_char *pos;
+ FILE *file;
+
+ getcwd(test_data_path, sizeof(test_data_path));
+ pos = strstr(test_data_path, "mcu");
+ kal_sprintf(pos + strlen("mcu"), "\\%s\\%s%c", MCF_UT_DB_FOLDER_PATH, filename, '\0');
+ file = fopen(test_data_path, "rb");
+
+ if(file != NULL)
+ {
+ kal_mem_set(data_buff, 0, size);
+ fread(data_buff, size, 1, file);
+ fclose(file);
+ } else {
+ return KAL_FALSE;
+ }
+
+ return KAL_TRUE;
+}
+
+kal_bool mcf_ut_write_test_data(kal_char *filename, kal_char *data_buff)
+{
+ kal_char test_data_path[512];
+ kal_char *pos;
+ FILE *file;
+
+ getcwd(test_data_path, sizeof(test_data_path));
+ pos = strstr(test_data_path, "mcu");
+ kal_sprintf(pos + strlen("mcu"), "\\%s\\%s%c", MCF_UT_DB_FOLDER_PATH, filename, '\0');
+ file = fopen(test_data_path, "w");
+
+ if(file != NULL)
+ {
+ fwrite(data_buff,1,strlen(data_buff),file);
+ fclose(file);
+ } else {
+ return KAL_FALSE;
+ }
+
+ return KAL_TRUE;
+}
+static kal_bool mcf_utfwk_dsbp_callback(sbp_reconfig_custom_param_struct *param_ptr)
+{
+ mcf_ota_result_e mcf_ota_result = MCF_OTA_R_SUCCESS;
+ mcf_tlvota_sbp_tag_t ota_sbp_tag;
+
+ ota_sbp_tag.sbp_id = param_ptr->sbp_id;
+ memcpy(&(ota_sbp_tag.mcc), param_ptr->mcc, MAX_MCC_STR_LEN);
+ memcpy(&(ota_sbp_tag.mnc), param_ptr->mnc, MAX_MNC_STR_LEN);
+ 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));
+
+ return KAL_TRUE;
+}
+#endif
+
+kal_bool mcf_check_dsbp_mode(kal_bool is_ignore_dsbp, sim_interface_enum sim_id)
+{
+ nvram_ef_mcf_internal_info_struct nv_int_info;
+ kal_bool ret = KAL_TRUE;
+
+ /* Read MCF SW information in NVRAM */
+ if ( !nvram_external_read_data(NVRAM_EF_MCF_INTERNAL_INFO_LID, 1, (kal_uint8 *)&nv_int_info, sizeof(nvram_ef_mcf_internal_info_struct))) {
+ printf("%s():%d: Fail to read LID(%d)\n", __FUNCTION__, __LINE__, NVRAM_EF_MCF_INTERNAL_INFO_LID);
+ ret = KAL_FALSE;
+
+ return ret;
+ }
+
+ if (nv_int_info.tlvota_is_ignore_dsbp[sim_id] != is_ignore_dsbp) {
+ ret = KAL_FALSE;
+
+ return ret;
+ }
+
+ return ret;
+}
+
+kal_bool mcf_ut_check_file_path(
+ l4c_mcf_set_config_req_struct *req,
+ kal_bool is_null_ota_path,
+ kal_bool is_null_tlvota_path,
+ kal_bool is_dsbp_active_mode)
+{
+ mcf_t *pMcf = mcf_get_instance();
+ kal_bool ret = KAL_TRUE;
+ kal_uint8 sim_id = req->ps_id;
+
+ switch (req->op)
+ {
+ case L4C_MCF_CONFIG_SET_OTA_AND_OPOTA_FILE_PATH:
+ {
+ nvram_ef_mcf_ota_file_info_struct nv_ota_file;
+ nvram_ef_mcf_tlvota_file_info_struct nv_tlvota_file;
+
+ ret = mcf_check_dsbp_mode(KAL_FALSE, sim_id);
+ if ( (ret != KAL_TRUE) || (pMcf->is_ignore_dsbp[sim_id] != KAL_FALSE) ) {
+ printf("%s():%d: MCF DSBP mode is incorrect!! is_ignore_dsbp(%d)\n", __FUNCTION__, __LINE__, pMcf->is_ignore_dsbp[sim_id]);
+ ret = KAL_FALSE;
+
+ return ret;
+ }
+
+ /* OTA */
+ 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))) {
+ printf("%s():%d: Fail to read LID(%d)\n", __FUNCTION__, __LINE__, NVRAM_EF_MCF_OTA_FILE_LID);
+ ret = KAL_FALSE;
+
+ return ret;
+ }
+ if (is_null_ota_path == KAL_FALSE) {
+ if ( (strncmp(nv_ota_file.path, MCF_FS_CUSTOM_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN) != 0)
+ || (strncmp(nv_ota_file.name, MCF_FS_DEFAULT_OTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN) != 0) ){
+ ret = KAL_FALSE;
+ }
+ } else {
+ if ( (strcmp(nv_ota_file.path, "") != 0) || (strcmp(nv_ota_file.name, "") != 0) ) {
+ ret = KAL_FALSE;
+ }
+ }
+
+ /* TLV-OTA */
+ 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))) {
+ printf("%s():%d: Fail to read LID(%d)\n", __FUNCTION__, __LINE__, NVRAM_EF_MCF_TLVOTA_FILE_LID);
+ ret = KAL_FALSE;
+
+ return ret;
+ }
+ if (is_null_tlvota_path == KAL_FALSE) {
+ if ( (strncmp(nv_tlvota_file.path, MCF_FS_CUSTOM_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN) != 0)
+ || (strncmp(nv_tlvota_file.name, MCF_FS_DEFAULT_TLVOTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN) != 0) ){
+ ret = KAL_FALSE;
+ }
+ } else {
+ if ( (strcmp(nv_tlvota_file.path, "") != 0) || (strcmp(nv_tlvota_file.name, "") != 0) ) {
+ ret = KAL_FALSE;
+ }
+ }
+ break;
+ }
+
+ case L4C_MCF_CONFIG_SET_OTA_FILE_PATH:
+ {
+ nvram_ef_mcf_ota_file_info_struct nv_ota_file;
+
+ ret = mcf_check_dsbp_mode(KAL_FALSE, sim_id);
+ if ( (ret != KAL_TRUE) || (pMcf->is_ignore_dsbp[sim_id] != KAL_FALSE) ) {
+ printf("%s():%d: MCF DSBP mode is incorrect!! is_ignore_dsbp(%d)\n", __FUNCTION__, __LINE__, pMcf->is_ignore_dsbp[sim_id]);
+ ret = KAL_FALSE;
+
+ return ret;
+ }
+
+ 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))) {
+ printf("%s():%d: Fail to read LID(%d)\n", __FUNCTION__, __LINE__, NVRAM_EF_MCF_OTA_FILE_LID);
+ ret = KAL_FALSE;
+
+ return ret;
+ }
+
+ if (is_null_ota_path == KAL_FALSE) {
+ if ( (strncmp(nv_ota_file.path, MCF_FS_CUSTOM_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN) != 0)
+ || (strncmp(nv_ota_file.name, MCF_FS_DEFAULT_OTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN) != 0) ){
+ ret = KAL_FALSE;
+ }
+ } else {
+ if ( (strcmp(nv_ota_file.path, "") != 0) || (strcmp(nv_ota_file.name, "") != 0) ) {
+ ret = KAL_FALSE;
+ }
+ }
+ break;
+ }
+
+ case L4C_MCF_CONFIG_SET_OPOTA_FILE_PATH:
+ {
+ nvram_ef_mcf_tlvota_file_info_struct nv_tlvota_file;
+
+ ret = mcf_check_dsbp_mode(KAL_FALSE, sim_id);
+ if ( (ret != KAL_TRUE) || (pMcf->is_ignore_dsbp[sim_id] != KAL_FALSE) ) {
+ printf("%s():%d: MCF DSBP mode is incorrect!! is_ignore_dsbp(%d)\n", __FUNCTION__, __LINE__, pMcf->is_ignore_dsbp[sim_id]);
+ ret = KAL_FALSE;
+
+ return ret;
+ }
+
+ 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))) {
+ printf("%s():%d: Fail to read LID(%d)\n", __FUNCTION__, __LINE__, NVRAM_EF_MCF_TLVOTA_FILE_LID);
+ ret = KAL_FALSE;
+
+ return ret;
+ }
+
+ if (is_null_tlvota_path == KAL_FALSE) {
+ if ( (strncmp(nv_tlvota_file.path, MCF_FS_CUSTOM_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN) != 0)
+ || (strncmp(nv_tlvota_file.name, MCF_FS_DEFAULT_TLVOTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN) != 0) ){
+ ret = KAL_FALSE;
+ }
+ } else {
+ if ( (strcmp(nv_tlvota_file.path, "") != 0) || (strcmp(nv_tlvota_file.name, "") != 0) ) {
+ ret = KAL_FALSE;
+ }
+ }
+ break;
+ }
+
+ case L4C_MCF_CONFIG_SET_FILE_PATH_IN_MCF_DSBP_ACTIVE_MODE:
+ {
+ ret = mcf_check_dsbp_mode(KAL_TRUE, sim_id);
+ if ( (ret != KAL_TRUE) || (pMcf->is_ignore_dsbp[sim_id] != KAL_TRUE) ) {
+ printf("%s():%d: MCF DSBP mode is incorrect!! is_ignore_dsbp(%d)\n", __FUNCTION__, __LINE__, pMcf->is_ignore_dsbp[sim_id]);
+ ret = KAL_FALSE;
+
+ return ret;
+ }
+
+ switch (req->config_type)
+ {
+ case L4C_MCF_CONFIG_TYPE_DEFAULT_BIN:
+ {
+ nvram_ef_mcf_ota_file_info_struct nv_ota_file;
+
+ 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))) {
+ printf("%s():%d: Fail to read LID(%d)\n", __FUNCTION__, __LINE__, NVRAM_EF_MCF_OTA_FILE_LID);
+ ret = KAL_FALSE;
+
+ return ret;
+ }
+
+ if (is_null_ota_path == KAL_FALSE) {
+ if (req->path_type == L4C_MCF_PATH_TYPE_OTA) {
+ if ( (strncmp(nv_ota_file.path, MCF_FS_DEFAULT_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN) != 0)
+ || (strncmp(nv_ota_file.name, MCF_FS_DEFAULT_OTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN) != 0) ) {
+ ret = KAL_FALSE;
+ }
+ } else if (req->path_type == L4C_MCF_PATH_TYPE_RUNTIME) {
+ if ( (strncmp(nv_ota_file.path, MCF_FS_CUSTOM_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN) != 0)
+ || (strncmp(nv_ota_file.name, MCF_FS_DEFAULT_OTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN) != 0) ) {
+ ret = KAL_FALSE;
+ }
+ }
+ } else {
+ if ( (strncmp(nv_ota_file.path, MCF_FS_DEFAULT_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN) != 0)
+ || (strncmp(nv_ota_file.name, MCF_FS_DEFAULT_OTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN) != 0) ){
+ ret = KAL_FALSE;
+ }
+ }
+ break;
+ }
+
+ case L4C_MCF_CONFIG_TYPE_CARRIER_BIN:
+ {
+ nvram_ef_mcf_tlvota_file_info_struct nv_tlvota_file;
+
+ 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))) {
+ printf("%s():%d: Fail to read LID(%d)\n", __FUNCTION__, __LINE__, NVRAM_EF_MCF_TLVOTA_FILE_LID);
+ ret = KAL_FALSE;
+
+ return ret;
+ }
+
+ if (is_null_tlvota_path == KAL_FALSE) {
+ if (req->path_type == L4C_MCF_PATH_TYPE_OTA) {
+ if ( (strncmp(nv_tlvota_file.path, MCF_FS_DEFAULT_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN) != 0)
+ || (strncmp(nv_tlvota_file.name, MCF_FS_DEFAULT_TLVOTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN) != 0) ){
+ ret = KAL_FALSE;
+ }
+ } else if (req->path_type == L4C_MCF_PATH_TYPE_RUNTIME) {
+ if ( (strncmp(nv_tlvota_file.path, MCF_FS_CUSTOM_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN) != 0)
+ || (strncmp(nv_tlvota_file.name, MCF_FS_DEFAULT_TLVOTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN) != 0) ) {
+ ret = KAL_FALSE;
+ }
+ }
+ } else {
+ if ( (strcmp(nv_tlvota_file.path, "") != 0) || (strcmp(nv_tlvota_file.name, "") != 0) ) {
+ ret = KAL_FALSE;
+ }
+ }
+ break;
+ }
+
+ default:
+ printf("%s():%d: Invalid config type(%d)\n", __FUNCTION__, __LINE__, req->config_type);
+ ret = KAL_FALSE;
+ break;
+ }
+
+ break;
+ }
+
+ default:
+ ret = KAL_FALSE;
+ break;
+ }
+
+ return ret;
+}
+
+kal_bool mcf_check_test_lid_value(kal_uint8 *target_buff)
+{
+ kal_bool ret = KAL_TRUE;
+ kal_uint8 *lid_buffer;
+
+ if (target_buff) {
+ if ( kal_mem_cmp(target_buff, &mcf_ut_test_lid_value_pattern, sizeof(nvram_ef_mcf_test_struct)) != 0 ) {
+ ret = KAL_FALSE;
+ }
+ } else {
+ /*
+ * NVRAM_EF_MCF_TEST_OTA_LID record 1
+ */
+ lid_buffer = (kal_uint8 *)get_ctrl_buffer(sizeof(nvram_ef_mcf_test_struct));
+ if ( !nvram_external_read_data(NVRAM_EF_MCF_TEST_OTA_LID, 1, lid_buffer, sizeof(nvram_ef_mcf_test_struct)) ) {
+ printf("Fail to read NVRAM_EF_MCF_TEST_OTA_LID!!\r\n");
+ ret = KAL_FALSE;
+ }
+
+ if ( kal_mem_cmp(lid_buffer, &mcf_ut_test_lid_value_pattern, sizeof(nvram_ef_mcf_test_struct)) != 0 ) {
+ ret = KAL_FALSE;
+ }
+ free_ctrl_buffer_set_null(lid_buffer);
+
+ if (ret == KAL_FALSE) {
+ return ret;
+ }
+
+ /*
+ * NVRAM_EF_MCF_TEST_OTA_LID record 2
+ */
+ lid_buffer = (kal_uint8 *)get_ctrl_buffer(sizeof(nvram_ef_mcf_test_struct));
+ if ( !nvram_external_read_data(NVRAM_EF_MCF_TEST_OTA_LID, 2, lid_buffer, sizeof(nvram_ef_mcf_test_struct)) ) {
+ printf("Fail to read NVRAM_EF_MCF_TEST_OTA_LID!!\r\n");
+ ret = KAL_FALSE;
+ }
+
+ if ( kal_mem_cmp(lid_buffer, &mcf_ut_test_lid_value_pattern, sizeof(nvram_ef_mcf_test_struct)) != 0 ) {
+ ret = KAL_FALSE;
+ }
+ free_ctrl_buffer_set_null(lid_buffer);
+
+ if (ret == KAL_FALSE) {
+ return ret;
+ }
+ }
+
+
+ return ret;
+}
+
+/*------------------------------------------------------------------------------
+ * Test case functions.
+ *----------------------------------------------------------------------------*/
+kal_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)
+{
+ l4c_mcf_set_config_req_struct *req;
+ kal_uint8 i;
+ mcf_ota_result_e mcf_ret;
+ kal_bool ret;
+
+ mcf_ut_init();
+
+ /*
+ * Set both OTA and TLV-OTA path positive test
+ */
+ for(i = 0; i < MAX_SIM_NUM; i++) {
+ req = (l4c_mcf_set_config_req_struct *)construct_local_para(sizeof(l4c_mcf_set_config_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_SET_OTA_AND_OPOTA_FILE_PATH;
+ strcpy(req->config1, MCF_FS_DUMMY_AP_FILE_PATH);
+ strcpy(req->config2, MCF_FS_DEFAULT_OTA_FILE_NAME);
+ strcpy(req->config3, MCF_FS_DUMMY_AP_FILE_PATH);
+ strcpy(req->config4, MCF_FS_DEFAULT_TLVOTA_FILE_NAME);
+ req->ps_id = i;
+
+ mcf_ret = mcf_set_file_path(req);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Set both OTA/TLV-OTA file paths positive test FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+
+ ret = mcf_ut_check_file_path(req, KAL_FALSE, KAL_FALSE, KAL_FALSE);
+ if (ret != KAL_TRUE) {
+ mcf_ut_format_err_str("Check set both OTA/TLV-OTA file paths positive test FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+ free_local_para((local_para_struct *)req);
+ }
+
+ /*
+ * Set both OTA and TLV-OTA path positive test
+ */
+ for(i = 0; i < MAX_SIM_NUM; i++) {
+ req = (l4c_mcf_set_config_req_struct *)construct_local_para(sizeof(l4c_mcf_set_config_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_SET_OTA_AND_OPOTA_FILE_PATH;
+ strcpy(req->config1, MCF_FS_DUMMY_AP_FILE_PATH);
+ strcpy(req->config2, MCF_FS_DEFAULT_OTA_FILE_NAME);
+ strcpy(req->config3, "");
+ strcpy(req->config4, "");
+ req->ps_id = i;
+
+ mcf_ret = mcf_set_file_path(req);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Set one of OTA/TLV-OTA file path positive test FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+
+ ret = mcf_ut_check_file_path(req, KAL_FALSE, KAL_TRUE, KAL_FALSE);
+ if (ret != KAL_TRUE) {
+ mcf_ut_format_err_str("Check set one of OTA/TLV-OTA file path positive test FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+ free_local_para((local_para_struct *)req);
+ }
+
+ /*
+ * Set both OTA and TLV-OTA path negative test
+ */
+ for(i = 0; i < MAX_SIM_NUM; i++) {
+ req = (l4c_mcf_set_config_req_struct *)construct_local_para(sizeof(l4c_mcf_set_config_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_SET_OTA_AND_OPOTA_FILE_PATH;
+ strcpy(req->config1, MCF_FS_DUMMY_AP_FILE_PATH);
+ strcpy(req->config2, MCF_FS_DEFAULT_OTA_FILE_NAME);
+ strcpy(req->config3, "");
+ strcpy(req->config4, "");
+ req->ps_id = i;
+
+ mcf_ret = mcf_set_file_path(req);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Set one of OTA/TLV-OTA file path negative test FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+
+ ret = mcf_ut_check_file_path(req, KAL_FALSE, KAL_FALSE, KAL_FALSE);
+ if (ret != KAL_FALSE) {
+ mcf_ut_format_err_str("Check set one of OTA/TLV-OTA file path negative test FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+ free_local_para((local_para_struct *)req);
+ }
+
+ /*
+ * Set OTA path positive test
+ */
+ req = (l4c_mcf_set_config_req_struct *)construct_local_para(sizeof(l4c_mcf_set_config_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_SET_OTA_FILE_PATH;
+ strcpy(req->config1, MCF_FS_DUMMY_AP_FILE_PATH);
+ strcpy(req->config2, MCF_FS_DEFAULT_OTA_FILE_NAME);
+
+ mcf_ret = mcf_set_file_path(req);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Set OTA file path positive test FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+
+ ret = mcf_ut_check_file_path(req, KAL_FALSE, KAL_TRUE, KAL_FALSE);
+ if (ret != KAL_TRUE) {
+ mcf_ut_format_err_str("Check set OTA file path positive test FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+ free_local_para((local_para_struct *)req);
+
+ /*
+ * Delete OTA path positive test
+ */
+ req = (l4c_mcf_set_config_req_struct *)construct_local_para(sizeof(l4c_mcf_set_config_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_SET_OTA_FILE_PATH;
+ strcpy(req->config1, "");
+ strcpy(req->config2, "");
+
+ mcf_ret = mcf_set_file_path(req);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Delete OTA file path positive test FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+
+ ret = mcf_ut_check_file_path(req, KAL_TRUE, KAL_FALSE, KAL_FALSE);
+ if (ret != KAL_TRUE) {
+ mcf_ut_format_err_str("Check delete OTA file path positive test FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+ free_local_para((local_para_struct *)req);
+
+ /*
+ * Set OTA path negative test
+ */
+ req = (l4c_mcf_set_config_req_struct *)construct_local_para(sizeof(l4c_mcf_set_config_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_SET_OTA_FILE_PATH;
+ strcpy(req->config1, MCF_FS_DUMMY_AP_FILE_PATH);
+ strcpy(req->config2, MCF_FS_DEFAULT_TLVOTA_FILE_NAME);
+
+ mcf_ret = mcf_set_file_path(req);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Set OTA file path negative test FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+
+ ret = mcf_ut_check_file_path(req, KAL_FALSE, KAL_TRUE, KAL_FALSE);
+ if (ret != KAL_FALSE) {
+ mcf_ut_format_err_str("Check set OTA file path negative test FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+ free_local_para((local_para_struct *)req);
+
+ /*
+ * Set TLV-OTA path positive test
+ */
+ for(i = 0; i < MAX_SIM_NUM; i++) {
+ req = (l4c_mcf_set_config_req_struct *)construct_local_para(sizeof(l4c_mcf_set_config_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_SET_OPOTA_FILE_PATH;
+ strcpy(req->config1, MCF_FS_DUMMY_AP_FILE_PATH);
+ strcpy(req->config2, MCF_FS_DEFAULT_TLVOTA_FILE_NAME);
+ req->ps_id = i;
+
+ mcf_ret = mcf_set_file_path(req);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Set TLV-OTA file path positive test FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+
+ ret = mcf_ut_check_file_path(req, KAL_TRUE, KAL_FALSE, KAL_FALSE);
+ if (ret != KAL_TRUE) {
+ mcf_ut_format_err_str("Check set TLV-OTA file path positive test FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+ free_local_para((local_para_struct *)req);
+ }
+
+ /*
+ * Delete TLV-OTA path positive test
+ */
+ for(i = 0; i < MAX_SIM_NUM; i++) {
+ req = (l4c_mcf_set_config_req_struct *)construct_local_para(sizeof(l4c_mcf_set_config_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_SET_OPOTA_FILE_PATH;
+ strcpy(req->config1, "");
+ strcpy(req->config2, "");
+ req->ps_id = i;
+
+ mcf_ret = mcf_set_file_path(req);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Delete TLV-OTA file path positive test FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+
+ ret = mcf_ut_check_file_path(req, KAL_FALSE, KAL_TRUE, KAL_FALSE);
+ if (ret != KAL_TRUE) {
+ mcf_ut_format_err_str("Check delete TLV-OTA file path positive test FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+ free_local_para((local_para_struct *)req);
+ }
+
+ /*
+ * Set TLV-OTA path negative test
+ */
+ for(i = 0; i < MAX_SIM_NUM; i++) {
+ req = (l4c_mcf_set_config_req_struct *)construct_local_para(sizeof(l4c_mcf_set_config_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_SET_OPOTA_FILE_PATH;
+ strcpy(req->config1, MCF_FS_DUMMY_AP_FILE_PATH);
+ strcpy(req->config2, MCF_FS_DEFAULT_OTA_FILE_NAME);
+ req->ps_id = i;
+
+ mcf_ret = mcf_set_file_path(req);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Set TLV-OTA file path negative test FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+
+ ret = mcf_ut_check_file_path(req, KAL_FALSE, KAL_FALSE, KAL_FALSE);
+ if (ret != KAL_FALSE) {
+ mcf_ut_format_err_str("Check set TLV-OTA file path negative test FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+ free_local_para((local_para_struct *)req);
+ }
+
+
+ MCF_UT_PASS();
+ return KAL_TRUE;
+}
+
+kal_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)
+{
+ mcf_t *pMcf = mcf_get_instance();
+ mcf_ota_file_t *ota_file;
+ mcf_tlvota_file_t *tlvota_file;
+ mcf_tool_file_info_t *pFile;
+ l4c_mcf_set_config_req_struct *req;
+ sim_interface_enum sim_id;
+ kal_uint8 i;
+ mcf_ota_result_e mcf_ret;
+ kal_bool ret;
+
+ mcf_ut_init();
+
+ ota_file = &(pMcf->ota_file);
+ MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ if (ota_file) {
+ pFile = (mcf_tool_file_info_t *)(ota_file->buff);
+ pFile->file_version = 2;
+ MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("set file path FAIL!! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+
+
+ for(i = 0; i < MAX_SIM_NUM; i++) {
+ tlvota_file = &(pMcf->tlvota_file[i]);
+ MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ if (tlvota_file) {
+ pFile = (mcf_tool_file_info_t *)(tlvota_file->buff);
+ pFile->file_version = 2;
+ MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ }else {
+ mcf_ut_format_err_str("set file path FAIL!! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+ }
+
+ /*
+ * Set OTA path in default path positive test
+ */
+ req = (l4c_mcf_set_config_req_struct *)construct_local_para(sizeof(l4c_mcf_set_config_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_SET_FILE_PATH_IN_MCF_DSBP_ACTIVE_MODE;
+ req->config_type = L4C_MCF_CONFIG_TYPE_DEFAULT_BIN;
+ req->path_type = L4C_MCF_PATH_TYPE_OTA;
+ strcpy(req->config1, MCF_FS_DEFAULT_OTA_FILE_NAME);
+
+ mcf_ret = mcf_set_file_path(req);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Set OTA file path in default path positive test FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+
+ ret = mcf_ut_check_file_path(req, KAL_FALSE, KAL_TRUE, KAL_TRUE);
+ if (ret != KAL_TRUE) {
+ mcf_ut_format_err_str("Check set OTA file path in default path positive test FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+ free_local_para((local_para_struct *)req);
+
+ /*
+ * Set OTA path in default path with NULL file name positive test
+ */
+ req = (l4c_mcf_set_config_req_struct *)construct_local_para(sizeof(l4c_mcf_set_config_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_SET_FILE_PATH_IN_MCF_DSBP_ACTIVE_MODE;
+ req->config_type = L4C_MCF_CONFIG_TYPE_DEFAULT_BIN;
+ req->path_type = L4C_MCF_PATH_TYPE_OTA;
+ strcpy(req->config1, "");
+
+ mcf_ret = mcf_set_file_path(req);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Set OTA file path in default path with NULL file name positive test FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+
+ ret = mcf_ut_check_file_path(req, KAL_TRUE, KAL_TRUE, KAL_TRUE);
+ if (ret != KAL_TRUE) {
+ mcf_ut_format_err_str("Check set OTA file path in default path with NULL file name positive test FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+ free_local_para((local_para_struct *)req);
+
+ /*
+ * Set OTA path in runtime path positive test
+ */
+ req = (l4c_mcf_set_config_req_struct *)construct_local_para(sizeof(l4c_mcf_set_config_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_SET_FILE_PATH_IN_MCF_DSBP_ACTIVE_MODE;
+ req->config_type = L4C_MCF_CONFIG_TYPE_DEFAULT_BIN;
+ req->path_type = L4C_MCF_PATH_TYPE_RUNTIME;
+ strcpy(req->config1, MCF_FS_DEFAULT_OTA_FILE_NAME);
+
+ mcf_ret = mcf_set_file_path(req);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Set OTA file path in runtime path positive test FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+
+ ret = mcf_ut_check_file_path(req, KAL_FALSE, KAL_TRUE, KAL_TRUE);
+ if (ret != KAL_TRUE) {
+ mcf_ut_format_err_str("Check set OTA file path in runtime path positive test FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+ free_local_para((local_para_struct *)req);
+
+ /*
+ * Set OTA path in default path with NULL file name positive test
+ */
+ req = (l4c_mcf_set_config_req_struct *)construct_local_para(sizeof(l4c_mcf_set_config_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_SET_FILE_PATH_IN_MCF_DSBP_ACTIVE_MODE;
+ req->config_type = L4C_MCF_CONFIG_TYPE_DEFAULT_BIN;
+ req->path_type = L4C_MCF_PATH_TYPE_OTA;
+ strcpy(req->config1, "");
+
+ mcf_ret = mcf_set_file_path(req);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Set OTA file path in default path with NULL file name positive test FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+
+ ret = mcf_ut_check_file_path(req, KAL_TRUE, KAL_TRUE, KAL_TRUE);
+ if (ret != KAL_TRUE) {
+ mcf_ut_format_err_str("Check set OTA file path in default path with NULL file name positive test FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+ free_local_para((local_para_struct *)req);
+
+ /*
+ * Set OTA path in runtime path with NULL file name positive test
+ */
+ req = (l4c_mcf_set_config_req_struct *)construct_local_para(sizeof(l4c_mcf_set_config_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_SET_FILE_PATH_IN_MCF_DSBP_ACTIVE_MODE;
+ req->config_type = L4C_MCF_CONFIG_TYPE_DEFAULT_BIN;
+ req->path_type = L4C_MCF_PATH_TYPE_RUNTIME;
+ strcpy(req->config1, "");
+
+ mcf_ret = mcf_set_file_path(req);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Set OTA file path in runtime path with NULL file name positive test FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+
+ ret = mcf_ut_check_file_path(req, KAL_TRUE, KAL_TRUE, KAL_TRUE);
+ if (ret != KAL_TRUE) {
+ mcf_ut_format_err_str("Check set OTA file path in runtime path with NULL file name positive test FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+ free_local_para((local_para_struct *)req);
+
+ /*
+ * Set TLV-OTA path in default path positive test
+ */
+ for(i = 0; i < MAX_SIM_NUM; i++) {
+ req = (l4c_mcf_set_config_req_struct *)construct_local_para(sizeof(l4c_mcf_set_config_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_SET_FILE_PATH_IN_MCF_DSBP_ACTIVE_MODE;
+ req->config_type = L4C_MCF_CONFIG_TYPE_CARRIER_BIN;
+ req->path_type = L4C_MCF_PATH_TYPE_OTA;
+ strcpy(req->config1, MCF_FS_DEFAULT_TLVOTA_FILE_NAME);
+ tlvota_file = &(pMcf->tlvota_file[i]);
+ MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ if (tlvota_file) {
+ pFile = (mcf_tool_file_info_t *)(tlvota_file->buff);
+ pFile->file_version = 2;
+ req->ps_id = i;
+ sim_id = l4c_gemini_get_actual_sim_id(req->ps_id);
+ MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Set TLV-OTA path fail! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+
+
+ mcf_ret = mcf_set_file_path(req);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Set TLV-OTA file path in default path positive test FAIL\r\n");
+ return KAL_FALSE;
+ }
+
+ /* Assume DSBP success */
+ pMcf->is_dsbp_ongoing[sim_id] = KAL_FALSE;
+ kal_mem_cpy(&(tlvota_file->last_file), &(tlvota_file->temp_file), sizeof(mcf_file_info_t));
+
+ ret = mcf_ut_check_file_path(req, KAL_TRUE, KAL_FALSE, KAL_TRUE);
+ if (ret != KAL_TRUE) {
+ mcf_ut_format_err_str("Check set TLV-OTA file path in default path positive test FAIL\r\n");
+ return KAL_FALSE;
+ }
+ free_local_para((local_para_struct *)req);
+ }
+
+ /*
+ * Set TLV-OTA path in default path with NULL file name (deactivate OTA by OP) positive test
+ */
+ for(i = 0; i < MAX_SIM_NUM; i++) {
+ req = (l4c_mcf_set_config_req_struct *)construct_local_para(sizeof(l4c_mcf_set_config_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_SET_FILE_PATH_IN_MCF_DSBP_ACTIVE_MODE;
+ req->config_type = L4C_MCF_CONFIG_TYPE_CARRIER_BIN;
+ req->path_type = L4C_MCF_PATH_TYPE_OTA;
+ strcpy(req->config1, "");
+ tlvota_file = &(pMcf->tlvota_file[i]);
+ MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ if (tlvota_file) {
+ pFile = (mcf_tool_file_info_t *)(tlvota_file->buff);
+ pFile->file_version = 2;
+ req->ps_id = i;
+ sim_id = l4c_gemini_get_actual_sim_id(req->ps_id);
+ MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Set TLV-OTA path fail! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+
+ mcf_ret = mcf_set_file_path(req);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ 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");
+ return KAL_FALSE;
+ }
+
+ /* Assume DSBP success */
+ pMcf->is_dsbp_ongoing[sim_id] = KAL_FALSE;
+ kal_mem_cpy(&(tlvota_file->last_file), &(tlvota_file->temp_file), sizeof(mcf_file_info_t));
+
+ ret = mcf_ut_check_file_path(req, KAL_TRUE, KAL_TRUE, KAL_TRUE);
+ if (ret != KAL_TRUE) {
+ 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");
+ return KAL_FALSE;
+ }
+ free_local_para((local_para_struct *)req);
+ }
+
+ /*
+ * Set TLV-OTA path in runtime path positive test
+ */
+ for(i = 0; i < MAX_SIM_NUM; i++) {
+ req = (l4c_mcf_set_config_req_struct *)construct_local_para(sizeof(l4c_mcf_set_config_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_SET_FILE_PATH_IN_MCF_DSBP_ACTIVE_MODE;
+ req->config_type = L4C_MCF_CONFIG_TYPE_CARRIER_BIN;
+ req->path_type = L4C_MCF_PATH_TYPE_RUNTIME;
+ strcpy(req->config1, MCF_FS_DEFAULT_TLVOTA_FILE_NAME);
+ tlvota_file = &(pMcf->tlvota_file[i]);
+ MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ if (tlvota_file) {
+ pFile = (mcf_tool_file_info_t *)(tlvota_file->buff);
+ pFile->file_version = 2;
+ req->ps_id = i;
+ sim_id = l4c_gemini_get_actual_sim_id(req->ps_id);
+ MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Set TLV-OTA path fail! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+
+ mcf_ret = mcf_set_file_path(req);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Set TLV-OTA file path in runtime path positive test FAIL\r\n");
+ return KAL_FALSE;
+ }
+
+ /* Assume DSBP success */
+ pMcf->is_dsbp_ongoing[sim_id] = KAL_FALSE;
+ kal_mem_cpy(&(tlvota_file->last_file), &(tlvota_file->temp_file), sizeof(mcf_file_info_t));
+
+
+ ret = mcf_ut_check_file_path(req, KAL_TRUE, KAL_FALSE, KAL_TRUE);
+ if (ret != KAL_TRUE) {
+ mcf_ut_format_err_str("Check set TLV-OTA file path in runtime path positive test FAIL\r\n");
+ return KAL_FALSE;
+ }
+ free_local_para((local_para_struct *)req);
+ }
+
+ /*
+ * Set TLV-OTA path in runtime path with NULL file name (deactivate OTA by OP) positive test
+ */
+ for(i = 0; i < MAX_SIM_NUM; i++) {
+ req = (l4c_mcf_set_config_req_struct *)construct_local_para(sizeof(l4c_mcf_set_config_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_SET_FILE_PATH_IN_MCF_DSBP_ACTIVE_MODE;
+ req->config_type = L4C_MCF_CONFIG_TYPE_CARRIER_BIN;
+ req->path_type = L4C_MCF_PATH_TYPE_RUNTIME;
+ strcpy(req->config1, "");
+ tlvota_file = &(pMcf->tlvota_file[i]);
+ MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ if (tlvota_file) {
+ pFile = (mcf_tool_file_info_t *)(tlvota_file->buff);
+ pFile->file_version = 2;
+ req->ps_id = i;
+ sim_id = l4c_gemini_get_actual_sim_id(req->ps_id);
+ MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Set TLV-OTA path fail! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+
+ mcf_ret = mcf_set_file_path(req);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ 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");
+ return KAL_FALSE;
+ }
+
+ /* Assume DSBP success */
+ pMcf->is_dsbp_ongoing[sim_id] = KAL_FALSE;
+ kal_mem_cpy(&(tlvota_file->last_file), &(tlvota_file->temp_file), sizeof(mcf_file_info_t));
+
+ ret = mcf_ut_check_file_path(req, KAL_TRUE, KAL_TRUE, KAL_TRUE);
+ if (ret != KAL_TRUE) {
+ 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");
+ return KAL_FALSE;
+ }
+ free_local_para((local_para_struct *)req);
+ }
+
+ /*
+ * Set TLV-OTA path in default path positive test - file is not changed
+ */
+ for(i = 0; i < MAX_SIM_NUM; i++) {
+ tlvota_file = &(pMcf->tlvota_file[i]);
+ MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ if (tlvota_file) {
+ pFile = (mcf_tool_file_info_t *)(tlvota_file->buff);
+ pFile->file_version = 2;
+ MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Set TLV-OTA path fail! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+
+ req = (l4c_mcf_set_config_req_struct *)construct_local_para(sizeof(l4c_mcf_set_config_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_SET_FILE_PATH_IN_MCF_DSBP_ACTIVE_MODE;
+ req->config_type = L4C_MCF_CONFIG_TYPE_CARRIER_BIN;
+ req->path_type = L4C_MCF_PATH_TYPE_OTA;
+ strcpy(req->config1, MCF_FS_DEFAULT_TLVOTA_FILE_NAME);
+ req->ps_id = i;
+ sim_id = l4c_gemini_get_actual_sim_id(req->ps_id);
+
+ // First send file path
+ mcf_ret = mcf_set_file_path(req);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Set TLV-OTA file path in default path positive test FAIL\r\n");
+ return KAL_FALSE;
+ }
+
+ /* Assume DSBP success */
+ pMcf->is_dsbp_ongoing[sim_id] = KAL_FALSE;
+ kal_mem_cpy(&(tlvota_file->last_file), &(tlvota_file->temp_file), sizeof(mcf_file_info_t));
+
+ ret = mcf_ut_check_file_path(req, KAL_TRUE, KAL_FALSE, KAL_TRUE);
+ if (ret != KAL_TRUE) {
+ mcf_ut_format_err_str("Check set TLV-OTA file path in default path positive test FAIL\r\n");
+ return KAL_FALSE;
+ }
+
+ // Send same file path
+ mcf_ret = mcf_set_file_path(req);
+ if (mcf_ret != MCF_OTA_R_FILE_NOT_CHANGE) {
+ mcf_ut_format_err_str("Set TLV-OTA file path in default path positive test FAIL\r\n");
+ return KAL_FALSE;
+ }
+
+ /* Assume DSBP success */
+ pMcf->is_dsbp_ongoing[sim_id] = KAL_FALSE;
+ kal_mem_cpy(&(tlvota_file->last_file), &(tlvota_file->temp_file), sizeof(mcf_file_info_t));
+
+ ret = mcf_ut_check_file_path(req, KAL_TRUE, KAL_FALSE, KAL_TRUE);
+ if (ret != KAL_TRUE) {
+ mcf_ut_format_err_str("Check set TLV-OTA file path in default path positive test FAIL\r\n");
+ return KAL_FALSE;
+ }
+ free_local_para((local_para_struct *)req);
+ }
+
+ /*
+ * Set TLV-OTA path in runtime path positive test - file is not changed
+ */
+ for(i = 0; i < MAX_SIM_NUM; i++) {
+ tlvota_file = &(pMcf->tlvota_file[i]);
+ MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ if (tlvota_file) {
+ pFile = (mcf_tool_file_info_t *)(tlvota_file->buff);
+ pFile->file_version = 2;
+ MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Set TLV-OTA path fail! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+
+ req = (l4c_mcf_set_config_req_struct *)construct_local_para(sizeof(l4c_mcf_set_config_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_SET_FILE_PATH_IN_MCF_DSBP_ACTIVE_MODE;
+ req->config_type = L4C_MCF_CONFIG_TYPE_CARRIER_BIN;
+ req->path_type = L4C_MCF_PATH_TYPE_RUNTIME;
+ strcpy(req->config1, MCF_FS_DEFAULT_TLVOTA_FILE_NAME);
+ req->ps_id = i;
+ sim_id = l4c_gemini_get_actual_sim_id(req->ps_id);
+
+ // First send file path
+ mcf_ret = mcf_set_file_path(req);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Set TLV-OTA file path in default path positive test FAIL\r\n");
+ return KAL_FALSE;
+ }
+
+ /* Assume DSBP success */
+ pMcf->is_dsbp_ongoing[sim_id] = KAL_FALSE;
+ kal_mem_cpy(&(tlvota_file->last_file), &(tlvota_file->temp_file), sizeof(mcf_file_info_t));
+
+ ret = mcf_ut_check_file_path(req, KAL_TRUE, KAL_FALSE, KAL_TRUE);
+ if (ret != KAL_TRUE) {
+ mcf_ut_format_err_str("Check set TLV-OTA file path in default path positive test FAIL\r\n");
+ return KAL_FALSE;
+ }
+
+ // Send same file path
+ mcf_ret = mcf_set_file_path(req);
+ if (mcf_ret != MCF_OTA_R_FILE_NOT_CHANGE) {
+ mcf_ut_format_err_str("Set TLV-OTA file path in default path positive test FAIL\r\n");
+ return KAL_FALSE;
+ }
+
+ /* Assume DSBP success */
+ pMcf->is_dsbp_ongoing[sim_id] = KAL_FALSE;
+ kal_mem_cpy(&(tlvota_file->last_file), &(tlvota_file->temp_file), sizeof(mcf_file_info_t));
+
+ ret = mcf_ut_check_file_path(req, KAL_TRUE, KAL_FALSE, KAL_TRUE);
+ if (ret != KAL_TRUE) {
+ mcf_ut_format_err_str("Check set TLV-OTA file path in default path positive test FAIL\r\n");
+ return KAL_FALSE;
+ }
+ free_local_para((local_para_struct *)req);
+ }
+
+ /*
+ * Set TLV-OTA path in default path positive test - set file path after deactivated
+ */
+ for(i = 0; i < MAX_SIM_NUM; i++) {
+ tlvota_file = &(pMcf->tlvota_file[i]);
+ MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ if (tlvota_file) {
+ pFile = (mcf_tool_file_info_t *)(tlvota_file->buff);
+ pFile->file_version = 2;
+ MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Set TLV-OTA path fail! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+
+ req = (l4c_mcf_set_config_req_struct *)construct_local_para(sizeof(l4c_mcf_set_config_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_SET_FILE_PATH_IN_MCF_DSBP_ACTIVE_MODE;
+ req->config_type = L4C_MCF_CONFIG_TYPE_CARRIER_BIN;
+ req->path_type = L4C_MCF_PATH_TYPE_OTA;
+ strcpy(req->config1, "");
+ req->ps_id = i;
+ sim_id = l4c_gemini_get_actual_sim_id(req->ps_id);
+
+ // First send file path
+ mcf_ret = mcf_set_file_path(req);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Set TLV-OTA file path in default path positive test FAIL\r\n");
+ return KAL_FALSE;
+ }
+
+ /* Assume DSBP success */
+ pMcf->is_dsbp_ongoing[sim_id] = KAL_FALSE;
+ kal_mem_cpy(&(tlvota_file->last_file), &(tlvota_file->temp_file), sizeof(mcf_file_info_t));
+
+ ret = mcf_ut_check_file_path(req, KAL_TRUE, KAL_TRUE, KAL_TRUE);
+ if (ret != KAL_TRUE) {
+ mcf_ut_format_err_str("Check set TLV-OTA file path in default path positive test FAIL\r\n");
+ return KAL_FALSE;
+ }
+
+ // Send same file path
+ MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ if (tlvota_file) {
+ pFile->file_version = 2;
+ MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Set TLV-OTA path fail! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+ strcpy(req->config1, MCF_FS_DEFAULT_TLVOTA_FILE_NAME);
+
+ mcf_ret = mcf_set_file_path(req);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Set TLV-OTA file path in default path positive test FAIL\r\n");
+ return KAL_FALSE;
+ }
+
+ /* Assume DSBP success */
+ pMcf->is_dsbp_ongoing[sim_id] = KAL_FALSE;
+ kal_mem_cpy(&(tlvota_file->last_file), &(tlvota_file->temp_file), sizeof(mcf_file_info_t));
+
+ ret = mcf_ut_check_file_path(req, KAL_TRUE, KAL_FALSE, KAL_TRUE);
+ if (ret != KAL_TRUE) {
+ mcf_ut_format_err_str("Check set TLV-OTA file path in default path positive test FAIL\r\n");
+ return KAL_FALSE;
+ }
+ free_local_para((local_para_struct *)req);
+ }
+
+ /*
+ * Set TLV-OTA path in runtime path positive test - set file path after deactivated
+ */
+ for(i = 0; i < MAX_SIM_NUM; i++) {
+ tlvota_file = &(pMcf->tlvota_file[i]);
+ MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ if (tlvota_file) {
+ pFile = (mcf_tool_file_info_t *)(tlvota_file->buff);
+ pFile->file_version = 2;
+ MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Set TLV-OTA path fail! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+
+ req = (l4c_mcf_set_config_req_struct *)construct_local_para(sizeof(l4c_mcf_set_config_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_SET_FILE_PATH_IN_MCF_DSBP_ACTIVE_MODE;
+ req->config_type = L4C_MCF_CONFIG_TYPE_CARRIER_BIN;
+ req->path_type = L4C_MCF_PATH_TYPE_RUNTIME;
+ strcpy(req->config1, "");
+ req->ps_id = i;
+ sim_id = l4c_gemini_get_actual_sim_id(req->ps_id);
+
+ // First send file path
+ mcf_ret = mcf_set_file_path(req);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Set TLV-OTA file path in default path positive test FAIL\r\n");
+ return KAL_FALSE;
+ }
+
+ /* Assume DSBP success */
+ pMcf->is_dsbp_ongoing[sim_id] = KAL_FALSE;
+ kal_mem_cpy(&(tlvota_file->last_file), &(tlvota_file->temp_file), sizeof(mcf_file_info_t));
+
+ ret = mcf_ut_check_file_path(req, KAL_TRUE, KAL_TRUE, KAL_TRUE);
+ if (ret != KAL_TRUE) {
+ mcf_ut_format_err_str("Check set TLV-OTA file path in default path positive test FAIL\r\n");
+ return KAL_FALSE;
+ }
+
+ // Send same file path
+ MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ if (tlvota_file) {
+ pFile->file_version = 2;
+ MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Set TLV-OTA path fail! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+ strcpy(req->config1, MCF_FS_DEFAULT_TLVOTA_FILE_NAME);
+
+ mcf_ret = mcf_set_file_path(req);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Set TLV-OTA file path in default path positive test FAIL\r\n");
+ return KAL_FALSE;
+ }
+
+ /* Assume DSBP success */
+ pMcf->is_dsbp_ongoing[sim_id] = KAL_FALSE;
+ kal_mem_cpy(&(tlvota_file->last_file), &(tlvota_file->temp_file), sizeof(mcf_file_info_t));
+
+ ret = mcf_ut_check_file_path(req, KAL_TRUE, KAL_FALSE, KAL_TRUE);
+ if (ret != KAL_TRUE) {
+ mcf_ut_format_err_str("Check set TLV-OTA file path in default path positive test FAIL\r\n");
+ return KAL_FALSE;
+ }
+ free_local_para((local_para_struct *)req);
+ }
+
+ /*
+ * Set OTA path in default path negative test - invalid config type
+ */
+ req = (l4c_mcf_set_config_req_struct *)construct_local_para(sizeof(l4c_mcf_set_config_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_SET_FILE_PATH_IN_MCF_DSBP_ACTIVE_MODE;
+ req->config_type = L4C_MCF_CONFIG_TYPE_MAX;
+ req->path_type = L4C_MCF_PATH_TYPE_OTA;
+ strcpy(req->config1, MCF_FS_DEFAULT_OTA_FILE_NAME);
+
+ mcf_ret = mcf_set_file_path(req);
+ if (mcf_ret != MCF_OTA_R_INVALID_PARAMETER) {
+ mcf_ut_format_err_str("Check set OTA path in default path negative test (invalid config type) FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+ free_local_para((local_para_struct *)req);
+
+ /*
+ * Set OTA path negative test - invalid path type
+ */
+ req = (l4c_mcf_set_config_req_struct *)construct_local_para(sizeof(l4c_mcf_set_config_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_SET_FILE_PATH_IN_MCF_DSBP_ACTIVE_MODE;
+ req->config_type = L4C_MCF_CONFIG_TYPE_DEFAULT_BIN;
+ req->path_type = L4C_MCF_PATH_TYPE_MAX;
+ strcpy(req->config1, MCF_FS_DEFAULT_OTA_FILE_NAME);
+
+ mcf_ret = mcf_set_file_path(req);
+ if (mcf_ret != MCF_OTA_R_INVALID_PARAMETER) {
+ mcf_ut_format_err_str("Check set OTA path negative test (invalid path type) FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+ free_local_para((local_para_struct *)req);
+
+ /*
+ * Set TLV-OTA path negative test - invalid path type
+ */
+ for(i = 0; i < MAX_SIM_NUM; i++) {
+ req = (l4c_mcf_set_config_req_struct *)construct_local_para(sizeof(l4c_mcf_set_config_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_SET_FILE_PATH_IN_MCF_DSBP_ACTIVE_MODE;
+ req->config_type = L4C_MCF_CONFIG_TYPE_CARRIER_BIN;
+ req->path_type = L4C_MCF_PATH_TYPE_MAX;
+ strcpy(req->config1, MCF_FS_DEFAULT_TLVOTA_FILE_NAME);
+ req->ps_id = i;
+
+ mcf_ret = mcf_set_file_path(req);
+ if (mcf_ret != MCF_OTA_R_INVALID_PARAMETER) {
+ 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");
+ return KAL_FALSE;
+ }
+ free_local_para((local_para_struct *)req);
+ }
+
+
+ MCF_UT_PASS();
+ return KAL_TRUE;
+}
+
+kal_bool mcf_ut_mcf_get_applied_file_path(void *p_param, kal_char *p_ret_err_str, kal_uint32 *p_ret_err_str_sz)
+{
+ mcf_t *pMcf = mcf_get_instance();
+ l4c_mcf_get_config_req_struct *req;
+ l4c_mcf_get_config_cnf_struct *resp;
+ sim_interface_enum sim_id;
+ kal_uint8 i;
+ mcf_ota_result_e mcf_ret;
+
+ mcf_ut_init();
+
+ pMcf->ota_file.path_type = L4C_MCF_PATH_TYPE_OTA;
+ strcpy(pMcf->ota_file.relative_path_name, MCF_FS_DEFAULT_OTA_FILE_NAME);
+ for(i = 0; i < MAX_SIM_NUM; i++) {
+ pMcf->tlvota_file[i].path_type = L4C_MCF_PATH_TYPE_OTA;
+ strcpy(pMcf->tlvota_file[i].relative_path_name, MCF_FS_DEFAULT_TLVOTA_FILE_NAME);
+ }
+
+ /*
+ * Get applied OTA file path positive test
+ */
+ req = (l4c_mcf_get_config_req_struct *)construct_local_para(sizeof(l4c_mcf_get_config_req_struct), TD_RESET);
+ resp = (l4c_mcf_get_config_cnf_struct *)construct_local_para(sizeof(l4c_mcf_get_config_cnf_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_GET_APPLIED_FILE_PATH;
+ req->config_type = L4C_MCF_CONFIG_TYPE_DEFAULT_BIN;
+
+ mcf_ret = mcf_get_applied_file_path(req, resp);
+ if ( (mcf_ret != MCF_OTA_R_SUCCESS) || (resp->config_type != req->config_type)
+ || (resp->path_type != pMcf->ota_file.path_type)
+ || (strcmp(resp->config1, pMcf->ota_file.relative_path_name) != 0) ) {
+ mcf_ut_format_err_str("Get applied OTA file path positive test FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)resp);
+
+ /*
+ * Get applied TLV-OTA file path positive test
+ */
+ for(i = 0; i < MAX_SIM_NUM; i++) {
+ req = (l4c_mcf_get_config_req_struct *)construct_local_para(sizeof(l4c_mcf_get_config_req_struct), TD_RESET);
+ resp = (l4c_mcf_get_config_cnf_struct *)construct_local_para(sizeof(l4c_mcf_get_config_cnf_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_GET_APPLIED_FILE_PATH;
+ req->config_type = L4C_MCF_CONFIG_TYPE_CARRIER_BIN;
+ req->ps_id = i;
+ sim_id = l4c_gemini_get_actual_sim_id(req->ps_id);
+
+ mcf_ret = mcf_get_applied_file_path(req, resp);
+ if ( (mcf_ret != MCF_OTA_R_SUCCESS) || (resp->config_type != req->config_type)
+ || (resp->path_type != pMcf->tlvota_file[sim_id].path_type)
+ || (strcmp(resp->config1, pMcf->tlvota_file[sim_id].relative_path_name) != 0) ) {
+ mcf_ut_format_err_str("Get applied TLV-OTA file path positive test FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)resp);
+ }
+
+ /*
+ * Get applied file path negative test - invalid config type
+ */
+ req = (l4c_mcf_get_config_req_struct *)construct_local_para(sizeof(l4c_mcf_get_config_req_struct), TD_RESET);
+ resp = (l4c_mcf_get_config_cnf_struct *)construct_local_para(sizeof(l4c_mcf_get_config_cnf_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_GET_APPLIED_FILE_PATH;
+ req->config_type = L4C_MCF_CONFIG_TYPE_MAX;
+
+ mcf_ret = mcf_get_applied_file_path(req, resp);
+ if (mcf_ret != MCF_OTA_R_INVALID_PARAMETER) {
+ mcf_ut_format_err_str("Get applied OTA file path negative test (invalid config type) FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)resp);
+
+
+ MCF_UT_PASS();
+ return KAL_TRUE;
+}
+
+#if !defined(__MTK_TARGET__)
+kal_bool mcf_ut_do_ota_full(void *p_param, kal_char *p_ret_err_str, kal_uint32 *p_ret_err_str_sz)
+{
+ mcf_t *pMcf = mcf_get_instance();
+ mcf_ota_file_t *ota_file = &(pMcf->ota_file);
+ mcf_tool_file_info_t *pFile = (mcf_tool_file_info_t *)(ota_file->buff);
+ nvram_ef_mcf_ota_file_info_struct nv_ota_file;
+ nvram_ef_mcf_sw_info_struct nv_sw_info;
+ kal_uint8 *lid_buffer;
+ nvram_ef_mcf_test_struct empty_buffer = {0};
+ mcf_ota_result_e mcf_ret;
+ kal_bool ret;
+ kal_uint32 i;
+
+ mcf_ut_init();
+
+ /* Write MCF OTA file version to NVRAM */
+ kal_mem_set(&nv_ota_file, 0, sizeof(nvram_ef_mcf_ota_file_info_struct));
+ strncpy(nv_ota_file.path, MCF_FS_DEFAULT_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN);
+ strncpy(nv_ota_file.name, MCF_FS_DEFAULT_OTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN);
+ 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)) ) {
+ mcf_ut_format_err_str("Fail to write MCF OTA file info to NVRAM!!\r\n");
+ return KAL_FALSE;
+ }
+ kal_mem_set(&nv_sw_info, 0, sizeof(nvram_ef_mcf_sw_info_struct));
+ strncpy(nv_sw_info.last_update_file.sw_version, MCF_UT_SW_VERNO, MCF_FILE_MAX_SW_VERSION_LEN);
+ strncpy(nv_sw_info.last_update_file.gen_time, MCF_UT_GEN_TIME, MCF_FILE_MAX_GEN_TIME_LEN);
+ strcpy(nv_sw_info.last_update_file.path, "");
+ strcpy(nv_sw_info.last_update_file.name, "");
+ if ( !nvram_external_write_data(NVRAM_EF_MCF_SW_INFO_LID, 1, (kal_uint8 *)&nv_sw_info, sizeof(nvram_ef_mcf_sw_info_struct)) ) {
+ mcf_ut_format_err_str("Fail to write MCF sw info to NVRAM!!\r\n");
+ return KAL_FALSE;
+ }
+
+ /*
+ * Do full OTA positive test - Both SW verno of file and MD mismatch
+ */
+ MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ if (ota_file) {
+ ret = mcf_ut_open_test_data("MCF_OTA_ut_normal.mcfota", (kal_char *)(ota_file->buff), MCF_MAX_OTA_FILE_SIZE);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_OTA_ut_normal.mcfota");
+ return KAL_FALSE;
+ }
+
+ MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Do full OTA FAIL!! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+
+ mcf_ret = mcf_do_ota_full();
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Do full OTA FAIL!! ret(%d) \r\n", mcf_ret);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_test_lid_value(NULL);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Do full OTA positive test (Both SW verno of file and MD mismatch) FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+
+ /*
+ * Do full OTA positive test - SW verno of file mismatch
+ */
+ lid_buffer = (kal_uint8 *)get_ctrl_buffer(sizeof(nvram_ef_mcf_test_struct));
+ kal_mem_set(lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
+ for(i = 0; i < NVRAM_EF_MCF_TEST_OTA_TOTAL; i++) {
+ if ( !nvram_external_write_data(NVRAM_EF_MCF_TEST_OTA_LID, 1, lid_buffer, sizeof(nvram_ef_mcf_test_struct)) ) {
+ printf("Fail to reset NVRAM_EF_MCF_TEST_OTA_LID!!\r\n");
+ }
+ }
+ free_ctrl_buffer_set_null(lid_buffer);
+
+ /* Reset updated file information in NVRAM */
+ lid_buffer = (kal_uint8 *)get_ctrl_buffer(sizeof(nvram_ef_mcf_ota_file_info_struct));
+ kal_mem_set(lid_buffer, 0, sizeof(nvram_ef_mcf_ota_file_info_struct));
+ for(i = 0; i < NVRAM_EF_MCF_OTA_FILE_TOTAL; i++) {
+ if ( !nvram_external_write_data(NVRAM_EF_MCF_OTA_FILE_LID, 1, lid_buffer, sizeof(nvram_ef_mcf_ota_file_info_struct)) ) {
+ printf("Fail to reset NVRAM_EF_MCF_OTA_FILE_LID!!\r\n");
+ }
+ }
+ free_ctrl_buffer_set_null(lid_buffer);
+
+ mcf_ret = mcf_do_ota_full();
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Do full OTA FAIL!! ret(%d) \r\n", mcf_ret);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_test_lid_value(NULL);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Do full OTA positive test (SW verno of file mismatch) FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+
+ /*
+ * Do full OTA positive test - SW verno of MD mismatch
+ */
+ lid_buffer = (kal_uint8 *)get_ctrl_buffer(sizeof(nvram_ef_mcf_test_struct));
+ kal_mem_set(lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
+ for(i = 0; i < NVRAM_EF_MCF_TEST_OTA_TOTAL; i++) {
+ if ( !nvram_external_write_data(NVRAM_EF_MCF_TEST_OTA_LID, 1, lid_buffer, sizeof(nvram_ef_mcf_test_struct)) ) {
+ printf("Fail to reset NVRAM_EF_MCF_TEST_OTA_LID!!\r\n");
+ }
+ }
+ free_ctrl_buffer_set_null(lid_buffer);
+
+ /* Reset updated MD SW version in NVRAM */
+ lid_buffer = (kal_uint8 *)get_ctrl_buffer(sizeof(nvram_ef_mcf_sw_info_struct));
+ kal_mem_set(lid_buffer, 0, sizeof(nvram_ef_mcf_sw_info_struct));
+ for(i = 0; i < NVRAM_EF_MCF_OTA_FILE_TOTAL; i++) {
+ if ( !nvram_external_write_data(NVRAM_EF_MCF_SW_INFO_LID, 1, lid_buffer, sizeof(nvram_ef_mcf_sw_info_struct)) ) {
+ printf("Fail to reset NVRAM_EF_MCF_SW_INFO_LID!!\r\n");
+ }
+ }
+ free_ctrl_buffer_set_null(lid_buffer);
+
+ mcf_ret = mcf_do_ota_full();
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Do full OTA FAIL!! ret(%d) \r\n", mcf_ret);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_test_lid_value(NULL);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Do full OTA positive test (SW verno of MD mismatch) FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+
+ /*
+ * Do full OTA positive test - SW verno match
+ */
+ lid_buffer = (kal_uint8 *)get_ctrl_buffer(sizeof(nvram_ef_mcf_test_struct));
+ kal_mem_set(lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
+ for(i = 0; i < NVRAM_EF_MCF_TEST_OTA_TOTAL; i++) {
+ if ( !nvram_external_write_data(NVRAM_EF_MCF_TEST_OTA_LID, 1, lid_buffer, sizeof(nvram_ef_mcf_test_struct)) ) {
+ printf("Fail to reset NVRAM_EF_MCF_TEST_OTA_LID!!\r\n");
+ }
+ }
+ free_ctrl_buffer_set_null(lid_buffer);
+
+ mcf_ret = mcf_do_ota_full();
+ if ( (mcf_ret != MCF_OTA_R_SUCCESS) || ((com_Mcf.boot_trace_flag & MCF_BOOT_TRACE_F_NO_NEED) == 0) ) {
+ mcf_ut_format_err_str("Do full OTA FAIL!! ret(%d) \r\n", mcf_ret);
+ return KAL_FALSE;
+ }
+
+ lid_buffer = (kal_uint8 *)get_ctrl_buffer(sizeof(nvram_ef_mcf_test_struct));
+ if ( !nvram_external_read_data(NVRAM_EF_MCF_TEST_OTA_LID, 1, lid_buffer, sizeof(nvram_ef_mcf_test_struct)) ) {
+ printf("Fail to read NVRAM_EF_MCF_TEST_OTA_LID!!\r\n");
+ ret = KAL_FALSE;
+ }
+
+ if (kal_mem_cmp(lid_buffer, &empty_buffer, sizeof(nvram_ef_mcf_test_struct)) != 0) {
+ mcf_ut_format_err_str("Do full OTA positive test (SW verno match) FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+ free_ctrl_buffer_set_null(lid_buffer);
+
+ /*
+ * Do full OTA negative test - invlaid file type
+ */
+ lid_buffer = (kal_uint8 *)get_ctrl_buffer(sizeof(nvram_ef_mcf_test_struct));
+ kal_mem_set(lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
+ for(i = 0; i < NVRAM_EF_MCF_TEST_OTA_TOTAL; i++) {
+ if ( !nvram_external_write_data(NVRAM_EF_MCF_TEST_OTA_LID, 1, lid_buffer, sizeof(nvram_ef_mcf_test_struct)) ) {
+ printf("Fail to reset NVRAM_EF_MCF_TEST_OTA_LID!!\r\n");
+ }
+ }
+ free_ctrl_buffer_set_null(lid_buffer);
+
+ MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ if (ota_file) {
+ strncpy(pFile->file_type, "MCF", 8);
+ MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Do full OTA FAIL!! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+
+ mcf_ret = mcf_do_ota_full();
+ if ( (mcf_ret != MCF_OTA_R_INVALID_FILE) || ((com_Mcf.boot_trace_flag & MCF_BOOT_TRACE_F_INVALID_FILE) == 0) ) {
+ 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);
+ return KAL_FALSE;
+ }
+
+ lid_buffer = (kal_uint8 *)get_ctrl_buffer(sizeof(nvram_ef_mcf_test_struct));
+ if ( !nvram_external_read_data(NVRAM_EF_MCF_TEST_OTA_LID, 1, lid_buffer, sizeof(nvram_ef_mcf_test_struct)) ) {
+ printf("Fail to read NVRAM_EF_MCF_TEST_OTA_LID!!\r\n");
+ ret = KAL_FALSE;
+ }
+
+ if (kal_mem_cmp(lid_buffer, &empty_buffer, sizeof(nvram_ef_mcf_test_struct)) != 0) {
+ mcf_ut_format_err_str("Do full OTA positive test (SW verno match) FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+ free_ctrl_buffer_set_null(lid_buffer);
+
+ /*
+ * Do full OTA positive test - item with mismatched verno in file
+ */
+ lid_buffer = (kal_uint8 *)get_ctrl_buffer(sizeof(nvram_ef_mcf_test_struct));
+ kal_mem_set(lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
+ for(i = 0; i < NVRAM_EF_MCF_TEST_OTA_TOTAL; i++) {
+ if ( !nvram_external_write_data(NVRAM_EF_MCF_TEST_OTA_LID, 1, lid_buffer, sizeof(nvram_ef_mcf_test_struct)) ) {
+ printf("Fail to reset NVRAM_EF_MCF_TEST_OTA_LID!!\r\n");
+ }
+ }
+ free_ctrl_buffer_set_null(lid_buffer);
+
+ lid_buffer = (kal_uint8 *)get_ctrl_buffer(sizeof(nvram_ef_mcf_sw_info_struct));
+ kal_mem_set(lid_buffer, 0, sizeof(nvram_ef_mcf_sw_info_struct));
+ if ( !nvram_external_write_data(NVRAM_EF_MCF_SW_INFO_LID, 1, lid_buffer, sizeof(nvram_ef_mcf_sw_info_struct)) ) {
+ printf("Fail to reset NVRAM_EF_MCF_SW_INFO_LID!!\r\n");
+ }
+ free_ctrl_buffer_set_null(lid_buffer);
+
+ lid_buffer = (kal_uint8 *)get_ctrl_buffer(sizeof(nvram_ef_mcf_ota_file_info_struct));
+ kal_mem_set(lid_buffer, 0, sizeof(nvram_ef_mcf_ota_file_info_struct));
+ for(i = 0; i < NVRAM_EF_MCF_OTA_FILE_TOTAL; i++) {
+ if ( !nvram_external_write_data(NVRAM_EF_MCF_OTA_FILE_LID, 1, lid_buffer, sizeof(nvram_ef_mcf_ota_file_info_struct)) ) {
+ printf("Fail to reset NVRAM_EF_MCF_OTA_FILE_LID!!\r\n");
+ }
+ }
+ free_ctrl_buffer_set_null(lid_buffer);
+
+ MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ if (ota_file) {
+ ret = mcf_ut_open_test_data("MCF_OTA_ut_mismatched_verno.mcfota", (kal_char *)(ota_file->buff), MCF_MAX_OTA_FILE_SIZE);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_OTA_ut_mismatched_verno.mcfota");
+ return KAL_FALSE;
+ }
+
+ MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Do full OTA FAIL!! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+
+ mcf_ret = mcf_do_ota_full();
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Do full OTA FAIL!! ret(%d) \r\n", mcf_ret);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_test_lid_value(NULL);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Do full OTA positive test (item with mismatched verno in file) FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+
+ /*
+ * Do full OTA positive test - File with checksum
+ */
+ lid_buffer = (kal_uint8 *)get_ctrl_buffer(sizeof(nvram_ef_mcf_sw_info_struct));
+ kal_mem_set(lid_buffer, 0, sizeof(nvram_ef_mcf_sw_info_struct));
+ if ( !nvram_external_write_data(NVRAM_EF_MCF_SW_INFO_LID, 1, lid_buffer, sizeof(nvram_ef_mcf_sw_info_struct)) ) {
+ printf("Fail to reset NVRAM_EF_MCF_SW_INFO_LID!!\r\n");
+ }
+ free_ctrl_buffer_set_null(lid_buffer);
+
+ lid_buffer = (kal_uint8 *)get_ctrl_buffer(sizeof(nvram_ef_mcf_ota_file_info_struct));
+ kal_mem_set(lid_buffer, 0, sizeof(nvram_ef_mcf_ota_file_info_struct));
+ for(i = 0; i < NVRAM_EF_MCF_OTA_FILE_TOTAL; i++) {
+ if ( !nvram_external_write_data(NVRAM_EF_MCF_OTA_FILE_LID, 1, lid_buffer, sizeof(nvram_ef_mcf_ota_file_info_struct)) ) {
+ printf("Fail to reset NVRAM_EF_MCF_OTA_FILE_LID!!\r\n");
+ }
+ }
+ free_ctrl_buffer_set_null(lid_buffer);
+
+ MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ if (ota_file) {
+ ret = mcf_ut_open_test_data("MCF_OTA_ut_checksum_normal.mcfota", (kal_char *)(ota_file->buff), MCF_MAX_OTA_FILE_SIZE);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_OTA_ut_checksum_normal.mcfota");
+ return KAL_FALSE;
+ }
+
+ MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Do full OTA FAIL!! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+
+ mcf_ret = mcf_do_ota_full();
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Do full OTA FAIL!! ret(%d) \r\n", mcf_ret);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_test_lid_value(NULL);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Do full OTA positive test (File with checksum) FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+
+ /*
+ * Do full OTA positive test - File with checksum and encryption
+ */
+ lid_buffer = (kal_uint8 *)get_ctrl_buffer(sizeof(nvram_ef_mcf_sw_info_struct));
+ kal_mem_set(lid_buffer, 0, sizeof(nvram_ef_mcf_sw_info_struct));
+ if ( !nvram_external_write_data(NVRAM_EF_MCF_SW_INFO_LID, 1, lid_buffer, sizeof(nvram_ef_mcf_sw_info_struct)) ) {
+ printf("Fail to reset NVRAM_EF_MCF_SW_INFO_LID!!\r\n");
+ }
+ free_ctrl_buffer_set_null(lid_buffer);
+
+ lid_buffer = (kal_uint8 *)get_ctrl_buffer(sizeof(nvram_ef_mcf_ota_file_info_struct));
+ kal_mem_set(lid_buffer, 0, sizeof(nvram_ef_mcf_ota_file_info_struct));
+ for(i = 0; i < NVRAM_EF_MCF_OTA_FILE_TOTAL; i++) {
+ if ( !nvram_external_write_data(NVRAM_EF_MCF_OTA_FILE_LID, 1, lid_buffer, sizeof(nvram_ef_mcf_ota_file_info_struct)) ) {
+ printf("Fail to reset NVRAM_EF_MCF_OTA_FILE_LID!!\r\n");
+ }
+ }
+ free_ctrl_buffer_set_null(lid_buffer);
+
+ MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ if (ota_file) {
+ ret = mcf_ut_open_test_data("MCF_OTA_ut_checksum_and_encryption_normal.mcfota", (kal_char *)(ota_file->buff), MCF_MAX_OTA_FILE_SIZE);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_OTA_ut_checksum_and_encryption_normal.mcfota");
+ return KAL_FALSE;
+ }
+
+ MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Do full OTA FAIL!! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+
+ mcf_ret = mcf_do_ota_full();
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Do full OTA FAIL!! ret(%d) \r\n", mcf_ret);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_test_lid_value(NULL);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Do full OTA positive test (File with checksum) FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+
+
+ MCF_UT_PASS();
+ return KAL_TRUE;
+}
+#endif
+
+#if !defined(__MTK_TARGET__)
+kal_bool mcf_ut_do_ota_by_lid(void *p_param, kal_char *p_ret_err_str, kal_uint32 *p_ret_err_str_sz)
+{
+ mcf_t *pMcf = mcf_get_instance();
+ mcf_tool_file_info_t *pFile;
+ mcf_tool_ota_file_item_t *pItem;
+ mcf_ota_file_t *ota_file = &(pMcf->ota_file);
+ kal_uint8 *lid_buffer;
+ kal_uint32 i;
+ nvram_ef_mcf_ota_file_info_struct nv_ota_file;
+ nvram_ef_mcf_sw_info_struct nv_sw_info;
+ nvram_ltable_entry_struct lid_info;
+ nvram_errno_enum nvram_api_ret;
+ mcf_ota_result_e mcf_ret;
+ kal_bool ret;
+
+ mcf_ut_init();
+
+ /* Write MCF OTA file version to NVRAM */
+ kal_mem_set(&nv_ota_file, 0, sizeof(nvram_ef_mcf_ota_file_info_struct));
+ strncpy(nv_ota_file.path, MCF_FS_DEFAULT_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN);
+ strncpy(nv_ota_file.name, MCF_FS_DEFAULT_OTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN);
+ 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)) ) {
+ mcf_ut_format_err_str("Fail to write MCF OTA file info to NVRAM!!\r\n");
+ return KAL_FALSE;
+ }
+ kal_mem_set(&nv_sw_info, 0, sizeof(nvram_ef_mcf_sw_info_struct));
+ strncpy(nv_sw_info.last_update_file.sw_version, MCF_UT_SW_VERNO, MCF_FILE_MAX_SW_VERSION_LEN);
+ strncpy(nv_sw_info.last_update_file.gen_time, MCF_UT_GEN_TIME, MCF_FILE_MAX_GEN_TIME_LEN);
+ strcpy(nv_sw_info.last_update_file.path, "");
+ strcpy(nv_sw_info.last_update_file.name, "");
+ if ( !nvram_external_write_data(NVRAM_EF_MCF_SW_INFO_LID, 1, (kal_uint8 *)&nv_sw_info, sizeof(nvram_ef_mcf_sw_info_struct)) ) {
+ mcf_ut_format_err_str("Fail to write MCF sw info to NVRAM!!\r\n");
+ return KAL_FALSE;
+ }
+
+ pFile = (mcf_tool_file_info_t *)(ota_file->buff);
+ pItem = (mcf_tool_ota_file_item_t *)(ota_file->buff + sizeof(mcf_tool_file_info_t));
+
+ /*
+ * Do OTA by LID positive test
+ */
+ MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ if (ota_file) {
+ ret = mcf_ut_open_test_data("MCF_OTA_ut_normal.mcfota", (kal_char *)(ota_file->buff), MCF_MAX_OTA_FILE_SIZE);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_OTA_ut_normal.mcfota");
+ return KAL_FALSE;
+ }
+
+ MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Do OTA by LID FAIL!! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+
+ nvram_api_ret = nvram_external_get_lid_info(NVRAM_EF_MCF_TEST_OTA_LID, &lid_info);
+ if (nvram_api_ret != NVRAM_ERRNO_SUCCESS) {
+ 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);
+ return KAL_FALSE;
+ }
+
+ mcf_ret = mcf_do_ota_by_lid(NVRAM_EF_MCF_TEST_OTA_LID, 1, NVRAM_EF_MCF_TEST_OTA_TOTAL, &lid_info);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Do OTA by LID FAIL!! ret(%d) \r\n", mcf_ret);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_test_lid_value(NULL);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Do OTA by LID positive test FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+
+ /*
+ * Do OTA by LID negative test - invalid OTA attribute
+ */
+ lid_info.attr &= ~NVRAM_ATTR_MCF_OTA;
+ mcf_ret = mcf_do_ota_by_lid(NVRAM_EF_MCF_TEST_OTA_LID, 1, NVRAM_EF_MCF_TEST_OTA_TOTAL, &lid_info);
+ if (mcf_ret != MCF_OTA_R_INVALID_ATTR) {
+ mcf_ut_format_err_str("OTA by LID: invalid OTA attribute case FAIL!! ret(%d) \r\n", mcf_ret);
+ return KAL_FALSE;
+ }
+
+ /*
+ * Do OTA by LID negative test - invlaid file type
+ */
+ MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ if (ota_file) {
+ strncpy(pFile->file_type, "MCF", 8);
+ MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Do OTA by LID FAIL!! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+
+ mcf_ret = mcf_do_ota_by_lid(NVRAM_EF_MCF_TEST_OTA_LID, 1, NVRAM_EF_MCF_TEST_OTA_TOTAL, &lid_info);
+ if (mcf_ret != MCF_OTA_R_INVALID_FILE) {
+ mcf_ut_format_err_str("OTA by LID: invlaid file type case FAIL!! ret(%d) \r\n", mcf_ret);
+ return KAL_FALSE;
+ }
+
+ /*
+ * Do OTA by LID positive test - item with mismatched verno in file
+ */
+ lid_buffer = (kal_uint8 *)get_ctrl_buffer(sizeof(nvram_ef_mcf_ota_file_info_struct));
+ kal_mem_set(lid_buffer, 0, sizeof(nvram_ef_mcf_ota_file_info_struct));
+ for(i = 0; i < NVRAM_EF_MCF_OTA_FILE_TOTAL; i++) {
+ if ( !nvram_external_write_data(NVRAM_EF_MCF_OTA_FILE_LID, 1, lid_buffer, sizeof(nvram_ef_mcf_ota_file_info_struct)) ) {
+ printf("Fail to reset NVRAM_EF_MCF_OTA_FILE_LID!!\r\n");
+ }
+ }
+ free_ctrl_buffer_set_null(lid_buffer);
+
+ lid_buffer = (kal_uint8 *)get_ctrl_buffer(sizeof(nvram_ef_mcf_test_struct));
+ kal_mem_set(lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
+ for(i = 0; i < NVRAM_EF_MCF_TEST_OTA_TOTAL; i++) {
+ if ( !nvram_external_write_data(NVRAM_EF_MCF_TEST_OTA_LID, 1, lid_buffer, sizeof(nvram_ef_mcf_test_struct)) ) {
+ printf("Fail to reset NVRAM_EF_MCF_TEST_OTA_LID!!\r\n");
+ }
+ }
+ free_ctrl_buffer_set_null(lid_buffer);
+
+ nvram_api_ret = nvram_external_get_lid_info(NVRAM_EF_MCF_TEST_OTA_LID, &lid_info);
+ if (nvram_api_ret != NVRAM_ERRNO_SUCCESS) {
+ mcf_ut_format_err_str("Fail to get LID information!! lid(%d), nvram_ret(%d)", NVRAM_EF_MCF_TEST_OTA_LID, nvram_api_ret);
+ return KAL_FALSE;
+ }
+
+ MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ if (ota_file) {
+ ret = mcf_ut_open_test_data("MCF_OTA_ut_mismatched_verno.mcfota", (kal_char *)(ota_file->buff), MCF_MAX_OTA_FILE_SIZE);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_OTA_ut_mismatched_verno.mcfota");
+ return KAL_FALSE;
+ }
+
+ MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Do OTA by LID FAIL!! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+
+ mcf_ret = mcf_do_ota_by_lid(NVRAM_EF_MCF_TEST_OTA_LID, 1, NVRAM_EF_MCF_TEST_OTA_TOTAL, &lid_info);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Do OTA by LID FAIL!! ret(%d) \r\n", mcf_ret);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_test_lid_value(NULL);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Do OTA by LID positive test (item with mismatched verno in file) FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+
+
+ MCF_UT_PASS();
+ return KAL_TRUE;
+}
+#endif
+
+#if !defined(__MTK_TARGET__)
+kal_bool mcf_ut_read_ota_buffer(void *p_param, kal_char *p_ret_err_str, kal_uint32 *p_ret_err_str_sz)
+{
+ mcf_t *pMcf = mcf_get_instance();
+ mcf_tool_file_info_t *pFile;
+ mcf_tool_ota_file_item_t *pItem;
+ mcf_ota_file_t *ota_file = &(pMcf->ota_file);
+ nvram_ef_mcf_ota_file_info_struct nv_ota_file;
+ nvram_ef_mcf_sw_info_struct nv_sw_info;
+ nvram_ef_mcf_test_struct test_lid_buffer;
+ mcf_ota_result_e mcf_ret;
+ kal_bool ret;
+
+ mcf_ut_init();
+
+ /* Write MCF OTA file version to NVRAM */
+ kal_mem_set(&nv_ota_file, 0, sizeof(nvram_ef_mcf_ota_file_info_struct));
+ strncpy(nv_ota_file.path, MCF_FS_DEFAULT_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN);
+ strncpy(nv_ota_file.name, MCF_FS_DEFAULT_OTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN);
+ 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)) ) {
+ mcf_ut_format_err_str("Fail to write MCF OTA file info to NVRAM!!\r\n");
+ return KAL_FALSE;
+ }
+ kal_mem_set(&nv_sw_info, 0, sizeof(nvram_ef_mcf_sw_info_struct));
+ strncpy(nv_sw_info.last_update_file.sw_version, MCF_UT_SW_VERNO, MCF_FILE_MAX_SW_VERSION_LEN);
+ strncpy(nv_sw_info.last_update_file.gen_time, MCF_UT_GEN_TIME, MCF_FILE_MAX_GEN_TIME_LEN);
+ strcpy(nv_sw_info.last_update_file.path, "");
+ strcpy(nv_sw_info.last_update_file.name, "");
+ if ( !nvram_external_write_data(NVRAM_EF_MCF_SW_INFO_LID, 1, (kal_uint8 *)&nv_sw_info, sizeof(nvram_ef_mcf_sw_info_struct)) ) {
+ mcf_ut_format_err_str("Fail to write MCF sw info to NVRAM!!\r\n");
+ return KAL_FALSE;
+ }
+
+ pFile = (mcf_tool_file_info_t *)(ota_file->buff);
+ pItem = (mcf_tool_ota_file_item_t *)(ota_file->buff + sizeof(mcf_tool_file_info_t));
+
+ /*
+ * Read OTA LID positive test
+ */
+ MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ if (ota_file) {
+ ret = mcf_ut_open_test_data("MCF_OTA_QUERY_ut_normal.mcfota", (kal_char *)(ota_file->buff), MCF_MAX_OTA_FILE_SIZE);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_OTA_QUERY_ut_normal.mcfota");
+ return KAL_FALSE;
+ }
+
+ MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Read OTA by LID FAIL!! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+
+ // Record index 1
+ kal_mem_set(&test_lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
+
+ 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));
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Read OTA by LID FAIL!! ret(%d) \r\n", mcf_ret);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_test_lid_value((kal_uint8 *)&test_lid_buffer);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Read OTA by LID positive test FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+
+ // Record index 2
+ kal_mem_set(&test_lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
+
+ 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));
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Read OTA by LID FAIL!! ret(%d) \r\n", mcf_ret);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_test_lid_value((kal_uint8 *)&test_lid_buffer);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Read OTA by LID positive test FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+
+ /*
+ * Read OTA by LID positive test - item with mismatched verno in file
+ */
+ MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ if (ota_file) {
+ ret = mcf_ut_open_test_data("MCF_OTA_QUERY_ut_mismatched_verno.mcfota", (kal_char *)(ota_file->buff), MCF_MAX_OTA_FILE_SIZE);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_OTA_QUERY_ut_mismatched_verno.mcfota");
+ return KAL_FALSE;
+ }
+
+ MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Read OTA by LID FAIL!! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(&test_lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
+
+ 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));
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Read OTA by LID FAIL!! ret(%d) \r\n", mcf_ret);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_test_lid_value((kal_uint8 *)&test_lid_buffer);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Read OTA by LID positive test (item with mismatched verno in file) FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+
+
+ MCF_UT_PASS();
+ return KAL_TRUE;
+}
+#endif
+
+#if !defined(__MTK_TARGET__)
+kal_bool mcf_ut_read_tlvota_buffer(void *p_param, kal_char *p_ret_err_str, kal_uint32 *p_ret_err_str_sz)
+{
+ mcf_t *pMcf = mcf_get_instance();
+ mcf_tool_file_info_t *pFile;
+ mcf_tool_tlvota_file_item_t *pItem;
+ mcf_tlvota_file_t *tlvota_file;
+ nvram_ef_mcf_tlvota_file_info_struct nv_tlvota_file;
+ nvram_ef_mcf_test_struct test_lid_buffer;
+ nvram_ef_mcf_test_struct empty_buffer = {0};
+ mcf_tlvota_tag_t tlvota_tag;
+ kal_char tag[16];
+ mcf_ota_result_e mcf_ret;
+ kal_bool ret;
+
+ mcf_ut_init();
+
+ /* Write MCF TLV-OTA file version to NVRAM */
+ kal_mem_set(&nv_tlvota_file, 0, sizeof(nvram_ef_mcf_tlvota_file_info_struct));
+ strncpy(nv_tlvota_file.path, MCF_FS_DEFAULT_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN);
+ strncpy(nv_tlvota_file.name, MCF_FS_DEFAULT_TLVOTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN);
+ 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)) ) {
+ mcf_ut_format_err_str("Fail to write MCF TLV-OTA file info to NVRAM!!\r\n");
+ return KAL_FALSE;
+ }
+
+ /*
+ * Read TLV-OTA by LID & tag positive test - fully matched tag
+ */
+ tlvota_file = &(pMcf->general_tlvota_file);
+
+ MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ if (tlvota_file) {
+ pFile = (mcf_tool_file_info_t *)(tlvota_file->buff);
+ pItem = (mcf_tool_tlvota_file_item_t *)(tlvota_file->buff + sizeof(mcf_tool_file_info_t));
+
+ ret = mcf_ut_open_test_data("MCF_TLVOTA_ICCID_ut_normal.mcfopota", (kal_char *)(tlvota_file->buff), MCF_MAX_TLVOTA_FILE_SIZE);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_TLVOTA_ICCID_ut_normal.mcfopota");
+ return KAL_FALSE;
+ }
+
+ MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Read TLV-OTA by LID FAIL!! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+
+ // NVRAM_EF_MCF_TEST_OTA_LID with SBP_PARTIAL_TAG
+ kal_mem_set(&test_lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
+ kal_mem_set(&tlvota_tag, 0, sizeof(mcf_tlvota_tag_t));
+ tlvota_tag.tag_type = MCF_TLVOTA_TAG_ICCID;
+ strcpy(tag, SBP_PARTIAL_TAG);
+ tlvota_tag.tag_len = strlen(tag);
+ tlvota_tag.tag = tag;
+
+ 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));
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Read TLV-OTA by LID & tag FAIL!! ret(%d) \r\n", mcf_ret);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_test_lid_value((kal_uint8 *)&test_lid_buffer);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Read TLV-OTA by LID & tag positive test (fully matched tag) FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+
+ /*
+ * Read TLV-OTA by LID & tag positive test - partially matched tag
+ * NVRAM_EF_MCF_TEST_OTA_LID with tag SBP_PARTIAL_TAG (12_NA_NA), but user searches tag (12_NA_NA_TEST)
+ */
+ kal_mem_set(&test_lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
+ kal_mem_set(&tlvota_tag, 0, sizeof(mcf_tlvota_tag_t));
+ tlvota_tag.tag_type = MCF_TLVOTA_TAG_ICCID;
+ strcpy(tag, "12_NA_NA_TEST");
+ tlvota_tag.tag_len = strlen(tag);
+ tlvota_tag.tag = tag;
+
+ 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));
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Read TLV-OTA by LID & tag FAIL!! ret(%d) \r\n", mcf_ret);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_test_lid_value((kal_uint8 *)&test_lid_buffer);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Read TLV-OTA by LID & tag positive test (partially matched tag) FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+
+ /*
+ * Read TLV-OTA by LID & tag positive test - no matched tag
+ * NVRAM_EF_MCF_TEST_OTA_LID with tag SBP_PARTIAL_TAG (12_NA_NA), but user searches tag (12_NA)
+ */
+ kal_mem_set(&test_lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
+ kal_mem_set(&tlvota_tag, 0, sizeof(mcf_tlvota_tag_t));
+ tlvota_tag.tag_type = MCF_TLVOTA_TAG_ICCID;
+ strcpy(tag, "12_NA");
+ tlvota_tag.tag_len = strlen(tag);
+ tlvota_tag.tag = tag;
+
+ 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));
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Read TLV-OTA by LID & tag FAIL!! ret(%d) \r\n", mcf_ret);
+ return KAL_FALSE;
+ }
+
+ if (kal_mem_cmp(&test_lid_buffer, &empty_buffer, sizeof(nvram_ef_mcf_test_struct)) != 0) {
+ mcf_ut_format_err_str("Read TLV-OTA by LID & tag positive test (no matched tag) FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+
+ /*
+ * Read TLV-OTA by LID & tag positive test - item with mismatched verno in file
+ */
+ kal_mem_set(&test_lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
+ kal_mem_set(&tlvota_tag, 0, sizeof(mcf_tlvota_tag_t));
+ tlvota_tag.tag_type = MCF_TLVOTA_TAG_ICCID;
+ strcpy(tag, SBP_PARTIAL_TAG);
+ tlvota_tag.tag_len = strlen(tag);
+ tlvota_tag.tag = tag;
+
+ tlvota_file = &(pMcf->general_tlvota_file);
+ pItem = (mcf_tool_tlvota_file_item_t *)(tlvota_file->buff + sizeof(mcf_tool_file_info_t));
+
+ MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ if (tlvota_file) {
+ ret = mcf_ut_open_test_data("MCF_TLVOTA_ICCID_ut_normal.mcfopota", (kal_char *)(tlvota_file->buff), MCF_MAX_TLVOTA_FILE_SIZE);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_TLVOTA_ICCID_ut_normal.mcfopota");
+ return KAL_FALSE;
+ }
+
+ MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Read TLV-OTA by LID FAIL!! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+
+ 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));
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ 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);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_test_lid_value((kal_uint8 *)&test_lid_buffer);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Read TLV-OTA by LID & tag positive test (fully matched tag) FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+
+
+ MCF_UT_PASS();
+ return KAL_TRUE;
+}
+#endif
+
+#if !defined(__MTK_TARGET__)
+kal_bool mcf_ut_read_tlvota_buffer_sbp(void *p_param, kal_char *p_ret_err_str, kal_uint32 *p_ret_err_str_sz)
+{
+ mcf_t *pMcf = mcf_get_instance();
+ mcf_tool_file_info_t *pFile;
+ mcf_tool_tlvota_file_item_t *pItem;
+ mcf_tlvota_file_t *tlvota_file;
+ nvram_ef_mcf_tlvota_file_info_struct nv_tlvota_file;
+ nvram_ef_mcf_test_struct test_lid_buffer;
+ nvram_ef_mcf_test_struct empty_buffer = {0};
+ mcf_tlvota_sbp_tag_t sbp_tag;
+ kal_uint8 i;
+ mcf_ota_result_e mcf_ret;
+ kal_bool ret;
+
+ mcf_ut_init();
+
+ /* Write MCF TLV-OTA file version to NVRAM */
+ kal_mem_set(&nv_tlvota_file, 0, sizeof(nvram_ef_mcf_tlvota_file_info_struct));
+ strncpy(nv_tlvota_file.path, MCF_FS_DEFAULT_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN);
+ strncpy(nv_tlvota_file.name, MCF_FS_DEFAULT_TLVOTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN);
+ 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)) ) {
+ mcf_ut_format_err_str("Fail to write MCF TLV-OTA file info to NVRAM!!\r\n");
+ return KAL_FALSE;
+ }
+
+ /*
+ * Read TLV-OTA by LID & sbp_tag positive test - partially matched tag
+ * NVRAM_EF_MCF_TEST_OTA_LID with tag SBP_PARTIAL_TAG (12_NA_NA), but user searches SBP_FULL_TAG (12_33_21)
+ */
+ /* Fill TLV-OTA file into buffer */
+ for (i = 0; i < MAX_SIM_NUM; i++) {
+ tlvota_file = &(pMcf->tlvota_file[i]);
+
+ MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ if (tlvota_file) {
+ pFile = (mcf_tool_file_info_t *)(tlvota_file->buff);
+ pItem = (mcf_tool_tlvota_file_item_t *)(tlvota_file->buff + sizeof(mcf_tool_file_info_t));
+
+ ret = mcf_ut_open_test_data("MCF_TLVOTA_SBP_partial_ut_normal.mcfopota", (kal_char *)(tlvota_file->buff), MCF_MAX_TLVOTA_FILE_SIZE);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_TLVOTA_SBP_partial_ut_normal.mcfopota");
+ return KAL_FALSE;
+ }
+
+ MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+ }
+
+ // NVRAM_EF_MCF_TEST_OTA_LID with SBP_PARTIAL_TAG
+ kal_mem_set(&sbp_tag, 0, sizeof(mcf_tlvota_sbp_tag_t));
+ sbp_tag.sbp_id = SBP_TAG_SBPID;
+ strncpy(sbp_tag.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
+ strncpy(sbp_tag.mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
+
+ for (i = 0; i < MAX_SIM_NUM; i++) {
+ kal_mem_set(&test_lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
+
+ 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));
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! i(%d), ret(%d) \r\n", i, mcf_ret);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_test_lid_value((kal_uint8 *)&test_lid_buffer);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag positive test (partially matched tag) FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+ }
+
+ /*
+ * Read TLV-OTA by LID & sbp_tag positive test - partially matched tag
+ * NVRAM_EF_MCF_TEST_OTA_LID with tag SBP_PARTIAL_TAG (NA_NA_NA), but user searches SBP_FULL_TAG (12_33_21)
+ */
+ for (i = 0; i < MAX_SIM_NUM; i++) {
+ tlvota_file = &(pMcf->tlvota_file[i]);
+
+ MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ if (tlvota_file) {
+ ret = mcf_ut_open_test_data("MCF_TLVOTA_SBP_NA_ut_normal.mcfopota", (kal_char *)(tlvota_file->buff), MCF_MAX_TLVOTA_FILE_SIZE);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_TLVOTA_SBP_NA_ut_normal.mcfopota");
+ return KAL_FALSE;
+ }
+
+ MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+ }
+
+ kal_mem_set(&sbp_tag, 0, sizeof(mcf_tlvota_sbp_tag_t));
+ sbp_tag.sbp_id = SBP_TAG_SBPID;
+ strncpy(sbp_tag.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
+ strncpy(sbp_tag.mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
+
+ for (i = 0; i < MAX_SIM_NUM; i++) {
+ kal_mem_set(&test_lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
+
+ 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));
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! ret(%d) \r\n", mcf_ret);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_test_lid_value((kal_uint8 *)&test_lid_buffer);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag positive test (partially matched tag) FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+ }
+
+ /*
+ * Read TLV-OTA by LID & sbp_tag positive test - fully matched tag
+ * NVRAM_EF_MCF_TEST_OTA_LID with tag SBP_FULL_TAG (12_33_21), and user searches SBP_FULL_TAG (12_33_21)
+ */
+ for (i = 0; i < MAX_SIM_NUM; i++) {
+ tlvota_file = &(pMcf->tlvota_file[i]);
+
+ MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ if (tlvota_file) {
+ ret = mcf_ut_open_test_data("MCF_TLVOTA_SBP_full_ut_normal.mcfopota", (kal_char *)(tlvota_file->buff), MCF_MAX_TLVOTA_FILE_SIZE);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_TLVOTA_SBP_full_ut_normal.mcfopota");
+ return KAL_FALSE;
+ }
+
+ MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+ }
+
+ kal_mem_set(&sbp_tag, 0, sizeof(mcf_tlvota_sbp_tag_t));
+ sbp_tag.sbp_id = SBP_TAG_SBPID;
+ strncpy(sbp_tag.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
+ strncpy(sbp_tag.mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
+
+ for (i = 0; i < MAX_SIM_NUM; i++) {
+ kal_mem_set(&test_lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
+
+ 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));
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! ret(%d) \r\n", mcf_ret);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_test_lid_value((kal_uint8 *)&test_lid_buffer);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag positive test (fully matched tag) FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+ }
+
+ /*
+ * Read TLV-OTA by LID & sbp_tag positive test - no matched tag
+ * NVRAM_EF_MCF_TEST_OTA_LID with tag SBP_FULL_TAG (12_33_21), and user searches SBP_FULL_TAG (12_33_NA)
+ */
+ for (i = 0; i < MAX_SIM_NUM; i++) {
+ tlvota_file = &(pMcf->tlvota_file[i]);
+
+ MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ if (tlvota_file) {
+ ret = mcf_ut_open_test_data("MCF_TLVOTA_SBP_full_ut_normal.mcfopota", (kal_char *)(tlvota_file->buff), MCF_MAX_TLVOTA_FILE_SIZE);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_TLVOTA_SBP_full_ut_normal.mcfopota");
+ return KAL_FALSE;
+ }
+
+ MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+ }
+
+ kal_mem_set(&sbp_tag, 0, sizeof(mcf_tlvota_sbp_tag_t));
+ sbp_tag.sbp_id = SBP_TAG_SBPID;
+ strncpy(sbp_tag.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
+ strncpy(sbp_tag.mnc, "", MAX_MNC_STR_LEN);
+
+ for (i = 0; i < MAX_SIM_NUM; i++) {
+ kal_mem_set(&test_lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
+
+ 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));
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! ret(%d) \r\n", mcf_ret);
+ return KAL_FALSE;
+ }
+
+ if (kal_mem_cmp(&test_lid_buffer, &empty_buffer, sizeof(nvram_ef_mcf_test_struct)) != 0) {
+ mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag positive test (no matched tag) FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+ }
+
+ /*
+ * Read TLV-OTA by LID & sbp_tag positive test - no matched tag
+ * 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)
+ */
+ for (i = 0; i < MAX_SIM_NUM; i++) {
+ tlvota_file = &(pMcf->tlvota_file[i]);
+
+ MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ if (tlvota_file) {
+ ret = mcf_ut_open_test_data("MCF_TLVOTA_SBP_no_sbpid_ut_normal.mcfopota", (kal_char *)(tlvota_file->buff), MCF_MAX_TLVOTA_FILE_SIZE);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_TLVOTA_SBP_no_sbpid_ut_normal.mcfopota");
+ return KAL_FALSE;
+ }
+
+ MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+ }
+
+ kal_mem_set(&sbp_tag, 0, sizeof(mcf_tlvota_sbp_tag_t));
+ sbp_tag.sbp_id = SBP_TAG_SBPID;
+ strncpy(sbp_tag.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
+ strncpy(sbp_tag.mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
+
+ for (i = 0; i < MAX_SIM_NUM; i++) {
+ kal_mem_set(&test_lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
+
+ 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));
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! ret(%d) \r\n", mcf_ret);
+ return KAL_FALSE;
+ }
+
+ if (kal_mem_cmp(&test_lid_buffer, &empty_buffer, sizeof(nvram_ef_mcf_test_struct)) != 0) {
+ mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag positive test (no matched tag) FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+ }
+
+ /*
+ * Read TLV-OTA by LID & sbp_tag positive test - no matched tag
+ * NVRAM_EF_MCF_TEST_OTA_LID with tag SBP_FULL_TAG (12_33_21), and user searches SBP_FULL_TAG (12_NA_NA)
+ */
+ for (i = 0; i < MAX_SIM_NUM; i++) {
+ tlvota_file = &(pMcf->tlvota_file[i]);
+
+ MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ if (tlvota_file) {
+ ret = mcf_ut_open_test_data("MCF_TLVOTA_SBP_full_ut_normal.mcfopota", (kal_char *)(tlvota_file->buff), MCF_MAX_TLVOTA_FILE_SIZE);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_TLVOTA_SBP_full_ut_normal.mcfopota");
+ return KAL_FALSE;
+ }
+
+ MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+ }
+
+ kal_mem_set(&sbp_tag, 0, sizeof(mcf_tlvota_sbp_tag_t));
+ sbp_tag.sbp_id = SBP_TAG_SBPID;
+ strncpy(sbp_tag.mcc, "", MAX_MCC_STR_LEN);
+ strncpy(sbp_tag.mnc, "", MAX_MNC_STR_LEN);
+
+ for (i = 0; i < MAX_SIM_NUM; i++) {
+ kal_mem_set(&test_lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
+
+ 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));
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! ret(%d) \r\n", mcf_ret);
+ return KAL_FALSE;
+ }
+
+ if (kal_mem_cmp(&test_lid_buffer, &empty_buffer, sizeof(nvram_ef_mcf_test_struct)) != 0) {
+ mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag positive test (no matched tag) FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+ }
+
+ /*
+ * Read TLV-OTA by LID & sbp_tag positive test - partially matched tag
+ * 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)
+ */
+ for (i = 0; i < MAX_SIM_NUM; i++) {
+ tlvota_file = &(pMcf->tlvota_file[i]);
+
+ MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ if (tlvota_file) {
+ ret = mcf_ut_open_test_data("MCF_TLVOTA_SBP_no_sbpid_ut_normal.mcfopota", (kal_char *)(tlvota_file->buff), MCF_MAX_TLVOTA_FILE_SIZE);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_TLVOTA_SBP_no_sbpid_ut_normal.mcfopota");
+ return KAL_FALSE;
+ }
+
+ MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+ }
+
+ kal_mem_set(&sbp_tag, 0, sizeof(mcf_tlvota_sbp_tag_t));
+ sbp_tag.sbp_id = SBP_ID_INVALID;
+ strncpy(sbp_tag.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
+ strncpy(sbp_tag.mnc, SBP_TAG_MCC, MAX_MNC_STR_LEN);
+
+ for (i = 0; i < MAX_SIM_NUM; i++) {
+ kal_mem_set(&test_lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
+
+ 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));
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! ret(%d) \r\n", mcf_ret);
+ return KAL_FALSE;
+ }
+
+ if (kal_mem_cmp(&test_lid_buffer, &empty_buffer, sizeof(nvram_ef_mcf_test_struct)) != 0) {
+ mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag positive test (no matched tag) FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+ }
+
+ /*
+ * Read TLV-OTA by LID & sbp_tag positive test - item with mismatched verno in file
+ */
+ for (i = 0; i < MAX_SIM_NUM; i++) {
+ tlvota_file = &(pMcf->tlvota_file[i]);
+
+ MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ if (tlvota_file) {
+ ret = mcf_ut_open_test_data("MCF_TLVOTA_SBP_full_ut_mismatched_verno.mcfopota", (kal_char *)(tlvota_file->buff), MCF_MAX_TLVOTA_FILE_SIZE);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_TLVOTA_SBP_full_ut_mismatched_verno.mcfopota");
+ return KAL_FALSE;
+ }
+
+ MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+ }
+
+ kal_mem_set(&sbp_tag, 0, sizeof(mcf_tlvota_sbp_tag_t));
+ sbp_tag.sbp_id = SBP_TAG_SBPID;
+ strncpy(sbp_tag.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
+ strncpy(sbp_tag.mnc, SBP_TAG_MCC, MAX_MNC_STR_LEN);
+
+ for (i = 0; i < MAX_SIM_NUM; i++) {
+ kal_mem_set(&test_lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
+
+ 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));
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! ret(%d) \r\n", mcf_ret);
+ return KAL_FALSE;
+ }
+
+ if (kal_mem_cmp(&test_lid_buffer, &empty_buffer, sizeof(nvram_ef_mcf_test_struct)) != 0) {
+ mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag negative test (item with mismatched verno in file) FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+ }
+
+
+ MCF_UT_PASS();
+ return KAL_TRUE;
+}
+#endif
+
+#if !defined(__MTK_TARGET__)
+kal_bool mcf_ut_reset_lid_full(void *p_param, kal_char *p_ret_err_str, kal_uint32 *p_ret_err_str_sz)
+{
+ mcf_t *pMcf = mcf_get_instance();
+ mcf_ota_file_t *ota_file = &(pMcf->ota_file);
+ mcf_tool_file_info_t *pFile = (mcf_tool_file_info_t *)(ota_file->buff);
+ nvram_ef_mcf_ota_file_info_struct nv_ota_file;
+ nvram_ef_mcf_sw_info_struct nv_sw_info;
+ nvram_ef_mcf_test_struct empty_buffer = {0};
+ mcf_ota_result_e mcf_ret;
+ kal_bool ret;
+ nvram_ef_mcf_test_struct test_lid_buffer;
+ kal_uint8 *lid_buffer;
+
+ mcf_ut_init();
+
+ /* Write MCF OTA file version to NVRAM */
+ kal_mem_set(&nv_ota_file, 0, sizeof(nvram_ef_mcf_ota_file_info_struct));
+ strncpy(nv_ota_file.path, MCF_FS_DEFAULT_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN);
+ strncpy(nv_ota_file.name, MCF_FS_DEFAULT_OTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN);
+ 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)) ) {
+ mcf_ut_format_err_str("Fail to write MCF OTA file info to NVRAM!!\r\n");
+ return KAL_FALSE;
+ }
+ kal_mem_set(&nv_sw_info, 0, sizeof(nvram_ef_mcf_sw_info_struct));
+ strncpy(nv_sw_info.last_update_file.sw_version, MCF_UT_SW_VERNO, MCF_FILE_MAX_SW_VERSION_LEN);
+ strncpy(nv_sw_info.last_update_file.gen_time, MCF_UT_GEN_TIME, MCF_FILE_MAX_GEN_TIME_LEN);
+ strcpy(nv_sw_info.last_update_file.path, "");
+ strcpy(nv_sw_info.last_update_file.name, "");
+ if ( !nvram_external_write_data(NVRAM_EF_MCF_SW_INFO_LID, 1, (kal_uint8 *)&nv_sw_info, sizeof(nvram_ef_mcf_sw_info_struct)) ) {
+ mcf_ut_format_err_str("Fail to write MCF sw info to NVRAM!!\r\n");
+ return KAL_FALSE;
+ }
+
+ /*
+ * Reset all LID positive
+ */
+ MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ if (ota_file) {
+ ret = mcf_ut_open_test_data("MCF_OTA_ut_normal.mcfota", (kal_char *)(ota_file->buff), MCF_MAX_OTA_FILE_SIZE);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_OTA_ut_normal.mcfota");
+ return KAL_FALSE;
+ }
+
+ MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Reset LID FAIL!! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+
+ mcf_ret = mcf_do_ota_full();
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Reset LID FAIL!! ret(%d) \r\n", mcf_ret);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_test_lid_value(NULL);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Reset LID FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+
+ MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ if (ota_file) {
+ ret = mcf_ut_open_test_data("MCF_OTA_QUERY_ut_normal.mcfota", (kal_char *)(ota_file->buff), MCF_MAX_OTA_FILE_SIZE);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_OTA_QUERY_ut_normal.mcfota");
+ return KAL_FALSE;
+ }
+
+ MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Read OTA by LID FAIL!! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+
+
+ mcf_ret = mcf_do_ota_full();
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Reset LID FAIL!! ret(%d) \r\n", mcf_ret);
+ return KAL_FALSE;
+ }
+
+
+ lid_buffer = (kal_uint8 *)get_ctrl_buffer(sizeof(nvram_ef_mcf_test_struct));
+ if ( !nvram_external_read_data(NVRAM_EF_MCF_TEST_OTA_LID, 1, lid_buffer, sizeof(nvram_ef_mcf_test_struct)) ) {
+ printf("Fail to read NVRAM_EF_MCF_TEST_OTA_LID!!\r\n");
+ ret = KAL_FALSE;
+ }
+
+ if (kal_mem_cmp(lid_buffer, &empty_buffer, sizeof(nvram_ef_mcf_test_struct)) != 0) {
+ mcf_ut_format_err_str("Reset LID record 1 FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+
+ free_ctrl_buffer_set_null(lid_buffer);
+
+
+ kal_mem_set(&test_lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
+
+ 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));
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Reset LID Read OTA by LID FAIL!! ret(%d) \r\n", mcf_ret);
+ return KAL_FALSE;
+ }
+
+
+ ret = mcf_check_test_lid_value((kal_uint8 *)&test_lid_buffer);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Reset LID New OTA apply FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+
+ /*
+ * Reset all LID negative
+ */
+ MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ if (ota_file) {
+ ret = mcf_ut_open_test_data("MCF_OTA_ut_normal.mcfota", (kal_char *)(ota_file->buff), MCF_MAX_OTA_FILE_SIZE);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_OTA_ut_normal.mcfota");
+ return KAL_FALSE;
+ }
+
+ MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Reset LID FAIL!! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+
+ pFile->operation_mask |= MCF_FILE_OP_NOT_RESET_LID;
+
+ mcf_ret = mcf_do_ota_full();
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Reset LID FAIL!! ret(%d) \r\n", mcf_ret);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_test_lid_value(NULL);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Reset LID FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+
+ MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ if (ota_file) {
+ ret = mcf_ut_open_test_data("MCF_OTA_QUERY_ut_normal.mcfota", (kal_char *)(ota_file->buff), MCF_MAX_OTA_FILE_SIZE);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_OTA_QUERY_ut_normal.mcfota");
+ return KAL_FALSE;
+ }
+
+ MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Read OTA by LID FAIL!! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+
+ pFile->operation_mask |= MCF_FILE_OP_NOT_RESET_LID;
+
+ mcf_ret = mcf_do_ota_full();
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Reset LID FAIL!! ret(%d) \r\n", mcf_ret);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_test_lid_value(NULL);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Reset LID New OTA apply FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+
+
+ kal_mem_set(&test_lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
+
+ 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));
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Reset LID Read OTA by LID FAIL!! ret(%d) \r\n", mcf_ret);
+ return KAL_FALSE;
+ }
+
+
+ ret = mcf_check_test_lid_value((kal_uint8 *)&test_lid_buffer);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Reset LID New OTA apply FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+
+ MCF_UT_PASS();
+ return KAL_TRUE;
+}
+#endif
+#if !defined(__MTK_TARGET__)
+kal_bool mcf_ut_gid_do_ota_full(void *p_param, kal_char *p_ret_err_str, kal_uint32 *p_ret_err_str_sz)
+{
+ mcf_t *pMcf = mcf_get_instance();
+ mcf_ota_file_t *ota_file = &(pMcf->ota_file);
+ mcf_tool_file_info_t *pFile = (mcf_tool_file_info_t *)(ota_file->buff);
+ nvram_ef_mcf_ota_file_info_struct nv_ota_file;
+ nvram_ef_mcf_sw_info_struct nv_sw_info;
+ kal_uint8 *lid_buffer;
+ nvram_ef_mcf_test_struct empty_buffer = {0};
+ mcf_ota_result_e mcf_ret;
+ kal_bool ret;
+ kal_uint32 i;
+ nvram_ef_mcf_test_struct nv_lid_buffer;
+
+ mcf_ut_init();
+
+ /* Write MCF OTA file version to NVRAM */
+ kal_mem_set(&nv_ota_file, 0, sizeof(nvram_ef_mcf_ota_file_info_struct));
+ strncpy(nv_ota_file.path, MCF_FS_DEFAULT_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN);
+ strncpy(nv_ota_file.name, MCF_FS_DEFAULT_OTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN);
+ 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)) ) {
+ mcf_ut_format_err_str("Fail to write MCF OTA file info to NVRAM!!\r\n");
+ return KAL_FALSE;
+ }
+ kal_mem_set(&nv_sw_info, 0, sizeof(nvram_ef_mcf_sw_info_struct));
+ strncpy(nv_sw_info.last_update_file.sw_version, MCF_UT_SW_VERNO, MCF_FILE_MAX_SW_VERSION_LEN);
+ strncpy(nv_sw_info.last_update_file.gen_time, MCF_UT_GEN_TIME, MCF_FILE_MAX_GEN_TIME_LEN);
+ strcpy(nv_sw_info.last_update_file.path, "");
+ strcpy(nv_sw_info.last_update_file.name, "");
+ if ( !nvram_external_write_data(NVRAM_EF_MCF_SW_INFO_LID, 1, (kal_uint8 *)&nv_sw_info, sizeof(nvram_ef_mcf_sw_info_struct)) ) {
+ mcf_ut_format_err_str("Fail to write MCF sw info to NVRAM!!\r\n");
+ return KAL_FALSE;
+ }
+
+ /*
+ * Do full OTA positive test - Both SW verno of file and MD mismatch
+ */
+ MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ if (ota_file) {
+ ret = mcf_ut_open_test_data("MCF_OTA_ut_gid_normal.mcfota", (kal_char *)(ota_file->buff), MCF_MAX_OTA_FILE_SIZE);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_OTA_ut_gid_normal.mcfota");
+ return KAL_FALSE;
+ }
+
+ MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Do full OTA FAIL!! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+
+ mcf_ret = mcf_do_ota_full();
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Do full OTA FAIL!! ret(%d) \r\n", mcf_ret);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_test_lid_value(NULL);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Do full OTA positive test (Both SW verno of file and MD mismatch) FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+
+ /*
+ * Do full OTA positive test - SW verno of file mismatch
+ */
+ lid_buffer = (kal_uint8 *)get_ctrl_buffer(sizeof(nvram_ef_mcf_test_struct));
+ kal_mem_set(lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
+ for(i = 0; i < NVRAM_EF_MCF_TEST_OTA_TOTAL; i++) {
+ if ( !nvram_external_write_data(NVRAM_EF_MCF_TEST_OTA_LID, 1, lid_buffer, sizeof(nvram_ef_mcf_test_struct)) ) {
+ printf("Fail to reset NVRAM_EF_MCF_TEST_OTA_LID!!\r\n");
+ }
+ }
+ free_ctrl_buffer_set_null(lid_buffer);
+
+ /* Reset updated file information in NVRAM */
+ lid_buffer = (kal_uint8 *)get_ctrl_buffer(sizeof(nvram_ef_mcf_ota_file_info_struct));
+ kal_mem_set(lid_buffer, 0, sizeof(nvram_ef_mcf_ota_file_info_struct));
+ for(i = 0; i < NVRAM_EF_MCF_OTA_FILE_TOTAL; i++) {
+ if ( !nvram_external_write_data(NVRAM_EF_MCF_OTA_FILE_LID, 1, lid_buffer, sizeof(nvram_ef_mcf_ota_file_info_struct)) ) {
+ printf("Fail to reset NVRAM_EF_MCF_OTA_FILE_LID!!\r\n");
+ }
+ }
+ free_ctrl_buffer_set_null(lid_buffer);
+
+ mcf_ret = mcf_do_ota_full();
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Do full OTA FAIL!! ret(%d) \r\n", mcf_ret);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_test_lid_value(NULL);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Do full OTA positive test (SW verno of file mismatch) FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+
+ /*
+ * Do full OTA positive test - SW verno of MD mismatch
+ */
+ lid_buffer = (kal_uint8 *)get_ctrl_buffer(sizeof(nvram_ef_mcf_test_struct));
+ kal_mem_set(lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
+ for(i = 0; i < NVRAM_EF_MCF_TEST_OTA_TOTAL; i++) {
+ if ( !nvram_external_write_data(NVRAM_EF_MCF_TEST_OTA_LID, 1, lid_buffer, sizeof(nvram_ef_mcf_test_struct)) ) {
+ printf("Fail to reset NVRAM_EF_MCF_TEST_OTA_LID!!\r\n");
+ }
+ }
+ free_ctrl_buffer_set_null(lid_buffer);
+
+ /* Reset updated MD SW version in NVRAM */
+ lid_buffer = (kal_uint8 *)get_ctrl_buffer(sizeof(nvram_ef_mcf_sw_info_struct));
+ kal_mem_set(lid_buffer, 0, sizeof(nvram_ef_mcf_sw_info_struct));
+ for(i = 0; i < NVRAM_EF_MCF_OTA_FILE_TOTAL; i++) {
+ if ( !nvram_external_write_data(NVRAM_EF_MCF_SW_INFO_LID, 1, lid_buffer, sizeof(nvram_ef_mcf_sw_info_struct)) ) {
+ printf("Fail to reset NVRAM_EF_MCF_SW_INFO_LID!!\r\n");
+ }
+ }
+ free_ctrl_buffer_set_null(lid_buffer);
+
+ mcf_ret = mcf_do_ota_full();
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Do full OTA FAIL!! ret(%d) \r\n", mcf_ret);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_test_lid_value(NULL);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Do full OTA positive test (SW verno of MD mismatch) FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+
+ /*
+ * Do full OTA positive test - SW verno match
+ */
+ lid_buffer = (kal_uint8 *)get_ctrl_buffer(sizeof(nvram_ef_mcf_test_struct));
+ kal_mem_set(lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
+ for(i = 0; i < NVRAM_EF_MCF_TEST_OTA_TOTAL; i++) {
+ if ( !nvram_external_write_data(NVRAM_EF_MCF_TEST_OTA_LID, 1, lid_buffer, sizeof(nvram_ef_mcf_test_struct)) ) {
+ printf("Fail to reset NVRAM_EF_MCF_TEST_OTA_LID!!\r\n");
+ }
+ }
+ free_ctrl_buffer_set_null(lid_buffer);
+
+ mcf_ret = mcf_do_ota_full();
+ if ( (mcf_ret != MCF_OTA_R_SUCCESS) || ((com_Mcf.boot_trace_flag & MCF_BOOT_TRACE_F_NO_NEED) == 0) ) {
+ mcf_ut_format_err_str("Do full OTA FAIL!! ret(%d) \r\n", mcf_ret);
+ return KAL_FALSE;
+ }
+
+ lid_buffer = (kal_uint8 *)get_ctrl_buffer(sizeof(nvram_ef_mcf_test_struct));
+ if ( !nvram_external_read_data(NVRAM_EF_MCF_TEST_OTA_LID, 1, lid_buffer, sizeof(nvram_ef_mcf_test_struct)) ) {
+ printf("Fail to read NVRAM_EF_MCF_TEST_OTA_LID!!\r\n");
+ ret = KAL_FALSE;
+ }
+
+ if (kal_mem_cmp(lid_buffer, &empty_buffer, sizeof(nvram_ef_mcf_test_struct)) != 0) {
+ mcf_ut_format_err_str("Do full OTA positive test (SW verno match) FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+ free_ctrl_buffer_set_null(lid_buffer);
+
+ /*
+ * Do full OTA negative test - invlaid file type
+ */
+ lid_buffer = (kal_uint8 *)get_ctrl_buffer(sizeof(nvram_ef_mcf_test_struct));
+ kal_mem_set(lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
+ for(i = 0; i < NVRAM_EF_MCF_TEST_OTA_TOTAL; i++) {
+ if ( !nvram_external_write_data(NVRAM_EF_MCF_TEST_OTA_LID, 1, lid_buffer, sizeof(nvram_ef_mcf_test_struct)) ) {
+ printf("Fail to reset NVRAM_EF_MCF_TEST_OTA_LID!!\r\n");
+ }
+ }
+ free_ctrl_buffer_set_null(lid_buffer);
+
+ MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ if (ota_file) {
+ strncpy(pFile->file_type, "MCF", 8);
+ MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Do full OTA FAIL!! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+
+ mcf_ret = mcf_do_ota_full();
+ if ( (mcf_ret != MCF_OTA_R_INVALID_FILE) || ((com_Mcf.boot_trace_flag & MCF_BOOT_TRACE_F_INVALID_FILE) == 0) ) {
+ 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);
+ return KAL_FALSE;
+ }
+
+ lid_buffer = (kal_uint8 *)get_ctrl_buffer(sizeof(nvram_ef_mcf_test_struct));
+ if ( !nvram_external_read_data(NVRAM_EF_MCF_TEST_OTA_LID, 1, lid_buffer, sizeof(nvram_ef_mcf_test_struct)) ) {
+ printf("Fail to read NVRAM_EF_MCF_TEST_OTA_LID!!\r\n");
+ ret = KAL_FALSE;
+ }
+
+ if (kal_mem_cmp(lid_buffer, &empty_buffer, sizeof(nvram_ef_mcf_test_struct)) != 0) {
+ mcf_ut_format_err_str("Do full OTA positive test (SW verno match) FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+ free_ctrl_buffer_set_null(lid_buffer);
+
+ /*
+ * Do full OTA positive test - 3-Dimension array
+ */
+
+ lid_buffer = (kal_uint8 *)get_ctrl_buffer(sizeof(nvram_ef_mcf_test_struct));
+ kal_mem_set(lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
+ for(i = 0; i < NVRAM_EF_MCF_TEST_OTA_TOTAL; i++) {
+ if ( !nvram_external_write_data(NVRAM_EF_MCF_TEST_OTA_LID, 1, lid_buffer, sizeof(nvram_ef_mcf_test_struct)) ) {
+ printf("Fail to reset NVRAM_EF_MCF_TEST_OTA_LID!!\r\n");
+ }
+ }
+ free_ctrl_buffer_set_null(lid_buffer);
+
+ lid_buffer = (kal_uint8 *)get_ctrl_buffer(sizeof(nvram_ef_mcf_sw_info_struct));
+ kal_mem_set(lid_buffer, 0, sizeof(nvram_ef_mcf_sw_info_struct));
+ if ( !nvram_external_write_data(NVRAM_EF_MCF_SW_INFO_LID, 1, lid_buffer, sizeof(nvram_ef_mcf_sw_info_struct)) ) {
+ printf("Fail to reset NVRAM_EF_MCF_SW_INFO_LID!!\r\n");
+ }
+ free_ctrl_buffer_set_null(lid_buffer);
+
+ lid_buffer = (kal_uint8 *)get_ctrl_buffer(sizeof(nvram_ef_mcf_ota_file_info_struct));
+ kal_mem_set(lid_buffer, 0, sizeof(nvram_ef_mcf_ota_file_info_struct));
+ for(i = 0; i < NVRAM_EF_MCF_OTA_FILE_TOTAL; i++) {
+ if ( !nvram_external_write_data(NVRAM_EF_MCF_OTA_FILE_LID, 1, lid_buffer, sizeof(nvram_ef_mcf_ota_file_info_struct)) ) {
+ printf("Fail to reset NVRAM_EF_MCF_OTA_FILE_LID!!\r\n");
+ }
+ }
+ free_ctrl_buffer_set_null(lid_buffer);
+
+ MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ if (ota_file) {
+ 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);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_OTA_3d_array_and_bit_byte_ut_gid_normal.mcfota");
+ return KAL_FALSE;
+ }
+
+ MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Do full OTA FAIL!! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+
+ mcf_ret = mcf_do_ota_full();
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Do full OTA FAIL!! ret(%d) \r\n", mcf_ret);
+ return KAL_FALSE;
+ }
+
+
+ if ( !nvram_external_read_data(NVRAM_EF_MCF_TEST_OTA_LID, 1, (kal_uint8 *)&nv_lid_buffer, sizeof(nvram_ef_mcf_test_struct)) ) {
+ printf("Fail to read NVRAM_EF_MCF_TEST_OTA_LID!!\r\n");
+ ret = KAL_FALSE;
+ }
+
+ if ( kal_mem_cmp((kal_uint8 *)&nv_lid_buffer, &mcf_ut_test_lid_value_new_pattern, sizeof(nvram_ef_mcf_test_struct)) != 0 ) {
+ ret = KAL_FALSE;
+ printf("Do full OTA positive test (SW verno match) FAIL!!\r\n");
+ }
+
+
+ if (ret == KAL_FALSE) {
+ return ret;
+ }
+
+ /*
+ * Do full OTA positive test - File with checksum
+ */
+ lid_buffer = (kal_uint8 *)get_ctrl_buffer(sizeof(nvram_ef_mcf_sw_info_struct));
+ kal_mem_set(lid_buffer, 0, sizeof(nvram_ef_mcf_sw_info_struct));
+ if ( !nvram_external_write_data(NVRAM_EF_MCF_SW_INFO_LID, 1, lid_buffer, sizeof(nvram_ef_mcf_sw_info_struct)) ) {
+ printf("Fail to reset NVRAM_EF_MCF_SW_INFO_LID!!\r\n");
+ }
+ free_ctrl_buffer_set_null(lid_buffer);
+
+ lid_buffer = (kal_uint8 *)get_ctrl_buffer(sizeof(nvram_ef_mcf_ota_file_info_struct));
+ kal_mem_set(lid_buffer, 0, sizeof(nvram_ef_mcf_ota_file_info_struct));
+ for(i = 0; i < NVRAM_EF_MCF_OTA_FILE_TOTAL; i++) {
+ if ( !nvram_external_write_data(NVRAM_EF_MCF_OTA_FILE_LID, 1, lid_buffer, sizeof(nvram_ef_mcf_ota_file_info_struct)) ) {
+ printf("Fail to reset NVRAM_EF_MCF_OTA_FILE_LID!!\r\n");
+ }
+ }
+ free_ctrl_buffer_set_null(lid_buffer);
+
+ MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ if (ota_file) {
+ ret = mcf_ut_open_test_data("MCF_OTA_ut_gid_checksum_normal.mcfota", (kal_char *)(ota_file->buff), MCF_MAX_OTA_FILE_SIZE);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_OTA_ut_gid_checksum_normal.mcfota");
+ return KAL_FALSE;
+ }
+
+ MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Do full OTA FAIL!! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+
+ mcf_ret = mcf_do_ota_full();
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Do full OTA FAIL!! ret(%d) \r\n", mcf_ret);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_test_lid_value(NULL);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Do full OTA positive test (File with checksum) FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+
+ /*
+ * Do full OTA positive test - File with checksum and encryption
+ */
+ lid_buffer = (kal_uint8 *)get_ctrl_buffer(sizeof(nvram_ef_mcf_sw_info_struct));
+ kal_mem_set(lid_buffer, 0, sizeof(nvram_ef_mcf_sw_info_struct));
+ if ( !nvram_external_write_data(NVRAM_EF_MCF_SW_INFO_LID, 1, lid_buffer, sizeof(nvram_ef_mcf_sw_info_struct)) ) {
+ printf("Fail to reset NVRAM_EF_MCF_SW_INFO_LID!!\r\n");
+ }
+ free_ctrl_buffer_set_null(lid_buffer);
+
+ lid_buffer = (kal_uint8 *)get_ctrl_buffer(sizeof(nvram_ef_mcf_ota_file_info_struct));
+ kal_mem_set(lid_buffer, 0, sizeof(nvram_ef_mcf_ota_file_info_struct));
+ for(i = 0; i < NVRAM_EF_MCF_OTA_FILE_TOTAL; i++) {
+ if ( !nvram_external_write_data(NVRAM_EF_MCF_OTA_FILE_LID, 1, lid_buffer, sizeof(nvram_ef_mcf_ota_file_info_struct)) ) {
+ printf("Fail to reset NVRAM_EF_MCF_OTA_FILE_LID!!\r\n");
+ }
+ }
+ free_ctrl_buffer_set_null(lid_buffer);
+
+ MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ if (ota_file) {
+ 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);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_OTA_ut_gid_checksum_and_encryption_normal.mcfota");
+ return KAL_FALSE;
+ }
+
+ MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Do full OTA FAIL!! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+
+ mcf_ret = mcf_do_ota_full();
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Do full OTA FAIL!! ret(%d) \r\n", mcf_ret);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_test_lid_value(NULL);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Do full OTA positive test (File with checksum) FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+
+
+ MCF_UT_PASS();
+ return KAL_TRUE;
+}
+#endif
+
+#if !defined(__MTK_TARGET__)
+kal_bool mcf_ut_gid_do_ota_by_lid(void *p_param, kal_char *p_ret_err_str, kal_uint32 *p_ret_err_str_sz)
+{
+ mcf_t *pMcf = mcf_get_instance();
+ mcf_tool_file_info_t *pFile;
+ mcf_tool_gid_ota_file_item_t *pItem;
+ mcf_ota_file_t *ota_file = &(pMcf->ota_file);
+ nvram_ef_mcf_ota_file_info_struct nv_ota_file;
+ nvram_ef_mcf_sw_info_struct nv_sw_info;
+ nvram_ltable_entry_struct lid_info;
+ nvram_errno_enum nvram_api_ret;
+ mcf_ota_result_e mcf_ret;
+ kal_bool ret;
+
+ mcf_ut_init();
+
+ /* Write MCF OTA file version to NVRAM */
+ kal_mem_set(&nv_ota_file, 0, sizeof(nvram_ef_mcf_ota_file_info_struct));
+ strncpy(nv_ota_file.path, MCF_FS_DEFAULT_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN);
+ strncpy(nv_ota_file.name, MCF_FS_DEFAULT_OTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN);
+ 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)) ) {
+ mcf_ut_format_err_str("Fail to write MCF OTA file info to NVRAM!!\r\n");
+ return KAL_FALSE;
+ }
+ kal_mem_set(&nv_sw_info, 0, sizeof(nvram_ef_mcf_sw_info_struct));
+ strncpy(nv_sw_info.last_update_file.sw_version, MCF_UT_SW_VERNO, MCF_FILE_MAX_SW_VERSION_LEN);
+ strncpy(nv_sw_info.last_update_file.gen_time, MCF_UT_GEN_TIME, MCF_FILE_MAX_GEN_TIME_LEN);
+ strcpy(nv_sw_info.last_update_file.path, "");
+ strcpy(nv_sw_info.last_update_file.name, "");
+ if ( !nvram_external_write_data(NVRAM_EF_MCF_SW_INFO_LID, 1, (kal_uint8 *)&nv_sw_info, sizeof(nvram_ef_mcf_sw_info_struct)) ) {
+ mcf_ut_format_err_str("Fail to write MCF sw info to NVRAM!!\r\n");
+ return KAL_FALSE;
+ }
+
+ pFile = (mcf_tool_file_info_t *)(ota_file->buff);
+ pItem = (mcf_tool_gid_ota_file_item_t *)(ota_file->buff + sizeof(mcf_tool_file_info_t));
+
+ /*
+ * Do OTA by LID positive test
+ */
+ MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ if (ota_file) {
+ ret = mcf_ut_open_test_data("MCF_OTA_ut_gid_normal.mcfota", (kal_char *)(ota_file->buff), MCF_MAX_OTA_FILE_SIZE);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_OTA_ut_gid_normal.mcfota");
+ return KAL_FALSE;
+ }
+
+ MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Do OTA by LID FAIL!! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+
+ nvram_api_ret = nvram_external_get_lid_info(NVRAM_EF_MCF_TEST_OTA_LID, &lid_info);
+ if (nvram_api_ret != NVRAM_ERRNO_SUCCESS) {
+ 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);
+ return KAL_FALSE;
+ }
+
+ mcf_ret = mcf_do_ota_by_lid(NVRAM_EF_MCF_TEST_OTA_LID, 1, NVRAM_EF_MCF_TEST_OTA_TOTAL, &lid_info);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Do OTA by LID FAIL!! ret(%d) \r\n", mcf_ret);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_test_lid_value(NULL);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Do OTA by LID positive test FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+
+ /*
+ * Do OTA by LID negative test - invalid OTA attribute
+ */
+ lid_info.attr &= ~NVRAM_ATTR_MCF_OTA;
+ mcf_ret = mcf_do_ota_by_lid(NVRAM_EF_MCF_TEST_OTA_LID, 1, NVRAM_EF_MCF_TEST_OTA_TOTAL, &lid_info);
+ if (mcf_ret != MCF_OTA_R_INVALID_ATTR) {
+ mcf_ut_format_err_str("OTA by LID: invalid OTA attribute case FAIL!! ret(%d) \r\n", mcf_ret);
+ return KAL_FALSE;
+ }
+
+ /*
+ * Do OTA by LID negative test - invlaid file type
+ */
+ MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ if (ota_file) {
+ strncpy(pFile->file_type, "MCF", 8);
+ MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Do OTA by LID FAIL!! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+
+ mcf_ret = mcf_do_ota_by_lid(NVRAM_EF_MCF_TEST_OTA_LID, 1, NVRAM_EF_MCF_TEST_OTA_TOTAL, &lid_info);
+ if (mcf_ret != MCF_OTA_R_INVALID_FILE) {
+ mcf_ut_format_err_str("OTA by LID: invlaid file type case FAIL!! ret(%d) \r\n", mcf_ret);
+ return KAL_FALSE;
+ }
+
+ MCF_UT_PASS();
+ return KAL_TRUE;
+}
+#endif
+
+#if !defined(__MTK_TARGET__)
+kal_bool mcf_ut_gid_read_ota_buffer(void *p_param, kal_char *p_ret_err_str, kal_uint32 *p_ret_err_str_sz)
+{
+ mcf_t *pMcf = mcf_get_instance();
+ mcf_tool_file_info_t *pFile;
+ mcf_tool_gid_ota_file_item_t *pItem;
+ mcf_ota_file_t *ota_file = &(pMcf->ota_file);
+ nvram_ef_mcf_ota_file_info_struct nv_ota_file;
+ nvram_ef_mcf_sw_info_struct nv_sw_info;
+ nvram_ef_mcf_test_struct test_lid_buffer;
+ mcf_ota_result_e mcf_ret;
+ kal_bool ret;
+
+ mcf_ut_init();
+
+ /* Write MCF OTA file version to NVRAM */
+ kal_mem_set(&nv_ota_file, 0, sizeof(nvram_ef_mcf_ota_file_info_struct));
+ strncpy(nv_ota_file.path, MCF_FS_DEFAULT_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN);
+ strncpy(nv_ota_file.name, MCF_FS_DEFAULT_OTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN);
+ 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)) ) {
+ mcf_ut_format_err_str("Fail to write MCF OTA file info to NVRAM!!\r\n");
+ return KAL_FALSE;
+ }
+ kal_mem_set(&nv_sw_info, 0, sizeof(nvram_ef_mcf_sw_info_struct));
+ strncpy(nv_sw_info.last_update_file.sw_version, MCF_UT_SW_VERNO, MCF_FILE_MAX_SW_VERSION_LEN);
+ strncpy(nv_sw_info.last_update_file.gen_time, MCF_UT_GEN_TIME, MCF_FILE_MAX_GEN_TIME_LEN);
+ strcpy(nv_sw_info.last_update_file.path, "");
+ strcpy(nv_sw_info.last_update_file.name, "");
+ if ( !nvram_external_write_data(NVRAM_EF_MCF_SW_INFO_LID, 1, (kal_uint8 *)&nv_sw_info, sizeof(nvram_ef_mcf_sw_info_struct)) ) {
+ mcf_ut_format_err_str("Fail to write MCF sw info to NVRAM!!\r\n");
+ return KAL_FALSE;
+ }
+
+ pFile = (mcf_tool_file_info_t *)(ota_file->buff);
+ pItem = (mcf_tool_gid_ota_file_item_t *)(ota_file->buff + sizeof(mcf_tool_file_info_t));
+
+ /*
+ * Read OTA LID positive test
+ */
+ MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ if (ota_file) {
+ ret = mcf_ut_open_test_data("MCF_OTA_QUERY_ut_gid_normal.mcfota", (kal_char *)(ota_file->buff), MCF_MAX_OTA_FILE_SIZE);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_OTA_QUERY_ut_gid_normal.mcfota");
+ return KAL_FALSE;
+ }
+
+ MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Read OTA by LID FAIL!! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+
+ // Record index 1
+ kal_mem_set(&test_lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
+
+ 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));
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Read OTA by LID FAIL!! ret(%d) \r\n", mcf_ret);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_test_lid_value((kal_uint8 *)&test_lid_buffer);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Read OTA by LID positive test FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+
+ // Record index 2
+ kal_mem_set(&test_lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
+
+ 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));
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Read OTA by LID FAIL!! ret(%d) \r\n", mcf_ret);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_test_lid_value((kal_uint8 *)&test_lid_buffer);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Read OTA by LID positive test FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+
+ MCF_UT_PASS();
+ return KAL_TRUE;
+}
+#endif
+
+#if !defined(__MTK_TARGET__)
+kal_bool mcf_ut_gid_read_tlvota_buffer(void *p_param, kal_char *p_ret_err_str, kal_uint32 *p_ret_err_str_sz)
+{
+ mcf_t *pMcf = mcf_get_instance();
+ mcf_tool_file_info_t *pFile;
+ mcf_tool_gid_tlvota_file_item_t *pItem;
+ mcf_tlvota_file_t *tlvota_file;
+ nvram_ef_mcf_tlvota_file_info_struct nv_tlvota_file;
+ nvram_ef_mcf_test_struct test_lid_buffer;
+ nvram_ef_mcf_test_struct empty_buffer = {0};
+ mcf_tlvota_tag_t tlvota_tag;
+ kal_char tag[16];
+ mcf_ota_result_e mcf_ret;
+ kal_bool ret;
+
+ mcf_ut_init();
+
+ /* Write MCF TLV-OTA file version to NVRAM */
+ kal_mem_set(&nv_tlvota_file, 0, sizeof(nvram_ef_mcf_tlvota_file_info_struct));
+ strncpy(nv_tlvota_file.path, MCF_FS_DEFAULT_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN);
+ strncpy(nv_tlvota_file.name, MCF_FS_DEFAULT_TLVOTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN);
+ 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)) ) {
+ mcf_ut_format_err_str("Fail to write MCF TLV-OTA file info to NVRAM!!\r\n");
+ return KAL_FALSE;
+ }
+
+ /*
+ * Read TLV-OTA by LID & tag positive test - fully matched tag
+ */
+ tlvota_file = &(pMcf->general_tlvota_file);
+
+ MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ if (tlvota_file) {
+ pFile = (mcf_tool_file_info_t *)(tlvota_file->buff);
+ pItem = (mcf_tool_gid_tlvota_file_item_t *)(tlvota_file->buff + sizeof(mcf_tool_file_info_t));
+
+ ret = mcf_ut_open_test_data("MCF_TLVOTA_ICCID_ut_gid_normal.mcfopota", (kal_char *)(tlvota_file->buff), MCF_MAX_TLVOTA_FILE_SIZE);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_TLVOTA_ICCID_ut_gid_normal.mcfopota");
+ return KAL_FALSE;
+ }
+
+ MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Read TLV-OTA by LID FAIL!! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+
+ // NVRAM_EF_MCF_TEST_OTA_LID with SBP_PARTIAL_TAG
+ kal_mem_set(&test_lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
+ kal_mem_set(&tlvota_tag, 0, sizeof(mcf_tlvota_tag_t));
+ tlvota_tag.tag_type = MCF_TLVOTA_TAG_ICCID;
+ strcpy(tag, SBP_PARTIAL_TAG);
+ tlvota_tag.tag_len = strlen(tag);
+ tlvota_tag.tag = tag;
+
+ 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));
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Read TLV-OTA by LID & tag FAIL!! ret(%d) \r\n", mcf_ret);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_test_lid_value((kal_uint8 *)&test_lid_buffer);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Read TLV-OTA by LID & tag positive test (fully matched tag) FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+
+ /*
+ * Read TLV-OTA by LID & tag positive test - partially matched tag
+ * NVRAM_EF_MCF_TEST_OTA_LID with tag SBP_PARTIAL_TAG (12_NA_NA), but user searches tag (12_NA_NA_TEST)
+ */
+ kal_mem_set(&test_lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
+ kal_mem_set(&tlvota_tag, 0, sizeof(mcf_tlvota_tag_t));
+ tlvota_tag.tag_type = MCF_TLVOTA_TAG_ICCID;
+ strcpy(tag, "12_NA_NA_TEST");
+ tlvota_tag.tag_len = strlen(tag);
+ tlvota_tag.tag = tag;
+
+ 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));
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Read TLV-OTA by LID & tag FAIL!! ret(%d) \r\n", mcf_ret);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_test_lid_value((kal_uint8 *)&test_lid_buffer);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Read TLV-OTA by LID & tag positive test (partially matched tag) FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+
+ /*
+ * Read TLV-OTA by LID & tag positive test - no matched tag
+ * NVRAM_EF_MCF_TEST_OTA_LID with tag SBP_PARTIAL_TAG (12_NA_NA), but user searches tag (12_NA)
+ */
+ kal_mem_set(&test_lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
+ kal_mem_set(&tlvota_tag, 0, sizeof(mcf_tlvota_tag_t));
+ tlvota_tag.tag_type = MCF_TLVOTA_TAG_ICCID;
+ strcpy(tag, "12_NA");
+ tlvota_tag.tag_len = strlen(tag);
+ tlvota_tag.tag = tag;
+
+ 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));
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Read TLV-OTA by LID & tag FAIL!! ret(%d) \r\n", mcf_ret);
+ return KAL_FALSE;
+ }
+
+ if (kal_mem_cmp(&test_lid_buffer, &empty_buffer, sizeof(nvram_ef_mcf_test_struct)) != 0) {
+ mcf_ut_format_err_str("Read TLV-OTA by LID & tag positive test (no matched tag) FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+
+ /*
+ * Read TLV-OTA by LID & tag positive test - item with mismatched verno in file
+ */
+ kal_mem_set(&test_lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
+ kal_mem_set(&tlvota_tag, 0, sizeof(mcf_tlvota_tag_t));
+ tlvota_tag.tag_type = MCF_TLVOTA_TAG_ICCID;
+ strcpy(tag, SBP_PARTIAL_TAG);
+ tlvota_tag.tag_len = strlen(tag);
+ tlvota_tag.tag = tag;
+
+ tlvota_file = &(pMcf->general_tlvota_file);
+ pItem = (mcf_tool_gid_tlvota_file_item_t *)(tlvota_file->buff + sizeof(mcf_tool_file_info_t));
+
+ MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ if (tlvota_file) {
+ ret = mcf_ut_open_test_data("MCF_TLVOTA_ICCID_ut_gid_normal.mcfopota", (kal_char *)(tlvota_file->buff), MCF_MAX_TLVOTA_FILE_SIZE);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_TLVOTA_ICCID_ut_gid_normal.mcfopota");
+ return KAL_FALSE;
+ }
+
+ MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Read TLV-OTA by LID FAIL!! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+
+ 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));
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ 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);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_test_lid_value((kal_uint8 *)&test_lid_buffer);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Read TLV-OTA by LID & tag positive test (fully matched tag) FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+
+
+ MCF_UT_PASS();
+ return KAL_TRUE;
+}
+#endif
+
+#if !defined(__MTK_TARGET__)
+kal_bool mcf_ut_gid_read_tlvota_buffer_sbp(void *p_param, kal_char *p_ret_err_str, kal_uint32 *p_ret_err_str_sz)
+{
+ mcf_t *pMcf = mcf_get_instance();
+ mcf_tool_file_info_t *pFile;
+ mcf_tool_gid_tlvota_file_item_t *pItem;
+ mcf_tlvota_file_t *tlvota_file;
+ nvram_ef_mcf_tlvota_file_info_struct nv_tlvota_file;
+ nvram_ef_mcf_test_struct test_lid_buffer;
+ nvram_ef_mcf_test_struct empty_buffer = {0};
+ mcf_tlvota_sbp_tag_t sbp_tag;
+ kal_uint8 i;
+ mcf_ota_result_e mcf_ret;
+ kal_bool ret;
+
+ mcf_ut_init();
+
+ /* Write MCF TLV-OTA file version to NVRAM */
+ kal_mem_set(&nv_tlvota_file, 0, sizeof(nvram_ef_mcf_tlvota_file_info_struct));
+ strncpy(nv_tlvota_file.path, MCF_FS_DEFAULT_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN);
+ strncpy(nv_tlvota_file.name, MCF_FS_DEFAULT_TLVOTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN);
+ 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)) ) {
+ mcf_ut_format_err_str("Fail to write MCF TLV-OTA file info to NVRAM!!\r\n");
+ return KAL_FALSE;
+ }
+
+ /*
+ * Read TLV-OTA by LID & sbp_tag positive test - partially matched tag
+ * NVRAM_EF_MCF_TEST_OTA_LID with tag SBP_PARTIAL_TAG (12_NA_NA), but user searches SBP_FULL_TAG (12_33_21)
+ */
+ /* Fill TLV-OTA file into buffer */
+ for (i = 0; i < MAX_SIM_NUM; i++) {
+ tlvota_file = &(pMcf->tlvota_file[i]);
+
+ MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ if (tlvota_file) {
+ pFile = (mcf_tool_file_info_t *)(tlvota_file->buff);
+ pItem = (mcf_tool_gid_tlvota_file_item_t *)(tlvota_file->buff + sizeof(mcf_tool_file_info_t));
+
+ ret = mcf_ut_open_test_data("MCF_TLVOTA_SBP_partial_ut_gid_normal.mcfopota", (kal_char *)(tlvota_file->buff), MCF_MAX_TLVOTA_FILE_SIZE);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_TLVOTA_SBP_partial_ut_gid_normal.mcfopota");
+ return KAL_FALSE;
+ }
+
+ MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+ }
+
+ // NVRAM_EF_MCF_TEST_OTA_LID with SBP_PARTIAL_TAG
+ kal_mem_set(&sbp_tag, 0, sizeof(mcf_tlvota_sbp_tag_t));
+ sbp_tag.sbp_id = SBP_TAG_SBPID;
+ strncpy(sbp_tag.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
+ strncpy(sbp_tag.mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
+
+ for (i = 0; i < MAX_SIM_NUM; i++) {
+ kal_mem_set(&test_lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
+
+ 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));
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! i(%d), ret(%d) \r\n", i, mcf_ret);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_test_lid_value((kal_uint8 *)&test_lid_buffer);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag positive test (partially matched tag) FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+ }
+
+ /*
+ * Read TLV-OTA by LID & sbp_tag positive test - partially matched tag
+ * NVRAM_EF_MCF_TEST_OTA_LID with tag SBP_PARTIAL_TAG (NA_NA_NA), but user searches SBP_FULL_TAG (12_33_21)
+ */
+ for (i = 0; i < MAX_SIM_NUM; i++) {
+ tlvota_file = &(pMcf->tlvota_file[i]);
+
+ MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ if (tlvota_file) {
+ ret = mcf_ut_open_test_data("MCF_TLVOTA_SBP_NA_ut_gid_normal.mcfopota", (kal_char *)(tlvota_file->buff), MCF_MAX_TLVOTA_FILE_SIZE);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_TLVOTA_SBP_NA_ut_gid_normal.mcfopota");
+ return KAL_FALSE;
+ }
+
+ MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+ }
+
+ kal_mem_set(&sbp_tag, 0, sizeof(mcf_tlvota_sbp_tag_t));
+ sbp_tag.sbp_id = SBP_TAG_SBPID;
+ strncpy(sbp_tag.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
+ strncpy(sbp_tag.mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
+
+ for (i = 0; i < MAX_SIM_NUM; i++) {
+ kal_mem_set(&test_lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
+
+ 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));
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! ret(%d) \r\n", mcf_ret);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_test_lid_value((kal_uint8 *)&test_lid_buffer);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag positive test (partially matched tag) FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+ }
+
+ /*
+ * Read TLV-OTA by LID & sbp_tag positive test - fully matched tag
+ * NVRAM_EF_MCF_TEST_OTA_LID with tag SBP_FULL_TAG (12_33_21), and user searches SBP_FULL_TAG (12_33_21)
+ */
+ for (i = 0; i < MAX_SIM_NUM; i++) {
+ tlvota_file = &(pMcf->tlvota_file[i]);
+
+ MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ if (tlvota_file) {
+ ret = mcf_ut_open_test_data("MCF_TLVOTA_SBP_full_ut_gid_normal.mcfopota", (kal_char *)(tlvota_file->buff), MCF_MAX_TLVOTA_FILE_SIZE);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_TLVOTA_SBP_full_ut_gid_normal.mcfopota");
+ return KAL_FALSE;
+ }
+
+ MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+ }
+
+ kal_mem_set(&sbp_tag, 0, sizeof(mcf_tlvota_sbp_tag_t));
+ sbp_tag.sbp_id = SBP_TAG_SBPID;
+ strncpy(sbp_tag.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
+ strncpy(sbp_tag.mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
+
+ for (i = 0; i < MAX_SIM_NUM; i++) {
+ kal_mem_set(&test_lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
+
+ 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));
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! ret(%d) \r\n", mcf_ret);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_test_lid_value((kal_uint8 *)&test_lid_buffer);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag positive test (fully matched tag) FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+ }
+
+ /*
+ * Read TLV-OTA by LID & sbp_tag positive test - no matched tag
+ * NVRAM_EF_MCF_TEST_OTA_LID with tag SBP_FULL_TAG (12_33_21), and user searches SBP_FULL_TAG (12_33_NA)
+ */
+ for (i = 0; i < MAX_SIM_NUM; i++) {
+ tlvota_file = &(pMcf->tlvota_file[i]);
+
+ MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ if (tlvota_file) {
+ ret = mcf_ut_open_test_data("MCF_TLVOTA_SBP_full_ut_gid_normal.mcfopota", (kal_char *)(tlvota_file->buff), MCF_MAX_TLVOTA_FILE_SIZE);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_TLVOTA_SBP_full_ut_gid_normal.mcfopota");
+ return KAL_FALSE;
+ }
+
+ MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+ }
+
+ kal_mem_set(&sbp_tag, 0, sizeof(mcf_tlvota_sbp_tag_t));
+ sbp_tag.sbp_id = SBP_TAG_SBPID;
+ strncpy(sbp_tag.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
+ strncpy(sbp_tag.mnc, "", MAX_MNC_STR_LEN);
+
+ for (i = 0; i < MAX_SIM_NUM; i++) {
+ kal_mem_set(&test_lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
+
+ 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));
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! ret(%d) \r\n", mcf_ret);
+ return KAL_FALSE;
+ }
+
+ if (kal_mem_cmp(&test_lid_buffer, &empty_buffer, sizeof(nvram_ef_mcf_test_struct)) != 0) {
+ mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag positive test (no matched tag) FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+ }
+
+ /*
+ * Read TLV-OTA by LID & sbp_tag positive test - no matched tag
+ * 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)
+ */
+ for (i = 0; i < MAX_SIM_NUM; i++) {
+ tlvota_file = &(pMcf->tlvota_file[i]);
+
+ MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ if (tlvota_file) {
+ 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);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_TLVOTA_SBP_no_sbpid_ut_gid_normal.mcfopota");
+ return KAL_FALSE;
+ }
+
+ MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+ }
+
+ kal_mem_set(&sbp_tag, 0, sizeof(mcf_tlvota_sbp_tag_t));
+ sbp_tag.sbp_id = SBP_TAG_SBPID;
+ strncpy(sbp_tag.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
+ strncpy(sbp_tag.mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
+
+ for (i = 0; i < MAX_SIM_NUM; i++) {
+ kal_mem_set(&test_lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
+
+ 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));
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! ret(%d) \r\n", mcf_ret);
+ return KAL_FALSE;
+ }
+
+ if (kal_mem_cmp(&test_lid_buffer, &empty_buffer, sizeof(nvram_ef_mcf_test_struct)) != 0) {
+ mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag positive test (no matched tag) FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+ }
+
+ /*
+ * Read TLV-OTA by LID & sbp_tag positive test - no matched tag
+ * NVRAM_EF_MCF_TEST_OTA_LID with tag SBP_FULL_TAG (12_33_21), and user searches SBP_FULL_TAG (12_NA_NA)
+ */
+ for (i = 0; i < MAX_SIM_NUM; i++) {
+ tlvota_file = &(pMcf->tlvota_file[i]);
+
+ MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ if (tlvota_file) {
+ ret = mcf_ut_open_test_data("MCF_TLVOTA_SBP_full_ut_gid_normal.mcfopota", (kal_char *)(tlvota_file->buff), MCF_MAX_TLVOTA_FILE_SIZE);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_TLVOTA_SBP_full_ut_gid_normal.mcfopota");
+ return KAL_FALSE;
+ }
+
+ MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+ }
+
+ kal_mem_set(&sbp_tag, 0, sizeof(mcf_tlvota_sbp_tag_t));
+ sbp_tag.sbp_id = SBP_TAG_SBPID;
+ strncpy(sbp_tag.mcc, "", MAX_MCC_STR_LEN);
+ strncpy(sbp_tag.mnc, "", MAX_MNC_STR_LEN);
+
+ for (i = 0; i < MAX_SIM_NUM; i++) {
+ kal_mem_set(&test_lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
+
+ 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));
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! ret(%d) \r\n", mcf_ret);
+ return KAL_FALSE;
+ }
+
+ if (kal_mem_cmp(&test_lid_buffer, &empty_buffer, sizeof(nvram_ef_mcf_test_struct)) != 0) {
+ mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag positive test (no matched tag) FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+ }
+
+ /*
+ * Read TLV-OTA by LID & sbp_tag positive test - partially matched tag
+ * 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)
+ */
+ for (i = 0; i < MAX_SIM_NUM; i++) {
+ tlvota_file = &(pMcf->tlvota_file[i]);
+
+ MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ if (tlvota_file) {
+ 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);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_TLVOTA_SBP_no_sbpid_ut_gid_normal.mcfopota");
+ return KAL_FALSE;
+ }
+
+ MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+ }
+
+ kal_mem_set(&sbp_tag, 0, sizeof(mcf_tlvota_sbp_tag_t));
+ sbp_tag.sbp_id = SBP_ID_INVALID;
+ strncpy(sbp_tag.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
+ strncpy(sbp_tag.mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
+
+ for (i = 0; i < MAX_SIM_NUM; i++) {
+ kal_mem_set(&test_lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
+
+ 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));
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! ret(%d) \r\n", mcf_ret);
+ return KAL_FALSE;
+ }
+
+ if (kal_mem_cmp(&test_lid_buffer, &empty_buffer, sizeof(nvram_ef_mcf_test_struct)) != 0) {
+ mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag positive test (no matched tag) FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+ }
+
+ /*
+ * Read TLV-OTA by LID & sbp_tag positive test - partially matched tag
+ * NVRAM_EF_MCF_TEST_OTA_LID with tag SBP_PARTIAL_TAG (12_NA_NA), and user searches SBP_PARTIAL_TAG (12_NA_NA)
+ */
+ for (i = 0; i < MAX_SIM_NUM; i++) {
+ tlvota_file = &(pMcf->tlvota_file[i]);
+
+ MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ if (tlvota_file) {
+ 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);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_OPOTA_ut_gid_3d_array_bit_byte_SBP_partial.mcfopota");
+ return KAL_FALSE;
+ }
+
+ MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+ }
+
+ kal_mem_set(&sbp_tag, 0, sizeof(mcf_tlvota_sbp_tag_t));
+ sbp_tag.sbp_id = SBP_TAG_SBPID;
+ strncpy(sbp_tag.mcc, "NA", MAX_MCC_STR_LEN);
+ strncpy(sbp_tag.mnc, "NA", MAX_MNC_STR_LEN);
+
+ for (i = 0; i < MAX_SIM_NUM; i++) {
+ kal_mem_set(&test_lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
+
+ 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));
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! ret(%d) \r\n", mcf_ret);
+ return KAL_FALSE;
+ }
+
+ if (kal_mem_cmp(&test_lid_buffer, &mcf_ut_test_lid_value_new_pattern, sizeof(nvram_ef_mcf_test_struct)) != 0) {
+ mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag positive test (no matched tag) FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+ }
+
+ /*
+ * General OPOTA INVALID_FILE / OPOTA SUCCESS
+ * NVRAM_EF_MCF_TEST_OTA_LID with tag SBP_PARTIAL_TAG (12_NA_NA), and user searches SBP_PARTIAL_TAG (12_NA_NA)
+ */
+ tlvota_file = &(pMcf->general_tlvota_file);
+ kal_mem_set(tlvota_file->buff, 0, MCF_MAX_TLVOTA_FILE_SIZE);
+
+ for (i = 0; i < MAX_SIM_NUM; i++) {
+ tlvota_file = &(pMcf->tlvota_file[i]);
+
+ MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ if (tlvota_file) {
+ ret = mcf_ut_open_test_data("MCF_TLVOTA_SBP_partial_ut_gid_normal.mcfopota", (kal_char *)(tlvota_file->buff), MCF_MAX_TLVOTA_FILE_SIZE);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_TLVOTA_SBP_partial_ut_gid_normal.mcfopota");
+ return KAL_FALSE;
+ }
+
+ MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+ }
+
+ kal_mem_set(&sbp_tag, 0, sizeof(mcf_tlvota_sbp_tag_t));
+ sbp_tag.sbp_id = SBP_TAG_SBPID;
+ strncpy(sbp_tag.mcc, "NA", MAX_MCC_STR_LEN);
+ strncpy(sbp_tag.mnc, "NA", MAX_MNC_STR_LEN);
+
+ for (i = 0; i < MAX_SIM_NUM; i++) {
+ kal_mem_set(&test_lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
+
+ 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));
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! ret(%d) \r\n", mcf_ret);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_test_lid_value((kal_uint8 *)&test_lid_buffer);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag positive test (partially matched tag) FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+ }
+
+ /*
+ * General OPOTA SUCCESS / OPOTA INVALID_FILE
+ * 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)
+ */
+ for (i = 0; i < MAX_SIM_NUM; i++) {
+ tlvota_file = &(pMcf->tlvota_file[i]);
+ kal_mem_set(tlvota_file->buff, 0, MCF_MAX_TLVOTA_FILE_SIZE);
+ }
+ tlvota_file = &(pMcf->general_tlvota_file);
+
+ MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ if (tlvota_file) {
+ 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);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_TLVOTA_SBP_no_sbpid_ut_gid_normal.mcfopota");
+ return KAL_FALSE;
+ }
+
+ MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+
+
+ kal_mem_set(&sbp_tag, 0, sizeof(mcf_tlvota_sbp_tag_t));
+ sbp_tag.sbp_id = SBP_ID_INVALID;
+ strncpy(sbp_tag.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
+ strncpy(sbp_tag.mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
+
+
+ kal_mem_set(&test_lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
+
+ 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));
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! ret(%d) \r\n", mcf_ret);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_test_lid_value((kal_uint8 *)&test_lid_buffer);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag positive test (partially matched tag) FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+
+
+ MCF_UT_PASS();
+ return KAL_TRUE;
+}
+#endif
+
+#if !defined(__MTK_TARGET__)
+kal_bool mcf_ut_gid_reset_lid_full(void *p_param, kal_char *p_ret_err_str, kal_uint32 *p_ret_err_str_sz)
+{
+ mcf_t *pMcf = mcf_get_instance();
+ mcf_ota_file_t *ota_file = &(pMcf->ota_file);
+ mcf_tool_file_info_t *pFile = (mcf_tool_file_info_t *)(ota_file->buff);
+ nvram_ef_mcf_ota_file_info_struct nv_ota_file;
+ nvram_ef_mcf_sw_info_struct nv_sw_info;
+ nvram_ef_mcf_test_struct empty_buffer = {0};
+ mcf_ota_result_e mcf_ret;
+ kal_bool ret;
+ nvram_ef_mcf_test_struct test_lid_buffer;
+ kal_uint8 *lid_buffer;
+
+ mcf_ut_init();
+
+ /* Write MCF OTA file version to NVRAM */
+ kal_mem_set(&nv_ota_file, 0, sizeof(nvram_ef_mcf_ota_file_info_struct));
+ strncpy(nv_ota_file.path, MCF_FS_DEFAULT_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN);
+ strncpy(nv_ota_file.name, MCF_FS_DEFAULT_OTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN);
+ 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)) ) {
+ mcf_ut_format_err_str("Fail to write MCF OTA file info to NVRAM!!\r\n");
+ return KAL_FALSE;
+ }
+ kal_mem_set(&nv_sw_info, 0, sizeof(nvram_ef_mcf_sw_info_struct));
+ strncpy(nv_sw_info.last_update_file.sw_version, MCF_UT_SW_VERNO, MCF_FILE_MAX_SW_VERSION_LEN);
+ strncpy(nv_sw_info.last_update_file.gen_time, MCF_UT_GEN_TIME, MCF_FILE_MAX_GEN_TIME_LEN);
+ strcpy(nv_sw_info.last_update_file.path, "");
+ strcpy(nv_sw_info.last_update_file.name, "");
+ if ( !nvram_external_write_data(NVRAM_EF_MCF_SW_INFO_LID, 1, (kal_uint8 *)&nv_sw_info, sizeof(nvram_ef_mcf_sw_info_struct)) ) {
+ mcf_ut_format_err_str("Fail to write MCF sw info to NVRAM!!\r\n");
+ return KAL_FALSE;
+ }
+
+ /*
+ * Reset all LID positive
+ */
+ MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ if (ota_file) {
+ ret = mcf_ut_open_test_data("MCF_OTA_ut_gid_normal.mcfota", (kal_char *)(ota_file->buff), MCF_MAX_OTA_FILE_SIZE);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_OTA_ut_gid_normal.mcfota");
+ return KAL_FALSE;
+ }
+
+ MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Reset LID FAIL!! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+
+ mcf_ret = mcf_do_ota_full();
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Reset LID FAIL!! ret(%d) \r\n", mcf_ret);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_test_lid_value(NULL);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Reset LID FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+
+ MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ if (ota_file) {
+ ret = mcf_ut_open_test_data("MCF_OTA_QUERY_ut_gid_normal.mcfota", (kal_char *)(ota_file->buff), MCF_MAX_OTA_FILE_SIZE);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_OTA_QUERY_ut_gid_normal.mcfota");
+ return KAL_FALSE;
+ }
+
+ MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Read OTA by LID FAIL!! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+
+
+ mcf_ret = mcf_do_ota_full();
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Reset LID FAIL!! ret(%d) \r\n", mcf_ret);
+ return KAL_FALSE;
+ }
+
+
+ lid_buffer = (kal_uint8 *)get_ctrl_buffer(sizeof(nvram_ef_mcf_test_struct));
+ if ( !nvram_external_read_data(NVRAM_EF_MCF_TEST_OTA_LID, 1, lid_buffer, sizeof(nvram_ef_mcf_test_struct)) ) {
+ printf("Fail to read NVRAM_EF_MCF_TEST_OTA_LID!!\r\n");
+ ret = KAL_FALSE;
+ }
+
+ if (kal_mem_cmp(lid_buffer, &empty_buffer, sizeof(nvram_ef_mcf_test_struct)) != 0) {
+ mcf_ut_format_err_str("Reset LID record 1 FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+
+ free_ctrl_buffer_set_null(lid_buffer);
+
+
+ kal_mem_set(&test_lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
+
+ 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));
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Reset LID Read OTA by LID FAIL!! ret(%d) \r\n", mcf_ret);
+ return KAL_FALSE;
+ }
+
+
+ ret = mcf_check_test_lid_value((kal_uint8 *)&test_lid_buffer);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Reset LID New OTA apply FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+
+ /*
+ * Reset all LID negative
+ */
+ MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ if (ota_file) {
+ ret = mcf_ut_open_test_data("MCF_OTA_ut_gid_normal.mcfota", (kal_char *)(ota_file->buff), MCF_MAX_OTA_FILE_SIZE);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_OTA_ut_gid_normal.mcfota");
+ return KAL_FALSE;
+ }
+
+ MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Reset LID FAIL!! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+
+ pFile->operation_mask |= MCF_FILE_OP_NOT_RESET_LID;
+
+ mcf_ret = mcf_do_ota_full();
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Reset LID FAIL!! ret(%d) \r\n", mcf_ret);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_test_lid_value(NULL);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Reset LID FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+
+ MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ if (ota_file) {
+ ret = mcf_ut_open_test_data("MCF_OTA_QUERY_ut_gid_normal.mcfota", (kal_char *)(ota_file->buff), MCF_MAX_OTA_FILE_SIZE);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_OTA_QUERY_ut_gid_normal.mcfota");
+ return KAL_FALSE;
+ }
+
+ MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Read OTA by LID FAIL!! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+
+ pFile->operation_mask |= MCF_FILE_OP_NOT_RESET_LID;
+
+ mcf_ret = mcf_do_ota_full();
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Reset LID FAIL!! ret(%d) \r\n", mcf_ret);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_test_lid_value(NULL);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Reset LID New OTA apply FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+
+
+ kal_mem_set(&test_lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
+
+ 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));
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Reset LID Read OTA by LID FAIL!! ret(%d) \r\n", mcf_ret);
+ return KAL_FALSE;
+ }
+
+
+ ret = mcf_check_test_lid_value((kal_uint8 *)&test_lid_buffer);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Reset LID New OTA apply FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+
+ MCF_UT_PASS();
+ return KAL_TRUE;
+}
+#endif
+
+kal_bool mcf_ut_em_update_req_hdlr(void *p_param, kal_char *p_ret_err_str, kal_uint32 *p_ret_err_str_sz)
+{
+ mcf_t *pMcf = mcf_get_instance();
+ l4cps_em_update_req_struct req;
+ kal_bool ret;
+
+ mcf_ut_init();
+
+ /*
+ * EM update request handler positive test - ON
+ */
+ com_Mcf.is_em_on = KAL_FALSE;
+ req.em_src = EM_FROM_ELT;
+ req.info_request[MCF_EM_OTA_FILE_INFO] = EM_ON;
+
+ ret = mcf_em_update_req_hdlr((local_para_struct *)&req);
+ if ( (ret != KAL_TRUE) && (com_Mcf.is_em_on != KAL_TRUE) ) {
+ mcf_ut_format_err_str("EM update request handler positive test (ON) FAIL!! \r\n");
+ return KAL_FALSE;
+ }
+
+ /*
+ * EM update request handler positive test - OFF
+ */
+ com_Mcf.is_em_on = KAL_TRUE;
+ req.em_src = EM_FROM_ELT;
+ req.info_request[MCF_EM_OTA_FILE_INFO] = EM_OFF;
+
+ ret = mcf_em_update_req_hdlr((local_para_struct *)&req);
+ if ( (ret != KAL_TRUE) && (com_Mcf.is_em_on != KAL_FALSE) ) {
+ mcf_ut_format_err_str("EM update request handler positive test (OFF) FAIL!! \r\n");
+ return KAL_FALSE;
+ }
+
+ /*
+ * EM update request handler positive test - No change
+ */
+ com_Mcf.is_em_on = KAL_TRUE;
+ req.em_src = EM_FROM_ELT;
+ req.info_request[MCF_EM_OTA_FILE_INFO] = EM_NC;
+
+ ret = mcf_em_update_req_hdlr((local_para_struct *)&req);
+ if ( (ret != KAL_TRUE) && (com_Mcf.is_em_on != KAL_TRUE) ) {
+ mcf_ut_format_err_str("EM update request handler positive test (No change) FAIL!! \r\n");
+ return KAL_FALSE;
+ }
+
+ /*
+ * EM update request handler positive test - Invalid operation
+ */
+ com_Mcf.is_em_on = KAL_TRUE;
+ req.em_src = EM_FROM_ELT;
+ req.info_request[MCF_EM_OTA_FILE_INFO] = 0xFF;
+
+ ret = mcf_em_update_req_hdlr((local_para_struct *)&req);
+ if (ret != KAL_FALSE) {
+ mcf_ut_format_err_str("EM update request handler positive test (Invalid operation) FAIL!! \r\n");
+ return KAL_FALSE;
+ }
+
+ /*
+ * EM update request handler positive test - Invalid EM source
+ */
+ com_Mcf.is_em_on = KAL_TRUE;
+ req.em_src = EM_FROM_RMMI;
+ req.info_request[MCF_EM_OTA_FILE_INFO] = EM_OFF;
+
+ ret = mcf_em_update_req_hdlr((local_para_struct *)&req);
+ if (ret != KAL_FALSE) {
+ mcf_ut_format_err_str("EM update request handler positive test (Invalid EM source) FAIL!! \r\n");
+ return KAL_FALSE;
+ }
+
+
+ MCF_UT_PASS();
+ return KAL_TRUE;
+}
+
+#if defined(__MCF_FIND_TAG_SUPPORT__)
+kal_bool mcf_ut_find_tag(void *p_param, kal_char *p_ret_err_str, kal_uint32 *p_ret_err_str_sz)
+{
+ kal_bool ret;
+ kal_uint16 byte_offset, bit_offset;
+ kal_uint32 size;
+ mcf_tag_info_struct unuse;
+ MCF_DB_STRUCT_VARIABLE const *unuse_db_ptr = NULL;
+ kal_char tag[64];
+
+ // INT
+ kal_mem_set(tag, 0, 64);
+ strcpy(tag, "VAL_BYTE_11");
+ ret = mcf_find_tag_offset(4098, tag, &byte_offset, &bit_offset, &size, &unuse_db_ptr, &unuse);
+ if(ret != KAL_TRUE || byte_offset != 0 || bit_offset != 0 || size != 1)
+ return KAL_FALSE;
+
+ // BIT
+ kal_mem_set(tag, 0, 64);
+ strcpy(tag, "VAL_BIT_BYTE_11.B1");
+ ret = mcf_find_tag_offset(4098, tag, &byte_offset, &bit_offset, &size, &unuse_db_ptr, &unuse);
+ if(ret != KAL_TRUE || byte_offset != 2 || bit_offset != 0 || size != 1)
+ return KAL_FALSE;
+
+ kal_mem_set(tag, 0, 64);
+ strcpy(tag, "VAL_BIT_BYTE_11.B4");
+ ret = mcf_find_tag_offset(4098, tag, &byte_offset, &bit_offset, &size, &unuse_db_ptr, &unuse);
+ if(ret != KAL_TRUE || byte_offset != 2 || bit_offset != 3 || size != 1)
+ return KAL_FALSE;
+
+ kal_mem_set(tag, 0, 64);
+ strcpy(tag, "VAL_BIT_BYTE_12.F4B");
+ ret = mcf_find_tag_offset(4098, tag, &byte_offset, &bit_offset, &size, &unuse_db_ptr, &unuse);
+ if(ret != KAL_TRUE || byte_offset != 3 || bit_offset != 0 || size != 4)
+ return KAL_FALSE;
+
+ kal_mem_set(tag, 0, 64);
+ strcpy(tag, "VAL_BIT_BYTE_12.L4B");
+ ret = mcf_find_tag_offset(4098, tag, &byte_offset, &bit_offset, &size, &unuse_db_ptr, &unuse);
+ if(ret != KAL_TRUE || byte_offset != 3 || bit_offset != 4 || size != 4)
+ return KAL_FALSE;
+
+ kal_mem_set(tag, 0, 64);
+ strcpy(tag, "VAL_DOUBLE_1");
+ ret = mcf_find_tag_offset(4098, tag, &byte_offset, &bit_offset, &size, &unuse_db_ptr, &unuse);
+ if(ret != KAL_TRUE || byte_offset != 24 || bit_offset != 0 || size != 8)
+ return KAL_FALSE;
+
+ // array
+ kal_mem_set(tag, 0, 64);
+ strcpy(tag, "VAL_BUFFER_1");
+ ret = mcf_find_tag_offset(4098, tag, &byte_offset, &bit_offset, &size, &unuse_db_ptr, &unuse);
+ if(ret != KAL_TRUE || byte_offset != 32 || bit_offset != 0 || size != 32)
+ return KAL_FALSE;
+
+ kal_mem_set(tag, 0, 64);
+ strcpy(tag, "VAL_BUFFER_1[0]");
+ ret = mcf_find_tag_offset(4098, tag, &byte_offset, &bit_offset, &size, &unuse_db_ptr, &unuse);
+ if(ret != KAL_TRUE || byte_offset != 32 || bit_offset != 0 || size != 1)
+ return KAL_FALSE;
+
+ kal_mem_set(tag, 0, 64);
+ strcpy(tag, "VAL_BUFFER_1[10]");
+ ret = mcf_find_tag_offset(4098, tag, &byte_offset, &bit_offset, &size, &unuse_db_ptr, &unuse);
+ if(ret != KAL_TRUE || byte_offset != 42 || bit_offset != 0 || size != 1)
+ return KAL_FALSE;
+
+ // struct
+ kal_mem_set(tag, 0, 64);
+ strcpy(tag, "VAL_STRUCT_1.VBYTE1");
+ ret = mcf_find_tag_offset(4098, tag, &byte_offset, &bit_offset, &size, &unuse_db_ptr, &unuse);
+ if(ret != KAL_TRUE || byte_offset != 64 || bit_offset != 0 || size != 1)
+ return KAL_FALSE;
+
+ kal_mem_set(tag, 0, 64);
+ strcpy(tag, "VAL_STRUCT_1.VDOUBLE");
+ ret = mcf_find_tag_offset(4098, tag, &byte_offset, &bit_offset, &size, &unuse_db_ptr, &unuse);
+ if(ret != KAL_TRUE || byte_offset != 88 || bit_offset != 0 || size != 8)
+ return KAL_FALSE;
+
+ kal_mem_set(tag, 0, 64);
+ strcpy(tag, "VAL_STRUCT_1.VBUFFER");
+ ret = mcf_find_tag_offset(4098, tag, &byte_offset, &bit_offset, &size, &unuse_db_ptr, &unuse);
+ if(ret != KAL_TRUE || byte_offset != 96 || bit_offset != 0 || size != 32)
+ return KAL_FALSE;
+
+ kal_mem_set(tag, 0, 64);
+ strcpy(tag, "VAL_STRUCT_1.VBUFFER[31]");
+ ret = mcf_find_tag_offset(4098, tag, &byte_offset, &bit_offset, &size, &unuse_db_ptr, &unuse);
+ if(ret != KAL_TRUE || byte_offset != 127 || bit_offset != 0 || size != 1)
+ return KAL_FALSE;
+
+ kal_mem_set(tag, 0, 64);
+ strcpy(tag, "VAL_STRUCT_3[0].VBUFFER[0]");
+ ret = mcf_find_tag_offset(4098, tag, &byte_offset, &bit_offset, &size, &unuse_db_ptr, &unuse);
+ if(ret != KAL_TRUE || byte_offset != 896 || bit_offset != 0 || size != 1)
+ return KAL_FALSE;
+
+ kal_mem_set(tag, 0, 64);
+ strcpy(tag, "VAL_STRUCT_3.VBUFFER[0]");
+ ret = mcf_find_tag_offset(4098, tag, &byte_offset, &bit_offset, &size, &unuse_db_ptr, &unuse);
+ if(ret != KAL_TRUE || byte_offset != 896 || bit_offset != 0 || size != 1)
+ return KAL_FALSE;
+
+ kal_mem_set(tag, 0, 64);
+ strcpy(tag, "VAL_STRUCT_3[0].VBUFFER");
+ ret = mcf_find_tag_offset(4098, tag, &byte_offset, &bit_offset, &size, &unuse_db_ptr, &unuse);
+ if(ret != KAL_TRUE || byte_offset != 896 || bit_offset != 0 || size != 32)
+ return KAL_FALSE;
+
+ kal_mem_set(tag, 0, 64);
+ strcpy(tag, "VAL_STRUCT_3[3].VBUFFER[0]");
+ ret = mcf_find_tag_offset(4098, tag, &byte_offset, &bit_offset, &size, &unuse_db_ptr, &unuse);
+ if(ret != KAL_TRUE || byte_offset != 2000 || bit_offset != 0 || size != 1)
+ return KAL_FALSE;
+
+ kal_mem_set(tag, 0, 64);
+ strcpy(tag, "VAL_STRUCT_3[3].VBUFFER[3]");
+ ret = mcf_find_tag_offset(4098, tag, &byte_offset, &bit_offset, &size, &unuse_db_ptr, &unuse);
+ if(ret != KAL_TRUE || byte_offset != 2003 || bit_offset != 0 || size != 1)
+ return KAL_FALSE;
+
+ kal_mem_set(tag, 0, 64);
+ strcpy(tag, "VAL_STRUCT_3[0].ARRAY_D[0][0][0]");
+ ret = mcf_find_tag_offset(4098, tag, &byte_offset, &bit_offset, &size, &unuse_db_ptr, &unuse);
+ if(ret != KAL_TRUE || byte_offset != 928 || bit_offset != 0 || size != 1)
+ return KAL_FALSE;
+
+ kal_mem_set(tag, 0, 64);
+ strcpy(tag, "VAL_STRUCT_3[0].ARRAY_D[4][3][2]");
+ ret = mcf_find_tag_offset(4098, tag, &byte_offset, &bit_offset, &size, &unuse_db_ptr, &unuse);
+ if(ret != KAL_TRUE || byte_offset != 987 || bit_offset != 0 || size != 1)
+ return KAL_FALSE;
+
+ kal_mem_set(tag, 0, 64);
+ strcpy(tag, "VAL_STRUCT_3[3].ARRAY_D[0][0][0]");
+ ret = mcf_find_tag_offset(4098, tag, &byte_offset, &bit_offset, &size, &unuse_db_ptr, &unuse);
+ if(ret != KAL_TRUE || byte_offset != 2032 || bit_offset != 0 || size != 1)
+ return KAL_FALSE;
+
+ kal_mem_set(tag, 0, 64);
+ strcpy(tag, "VAL_STRUCT_3[3].ARRAY_D[4][3][2]");
+ ret = mcf_find_tag_offset(4098, tag, &byte_offset, &bit_offset, &size, &unuse_db_ptr, &unuse);
+ if(ret != KAL_TRUE || byte_offset != 2091 || bit_offset != 0 || size != 1)
+ return KAL_FALSE;
+
+ kal_mem_set(tag, 0, 64);
+ strcpy(tag, "VAL_STRUCT_3[3].ARRAY_D4[0][0][2]");
+ ret = mcf_find_tag_offset(4098, tag, &byte_offset, &bit_offset, &size, &unuse_db_ptr, &unuse);
+ if(ret != KAL_TRUE || byte_offset != 2100 || bit_offset != 0 || size != 4)
+ return KAL_FALSE;
+
+ kal_mem_set(tag, 0, 64);
+ strcpy(tag, "VAL_STRUCT_3[3].ARRAY_D4[4][3][2]");
+ ret = mcf_find_tag_offset(4098, tag, &byte_offset, &bit_offset, &size, &unuse_db_ptr, &unuse);
+ if(ret != KAL_TRUE || byte_offset != 2328 || bit_offset != 0 || size != 4)
+ return KAL_FALSE;
+
+ // can not find tag
+ kal_mem_set(tag, 0, 64);
+ strcpy(tag, "XXX");
+ ret = mcf_find_tag_offset(4098, tag, &byte_offset, &bit_offset, &size, &unuse_db_ptr, &unuse);
+ if(ret != KAL_FALSE)
+ return KAL_FALSE;
+
+
+ MCF_UT_PASS();
+ return KAL_TRUE;
+}
+#endif
+
+#if defined(__MCF_FIND_GID_SUPPORT__)
+kal_bool mcf_ut_find_gid(void *p_param, kal_char *p_ret_err_str, kal_uint32 *p_ret_err_str_sz)
+{
+ kal_bool ret = KAL_FALSE;
+ kal_uint16 lid_num;
+ kal_uint16 byte_offset;
+ kal_int16 bit_offset;
+ kal_uint32 size;
+ kal_bool is_bit;
+
+ // val_byte_11
+ ret = mcf_find_gid_offset(MCF_TEST_OTA_LID_BASE_GID + 44, "", &lid_num, &byte_offset, &bit_offset, &size, &is_bit);
+ if(ret!= KAL_TRUE || lid_num != 4098 || byte_offset != 0 || bit_offset != -1 || size !=1 || is_bit != KAL_FALSE) return KAL_FALSE;
+
+ // val_bit_2byte_3.F2b
+ ret = mcf_find_gid_offset(MCF_TEST_OTA_LID_BASE_GID + 1, "", &lid_num, &byte_offset, &bit_offset, &size, &is_bit);
+ if(ret!= KAL_TRUE || lid_num != 4098 || byte_offset != 2336 || bit_offset != 8 || size != 2 || is_bit != KAL_TRUE) return KAL_FALSE;
+
+ // val_buffer_2[]
+ ret = mcf_find_gid_offset(MCF_TEST_OTA_LID_BASE_GID + 43, "0$", &lid_num, &byte_offset, &bit_offset, &size, &is_bit);
+ if(ret!= KAL_TRUE || lid_num != 4098 || byte_offset != 464 || bit_offset != -1 && size != 1 || is_bit != KAL_FALSE) return KAL_FALSE;
+ ret = mcf_find_gid_offset(MCF_TEST_OTA_LID_BASE_GID + 43, "1$", &lid_num, &byte_offset, &bit_offset, &size, &is_bit);
+ if(ret!= KAL_TRUE || lid_num != 4098 || byte_offset != 465 || bit_offset != -1 && size != 1 || is_bit != KAL_FALSE) return KAL_FALSE;
+ ret = mcf_find_gid_offset(MCF_TEST_OTA_LID_BASE_GID + 43, "31$", &lid_num, &byte_offset, &bit_offset, &size, &is_bit);
+ if(ret!= KAL_TRUE || lid_num != 4098 || byte_offset != 495 || bit_offset != -1 && size != 1 || is_bit != KAL_FALSE) return KAL_FALSE;
+
+ //val_struct_3[x].array_d[x][x][x]
+ 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);
+ if(ret!= KAL_TRUE || lid_num != 4098 || byte_offset != 928 || bit_offset != -1 && size != 1 || is_bit != KAL_FALSE) return KAL_FALSE;
+ 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);
+ if(ret!= KAL_TRUE || lid_num != 4098 || byte_offset != 987 || bit_offset != -1 && size != 1 || is_bit != KAL_FALSE) return KAL_FALSE;
+ 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);
+ if(ret!= KAL_TRUE || lid_num != 4098 || byte_offset != 1664 || bit_offset != -1 && size != 1 || is_bit != KAL_FALSE) return KAL_FALSE;
+ 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);
+ if(ret!= KAL_TRUE || lid_num != 4098 || byte_offset != 2091 || bit_offset != -1 && size != 1 || is_bit != KAL_FALSE) return KAL_FALSE;
+
+ // val_struct_3[x].vbit_byte1.b8
+ ret = mcf_find_gid_offset(MCF_TEST_OTA_LID_BASE_GID + 116, "2$", &lid_num, &byte_offset, &bit_offset, &size, &is_bit);
+ if(ret!= KAL_TRUE || lid_num != 4098 || byte_offset != 1602 || bit_offset != 7 || size != 1 || is_bit != KAL_TRUE) return KAL_FALSE;
+ // val_struct_3[x].vbit_byte2.F4b
+ ret = mcf_find_gid_offset(MCF_TEST_OTA_LID_BASE_GID + 118, "2$", &lid_num, &byte_offset, &bit_offset, &size, &is_bit);
+ if(ret!= KAL_TRUE || lid_num != 4098 || byte_offset != 1603 || bit_offset != 0 || size != 4 || is_bit != KAL_TRUE) return KAL_FALSE;
+ // val_struct_3[x].vbit_byte2.L4b
+ ret = mcf_find_gid_offset(MCF_TEST_OTA_LID_BASE_GID + 119, "2$", &lid_num, &byte_offset, &bit_offset, &size, &is_bit);
+ if(ret!= KAL_TRUE || lid_num != 4098 || byte_offset != 1603 || bit_offset != 4 || size != 4 || is_bit != KAL_TRUE) return KAL_FALSE;
+
+ // val_struct_1.vbuffer[]
+ ret = mcf_find_gid_offset(MCF_TEST_OTA_LID_BASE_GID + 74, "0$", &lid_num, &byte_offset, &bit_offset, &size, &is_bit);
+ if(ret!= KAL_TRUE || lid_num != 4098 || byte_offset != 96 || bit_offset != -1 || size != 1 || is_bit != KAL_FALSE) return KAL_FALSE;
+ ret = mcf_find_gid_offset(MCF_TEST_OTA_LID_BASE_GID + 74, "31$", &lid_num, &byte_offset, &bit_offset, &size, &is_bit);
+ if(ret!= KAL_TRUE || lid_num != 4098 || byte_offset != 127 || bit_offset != -1 || size != 1 || is_bit != KAL_FALSE) return KAL_FALSE;
+
+ // val_struct_1.array_d4[][][]
+ ret = mcf_find_gid_offset(MCF_TEST_OTA_LID_BASE_GID + 61, "0$0$0$", &lid_num, &byte_offset, &bit_offset, &size, &is_bit);
+ if(ret!= KAL_TRUE || lid_num != 4098 || byte_offset != 188 || bit_offset != -1 || size != 4 || is_bit != KAL_FALSE) return KAL_FALSE;
+ ret = mcf_find_gid_offset(MCF_TEST_OTA_LID_BASE_GID + 61, "4$3$2$", &lid_num, &byte_offset, &bit_offset, &size, &is_bit);
+ if(ret!= KAL_TRUE || lid_num != 4098 || byte_offset != 424 || bit_offset != -1 || size != 4 || is_bit != KAL_FALSE) return KAL_FALSE;
+
+ // val_struct_1.array_d[][][]
+ ret = mcf_find_gid_offset(MCF_TEST_OTA_LID_BASE_GID + 60, "0$0$0$", &lid_num, &byte_offset, &bit_offset, &size, &is_bit);
+ if(ret!= KAL_TRUE || lid_num != 4098 || byte_offset != 128 || bit_offset != -1 || size != 1 || is_bit != KAL_FALSE) return KAL_FALSE;
+ ret = mcf_find_gid_offset(MCF_TEST_OTA_LID_BASE_GID + 60, "4$3$2$", &lid_num, &byte_offset, &bit_offset, &size, &is_bit);
+ if(ret!= KAL_TRUE || lid_num != 4098 || byte_offset != 187 || bit_offset != -1 || size != 1 || is_bit != KAL_FALSE) return KAL_FALSE;
+
+ MCF_UT_PASS();
+ return KAL_TRUE;
+}
+#endif
+
+kal_bool mcf_ut_mcf_encrypt_decrypt(void *p_param, kal_char *p_ret_err_str, kal_uint32 *p_ret_err_str_sz)
+{
+ kal_char password[] = "MTKTEST";
+ kal_bool ret = KAL_FALSE;
+ kal_char content[192] = {0};
+ kal_uint32 content_length = 0;
+ 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.";
+
+
+ strcpy(content, test_data);
+ content_length = (strlen(test_data) + 0xF & ~0xF); // 16B alignment
+
+ // CASE1 : AES128 test
+ ret = mcf_encrypt_128bit(password, content, content_length);
+ if(ret == KAL_FALSE) return KAL_FALSE;
+ ret = mcf_decrypt_128bit(password, content, content_length);
+ if(ret == KAL_FALSE) return KAL_FALSE;
+
+ if(strcmp(content, test_data) != 0) return KAL_FALSE;
+
+ // CASE2 : AES256 test
+ ret = mcf_encrypt_256bit(password, content, content_length);
+ if(ret == KAL_FALSE) return KAL_FALSE;
+ ret = mcf_decrypt_256bit(password, content, content_length);
+ if(ret == KAL_FALSE) return KAL_FALSE;
+
+ if(strcmp(content, test_data) != 0) return KAL_FALSE;
+
+ MCF_UT_PASS();
+ return KAL_TRUE;
+}
+
+kal_bool mcf_ut_find_ini_item(void *p_param, kal_char *p_ret_err_str, kal_uint32 *p_ret_err_str_sz)
+{
+ mcf_t *pMcf = mcf_get_instance();
+ mcf_ini_file_t *ini_file;
+ kal_bool ret;
+ kal_char value[64];
+ kal_char tag[64];
+
+ mcf_ut_init();
+
+ ini_file = &(pMcf->ini_file);
+
+ //kal_mem_set(&ini_file, 0, sizeof(mcf_ini_file_t));
+ /*
+ * Read ini positive test
+ */
+
+ ret = mcf_ut_open_test_data("MTK_MD_OTA_CONFIG.ini", (kal_char *)(ini_file->buff), MCF_MAX_INI_FILE_SIZE);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MTK_MD_OTA_CONFIG.ini");
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(value, 0, 64);
+ kal_mem_set(tag, 0, 64);
+ strcpy(tag, "AP_Monitor_Time");
+
+ if (mcf_find_ini_item((kal_char *)ini_file->buff, tag, value, pMcf) != KAL_TRUE) {
+ mcf_ut_format_err_str("Read ini file FAIL!! item(%s) \r\n", tag);
+ return KAL_FALSE;
+ }
+
+ if(strcmp(value,"120") != 0){
+ mcf_ut_format_err_str("Read ini file positive test FAIL!!\r\n");
+ //return KAL_FALSE;
+ }
+
+ kal_mem_set(value, 0, 64);
+ kal_mem_set(tag, 0, 64);
+ strcpy(tag, "TagName");
+
+ if (mcf_find_ini_item((kal_char *)ini_file->buff, tag, value, pMcf) != KAL_TRUE) {
+ mcf_ut_format_err_str("Read ini file FAIL!! item(%s) \r\n", tag);
+ return KAL_FALSE;
+ }
+
+ if(strcmp(value,"108_466_97,1_460_NA,1_460_02") != 0){
+ mcf_ut_format_err_str("Read ini file positive test FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(value, 0, 64);
+ kal_mem_set(tag, 0, 64);
+ strcpy(tag, "AP_Monitor_Time");
+
+ if (mcf_find_ini_item((kal_char *)ini_file->buff, tag, value, pMcf) != KAL_TRUE) {
+ mcf_ut_format_err_str("Read ini file FAIL!! item(%s) \r\n", tag);
+ return KAL_FALSE;
+ }
+
+ if(strcmp(value,"120") != 0){
+ mcf_ut_format_err_str("Read ini file positive test FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(value, 0, 64);
+ kal_mem_set(tag, 0, 64);
+ strcpy(tag, "Gen_Time");
+
+ if (mcf_find_ini_item((kal_char *)ini_file->buff, tag, value, pMcf) != KAL_TRUE) {
+ mcf_ut_format_err_str("Read ini file FAIL!! item(%s) \r\n", tag);
+ return KAL_FALSE;
+ }
+
+ if(strcmp(value,"2018.1025.120000") != 0){
+ mcf_ut_format_err_str("Read ini file positive test FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+
+ /*
+ * Read ini positive test --- don't care uppercase
+ */
+
+ kal_mem_set(value, 0, 64);
+ kal_mem_set(tag, 0, 64);
+ strcpy(tag, "GeN_TIme");
+
+ if (mcf_find_ini_item((kal_char *)ini_file->buff, tag, value, pMcf) != KAL_TRUE) {
+ mcf_ut_format_err_str("Read ini file FAIL!! item(%s) \r\n", tag);
+ return KAL_FALSE;
+ }
+
+ if(strcmp(value,"2018.1025.120000") != 0){
+ mcf_ut_format_err_str("Read ini file positive test FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(value, 0, 64);
+ kal_mem_set(tag, 0, 64);
+ strcpy(tag, "GEN_TIME");
+
+ if (mcf_find_ini_item((kal_char *)ini_file->buff, tag, value, pMcf) != KAL_TRUE) {
+ mcf_ut_format_err_str("Read ini file FAIL!! item(%s) \r\n", tag);
+ return KAL_FALSE;
+ }
+
+ if(strcmp(value,"2018.1025.120000") != 0){
+ mcf_ut_format_err_str("Read ini file positive test FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(value, 0, 64);
+ kal_mem_set(tag, 0, 64);
+ strcpy(tag, "gen_time");
+
+ if (mcf_find_ini_item((kal_char *)ini_file->buff, tag, value, pMcf) != KAL_TRUE) {
+ mcf_ut_format_err_str("Read ini file FAIL!! item(%s) \r\n", tag);
+ return KAL_FALSE;
+ }
+
+ if(strcmp(value,"2018.1025.120000") != 0){
+ mcf_ut_format_err_str("Read ini file positive test FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+
+ /*
+ * Read ini positive test --- don't care space
+ */
+ kal_mem_set(value, 0, 64);
+ kal_mem_set(tag, 0, 64);
+ strcpy(tag, "g e n_ tim e");
+
+ if (mcf_find_ini_item((kal_char *)ini_file->buff, tag, value, pMcf) != KAL_TRUE) {
+ mcf_ut_format_err_str("Read ini file FAIL!! item(%s) \r\n", tag);
+ return KAL_FALSE;
+ }
+
+ if(strcmp(value,"2018.1025.120000") != 0){
+ mcf_ut_format_err_str("Read ini file positive test FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(value, 0, 64);
+ kal_mem_set(tag, 0, 64);
+ strcpy(tag, "gen _ time");
+
+ if (mcf_find_ini_item((kal_char *)ini_file->buff, tag, value, pMcf) != KAL_TRUE) {
+ mcf_ut_format_err_str("Read ini file FAIL!! item(%s) \r\n", tag);
+ return KAL_FALSE;
+ }
+
+ if(strcmp(value,"2018.1025.120000") != 0){
+ mcf_ut_format_err_str("Read ini file positive test FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(value, 0, 64);
+ kal_mem_set(tag, 0, 64);
+ strcpy(tag, "AP _Monitor_Time");
+
+ if (mcf_find_ini_item((kal_char *)ini_file->buff, tag, value, pMcf) != KAL_TRUE) {
+ mcf_ut_format_err_str("Read ini file FAIL!! item(%s) \r\n", tag);
+ return KAL_FALSE;
+ }
+
+ if(strcmp(value,"120") != 0){
+ mcf_ut_format_err_str("Read ini file positive test FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+
+ /*
+ * Read ini negative test
+ */
+
+ kal_mem_set(value, 0, 64);
+ kal_mem_set(tag, 0, 64);
+ strcpy(tag, "Critical");
+
+ if (mcf_find_ini_item((kal_char *)ini_file->buff, tag, value, pMcf) == KAL_TRUE) {
+ mcf_ut_format_err_str("Read OTA by LID FAIL!! \r\n");
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(value, 0, 64);
+ kal_mem_set(tag, 0, 64);
+ strcpy(tag, "Config");
+
+ if (mcf_find_ini_item((kal_char *)ini_file->buff, tag, value, pMcf) == KAL_TRUE) {
+ mcf_ut_format_err_str("Read OTA by LID FAIL!! \r\n");
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(value, 0, 64);
+ kal_mem_set(tag, 0, 64);
+ strcpy(tag, "GenTime");
+
+ if (mcf_find_ini_item((kal_char *)ini_file->buff, tag, value, pMcf) == KAL_TRUE) {
+ mcf_ut_format_err_str("Read OTA by LID FAIL!! \r\n");
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(value, 0, 64);
+ kal_mem_set(tag, 0, 64);
+ strcpy(tag, "Tag_Name");
+
+ if (mcf_find_ini_item((kal_char *)ini_file->buff, tag, value, pMcf) == KAL_TRUE) {
+ mcf_ut_format_err_str("Read OTA by LID FAIL!! \r\n");
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(value, 0, 64);
+ kal_mem_set(tag, 0, 64);
+ strcpy(tag, "108");
+
+ if (mcf_find_ini_item((kal_char *)ini_file->buff, tag, value, pMcf) == KAL_TRUE) {
+ mcf_ut_format_err_str("Read OTA by LID FAIL!! \r\n");
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(value, 0, 64);
+ kal_mem_set(tag, 0, 64);
+ strcpy(tag, "0000");
+
+ if (mcf_find_ini_item((kal_char *)ini_file->buff, tag, value, pMcf) == KAL_TRUE) {
+ mcf_ut_format_err_str("Read OTA by LID FAIL!! \r\n");
+ return KAL_FALSE;
+ }
+
+
+ MCF_UT_PASS();
+ return KAL_TRUE;
+}
+
+kal_bool mcf_ut_find_ini_sbp_id(void *p_param, kal_char *p_ret_err_str, kal_uint32 *p_ret_err_str_sz)
+{
+ kal_uint32 sbp_id[200];
+ kal_uint16 sbp_id_num = 0;
+ kal_uint16 i = 0;
+ kal_uint32 sbp_id_ans[5]={108,1};
+ kal_bool general = KAL_FALSE;
+ kal_char tag[64];
+
+ mcf_ut_init();
+
+ /*
+ * Read ini positive test
+ */
+
+ kal_mem_set(tag, 0, 64);
+ strcpy(tag, "108_466_97,1_460_NA,1_460_02");
+ if (mcf_find_ini_sbp_id(tag, sbp_id, &sbp_id_num, &general) != KAL_TRUE) {
+ mcf_ut_format_err_str("Find ini file sbp id FAIL!! item(%s) \r\n", tag);
+ return KAL_FALSE;
+ }
+
+
+
+
+ for (i = 0; i < sbp_id_num; i++){
+ if (sbp_id[i] != sbp_id_ans[i]){
+ 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]);
+ return KAL_FALSE;
+ }
+ }
+
+ kal_mem_set(tag, 0, 64);
+ strcpy(tag, "108_466_97,1_460_NA,1_460_02,1_450_01,1_10_1");
+ if (mcf_find_ini_sbp_id(tag, sbp_id, &sbp_id_num, &general) != KAL_TRUE) {
+ mcf_ut_format_err_str("Find ini file sbp id FAIL!! item(%s) \r\n", tag);
+ return KAL_FALSE;
+ }
+
+
+
+ for (i = 0; i < sbp_id_num; i++){
+ if (sbp_id[i] != sbp_id_ans[i]){
+ 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]);
+ return KAL_FALSE;
+ }
+ }
+ kal_mem_set(tag, 0, 64);
+ strcpy(tag, "108_470_97,108_466_97,1_460_NA,1_460_02");
+ if (mcf_find_ini_sbp_id(tag, sbp_id, &sbp_id_num, &general) != KAL_TRUE) {
+ mcf_ut_format_err_str("Find ini file sbp id FAIL!! item(%s) \r\n", tag);
+ return KAL_FALSE;
+ }
+
+
+
+ for (i = 0; i < sbp_id_num; i++){
+ if (sbp_id[i] != sbp_id_ans[i]){
+ 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]);
+ return KAL_FALSE;
+ }
+ }
+
+ kal_mem_set(tag, 0, 64);
+ strcpy(tag, "108_470_97,108_466_97,1_460_NA,1_460_02,");
+ if (mcf_find_ini_sbp_id(tag, sbp_id, &sbp_id_num, &general) != KAL_TRUE) {
+ mcf_ut_format_err_str("Find ini file sbp id FAIL!! item(%s) \r\n", tag);
+ return KAL_FALSE;
+ }
+
+
+
+ for (i = 0; i < sbp_id_num; i++){
+ if (sbp_id[i] != sbp_id_ans[i]){
+ 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]);
+ return KAL_FALSE;
+ }
+ }
+
+ kal_mem_set(tag, 0, 64);
+ strcpy(tag, "108_470_97,108_466_97,105_25_43,5_470_123,5_460_NA,1_460_NA,1_460_02");
+ if (mcf_find_ini_sbp_id(tag, sbp_id, &sbp_id_num, &general) != KAL_TRUE) {
+ mcf_ut_format_err_str("Find ini file sbp id FAIL!! item(%s) \r\n", tag);
+ return KAL_FALSE;
+ }
+
+
+ sbp_id_ans[0]=108; sbp_id_ans[1]=105; sbp_id_ans[2]=5; sbp_id_ans[3]=1;
+
+
+ for (i = 0; i < sbp_id_num; i++){
+ if (sbp_id[i] != sbp_id_ans[i]){
+ 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]);
+ return KAL_FALSE;
+ }
+ }
+
+ //NA case
+ kal_mem_set(tag, 0, 64);
+ strcpy(tag, "NA_123_45,NA_02_53,108_470_97,108_466_97,1_460_NA,1_460_02,");
+ if (mcf_find_ini_sbp_id(tag, sbp_id, &sbp_id_num, &general) != KAL_TRUE) {
+ mcf_ut_format_err_str("Find ini file sbp id FAIL!! item(%s) \r\n", tag);
+ return KAL_FALSE;
+ }
+
+ if (general != KAL_TRUE){
+ mcf_ut_format_err_str("Find ini file sbp id FAIL!! general(%d) \r\n", general);
+ return KAL_FALSE;
+ }
+
+ //ICCID case
+ kal_mem_set(tag, 0, 64);
+ strcpy(tag, "123456,NA_02_53,108_470_97,108_466_97,1_460_NA,1_460_02,");
+ if (mcf_find_ini_sbp_id(tag, sbp_id, &sbp_id_num, &general) != KAL_TRUE) {
+ mcf_ut_format_err_str("Find ini file sbp id FAIL!! item(%s) \r\n", tag);
+ return KAL_FALSE;
+ }
+
+ if (general != KAL_TRUE){
+ mcf_ut_format_err_str("Find ini file sbp id FAIL!! general(%d) \r\n", general);
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(tag, 0, 64);
+ strcpy(tag, "123456");
+ if (mcf_find_ini_sbp_id(tag, sbp_id, &sbp_id_num, &general) != KAL_TRUE) {
+ mcf_ut_format_err_str("Find ini file sbp id FAIL!! item(%s) \r\n", tag);
+ return KAL_FALSE;
+ }
+
+ if (general != KAL_TRUE){
+ mcf_ut_format_err_str("Find ini file sbp id FAIL!! general(%d) \r\n", general);
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(tag, 0, 64);
+ strcpy(tag, "108_460_32,123456");
+ if (mcf_find_ini_sbp_id(tag, sbp_id, &sbp_id_num, &general) != KAL_TRUE) {
+ mcf_ut_format_err_str("Find ini file sbp id FAIL!! item(%s) \r\n", tag);
+ return KAL_FALSE;
+ }
+
+ if (general != KAL_TRUE){
+ mcf_ut_format_err_str("Find ini file sbp id FAIL!! general(%d) \r\n", general);
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(tag, 0, 64);
+ strcpy(tag, "108_460_32");
+ if (mcf_find_ini_sbp_id(tag, sbp_id, &sbp_id_num, &general) != KAL_TRUE) {
+ mcf_ut_format_err_str("Find ini file sbp id FAIL!! item(%s) \r\n", tag);
+ return KAL_FALSE;
+ }
+
+ for (i = 0; i < sbp_id_num; i++){
+ if (sbp_id[i] != sbp_id_ans[i]){
+ 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]);
+ return KAL_FALSE;
+ }
+ }
+
+
+
+
+ MCF_UT_PASS();
+ return KAL_TRUE;
+}
+
+kal_bool mcf_ut_compose_ini_item(void *p_param, kal_char *p_ret_err_str, kal_uint32 *p_ret_err_str_sz)
+{
+ kal_bool ret;
+ mcf_t *pMcf = mcf_get_instance();
+ mcf_ini_file_t *ini_file = &(pMcf->ini_file);
+ kal_char value[64];
+ kal_char test_data_path[512];
+ kal_char *pos;
+ kal_char tag[64];
+ kal_char new_value[64];
+ kal_char old_value[64];
+
+
+ mcf_ut_init();
+
+
+ /*
+ * Read ini positive test
+ */
+ kal_mem_set(ini_file->buff, 0, MCF_MAX_INI_FILE_SIZE);
+ kal_mem_set(ini_file->tmp_buff, 0, MCF_MAX_INI_FILE_SIZE);
+ ret = mcf_ut_open_test_data("MTK_MD_OTA_CONFIG.ini", ini_file->buff, MCF_MAX_INI_FILE_SIZE);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MTK_MD_OTA_CONFIG.ini");
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(tag, 0, 64);
+ kal_mem_set(new_value, 0, 64);
+ kal_mem_set(old_value, 0, 64);
+ strcpy(tag, "AP_Monitor_Time");
+ strcpy(old_value, "120");
+ strcpy(new_value, "2");
+
+ if (mcf_compose_ini_item(ini_file->buff, ini_file->tmp_buff, tag, old_value, new_value) != KAL_TRUE) {
+ mcf_ut_format_err_str("Find compose_ini_item FAIL!! item(%s) value(%s) \r\n", tag, new_value);
+ return KAL_FALSE;
+ }
+
+ /* Change write permission of ini file */
+ getcwd(test_data_path, sizeof(test_data_path));
+ pos = strstr(test_data_path, "mcu");
+ kal_sprintf(pos + strlen("mcu"), "\\%s\\%s%c", MCF_UT_DB_FOLDER_PATH, "MTK_MD_OTA_CONFIG_WRITE.ini", '\0');
+ chmod(test_data_path, 0666);
+
+ ret = mcf_ut_write_test_data("MTK_MD_OTA_CONFIG_WRITE.ini", ini_file->tmp_buff);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MTK_MD_OTA_CONFIG.ini");
+ return KAL_FALSE;
+ }
+
+
+ /* Read again */
+ ret = mcf_ut_open_test_data("MTK_MD_OTA_CONFIG_WRITE.ini", (kal_char *)(ini_file->buff), MCF_MAX_INI_FILE_SIZE);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MTK_MD_OTA_CONFIG_WRITE.ini");
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(tag, 0, 64);
+ kal_mem_set(new_value, 0, 64);
+ kal_mem_set(old_value, 0, 64);
+ strcpy(tag, "TagName");
+ strcpy(old_value, "108_466_97,1_460_NA,1_460_02");
+ strcpy(new_value, "108_466_97,1_460_02");
+
+ if (mcf_compose_ini_item(ini_file->buff, ini_file->tmp_buff, tag, old_value, new_value) != KAL_TRUE) {
+ mcf_ut_format_err_str("Find compose_ini_item FAIL!! item(%s) value(%s) \r\n", tag, new_value);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_ut_write_test_data("MTK_MD_OTA_CONFIG_WRITE.ini", ini_file->tmp_buff);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MTK_MD_OTA_CONFIG.ini");
+ return KAL_FALSE;
+ }
+
+
+ /* Read again */
+ ret = mcf_ut_open_test_data("MTK_MD_OTA_CONFIG_WRITE.ini", (kal_char *)(ini_file->buff), MCF_MAX_INI_FILE_SIZE);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MTK_MD_OTA_CONFIG_WRITE.ini");
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(tag, 0, 64);
+ kal_mem_set(new_value, 0, 64);
+ kal_mem_set(old_value, 0, 64);
+ strcpy(tag, "AP_Monitor_Time");
+ strcpy(old_value, "2");
+ strcpy(new_value, "23000");
+
+ if (mcf_compose_ini_item(ini_file->buff, ini_file->tmp_buff, tag, old_value, new_value) != KAL_TRUE) {
+ mcf_ut_format_err_str("Find compose_ini_item FAIL!! item(%s) value(%s) \r\n", tag, new_value);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_ut_write_test_data("MTK_MD_OTA_CONFIG_WRITE.ini", ini_file->tmp_buff);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MTK_MD_OTA_CONFIG.ini");
+ return KAL_FALSE;
+ }
+
+
+ /* Read again */
+ ret = mcf_ut_open_test_data("MTK_MD_OTA_CONFIG_WRITE.ini", (kal_char *)(ini_file->buff), MCF_MAX_INI_FILE_SIZE);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MTK_MD_OTA_CONFIG_WRITE.ini");
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(tag, 0, 64);
+ kal_mem_set(new_value, 0, 64);
+ kal_mem_set(old_value, 0, 64);
+ strcpy(tag, "Gen_Time");
+ strcpy(old_value, "2018.1025.120000");
+ strcpy(new_value, "2018.1104.182054");
+
+ if (mcf_compose_ini_item(ini_file->buff, ini_file->tmp_buff, tag, old_value, new_value) != KAL_TRUE) {
+ mcf_ut_format_err_str("Find compose_ini_item FAIL!! item(%s) value(%s) \r\n", tag, new_value);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_ut_write_test_data("MTK_MD_OTA_CONFIG_WRITE.ini", ini_file->tmp_buff);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MTK_MD_OTA_CONFIG.ini");
+ return KAL_FALSE;
+ }
+
+
+ /* Read again */
+ ret = mcf_ut_open_test_data("MTK_MD_OTA_CONFIG_WRITE.ini", (kal_char *)(ini_file->buff), MCF_MAX_INI_FILE_SIZE);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MTK_MD_OTA_CONFIG_WRITE.ini");
+ return KAL_FALSE;
+ }
+
+ /* New item */
+
+ kal_mem_set(tag, 0, 64);
+ kal_mem_set(new_value, 0, 64);
+ kal_mem_set(old_value, 0, 64);
+ strcpy(tag, "Reboot_Mode");
+ strcpy(old_value, "");
+ strcpy(new_value, "1");
+
+ if (mcf_compose_ini_item(ini_file->buff, ini_file->tmp_buff, tag, old_value, new_value) != KAL_TRUE) {
+ mcf_ut_format_err_str("Find compose_ini_item FAIL!! item(%s) value(%s) \r\n", tag, new_value);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_ut_write_test_data("MTK_MD_OTA_CONFIG_WRITE.ini", ini_file->tmp_buff);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MTK_MD_OTA_CONFIG.ini");
+ return KAL_FALSE;
+ }
+
+
+ /* Read again */
+ ret = mcf_ut_open_test_data("MTK_MD_OTA_CONFIG_WRITE.ini", (kal_char *)(ini_file->buff), MCF_MAX_INI_FILE_SIZE);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MTK_MD_OTA_CONFIG_WRITE.ini");
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(tag, 0, 64);
+ kal_mem_set(new_value, 0, 64);
+ kal_mem_set(old_value, 0, 64);
+ strcpy(tag, "GenTime");
+ strcpy(old_value, "");
+ strcpy(new_value, "2018.1106.110355");
+
+ if (mcf_compose_ini_item(ini_file->buff, ini_file->tmp_buff, tag, old_value, new_value) != KAL_TRUE) {
+ mcf_ut_format_err_str("Find compose_ini_item FAIL!! item(%s) value(%s) \r\n", tag, new_value);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_ut_write_test_data("MTK_MD_OTA_CONFIG_WRITE.ini", ini_file->tmp_buff);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MTK_MD_OTA_CONFIG.ini");
+ return KAL_FALSE;
+ }
+
+
+ /* Read again */
+ ret = mcf_ut_open_test_data("MTK_MD_OTA_CONFIG_WRITE.ini", (kal_char *)(ini_file->buff), MCF_MAX_INI_FILE_SIZE);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MTK_MD_OTA_CONFIG_WRITE.ini");
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(tag, 0, 64);
+ kal_mem_set(new_value, 0, 64);
+ kal_mem_set(old_value, 0, 64);
+ strcpy(tag, "BatteryLife");
+ strcpy(old_value, "");
+ strcpy(new_value, "87%");
+
+ if (mcf_compose_ini_item(ini_file->buff, ini_file->tmp_buff, tag, old_value, new_value) != KAL_TRUE) {
+ mcf_ut_format_err_str("Find compose_ini_item FAIL!! item(%s) value(%s) \r\n", tag, new_value);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_ut_write_test_data("MTK_MD_OTA_CONFIG_WRITE.ini", ini_file->tmp_buff);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MTK_MD_OTA_CONFIG.ini");
+ return KAL_FALSE;
+ }
+
+ ret = mcf_ut_open_test_data("MTK_MD_OTA_CONFIG_WRITE.ini", (kal_char *)(ini_file->buff), MCF_MAX_INI_FILE_SIZE);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MTK_MD_OTA_CONFIG_WRITE.ini");
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(value, 0, 64);
+ kal_mem_set(tag, 0, 64);
+ strcpy(tag, "AP_Monitor_Time");
+
+ if (mcf_find_ini_item((kal_char *)ini_file->buff, tag, value, pMcf) != KAL_TRUE) {
+ mcf_ut_format_err_str("Read ini file FAIL!! item(%s) \r\n", tag);
+ return KAL_FALSE;
+ }
+
+ if(strcmp(value,"23000") != 0){
+ mcf_ut_format_err_str("Read ini file positive test FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(value, 0, 64);
+ kal_mem_set(tag, 0, 64);
+ strcpy(tag, "GenTime");
+
+ if (mcf_find_ini_item((kal_char *)ini_file->buff, tag, value, pMcf) != KAL_TRUE) {
+ mcf_ut_format_err_str("Read ini file FAIL!! item(%s) \r\n", tag);
+ return KAL_FALSE;
+ }
+
+ if(strcmp(value,"2018.1106.110355") != 0){
+ mcf_ut_format_err_str("Read ini file positive test FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(value, 0, 64);
+ kal_mem_set(tag, 0, 64);
+ strcpy(tag, "TagName");
+
+ if (mcf_find_ini_item((kal_char *)ini_file->buff, tag, value, pMcf) != KAL_TRUE) {
+ mcf_ut_format_err_str("Read ini file FAIL!! item(%s) \r\n", tag);
+ return KAL_FALSE;
+ }
+
+ if(strcmp(value,"108_466_97,1_460_02") != 0){
+ mcf_ut_format_err_str("Read ini file positive test FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(value, 0, 64);
+ kal_mem_set(tag, 0, 64);
+ strcpy(tag, "Gen_Time");
+
+ if (mcf_find_ini_item((kal_char *)ini_file->buff, tag, value, pMcf) != KAL_TRUE) {
+ mcf_ut_format_err_str("Read ini file FAIL!! item(%s) \r\n", tag);
+ return KAL_FALSE;
+ }
+
+ if(strcmp(value,"2018.1104.182054") != 0){
+ mcf_ut_format_err_str("Read ini file positive test FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(value, 0, 64);
+ kal_mem_set(tag, 0, 64);
+ strcpy(tag, "Reboot_Mode");
+
+ if (mcf_find_ini_item((kal_char *)ini_file->buff, tag, value, pMcf) != KAL_TRUE) {
+ mcf_ut_format_err_str("Read ini file FAIL!! item(%s) \r\n", tag);
+ return KAL_FALSE;
+ }
+
+ if(strcmp(value,"1") != 0){
+ mcf_ut_format_err_str("Read ini file positive test FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(value, 0, 64);
+ kal_mem_set(tag, 0, 64);
+ strcpy(tag, "BatteryLife");
+
+ if (mcf_find_ini_item((kal_char *)ini_file->buff, tag, value, pMcf) != KAL_TRUE) {
+ mcf_ut_format_err_str("Read ini file FAIL!! item(%s) \r\n", tag);
+ return KAL_FALSE;
+ }
+
+ if(strcmp(value,"87%") != 0){
+ mcf_ut_format_err_str("Read ini file positive test FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(value, 0, 64);
+ kal_mem_set(tag, 0, 64);
+ strcpy(tag, "Battery Life");
+
+ if (mcf_find_ini_item((kal_char *)ini_file->buff, tag, value, pMcf) != KAL_TRUE) {
+ mcf_ut_format_err_str("Read ini file FAIL!! item(%s) \r\n", tag);
+ return KAL_FALSE;
+ }
+
+ if(strcmp(value,"87%") != 0){
+ mcf_ut_format_err_str("Read ini file positive test FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(value, 0, 64);
+ kal_mem_set(tag, 0, 64);
+ strcpy(tag, "BaTTery LIFE");
+
+ if (mcf_find_ini_item((kal_char *)ini_file->buff, tag, value, pMcf) != KAL_TRUE) {
+ mcf_ut_format_err_str("Read ini file FAIL!! item(%s) \r\n", tag);
+ return KAL_FALSE;
+ }
+
+ if(strcmp(value,"87%") != 0){
+ mcf_ut_format_err_str("Read ini file positive test FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+
+ /* Read again */
+ ret = mcf_ut_open_test_data("MTK_MD_OTA_CONFIG_WRITE.ini", (kal_char *)(ini_file->buff), MCF_MAX_INI_FILE_SIZE);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MTK_MD_OTA_CONFIG_WRITE.ini");
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(tag, 0, 64);
+ kal_mem_set(new_value, 0, 64);
+ kal_mem_set(old_value, 0, 64);
+ strcpy(tag, "Gen_Time");
+ strcpy(old_value, "2018.1104.182054");
+ strcpy(new_value, "");
+
+ if (mcf_compose_ini_item(ini_file->buff, ini_file->tmp_buff, tag, old_value, new_value) != KAL_TRUE) {
+ mcf_ut_format_err_str("Find compose_ini_item FAIL!! item(%s) value(%s) \r\n", tag, new_value);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_ut_write_test_data("MTK_MD_OTA_CONFIG_WRITE.ini", ini_file->tmp_buff);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MTK_MD_OTA_CONFIG.ini");
+ return KAL_FALSE;
+ }
+
+ ret = mcf_ut_open_test_data("MTK_MD_OTA_CONFIG_WRITE.ini", (kal_char *)(ini_file->buff), MCF_MAX_INI_FILE_SIZE);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MTK_MD_OTA_CONFIG_WRITE.ini");
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(value, 0, 64);
+ kal_mem_set(tag, 0, 64);
+ strcpy(tag, "Gen_Time");
+
+ if (mcf_find_ini_item((kal_char *)ini_file->buff, tag, value, pMcf) != KAL_TRUE) {
+ mcf_ut_format_err_str("Read ini file FAIL!! item(%s) \r\n", tag);
+ return KAL_FALSE;
+ }
+
+ if(strcmp(value,"") != 0){
+ mcf_ut_format_err_str("Read ini file positive test FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+
+ ret = mcf_ut_open_test_data("MTK_MD_OTA_CONFIG_WRITE.ini", (kal_char *)(ini_file->buff), MCF_MAX_INI_FILE_SIZE);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MTK_MD_OTA_CONFIG_WRITE.ini");
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(tag, 0, 64);
+ kal_mem_set(new_value, 0, 64);
+ kal_mem_set(old_value, 0, 64);
+ strcpy(tag, "Gen_Time");
+ strcpy(old_value, "");
+ strcpy(new_value, "125_25_67");
+
+ if (mcf_compose_ini_item(ini_file->buff, ini_file->tmp_buff, tag, old_value, new_value) != KAL_TRUE) {
+ mcf_ut_format_err_str("Find compose_ini_item FAIL!! item(%s) value(%s) \r\n", tag, new_value);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_ut_write_test_data("MTK_MD_OTA_CONFIG_WRITE.ini", ini_file->tmp_buff);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MTK_MD_OTA_CONFIG.ini");
+ return KAL_FALSE;
+ }
+
+ ret = mcf_ut_open_test_data("MTK_MD_OTA_CONFIG_WRITE.ini", (kal_char *)(ini_file->buff), MCF_MAX_INI_FILE_SIZE);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MTK_MD_OTA_CONFIG_WRITE.ini");
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(value, 0, 64);
+
+ kal_mem_set(tag, 0, 64);
+ strcpy(tag, "Gen_Time");
+
+ if (mcf_find_ini_item((kal_char *)ini_file->buff, tag, value, pMcf) != KAL_TRUE) {
+ mcf_ut_format_err_str("Read ini file FAIL!! item(%s) \r\n", tag);
+ return KAL_FALSE;
+ }
+
+ if(strcmp(value,"125_25_67") != 0){
+ mcf_ut_format_err_str("Read ini file positive test FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+
+
+ MCF_UT_PASS();
+ return KAL_TRUE;
+}
+
+kal_bool mcf_ut_mcf_boot_trace(void *p_param, kal_char *p_ret_err_str, kal_uint32 *p_ret_err_str_sz)
+{
+ kal_uint32 d1 = 100, d2 = 200;
+ char string[] = "MCF TEST";
+ char string2[] = "MCF TEST2";
+ kal_uint32 i = 0;
+
+ mcf_do_ota_full();
+
+ MCF_BOOT_TRACE(MCF_BOOT_TRACE_TEST2);
+ MCF_BOOT_TRACE(MCF_BOOT_TRACE_TEST1, d1);
+ MCF_BOOT_TRACE(MCF_BOOT_TRACE_TEST3, string);
+ MCF_BOOT_TRACE(MCF_BOOT_TRACE_TEST4, d1, string);
+ MCF_BOOT_TRACE(MCF_BOOT_TRACE_TEST5, string, string2, d1);
+
+ for(i = 0;i< 10000;i++)
+ {
+ MCF_BOOT_TRACE(MCF_BOOT_TRACE_TEST5, string, string2, d1);
+ }
+
+ mcf_dump_boot_trace();
+
+ MCF_UT_PASS();
+ return KAL_TRUE;
+}
+
+kal_bool mcf_ut_config_LID(void *p_param, kal_char *p_ret_err_str, kal_uint32 *p_ret_err_str_sz)
+{
+ kal_bool ret;
+ l4c_mcf_config_lid_variable_operation_req_struct *req = NULL;
+ l4c_mcf_config_lid_variable_operation_cnf_struct *cnf = NULL;
+ mcf_ota_result_e mcf_ret = MCF_OTA_R_SUCCESS;
+ mcf_t *pMcf = mcf_get_instance();
+ mcf_ota_file_t *ota_file = &(pMcf->ota_file);
+ mcf_tool_file_info_t *pFile = (mcf_tool_file_info_t *)(ota_file->buff);
+ nvram_ef_mcf_ota_file_info_struct nv_ota_file;
+ nvram_ef_mcf_sw_info_struct nv_sw_info;
+ mcf_tlvota_file_t *tlvota_file;
+ nvram_ef_mcf_tlvota_file_info_struct nv_tlvota_file;
+ mcf_tlvota_sbp_tag_t sbp_tag;
+ kal_uint8 i;
+ kal_uint8 test_pattern[512];
+
+
+ /* Write MCF OTA file version to NVRAM */
+ kal_mem_set(&nv_ota_file, 0, sizeof(nvram_ef_mcf_ota_file_info_struct));
+ strncpy(nv_ota_file.path, MCF_FS_DEFAULT_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN);
+ strncpy(nv_ota_file.name, MCF_FS_DEFAULT_OTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN);
+ 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)) ) {
+ mcf_ut_format_err_str("Fail to write MCF OTA file info to NVRAM!!\r\n");
+ return KAL_FALSE;
+ }
+ kal_mem_set(&nv_sw_info, 0, sizeof(nvram_ef_mcf_sw_info_struct));
+ strncpy(nv_sw_info.last_update_file.sw_version, MCF_UT_SW_VERNO, MCF_FILE_MAX_SW_VERSION_LEN);
+ strncpy(nv_sw_info.last_update_file.gen_time, MCF_UT_GEN_TIME, MCF_FILE_MAX_GEN_TIME_LEN);
+ strcpy(nv_sw_info.last_update_file.path, "");
+ strcpy(nv_sw_info.last_update_file.name, "");
+ if ( !nvram_external_write_data(NVRAM_EF_MCF_SW_INFO_LID, 1, (kal_uint8 *)&nv_sw_info, sizeof(nvram_ef_mcf_sw_info_struct)) ) {
+ mcf_ut_format_err_str("Fail to write MCF sw info to NVRAM!!\r\n");
+ return KAL_FALSE;
+ }
+
+ /*
+ * Apply default OTA
+ */
+ MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ if (ota_file) {
+ ret = mcf_ut_open_test_data("MCF_OTA_ut_normal.mcfota", (kal_char *)(ota_file->buff), MCF_MAX_OTA_FILE_SIZE);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_OTA_ut_normal.mcfota");
+ return KAL_FALSE;
+ }
+
+ MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Reset LID FAIL!! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+
+ mcf_ret = mcf_do_ota_full();
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Reset LID FAIL!! ret(%d) \r\n", mcf_ret);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_test_lid_value(NULL);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Reset LID FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+
+
+
+ /*
+ * Set OTA path in default path positive test
+ */
+ req = (l4c_mcf_config_lid_variable_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_LID_VARIABLE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
+ req->lid_num = 4098;
+ req->rec_id = 1;
+ req->len = 0;
+ strcpy(req->tag_name, "VAL_BYTE_11");
+
+ cnf = (l4c_mcf_config_lid_variable_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_cnf_struct), TD_RESET);
+
+
+ mcf_ret = mcf_config_LID_variable(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Config LID variable FAIL!!(%s)\r\n", "VAL_BYTE_11");
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(test_pattern,0,512);
+ mcf_bytes_to_hex(&(mcf_ut_test_lid_value_pattern.val_byte_11), cnf->len, KAL_FALSE, &test_pattern);
+ mcf_toupper((char *)test_pattern);
+
+ if(strncmp((kal_char *)(cnf->value), test_pattern, cnf->len*2) != 0){
+ mcf_ut_format_err_str("Config LID, VAL_BYTE_11, %s, %s\r\n", cnf->value, test_pattern);
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 1){
+ mcf_ut_format_err_str("Config LID, VAL_BYTE_11, %d, %d\r\n", cnf->len, 1);
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+ req = (l4c_mcf_config_lid_variable_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_LID_VARIABLE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
+ req->lid_num = 4098;
+ req->rec_id = 1;
+ req->len = 0;
+ strcpy(req->tag_name, "VAL_BIT_BYTE_11");
+
+ cnf = (l4c_mcf_config_lid_variable_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_config_LID_variable(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Config LID variable FAIL!!(%s)\r\n", "VAL_BIT_BYTE_11");
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(test_pattern,0,512);
+ mcf_bytes_to_hex(&(mcf_ut_test_lid_value_pattern.val_bit_byte_11), cnf->len, KAL_FALSE, &test_pattern);
+ mcf_toupper((char *)test_pattern);
+
+ if(strncmp((kal_char *)(cnf->value), test_pattern, cnf->len*2) != 0){
+ mcf_ut_format_err_str("Config LID, VAL_BIT_BYTE_11, %s, %s\r\n", cnf->value, test_pattern);
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 1){
+ mcf_ut_format_err_str("Config LID, VAL_BIT_BYTE_11, %d, %d\r\n", cnf->len, 1);
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+ req = (l4c_mcf_config_lid_variable_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_LID_VARIABLE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
+ req->lid_num = 4098;
+ req->rec_id = 1;
+ req->len = 0;
+ strcpy(req->tag_name, "VAL_BIT_BYTE_11.B3");
+
+ cnf = (l4c_mcf_config_lid_variable_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_config_LID_variable(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Config LID variable (%s) FAIL!!\r\n", "VAL_BIT_BYTE_11.B3");
+ return KAL_FALSE;
+ }
+
+ if(strncmp((kal_char *)(cnf->value), "01", cnf->len*2) != 0){
+ mcf_ut_format_err_str("Config LID, VAL_BIT_BYTE_11.B3, %s, %s\r\n", cnf->value, "01");
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 1){
+ mcf_ut_format_err_str("Config LID, VAL_BIT_BYTE_11.B3, %d, %d\r\n", cnf->len, 1);
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+ req = (l4c_mcf_config_lid_variable_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_LID_VARIABLE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
+ req->lid_num = 4098;
+ req->rec_id = 1;
+ req->len = 0;
+ strcpy(req->tag_name, "val_bit_byte_12");
+
+ cnf = (l4c_mcf_config_lid_variable_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_config_LID_variable(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Config LID variable (%s) FAIL!!\r\n", "val_bit_byte_12");
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(test_pattern,0,512);
+ mcf_bytes_to_hex(&(mcf_ut_test_lid_value_pattern.val_bit_byte_12), cnf->len, KAL_FALSE, &test_pattern);
+ mcf_toupper((char *)test_pattern);
+
+ if(strncmp((kal_char *)(cnf->value), test_pattern, cnf->len*2) != 0){
+ mcf_ut_format_err_str("Config LID, val_bit_byte_12, %s, %s\r\n", cnf->value, test_pattern);
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 1){
+ mcf_ut_format_err_str("Config LID, val_bit_byte_12, %d, %d\r\n", cnf->len, 1);
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+ req = (l4c_mcf_config_lid_variable_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_LID_VARIABLE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
+ req->lid_num = 4098;
+ req->rec_id = 1;
+ req->len = 0;
+ strcpy(req->tag_name, "val_bit_byte_12.L4b");
+
+ cnf = (l4c_mcf_config_lid_variable_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_config_LID_variable(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Config LID variable (%s) FAIL!!\r\n", "val_bit_byte_12.L4b");
+ return KAL_FALSE;
+ }
+
+ if(strncmp((kal_char *)(cnf->value), "0F", cnf->len*2) != 0){
+ mcf_ut_format_err_str("Config LID, val_bit_byte_12.F4b, %s, %s\r\n", cnf->value, test_pattern);
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 1){
+ mcf_ut_format_err_str("Config LID, val_bit_byte_12.F4b, %d, %d\r\n", cnf->len, 1);
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+
+ req = (l4c_mcf_config_lid_variable_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_LID_VARIABLE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
+ req->lid_num = 4098;
+ req->rec_id = 1;
+ req->len = 0;
+ strcpy(req->tag_name, "val_short_11");
+
+ cnf = (l4c_mcf_config_lid_variable_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_config_LID_variable(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Config LID variable (%s) FAIL!!\r\n", "val_short_11");
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(test_pattern,0,512);
+ mcf_bytes_to_hex(&(mcf_ut_test_lid_value_pattern.val_short_11), cnf->len*2, KAL_FALSE, &test_pattern);
+ mcf_toupper((char *)test_pattern);
+
+ if(strncmp((kal_char *)(cnf->value), test_pattern, cnf->len*4) != 0){
+ mcf_ut_format_err_str("Config LID, val_short_11, %s, %s\r\n", cnf->value, test_pattern);
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 1){
+ mcf_ut_format_err_str("Config LID, val_short_11, %d, %d\r\n", cnf->len, 1);
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+ req = (l4c_mcf_config_lid_variable_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_LID_VARIABLE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
+ req->lid_num = 4098;
+ req->rec_id = 1;
+ req->len = 2;
+ strcpy(req->tag_name, "val_double_1");
+
+ cnf = (l4c_mcf_config_lid_variable_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_config_LID_variable(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Config LID variable (%s) FAIL!!\r\n", "val_double_1");
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(test_pattern,0,512);
+ mcf_bytes_to_hex(&(mcf_ut_test_lid_value_pattern.val_double_1), cnf->len*8, KAL_FALSE, &test_pattern);
+ mcf_toupper((char *)test_pattern);
+
+ if(strncmp((kal_char *)(cnf->value), test_pattern, cnf->len*16) != 0){
+ mcf_ut_format_err_str("Config LID, val_double_1, %s, %s\r\n", cnf->value, test_pattern);
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 1){
+ mcf_ut_format_err_str("Config LID, val_double_1, %d, %d\r\n", cnf->len, 1);
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+ req = (l4c_mcf_config_lid_variable_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_LID_VARIABLE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
+ req->lid_num = 4098;
+ req->rec_id = 1;
+ req->len = 2;
+ strcpy(req->tag_name, "val_buffer_1");
+
+ cnf = (l4c_mcf_config_lid_variable_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_config_LID_variable(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Config LID variable (%s) FAIL!!\r\n", "val_buffer_1");
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(test_pattern,0,512);
+ mcf_bytes_to_hex(&(mcf_ut_test_lid_value_pattern.val_buffer_1), cnf->len, KAL_FALSE, &test_pattern);
+ mcf_toupper((char *)test_pattern);
+
+ if(strncmp((kal_char *)(cnf->value), test_pattern, cnf->len*2) != 0){
+ mcf_ut_format_err_str("Config LID, val_buffer_1, %s, %s\r\n", cnf->value, test_pattern);
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 2){
+ mcf_ut_format_err_str("Config LID, val_buffer_1, %d, %d\r\n", cnf->len, 1);
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+ req = (l4c_mcf_config_lid_variable_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_LID_VARIABLE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
+ req->lid_num = 4098;
+ req->rec_id = 1;
+ req->len = 0;
+ strcpy(req->tag_name, "val_buffer_1");
+
+ cnf = (l4c_mcf_config_lid_variable_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_config_LID_variable(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Config LID variable (%s) FAIL!!\r\n", "val_buffer_1");
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(test_pattern,0,512);
+ mcf_bytes_to_hex(&(mcf_ut_test_lid_value_pattern.val_buffer_1), cnf->len, KAL_FALSE, &test_pattern);
+ mcf_toupper((char *)test_pattern);
+
+ if(strncmp((kal_char *)(cnf->value), test_pattern, cnf->len*2) != 0){
+ mcf_ut_format_err_str("Config LID, val_buffer_1, %s, %s\r\n", cnf->value, test_pattern);
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 32){
+ mcf_ut_format_err_str("Config LID, val_buffer_1, %d, %d\r\n", cnf->len, 32);
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+ req = (l4c_mcf_config_lid_variable_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_LID_VARIABLE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
+ req->lid_num = 4098;
+ req->rec_id = 1;
+ req->len = 2;
+ strcpy(req->tag_name, "val_buffer_1[0]");
+
+ cnf = (l4c_mcf_config_lid_variable_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_config_LID_variable(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Config LID variable (%s) FAIL!!\r\n", "val_buffer_1[0]");
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(test_pattern,0,512);
+ mcf_bytes_to_hex(&(mcf_ut_test_lid_value_pattern.val_buffer_1), cnf->len, KAL_FALSE, &test_pattern);
+ mcf_toupper((char *)test_pattern);
+
+ if(strncmp((kal_char *)(cnf->value), test_pattern, cnf->len*2) != 0){
+ mcf_ut_format_err_str("Config LID, val_buffer_1, %s, %s\r\n", cnf->value, test_pattern);
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 1){
+ mcf_ut_format_err_str("Config LID, val_buffer_1, %d, %d\r\n", cnf->len, 1);
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+ req = (l4c_mcf_config_lid_variable_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_LID_VARIABLE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
+ req->lid_num = 4098;
+ req->rec_id = 1;
+ req->len = 2;
+ strcpy(req->tag_name, "val_struct_1.vfloat");
+
+ cnf = (l4c_mcf_config_lid_variable_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_config_LID_variable(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Config LID variable (%s) FAIL!!\r\n", "val_struct_1.vfloat");
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(test_pattern,0,512);
+ mcf_bytes_to_hex(&(mcf_ut_test_lid_value_pattern.val_struct_1.vfloat), cnf->len*4, KAL_FALSE, &test_pattern);
+ mcf_toupper((char *)test_pattern);
+
+ if(strncmp((kal_char *)(cnf->value), test_pattern, cnf->len*8) != 0){
+ mcf_ut_format_err_str("Config LID, val_struct_1.vfloat, %s, %s\r\n", cnf->value, test_pattern);
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 1){
+ mcf_ut_format_err_str("Config LID, val_struct_1.vfloat, %d, %d\r\n", cnf->len, 1);
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+ req = (l4c_mcf_config_lid_variable_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_LID_VARIABLE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
+ req->lid_num = 4098;
+ req->rec_id = 1;
+ req->len = 2;
+ strcpy(req->tag_name, "val_struct_3[0].vint");
+
+ cnf = (l4c_mcf_config_lid_variable_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_config_LID_variable(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Config LID variable (%s) FAIL!!\r\n", "val_struct_3[0].vint");
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(test_pattern,0,512);
+ mcf_bytes_to_hex(&(mcf_ut_test_lid_value_pattern.val_struct_3[0].vint), cnf->len*4, KAL_FALSE, &test_pattern);
+ mcf_toupper((char *)test_pattern);
+
+ if(strncmp((kal_char *)(cnf->value), test_pattern, cnf->len*8) != 0){
+ mcf_ut_format_err_str("Config LID, val_struct_3[0].vint, %s, %s\r\n", cnf->value, test_pattern);
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 1){
+ mcf_ut_format_err_str("Config LID, val_struct_3[0].vint, %d, %d\r\n", cnf->len, 1);
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+ req = (l4c_mcf_config_lid_variable_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_LID_VARIABLE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
+ req->lid_num = 4098;
+ req->rec_id = 1;
+ req->len = 0;
+ strcpy(req->tag_name, "VAL_STRUCT_3[0]");
+
+ cnf = (l4c_mcf_config_lid_variable_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_config_LID_variable(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Config LID variable (%s) FAIL!!\r\n", "val_struct_3[0]");
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(test_pattern,0,512);
+ mcf_bytes_to_hex(&(mcf_ut_test_lid_value_pattern.val_struct_3[0]), cnf->len, KAL_FALSE, &test_pattern);
+ mcf_toupper((char *)test_pattern);
+
+ if(strncmp((kal_char *)(cnf->value), test_pattern, 510) != 0){
+ mcf_ut_format_err_str("Config LID, VAL_STRUCT_3[0], %s, %s\r\n", cnf->value, test_pattern);
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 255){
+ mcf_ut_format_err_str("Config LID, VAL_STRUCT_3[0], %d, %d\r\n", cnf->len, 255);
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+
+
+
+ /* negative test */
+
+ req = (l4c_mcf_config_lid_variable_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_LID_VARIABLE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
+ req->lid_num = 4098;
+ req->rec_id = 1;
+ req->len = 0;
+ strcpy(req->tag_name, "VAL_STRUCT_3[3].VBUFFER[2][4][5]");
+
+ cnf = (l4c_mcf_config_lid_variable_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_config_LID_variable(req, cnf);
+ if (mcf_ret != MCF_OTA_R_INVALID_PARAMETER) {
+ mcf_ut_format_err_str("Config LID variable (%s) FAIL!!\r\n", "VAL_STRUCT_3[3].VBUFFER[2][4][5]");
+ return KAL_FALSE;
+ }
+
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+ /* Test TLV OTA */
+ /* Write MCF TLV-OTA file version to NVRAM */
+ kal_mem_set(&nv_tlvota_file, 0, sizeof(nvram_ef_mcf_tlvota_file_info_struct));
+ strncpy(nv_tlvota_file.path, MCF_FS_DEFAULT_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN);
+ strncpy(nv_tlvota_file.name, MCF_FS_DEFAULT_TLVOTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN);
+ 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)) ) {
+ mcf_ut_format_err_str("Fail to write MCF TLV-OTA file info to NVRAM!!\r\n");
+ return KAL_FALSE;
+ }
+
+ for (i = 0; i < MAX_SIM_NUM; i++) {
+ tlvota_file = &(pMcf->tlvota_file[i]);
+
+ MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ if (tlvota_file) {
+ ret = mcf_ut_open_test_data("MCF_TLVOTA_SBP_NA_ut_normal.mcfopota", (kal_char *)(tlvota_file->buff), MCF_MAX_TLVOTA_FILE_SIZE);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_TLVOTA_SBP_NA_ut_normal.mcfopota");
+ return KAL_FALSE;
+ }
+
+ MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+ }
+
+ kal_mem_set(&sbp_tag, 0, sizeof(mcf_tlvota_sbp_tag_t));
+ sbp_tag.sbp_id = SBP_TAG_SBPID;
+ strncpy(sbp_tag.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
+ strncpy(sbp_tag.mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
+
+ req = (l4c_mcf_config_lid_variable_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_LID_VARIABLE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OPOTA;
+ req->lid_num = 4098;
+ req->rec_id = 1;
+ req->len = 0;
+ req->ps_id = 0;
+ strcpy(req->tag_name, "VAL_BYTE_11");
+
+ cnf = (l4c_mcf_config_lid_variable_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_cnf_struct), TD_RESET);
+
+
+ mcf_ret = mcf_config_LID_variable(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Config LID variable (%s) FAIL!!\r\n", "VAL_BYTE_11");
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(test_pattern,0,512);
+ mcf_bytes_to_hex(&(mcf_ut_test_lid_value_pattern.val_byte_11), cnf->len, KAL_FALSE, &test_pattern);
+ mcf_toupper((char *)test_pattern);
+
+ if(strncmp((kal_char *)(cnf->value), test_pattern, cnf->len*2) != 0){
+ mcf_ut_format_err_str("Config LID, VAL_BYTE_11, %s, %s\r\n", cnf->value, test_pattern);
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 1){
+ mcf_ut_format_err_str("Config LID, VAL_BYTE_11, %d, %d\r\n", cnf->len, 1);
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+
+ /* Test 3-d array */
+
+ /* Write MCF OTA file version to NVRAM */
+ kal_mem_set(&nv_ota_file, 0, sizeof(nvram_ef_mcf_ota_file_info_struct));
+ strncpy(nv_ota_file.path, MCF_FS_DEFAULT_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN);
+ strncpy(nv_ota_file.name, MCF_FS_DEFAULT_OTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN);
+ 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)) ) {
+ mcf_ut_format_err_str("Fail to write MCF OTA file info to NVRAM!!\r\n");
+ return KAL_FALSE;
+ }
+ kal_mem_set(&nv_sw_info, 0, sizeof(nvram_ef_mcf_sw_info_struct));
+ strncpy(nv_sw_info.last_update_file.sw_version, MCF_UT_SW_VERNO, MCF_FILE_MAX_SW_VERSION_LEN);
+ strncpy(nv_sw_info.last_update_file.gen_time, MCF_UT_GEN_TIME, MCF_FILE_MAX_GEN_TIME_LEN);
+ strcpy(nv_sw_info.last_update_file.path, "");
+ strcpy(nv_sw_info.last_update_file.name, "");
+ if ( !nvram_external_write_data(NVRAM_EF_MCF_SW_INFO_LID, 1, (kal_uint8 *)&nv_sw_info, sizeof(nvram_ef_mcf_sw_info_struct)) ) {
+ mcf_ut_format_err_str("Fail to write MCF sw info to NVRAM!!\r\n");
+ return KAL_FALSE;
+ }
+
+ /*
+ * Apply 3-d array default OTA
+ */
+ MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ if (ota_file) {
+ ret = mcf_ut_open_test_data("MCF_OTA_ut_3d_array_normal.mcfota", (kal_char *)(ota_file->buff), MCF_MAX_OTA_FILE_SIZE);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_OTA_ut_3d_array_normal.mcfota");
+ return KAL_FALSE;
+ }
+
+ MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Reset LID FAIL!! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+
+ mcf_ret = mcf_do_ota_full();
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Reset LID FAIL!! ret(%d) \r\n", mcf_ret);
+ return KAL_FALSE;
+ }
+
+ req = (l4c_mcf_config_lid_variable_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_LID_VARIABLE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
+ req->lid_num = 4098;
+ req->rec_id = 1;
+ req->len = 0;
+ strcpy(req->tag_name, "VAL_STRUCT_3[0].ARRAY_D[4][3][2]");
+
+ cnf = (l4c_mcf_config_lid_variable_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_config_LID_variable(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Config LID variable (%s) FAIL!!\r\n", "VAL_STRUCT_3[0].ARRAY_D[4][3][2]");
+ return KAL_FALSE;
+ }
+
+
+ if(strncmp((kal_char *)(cnf->value), "06", cnf->len*2) != 0){
+ mcf_ut_format_err_str("Config LID, VAL_STRUCT_3[0].ARRAY_D[4][3][2], %s, %s\r\n", cnf->value, "06");
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 1){
+ mcf_ut_format_err_str("Config LID, VAL_STRUCT_3[0].ARRAY_D[4][3][2], %d, %d\r\n", cnf->len, 1);
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+ req = (l4c_mcf_config_lid_variable_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_LID_VARIABLE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
+ req->lid_num = 4098;
+ req->rec_id = 1;
+ req->len = 4;
+ strcpy(req->tag_name, "VAL_STRUCT_3[0].ARRAY_D[4][3]");
+
+ cnf = (l4c_mcf_config_lid_variable_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_config_LID_variable(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Config LID variable (%s) FAIL!!\r\n", "VAL_STRUCT_3[0].ARRAY_D[4][3]");
+ return KAL_FALSE;
+ }
+
+
+ if(strncmp((kal_char *)(cnf->value), "060606", cnf->len*2) != 0){
+ mcf_ut_format_err_str("Config LID, VAL_STRUCT_3[0].ARRAY_D[4][3], %s, %s\r\n", cnf->value, "060606");
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 3){
+ mcf_ut_format_err_str("Config LID, VAL_STRUCT_3[0].ARRAY_D[4][3], %d, %d\r\n", cnf->len, 3);
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+ req = (l4c_mcf_config_lid_variable_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_LID_VARIABLE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
+ req->lid_num = 4098;
+ req->rec_id = 1;
+ req->len = 0;
+ strcpy(req->tag_name, "VAL_STRUCT_3[0].ARRAY_D[4][3]");
+
+ cnf = (l4c_mcf_config_lid_variable_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_config_LID_variable(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Config LID variable (%s) FAIL!!\r\n", "VAL_STRUCT_3[0].ARRAY_D[4][3]");
+ return KAL_FALSE;
+ }
+
+
+ if(strncmp((kal_char *)(cnf->value), "060606", cnf->len*2) != 0){
+ mcf_ut_format_err_str("Config LID, VAL_STRUCT_3[0].ARRAY_D[4][3], %s, %s\r\n", cnf->value, "060606");
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 3){
+ mcf_ut_format_err_str("Config LID, VAL_STRUCT_3[0].ARRAY_D[4][3], %d, %d\r\n", cnf->len, 3);
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+ req = (l4c_mcf_config_lid_variable_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_LID_VARIABLE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
+ req->lid_num = 4098;
+ req->rec_id = 1;
+ req->len = 0;
+ strcpy(req->tag_name, "VAL_STRUCT_3[0].ARRAY_D[4]");
+
+ cnf = (l4c_mcf_config_lid_variable_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_config_LID_variable(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Config LID variable (%s) FAIL!!\r\n", "VAL_STRUCT_3[0].ARRAY_D[4]");
+ return KAL_FALSE;
+ }
+
+
+ if(strncmp((kal_char *)(cnf->value), "060606060606060606060606", cnf->len*2) != 0){
+ mcf_ut_format_err_str("Config LID, VAL_STRUCT_3[0].ARRAY_D[4], %s, %s\r\n", cnf->value, "060606060606060606060606");
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 12){
+ mcf_ut_format_err_str("Config LID, VAL_STRUCT_3[0].ARRAY_D[4], %d, %d\r\n", cnf->len, 12);
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+ req = (l4c_mcf_config_lid_variable_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_LID_VARIABLE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
+ req->lid_num = 4098;
+ req->rec_id = 1;
+ req->len = 0;
+ strcpy(req->tag_name, "VAL_STRUCT_3[0].ARRAY_D");
+
+ cnf = (l4c_mcf_config_lid_variable_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_config_LID_variable(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Config LID variable (%s) FAIL!!\r\n", "VAL_STRUCT_3[0].ARRAY_D");
+ return KAL_FALSE;
+ }
+
+
+ if(strncmp((kal_char *)(cnf->value), "060606060606060606060606060606060606060606060606060606060606060606060606060606060606060606060606060606060606060606060606", cnf->len*2) != 0){
+ mcf_ut_format_err_str("Config LID, VAL_STRUCT_3[0].ARRAY_D, %s, %s\r\n", cnf->value, "060606060606060606060606060606060606060606060606060606060606060606060606060606060606060606060606060606060606060606060606060606060606060606060606");
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 60){
+ mcf_ut_format_err_str("Config LID, VAL_STRUCT_3[0].ARRAY_D, %d, %d\r\n", cnf->len, 60);
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+ req = (l4c_mcf_config_lid_variable_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_LID_VARIABLE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
+ req->lid_num = 4098;
+ req->rec_id = 1;
+ req->len = 2;
+ strcpy(req->tag_name, "VAL_STRUCT_3[0].ARRAY_D[4][2]");
+
+ cnf = (l4c_mcf_config_lid_variable_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_config_LID_variable(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Config LID variable (%s) FAIL!!\r\n", "VAL_STRUCT_3[0].ARRAY_D[4][2]");
+ return KAL_FALSE;
+ }
+
+
+ if(strncmp((kal_char *)(cnf->value), "0606", cnf->len*2) != 0){
+ mcf_ut_format_err_str("Config LID, VAL_STRUCT_3[0].ARRAY_D[4][2], %s, %s\r\n", cnf->value, "0606");
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 2){
+ mcf_ut_format_err_str("Config LID, VAL_STRUCT_3[0].ARRAY_D[4][2], %d, %d\r\n", cnf->len, 2);
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+ req = (l4c_mcf_config_lid_variable_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_LID_VARIABLE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
+ req->lid_num = 4098;
+ req->rec_id = 1;
+ req->len = 10;
+ strcpy(req->tag_name, "VAL_STRUCT_3[0].ARRAY_D[3]");
+
+ cnf = (l4c_mcf_config_lid_variable_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_config_LID_variable(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Config LID variable (%s) FAIL!!\r\n", "VAL_STRUCT_3[0].ARRAY_D[3]");
+ return KAL_FALSE;
+ }
+
+
+ if(strncmp((kal_char *)(cnf->value), "06060606060606060606", cnf->len*2) != 0){
+ mcf_ut_format_err_str("Config LID, VAL_STRUCT_3[0].ARRAY_D[3], %s, %s\r\n", cnf->value, "06060606060606060606");
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 10){
+ mcf_ut_format_err_str("Config LID, VAL_STRUCT_3[0].ARRAY_D[3], %d, %d\r\n", cnf->len, 2);
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+
+ /* Different variable size */
+
+ req = (l4c_mcf_config_lid_variable_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_LID_VARIABLE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
+ req->lid_num = 4098;
+ req->rec_id = 1;
+ req->len = 0;
+ strcpy(req->tag_name, "VAL_STRUCT_3[0].ARRAY_D4[4][3][2]");
+
+ cnf = (l4c_mcf_config_lid_variable_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_config_LID_variable(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Config LID variable (%s) FAIL!!\r\n", "VAL_STRUCT_3[0].ARRAY_D4[4][3][2]");
+ return KAL_FALSE;
+ }
+
+
+ if(strncmp((kal_char *)(cnf->value), "06000000", cnf->len*8) != 0){
+ mcf_ut_format_err_str("Config LID, VAL_STRUCT_3[0].ARRAY_D4[4][3][2], %s, %s\r\n", cnf->value, "06000000");
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 1){
+ mcf_ut_format_err_str("Config LID, VAL_STRUCT_3[0].ARRAY_D4[4][3][2], %d, %d\r\n", cnf->len, 1);
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+ req = (l4c_mcf_config_lid_variable_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_LID_VARIABLE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
+ req->lid_num = 4098;
+ req->rec_id = 1;
+ req->len = 0;
+ strcpy(req->tag_name, "VAL_STRUCT_3[0].ARRAY_D4[4][3]");
+
+ cnf = (l4c_mcf_config_lid_variable_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_config_LID_variable(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Config LID variable (%s) FAIL!!\r\n", "VAL_STRUCT_3[0].ARRAY_D4[4][3]");
+ return KAL_FALSE;
+ }
+
+
+ if(strncmp((kal_char *)(cnf->value), "060000000600000006000000", cnf->len*8) != 0){
+ mcf_ut_format_err_str("Config LID, VAL_STRUCT_3[0].ARRAY_D4[4][3], %s, %s\r\n", cnf->value, "060000000600000006000000");
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 3){
+ mcf_ut_format_err_str("Config LID, VAL_STRUCT_3[0].ARRAY_D4[4][3], %d, %d\r\n", cnf->len, 3);
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+ req = (l4c_mcf_config_lid_variable_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_LID_VARIABLE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
+ req->lid_num = 4098;
+ req->rec_id = 1;
+ req->len = 0;
+ strcpy(req->tag_name, "VAL_STRUCT_3[0].ARRAY_D4[4]");
+
+ cnf = (l4c_mcf_config_lid_variable_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_config_LID_variable(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Config LID variable (%s) FAIL!!\r\n", "VAL_STRUCT_3[0].ARRAY_D4[4]");
+ return KAL_FALSE;
+ }
+
+
+ if(strncmp((kal_char *)(cnf->value), "060000000600000006000000060000000600000006000000060000000600000006000000060000000600000006000000", cnf->len*8) != 0){
+ mcf_ut_format_err_str("Config LID, VAL_STRUCT_3[0].ARRAY_D4[4], %s, %s\r\n", cnf->value, "060000000600000006000000060000000600000006000000060000000600000006000000060000000600000006000000");
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 12){
+ mcf_ut_format_err_str("Config LID, VAL_STRUCT_3[0].ARRAY_D4[4], %d, %d\r\n", cnf->len, 12);
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+ req = (l4c_mcf_config_lid_variable_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_LID_VARIABLE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
+ req->lid_num = 4098;
+ req->rec_id = 1;
+ req->len = 2;
+ strcpy(req->tag_name, "VAL_STRUCT_3[0].ARRAY_D4[4]");
+
+ cnf = (l4c_mcf_config_lid_variable_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_config_LID_variable(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Config LID variable (%s) FAIL!!\r\n", "VAL_STRUCT_3[0].ARRAY_D4[4]");
+ return KAL_FALSE;
+ }
+
+
+ if(strncmp((kal_char *)(cnf->value), "0600000006000000", cnf->len*8) != 0){
+ mcf_ut_format_err_str("Config LID, VAL_STRUCT_3[0].ARRAY_D4[4], %s, %s\r\n", cnf->value, "0600000006000000");
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 2){
+ mcf_ut_format_err_str("Config LID, VAL_STRUCT_3[0].ARRAY_D4[4], %d, %d\r\n", cnf->len, 2);
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+ req = (l4c_mcf_config_lid_variable_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_LID_VARIABLE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
+ req->lid_num = 4098;
+ req->rec_id = 1;
+ req->len = 2;
+ strcpy(req->tag_name, "VAL_STRUCT_3[0].ARRAY_D4[4][2]");
+
+ cnf = (l4c_mcf_config_lid_variable_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_config_LID_variable(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Config LID variable (%s) FAIL!!\r\n", "VAL_STRUCT_3[0].ARRAY_D4[4][2]");
+ return KAL_FALSE;
+ }
+
+
+ if(strncmp((kal_char *)(cnf->value), "0600000006000000", cnf->len*8) != 0){
+ mcf_ut_format_err_str("Config LID, VAL_STRUCT_3[0].ARRAY_D4[4], %s, %s\r\n", cnf->value, "0600000006000000");
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 2){
+ mcf_ut_format_err_str("Config LID, VAL_STRUCT_3[0].ARRAY_D4[4], %d, %d\r\n", cnf->len, 2);
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+ req = (l4c_mcf_config_lid_variable_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_LID_VARIABLE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
+ req->lid_num = 4098;
+ req->rec_id = 1;
+ req->len = 0;
+ strcpy(req->tag_name, "VAL_STRUCT_3[0].ARRAY_D4");
+
+ cnf = (l4c_mcf_config_lid_variable_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_config_LID_variable(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Config LID variable (%s) FAIL!!\r\n", "VAL_STRUCT_3[0].ARRAY_D4");
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(test_pattern, 0 , 512);
+ for (i = 0; i < cnf->len; i++){
+ kal_mem_cpy(test_pattern+(i*8),"06000000",8);
+ }
+
+ if(strncmp((kal_char *)(cnf->value), test_pattern, cnf->len*8) != 0){
+ mcf_ut_format_err_str("Config LID, VAL_STRUCT_3[0].ARRAY_D4, %s, %s\r\n", cnf->value, test_pattern);
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 60){
+ mcf_ut_format_err_str("Config LID, VAL_STRUCT_3[0].ARRAY_D4, %d, %d\r\n", cnf->len, 60);
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+ /* Nagative test case */
+
+ req = (l4c_mcf_config_lid_variable_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_LID_VARIABLE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
+ req->lid_num = 4098;
+ req->rec_id = 1;
+ req->len = 0;
+ strcpy(req->tag_name, "VAL_STRUCT_3[0].ARRAY_D[5]");
+
+ cnf = (l4c_mcf_config_lid_variable_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_config_LID_variable(req, cnf);
+ if (mcf_ret != MCF_OTA_R_INVALID_PARAMETER) {
+ mcf_ut_format_err_str("Config LID variable (%s) FAIL!!\r\n", "VAL_STRUCT_3[0].ARRAY_D[5]");
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+ req = (l4c_mcf_config_lid_variable_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_LID_VARIABLE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
+ req->lid_num = 4098;
+ req->rec_id = 1;
+ req->len = 0;
+ strcpy(req->tag_name, "VAL_STRUCT_3[4]");
+
+ cnf = (l4c_mcf_config_lid_variable_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_config_LID_variable(req, cnf);
+ if (mcf_ret != MCF_OTA_R_INVALID_PARAMETER) {
+ mcf_ut_format_err_str("Config LID variable (%s) FAIL!!\r\n", "VAL_STRUCT_3[4]");
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+ /*
+ * Apply 2bytes to bit default OTA
+ */
+ MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ if (ota_file) {
+ 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);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_OTA_ut_2byte_normal.mcfota");
+ return KAL_FALSE;
+ }
+
+ MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Reset LID FAIL!! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+
+ mcf_ret = mcf_do_ota_full();
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Reset LID FAIL!! ret(%d) \r\n", mcf_ret);
+ return KAL_FALSE;
+ }
+
+ req = (l4c_mcf_config_lid_variable_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_LID_VARIABLE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
+ req->lid_num = 4098;
+ req->rec_id = 1;
+ req->len = 0;
+ strcpy(req->tag_name, "val_bit_2byte_3");
+
+ cnf = (l4c_mcf_config_lid_variable_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_config_LID_variable(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Config LID variable (%s) FAIL!!\r\n", "val_bit_2byte_3");
+ return KAL_FALSE;
+ }
+
+
+ if(strncmp((kal_char *)(cnf->value), "F02F", cnf->len*4) != 0){
+ mcf_ut_format_err_str("Config LID, val_bit_2byte_3, %s, %s\r\n", cnf->value, "F02F");
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 2){
+ mcf_ut_format_err_str("Config LID, val_bit_2byte_3, %d, %d\r\n", cnf->len, 2);
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+ req = (l4c_mcf_config_lid_variable_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_LID_VARIABLE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
+ req->lid_num = 4098;
+ req->rec_id = 1;
+ req->len = 0;
+ strcpy(req->tag_name, "val_bit_2byte_3.F4b");
+
+ cnf = (l4c_mcf_config_lid_variable_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_config_LID_variable(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Config LID variable (%s) FAIL!!\r\n", "val_bit_2byte_3.F4b");
+ return KAL_FALSE;
+ }
+
+
+ if(strncmp((kal_char *)(cnf->value), "00", cnf->len*2) != 0){
+ mcf_ut_format_err_str("Config LID, val_bit_2byte_3.F4b, %s, %s\r\n", cnf->value, "00");
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 1){
+ mcf_ut_format_err_str("Config LID, val_bit_2byte_3.F4b, %d, %d\r\n", cnf->len, 1);
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+ req = (l4c_mcf_config_lid_variable_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_LID_VARIABLE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
+ req->lid_num = 4098;
+ req->rec_id = 1;
+ req->len = 0;
+ strcpy(req->tag_name, "val_bit_2byte_3.L4b");
+
+ cnf = (l4c_mcf_config_lid_variable_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_config_LID_variable(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Config LID variable (%s) FAIL!!\r\n", "val_bit_2byte_3.L4b");
+ return KAL_FALSE;
+ }
+
+
+ if(strncmp((kal_char *)(cnf->value), "0F", cnf->len*2) != 0){
+ mcf_ut_format_err_str("Config LID, val_bit_2byte_3.L4b, %s, %s\r\n", cnf->value, "0F");
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 1){
+ mcf_ut_format_err_str("Config LID, val_bit_2byte_3.L4b, %d, %d\r\n", cnf->len, 1);
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+ req = (l4c_mcf_config_lid_variable_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_LID_VARIABLE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
+ req->lid_num = 4098;
+ req->rec_id = 1;
+ req->len = 0;
+ strcpy(req->tag_name, "val_bit_2byte_3.F2b");
+
+ cnf = (l4c_mcf_config_lid_variable_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_config_LID_variable(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Config LID variable (%s) FAIL!!\r\n", "val_bit_2byte_3.F2b");
+ return KAL_FALSE;
+ }
+
+
+ if(strncmp((kal_char *)(cnf->value), "03", cnf->len*2) != 0){
+ mcf_ut_format_err_str("Config LID, val_bit_2byte_3.F2b, %s, %s\r\n", cnf->value, "03");
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 1){
+ mcf_ut_format_err_str("Config LID, val_bit_2byte_3.F2b, %d, %d\r\n", cnf->len, 1);
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+ req = (l4c_mcf_config_lid_variable_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_LID_VARIABLE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
+ req->lid_num = 4098;
+ req->rec_id = 1;
+ req->len = 0;
+ strcpy(req->tag_name, "val_bit_2byte_3.L2b");
+
+ cnf = (l4c_mcf_config_lid_variable_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_config_LID_variable(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Config LID variable (%s) FAIL!!\r\n", "val_bit_2byte_3.L2b");
+ return KAL_FALSE;
+ }
+
+
+ if(strncmp((kal_char *)(cnf->value), "03", cnf->len*2) != 0){
+ mcf_ut_format_err_str("Config LID, val_bit_2byte_3.L2b, %s, %s\r\n", cnf->value, "03");
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 1){
+ mcf_ut_format_err_str("Config LID, val_bit_2byte_3.L2b, %d, %d\r\n", cnf->len, 1);
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+ req = (l4c_mcf_config_lid_variable_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_LID_VARIABLE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
+ req->lid_num = 4098;
+ req->rec_id = 1;
+ req->len = 0;
+ strcpy(req->tag_name, "val_bit_2byte_3.b2");
+
+ cnf = (l4c_mcf_config_lid_variable_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_config_LID_variable(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Config LID variable (%s) FAIL!!\r\n", "val_bit_2byte_3.b2");
+ return KAL_FALSE;
+ }
+
+
+ if(strncmp((kal_char *)(cnf->value), "01", cnf->len*2) != 0){
+ mcf_ut_format_err_str("Config LID, val_bit_2byte_3.b2, %s, %s\r\n", cnf->value, "01");
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 1){
+ mcf_ut_format_err_str("Config LID, val_bit_2byte_3.b2, %d, %d\r\n", cnf->len, 1);
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+ req = (l4c_mcf_config_lid_variable_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_LID_VARIABLE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
+ req->lid_num = 4098;
+ req->rec_id = 1;
+ req->len = 0;
+ strcpy(req->tag_name, "val_bit_4byte_3");
+
+ cnf = (l4c_mcf_config_lid_variable_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_config_LID_variable(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Config LID variable (%s) FAIL!!\r\n", "val_bit_4byte_3");
+ return KAL_FALSE;
+ }
+
+
+ if(strncmp((kal_char *)(cnf->value), "0001FE0F", cnf->len*2) != 0){
+ mcf_ut_format_err_str("Config LID, val_bit_4byte_3, %s, %s\r\n", cnf->value, "0001FE0F");
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 4){
+ mcf_ut_format_err_str("Config LID, val_bit_4byte_3, %d, %d\r\n", cnf->len, 4);
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+ req = (l4c_mcf_config_lid_variable_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_LID_VARIABLE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
+ req->lid_num = 4098;
+ req->rec_id = 1;
+ req->len = 0;
+ strcpy(req->tag_name, "val_bit_4byte_3.F9b");
+
+ cnf = (l4c_mcf_config_lid_variable_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_config_LID_variable(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Config LID variable (%s) FAIL!!\r\n", "val_bit_4byte_3.F9b");
+ return KAL_FALSE;
+ }
+
+
+ if(strncmp((kal_char *)(cnf->value), "0001", cnf->len*2) != 0){
+ mcf_ut_format_err_str("Config LID, val_bit_4byte_3.F9b, %s, %s\r\n", cnf->value, "0001");
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 2){
+ mcf_ut_format_err_str("Config LID, val_bit_4byte_3.F9b, %d, %d\r\n", cnf->len, 2);
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+ req = (l4c_mcf_config_lid_variable_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_LID_VARIABLE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
+ req->lid_num = 4098;
+ req->rec_id = 1;
+ req->len = 0;
+ strcpy(req->tag_name, "val_bit_4byte_3.F4b");
+
+ cnf = (l4c_mcf_config_lid_variable_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_config_LID_variable(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Config LID variable (%s) FAIL!!\r\n", "val_bit_4byte_3.F4b");
+ return KAL_FALSE;
+ }
+
+
+ if(strncmp((kal_char *)(cnf->value), "0F", cnf->len*2) != 0){
+ mcf_ut_format_err_str("Config LID, val_bit_4byte_3.F4b, %s, %s\r\n", cnf->value, "0F");
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 1){
+ mcf_ut_format_err_str("Config LID, val_bit_4byte_3.F4b, %d, %d\r\n", cnf->len, 1);
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+ req = (l4c_mcf_config_lid_variable_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_LID_VARIABLE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
+ req->lid_num = 4098;
+ req->rec_id = 1;
+ req->len = 0;
+ strcpy(req->tag_name, "val_bit_4byte_3.F2b");
+
+ cnf = (l4c_mcf_config_lid_variable_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_config_lid_variable_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_config_LID_variable(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Config LID variable (%s) FAIL!!\r\n", "val_bit_4byte_3.F2b");
+ return KAL_FALSE;
+ }
+
+
+ if(strncmp((kal_char *)(cnf->value), "03", cnf->len*2) != 0){
+ mcf_ut_format_err_str("Config LID, val_bit_4byte_3.F2b, %s, %s\r\n", cnf->value, "03");
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 1){
+ mcf_ut_format_err_str("Config LID, val_bit_4byte_3.F2b, %d, %d\r\n", cnf->len, 1);
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+ MCF_UT_PASS();
+ return KAL_TRUE;
+}
+
+kal_bool mcf_ut_query_variable_value(void *p_param, kal_char *p_ret_err_str, kal_uint32 *p_ret_err_str_sz)
+{
+ kal_bool ret;
+ l4c_mcf_variable_value_operation_req_struct *req = NULL;
+ l4c_mcf_variable_value_operation_cnf_struct *cnf = NULL;
+ mcf_ota_result_e mcf_ret = MCF_OTA_R_SUCCESS;
+ mcf_t *pMcf = mcf_get_instance();
+ mcf_ota_file_t *ota_file = &(pMcf->ota_file);
+ mcf_tool_file_info_t *pFile = (mcf_tool_file_info_t *)(ota_file->buff);
+ nvram_ef_mcf_ota_file_info_struct nv_ota_file;
+ nvram_ef_mcf_sw_info_struct nv_sw_info;
+ mcf_tlvota_file_t *tlvota_file;
+ nvram_ef_mcf_tlvota_file_info_struct nv_tlvota_file;
+ mcf_tlvota_sbp_tag_t sbp_tag;
+ kal_uint8 i;
+ kal_uint8 test_pattern[512];
+ kal_uint8 array_tag[16];
+ nvram_ef_mcf_test_struct nv_lid_buffer;
+
+#ifdef __MCF_FIND_TAG_SUPPORT__
+ /* Write MCF OTA file version to NVRAM */
+ kal_mem_set(&nv_ota_file, 0, sizeof(nvram_ef_mcf_ota_file_info_struct));
+ strncpy(nv_ota_file.path, MCF_FS_DEFAULT_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN);
+ strncpy(nv_ota_file.name, MCF_FS_DEFAULT_OTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN);
+ 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)) ) {
+ mcf_ut_format_err_str("Fail to write MCF OTA file info to NVRAM!!\r\n");
+ return KAL_FALSE;
+ }
+ kal_mem_set(&nv_sw_info, 0, sizeof(nvram_ef_mcf_sw_info_struct));
+ strncpy(nv_sw_info.last_update_file.sw_version, MCF_UT_SW_VERNO, MCF_FILE_MAX_SW_VERSION_LEN);
+ strncpy(nv_sw_info.last_update_file.gen_time, MCF_UT_GEN_TIME, MCF_FILE_MAX_GEN_TIME_LEN);
+ strcpy(nv_sw_info.last_update_file.path, "");
+ strcpy(nv_sw_info.last_update_file.name, "");
+ if ( !nvram_external_write_data(NVRAM_EF_MCF_SW_INFO_LID, 1, (kal_uint8 *)&nv_sw_info, sizeof(nvram_ef_mcf_sw_info_struct)) ) {
+ mcf_ut_format_err_str("Fail to write MCF sw info to NVRAM!!\r\n");
+ return KAL_FALSE;
+ }
+
+ /*
+ * Apply default OTA
+ */
+ MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ if (ota_file) {
+ ret = mcf_ut_open_test_data("MCF_OTA_ut_normal.mcfota", (kal_char *)(ota_file->buff), MCF_MAX_OTA_FILE_SIZE);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_OTA_ut_normal.mcfota");
+ return KAL_FALSE;
+ }
+
+ MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Reset LID FAIL!! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+
+ mcf_ret = mcf_do_ota_full();
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Reset LID FAIL!! ret(%d) \r\n", mcf_ret);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_test_lid_value(NULL);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Reset LID FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+ //Byte operation
+ req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
+ req->format = L4C_MCF_QUERY_VARIABLE_FORM_PATH;
+ req->num = 4098;
+ req->rec_id = 1;
+ req->len = 0;
+ strcpy(req->config, "VAL_BYTE_11");
+
+ cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
+
+
+ mcf_ret = mcf_query_variable_value(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Query Variable Value (%s) FAIL!!\r\n", "VAL_BYTE_11");
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(test_pattern,0,512);
+ mcf_bytes_to_hex(&(mcf_ut_test_lid_value_pattern.val_byte_11), cnf->len, KAL_FALSE, &test_pattern);
+ mcf_toupper((char *)test_pattern);
+
+ if(strncmp((kal_char *)(cnf->value), test_pattern, cnf->len*2) != 0){
+ mcf_ut_format_err_str("VAL_BYTE_11, %s, %s\r\n", cnf->value, test_pattern);
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 1){
+ mcf_ut_format_err_str("VAL_BYTE_11, %d, %d\r\n", cnf->len, 1);
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+ //Bit operation
+ req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
+ req->format = L4C_MCF_QUERY_VARIABLE_FORM_PATH;
+ req->num = 4098;
+ req->rec_id = 1;
+ req->len = 0;
+ strcpy(req->config, "VAL_BIT_BYTE_11");
+
+ cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_query_variable_value(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Query Variable Value (%s) FAIL!!\r\n", "VAL_BYTE_11");
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(test_pattern,0,512);
+ mcf_bytes_to_hex(&(mcf_ut_test_lid_value_pattern.val_bit_byte_11), cnf->len, KAL_FALSE, &test_pattern);
+ mcf_toupper((char *)test_pattern);
+
+ if(strncmp((kal_char *)(cnf->value), test_pattern, cnf->len*2) != 0){
+ mcf_ut_format_err_str("VAL_BIT_BYTE_11, %s, %s\r\n", cnf->value, test_pattern);
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 1){
+ mcf_ut_format_err_str("VAL_BIT_BYTE_11, %d, %d\r\n", cnf->len, 1);
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+ req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
+ req->format = L4C_MCF_QUERY_VARIABLE_FORM_PATH;
+ req->num = 4098;
+ req->rec_id = 1;
+ req->len = 0;
+ strcpy(req->config, "VAL_BIT_BYTE_11.B3");
+
+ cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_query_variable_value(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Query Variable Value (%s) FAIL!!\r\n", "VAL_BYTE_11.B3");
+ return KAL_FALSE;
+ }
+
+ if(strncmp((kal_char *)(cnf->value), "01", cnf->len*2) != 0){
+ mcf_ut_format_err_str("VAL_BIT_BYTE_11.B3, %s, %s\r\n", cnf->value, "01");
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 1){
+ mcf_ut_format_err_str("VAL_BIT_BYTE_11.B3, %d, %d\r\n", cnf->len, 1);
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+ req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
+ req->format = L4C_MCF_QUERY_VARIABLE_FORM_PATH;
+ req->num = 4098;
+ req->rec_id = 1;
+ req->len = 0;
+ strcpy(req->config, "val_bit_byte_12");
+
+ cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_query_variable_value(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Query Variable Value (%s) FAIL!!\r\n", "val_bit_byte_12");
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(test_pattern,0,512);
+ mcf_bytes_to_hex(&(mcf_ut_test_lid_value_pattern.val_bit_byte_12), cnf->len, KAL_FALSE, &test_pattern);
+ mcf_toupper((char *)test_pattern);
+
+ if(strncmp((kal_char *)(cnf->value), test_pattern, cnf->len*2) != 0){
+ mcf_ut_format_err_str("val_bit_byte_12, %s, %s\r\n", cnf->value, test_pattern);
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 1){
+ mcf_ut_format_err_str("val_bit_byte_12, %d, %d\r\n", cnf->len, 1);
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+ req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
+ req->format = L4C_MCF_QUERY_VARIABLE_FORM_PATH;
+ req->num = 4098;
+ req->rec_id = 1;
+ req->len = 0;
+ strcpy(req->config, "val_bit_byte_12.L4b");
+
+ cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_query_variable_value(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Query Variable Value (%s) FAIL!!\r\n", "val_bit_byte_12.L4b");
+ return KAL_FALSE;
+ }
+
+ if(strncmp((kal_char *)(cnf->value), "0F", cnf->len*2) != 0){
+ mcf_ut_format_err_str("val_bit_byte_12.F4b, %s, %s\r\n", cnf->value, test_pattern);
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 1){
+ mcf_ut_format_err_str("val_bit_byte_12.F4b, %d, %d\r\n", cnf->len, 1);
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+ //short operation
+ req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
+ req->format = L4C_MCF_QUERY_VARIABLE_FORM_PATH;
+ req->num = 4098;
+ req->rec_id = 1;
+ req->len = 0;
+ strcpy(req->config, "val_short_11");
+
+ cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_query_variable_value(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Query Variable Value (%s) FAIL!!\r\n", "val_short_11");
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(test_pattern,0,512);
+ mcf_bytes_to_hex(&(mcf_ut_test_lid_value_pattern.val_short_11), cnf->len*2, KAL_FALSE, &test_pattern);
+ mcf_toupper((char *)test_pattern);
+
+ if(strncmp((kal_char *)(cnf->value), test_pattern, cnf->len*4) != 0){
+ mcf_ut_format_err_str("val_short_11, %s, %s\r\n", cnf->value, test_pattern);
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 1){
+ mcf_ut_format_err_str("val_short_11, %d, %d\r\n", cnf->len, 1);
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+
+ //double operation
+ req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
+ req->format = L4C_MCF_QUERY_VARIABLE_FORM_PATH;
+ req->num = 4098;
+ req->rec_id = 1;
+ req->len = 2;
+ strcpy(req->config, "val_double_1");
+
+ cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_query_variable_value(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Query Variable Value (%s) FAIL!!\r\n", "val_double_1");
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(test_pattern,0,512);
+ mcf_bytes_to_hex(&(mcf_ut_test_lid_value_pattern.val_double_1), cnf->len*8, KAL_FALSE, &test_pattern);
+ mcf_toupper((char *)test_pattern);
+
+ if(strncmp((kal_char *)(cnf->value), test_pattern, cnf->len*16) != 0){
+ mcf_ut_format_err_str("val_double_1, %s, %s\r\n", cnf->value, test_pattern);
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 1){
+ mcf_ut_format_err_str("val_double_1, %d, %d\r\n", cnf->len, 1);
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+ //buffer operation with len = 2
+ req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
+ req->format = L4C_MCF_QUERY_VARIABLE_FORM_PATH;
+ req->num = 4098;
+ req->rec_id = 1;
+ req->len = 2;
+ strcpy(req->config, "val_buffer_1");
+
+ cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_query_variable_value(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Query Variable Value (%s) FAIL!!\r\n", "val_buffer_1");
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(test_pattern,0,512);
+ mcf_bytes_to_hex(&(mcf_ut_test_lid_value_pattern.val_buffer_1), cnf->len, KAL_FALSE, &test_pattern);
+ mcf_toupper((char *)test_pattern);
+
+ if(strncmp((kal_char *)(cnf->value), test_pattern, cnf->len*2) != 0){
+ mcf_ut_format_err_str("val_buffer_1, %s, %s\r\n", cnf->value, test_pattern);
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 2){
+ mcf_ut_format_err_str("val_buffer_1, %d, %d\r\n", cnf->len, 1);
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+ //buffer operation - read all buffer
+ req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
+ req->format = L4C_MCF_QUERY_VARIABLE_FORM_PATH;
+ req->num = 4098;
+ req->rec_id = 1;
+ req->len = 0;
+ strcpy(req->config, "val_buffer_1");
+
+ cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_query_variable_value(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Query Variable Value (%s) FAIL!!\r\n", "val_buffer_1");
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(test_pattern,0,512);
+ mcf_bytes_to_hex(&(mcf_ut_test_lid_value_pattern.val_buffer_1), cnf->len, KAL_FALSE, &test_pattern);
+ mcf_toupper((char *)test_pattern);
+
+ if(strncmp((kal_char *)(cnf->value), test_pattern, cnf->len*2) != 0){
+ mcf_ut_format_err_str("val_buffer_1, %s, %s\r\n", cnf->value, test_pattern);
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 32){
+ mcf_ut_format_err_str("val_buffer_1, %d, %d\r\n", cnf->len, 32);
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+ //buffer operation
+ req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
+ req->format = L4C_MCF_QUERY_VARIABLE_FORM_PATH;
+ req->num = 4098;
+ req->rec_id = 1;
+ req->len = 2;
+ strcpy(req->config, "val_buffer_1[0]");
+
+ cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_query_variable_value(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Query Variable Value (%s) FAIL!!\r\n", "val_buffer_1[0]");
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(test_pattern,0,512);
+ mcf_bytes_to_hex(&(mcf_ut_test_lid_value_pattern.val_buffer_1), cnf->len, KAL_FALSE, &test_pattern);
+ mcf_toupper((char *)test_pattern);
+
+ if(strncmp((kal_char *)(cnf->value), test_pattern, cnf->len*2) != 0){
+ mcf_ut_format_err_str("val_buffer_1, %s, %s\r\n", cnf->value, test_pattern);
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 1){
+ mcf_ut_format_err_str("val_buffer_1, %d, %d\r\n", cnf->len, 1);
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+ //float operation
+ req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
+ req->format = L4C_MCF_QUERY_VARIABLE_FORM_PATH;
+ req->num = 4098;
+ req->rec_id = 1;
+ req->len = 2;
+ strcpy(req->config, "val_struct_1.vfloat");
+
+ cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_query_variable_value(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Query Variable Value (%s) FAIL!!\r\n", "val_struct_1.vfloat");
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(test_pattern,0,512);
+ mcf_bytes_to_hex(&(mcf_ut_test_lid_value_pattern.val_struct_1.vfloat), cnf->len*4, KAL_FALSE, &test_pattern);
+ mcf_toupper((char *)test_pattern);
+
+ if(strncmp((kal_char *)(cnf->value), test_pattern, cnf->len*8) != 0){
+ mcf_ut_format_err_str("val_struct_1.vfloat, %s, %s\r\n", cnf->value, test_pattern);
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 1){
+ mcf_ut_format_err_str("val_struct_1.vfloat, %d, %d\r\n", cnf->len, 1);
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+ //int in struct operation
+ req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
+ req->format = L4C_MCF_QUERY_VARIABLE_FORM_PATH;
+ req->num = 4098;
+ req->rec_id = 1;
+ req->len = 2;
+ strcpy(req->config, "val_struct_3[0].vint");
+
+ cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_query_variable_value(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Query Variable Value (%s) FAIL!!\r\n", "val_struct_3[0].vint");
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(test_pattern,0,512);
+ mcf_bytes_to_hex(&(mcf_ut_test_lid_value_pattern.val_struct_3[0].vint), cnf->len*4, KAL_FALSE, &test_pattern);
+ mcf_toupper((char *)test_pattern);
+
+ if(strncmp((kal_char *)(cnf->value), test_pattern, cnf->len*8) != 0){
+ mcf_ut_format_err_str("val_struct_3[0].vint, %s, %s\r\n", cnf->value, test_pattern);
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 1){
+ mcf_ut_format_err_str("val_struct_3[0].vint, %d, %d\r\n", cnf->len, 1);
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+ //struct operation
+ req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
+ req->format = L4C_MCF_QUERY_VARIABLE_FORM_PATH;
+ req->num = 4098;
+ req->rec_id = 1;
+ req->len = 0;
+ strcpy(req->config, "VAL_STRUCT_3[0]");
+
+ cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_query_variable_value(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Query Variable Value (%s) FAIL!!\r\n", "val_struct_3[0]");
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(test_pattern,0,512);
+ mcf_bytes_to_hex(&(mcf_ut_test_lid_value_pattern.val_struct_3[0]), cnf->len, KAL_FALSE, &test_pattern);
+ mcf_toupper((char *)test_pattern);
+
+ if(strncmp((kal_char *)(cnf->value), test_pattern, 510) != 0){
+ mcf_ut_format_err_str("VAL_STRUCT_3[0], %s, %s\r\n", cnf->value, test_pattern);
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 255){
+ mcf_ut_format_err_str("VAL_STRUCT_3[0], %d, %d\r\n", cnf->len, 255);
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+ //buffer in struct operation
+ req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
+ req->format = L4C_MCF_QUERY_VARIABLE_FORM_PATH;
+ req->num = 4098;
+ req->rec_id = 1;
+ req->len = 0;
+ strcpy(req->config, "VAL_STRUCT_3[3].VBUFFER[2][4][5]");
+
+ cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_query_variable_value(req, cnf);
+ if (mcf_ret != MCF_OTA_R_INVALID_PARAMETER) {
+ mcf_ut_format_err_str("Query Variable Value (%s) FAIL!!\r\n", "VAL_STRUCT_3[3].VBUFFER[2][4][5]");
+ return KAL_FALSE;
+ }
+
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+
+ /* Test TLV OTA */
+ /* Write MCF TLV-OTA file version to NVRAM */
+ kal_mem_set(&nv_tlvota_file, 0, sizeof(nvram_ef_mcf_tlvota_file_info_struct));
+ strncpy(nv_tlvota_file.path, MCF_FS_DEFAULT_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN);
+ strncpy(nv_tlvota_file.name, MCF_FS_DEFAULT_TLVOTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN);
+ 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)) ) {
+ mcf_ut_format_err_str("Fail to write MCF TLV-OTA file info to NVRAM!!\r\n");
+ return KAL_FALSE;
+ }
+
+ for (i = 0; i < MAX_SIM_NUM; i++) {
+ tlvota_file = &(pMcf->tlvota_file[i]);
+
+ MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ if (tlvota_file) {
+ ret = mcf_ut_open_test_data("MCF_TLVOTA_SBP_NA_ut_normal.mcfopota", (kal_char *)(tlvota_file->buff), MCF_MAX_TLVOTA_FILE_SIZE);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_TLVOTA_SBP_NA_ut_normal.mcfopota");
+ return KAL_FALSE;
+ }
+
+ MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+ }
+
+ kal_mem_set(&sbp_tag, 0, sizeof(mcf_tlvota_sbp_tag_t));
+ sbp_tag.sbp_id = SBP_TAG_SBPID;
+ strncpy(sbp_tag.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
+ strncpy(sbp_tag.mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
+
+ //byte operation
+ req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OPOTA;
+ req->format = L4C_MCF_QUERY_VARIABLE_FORM_PATH;
+ req->num = 4098;
+ req->rec_id = 1;
+ req->len = 0;
+ req->ps_id = 0;
+ strcpy(req->config, "VAL_BYTE_11");
+
+ cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_query_variable_value(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Query Variable Value (%s) FAIL!!\r\n", "VAL_BYTE_11");
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(test_pattern,0,512);
+ mcf_bytes_to_hex(&(mcf_ut_test_lid_value_pattern.val_byte_11), cnf->len, KAL_FALSE, &test_pattern);
+ mcf_toupper((char *)test_pattern);
+
+ if(strncmp((kal_char *)(cnf->value), test_pattern, cnf->len*2) != 0){
+ mcf_ut_format_err_str("VAL_BYTE_11, %s, %s\r\n", cnf->value, test_pattern);
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 1){
+ mcf_ut_format_err_str("VAL_BYTE_11, %d, %d\r\n", cnf->len, 1);
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+
+ /* Test 3-d array */
+
+ /* Write MCF OTA file version to NVRAM */
+ kal_mem_set(&nv_ota_file, 0, sizeof(nvram_ef_mcf_ota_file_info_struct));
+ strncpy(nv_ota_file.path, MCF_FS_DEFAULT_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN);
+ strncpy(nv_ota_file.name, MCF_FS_DEFAULT_OTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN);
+ 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)) ) {
+ mcf_ut_format_err_str("Fail to write MCF OTA file info to NVRAM!!\r\n");
+ return KAL_FALSE;
+ }
+ kal_mem_set(&nv_sw_info, 0, sizeof(nvram_ef_mcf_sw_info_struct));
+ strncpy(nv_sw_info.last_update_file.sw_version, MCF_UT_SW_VERNO, MCF_FILE_MAX_SW_VERSION_LEN);
+ strncpy(nv_sw_info.last_update_file.gen_time, MCF_UT_GEN_TIME, MCF_FILE_MAX_GEN_TIME_LEN);
+ strcpy(nv_sw_info.last_update_file.path, "");
+ strcpy(nv_sw_info.last_update_file.name, "");
+ if ( !nvram_external_write_data(NVRAM_EF_MCF_SW_INFO_LID, 1, (kal_uint8 *)&nv_sw_info, sizeof(nvram_ef_mcf_sw_info_struct)) ) {
+ mcf_ut_format_err_str("Fail to write MCF sw info to NVRAM!!\r\n");
+ return KAL_FALSE;
+ }
+
+ /*
+ * Apply 3-d array default OTA
+ */
+ MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ if (ota_file) {
+ ret = mcf_ut_open_test_data("MCF_OTA_ut_3d_array_normal.mcfota", (kal_char *)(ota_file->buff), MCF_MAX_OTA_FILE_SIZE);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_OTA_ut_3d_array_normal.mcfota");
+ return KAL_FALSE;
+ }
+
+ MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Reset LID FAIL!! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+
+ mcf_ret = mcf_do_ota_full();
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Reset LID FAIL!! ret(%d) \r\n", mcf_ret);
+ return KAL_FALSE;
+ }
+
+ req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
+ req->format = L4C_MCF_QUERY_VARIABLE_FORM_PATH;
+ req->num = 4098;
+ req->rec_id = 1;
+ req->len = 0;
+ strcpy(req->config, "VAL_STRUCT_3[0].ARRAY_D[4][3][2]");
+
+ cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_query_variable_value(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Query Variable Value (%s) FAIL!!\r\n", "VAL_STRUCT_3[0].ARRAY_D[4][3][2]");
+ return KAL_FALSE;
+ }
+
+
+ if(strncmp((kal_char *)(cnf->value), "06", cnf->len*2) != 0){
+ mcf_ut_format_err_str("VAL_STRUCT_3[0].ARRAY_D[4][3][2], %s, %s\r\n", cnf->value, "06");
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 1){
+ mcf_ut_format_err_str("VAL_STRUCT_3[0].ARRAY_D[4][3][2], %d, %d\r\n", cnf->len, 1);
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+ req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
+ req->format = L4C_MCF_QUERY_VARIABLE_FORM_PATH;
+ req->num = 4098;
+ req->rec_id = 1;
+ req->len = 4;
+ strcpy(req->config, "VAL_STRUCT_3[0].ARRAY_D[4][3]");
+
+ cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_query_variable_value(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Query Variable Value (%s) FAIL!!\r\n", "VAL_STRUCT_3[0].ARRAY_D[4][3]");
+ return KAL_FALSE;
+ }
+
+
+ if(strncmp((kal_char *)(cnf->value), "060606", cnf->len*2) != 0){
+ mcf_ut_format_err_str("VAL_STRUCT_3[0].ARRAY_D[4][3], %s, %s\r\n", cnf->value, "060606");
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 3){
+ mcf_ut_format_err_str("VAL_STRUCT_3[0].ARRAY_D[4][3], %d, %d\r\n", cnf->len, 3);
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+ req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
+ req->format = L4C_MCF_QUERY_VARIABLE_FORM_PATH;
+ req->num = 4098;
+ req->rec_id = 1;
+ req->len = 0;
+ strcpy(req->config, "VAL_STRUCT_3[0].ARRAY_D[4][3]");
+
+ cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_query_variable_value(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Query Variable Value (%s) FAIL!!\r\n", "VAL_STRUCT_3[0].ARRAY_D[4][3]");
+ return KAL_FALSE;
+ }
+
+
+ if(strncmp((kal_char *)(cnf->value), "060606", cnf->len*2) != 0){
+ mcf_ut_format_err_str("VAL_STRUCT_3[0].ARRAY_D[4][3], %s, %s\r\n", cnf->value, "060606");
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 3){
+ mcf_ut_format_err_str("VAL_STRUCT_3[0].ARRAY_D[4][3], %d, %d\r\n", cnf->len, 3);
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+ req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
+ req->format = L4C_MCF_QUERY_VARIABLE_FORM_PATH;
+ req->num = 4098;
+ req->rec_id = 1;
+ req->len = 0;
+ strcpy(req->config, "VAL_STRUCT_3[0].ARRAY_D[4]");
+
+ cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_query_variable_value(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Query Variable Value (%s) FAIL!!\r\n", "VAL_STRUCT_3[0].ARRAY_D[4]");
+ return KAL_FALSE;
+ }
+
+
+ if(strncmp((kal_char *)(cnf->value), "060606060606060606060606", cnf->len*2) != 0){
+ mcf_ut_format_err_str("VAL_STRUCT_3[0].ARRAY_D[4], %s, %s\r\n", cnf->value, "060606060606060606060606");
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 12){
+ mcf_ut_format_err_str("VAL_STRUCT_3[0].ARRAY_D[4], %d, %d\r\n", cnf->len, 12);
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+ req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
+ req->format = L4C_MCF_QUERY_VARIABLE_FORM_PATH;
+ req->num = 4098;
+ req->rec_id = 1;
+ req->len = 0;
+ strcpy(req->config, "VAL_STRUCT_3[0].ARRAY_D");
+
+ cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_query_variable_value(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Query Variable Value (%s) FAIL!!\r\n", "VAL_STRUCT_3[0].ARRAY_D");
+ return KAL_FALSE;
+ }
+
+
+ if(strncmp((kal_char *)(cnf->value), "060606060606060606060606060606060606060606060606060606060606060606060606060606060606060606060606060606060606060606060606", cnf->len*2) != 0){
+ mcf_ut_format_err_str("VAL_STRUCT_3[0].ARRAY_D, %s, %s\r\n", cnf->value, "060606060606060606060606060606060606060606060606060606060606060606060606060606060606060606060606060606060606060606060606060606060606060606060606");
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 60){
+ mcf_ut_format_err_str("VAL_STRUCT_3[0].ARRAY_D, %d, %d\r\n", cnf->len, 60);
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+ req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
+ req->format = L4C_MCF_QUERY_VARIABLE_FORM_PATH;
+ req->num = 4098;
+ req->rec_id = 1;
+ req->len = 2;
+ strcpy(req->config, "VAL_STRUCT_3[0].ARRAY_D[4][2]");
+
+ cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_query_variable_value(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Query Variable Value (%s) FAIL!!\r\n", "VAL_STRUCT_3[0].ARRAY_D[4][2]");
+ return KAL_FALSE;
+ }
+
+
+ if(strncmp((kal_char *)(cnf->value), "0606", cnf->len*2) != 0){
+ mcf_ut_format_err_str("VAL_STRUCT_3[0].ARRAY_D[4][2], %s, %s\r\n", cnf->value, "0606");
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 2){
+ mcf_ut_format_err_str("VAL_STRUCT_3[0].ARRAY_D[4][2], %d, %d\r\n", cnf->len, 2);
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+ req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
+ req->format = L4C_MCF_QUERY_VARIABLE_FORM_PATH;
+ req->num = 4098;
+ req->rec_id = 1;
+ req->len = 10;
+ strcpy(req->config, "VAL_STRUCT_3[0].ARRAY_D[3]");
+
+ cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_query_variable_value(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Query Variable Value (%s) FAIL!!\r\n", "VAL_STRUCT_3[0].ARRAY_D[3]");
+ return KAL_FALSE;
+ }
+
+
+ if(strncmp((kal_char *)(cnf->value), "06060606060606060606", cnf->len*2) != 0){
+ mcf_ut_format_err_str("VAL_STRUCT_3[0].ARRAY_D[3], %s, %s\r\n", cnf->value, "06060606060606060606");
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 10){
+ mcf_ut_format_err_str("VAL_STRUCT_3[0].ARRAY_D[3], %d, %d\r\n", cnf->len, 2);
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+
+ /* Different variable size */
+
+ req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
+ req->format = L4C_MCF_QUERY_VARIABLE_FORM_PATH;
+ req->num = 4098;
+ req->rec_id = 1;
+ req->len = 0;
+ strcpy(req->config, "VAL_STRUCT_3[0].ARRAY_D4[4][3][2]");
+
+ cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_query_variable_value(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Query Variable Value (%s) FAIL!!\r\n", "VAL_STRUCT_3[0].ARRAY_D4[4][3][2]");
+ return KAL_FALSE;
+ }
+
+
+ if(strncmp((kal_char *)(cnf->value), "06000000", cnf->len*8) != 0){
+ mcf_ut_format_err_str("VAL_STRUCT_3[0].ARRAY_D4[4][3][2], %s, %s\r\n", cnf->value, "06000000");
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 1){
+ mcf_ut_format_err_str("VAL_STRUCT_3[0].ARRAY_D4[4][3][2], %d, %d\r\n", cnf->len, 1);
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+ req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
+ req->format = L4C_MCF_QUERY_VARIABLE_FORM_PATH;
+ req->num = 4098;
+ req->rec_id = 1;
+ req->len = 0;
+ strcpy(req->config, "VAL_STRUCT_3[0].ARRAY_D4[4][3]");
+
+ cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_query_variable_value(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Query Variable Value (%s) FAIL!!\r\n", "VAL_STRUCT_3[0].ARRAY_D4[4][3]");
+ return KAL_FALSE;
+ }
+
+
+ if(strncmp((kal_char *)(cnf->value), "060000000600000006000000", cnf->len*8) != 0){
+ mcf_ut_format_err_str("VAL_STRUCT_3[0].ARRAY_D4[4][3], %s, %s\r\n", cnf->value, "060000000600000006000000");
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 3){
+ mcf_ut_format_err_str("VAL_STRUCT_3[0].ARRAY_D4[4][3], %d, %d\r\n", cnf->len, 3);
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+ req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
+ req->format = L4C_MCF_QUERY_VARIABLE_FORM_PATH;
+ req->num = 4098;
+ req->rec_id = 1;
+ req->len = 0;
+ strcpy(req->config, "VAL_STRUCT_3[0].ARRAY_D4[4]");
+
+ cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_query_variable_value(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Query Variable Value (%s) FAIL!!\r\n", "VAL_STRUCT_3[0].ARRAY_D4[4]");
+ return KAL_FALSE;
+ }
+
+
+ if(strncmp((kal_char *)(cnf->value), "060000000600000006000000060000000600000006000000060000000600000006000000060000000600000006000000", cnf->len*8) != 0){
+ mcf_ut_format_err_str("VAL_STRUCT_3[0].ARRAY_D4[4], %s, %s\r\n", cnf->value, "060000000600000006000000060000000600000006000000060000000600000006000000060000000600000006000000");
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 12){
+ mcf_ut_format_err_str("VAL_STRUCT_3[0].ARRAY_D4[4], %d, %d\r\n", cnf->len, 12);
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+ req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
+ req->format = L4C_MCF_QUERY_VARIABLE_FORM_PATH;
+ req->num = 4098;
+ req->rec_id = 1;
+ req->len = 2;
+ strcpy(req->config, "VAL_STRUCT_3[0].ARRAY_D4[4]");
+
+ cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_query_variable_value(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Query Variable Value (%s) FAIL!!\r\n", "VAL_STRUCT_3[0].ARRAY_D4[4]");
+ return KAL_FALSE;
+ }
+
+
+ if(strncmp((kal_char *)(cnf->value), "0600000006000000", cnf->len*8) != 0){
+ mcf_ut_format_err_str("VAL_STRUCT_3[0].ARRAY_D4[4], %s, %s\r\n", cnf->value, "0600000006000000");
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 2){
+ mcf_ut_format_err_str("VAL_STRUCT_3[0].ARRAY_D4[4], %d, %d\r\n", cnf->len, 2);
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+ req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
+ req->format = L4C_MCF_QUERY_VARIABLE_FORM_PATH;
+ req->num = 4098;
+ req->rec_id = 1;
+ req->len = 2;
+ strcpy(req->config, "VAL_STRUCT_3[0].ARRAY_D4[4][2]");
+
+ cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_query_variable_value(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Query Variable Value (%s) FAIL!!\r\n", "VAL_STRUCT_3[0].ARRAY_D4[4][2]");
+ return KAL_FALSE;
+ }
+
+
+ if(strncmp((kal_char *)(cnf->value), "0600000006000000", cnf->len*8) != 0){
+ mcf_ut_format_err_str("VAL_STRUCT_3[0].ARRAY_D4[4], %s, %s\r\n", cnf->value, "0600000006000000");
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 2){
+ mcf_ut_format_err_str("VAL_STRUCT_3[0].ARRAY_D4[4], %d, %d\r\n", cnf->len, 2);
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+ req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
+ req->format = L4C_MCF_QUERY_VARIABLE_FORM_PATH;
+ req->num = 4098;
+ req->rec_id = 1;
+ req->len = 0;
+ strcpy(req->config, "VAL_STRUCT_3[0].ARRAY_D4");
+
+ cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_query_variable_value(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Query Variable Value (%s) FAIL!!\r\n", "VAL_STRUCT_3[0].ARRAY_D4");
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(test_pattern, 0 , 512);
+ for (i = 0; i < cnf->len; i++){
+ kal_mem_cpy(test_pattern+(i*8),"06000000",8);
+ }
+
+ if(strncmp((kal_char *)(cnf->value), test_pattern, cnf->len*8) != 0){
+ mcf_ut_format_err_str("VAL_STRUCT_3[0].ARRAY_D4, %s, %s\r\n", cnf->value, test_pattern);
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 60){
+ mcf_ut_format_err_str("VAL_STRUCT_3[0].ARRAY_D4, %d, %d\r\n", cnf->len, 60);
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+ /* Nagative test case */
+
+ req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
+ req->format = L4C_MCF_QUERY_VARIABLE_FORM_PATH;
+ req->num = 4098;
+ req->rec_id = 1;
+ req->len = 0;
+ strcpy(req->config, "VAL_STRUCT_3[0].ARRAY_D[5]");
+
+ cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_query_variable_value(req, cnf);
+ if (mcf_ret != MCF_OTA_R_INVALID_PARAMETER) {
+ mcf_ut_format_err_str("Query Variable Value (%s) FAIL!!\r\n", "VAL_STRUCT_3[0].ARRAY_D[5]");
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+ req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
+ req->format = L4C_MCF_QUERY_VARIABLE_FORM_PATH;
+ req->num = 4098;
+ req->rec_id = 1;
+ req->len = 0;
+ strcpy(req->config, "VAL_STRUCT_3[4]");
+
+ cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_query_variable_value(req, cnf);
+ if (mcf_ret != MCF_OTA_R_INVALID_PARAMETER) {
+ mcf_ut_format_err_str("Query Variable Value (%s) FAIL!!\r\n", "VAL_STRUCT_3[4]");
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+ /*
+ * Apply 2bytes to bit default OTA
+ */
+ MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ if (ota_file) {
+ 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);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_OTA_ut_2byte_normal.mcfota");
+ return KAL_FALSE;
+ }
+
+ MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Reset LID FAIL!! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+
+ mcf_ret = mcf_do_ota_full();
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Reset LID FAIL!! ret(%d) \r\n", mcf_ret);
+ return KAL_FALSE;
+ }
+
+ req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
+ req->format = L4C_MCF_QUERY_VARIABLE_FORM_PATH;
+ req->num = 4098;
+ req->rec_id = 1;
+ req->len = 0;
+ strcpy(req->config, "val_bit_2byte_3");
+
+ cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_query_variable_value(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Query Variable Value (%s) FAIL!!\r\n", "val_bit_2byte_3");
+ return KAL_FALSE;
+ }
+
+
+ if(strncmp((kal_char *)(cnf->value), "F02F", cnf->len*4) != 0){
+ mcf_ut_format_err_str("val_bit_2byte_3, %s, %s\r\n", cnf->value, "F02F");
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 2){
+ mcf_ut_format_err_str("val_bit_2byte_3, %d, %d\r\n", cnf->len, 2);
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+ req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
+ req->format = L4C_MCF_QUERY_VARIABLE_FORM_PATH;
+ req->num = 4098;
+ req->rec_id = 1;
+ req->len = 0;
+ strcpy(req->config, "val_bit_2byte_3.F4b");
+
+ cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_query_variable_value(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Query Variable Value (%s) FAIL!!\r\n", "val_bit_2byte_3.F4b");
+ return KAL_FALSE;
+ }
+
+
+ if(strncmp((kal_char *)(cnf->value), "00", cnf->len*2) != 0){
+ mcf_ut_format_err_str("val_bit_2byte_3.F4b, %s, %s\r\n", cnf->value, "00");
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 1){
+ mcf_ut_format_err_str("val_bit_2byte_3.F4b, %d, %d\r\n", cnf->len, 1);
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+ req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
+ req->format = L4C_MCF_QUERY_VARIABLE_FORM_PATH;
+ req->num = 4098;
+ req->rec_id = 1;
+ req->len = 0;
+ strcpy(req->config, "val_bit_2byte_3.L4b");
+
+ cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_query_variable_value(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Query Variable Value (%s) FAIL!!\r\n", "val_bit_2byte_3.L4b");
+ return KAL_FALSE;
+ }
+
+
+ if(strncmp((kal_char *)(cnf->value), "0F", cnf->len*2) != 0){
+ mcf_ut_format_err_str("val_bit_2byte_3.L4b, %s, %s\r\n", cnf->value, "0F");
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 1){
+ mcf_ut_format_err_str("val_bit_2byte_3.L4b, %d, %d\r\n", cnf->len, 1);
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+ req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
+ req->format = L4C_MCF_QUERY_VARIABLE_FORM_PATH;
+ req->num = 4098;
+ req->rec_id = 1;
+ req->len = 0;
+ strcpy(req->config, "val_bit_2byte_3.F2b");
+
+ cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_query_variable_value(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Query Variable Value (%s) FAIL!!\r\n", "val_bit_2byte_3.F2b");
+ return KAL_FALSE;
+ }
+
+
+ if(strncmp((kal_char *)(cnf->value), "03", cnf->len*2) != 0){
+ mcf_ut_format_err_str("val_bit_2byte_3.F2b, %s, %s\r\n", cnf->value, "03");
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 1){
+ mcf_ut_format_err_str("val_bit_2byte_3.F2b, %d, %d\r\n", cnf->len, 1);
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+ req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
+ req->format = L4C_MCF_QUERY_VARIABLE_FORM_PATH;
+ req->num = 4098;
+ req->rec_id = 1;
+ req->len = 0;
+ strcpy(req->config, "val_bit_2byte_3.L2b");
+
+ cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_query_variable_value(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Query Variable Value (%s) FAIL!!\r\n", "val_bit_2byte_3.L2b");
+ return KAL_FALSE;
+ }
+
+
+ if(strncmp((kal_char *)(cnf->value), "03", cnf->len*2) != 0){
+ mcf_ut_format_err_str("val_bit_2byte_3.L2b, %s, %s\r\n", cnf->value, "03");
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 1){
+ mcf_ut_format_err_str("val_bit_2byte_3.L2b, %d, %d\r\n", cnf->len, 1);
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+ req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
+ req->format = L4C_MCF_QUERY_VARIABLE_FORM_PATH;
+ req->num = 4098;
+ req->rec_id = 1;
+ req->len = 0;
+ strcpy(req->config, "val_bit_2byte_3.b2");
+
+ cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_query_variable_value(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Query Variable Value (%s) FAIL!!\r\n", "val_bit_2byte_3.b2");
+ return KAL_FALSE;
+ }
+
+
+ if(strncmp((kal_char *)(cnf->value), "01", cnf->len*2) != 0){
+ mcf_ut_format_err_str("val_bit_2byte_3.b2, %s, %s\r\n", cnf->value, "01");
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 1){
+ mcf_ut_format_err_str("val_bit_2byte_3.b2, %d, %d\r\n", cnf->len, 1);
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+ req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
+ req->format = L4C_MCF_QUERY_VARIABLE_FORM_PATH;
+ req->num = 4098;
+ req->rec_id = 1;
+ req->len = 0;
+ strcpy(req->config, "val_bit_4byte_3");
+
+ cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_query_variable_value(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Query Variable Value (%s) FAIL!!\r\n", "val_bit_4byte_3");
+ return KAL_FALSE;
+ }
+
+
+ if(strncmp((kal_char *)(cnf->value), "0001FE0F", cnf->len*2) != 0){
+ mcf_ut_format_err_str("val_bit_4byte_3, %s, %s\r\n", cnf->value, "0001FE0F");
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 4){
+ mcf_ut_format_err_str("val_bit_4byte_3, %d, %d\r\n", cnf->len, 4);
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+ req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
+ req->format = L4C_MCF_QUERY_VARIABLE_FORM_PATH;
+ req->num = 4098;
+ req->rec_id = 1;
+ req->len = 0;
+ strcpy(req->config, "val_bit_4byte_3.F9b");
+
+ cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_query_variable_value(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Query Variable Value (%s) FAIL!!\r\n", "val_bit_4byte_3.F9b");
+ return KAL_FALSE;
+ }
+
+
+ if(strncmp((kal_char *)(cnf->value), "0001", cnf->len*2) != 0){
+ mcf_ut_format_err_str("val_bit_4byte_3.F9b, %s, %s\r\n", cnf->value, "0001");
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 2){
+ mcf_ut_format_err_str("val_bit_4byte_3.F9b, %d, %d\r\n", cnf->len, 2);
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+ req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
+ req->format = L4C_MCF_QUERY_VARIABLE_FORM_PATH;
+ req->num = 4098;
+ req->rec_id = 1;
+ req->len = 0;
+ strcpy(req->config, "val_bit_4byte_3.F4b");
+
+ cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_query_variable_value(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Query Variable Value (%s) FAIL!!\r\n", "val_bit_4byte_3.F4b");
+ return KAL_FALSE;
+ }
+
+
+ if(strncmp((kal_char *)(cnf->value), "0F", cnf->len*2) != 0){
+ mcf_ut_format_err_str("val_bit_4byte_3.F4b, %s, %s\r\n", cnf->value, "0F");
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 1){
+ mcf_ut_format_err_str("val_bit_4byte_3.F4b, %d, %d\r\n", cnf->len, 1);
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+ req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
+ req->format = L4C_MCF_QUERY_VARIABLE_FORM_PATH;
+ req->num = 4098;
+ req->rec_id = 1;
+ req->len = 0;
+ strcpy(req->config, "val_bit_4byte_3.F2b");
+
+ cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_query_variable_value(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Query Variable Value (%s) FAIL!!\r\n", "val_bit_4byte_3.F2b");
+ return KAL_FALSE;
+ }
+
+
+ if(strncmp((kal_char *)(cnf->value), "03", cnf->len*2) != 0){
+ mcf_ut_format_err_str("val_bit_4byte_3.F2b, %s, %s\r\n", cnf->value, "03");
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 1){
+ mcf_ut_format_err_str("val_bit_4byte_3.F2b, %d, %d\r\n", cnf->len, 1);
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+#else
+
+#endif
+
+ /*Query variable with gid format*/
+ /* Write MCF OTA file version to NVRAM */
+ kal_mem_set(&nv_ota_file, 0, sizeof(nvram_ef_mcf_ota_file_info_struct));
+ strncpy(nv_ota_file.path, MCF_FS_DEFAULT_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN);
+ strncpy(nv_ota_file.name, MCF_FS_DEFAULT_OTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN);
+ 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)) ) {
+ mcf_ut_format_err_str("Fail to write MCF OTA file info to NVRAM!!\r\n");
+ return KAL_FALSE;
+ }
+ kal_mem_set(&nv_sw_info, 0, sizeof(nvram_ef_mcf_sw_info_struct));
+ strncpy(nv_sw_info.last_update_file.sw_version, MCF_UT_SW_VERNO, MCF_FILE_MAX_SW_VERSION_LEN);
+ strncpy(nv_sw_info.last_update_file.gen_time, MCF_UT_GEN_TIME, MCF_FILE_MAX_GEN_TIME_LEN);
+ strcpy(nv_sw_info.last_update_file.path, "");
+ strcpy(nv_sw_info.last_update_file.name, "");
+ if ( !nvram_external_write_data(NVRAM_EF_MCF_SW_INFO_LID, 1, (kal_uint8 *)&nv_sw_info, sizeof(nvram_ef_mcf_sw_info_struct)) ) {
+ mcf_ut_format_err_str("Fail to write MCF sw info to NVRAM!!\r\n");
+ return KAL_FALSE;
+ }
+
+ /*
+ * Apply default OTA
+ */
+ MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ if (ota_file) {
+ ret = mcf_ut_open_test_data("MCF_OTA_ut_gid_normal.mcfota", (kal_char *)(ota_file->buff), MCF_MAX_OTA_FILE_SIZE);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_OTA_ut_gid_normal.mcfota");
+ return KAL_FALSE;
+ }
+
+ MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Reset LID FAIL!! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+
+ mcf_ret = mcf_do_ota_full();
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Reset LID FAIL!! ret(%d) \r\n", mcf_ret);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_test_lid_value(NULL);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Reset LID FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+ //Byte operation - VAL_BYTE_11
+ req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
+ req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
+ req->num = MCF_TEST_OTA_LID_BASE_GID+44;
+ req->rec_id = 1;
+ req->len = 0;
+ kal_mem_set(array_tag, 0, 16);
+ strcpy(req->config, array_tag);
+
+ cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
+
+
+ mcf_ret = mcf_query_variable_value(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "VAL_BYTE_11");
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(test_pattern,0,512);
+ mcf_bytes_to_hex(&(mcf_ut_test_lid_value_pattern.val_byte_11), cnf->len, KAL_FALSE, &test_pattern);
+ mcf_toupper((char *)test_pattern);
+
+ if(strncmp((kal_char *)(cnf->value), test_pattern, cnf->len*2) != 0){
+ mcf_ut_format_err_str("VAL_BYTE_11, %s, %s\r\n", cnf->value, test_pattern);
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 1){
+ mcf_ut_format_err_str("VAL_BYTE_11, %d, %d\r\n", cnf->len, 1);
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+ //Bit operation - VAL_BIT_BYTE_11
+ req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
+ req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
+ req->num = MCF_TEST_OTA_LID_BASE_GID+18;
+ req->rec_id = 1;
+ req->len = 0;
+ kal_mem_set(array_tag, 0, 16);
+ strcpy(req->config, array_tag);
+
+ cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_query_variable_value(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "VAL_BIT_BYTE_11");
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(test_pattern,0,512);
+ mcf_bytes_to_hex(&(mcf_ut_test_lid_value_pattern.val_bit_byte_11), cnf->len, KAL_FALSE, &test_pattern);
+ mcf_toupper((char *)test_pattern);
+
+ if(strncmp((kal_char *)(cnf->value), test_pattern, cnf->len*2) != 0){
+ mcf_ut_format_err_str("VAL_BIT_BYTE_11, %s, %s\r\n", cnf->value, test_pattern);
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 1){
+ mcf_ut_format_err_str("VAL_BIT_BYTE_11, %d, %d\r\n", cnf->len, 1);
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+ //Bit operation - VAL_BIT_BYTE_11.B3
+ req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
+ req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
+ req->num = MCF_TEST_OTA_LID_BASE_GID+21;
+ req->rec_id = 1;
+ req->len = 0;
+ kal_mem_set(array_tag, 0, 16);
+ strcpy(req->config, array_tag);
+
+ cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_query_variable_value(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "VAL_BIT_BYTE_11.B3");
+ return KAL_FALSE;
+ }
+
+ if(strncmp((kal_char *)(cnf->value), "01", cnf->len*2) != 0){
+ mcf_ut_format_err_str("VAL_BIT_BYTE_11.B3, %s, %s\r\n", cnf->value, "01");
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 1){
+ mcf_ut_format_err_str("VAL_BIT_BYTE_11.B3, %d, %d\r\n", cnf->len, 1);
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+ //Bit operation - val_bit_byte_12
+ req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
+ req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
+ req->num = MCF_TEST_OTA_LID_BASE_GID+27;
+ req->rec_id = 1;
+ req->len = 0;
+ strcpy(req->config, "");
+
+ cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_query_variable_value(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "val_bit_byte_12");
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(test_pattern,0,512);
+ mcf_bytes_to_hex(&(mcf_ut_test_lid_value_pattern.val_bit_byte_12), cnf->len, KAL_FALSE, &test_pattern);
+ mcf_toupper((char *)test_pattern);
+
+ if(strncmp((kal_char *)(cnf->value), test_pattern, cnf->len*2) != 0){
+ mcf_ut_format_err_str("val_bit_byte_12, %s, %s\r\n", cnf->value, test_pattern);
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 1){
+ mcf_ut_format_err_str("val_bit_byte_12, %d, %d\r\n", cnf->len, 1);
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+ //Bit operation - val_bit_byte_12.L4b
+ req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
+ req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
+ req->num = MCF_TEST_OTA_LID_BASE_GID+29;
+ req->rec_id = 1;
+ req->len = 0;
+ strcpy(req->config, "");
+
+ cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_query_variable_value(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "val_bit_byte_12.L4b");
+ return KAL_FALSE;
+ }
+
+ if(strncmp((kal_char *)(cnf->value), "0F", cnf->len*2) != 0){
+ mcf_ut_format_err_str("val_bit_byte_12.F4b, %s, %s\r\n", cnf->value, test_pattern);
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 1){
+ mcf_ut_format_err_str("val_bit_byte_12.F4b, %d, %d\r\n", cnf->len, 1);
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+ //short operation - val_short_11
+ req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
+ req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
+ req->num = MCF_TEST_OTA_LID_BASE_GID+56;
+ req->rec_id = 1;
+ req->len = 0;
+ strcpy(req->config, "");
+
+ cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_query_variable_value(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "val_short_11");
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(test_pattern,0,512);
+ mcf_bytes_to_hex(&(mcf_ut_test_lid_value_pattern.val_short_11), cnf->len, KAL_FALSE, &test_pattern);
+ mcf_toupper((char *)test_pattern);
+
+ if(strncmp((kal_char *)(cnf->value), test_pattern, cnf->len*2) != 0){
+ mcf_ut_format_err_str("val_short_11, %s, %s\r\n", cnf->value, test_pattern);
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 2){
+ mcf_ut_format_err_str("val_short_11, %d, %d\r\n", cnf->len, 2);
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+
+ //double operation - val_double_1
+ req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
+ req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
+ req->num = MCF_TEST_OTA_LID_BASE_GID+48;
+ req->rec_id = 1;
+ req->len = 0;
+ strcpy(req->config, "");
+
+ cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_query_variable_value(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "val_double_1");
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(test_pattern,0,512);
+ mcf_bytes_to_hex(&(mcf_ut_test_lid_value_pattern.val_double_1), cnf->len, KAL_FALSE, &test_pattern);
+ mcf_toupper((char *)test_pattern);
+
+ if(strncmp((kal_char *)(cnf->value), test_pattern, cnf->len*2) != 0){
+ mcf_ut_format_err_str("val_double_1, %s, %s\r\n", cnf->value, test_pattern);
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 8){
+ mcf_ut_format_err_str("val_double_1, %d, %d\r\n", cnf->len, 8);
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+ //buffer operation with len = 2 - val_buffer_1
+ req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
+ req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
+ req->num = MCF_TEST_OTA_LID_BASE_GID+42;
+ req->rec_id = 1;
+ req->len = 2;
+ strcpy(req->config, "");
+
+ cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_query_variable_value(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "val_buffer_1");
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(test_pattern,0,512);
+ mcf_bytes_to_hex(&(mcf_ut_test_lid_value_pattern.val_buffer_1), cnf->len, KAL_FALSE, &test_pattern);
+ mcf_toupper((char *)test_pattern);
+
+ if(strncmp((kal_char *)(cnf->value), test_pattern, cnf->len*2) != 0){
+ mcf_ut_format_err_str("val_buffer_1, %s, %s\r\n", cnf->value, test_pattern);
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 2){
+ mcf_ut_format_err_str("val_buffer_1, %d, %d\r\n", cnf->len, 2);
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+ //buffer operation - read all buffer - val_buffer_1[0]
+ req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
+ req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
+ req->num = MCF_TEST_OTA_LID_BASE_GID+42;
+ req->rec_id = 1;
+ req->len = 32;
+ strcpy(req->config, "0");
+
+ cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_query_variable_value(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "val_buffer_1[0]");
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(test_pattern,0,512);
+ mcf_bytes_to_hex(&(mcf_ut_test_lid_value_pattern.val_buffer_1), cnf->len, KAL_FALSE, &test_pattern);
+ mcf_toupper((char *)test_pattern);
+
+ if(strncmp((kal_char *)(cnf->value), test_pattern, cnf->len*2) != 0){
+ mcf_ut_format_err_str("val_buffer_1[0], %s, %s\r\n", cnf->value, test_pattern);
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 32){
+ mcf_ut_format_err_str("val_buffer_1[0], %d, %d\r\n", cnf->len, 32);
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+ //buffer operation - val_buffer_1[0]
+ req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
+ req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
+ req->num = MCF_TEST_OTA_LID_BASE_GID+42;
+ req->rec_id = 1;
+ req->len = 2;
+ strcpy(req->config, "0");
+
+ cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_query_variable_value(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "val_buffer_1[0]");
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(test_pattern,0,512);
+ mcf_bytes_to_hex(&(mcf_ut_test_lid_value_pattern.val_buffer_1), cnf->len, KAL_FALSE, &test_pattern);
+ mcf_toupper((char *)test_pattern);
+
+ if(strncmp((kal_char *)(cnf->value), test_pattern, cnf->len*2) != 0){
+ mcf_ut_format_err_str("val_buffer_1[0], %s, %s\r\n", cnf->value, test_pattern);
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 2){
+ mcf_ut_format_err_str("val_buffer_1[0], %d, %d\r\n", cnf->len, 2);
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+ //float operation - val_struct_1.vfloat
+ req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
+ req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
+ req->num = MCF_TEST_OTA_LID_BASE_GID+78;
+ req->rec_id = 1;
+ req->len = 4;
+ strcpy(req->config, "");
+
+ cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_query_variable_value(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "val_struct_1.vfloat");
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(test_pattern,0,512);
+ mcf_bytes_to_hex(&(mcf_ut_test_lid_value_pattern.val_struct_1.vfloat), cnf->len, KAL_FALSE, &test_pattern);
+ mcf_toupper((char *)test_pattern);
+
+ if(strncmp((kal_char *)(cnf->value), test_pattern, cnf->len*2) != 0){
+ mcf_ut_format_err_str("val_struct_1.vfloat, %s, %s\r\n", cnf->value, test_pattern);
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 4){
+ mcf_ut_format_err_str("val_struct_1.vfloat, %d, %d\r\n", cnf->len, 4);
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+ //int in struct operation - val_struct_3[0].vint
+ req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
+ req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
+ req->num = MCF_TEST_OTA_LID_BASE_GID+125;
+ req->rec_id = 1;
+ req->len = 0;
+ strcpy(req->config, "0");
+
+ cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_query_variable_value(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "val_struct_3[0].vint");
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(test_pattern,0,512);
+ mcf_bytes_to_hex(&(mcf_ut_test_lid_value_pattern.val_struct_3[0].vint), cnf->len, KAL_FALSE, &test_pattern);
+ mcf_toupper((char *)test_pattern);
+
+ if(strncmp((kal_char *)(cnf->value), test_pattern, cnf->len*2) != 0){
+ mcf_ut_format_err_str("val_struct_3[0].vint, %s, %s\r\n", cnf->value, test_pattern);
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 4){
+ mcf_ut_format_err_str("val_struct_3[0].vint, %d, %d\r\n", cnf->len, 4);
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+
+ //buffer in struct operation - VAL_STRUCT_3[3].VBUFFER[2][4][5]
+ req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
+ req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
+ req->num = MCF_TEST_OTA_LID_BASE_GID+120;
+ req->rec_id = 1;
+ req->len = 0;
+ strcpy(req->config, "3,2,4,5");
+
+ cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_query_variable_value(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "VAL_STRUCT_3[3].VBUFFER[2][4][5]");
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(test_pattern,0,512);
+ mcf_bytes_to_hex(&(mcf_ut_test_lid_value_pattern.val_struct_3[3].vbuffer[2]), cnf->len, KAL_FALSE, &test_pattern);
+ mcf_toupper((char *)test_pattern);
+
+ if(strncmp((kal_char *)(cnf->value), test_pattern, cnf->len*2) != 0){
+ mcf_ut_format_err_str("VAL_STRUCT_3[3].VBUFFER[2][4][5], %s, %s\r\n", cnf->value, test_pattern);
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 1){
+ mcf_ut_format_err_str("VAL_STRUCT_3[3].VBUFFER[2][4][5], %d, %d\r\n", cnf->len, 1);
+ return KAL_FALSE;
+ }
+
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+ /* Test TLV OTA */
+ /* Write MCF TLV-OTA file version to NVRAM */
+ kal_mem_set(&nv_tlvota_file, 0, sizeof(nvram_ef_mcf_tlvota_file_info_struct));
+ strncpy(nv_tlvota_file.path, MCF_FS_DEFAULT_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN);
+ strncpy(nv_tlvota_file.name, MCF_FS_DEFAULT_TLVOTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN);
+ 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)) ) {
+ mcf_ut_format_err_str("Fail to write MCF TLV-OTA file info to NVRAM!!\r\n");
+ return KAL_FALSE;
+ }
+
+ for (i = 0; i < MAX_SIM_NUM; i++) {
+ tlvota_file = &(pMcf->tlvota_file[i]);
+
+ MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ if (tlvota_file) {
+ ret = mcf_ut_open_test_data("MCF_TLVOTA_SBP_NA_ut_gid_normal.mcfopota", (kal_char *)(tlvota_file->buff), MCF_MAX_TLVOTA_FILE_SIZE);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_TLVOTA_SBP_NA_ut_gid_normal.mcfopota");
+ return KAL_FALSE;
+ }
+
+ MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+ }
+
+ kal_mem_set(&sbp_tag, 0, sizeof(mcf_tlvota_sbp_tag_t));
+ sbp_tag.sbp_id = SBP_TAG_SBPID;
+ strncpy(sbp_tag.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
+ strncpy(sbp_tag.mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
+
+ //byte operation - VAL_BYTE_11
+ req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OPOTA;
+ req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
+ req->num = MCF_TEST_OTA_LID_BASE_GID+44;
+ req->rec_id = 1;
+ req->len = 0;
+ req->ps_id = 0;
+ strcpy(req->config, "");
+
+ cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_query_variable_value(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "VAL_BYTE_11");
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(test_pattern,0,512);
+ mcf_bytes_to_hex(&(mcf_ut_test_lid_value_pattern.val_byte_11), cnf->len, KAL_FALSE, &test_pattern);
+ mcf_toupper((char *)test_pattern);
+
+ if(strncmp((kal_char *)(cnf->value), test_pattern, cnf->len*2) != 0){
+ mcf_ut_format_err_str("VAL_BYTE_11, %s, %s\r\n", cnf->value, test_pattern);
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 1){
+ mcf_ut_format_err_str("VAL_BYTE_11, %d, %d\r\n", cnf->len, 1);
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+
+ /* Test 3-d array */
+
+ /* Write MCF OTA file version to NVRAM */
+ kal_mem_set(&nv_ota_file, 0, sizeof(nvram_ef_mcf_ota_file_info_struct));
+ strncpy(nv_ota_file.path, MCF_FS_DEFAULT_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN);
+ strncpy(nv_ota_file.name, MCF_FS_DEFAULT_OTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN);
+ 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)) ) {
+ mcf_ut_format_err_str("Fail to write MCF OTA file info to NVRAM!!\r\n");
+ return KAL_FALSE;
+ }
+ kal_mem_set(&nv_sw_info, 0, sizeof(nvram_ef_mcf_sw_info_struct));
+ strncpy(nv_sw_info.last_update_file.sw_version, MCF_UT_SW_VERNO, MCF_FILE_MAX_SW_VERSION_LEN);
+ strncpy(nv_sw_info.last_update_file.gen_time, MCF_UT_GEN_TIME, MCF_FILE_MAX_GEN_TIME_LEN);
+ strcpy(nv_sw_info.last_update_file.path, "");
+ strcpy(nv_sw_info.last_update_file.name, "");
+ if ( !nvram_external_write_data(NVRAM_EF_MCF_SW_INFO_LID, 1, (kal_uint8 *)&nv_sw_info, sizeof(nvram_ef_mcf_sw_info_struct)) ) {
+ mcf_ut_format_err_str("Fail to write MCF sw info to NVRAM!!\r\n");
+ return KAL_FALSE;
+ }
+
+ /*
+ * Apply 3-d array and bit byte operation default OTA
+ */
+ MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ if (ota_file) {
+ 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);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_OTA_3d_array_and_bit_byte_ut_gid_normal.mcfota");
+ return KAL_FALSE;
+ }
+
+ MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Reset LID FAIL!! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+
+ mcf_ret = mcf_do_ota_full();
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Reset LID FAIL!! ret(%d) \r\n", mcf_ret);
+ return KAL_FALSE;
+ }
+
+ if ( !nvram_external_read_data(NVRAM_EF_MCF_TEST_OTA_LID, 1, (kal_uint8 *)&nv_lid_buffer, sizeof(nvram_ef_mcf_test_struct)) ) {
+ mcf_ut_format_err_str("Fail to read NVRAM_EF_MCF_TEST_OTA_LID!!\r\n");
+ ret = KAL_FALSE;
+ }
+
+ if ( kal_mem_cmp((kal_uint8 *)&nv_lid_buffer, &mcf_ut_test_lid_value_new_pattern, sizeof(nvram_ef_mcf_test_struct)) != 0 ) {
+ ret = KAL_FALSE;
+ mcf_ut_format_err_str("Do full OTA positive test (SW verno match) FAIL!!\r\n");
+ }
+
+ //3-D array operation - VAL_STRUCT_3[0].ARRAY_D[4][3][2]
+ req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
+ req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
+ req->num = MCF_TEST_OTA_LID_BASE_GID+106;
+ req->rec_id = 1;
+ req->len = 0;
+ strcpy(req->config, "0,4,3,2");
+
+ cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_query_variable_value(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "VAL_STRUCT_3[0].ARRAY_D[4][3][2]");
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(test_pattern,0,512);
+ 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);
+ mcf_toupper((char *)test_pattern);
+
+ if(strncmp((kal_char *)(cnf->value), test_pattern, cnf->len*2) != 0){
+ mcf_ut_format_err_str("VAL_STRUCT_3[0].ARRAY_D[4][3][2], %s, %s\r\n", cnf->value, test_pattern);
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 1){
+ mcf_ut_format_err_str("VAL_STRUCT_3[0].ARRAY_D[4][3][2], %d, %d\r\n", cnf->len, 1);
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+ //3-D array operation - VAL_STRUCT_3[0].ARRAY_D[4][3]
+ req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
+ req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
+ req->num = MCF_TEST_OTA_LID_BASE_GID+106;
+ req->rec_id = 1;
+ req->len = 0;
+ strcpy(req->config, "0,4,3");
+
+ cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_query_variable_value(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "VAL_STRUCT_3[0].ARRAY_D[4][3]");
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(test_pattern,0,512);
+ 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);
+ mcf_toupper((char *)test_pattern);
+
+ if(strncmp((kal_char *)(cnf->value), test_pattern, cnf->len*2) != 0){
+ mcf_ut_format_err_str("VAL_STRUCT_3[0].ARRAY_D[4][3], %s, %s\r\n", cnf->value, test_pattern);
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 1){
+ mcf_ut_format_err_str("VAL_STRUCT_3[0].ARRAY_D[4][3], %d, %d\r\n", cnf->len, 1);
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+ //3-D array operation - VAL_STRUCT_3[0].ARRAY_D[4]
+ req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
+ req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
+ req->num = MCF_TEST_OTA_LID_BASE_GID+106;
+ req->rec_id = 1;
+ req->len = 0;
+ strcpy(req->config, "0,4");
+
+ cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_query_variable_value(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "VAL_STRUCT_3[0].ARRAY_D[4]");
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(test_pattern,0,512);
+ mcf_bytes_to_hex(&(mcf_ut_test_lid_value_new_pattern.val_struct_3[0].array_d[4]), cnf->len, KAL_FALSE, &test_pattern);
+ mcf_toupper((char *)test_pattern);
+
+ if(strncmp((kal_char *)(cnf->value), test_pattern, cnf->len*2) != 0){
+ mcf_ut_format_err_str("VAL_STRUCT_3[0].ARRAY_D[4], %s, %s\r\n", cnf->value, test_pattern);
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 1){
+ mcf_ut_format_err_str("VAL_STRUCT_3[0].ARRAY_D[4], %d, %d\r\n", cnf->len, 1);
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+ //3-D array operation - VAL_STRUCT_3[0].ARRAY_D
+ req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
+ req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
+ req->num = MCF_TEST_OTA_LID_BASE_GID+106;
+ req->rec_id = 1;
+ req->len = 0;
+ strcpy(req->config, "0");
+
+ cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_query_variable_value(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "VAL_STRUCT_3[0].ARRAY_D");
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(test_pattern,0,512);
+ mcf_bytes_to_hex(&(mcf_ut_test_lid_value_new_pattern.val_struct_3[0].array_d), cnf->len, KAL_FALSE, &test_pattern);
+ mcf_toupper((char *)test_pattern);
+
+ if(strncmp((kal_char *)(cnf->value), test_pattern, cnf->len*2) != 0){
+ mcf_ut_format_err_str("VAL_STRUCT_3[0].ARRAY_D, %s, %s\r\n", cnf->value, test_pattern);
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 1){
+ mcf_ut_format_err_str("VAL_STRUCT_3[0].ARRAY_D, %d, %d\r\n", cnf->len, 1);
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+ //3-D array operation - VAL_STRUCT_3[0].ARRAY_D[4][2]
+ req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
+ req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
+ req->num = MCF_TEST_OTA_LID_BASE_GID+106;
+ req->rec_id = 1;
+ req->len = 2;
+ strcpy(req->config, "0,4,2");
+
+ cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_query_variable_value(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "VAL_STRUCT_3[0].ARRAY_D[4][2]");
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(test_pattern,0,512);
+ 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);
+ mcf_toupper((char *)test_pattern);
+
+ if(strncmp((kal_char *)(cnf->value), test_pattern, cnf->len*2) != 0){
+ mcf_ut_format_err_str("VAL_STRUCT_3[0].ARRAY_D[4][2], %s, %s\r\n", cnf->value, test_pattern);
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 2){
+ mcf_ut_format_err_str("VAL_STRUCT_3[0].ARRAY_D[4][2], %d, %d\r\n", cnf->len, 2);
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+ //3-D array operation - VAL_STRUCT_3[0].ARRAY_D[3]
+ req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
+ req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
+ req->num = MCF_TEST_OTA_LID_BASE_GID+106;
+ req->rec_id = 1;
+ req->len = 10;
+ strcpy(req->config, "0,3");
+
+ cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_query_variable_value(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "VAL_STRUCT_3[0].ARRAY_D[3]");
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(test_pattern,0,512);
+ mcf_bytes_to_hex(&(mcf_ut_test_lid_value_new_pattern.val_struct_3[0].array_d[3]), cnf->len, KAL_FALSE, &test_pattern);
+ mcf_toupper((char *)test_pattern);
+
+ if(strncmp((kal_char *)(cnf->value), test_pattern, cnf->len*2) != 0){
+ mcf_ut_format_err_str("VAL_STRUCT_3[0].ARRAY_D[3], %s, %s\r\n", cnf->value, test_pattern);
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 10){
+ mcf_ut_format_err_str("VAL_STRUCT_3[0].ARRAY_D[3], %d, %d\r\n", cnf->len, 10);
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+
+ /* Different variable size */
+
+ //3-D array operation - VAL_STRUCT_3[0].ARRAY_D4[4][3][2]
+ req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
+ req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
+ req->num = MCF_TEST_OTA_LID_BASE_GID+107;
+ req->rec_id = 1;
+ req->len = 0;
+ strcpy(req->config, "0,4,3,2");
+
+ cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_query_variable_value(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "VAL_STRUCT_3[0].ARRAY_D4[4][3][2]");
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(test_pattern,0,512);
+ 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);
+ mcf_toupper((char *)test_pattern);
+
+ if(strncmp((kal_char *)(cnf->value), test_pattern, cnf->len*2) != 0){
+ mcf_ut_format_err_str("VAL_STRUCT_3[0].ARRAY_D4[4][3][2], %s, %s\r\n", cnf->value, test_pattern);
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 4){
+ mcf_ut_format_err_str("VAL_STRUCT_3[0].ARRAY_D4[4][3][2], %d, %d\r\n", cnf->len, 4);
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+ //3-D array operation - VAL_STRUCT_3[0].ARRAY_D4[4][3]
+ req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
+ req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
+ req->num = MCF_TEST_OTA_LID_BASE_GID+107;
+ req->rec_id = 1;
+ req->len = 0;
+ strcpy(req->config, "0,4,3");
+
+ cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_query_variable_value(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "VAL_STRUCT_3[0].ARRAY_D4[4][3]");
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(test_pattern,0,512);
+ 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);
+ mcf_toupper((char *)test_pattern);
+
+ if(strncmp((kal_char *)(cnf->value), test_pattern, cnf->len*2) != 0){
+ mcf_ut_format_err_str("VAL_STRUCT_3[0].ARRAY_D4[4][3], %s, %s\r\n", cnf->value, test_pattern);
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 4){
+ mcf_ut_format_err_str("VAL_STRUCT_3[0].ARRAY_D4[4][3], %d, %d\r\n", cnf->len, 4);
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+ //3-D array operation - VAL_STRUCT_3[0].ARRAY_D4[4]
+ req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
+ req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
+ req->num = MCF_TEST_OTA_LID_BASE_GID+107;
+ req->rec_id = 1;
+ req->len = 0;
+ strcpy(req->config, "0,4");
+
+ cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_query_variable_value(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "VAL_STRUCT_3[0].ARRAY_D4[4]");
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(test_pattern,0,512);
+ mcf_bytes_to_hex(&(mcf_ut_test_lid_value_new_pattern.val_struct_3[0].array_d4[4]), cnf->len, KAL_FALSE, &test_pattern);
+ mcf_toupper((char *)test_pattern);
+
+ if(strncmp((kal_char *)(cnf->value), test_pattern, cnf->len*2) != 0){
+ mcf_ut_format_err_str("VAL_STRUCT_3[0].ARRAY_D4[4], %s, %s\r\n", cnf->value, test_pattern);
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 4){
+ mcf_ut_format_err_str("VAL_STRUCT_3[0].ARRAY_D4[4], %d, %d\r\n", cnf->len, 4);
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+ //3-D array operation - VAL_STRUCT_3[0].ARRAY_D4[4]
+ req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
+ req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
+ req->num = MCF_TEST_OTA_LID_BASE_GID+107;
+ req->rec_id = 1;
+ req->len = 2;
+ strcpy(req->config, "0,4");
+
+ cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_query_variable_value(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "VAL_STRUCT_3[0].ARRAY_D4[4]");
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(test_pattern,0,512);
+ mcf_bytes_to_hex(&(mcf_ut_test_lid_value_new_pattern.val_struct_3[0].array_d4[4]), cnf->len, KAL_FALSE, &test_pattern);
+ mcf_toupper((char *)test_pattern);
+
+ if(strncmp((kal_char *)(cnf->value), test_pattern, cnf->len*2) != 0){
+ mcf_ut_format_err_str("VAL_STRUCT_3[0].ARRAY_D4[4], %s, %s\r\n", cnf->value, test_pattern);
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 2){
+ mcf_ut_format_err_str("VAL_STRUCT_3[0].ARRAY_D4[4], %d, %d\r\n", cnf->len, 2);
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+ //3-D array operation - VAL_STRUCT_3[0].ARRAY_D4[4][2]
+ req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
+ req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
+ req->num = MCF_TEST_OTA_LID_BASE_GID+107;
+ req->rec_id = 1;
+ req->len = 2;
+ strcpy(req->config, "0,4,2");
+
+ cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_query_variable_value(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "VAL_STRUCT_3[0].ARRAY_D4[4][2]");
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(test_pattern,0,512);
+ mcf_bytes_to_hex(&(mcf_ut_test_lid_value_new_pattern.val_struct_3[0].array_d4[4]), cnf->len, KAL_FALSE, &test_pattern);
+ mcf_toupper((char *)test_pattern);
+
+ if(strncmp((kal_char *)(cnf->value), test_pattern, cnf->len*2) != 0){
+ mcf_ut_format_err_str("VAL_STRUCT_3[0].ARRAY_D4[4][2], %s, %s\r\n", cnf->value, test_pattern);
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 2){
+ mcf_ut_format_err_str("VAL_STRUCT_3[0].ARRAY_D4[4][2], %d, %d\r\n", cnf->len, 2);
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+ //3-D array operation - VAL_STRUCT_3[0].ARRAY_D4
+ req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
+ req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
+ req->num = MCF_TEST_OTA_LID_BASE_GID+107;
+ req->rec_id = 1;
+ req->len = 0;
+ strcpy(req->config, "0");
+
+ cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_query_variable_value(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "VAL_STRUCT_3[0].ARRAY_D4");
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(test_pattern,0,512);
+ mcf_bytes_to_hex(&(mcf_ut_test_lid_value_new_pattern.val_struct_3[0].array_d4), cnf->len, KAL_FALSE, &test_pattern);
+ mcf_toupper((char *)test_pattern);
+
+ if(strncmp((kal_char *)(cnf->value), test_pattern, cnf->len*2) != 0){
+ mcf_ut_format_err_str("VAL_STRUCT_3[0].ARRAY_D4, %s, %s\r\n", cnf->value, test_pattern);
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 4){
+ mcf_ut_format_err_str("VAL_STRUCT_3[0].ARRAY_D4, %d, %d\r\n", cnf->len, 4);
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+ /* Nagative test case */
+
+ //over array size - VAL_STRUCT_3[0].ARRAY_D[5]
+ req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
+ req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
+ req->num = MCF_TEST_OTA_LID_BASE_GID+106;
+ req->rec_id = 1;
+ req->len = 0;
+ strcpy(req->config, "0,5");
+
+ cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_query_variable_value(req, cnf);
+ if (mcf_ret != MCF_OTA_R_INVALID_PARAMETER) {
+ mcf_ut_format_err_str("over array size! VAL_STRUCT_3[0].ARRAY_D[5] is not FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+ //over array size - VAL_STRUCT_3[4].ARRAY_D
+ req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
+ req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
+ req->num = MCF_TEST_OTA_LID_BASE_GID+106;
+ req->rec_id = 1;
+ req->len = 0;
+ strcpy(req->config, "4");
+
+ cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_query_variable_value(req, cnf);
+ if (mcf_ret != MCF_OTA_R_INVALID_PARAMETER) {
+ mcf_ut_format_err_str("over array size! VAL_STRUCT_3[4].ARRAY_D is not FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+ //2 byte bit operation- val_bit_2byte_3
+ req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
+ req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
+ req->num = MCF_TEST_OTA_LID_BASE_GID;
+ req->rec_id = 1;
+ req->len = 0;
+ strcpy(req->config, "");
+
+ cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_query_variable_value(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "val_bit_2byte_3");
+ return KAL_FALSE;
+ }
+
+
+ if(strncmp((kal_char *)(cnf->value), "FFFF", cnf->len*2) != 0){
+ mcf_ut_format_err_str("val_bit_2byte_3, %s, %s\r\n", cnf->value, "FFFF");
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 2){
+ mcf_ut_format_err_str("val_bit_2byte_3, %d, %d\r\n", cnf->len, 2);
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+ //2 byte bit operation- val_bit_2byte_3.F4b
+ req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
+ req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
+ req->num = MCF_TEST_OTA_LID_BASE_GID+2;
+ req->rec_id = 1;
+ req->len = 0;
+ strcpy(req->config, "");
+
+ cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_query_variable_value(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "val_bit_2byte_3.F4b");
+ return KAL_FALSE;
+ }
+
+
+ if(strncmp((cnf->value), "0F", cnf->len*2) != 0){
+ mcf_ut_format_err_str("val_bit_2byte_3.F4b, %s, %s\r\n", cnf->value, "0F");
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 1){
+ mcf_ut_format_err_str("val_bit_2byte_3.F4b, %d, %d\r\n", cnf->len, 1);
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+ //2 byte bit operation - val_bit_2byte_3.L4b
+ req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
+ req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
+ req->num = MCF_TEST_OTA_LID_BASE_GID+4;
+ req->rec_id = 1;
+ req->len = 0;
+ strcpy(req->config, "");
+
+ cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_query_variable_value(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "val_bit_2byte_3.L4b");
+ return KAL_FALSE;
+ }
+
+
+ if(strncmp((kal_char *)(cnf->value), "0F", cnf->len*2) != 0){
+ mcf_ut_format_err_str("val_bit_2byte_3.L4b, %s, %s\r\n", cnf->value, "0F");
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 1){
+ mcf_ut_format_err_str("val_bit_2byte_3.L4b, %d, %d\r\n", cnf->len, 1);
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+ //2 byte bit operation - val_bit_2byte_3.F2b
+ req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
+ req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
+ req->num = MCF_TEST_OTA_LID_BASE_GID+1;
+ req->rec_id = 1;
+ req->len = 0;
+ strcpy(req->config, "");
+
+ cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_query_variable_value(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "val_bit_2byte_3.F2b");
+ return KAL_FALSE;
+ }
+
+ if(strncmp((kal_char *)(cnf->value), "03", cnf->len*2) != 0){
+ mcf_ut_format_err_str("val_bit_2byte_3.F2b, %s, %s\r\n", cnf->value, "03");
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 1){
+ mcf_ut_format_err_str("val_bit_2byte_3.F2b, %d, %d\r\n", cnf->len, 1);
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+ //2 byte bit operation - val_bit_2byte_3.L2b
+ req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
+ req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
+ req->num = MCF_TEST_OTA_LID_BASE_GID+3;
+ req->rec_id = 1;
+ req->len = 0;
+ strcpy(req->config, "");
+
+ cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_query_variable_value(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "val_bit_2byte_3.L2b");
+ return KAL_FALSE;
+ }
+
+
+ if(strncmp((kal_char *)(cnf->value), "03", cnf->len*2) != 0){
+ mcf_ut_format_err_str("val_bit_2byte_3.L2b, %s, %s\r\n", cnf->value, "03");
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 1){
+ mcf_ut_format_err_str("val_bit_2byte_3.L2b, %d, %d\r\n", cnf->len, 1);
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+ //2 byte bit operation - val_bit_2byte_3.b2
+ req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
+ req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
+ req->num = MCF_TEST_OTA_LID_BASE_GID+6;
+ req->rec_id = 1;
+ req->len = 0;
+ strcpy(req->config, "");
+
+ cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_query_variable_value(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "val_bit_2byte_3.b2");
+ return KAL_FALSE;
+ }
+
+ if(strncmp((kal_char *)(cnf->value), "01", cnf->len*2) != 0){
+ mcf_ut_format_err_str("val_bit_2byte_3.b2, %s, %s\r\n", cnf->value, "01");
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 1){
+ mcf_ut_format_err_str("val_bit_2byte_3.b2, %d, %d\r\n", cnf->len, 1);
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+ //2 byte bit operation - val_bit_4byte_3
+ req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
+ req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
+ req->num = MCF_TEST_OTA_LID_BASE_GID+9;
+ req->rec_id = 1;
+ req->len = 0;
+ strcpy(req->config, "");
+
+ cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_query_variable_value(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "val_bit_4byte_3");
+ return KAL_FALSE;
+ }
+
+ if(strncmp((kal_char *)(cnf->value), "FFFFFFFF", cnf->len*2) != 0){
+ mcf_ut_format_err_str("val_bit_4byte_3, %s, %s\r\n", cnf->value, "FFFFFFFF");
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 4){
+ mcf_ut_format_err_str("val_bit_4byte_3, %d, %d\r\n", cnf->len, 4);
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+ //2 byte bit operation - val_bit_4byte_3.F9b
+ req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
+ req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
+ req->num = MCF_TEST_OTA_LID_BASE_GID+12;
+ req->rec_id = 1;
+ req->len = 0;
+ strcpy(req->config, "");
+
+ cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_query_variable_value(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "val_bit_4byte_3.F9b");
+ return KAL_FALSE;
+ }
+
+ if(strncmp((kal_char *)(cnf->value), "FF01", cnf->len*2) != 0){
+ mcf_ut_format_err_str("val_bit_4byte_3.F9b, %s, %s\r\n", cnf->value, "FF01");
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 2){
+ mcf_ut_format_err_str("val_bit_4byte_3.F9b, %d, %d\r\n", cnf->len, 2);
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+ //2 byte bit operation - val_bit_4byte_3.F4b
+ req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
+ req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
+ req->num = MCF_TEST_OTA_LID_BASE_GID+11;
+ req->rec_id = 1;
+ req->len = 0;
+ strcpy(req->config, "");
+
+ cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_query_variable_value(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "val_bit_4byte_3.F4b");
+ return KAL_FALSE;
+ }
+
+ if(strncmp((kal_char *)(cnf->value), "0F", cnf->len*2) != 0){
+ mcf_ut_format_err_str("val_bit_4byte_3.F4b, %s, %s\r\n", cnf->value, "0F");
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 1){
+ mcf_ut_format_err_str("val_bit_4byte_3.F4b, %d, %d\r\n", cnf->len, 1);
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+ //2 byte bit operation - val_bit_4byte_3
+ req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
+ req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
+ req->num = MCF_TEST_OTA_LID_BASE_GID+10;
+ req->rec_id = 1;
+ req->len = 0;
+ strcpy(req->config, "");
+
+ cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_query_variable_value(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "val_bit_4byte_3.F2b");
+ return KAL_FALSE;
+ }
+
+ if(strncmp((kal_char *)(cnf->value), "03", cnf->len*2) != 0){
+ mcf_ut_format_err_str("val_bit_4byte_3.F2b, %s, %s\r\n", cnf->value, "03");
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 1){
+ mcf_ut_format_err_str("val_bit_4byte_3.F2b, %d, %d\r\n", cnf->len, 1);
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+ /* Negative test */
+ //3-D array operation - VAL_STRUCT_3[0].ARRAY_D[3] - not end '$'
+ req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
+ req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
+ req->num = MCF_TEST_OTA_LID_BASE_GID+106;
+ req->rec_id = 1;
+ req->len = 10;
+ strcpy(req->config, "0,3");
+
+ cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_query_variable_value(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "VAL_STRUCT_3[0].ARRAY_D[3]");
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(test_pattern,0,512);
+ mcf_bytes_to_hex(&(mcf_ut_test_lid_value_new_pattern.val_struct_3[0].array_d[3]), cnf->len, KAL_FALSE, &test_pattern);
+ mcf_toupper((char *)test_pattern);
+
+ if(strncmp((kal_char *)(cnf->value), test_pattern, cnf->len*2) != 0){
+ mcf_ut_format_err_str("VAL_STRUCT_3[0].ARRAY_D[3], %s, %s\r\n", cnf->value, test_pattern);
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 10){
+ mcf_ut_format_err_str("VAL_STRUCT_3[0].ARRAY_D[3], %d, %d\r\n", cnf->len, 10);
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+ //3-D array operation - VAL_STRUCT_3[0].ARRAY_D[3] - not use '$' to separate - result = VAL_STRUCT_3[0].ARRAY_D[0]
+ req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
+ req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
+ req->num = MCF_TEST_OTA_LID_BASE_GID+106;
+ req->rec_id = 1;
+ req->len = 1;
+ strcpy(req->config, "0,3");
+
+ cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_query_variable_value(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "VAL_STRUCT_3[0].ARRAY_D[3]");
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(test_pattern,0,512);
+ mcf_bytes_to_hex(&(mcf_ut_test_lid_value_new_pattern.val_struct_3[0].array_d[3]), cnf->len, KAL_FALSE, &test_pattern);
+ mcf_toupper((char *)test_pattern);
+
+ if(strncmp((kal_char *)(cnf->value), test_pattern, cnf->len*2) != 0){
+ mcf_ut_format_err_str("VAL_STRUCT_3[0].ARRAY_D[3], %s, %s\r\n", cnf->value, test_pattern);
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 1){
+ mcf_ut_format_err_str("VAL_STRUCT_3[0].ARRAY_D[3], %d, %d\r\n", cnf->len, 1);
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+ //Read len is too large - val_bit_4byte_3(4 byte)
+ req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
+ req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
+ req->num = MCF_TEST_OTA_LID_BASE_GID+9;
+ req->rec_id = 1;
+ req->len = 4;
+ strcpy(req->config, "");
+
+ cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_query_variable_value(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "val_bit_4byte_3.F2b");
+ return KAL_FALSE;
+ }
+
+ if(strncmp((kal_char *)(cnf->value), "FFFFFFFF", cnf->len*2) != 0){
+ mcf_ut_format_err_str("val_bit_4byte_3.F2b, %s, %s\r\n", cnf->value, "03");
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 4){
+ mcf_ut_format_err_str("val_bit_4byte_3.F2b, %d, %d\r\n", cnf->len, 4);
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+ MCF_UT_PASS();
+ return KAL_TRUE;
+}
+
+#if !defined(__MTK_TARGET__)
+kal_bool mcf_ut_mcf_check_lid_need_reset(void *p_param, kal_char *p_ret_err_str, kal_uint32 *p_ret_err_str_sz)
+{
+ mcf_t *pMcf = mcf_get_instance();
+ mcf_ota_file_t *ota_file = &(pMcf->ota_file);
+ nvram_ef_mcf_ota_file_info_struct nv_ota_file;
+ nvram_ef_mcf_sw_info_struct nv_sw_info;
+ mcf_ota_result_e mcf_ret;
+ kal_bool ret;
+
+ mcf_ut_init();
+
+ /*
+ * Check LID need reset positive test - Modify 3 LIDs
+ */
+ /* Write MCF OTA file version to NVRAM */
+ kal_mem_set(&nv_ota_file, 0, sizeof(nvram_ef_mcf_ota_file_info_struct));
+ strncpy(nv_ota_file.path, MCF_FS_DEFAULT_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN);
+ strncpy(nv_ota_file.name, MCF_FS_DEFAULT_OTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN);
+ 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)) ) {
+ mcf_ut_format_err_str("Fail to write MCF OTA file info to NVRAM!!\r\n");
+ return KAL_FALSE;
+ }
+ kal_mem_set(&nv_sw_info, 0, sizeof(nvram_ef_mcf_sw_info_struct));
+ strncpy(nv_sw_info.last_update_file.sw_version, MCF_UT_SW_VERNO, MCF_FILE_MAX_SW_VERSION_LEN);
+ strncpy(nv_sw_info.last_update_file.gen_time, MCF_UT_GEN_TIME, MCF_FILE_MAX_GEN_TIME_LEN);
+ strcpy(nv_sw_info.last_update_file.path, "");
+ strcpy(nv_sw_info.last_update_file.name, "");
+ if ( !nvram_external_write_data(NVRAM_EF_MCF_SW_INFO_LID, 1, (kal_uint8 *)&nv_sw_info, sizeof(nvram_ef_mcf_sw_info_struct)) ) {
+ mcf_ut_format_err_str("Fail to write MCF sw info to NVRAM!!\r\n");
+ return KAL_FALSE;
+ }
+
+ MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ if (ota_file) {
+ ret = mcf_ut_open_test_data("OTA_3_LIDs.mcfota", (kal_char *)(ota_file->buff), MCF_MAX_OTA_FILE_SIZE);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "OTA_3_LIDs.mcfota");
+ return KAL_FALSE;
+ }
+
+ MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Do full OTA FAIL!! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(&mcf_last_mod_lid_g, 0, sizeof(nvram_mcf_lid_info_struct));
+ kal_mem_set(&mcf_curr_mod_lid_g, 0, sizeof(nvram_mcf_lid_info_struct));
+ mcf_ret = mcf_do_ota_full();
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Do full OTA FAIL!! ret(%d) \r\n", mcf_ret);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_lid_need_reset(NVRAM_EF_MCF_TEST_OTA_LID);
+ if (ret != KAL_TRUE) {
+ 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);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_lid_need_reset(NVRAM_EF_IMS_PROFILE_LID);
+ if (ret != KAL_TRUE) {
+ 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);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_lid_need_reset(NVRAM_EF_XCAP_PROFILE_LID);
+ if (ret != KAL_TRUE) {
+ 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);
+ return KAL_FALSE;
+ }
+
+ /*
+ * Check LID need reset positive test - Modify 2 LIDs
+ */
+ /* Write MCF OTA file version to NVRAM */
+ kal_mem_set(&nv_ota_file, 0, sizeof(nvram_ef_mcf_ota_file_info_struct));
+ strncpy(nv_ota_file.path, MCF_FS_DEFAULT_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN);
+ strncpy(nv_ota_file.name, MCF_FS_DEFAULT_OTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN);
+ 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)) ) {
+ mcf_ut_format_err_str("Fail to write MCF OTA file info to NVRAM!!\r\n");
+ return KAL_FALSE;
+ }
+ kal_mem_set(&nv_sw_info, 0, sizeof(nvram_ef_mcf_sw_info_struct));
+ strncpy(nv_sw_info.last_update_file.sw_version, MCF_UT_SW_VERNO, MCF_FILE_MAX_SW_VERSION_LEN);
+ strncpy(nv_sw_info.last_update_file.gen_time, MCF_UT_GEN_TIME, MCF_FILE_MAX_GEN_TIME_LEN);
+ strcpy(nv_sw_info.last_update_file.path, "");
+ strcpy(nv_sw_info.last_update_file.name, "");
+ if ( !nvram_external_write_data(NVRAM_EF_MCF_SW_INFO_LID, 1, (kal_uint8 *)&nv_sw_info, sizeof(nvram_ef_mcf_sw_info_struct)) ) {
+ mcf_ut_format_err_str("Fail to write MCF sw info to NVRAM!!\r\n");
+ return KAL_FALSE;
+ }
+
+ MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ if (ota_file) {
+ ret = mcf_ut_open_test_data("OTA_2_LIDs.mcfota", (kal_char *)(ota_file->buff), MCF_MAX_OTA_FILE_SIZE);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "OTA_2_LIDs.mcfota");
+ return KAL_FALSE;
+ }
+
+ MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Do full OTA FAIL!! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(&mcf_last_mod_lid_g, 0, sizeof(nvram_mcf_lid_info_struct));
+ kal_mem_set(&mcf_curr_mod_lid_g, 0, sizeof(nvram_mcf_lid_info_struct));
+ mcf_ret = mcf_do_ota_full();
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Do full OTA FAIL!! ret(%d) \r\n", mcf_ret);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_lid_need_reset(NVRAM_EF_MCF_TEST_OTA_LID);
+ if (ret != KAL_TRUE) {
+ 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);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_lid_need_reset(NVRAM_EF_IMS_PROFILE_LID);
+ if (ret != KAL_TRUE) {
+ 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);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_lid_need_reset(NVRAM_EF_XCAP_PROFILE_LID);
+ if (ret != KAL_TRUE) {
+ 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);
+ return KAL_FALSE;
+ }
+
+ /*
+ * Check LID need reset positive test - OTA file does not update
+ */
+ kal_mem_set(&mcf_last_mod_lid_g, 0, sizeof(nvram_mcf_lid_info_struct));
+ kal_mem_set(&mcf_curr_mod_lid_g, 0, sizeof(nvram_mcf_lid_info_struct));
+ mcf_ret = mcf_do_ota_full();
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Do full OTA FAIL!! ret(%d) \r\n", mcf_ret);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_lid_need_reset(NVRAM_EF_MCF_TEST_OTA_LID);
+ if (ret != KAL_FALSE) {
+ 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);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_lid_need_reset(NVRAM_EF_IMS_PROFILE_LID);
+ if (ret != KAL_FALSE) {
+ 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);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_lid_need_reset(NVRAM_EF_XCAP_PROFILE_LID);
+ if (ret != KAL_FALSE) {
+ 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);
+ return KAL_FALSE;
+ }
+
+ /*
+ * Check LID need reset positive test - Max last LID list count
+ */
+ kal_mem_set(&mcf_last_mod_lid_g, 0, sizeof(nvram_mcf_lid_info_struct));
+ kal_mem_set(&mcf_curr_mod_lid_g, 0, sizeof(nvram_mcf_lid_info_struct));
+ mcf_last_mod_lid_g.lid_cnt = NVRAM_MCF_SAVE_LAST_LID_CNT;
+
+ ret = mcf_check_lid_need_reset(NVRAM_EF_MCF_TEST_OTA_LID);
+ if (ret != KAL_TRUE) {
+ 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);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_lid_need_reset(NVRAM_EF_IMS_PROFILE_LID);
+ if (ret != KAL_TRUE) {
+ 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);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_lid_need_reset(NVRAM_EF_XCAP_PROFILE_LID);
+ if (ret != KAL_TRUE) {
+ 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);
+ return KAL_FALSE;
+ }
+
+ /*
+ * Check LID need reset positive test - Max current LID list count
+ */
+ kal_mem_set(&mcf_last_mod_lid_g, 0, sizeof(nvram_mcf_lid_info_struct));
+ kal_mem_set(&mcf_curr_mod_lid_g, 0, sizeof(nvram_mcf_lid_info_struct));
+ mcf_curr_mod_lid_g.lid_cnt = NVRAM_MCF_SAVE_LAST_LID_CNT;
+
+ ret = mcf_check_lid_need_reset(NVRAM_EF_MCF_TEST_OTA_LID);
+ if (ret != KAL_TRUE) {
+ 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);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_lid_need_reset(NVRAM_EF_IMS_PROFILE_LID);
+ if (ret != KAL_TRUE) {
+ 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);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_lid_need_reset(NVRAM_EF_XCAP_PROFILE_LID);
+ if (ret != KAL_TRUE) {
+ 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);
+ return KAL_FALSE;
+ }
+
+
+ MCF_UT_PASS();
+ return KAL_TRUE;
+}
+kal_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)
+{
+ mcf_t *pMcf = mcf_get_instance();
+ mcf_ota_file_t *ota_file = &(pMcf->ota_file);
+ nvram_ef_mcf_ota_file_info_struct nv_ota_file;
+ nvram_ef_mcf_sw_info_struct nv_sw_info;
+ mcf_ota_result_e mcf_ret;
+ kal_bool ret;
+
+ mcf_ut_init();
+
+ /*
+ * Check LID need reset positive test - Modify 3 LIDs
+ */
+ /* Write MCF OTA file version to NVRAM */
+ kal_mem_set(&nv_ota_file, 0, sizeof(nvram_ef_mcf_ota_file_info_struct));
+ strncpy(nv_ota_file.path, MCF_FS_DEFAULT_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN);
+ strncpy(nv_ota_file.name, MCF_FS_DEFAULT_OTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN);
+ 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)) ) {
+ mcf_ut_format_err_str("Fail to write MCF OTA file info to NVRAM!!\r\n");
+ return KAL_FALSE;
+ }
+ kal_mem_set(&nv_sw_info, 0, sizeof(nvram_ef_mcf_sw_info_struct));
+ strncpy(nv_sw_info.last_update_file.sw_version, MCF_UT_SW_VERNO, MCF_FILE_MAX_SW_VERSION_LEN);
+ strncpy(nv_sw_info.last_update_file.gen_time, MCF_UT_GEN_TIME, MCF_FILE_MAX_GEN_TIME_LEN);
+ strcpy(nv_sw_info.last_update_file.path, "");
+ strcpy(nv_sw_info.last_update_file.name, "");
+ if ( !nvram_external_write_data(NVRAM_EF_MCF_SW_INFO_LID, 1, (kal_uint8 *)&nv_sw_info, sizeof(nvram_ef_mcf_sw_info_struct)) ) {
+ mcf_ut_format_err_str("Fail to write MCF sw info to NVRAM!!\r\n");
+ return KAL_FALSE;
+ }
+
+ MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ if (ota_file) {
+ ret = mcf_ut_open_test_data("OTA_3_LIDs_ut_gid_normal.mcfota", (kal_char *)(ota_file->buff), MCF_MAX_OTA_FILE_SIZE);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "OTA_3_LIDs_ut_gid_normal.mcfota");
+ return KAL_FALSE;
+ }
+
+ MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Do full OTA FAIL!! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(&mcf_last_mod_lid_g, 0, sizeof(nvram_mcf_lid_info_struct));
+ kal_mem_set(&mcf_curr_mod_lid_g, 0, sizeof(nvram_mcf_lid_info_struct));
+ mcf_ret = mcf_do_ota_full();
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Do full OTA FAIL!! ret(%d) \r\n", mcf_ret);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_lid_need_reset(NVRAM_EF_MCF_TEST_OTA_LID);
+ if (ret != KAL_TRUE) {
+ 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);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_lid_need_reset(NVRAM_EF_IMS_PROFILE_LID);
+ if (ret != KAL_TRUE) {
+ 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);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_lid_need_reset(NVRAM_EF_XCAP_PROFILE_LID);
+ if (ret != KAL_TRUE) {
+ 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);
+ return KAL_FALSE;
+ }
+
+ /*
+ * Check LID need reset positive test - Modify 2 LIDs
+ */
+ /* Write MCF OTA file version to NVRAM */
+ kal_mem_set(&nv_ota_file, 0, sizeof(nvram_ef_mcf_ota_file_info_struct));
+ strncpy(nv_ota_file.path, MCF_FS_DEFAULT_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN);
+ strncpy(nv_ota_file.name, MCF_FS_DEFAULT_OTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN);
+ 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)) ) {
+ mcf_ut_format_err_str("Fail to write MCF OTA file info to NVRAM!!\r\n");
+ return KAL_FALSE;
+ }
+ kal_mem_set(&nv_sw_info, 0, sizeof(nvram_ef_mcf_sw_info_struct));
+ strncpy(nv_sw_info.last_update_file.sw_version, MCF_UT_SW_VERNO, MCF_FILE_MAX_SW_VERSION_LEN);
+ strncpy(nv_sw_info.last_update_file.gen_time, MCF_UT_GEN_TIME, MCF_FILE_MAX_GEN_TIME_LEN);
+ strcpy(nv_sw_info.last_update_file.path, "");
+ strcpy(nv_sw_info.last_update_file.name, "");
+ if ( !nvram_external_write_data(NVRAM_EF_MCF_SW_INFO_LID, 1, (kal_uint8 *)&nv_sw_info, sizeof(nvram_ef_mcf_sw_info_struct)) ) {
+ mcf_ut_format_err_str("Fail to write MCF sw info to NVRAM!!\r\n");
+ return KAL_FALSE;
+ }
+
+ MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ if (ota_file) {
+ ret = mcf_ut_open_test_data("OTA_2_LIDs_ut_gid_normal.mcfota", (kal_char *)(ota_file->buff), MCF_MAX_OTA_FILE_SIZE);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "OTA_2_LIDs_ut_gid_normal.mcfota");
+ return KAL_FALSE;
+ }
+
+ MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Do full OTA FAIL!! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(&mcf_last_mod_lid_g, 0, sizeof(nvram_mcf_lid_info_struct));
+ kal_mem_set(&mcf_curr_mod_lid_g, 0, sizeof(nvram_mcf_lid_info_struct));
+ mcf_ret = mcf_do_ota_full();
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Do full OTA FAIL!! ret(%d) \r\n", mcf_ret);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_lid_need_reset(NVRAM_EF_MCF_TEST_OTA_LID);
+ if (ret != KAL_TRUE) {
+ 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);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_lid_need_reset(NVRAM_EF_IMS_PROFILE_LID);
+ if (ret != KAL_TRUE) {
+ 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);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_lid_need_reset(NVRAM_EF_XCAP_PROFILE_LID);
+ if (ret != KAL_TRUE) {
+ 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);
+ return KAL_FALSE;
+ }
+
+ /*
+ * Check LID need reset positive test - OTA file does not update
+ */
+ kal_mem_set(&mcf_last_mod_lid_g, 0, sizeof(nvram_mcf_lid_info_struct));
+ kal_mem_set(&mcf_curr_mod_lid_g, 0, sizeof(nvram_mcf_lid_info_struct));
+ mcf_ret = mcf_do_ota_full();
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Do full OTA FAIL!! ret(%d) \r\n", mcf_ret);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_lid_need_reset(NVRAM_EF_MCF_TEST_OTA_LID);
+ if (ret != KAL_FALSE) {
+ 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);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_lid_need_reset(NVRAM_EF_IMS_PROFILE_LID);
+ if (ret != KAL_FALSE) {
+ 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);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_lid_need_reset(NVRAM_EF_XCAP_PROFILE_LID);
+ if (ret != KAL_FALSE) {
+ 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);
+ return KAL_FALSE;
+ }
+
+ /*
+ * Check LID need reset positive test - Max last LID list count
+ */
+ kal_mem_set(&mcf_last_mod_lid_g, 0, sizeof(nvram_mcf_lid_info_struct));
+ kal_mem_set(&mcf_curr_mod_lid_g, 0, sizeof(nvram_mcf_lid_info_struct));
+ mcf_last_mod_lid_g.lid_cnt = NVRAM_MCF_SAVE_LAST_LID_CNT;
+
+ ret = mcf_check_lid_need_reset(NVRAM_EF_MCF_TEST_OTA_LID);
+ if (ret != KAL_TRUE) {
+ 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);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_lid_need_reset(NVRAM_EF_IMS_PROFILE_LID);
+ if (ret != KAL_TRUE) {
+ 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);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_lid_need_reset(NVRAM_EF_XCAP_PROFILE_LID);
+ if (ret != KAL_TRUE) {
+ 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);
+ return KAL_FALSE;
+ }
+
+ /*
+ * Check LID need reset positive test - Max current LID list count
+ */
+ kal_mem_set(&mcf_last_mod_lid_g, 0, sizeof(nvram_mcf_lid_info_struct));
+ kal_mem_set(&mcf_curr_mod_lid_g, 0, sizeof(nvram_mcf_lid_info_struct));
+ mcf_curr_mod_lid_g.lid_cnt = NVRAM_MCF_SAVE_LAST_LID_CNT;
+
+ ret = mcf_check_lid_need_reset(NVRAM_EF_MCF_TEST_OTA_LID);
+ if (ret != KAL_TRUE) {
+ 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);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_lid_need_reset(NVRAM_EF_IMS_PROFILE_LID);
+ if (ret != KAL_TRUE) {
+ 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);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_lid_need_reset(NVRAM_EF_XCAP_PROFILE_LID);
+ if (ret != KAL_TRUE) {
+ 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);
+ return KAL_FALSE;
+ }
+
+
+ MCF_UT_PASS();
+ return KAL_TRUE;
+}
+
+kal_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)
+{
+ mcf_t *pMcf = mcf_get_instance();
+ mcf_tool_file_info_t *pFile;
+ mcf_tool_gid_tlvota_file_item_t *pItem;
+ mcf_tlvota_file_t *tlvota_file;
+ nvram_ef_mcf_tlvota_file_info_struct nv_tlvota_file;
+ mcf_ota_result_e mcf_ret;
+ kal_bool ret;
+ kal_uint8 i;
+ sbp_reconfig_custom_param_struct param_ptr;
+ nvram_ef_mcf_sw_info_struct nv_sw_info;
+
+ mcf_ut_init();
+
+ if ( !nvram_external_read_data(NVRAM_EF_MCF_SW_INFO_LID, 1, (kal_uint8 *)&nv_sw_info, sizeof(nvram_ef_mcf_sw_info_struct))) {
+ mcf_ut_format_err_str("Read NVRAM_EF_MCF_SW_INFO_LID FAIL!");
+ return KAL_FALSE;
+ }
+
+ strncpy(nv_sw_info.version, release_verno(), MCF_SW_VERNO_LEN);
+ strncpy(nv_sw_info.build_time, build_date_time(), MCF_SW_BUILD_TIME_LEN);
+
+ if ( !nvram_external_write_data(NVRAM_EF_MCF_SW_INFO_LID, 1, (kal_uint8 *)&nv_sw_info, sizeof(nvram_ef_mcf_sw_info_struct))) {
+ mcf_ut_format_err_str("Write NVRAM_EF_MCF_SW_INFO_LID FAIL!");
+ return KAL_FALSE;
+ }
+
+ /*
+ * Check LID need reset positive test - Modify 3 LIDs with SBP_PARTIAL_TAG
+ */
+ /* Write MCF TLV-OTA file version to NVRAM */
+ kal_mem_set(&nv_tlvota_file, 0, sizeof(nvram_ef_mcf_tlvota_file_info_struct));
+ strncpy(nv_tlvota_file.path, MCF_FS_DEFAULT_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN);
+ strncpy(nv_tlvota_file.name, MCF_FS_DEFAULT_TLVOTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN);
+ 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)) ) {
+ mcf_ut_format_err_str("Fail to write MCF TLV-OTA file info to NVRAM!!\r\n");
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(&mcf_tlvota_last_mod_lid_g, 0, sizeof(nvram_mcf_lid_info_struct)*MAX_SIM_NUM);
+ kal_mem_set(&mcf_tlvota_curr_mod_lid_g, 0, sizeof(nvram_mcf_lid_info_struct)*MAX_SIM_NUM);
+
+
+ for (i = 0; i < MAX_SIM_NUM; i++) {
+ tlvota_file = &(pMcf->tlvota_file[i]);
+
+ MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ if (tlvota_file) {
+ pFile = (mcf_tool_file_info_t *)(tlvota_file->buff);
+ pItem = (mcf_tool_gid_tlvota_file_item_t *)(tlvota_file->buff + sizeof(mcf_tool_file_info_t));
+
+ 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);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_TLVOTA_SBP_partial_ut_3LIDs_gid_normal.mcfopota");
+ return KAL_FALSE;
+ }
+
+ MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+ }
+
+ for (i = 0; i < MAX_SIM_NUM; i++) {
+ // NVRAM_EF_MCF_TEST_OTA_LID with SBP_PARTIAL_TAG
+ param_ptr.sbp_id = SBP_TAG_SBPID;
+ param_ptr.ps_id = l4c_gemini_get_switched_sim_id(i);
+ kal_mem_cpy(param_ptr.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
+ kal_mem_cpy(param_ptr.mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
+ kal_mem_set(param_ptr.iccid, 0, 21);
+
+ is_read_general_tlvota[i] = KAL_FALSE;
+ is_read_tlvota[i] = KAL_TRUE;
+ pMcf->is_ignore_dsbp[i] = KAL_TRUE;
+
+ ret = mcf_auto_select_tlvota_file(¶m_ptr);
+ if (ret != KAL_TRUE) {
+ mcf_ut_format_err_str("auto select tlvota file FAIL!! ret(%d) \r\n", ret);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_lid_need_reset_by_psid(NVRAM_EF_MCF_TEST_OTA_LID, l4c_gemini_get_switched_sim_id(i));
+ if (ret != KAL_TRUE) {
+ 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);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_lid_need_reset_by_psid(NVRAM_EF_IMS_PROFILE_LID, l4c_gemini_get_switched_sim_id(i));
+ if (ret != KAL_TRUE) {
+ 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);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_lid_need_reset_by_psid(NVRAM_EF_XCAP_PROFILE_LID, l4c_gemini_get_switched_sim_id(i));
+ if (ret != KAL_TRUE) {
+ 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);
+ return KAL_FALSE;
+ }
+
+ mcf_set_config_after_dsbp(l4c_gemini_get_switched_sim_id(i));
+ }
+
+ /*
+ * Check LID need reset positive test - Modify 2 LIDs
+ */
+
+ /* Read MCF TLV-OTA file into cache buffer */
+ 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))) {
+ mcf_ut_format_err_str("Fail to read MCF TLV-OTA file info to NVRAM!!\r\n");
+ return KAL_FALSE;
+ }
+
+ /* Write MCF TLV-OTA file version to NVRAM */
+ strncpy(nv_tlvota_file.path, MCF_FS_DEFAULT_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN);
+ strncpy(nv_tlvota_file.name, MCF_FS_DEFAULT_TLVOTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN);
+ 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)) ) {
+ mcf_ut_format_err_str("Fail to write MCF TLV-OTA file info to NVRAM!!\r\n");
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(&mcf_tlvota_last_mod_lid_g, 0, sizeof(nvram_mcf_lid_info_struct)*MAX_SIM_NUM);
+ kal_mem_set(&mcf_tlvota_curr_mod_lid_g, 0, sizeof(nvram_mcf_lid_info_struct)*MAX_SIM_NUM);
+
+ for (i = 0; i < MAX_SIM_NUM; i++) {
+ tlvota_file = &(pMcf->tlvota_file[i]);
+
+ MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ if (tlvota_file) {
+ pFile = (mcf_tool_file_info_t *)(tlvota_file->buff);
+ pItem = (mcf_tool_gid_tlvota_file_item_t *)(tlvota_file->buff + sizeof(mcf_tool_file_info_t));
+
+ 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);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_TLVOTA_SBP_partial_ut_2LIDs_gid_normal.mcfopota");
+ return KAL_FALSE;
+ }
+
+ MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+ }
+
+ for (i = 0; i < MAX_SIM_NUM; i++) {
+ // NVRAM_EF_MCF_TEST_OTA_LID with SBP_PARTIAL_TAG
+ param_ptr.sbp_id = SBP_TAG_SBPID;
+ param_ptr.ps_id = l4c_gemini_get_switched_sim_id(i);
+ kal_mem_cpy(param_ptr.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
+ kal_mem_cpy(param_ptr.mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
+ kal_mem_set(param_ptr.iccid, 0, 21);
+
+ is_read_general_tlvota[i] = KAL_FALSE;
+ is_read_tlvota[i] = KAL_TRUE;
+ pMcf->is_ignore_dsbp[i] = KAL_TRUE;
+
+ ret = mcf_auto_select_tlvota_file(¶m_ptr);
+ if (ret != KAL_TRUE) {
+ mcf_ut_format_err_str("auto select tlvota file FAIL!! ret(%d) \r\n", ret);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_lid_need_reset_by_psid(NVRAM_EF_MCF_TEST_OTA_LID, l4c_gemini_get_switched_sim_id(i));
+ if (ret != KAL_TRUE) {
+ 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);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_lid_need_reset_by_psid(NVRAM_EF_IMS_PROFILE_LID, l4c_gemini_get_switched_sim_id(i));
+ if (ret != KAL_TRUE) {
+ 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);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_lid_need_reset_by_psid(NVRAM_EF_XCAP_PROFILE_LID, l4c_gemini_get_switched_sim_id(i));
+ if (ret != KAL_TRUE) {
+ 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);
+ return KAL_FALSE;
+ }
+ mcf_set_config_after_dsbp(l4c_gemini_get_switched_sim_id(i));
+ }
+
+ /*
+ * Check LID need reset positive test - TLV-OTA file does not update
+ */
+
+ kal_mem_set(&mcf_tlvota_last_mod_lid_g, 0, sizeof(nvram_mcf_lid_info_struct)*MAX_SIM_NUM);
+ kal_mem_set(&mcf_tlvota_curr_mod_lid_g, 0, sizeof(nvram_mcf_lid_info_struct)*MAX_SIM_NUM);
+
+ for (i = 0; i < MAX_SIM_NUM; i++) {
+ // NVRAM_EF_MCF_TEST_OTA_LID with SBP_PARTIAL_TAG
+ param_ptr.sbp_id = SBP_TAG_SBPID;
+ param_ptr.ps_id = l4c_gemini_get_switched_sim_id(i);
+ kal_mem_cpy(param_ptr.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
+ kal_mem_cpy(param_ptr.mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
+ kal_mem_set(param_ptr.iccid, 0, 21);
+
+ pMcf->is_ignore_dsbp[i] = KAL_TRUE;
+
+ ret = mcf_auto_select_tlvota_file(¶m_ptr);
+ if (ret != KAL_TRUE) {
+ mcf_ut_format_err_str("auto select tlvota file FAIL!! ret(%d) \r\n", ret);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_lid_need_reset_by_psid(NVRAM_EF_MCF_TEST_OTA_LID, l4c_gemini_get_switched_sim_id(i));
+ if (ret != KAL_FALSE) {
+ 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);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_lid_need_reset_by_psid(NVRAM_EF_IMS_PROFILE_LID, l4c_gemini_get_switched_sim_id(i));
+ if (ret != KAL_FALSE) {
+ 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);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_lid_need_reset_by_psid(NVRAM_EF_XCAP_PROFILE_LID, l4c_gemini_get_switched_sim_id(i));
+ if (ret != KAL_FALSE) {
+ 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);
+ return KAL_FALSE;
+ }
+ mcf_set_config_after_dsbp(l4c_gemini_get_switched_sim_id(i));
+ }
+
+ /*
+ * Check LID need reset positive test - Max last LID list count
+ */
+ kal_mem_set(&mcf_tlvota_last_mod_lid_g, 0, sizeof(nvram_mcf_lid_info_struct)*MAX_SIM_NUM);
+ kal_mem_set(&mcf_tlvota_curr_mod_lid_g, 0, sizeof(nvram_mcf_lid_info_struct)*MAX_SIM_NUM);
+ for (i = 0; i < MAX_SIM_NUM; i++) {
+ mcf_tlvota_last_mod_lid_g[i].lid_cnt = NVRAM_MCF_SAVE_LAST_LID_CNT;
+
+ ret = mcf_check_lid_need_reset_by_psid(NVRAM_EF_MCF_TEST_OTA_LID, l4c_gemini_get_switched_sim_id(i));
+ if (ret != KAL_TRUE) {
+ 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);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_lid_need_reset_by_psid(NVRAM_EF_IMS_PROFILE_LID, l4c_gemini_get_switched_sim_id(i));
+ if (ret != KAL_TRUE) {
+ 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);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_lid_need_reset_by_psid(NVRAM_EF_XCAP_PROFILE_LID, l4c_gemini_get_switched_sim_id(i));
+ if (ret != KAL_TRUE) {
+ 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);
+ return KAL_FALSE;
+ }
+ }
+
+ /*
+ * Check LID need reset positive test - Max current LID list count
+ */
+ kal_mem_set(&mcf_tlvota_last_mod_lid_g, 0, sizeof(nvram_mcf_lid_info_struct)*MAX_SIM_NUM);
+ kal_mem_set(&mcf_tlvota_curr_mod_lid_g, 0, sizeof(nvram_mcf_lid_info_struct)*MAX_SIM_NUM);
+ for (i = 0; i < MAX_SIM_NUM; i++) {
+ mcf_tlvota_curr_mod_lid_g[i].lid_cnt = NVRAM_MCF_SAVE_LAST_LID_CNT;
+
+ ret = mcf_check_lid_need_reset_by_psid(NVRAM_EF_MCF_TEST_OTA_LID, l4c_gemini_get_switched_sim_id(i));
+ if (ret != KAL_TRUE) {
+ 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);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_lid_need_reset_by_psid(NVRAM_EF_IMS_PROFILE_LID, l4c_gemini_get_switched_sim_id(i));
+ if (ret != KAL_TRUE) {
+ 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);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_lid_need_reset_by_psid(NVRAM_EF_XCAP_PROFILE_LID, l4c_gemini_get_switched_sim_id(i));
+ if (ret != KAL_TRUE) {
+ 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);
+ return KAL_FALSE;
+ }
+ }
+
+ /*
+ * Check LID need reset positive test - Modify 3 LIDs with SBP_PARTIAL_TAG_WITH_MCC
+ */
+ /* Write MCF TLV-OTA file version to NVRAM */
+ kal_mem_set(&nv_tlvota_file, 0, sizeof(nvram_ef_mcf_tlvota_file_info_struct));
+ strncpy(nv_tlvota_file.path, MCF_FS_DEFAULT_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN);
+ strncpy(nv_tlvota_file.name, MCF_FS_DEFAULT_TLVOTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN);
+ 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)) ) {
+ mcf_ut_format_err_str("Fail to write MCF TLV-OTA file info to NVRAM!!\r\n");
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(&mcf_tlvota_last_mod_lid_g, 0, sizeof(nvram_mcf_lid_info_struct)*MAX_SIM_NUM);
+ kal_mem_set(&mcf_tlvota_curr_mod_lid_g, 0, sizeof(nvram_mcf_lid_info_struct)*MAX_SIM_NUM);
+
+
+ for (i = 0; i < MAX_SIM_NUM; i++) {
+ tlvota_file = &(pMcf->tlvota_file[i]);
+
+ MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ if (tlvota_file) {
+ pFile = (mcf_tool_file_info_t *)(tlvota_file->buff);
+ pItem = (mcf_tool_gid_tlvota_file_item_t *)(tlvota_file->buff + sizeof(mcf_tool_file_info_t));
+
+ 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);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_TLVOTA_SBP_partial_tag_with_mcc_ut_3LIDs_gid_normal.mcfopota");
+ return KAL_FALSE;
+ }
+
+ MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+ }
+
+ for (i = 0; i < MAX_SIM_NUM; i++) {
+ // NVRAM_EF_MCF_TEST_OTA_LID with SBP_PARTIAL_TAG_WITH_MCC
+ param_ptr.sbp_id = SBP_TAG_SBPID;
+ param_ptr.ps_id = l4c_gemini_get_switched_sim_id(i);
+ kal_mem_cpy(param_ptr.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
+ kal_mem_cpy(param_ptr.mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
+ kal_mem_set(param_ptr.iccid, 0, 21);
+
+ is_read_general_tlvota[i] = KAL_FALSE;
+ is_read_tlvota[i] = KAL_TRUE;
+ pMcf->is_ignore_dsbp[i] = KAL_TRUE;
+
+ ret = mcf_auto_select_tlvota_file(¶m_ptr);
+ if (ret != KAL_TRUE) {
+ mcf_ut_format_err_str("auto select tlvota file FAIL!! ret(%d) \r\n", ret);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_lid_need_reset_by_psid(NVRAM_EF_MCF_TEST_OTA_LID, l4c_gemini_get_switched_sim_id(i));
+ if (ret != KAL_TRUE) {
+ 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);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_lid_need_reset_by_psid(NVRAM_EF_IMS_PROFILE_LID, l4c_gemini_get_switched_sim_id(i));
+ if (ret != KAL_TRUE) {
+ 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);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_lid_need_reset_by_psid(NVRAM_EF_XCAP_PROFILE_LID, l4c_gemini_get_switched_sim_id(i));
+ if (ret != KAL_TRUE) {
+ 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);
+ return KAL_FALSE;
+ }
+
+ mcf_set_config_after_dsbp(l4c_gemini_get_switched_sim_id(i));
+ }
+
+ /*
+ * Check LID need reset positive test - Modify 3 LIDs with SBP_FULL_TAG
+ */
+ /* Write MCF TLV-OTA file version to NVRAM */
+ kal_mem_set(&nv_tlvota_file, 0, sizeof(nvram_ef_mcf_tlvota_file_info_struct));
+ strncpy(nv_tlvota_file.path, MCF_FS_DEFAULT_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN);
+ strncpy(nv_tlvota_file.name, MCF_FS_DEFAULT_TLVOTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN);
+ 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)) ) {
+ mcf_ut_format_err_str("Fail to write MCF TLV-OTA file info to NVRAM!!\r\n");
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(&mcf_tlvota_last_mod_lid_g, 0, sizeof(nvram_mcf_lid_info_struct)*MAX_SIM_NUM);
+ kal_mem_set(&mcf_tlvota_curr_mod_lid_g, 0, sizeof(nvram_mcf_lid_info_struct)*MAX_SIM_NUM);
+
+
+ for (i = 0; i < MAX_SIM_NUM; i++) {
+ tlvota_file = &(pMcf->tlvota_file[i]);
+
+ MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ if (tlvota_file) {
+ pFile = (mcf_tool_file_info_t *)(tlvota_file->buff);
+ pItem = (mcf_tool_gid_tlvota_file_item_t *)(tlvota_file->buff + sizeof(mcf_tool_file_info_t));
+
+ 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);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_TLVOTA_SBP_full_tag_ut_3LIDs_gid_normal.mcfopota");
+ return KAL_FALSE;
+ }
+
+ MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+ }
+
+ for (i = 0; i < MAX_SIM_NUM; i++) {
+ // NVRAM_EF_MCF_TEST_OTA_LID with SBP_FULL_TAG
+ param_ptr.sbp_id = SBP_TAG_SBPID;
+ param_ptr.ps_id = l4c_gemini_get_switched_sim_id(i);
+ kal_mem_cpy(param_ptr.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
+ kal_mem_cpy(param_ptr.mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
+ kal_mem_set(param_ptr.iccid, 0, 21);
+
+ is_read_general_tlvota[i] = KAL_FALSE;
+ is_read_tlvota[i] = KAL_TRUE;
+ pMcf->is_ignore_dsbp[i] = KAL_TRUE;
+
+ ret = mcf_auto_select_tlvota_file(¶m_ptr);
+ if (ret != KAL_TRUE) {
+ mcf_ut_format_err_str("auto select tlvota file FAIL!! ret(%d) \r\n", ret);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_lid_need_reset_by_psid(NVRAM_EF_MCF_TEST_OTA_LID, l4c_gemini_get_switched_sim_id(i));
+ if (ret != KAL_TRUE) {
+ 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);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_lid_need_reset_by_psid(NVRAM_EF_IMS_PROFILE_LID, l4c_gemini_get_switched_sim_id(i));
+ if (ret != KAL_TRUE) {
+ 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);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_lid_need_reset_by_psid(NVRAM_EF_XCAP_PROFILE_LID, l4c_gemini_get_switched_sim_id(i));
+ if (ret != KAL_TRUE) {
+ 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);
+ return KAL_FALSE;
+ }
+
+ mcf_set_config_after_dsbp(l4c_gemini_get_switched_sim_id(i));
+ }
+
+ /*
+ * Check LID need reset positive test - Modify 3 LIDs by auto select apply
+ */
+ /* Write MCF TLV-OTA file version to NVRAM */
+ kal_mem_set(&nv_tlvota_file, 0, sizeof(nvram_ef_mcf_tlvota_file_info_struct));
+ 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)) ) {
+ mcf_ut_format_err_str("Fail to write MCF TLV-OTA file info to NVRAM!!\r\n");
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(&mcf_tlvota_last_mod_lid_g, 0, sizeof(nvram_mcf_lid_info_struct)*MAX_SIM_NUM);
+ kal_mem_set(&mcf_tlvota_curr_mod_lid_g, 0, sizeof(nvram_mcf_lid_info_struct)*MAX_SIM_NUM);
+
+
+ for (i = 0; i < MAX_SIM_NUM; i++) {
+ tlvota_file = &(pMcf->tlvota_file[i]);
+
+ MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ if (tlvota_file) {
+ pFile = (mcf_tool_file_info_t *)(tlvota_file->buff);
+ pItem = (mcf_tool_gid_tlvota_file_item_t *)(tlvota_file->buff + sizeof(mcf_tool_file_info_t));
+
+ ret = mcf_ut_open_test_data("MTK_OPOTA_SBPID_12.mcfopota", (kal_char *)(tlvota_file->buff), MCF_MAX_TLVOTA_FILE_SIZE);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MTK_OPOTA_SBPID_12.mcfopota");
+ return KAL_FALSE;
+ }
+
+ tlvota_file->last_mod_time = MCF_UT_GEN_TIME;
+ MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+ }
+
+ for (i = 0; i < MAX_SIM_NUM; i++) {
+ param_ptr.sbp_id = SBP_TAG_SBPID;
+ param_ptr.ps_id = l4c_gemini_get_switched_sim_id(i);
+ kal_mem_cpy(param_ptr.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
+ kal_mem_cpy(param_ptr.mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
+ kal_mem_set(param_ptr.iccid, 0, 21);
+
+ is_read_general_tlvota[i] = KAL_FALSE;
+ is_read_tlvota[i] = KAL_FALSE;
+ pMcf->is_ignore_dsbp[i] = KAL_FALSE;
+
+ ret = mcf_auto_select_tlvota_file(¶m_ptr);
+ if (ret != KAL_TRUE) {
+ mcf_ut_format_err_str("auto select tlvota file FAIL!! ret(%d) \r\n", ret);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_lid_need_reset_by_psid(NVRAM_EF_MCF_TEST_OTA_LID, l4c_gemini_get_switched_sim_id(i));
+ if (ret != KAL_TRUE) {
+ 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);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_lid_need_reset_by_psid(NVRAM_EF_IMS_PROFILE_LID, l4c_gemini_get_switched_sim_id(i));
+ if (ret != KAL_TRUE) {
+ 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);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_lid_need_reset_by_psid(NVRAM_EF_XCAP_PROFILE_LID, l4c_gemini_get_switched_sim_id(i));
+ if (ret != KAL_TRUE) {
+ 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);
+ return KAL_FALSE;
+ }
+ }
+
+ for (i = 0; i < MAX_SIM_NUM; i++){
+ mcf_set_config_after_dsbp(l4c_gemini_get_switched_sim_id(i));
+ }
+
+ /*General TLV-OTA*/
+
+ /*
+ * Check LID need reset positive test - Modify 3 LIDs
+ */
+ /* Write MCF TLV-OTA file version to NVRAM */
+ kal_mem_set(&nv_tlvota_file, 0, sizeof(nvram_ef_mcf_tlvota_file_info_struct));
+ strncpy(nv_tlvota_file.path, MCF_FS_DEFAULT_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN);
+ strncpy(nv_tlvota_file.name, MCF_FS_DEFAULT_TLVOTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN);
+ 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)) ) {
+ mcf_ut_format_err_str("Fail to write MCF General TLV-OTA file info to NVRAM!!\r\n");
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(&mcf_general_tlvota_last_mod_lid_g, 0, sizeof(nvram_mcf_lid_info_struct)*MAX_SIM_NUM);
+ kal_mem_set(&mcf_general_tlvota_curr_mod_lid_g, 0, sizeof(nvram_mcf_lid_info_struct)*MAX_SIM_NUM);
+
+ tlvota_file = &(pMcf->general_tlvota_file);
+
+ MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ if (tlvota_file) {
+ pFile = (mcf_tool_file_info_t *)(tlvota_file->buff);
+ pItem = (mcf_tool_gid_tlvota_file_item_t *)(tlvota_file->buff + sizeof(mcf_tool_file_info_t));
+
+ 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);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_TLVOTA_SBP_NA_ut_3LIDs_gid_normal.mcfopota");
+ return KAL_FALSE;
+ }
+
+ MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+ kal_mem_set(is_read_general_tlvota, 0, MAX_SIM_NUM);
+
+ for (i = 0; i < MAX_SIM_NUM; i++) {
+ // NVRAM_EF_MCF_TEST_OTA_LID
+ param_ptr.sbp_id = SBP_TAG_SBPID;
+ param_ptr.ps_id = l4c_gemini_get_switched_sim_id(i);
+ kal_mem_cpy(param_ptr.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
+ kal_mem_cpy(param_ptr.mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
+ kal_mem_set(param_ptr.iccid, 0, 21);
+
+ is_read_tlvota[i] = KAL_FALSE;
+ pMcf->is_ignore_dsbp[i] = KAL_TRUE;
+ is_read_general_tlvota[i] = KAL_TRUE;
+
+ ret = mcf_auto_select_tlvota_file(¶m_ptr);
+ if (ret != KAL_TRUE) {
+ mcf_ut_format_err_str("auto select tlvota file FAIL!! ret(%d) \r\n", ret);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_lid_need_reset_by_psid(NVRAM_EF_MCF_TEST_OTA_LID, l4c_gemini_get_switched_sim_id(i));
+ if (ret != KAL_TRUE) {
+ 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);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_lid_need_reset_by_psid(NVRAM_EF_IMS_PROFILE_LID, l4c_gemini_get_switched_sim_id(i));
+ if (ret != KAL_TRUE) {
+ 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);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_lid_need_reset_by_psid(NVRAM_EF_XCAP_PROFILE_LID, l4c_gemini_get_switched_sim_id(i));
+ if (ret != KAL_TRUE) {
+ 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);
+ return KAL_FALSE;
+ }
+
+ mcf_set_config_after_dsbp(l4c_gemini_get_switched_sim_id(i));
+ }
+
+ /*
+ * Check LID need reset positive test - Modify 2 LIDs
+ */
+
+ /* Read MCF TLV-OTA file into cache buffer */
+ 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))) {
+ mcf_ut_format_err_str("Fail to read MCF General TLV-OTA file info to NVRAM!!\r\n");
+ return KAL_FALSE;
+ }
+
+ /* Write MCF TLV-OTA file version to NVRAM */
+ strncpy(nv_tlvota_file.path, MCF_FS_DEFAULT_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN);
+ strncpy(nv_tlvota_file.name, MCF_FS_DEFAULT_TLVOTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN);
+ 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)) ) {
+ mcf_ut_format_err_str("Fail to write MCF General TLV-OTA file info to NVRAM!!\r\n");
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(&mcf_general_tlvota_last_mod_lid_g, 0, sizeof(nvram_mcf_lid_info_struct)*MAX_SIM_NUM);
+ kal_mem_set(&mcf_general_tlvota_curr_mod_lid_g, 0, sizeof(nvram_mcf_lid_info_struct)*MAX_SIM_NUM);
+
+ tlvota_file = &(pMcf->general_tlvota_file);
+
+ MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ if (tlvota_file) {
+ pFile = (mcf_tool_file_info_t *)(tlvota_file->buff);
+ pItem = (mcf_tool_gid_tlvota_file_item_t *)(tlvota_file->buff + sizeof(mcf_tool_file_info_t));
+
+ 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);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_TLVOTA_SBP_NA_ut_2LIDs_gid_normal.mcfopota");
+ return KAL_FALSE;
+ }
+
+ MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+ kal_mem_set(is_read_general_tlvota, 0, MAX_SIM_NUM);
+ for (i = 0; i < MAX_SIM_NUM; i++) {
+ // NVRAM_EF_MCF_TEST_OTA_LID
+ param_ptr.sbp_id = SBP_TAG_SBPID;
+ param_ptr.ps_id = l4c_gemini_get_switched_sim_id(i);
+ kal_mem_cpy(param_ptr.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
+ kal_mem_cpy(param_ptr.mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
+ kal_mem_set(param_ptr.iccid, 0, 21);
+
+ is_read_tlvota[i] = KAL_FALSE;
+ pMcf->is_ignore_dsbp[i] = KAL_TRUE;
+ is_read_general_tlvota[i] = KAL_TRUE;
+
+ ret = mcf_auto_select_tlvota_file(¶m_ptr);
+ if (ret != KAL_TRUE) {
+ mcf_ut_format_err_str("auto select tlvota file FAIL!! ret(%d) \r\n", ret);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_lid_need_reset_by_psid(NVRAM_EF_MCF_TEST_OTA_LID, l4c_gemini_get_switched_sim_id(i));
+ if (ret != KAL_TRUE) {
+ 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);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_lid_need_reset_by_psid(NVRAM_EF_IMS_PROFILE_LID, l4c_gemini_get_switched_sim_id(i));
+ if (ret != KAL_TRUE) {
+ 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);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_lid_need_reset_by_psid(NVRAM_EF_XCAP_PROFILE_LID, l4c_gemini_get_switched_sim_id(i));
+ if (ret != KAL_TRUE) {
+ 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);
+ return KAL_FALSE;
+ }
+ mcf_set_config_after_dsbp(l4c_gemini_get_switched_sim_id(i));
+ }
+
+ /*
+ * Check LID need reset positive test - General TLV-OTA file does not update
+ */
+
+ kal_mem_set(&mcf_general_tlvota_last_mod_lid_g, 0, sizeof(nvram_mcf_lid_info_struct)*MAX_SIM_NUM);
+ kal_mem_set(&mcf_general_tlvota_curr_mod_lid_g, 0, sizeof(nvram_mcf_lid_info_struct)*MAX_SIM_NUM);
+
+ for (i = 0; i < MAX_SIM_NUM; i++) {
+ // NVRAM_EF_MCF_TEST_OTA_LID
+ param_ptr.sbp_id = SBP_TAG_SBPID;
+ param_ptr.ps_id = l4c_gemini_get_switched_sim_id(i);
+ kal_mem_cpy(param_ptr.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
+ kal_mem_cpy(param_ptr.mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
+ kal_mem_set(param_ptr.iccid, 0, 21);
+
+ pMcf->is_ignore_dsbp[i] = KAL_TRUE;
+
+ ret = mcf_auto_select_tlvota_file(¶m_ptr);
+ if (ret != KAL_TRUE) {
+ mcf_ut_format_err_str("auto select tlvota file FAIL!! ret(%d) \r\n", ret);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_lid_need_reset_by_psid(NVRAM_EF_MCF_TEST_OTA_LID, l4c_gemini_get_switched_sim_id(i));
+ if (ret != KAL_FALSE) {
+ 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);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_lid_need_reset_by_psid(NVRAM_EF_IMS_PROFILE_LID, l4c_gemini_get_switched_sim_id(i));
+ if (ret != KAL_FALSE) {
+ 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);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_lid_need_reset_by_psid(NVRAM_EF_XCAP_PROFILE_LID, l4c_gemini_get_switched_sim_id(i));
+ if (ret != KAL_FALSE) {
+ 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);
+ return KAL_FALSE;
+ }
+ mcf_set_config_after_dsbp(l4c_gemini_get_switched_sim_id(i));
+ }
+
+ /*
+ * Check LID need reset positive test - Modify 3 LIDs with ICCID tag by auto select apply
+ */
+ /* Write MCF TLV-OTA file version to NVRAM */
+ kal_mem_set(&nv_tlvota_file, 0, sizeof(nvram_ef_mcf_tlvota_file_info_struct));
+ 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)) ) {
+ mcf_ut_format_err_str("Fail to write MCF General TLV-OTA file info to NVRAM!!\r\n");
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(&mcf_general_tlvota_last_mod_lid_g, 0, sizeof(nvram_mcf_lid_info_struct)*MAX_SIM_NUM);
+ kal_mem_set(&mcf_general_tlvota_curr_mod_lid_g, 0, sizeof(nvram_mcf_lid_info_struct)*MAX_SIM_NUM);
+
+ tlvota_file = &(pMcf->general_tlvota_file);
+
+ MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ if (tlvota_file) {
+ pFile = (mcf_tool_file_info_t *)(tlvota_file->buff);
+ pItem = (mcf_tool_gid_tlvota_file_item_t *)(tlvota_file->buff + sizeof(mcf_tool_file_info_t));
+
+ ret = mcf_ut_open_test_data("MCF_TLVOTA_ICCID_ut_3LIDs_gid_normal.mcfopota", (kal_char *)(tlvota_file->buff), MCF_MAX_TLVOTA_FILE_SIZE);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_TLVOTA_ICCID_ut_3LIDs_gid_normal.mcfopota");
+ return KAL_FALSE;
+ }
+ tlvota_file->last_mod_time = MCF_UT_GEN_TIME;
+
+ MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(is_read_general_tlvota, 0, MAX_SIM_NUM);
+
+ for (i = 0; i < MAX_SIM_NUM; i++) {
+ // NVRAM_EF_MCF_TEST_OTA_LID
+ param_ptr.sbp_id = SBP_TAG_SBPID;
+ param_ptr.ps_id = l4c_gemini_get_switched_sim_id(i);
+ kal_mem_cpy(param_ptr.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
+ kal_mem_cpy(param_ptr.mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
+ strcpy(param_ptr.iccid, SBP_PARTIAL_TAG);
+
+ is_read_tlvota[i] = KAL_FALSE;
+ pMcf->is_ignore_dsbp[i] = KAL_FALSE;
+
+ ret = mcf_auto_select_tlvota_file(¶m_ptr);
+ if (ret != KAL_TRUE) {
+ mcf_ut_format_err_str("auto select tlvota file FAIL!! ret(%d) \r\n", ret);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_lid_need_reset_by_psid(NVRAM_EF_MCF_TEST_OTA_LID, l4c_gemini_get_switched_sim_id(i));
+ if (ret != KAL_TRUE) {
+ 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);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_lid_need_reset_by_psid(NVRAM_EF_IMS_PROFILE_LID, l4c_gemini_get_switched_sim_id(i));
+ if (ret != KAL_TRUE) {
+ 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);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_lid_need_reset_by_psid(NVRAM_EF_XCAP_PROFILE_LID, l4c_gemini_get_switched_sim_id(i));
+ if (ret != KAL_TRUE) {
+ 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);
+ return KAL_FALSE;
+ }
+ }
+ for (i = 0; i < MAX_SIM_NUM; i++){
+ mcf_set_config_after_dsbp(l4c_gemini_get_switched_sim_id(i));
+ }
+
+ /*
+ * Check LID need reset positive test - Apply SIM1 and SIM2 and General OP-OTA separately
+ */
+ /* Write MCF TLV-OTA file version to NVRAM */
+ kal_mem_set(&nv_tlvota_file, 0, sizeof(nvram_ef_mcf_tlvota_file_info_struct));
+ 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)) ) {
+ mcf_ut_format_err_str("Fail to write MCF TLV-OTA file info to NVRAM!!\r\n");
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(&mcf_tlvota_last_mod_lid_g, 0, sizeof(nvram_mcf_lid_info_struct)*MAX_SIM_NUM);
+ kal_mem_set(&mcf_tlvota_curr_mod_lid_g, 0, sizeof(nvram_mcf_lid_info_struct)*MAX_SIM_NUM);
+
+
+ tlvota_file = &(pMcf->tlvota_file[0]);
+
+ MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ if (tlvota_file) {
+ pFile = (mcf_tool_file_info_t *)(tlvota_file->buff);
+ pItem = (mcf_tool_gid_tlvota_file_item_t *)(tlvota_file->buff + sizeof(mcf_tool_file_info_t));
+
+ ret = mcf_ut_open_test_data("MTK_OPOTA_SBPID_12.mcfopota", (kal_char *)(tlvota_file->buff), MCF_MAX_TLVOTA_FILE_SIZE);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MTK_OPOTA_SBPID_12.mcfopota");
+ return KAL_FALSE;
+ }
+
+ tlvota_file->last_mod_time = MCF_UT_GEN_TIME;
+ kal_mem_set(&(tlvota_file->last_file), 0, sizeof(mcf_file_info_t));
+ MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+
+ param_ptr.sbp_id = SBP_TAG_SBPID;
+ param_ptr.ps_id = l4c_gemini_get_switched_sim_id(0);
+ kal_mem_cpy(param_ptr.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
+ kal_mem_cpy(param_ptr.mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
+ kal_mem_set(param_ptr.iccid, 0, 21);
+
+ is_read_general_tlvota[0] = KAL_FALSE;
+ is_read_tlvota[0] = KAL_FALSE;
+ pMcf->is_ignore_dsbp[i] = KAL_FALSE;
+
+ ret = mcf_auto_select_tlvota_file(¶m_ptr);
+ if (ret != KAL_TRUE) {
+ mcf_ut_format_err_str("auto select tlvota file FAIL!! ret(%d) \r\n", ret);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_lid_need_reset_by_psid(NVRAM_EF_MCF_TEST_OTA_LID, l4c_gemini_get_switched_sim_id(0));
+ if (ret != KAL_TRUE) {
+ 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);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_lid_need_reset_by_psid(NVRAM_EF_IMS_PROFILE_LID, l4c_gemini_get_switched_sim_id(0));
+ if (ret != KAL_TRUE) {
+ 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);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_lid_need_reset_by_psid(NVRAM_EF_XCAP_PROFILE_LID, l4c_gemini_get_switched_sim_id(0));
+ if (ret != KAL_TRUE) {
+ 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);
+ return KAL_FALSE;
+ }
+
+ mcf_set_config_after_dsbp(l4c_gemini_get_switched_sim_id(0));
+
+ tlvota_file = &(pMcf->tlvota_file[1]);
+
+ MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ if (tlvota_file) {
+ pFile = (mcf_tool_file_info_t *)(tlvota_file->buff);
+ pItem = (mcf_tool_gid_tlvota_file_item_t *)(tlvota_file->buff + sizeof(mcf_tool_file_info_t));
+
+ ret = mcf_ut_open_test_data("MTK_OPOTA_SBPID_12.mcfopota", (kal_char *)(tlvota_file->buff), MCF_MAX_TLVOTA_FILE_SIZE);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MTK_OPOTA_SBPID_12.mcfopota");
+ return KAL_FALSE;
+ }
+
+ tlvota_file->last_mod_time = MCF_UT_GEN_TIME;
+ kal_mem_set(&(tlvota_file->last_file), 0, sizeof(mcf_file_info_t));
+ MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+
+ param_ptr.sbp_id = SBP_TAG_SBPID;
+ param_ptr.ps_id = l4c_gemini_get_switched_sim_id(1);
+ kal_mem_cpy(param_ptr.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
+ kal_mem_cpy(param_ptr.mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
+ kal_mem_set(param_ptr.iccid, 0, 21);
+
+ is_read_general_tlvota[1] = KAL_FALSE;
+ is_read_tlvota[1] = KAL_FALSE;
+ pMcf->is_ignore_dsbp[i] = KAL_FALSE;
+
+ ret = mcf_auto_select_tlvota_file(¶m_ptr);
+ if (ret != KAL_TRUE) {
+ mcf_ut_format_err_str("auto select tlvota file FAIL!! ret(%d) \r\n", ret);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_lid_need_reset_by_psid(NVRAM_EF_MCF_TEST_OTA_LID, l4c_gemini_get_switched_sim_id(1));
+ if (ret != KAL_TRUE) {
+ 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);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_lid_need_reset_by_psid(NVRAM_EF_IMS_PROFILE_LID, l4c_gemini_get_switched_sim_id(1));
+ if (ret != KAL_TRUE) {
+ 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);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_lid_need_reset_by_psid(NVRAM_EF_XCAP_PROFILE_LID, l4c_gemini_get_switched_sim_id(1));
+ if (ret != KAL_TRUE) {
+ 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);
+ return KAL_FALSE;
+ }
+
+ mcf_set_config_after_dsbp(l4c_gemini_get_switched_sim_id(1));
+
+ tlvota_file = &(pMcf->general_tlvota_file);
+
+ MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ if (tlvota_file) {
+ pFile = (mcf_tool_file_info_t *)(tlvota_file->buff);
+ pItem = (mcf_tool_gid_tlvota_file_item_t *)(tlvota_file->buff + sizeof(mcf_tool_file_info_t));
+
+ 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);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_TLVOTA_SBP_NA_ut_2LIDs_gid_normal.mcfopota");
+ return KAL_FALSE;
+ }
+
+ tlvota_file->last_mod_time = MCF_UT_GEN_TIME;
+ MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(is_read_general_tlvota, 0, MAX_SIM_NUM);
+
+ for(i = 0; i < MAX_SIM_NUM; i++){
+ param_ptr.sbp_id = SBP_TAG_SBPID;
+ param_ptr.ps_id = l4c_gemini_get_switched_sim_id(i);
+ kal_mem_cpy(param_ptr.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
+ kal_mem_cpy(param_ptr.mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
+ kal_mem_set(param_ptr.iccid, 0, 21);
+
+
+ is_read_tlvota[i] = KAL_FALSE;
+ pMcf->is_ignore_dsbp[i] = KAL_FALSE;
+
+ ret = mcf_auto_select_tlvota_file(¶m_ptr);
+ if (ret != KAL_TRUE) {
+ mcf_ut_format_err_str("auto select tlvota file FAIL!! ret(%d) \r\n", ret);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_lid_need_reset_by_psid(NVRAM_EF_MCF_TEST_OTA_LID, l4c_gemini_get_switched_sim_id(i));
+ if (ret != KAL_TRUE) {
+ 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);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_lid_need_reset_by_psid(NVRAM_EF_IMS_PROFILE_LID, l4c_gemini_get_switched_sim_id(i));
+ if (ret != KAL_TRUE) {
+ 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);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_lid_need_reset_by_psid(NVRAM_EF_XCAP_PROFILE_LID, l4c_gemini_get_switched_sim_id(i));
+ if (ret != KAL_TRUE) {
+ 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);
+ return KAL_FALSE;
+ }
+ }
+
+ for(i = 0; i < MAX_SIM_NUM; i++){
+ mcf_set_config_after_dsbp(l4c_gemini_get_switched_sim_id(i));
+ }
+
+ /*
+ * Check LID need reset positive test - Change SIM1, SIM2 card
+ */
+
+ kal_mem_set(&nv_tlvota_file, 0, sizeof(nvram_ef_mcf_tlvota_file_info_struct));
+ strncpy(nv_tlvota_file.path, MCF_FS_DEFAULT_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN);
+ strncpy(nv_tlvota_file.name, MCF_FS_DEFAULT_TLVOTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN);
+ 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)) ) {
+ mcf_ut_format_err_str("Fail to write MCF TLV-OTA file info to NVRAM!!\r\n");
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(&mcf_tlvota_last_mod_lid_g, 0, sizeof(nvram_mcf_lid_info_struct)*MAX_SIM_NUM);
+ kal_mem_set(&mcf_tlvota_curr_mod_lid_g, 0, sizeof(nvram_mcf_lid_info_struct)*MAX_SIM_NUM);
+
+
+ for (i = 0; i < MAX_SIM_NUM; i++) {
+ tlvota_file = &(pMcf->tlvota_file[i]);
+
+ MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ if (tlvota_file) {
+ pFile = (mcf_tool_file_info_t *)(tlvota_file->buff);
+ pItem = (mcf_tool_gid_tlvota_file_item_t *)(tlvota_file->buff + sizeof(mcf_tool_file_info_t));
+
+ 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);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_TLVOTA_SBP_partial_ut_3LIDs_gid_normal.mcfopota");
+ return KAL_FALSE;
+ }
+
+ MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+ }
+
+ for (i = 0; i < MAX_SIM_NUM; i++) {
+ // NVRAM_EF_MCF_TEST_OTA_LID with SBP_PARTIAL_TAG
+ param_ptr.sbp_id = SBP_TAG_SBPID;
+ param_ptr.ps_id = l4c_gemini_get_switched_sim_id(i);
+ kal_mem_cpy(param_ptr.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
+ kal_mem_cpy(param_ptr.mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
+ kal_mem_set(param_ptr.iccid, 0, 21);
+
+ is_read_general_tlvota[i] = KAL_FALSE;
+ is_read_tlvota[i] = KAL_TRUE;
+ pMcf->is_ignore_dsbp[i] = KAL_TRUE;
+
+ ret = mcf_auto_select_tlvota_file(¶m_ptr);
+ if (ret != KAL_TRUE) {
+ mcf_ut_format_err_str("auto select tlvota file FAIL!! ret(%d) \r\n", ret);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_lid_need_reset_by_psid(NVRAM_EF_MCF_TEST_OTA_LID, l4c_gemini_get_switched_sim_id(i));
+ if (ret != KAL_TRUE) {
+ 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);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_lid_need_reset_by_psid(NVRAM_EF_IMS_PROFILE_LID, l4c_gemini_get_switched_sim_id(i));
+ if (ret != KAL_TRUE) {
+ 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);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_lid_need_reset_by_psid(NVRAM_EF_XCAP_PROFILE_LID, l4c_gemini_get_switched_sim_id(i));
+ if (ret != KAL_TRUE) {
+ 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);
+ return KAL_FALSE;
+ }
+
+ mcf_set_config_after_dsbp(l4c_gemini_get_switched_sim_id(i));
+ }
+
+ //Change SIM1/SIM2
+
+ for (i = 0; i < MAX_SIM_NUM; i++) {
+ // NVRAM_EF_MCF_TEST_OTA_LID with SBP_PARTIAL_TAG
+ param_ptr.sbp_id = 108;
+ param_ptr.ps_id = l4c_gemini_get_switched_sim_id(i);
+ kal_mem_cpy(param_ptr.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
+ kal_mem_cpy(param_ptr.mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
+ kal_mem_set(param_ptr.iccid, 0, 21);
+
+ is_read_general_tlvota[i] = KAL_FALSE;
+ is_read_tlvota[i] = KAL_FALSE;
+ pMcf->is_ignore_dsbp[i] = KAL_TRUE;
+
+ ret = mcf_auto_select_tlvota_file(¶m_ptr);
+ if (ret != KAL_TRUE) {
+ mcf_ut_format_err_str("auto select tlvota file FAIL!! ret(%d) \r\n", ret);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_lid_need_reset_by_psid(NVRAM_EF_MCF_TEST_OTA_LID, l4c_gemini_get_switched_sim_id(i));
+ if (ret != KAL_FALSE) {
+ 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);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_lid_need_reset_by_psid(NVRAM_EF_IMS_PROFILE_LID, l4c_gemini_get_switched_sim_id(i));
+ if (ret != KAL_FALSE) {
+ 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);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_lid_need_reset_by_psid(NVRAM_EF_XCAP_PROFILE_LID, l4c_gemini_get_switched_sim_id(i));
+ if (ret != KAL_FALSE) {
+ 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);
+ return KAL_FALSE;
+ }
+
+ mcf_set_config_after_dsbp(l4c_gemini_get_switched_sim_id(i));
+ }
+
+
+ MCF_UT_PASS();
+ return KAL_TRUE;
+}
+kal_bool mcf_ut_mcf_check_ota_need_update(void *p_param, kal_char *p_ret_err_str, kal_uint32 *p_ret_err_str_sz)
+{
+ kal_bool ret;
+ mcf_tlvota_sbp_tag_t sbp_tag;
+ kal_char iccid_tag[16];
+ mcf_t *pMcf = mcf_get_instance();
+ mcf_tool_file_info_t *pFile;
+ mcf_tool_tlvota_file_item_t *pItem;
+ mcf_tlvota_file_t *tlvota_file;
+ sbp_reconfig_custom_param_struct param_ptr;
+ nvram_ef_mcf_sw_info_struct nv_sw_info;
+
+ mcf_ut_init();
+
+ if ( !nvram_external_read_data(NVRAM_EF_MCF_SW_INFO_LID, 1, (kal_uint8 *)&nv_sw_info, sizeof(nvram_ef_mcf_sw_info_struct))) {
+ mcf_ut_format_err_str("Read NVRAM_EF_MCF_SW_INFO_LID FAIL!");
+ return KAL_FALSE;
+ }
+
+ strncpy(nv_sw_info.version, release_verno(), MCF_SW_VERNO_LEN);
+ strncpy(nv_sw_info.build_time, build_date_time(), MCF_SW_BUILD_TIME_LEN);
+
+ if ( !nvram_external_write_data(NVRAM_EF_MCF_SW_INFO_LID, 1, (kal_uint8 *)&nv_sw_info, sizeof(nvram_ef_mcf_sw_info_struct))) {
+ mcf_ut_format_err_str("Write NVRAM_EF_MCF_SW_INFO_LID FAIL!");
+ return KAL_FALSE;
+ }
+
+ /*
+ * TLV-OTA file test
+ */
+ /* First time, need to update TLV-OTA*/
+
+ /* Fill TLV-OTA file into buffer */
+
+ tlvota_file = &(pMcf->tlvota_file[0]);
+
+ MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ if (tlvota_file) {
+ pFile = (mcf_tool_file_info_t *)(tlvota_file->buff);
+ pItem = (mcf_tool_gid_tlvota_file_item_t *)(tlvota_file->buff + sizeof(mcf_tool_file_info_t));
+
+ ret = mcf_ut_open_test_data("MTK_OPOTA_SBPID_12.mcfopota", (kal_char *)(tlvota_file->buff), MCF_MAX_TLVOTA_FILE_SIZE);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MTK_OPOTA_SBPID_12.mcfopota");
+ return KAL_FALSE;
+ }
+
+ MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Read TLV-OTA FAIL!! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+
+
+ // fill in SBP TAG
+ kal_mem_set(&sbp_tag, 0, sizeof(mcf_tlvota_sbp_tag_t));
+ sbp_tag.sbp_id = SBP_TAG_SBPID;
+ strncpy(sbp_tag.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
+ strncpy(sbp_tag.mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
+
+ kal_mem_set(&iccid_tag, 0, sizeof(kal_char));
+ strcpy(iccid_tag, SBP_PARTIAL_TAG);
+
+ param_ptr.sbp_id = SBP_TAG_SBPID;
+ param_ptr.ps_id = l4c_gemini_get_switched_sim_id(0);
+ kal_mem_cpy(param_ptr.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
+ kal_mem_cpy(param_ptr.mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
+ kal_mem_set(param_ptr.iccid, 0, 21);
+
+
+ // Check TLV-OTA need update
+ ret = mcf_check_ota_need_update(param_ptr.ps_id, sbp_tag, iccid_tag);
+ if (ret != KAL_TRUE) {
+ mcf_ut_format_err_str("mcf_check_ota_need_update FAIL! ret(%d) \r\n", ret);
+ return KAL_FALSE;
+ }
+
+ //DSBP flow
+ ret = mcf_auto_select_tlvota_file(¶m_ptr);
+ if (ret != KAL_TRUE) {
+ mcf_ut_format_err_str("mcf_auto_select_tlvota_file FAIL! ret(%d) \r\n", ret);
+ return KAL_FALSE;
+ }
+ mcf_set_config_after_dsbp(l4c_gemini_get_switched_sim_id(param_ptr.ps_id));
+
+
+ /* Second time, do not change TLV-OTA, no need to update */
+
+ // Check TLV-OTA need update
+ ret = mcf_check_ota_need_update(param_ptr.ps_id, sbp_tag, iccid_tag);
+ if (ret != KAL_FALSE) {
+ mcf_ut_format_err_str("mcf_check_ota_need_update FAIL! ret(%d) \r\n", ret);
+ return KAL_FALSE;
+ }
+
+ //DSBP flow
+ ret = mcf_auto_select_tlvota_file(¶m_ptr);
+ if (ret != KAL_TRUE) {
+ mcf_ut_format_err_str("mcf_auto_select_tlvota_file FAIL! ret(%d) \r\n", ret);
+ return KAL_FALSE;
+ }
+ mcf_set_config_after_dsbp(l4c_gemini_get_switched_sim_id(param_ptr.ps_id));
+
+ /* When chang sim card, need to update */
+
+ // fill in SBP TAG
+ kal_mem_set(&sbp_tag, 0, sizeof(mcf_tlvota_sbp_tag_t));
+ sbp_tag.sbp_id = 1;
+ strncpy(sbp_tag.mcc, "460", MAX_MCC_STR_LEN);
+ strncpy(sbp_tag.mnc, "01", MAX_MNC_STR_LEN);
+
+ kal_mem_set(&iccid_tag, 0, sizeof(kal_char));
+ strcpy(iccid_tag, SBP_PARTIAL_TAG);
+
+ param_ptr.sbp_id = 1;
+ param_ptr.ps_id = l4c_gemini_get_switched_sim_id(0);
+ kal_mem_cpy(param_ptr.mcc, "460", MAX_MCC_STR_LEN);
+ kal_mem_cpy(param_ptr.mnc, "01", MAX_MNC_STR_LEN);
+ kal_mem_set(param_ptr.iccid, 0, 21);
+
+ /* Fill TLV-OTA file into buffer */
+
+ tlvota_file = &(pMcf->tlvota_file[0]);
+
+ MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ if (tlvota_file) {
+ pFile = (mcf_tool_file_info_t *)(tlvota_file->buff);
+ pItem = (mcf_tool_gid_tlvota_file_item_t *)(tlvota_file->buff + sizeof(mcf_tool_file_info_t));
+
+ ret = mcf_ut_open_test_data("MTK_OPOTA_SBPID_1.mcfopota", (kal_char *)(tlvota_file->buff), MCF_MAX_TLVOTA_FILE_SIZE);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MTK_OPOTA_SBPID_1.mcfopota");
+ return KAL_FALSE;
+ }
+
+ MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Read TLV-OTA FAIL!! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+
+ // Check TLV-OTA need update
+ ret = mcf_check_ota_need_update(param_ptr.ps_id, sbp_tag, iccid_tag);
+ if (ret != KAL_TRUE) {
+ mcf_ut_format_err_str("mcf_check_ota_need_update FAIL! ret(%d) \r\n", ret);
+ return KAL_FALSE;
+ }
+
+ /*
+ * General TLV-OTA file test
+ */
+ /* First time, need to update TLV-OTA*/
+
+ /* Fill TLV-OTA file into buffer */
+
+ tlvota_file = &(pMcf->general_tlvota_file);
+
+ MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ if (tlvota_file) {
+ pFile = (mcf_tool_file_info_t *)(tlvota_file->buff);
+ pItem = (mcf_tool_gid_tlvota_file_item_t *)(tlvota_file->buff + sizeof(mcf_tool_file_info_t));
+
+ ret = mcf_ut_open_test_data("MTK_OPOTA_GENERAL.mcfopota", (kal_char *)(tlvota_file->buff), MCF_MAX_TLVOTA_FILE_SIZE);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MTK_OPOTA_GENERAL.mcfopota");
+ return KAL_FALSE;
+ }
+
+ MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Read TLV-OTA FAIL!! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+
+
+ // fill in SBP TAG
+ kal_mem_set(&sbp_tag, 0, sizeof(mcf_tlvota_sbp_tag_t));
+ sbp_tag.sbp_id = SBP_TAG_SBPID;
+ strncpy(sbp_tag.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
+ strncpy(sbp_tag.mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
+
+ kal_mem_set(&iccid_tag, 0, sizeof(kal_char));
+ strcpy(iccid_tag, SBP_PARTIAL_TAG);
+
+ param_ptr.sbp_id = SBP_TAG_SBPID;
+ param_ptr.ps_id = l4c_gemini_get_switched_sim_id(0);
+ kal_mem_cpy(param_ptr.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
+ kal_mem_cpy(param_ptr.mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
+ kal_mem_set(param_ptr.iccid, 0, 21);
+
+
+ // Check TLV-OTA need update
+ ret = mcf_check_ota_need_update(param_ptr.ps_id, sbp_tag, iccid_tag);
+ if (ret != KAL_TRUE) {
+ mcf_ut_format_err_str("mcf_check_ota_need_update FAIL! ret(%d) \r\n", ret);
+ return KAL_FALSE;
+ }
+
+ //DSBP flow
+ ret = mcf_auto_select_tlvota_file(¶m_ptr);
+ if (ret != KAL_TRUE) {
+ mcf_ut_format_err_str("mcf_auto_select_tlvota_file FAIL! ret(%d) \r\n", ret);
+ return KAL_FALSE;
+ }
+ mcf_set_config_after_dsbp(l4c_gemini_get_switched_sim_id(param_ptr.ps_id));
+
+
+
+ /* Second time, do not change General TLV-OTA, no need to update */
+
+ // Check TLV-OTA need update
+ ret = mcf_check_ota_need_update(param_ptr.ps_id, sbp_tag, iccid_tag);
+ if (ret != KAL_FALSE) {
+ mcf_ut_format_err_str("mcf_check_ota_need_update FAIL! ret(%d) \r\n", ret);
+ return KAL_FALSE;
+ }
+
+ //DSBP flow
+ ret = mcf_auto_select_tlvota_file(¶m_ptr);
+ if (ret != KAL_TRUE) {
+ mcf_ut_format_err_str("mcf_auto_select_tlvota_file FAIL! ret(%d) \r\n", ret);
+ return KAL_FALSE;
+ }
+ mcf_set_config_after_dsbp(l4c_gemini_get_switched_sim_id(param_ptr.ps_id));
+
+ MCF_UT_PASS();
+ return KAL_TRUE;
+
+}
+
+kal_bool mcf_ut_mcf_get_tlvota_file_result(void *p_param, kal_char *p_ret_err_str, kal_uint32 *p_ret_err_str_sz)
+{
+ kal_bool ret;
+ mcf_tlvota_sbp_tag_t sbp_tag;
+ kal_char iccid_tag[16];
+ mcf_t *pMcf = mcf_get_instance();
+ mcf_tool_file_info_t *pFile;
+ mcf_tool_tlvota_file_item_t *pItem;
+ mcf_tlvota_file_t *tlvota_file;
+ sbp_reconfig_custom_param_struct param_ptr;
+ nvram_ef_mcf_sw_info_struct nv_sw_info;
+ mcf_ota_result_e mcf_ret = MCF_OTA_R_SUCCESS;
+ kal_uint8 i;
+
+ mcf_ut_init();
+
+ if ( !nvram_external_read_data(NVRAM_EF_MCF_SW_INFO_LID, 1, (kal_uint8 *)&nv_sw_info, sizeof(nvram_ef_mcf_sw_info_struct))) {
+ mcf_ut_format_err_str("Read NVRAM_EF_MCF_SW_INFO_LID FAIL!");
+ return KAL_FALSE;
+ }
+
+ strncpy(nv_sw_info.version, release_verno(), MCF_SW_VERNO_LEN);
+ strncpy(nv_sw_info.build_time, build_date_time(), MCF_SW_BUILD_TIME_LEN);
+
+ if ( !nvram_external_write_data(NVRAM_EF_MCF_SW_INFO_LID, 1, (kal_uint8 *)&nv_sw_info, sizeof(nvram_ef_mcf_sw_info_struct))) {
+ mcf_ut_format_err_str("Write NVRAM_EF_MCF_SW_INFO_LID FAIL!");
+ return KAL_FALSE;
+ }
+
+ /*
+ * TLV-OTA file test
+ */
+ /* First time, need to update TLV-OTA*/
+
+ /* Fill TLV-OTA file into buffer */
+
+ tlvota_file = &(pMcf->tlvota_file[0]);
+
+ MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ if (tlvota_file) {
+ pFile = (mcf_tool_file_info_t *)(tlvota_file->buff);
+ pItem = (mcf_tool_gid_tlvota_file_item_t *)(tlvota_file->buff + sizeof(mcf_tool_file_info_t));
+
+ ret = mcf_ut_open_test_data("MTK_OPOTA_SBPID_12.mcfopota", (kal_char *)(tlvota_file->buff), MCF_MAX_TLVOTA_FILE_SIZE);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MTK_OPOTA_SBPID_12.mcfopota");
+ return KAL_FALSE;
+ }
+
+ MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Read TLV-OTA FAIL!! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+
+
+ // fill in SBP TAG
+ kal_mem_set(&sbp_tag, 0, sizeof(mcf_tlvota_sbp_tag_t));
+ sbp_tag.sbp_id = SBP_TAG_SBPID;
+ strncpy(sbp_tag.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
+ strncpy(sbp_tag.mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
+
+ kal_mem_set(&iccid_tag, 0, sizeof(kal_char));
+ strcpy(iccid_tag, SBP_PARTIAL_TAG);
+
+ param_ptr.sbp_id = SBP_TAG_SBPID;
+ param_ptr.ps_id = l4c_gemini_get_switched_sim_id(0);
+ kal_mem_cpy(param_ptr.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
+ kal_mem_cpy(param_ptr.mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
+ kal_mem_set(param_ptr.iccid, 0, 21);
+
+ //DSBP flow
+ ret = mcf_auto_select_tlvota_file(¶m_ptr);
+ if (ret != KAL_TRUE) {
+ mcf_ut_format_err_str("mcf_auto_select_tlvota_file FAIL! ret(%d) \r\n", ret);
+ return KAL_FALSE;
+ }
+ mcf_set_config_after_dsbp(l4c_gemini_get_switched_sim_id(param_ptr.ps_id));
+
+ mcf_ret = mcf_get_tlvota_file_result(param_ptr.ps_id);
+
+ if (mcf_ret != MCF_OTA_R_SUCCESS){
+ mcf_ut_format_err_str("mcf_get_tlvota_file_result FAIL! ret(%d) \r\n", mcf_ret);
+ return KAL_FALSE;
+ }
+
+
+ /* Second time, do not change TLV-OTA, no need to update */
+
+ //DSBP flow
+ ret = mcf_auto_select_tlvota_file(¶m_ptr);
+ if (ret != KAL_TRUE) {
+ mcf_ut_format_err_str("mcf_auto_select_tlvota_file FAIL! ret(%d) \r\n", ret);
+ return KAL_FALSE;
+ }
+ mcf_set_config_after_dsbp(l4c_gemini_get_switched_sim_id(param_ptr.ps_id));
+
+ mcf_ret = mcf_get_tlvota_file_result(param_ptr.ps_id);
+
+ if (mcf_ret != MCF_OTA_R_SUCCESS){
+ mcf_ut_format_err_str("mcf_get_tlvota_file_result FAIL! ret(%d) \r\n", mcf_ret);
+ return KAL_FALSE;
+ }
+
+
+ /* When chang sim card, need to update */
+
+ // fill in SBP TAG
+ kal_mem_set(&sbp_tag, 0, sizeof(mcf_tlvota_sbp_tag_t));
+ sbp_tag.sbp_id = 1;
+ strncpy(sbp_tag.mcc, "460", MAX_MCC_STR_LEN);
+ strncpy(sbp_tag.mnc, "01", MAX_MNC_STR_LEN);
+
+ kal_mem_set(&iccid_tag, 0, sizeof(kal_char));
+ strcpy(iccid_tag, SBP_PARTIAL_TAG);
+
+ param_ptr.sbp_id = 1;
+ param_ptr.ps_id = l4c_gemini_get_switched_sim_id(0);
+ kal_mem_cpy(param_ptr.mcc, "460", MAX_MCC_STR_LEN);
+ kal_mem_cpy(param_ptr.mnc, "01", MAX_MNC_STR_LEN);
+ kal_mem_set(param_ptr.iccid, 0, 21);
+
+ /* Fill TLV-OTA file into buffer */
+
+ tlvota_file = &(pMcf->tlvota_file[0]);
+
+ MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ if (tlvota_file) {
+ pFile = (mcf_tool_file_info_t *)(tlvota_file->buff);
+ pItem = (mcf_tool_gid_tlvota_file_item_t *)(tlvota_file->buff + sizeof(mcf_tool_file_info_t));
+
+ ret = mcf_ut_open_test_data("MTK_OPOTA_SBPID_1.mcfopota", (kal_char *)(tlvota_file->buff), MCF_MAX_TLVOTA_FILE_SIZE);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MTK_OPOTA_SBPID_1.mcfopota");
+ return KAL_FALSE;
+ }
+
+ MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Read TLV-OTA FAIL!! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+
+ //DSBP flow
+ ret = mcf_auto_select_tlvota_file(¶m_ptr);
+ if (ret != KAL_TRUE) {
+ mcf_ut_format_err_str("mcf_auto_select_tlvota_file FAIL! ret(%d) \r\n", ret);
+ return KAL_FALSE;
+ }
+ mcf_set_config_after_dsbp(l4c_gemini_get_switched_sim_id(param_ptr.ps_id));
+
+ mcf_ret = mcf_get_tlvota_file_result(param_ptr.ps_id);
+
+ if (mcf_ret != MCF_OTA_R_SUCCESS){
+ mcf_ut_format_err_str("mcf_get_tlvota_file_result FAIL! ret(%d) \r\n", mcf_ret);
+ return KAL_FALSE;
+ }
+
+ /*
+ *
+ * False positive test - Invalid TLVOTA file
+ *
+ */
+
+ for(i = 0; i < MAX_SIM_NUM; i++){
+ // fill in SBP TAG
+ kal_mem_set(&sbp_tag, 0, sizeof(mcf_tlvota_sbp_tag_t));
+ sbp_tag.sbp_id = SBP_TAG_SBPID;
+ strncpy(sbp_tag.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
+ strncpy(sbp_tag.mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
+
+ kal_mem_set(&iccid_tag, 0, sizeof(kal_char));
+ strcpy(iccid_tag, SBP_PARTIAL_TAG);
+
+ param_ptr.sbp_id = SBP_TAG_SBPID;
+ param_ptr.ps_id = l4c_gemini_get_switched_sim_id(i);
+ kal_mem_cpy(param_ptr.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
+ kal_mem_cpy(param_ptr.mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
+ kal_mem_set(param_ptr.iccid, 0, 21);
+
+ /* Use OTA file */
+
+ tlvota_file = &(pMcf->tlvota_file[i]);
+
+ MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ if (tlvota_file) {
+ pFile = (mcf_tool_file_info_t *)(tlvota_file->buff);
+ pItem = (mcf_tool_gid_tlvota_file_item_t *)(tlvota_file->buff + sizeof(mcf_tool_file_info_t));
+
+ ret = mcf_ut_open_test_data("MCF_OTA_ut_gid_normal.mcfota", (kal_char *)(tlvota_file->buff), MCF_MAX_TLVOTA_FILE_SIZE);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_OTA_ut_gid_normal.mcfota");
+ return KAL_FALSE;
+ }
+
+ MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Read TLV-OTA FAIL!! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+
+ //DSBP flow
+ ret = mcf_auto_select_tlvota_file(¶m_ptr);
+ if (ret != KAL_FALSE) {
+ mcf_ut_format_err_str("mcf_auto_select_tlvota_file FAIL! ret(%d) \r\n", ret);
+ return KAL_FALSE;
+ }
+ mcf_set_config_after_dsbp(l4c_gemini_get_switched_sim_id(param_ptr.ps_id));
+ mcf_ret = mcf_get_tlvota_file_result(param_ptr.ps_id);
+
+ if (mcf_ret != MCF_OTA_R_INVALID_FILE){
+ mcf_ut_format_err_str("mcf_get_tlvota_file_result FAIL! ret(%d) \r\n", mcf_ret);
+ return KAL_FALSE;
+ }
+ }
+
+ /*
+ *
+ * False positive test - decyption FAIL
+ *
+ */
+
+ for(i = 0; i < MAX_SIM_NUM; i++){
+ // fill in SBP TAG
+ kal_mem_set(&sbp_tag, 0, sizeof(mcf_tlvota_sbp_tag_t));
+ sbp_tag.sbp_id = SBP_TAG_SBPID;
+ strncpy(sbp_tag.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
+ strncpy(sbp_tag.mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
+
+ kal_mem_set(&iccid_tag, 0, sizeof(kal_char));
+ strcpy(iccid_tag, SBP_PARTIAL_TAG);
+
+ param_ptr.sbp_id = SBP_TAG_SBPID;
+ param_ptr.ps_id = l4c_gemini_get_switched_sim_id(i);
+ kal_mem_cpy(param_ptr.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
+ kal_mem_cpy(param_ptr.mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
+ kal_mem_set(param_ptr.iccid, 0, 21);
+
+ /* Use error AES-128 file */
+
+ tlvota_file = &(pMcf->tlvota_file[i]);
+
+ MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ if (tlvota_file) {
+ pFile = (mcf_tool_file_info_t *)(tlvota_file->buff);
+ pItem = (mcf_tool_gid_tlvota_file_item_t *)(tlvota_file->buff + sizeof(mcf_tool_file_info_t));
+
+ 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);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_TLVOTA_SBP_full_ut_gid_encyption_wrong_key.mcfopota");
+ return KAL_FALSE;
+ }
+
+ MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Read TLV-OTA FAIL!! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+
+ //DSBP flow
+ ret = mcf_auto_select_tlvota_file(¶m_ptr);
+ if (ret != KAL_FALSE) {
+ mcf_ut_format_err_str("mcf_auto_select_tlvota_file FAIL! ret(%d) \r\n", ret);
+ return KAL_FALSE;
+ }
+ mcf_set_config_after_dsbp(l4c_gemini_get_switched_sim_id(param_ptr.ps_id));
+ mcf_ret = mcf_get_tlvota_file_result(param_ptr.ps_id);
+
+ if (mcf_ret != MCF_OTA_R_CHECKSUM_ERROR){
+ mcf_ut_format_err_str("mcf_get_tlvota_file_result FAIL! ret(%d) \r\n", mcf_ret);
+ return KAL_FALSE;
+ }
+ }
+
+ /*
+ *
+ * False positive test - digest FAIL
+ *
+ */
+
+ for(i = 0; i < MAX_SIM_NUM; i++){
+ // fill in SBP TAG
+ kal_mem_set(&sbp_tag, 0, sizeof(mcf_tlvota_sbp_tag_t));
+ sbp_tag.sbp_id = SBP_TAG_SBPID;
+ strncpy(sbp_tag.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
+ strncpy(sbp_tag.mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
+
+ kal_mem_set(&iccid_tag, 0, sizeof(kal_char));
+ strcpy(iccid_tag, SBP_PARTIAL_TAG);
+
+ param_ptr.sbp_id = SBP_TAG_SBPID;
+ param_ptr.ps_id = l4c_gemini_get_switched_sim_id(i);
+ kal_mem_cpy(param_ptr.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
+ kal_mem_cpy(param_ptr.mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
+ kal_mem_set(param_ptr.iccid, 0, 21);
+
+ /* Use error AES-128 file */
+
+ tlvota_file = &(pMcf->tlvota_file[i]);
+
+ MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ if (tlvota_file) {
+ pFile = (mcf_tool_file_info_t *)(tlvota_file->buff);
+ pItem = (mcf_tool_gid_tlvota_file_item_t *)(tlvota_file->buff + sizeof(mcf_tool_file_info_t));
+
+ 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);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_TLVOTA_SBP_full_ut_gid_wrong_RSA2048.mcfopota");
+ return KAL_FALSE;
+ }
+
+ MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Read TLV-OTA FAIL!! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+
+ //DSBP flow
+ ret = mcf_auto_select_tlvota_file(¶m_ptr);
+ if (ret != KAL_FALSE) {
+ mcf_ut_format_err_str("mcf_auto_select_tlvota_file FAIL! ret(%d) \r\n", ret);
+ return KAL_FALSE;
+ }
+ mcf_set_config_after_dsbp(l4c_gemini_get_switched_sim_id(param_ptr.ps_id));
+ mcf_ret = mcf_get_tlvota_file_result(param_ptr.ps_id);
+
+ if (mcf_ret != MCF_OTA_R_DIGEST_FAIL){
+ mcf_ut_format_err_str("mcf_get_tlvota_file_result FAIL! ret(%d) \r\n", mcf_ret);
+ return KAL_FALSE;
+ }
+ }
+
+ /*
+ *
+ * False positive test - Invalid TLVOTA file - mcf_check_ota_need_update
+ *
+ */
+
+ for(i = 0; i < MAX_SIM_NUM; i++){
+ // fill in SBP TAG
+ kal_mem_set(&sbp_tag, 0, sizeof(mcf_tlvota_sbp_tag_t));
+ sbp_tag.sbp_id = SBP_TAG_SBPID;
+ strncpy(sbp_tag.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
+ strncpy(sbp_tag.mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
+
+ kal_mem_set(&iccid_tag, 0, sizeof(kal_char));
+ strcpy(iccid_tag, SBP_PARTIAL_TAG);
+
+ param_ptr.sbp_id = SBP_TAG_SBPID;
+ param_ptr.ps_id = l4c_gemini_get_switched_sim_id(i);
+ kal_mem_cpy(param_ptr.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
+ kal_mem_cpy(param_ptr.mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
+ kal_mem_set(param_ptr.iccid, 0, 21);
+
+ /* Use OTA file */
+
+ tlvota_file = &(pMcf->tlvota_file[i]);
+
+ MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ if (tlvota_file) {
+ pFile = (mcf_tool_file_info_t *)(tlvota_file->buff);
+ pItem = (mcf_tool_gid_tlvota_file_item_t *)(tlvota_file->buff + sizeof(mcf_tool_file_info_t));
+
+ ret = mcf_ut_open_test_data("MCF_OTA_ut_gid_normal.mcfota", (kal_char *)(tlvota_file->buff), MCF_MAX_TLVOTA_FILE_SIZE);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_OTA_ut_gid_normal.mcfota");
+ return KAL_FALSE;
+ }
+
+ MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Read TLV-OTA FAIL!! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+
+
+ // Check TLV-OTA need update
+ ret = mcf_check_ota_need_update(param_ptr.ps_id, sbp_tag, iccid_tag);
+ if (ret != KAL_TRUE) {
+ mcf_ut_format_err_str("mcf_check_ota_need_update FAIL! ret(%d) \r\n", ret);
+ return KAL_FALSE;
+ }
+
+ //DSBP flow
+ ret = mcf_auto_select_tlvota_file(¶m_ptr);
+ if (ret != KAL_FALSE) {
+ mcf_ut_format_err_str("mcf_auto_select_tlvota_file FAIL! ret(%d) \r\n", ret);
+ return KAL_FALSE;
+ }
+ mcf_set_config_after_dsbp(l4c_gemini_get_switched_sim_id(param_ptr.ps_id));
+ mcf_ret = mcf_get_tlvota_file_result(param_ptr.ps_id);
+
+ if (mcf_ret != MCF_OTA_R_INVALID_FILE){
+ mcf_ut_format_err_str("mcf_get_tlvota_file_result FAIL! ret(%d) \r\n", mcf_ret);
+ return KAL_FALSE;
+ }
+ }
+
+ /*
+ *
+ * False positive test - decyption FAIL - mcf_check_ota_need_update
+ *
+ */
+
+ for(i = 0; i < MAX_SIM_NUM; i++){
+ // fill in SBP TAG
+ kal_mem_set(&sbp_tag, 0, sizeof(mcf_tlvota_sbp_tag_t));
+ sbp_tag.sbp_id = SBP_TAG_SBPID;
+ strncpy(sbp_tag.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
+ strncpy(sbp_tag.mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
+
+ kal_mem_set(&iccid_tag, 0, sizeof(kal_char));
+ strcpy(iccid_tag, SBP_PARTIAL_TAG);
+
+ param_ptr.sbp_id = SBP_TAG_SBPID;
+ param_ptr.ps_id = l4c_gemini_get_switched_sim_id(i);
+ kal_mem_cpy(param_ptr.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
+ kal_mem_cpy(param_ptr.mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
+ kal_mem_set(param_ptr.iccid, 0, 21);
+
+ /* Use error AES-128 file */
+
+ tlvota_file = &(pMcf->tlvota_file[i]);
+
+ MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ if (tlvota_file) {
+ pFile = (mcf_tool_file_info_t *)(tlvota_file->buff);
+ pItem = (mcf_tool_gid_tlvota_file_item_t *)(tlvota_file->buff + sizeof(mcf_tool_file_info_t));
+
+ 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);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_TLVOTA_SBP_full_ut_gid_encyption_wrong_key.mcfopota");
+ return KAL_FALSE;
+ }
+
+ MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Read TLV-OTA FAIL!! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+
+ // Check TLV-OTA need update
+ ret = mcf_check_ota_need_update(param_ptr.ps_id, sbp_tag, iccid_tag);
+ if (ret != KAL_TRUE) {
+ mcf_ut_format_err_str("mcf_check_ota_need_update FAIL! ret(%d) \r\n", ret);
+ return KAL_FALSE;
+ }
+
+ /* Use error AES-128 file */
+
+ tlvota_file = &(pMcf->tlvota_file[i]);
+
+ MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ if (tlvota_file) {
+ pFile = (mcf_tool_file_info_t *)(tlvota_file->buff);
+ pItem = (mcf_tool_gid_tlvota_file_item_t *)(tlvota_file->buff + sizeof(mcf_tool_file_info_t));
+
+ 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);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_TLVOTA_SBP_full_ut_gid_encyption_wrong_key.mcfopota");
+ return KAL_FALSE;
+ }
+
+ MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Read TLV-OTA FAIL!! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+
+ //DSBP flow
+ ret = mcf_auto_select_tlvota_file(¶m_ptr);
+ if (ret != KAL_FALSE) {
+ mcf_ut_format_err_str("mcf_auto_select_tlvota_file FAIL! ret(%d) \r\n", ret);
+ return KAL_FALSE;
+ }
+ mcf_set_config_after_dsbp(l4c_gemini_get_switched_sim_id(param_ptr.ps_id));
+ mcf_ret = mcf_get_tlvota_file_result(param_ptr.ps_id);
+
+ if (mcf_ret != MCF_OTA_R_CHECKSUM_ERROR){
+ mcf_ut_format_err_str("mcf_get_tlvota_file_result FAIL! ret(%d) \r\n", mcf_ret);
+ return KAL_FALSE;
+ }
+ }
+
+ /*
+ *
+ * False positive test - digest FAIL - mcf_check_ota_need_update
+ *
+ */
+
+ for(i = 0; i < MAX_SIM_NUM; i++){
+ // fill in SBP TAG
+ kal_mem_set(&sbp_tag, 0, sizeof(mcf_tlvota_sbp_tag_t));
+ sbp_tag.sbp_id = SBP_TAG_SBPID;
+ strncpy(sbp_tag.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
+ strncpy(sbp_tag.mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
+
+ kal_mem_set(&iccid_tag, 0, sizeof(kal_char));
+ strcpy(iccid_tag, SBP_PARTIAL_TAG);
+
+ param_ptr.sbp_id = SBP_TAG_SBPID;
+ param_ptr.ps_id = l4c_gemini_get_switched_sim_id(i);
+ kal_mem_cpy(param_ptr.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
+ kal_mem_cpy(param_ptr.mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
+ kal_mem_set(param_ptr.iccid, 0, 21);
+
+ /* Use error RSA2048 file */
+
+ tlvota_file = &(pMcf->tlvota_file[i]);
+
+ MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ if (tlvota_file) {
+ pFile = (mcf_tool_file_info_t *)(tlvota_file->buff);
+ pItem = (mcf_tool_gid_tlvota_file_item_t *)(tlvota_file->buff + sizeof(mcf_tool_file_info_t));
+
+ 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);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_TLVOTA_SBP_full_ut_gid_wrong_RSA2048.mcfopota");
+ return KAL_FALSE;
+ }
+
+ MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Read TLV-OTA FAIL!! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+
+ // Check TLV-OTA need update
+ ret = mcf_check_ota_need_update(param_ptr.ps_id, sbp_tag, iccid_tag);
+ if (ret != KAL_TRUE) {
+ mcf_ut_format_err_str("mcf_check_ota_need_update FAIL! ret(%d) \r\n", ret);
+ return KAL_FALSE;
+ }
+
+ /* Use error RSA2048 file */
+
+ tlvota_file = &(pMcf->tlvota_file[i]);
+
+ MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ if (tlvota_file) {
+ pFile = (mcf_tool_file_info_t *)(tlvota_file->buff);
+ pItem = (mcf_tool_gid_tlvota_file_item_t *)(tlvota_file->buff + sizeof(mcf_tool_file_info_t));
+
+ 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);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_TLVOTA_SBP_full_ut_gid_wrong_RSA2048.mcfopota");
+ return KAL_FALSE;
+ }
+
+ MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Read TLV-OTA FAIL!! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+
+ //DSBP flow
+ ret = mcf_auto_select_tlvota_file(¶m_ptr);
+ if (ret != KAL_FALSE) {
+ mcf_ut_format_err_str("mcf_auto_select_tlvota_file FAIL! ret(%d) \r\n", ret);
+ return KAL_FALSE;
+ }
+ mcf_set_config_after_dsbp(l4c_gemini_get_switched_sim_id(param_ptr.ps_id));
+ mcf_ret = mcf_get_tlvota_file_result(param_ptr.ps_id);
+
+ if (mcf_ret != MCF_OTA_R_DIGEST_FAIL){
+ mcf_ut_format_err_str("mcf_get_tlvota_file_result FAIL! ret(%d) \r\n", mcf_ret);
+ return KAL_FALSE;
+ }
+ }
+
+ MCF_UT_PASS();
+ return KAL_TRUE;
+
+}
+#endif
+
+#if defined(__MCF_UT_FRAMEWORK_SUPPORT__)
+extern kal_bool mcf_utfwk_sample_code_start_ut();
+kal_bool mcf_utfwk_sample_code_ut(void *p_param, kal_char *p_ret_err_str, kal_uint32 *p_ret_err_str_sz)
+{
+ kal_bool ret = KAL_TRUE;
+ ret = mcf_utfwk_sample_code_start_ut();
+ if (ret != KAL_TRUE) {
+ mcf_ut_format_err_str("mcf utfwk sample code failed \r\n");
+ return KAL_FALSE;
+ }
+ MCF_UT_PASS();
+ return KAL_TRUE;
+}
+
+kal_bool mcf_utfwk_ut_test_flow (void *p_param, kal_char *p_ret_err_str, kal_uint32 *p_ret_err_str_sz)
+{
+ kal_bool ret = KAL_TRUE;
+ static mcf_utfwk_ota_input_struct ota_input;
+ kal_char ota_data_path[512];
+ kal_char *pos;
+ kal_uint8 *dump_buffer;
+ nvram_errno_enum nvram_api_ret;
+ nvram_ltable_entry_struct lid_info = {0};
+ static kal_uint32 value;
+ kal_uint64 sh_value;
+ kal_uint8 oring_value[20];
+ kal_uint8 hex_value[20];
+ kal_uint32 sim_id = 0;
+ static mcf_utfwk_config_variable_struct var;
+ static mcf_utfwk_config_variable_struct var_arr[5];
+ static kal_uint32 value1;
+ static kal_uint32 bit_value;
+ nvram_ef_mcf_test_struct test_lid_buffer;
+
+
+ /* Normal Case */
+ kal_mem_set(&ota_input, 0, sizeof(mcf_utfwk_ota_input_struct));
+ ota_input.lid[0] = NVRAM_EF_MCF_TEST_OTA_LID;
+ ota_input.lid_cnt = 1;
+ ota_input.ota_type = MCF_UTFWK_ATTR_OTA;
+
+ getcwd(ota_data_path, sizeof(ota_data_path));
+ pos = strstr(ota_data_path, "mcu");
+ kal_sprintf(pos + strlen("mcu"), "\\%s\\%s%c", MCF_UT_DB_FOLDER_PATH, "MCF_OTA_ut_gid_normal.mcfota", '\0');
+
+ ota_input.input_op = MCF_UTFWK_OTA_FILE_PATH;
+ strcpy(ota_input.input_mode.file_path_name, ota_data_path);
+
+ ret = mcf_utfwk_initial_env(ota_input);
+ if (ret == KAL_FALSE){
+ return ret;
+ }
+
+ mcf_utfwk_execute();
+
+ nvram_api_ret = nvram_external_get_lid_info(NVRAM_EF_MCF_TEST_OTA_LID, &lid_info);
+ if (nvram_api_ret != NVRAM_ERRNO_SUCCESS) {
+ ret = KAL_FALSE;
+
+ return ret;
+ }
+
+ dump_buffer = (kal_uint8 *)get_ctrl_buffer(sizeof(nvram_ef_mcf_test_struct));
+ kal_mem_set(dump_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
+
+ if(mcf_utfwk_dump_result(NVRAM_EF_MCF_TEST_OTA_LID, 1, MCF_UTFWK_DUMP_LID, dump_buffer, lid_info.size, 0, "") != KAL_TRUE){
+ ret = KAL_FALSE;
+ return KAL_FALSE;
+ }
+
+
+ if ( kal_mem_cmp(dump_buffer, &mcf_ut_test_lid_value_pattern, sizeof(nvram_ef_mcf_test_struct)) != 0 ) {
+ ret = KAL_FALSE;
+ return KAL_FALSE;
+ }
+
+ free_ctrl_buffer_set_null(dump_buffer);
+
+ mcf_utfwk_reset();
+
+ /* OTA for Query Case */
+ kal_mem_set(&ota_input, 0, sizeof(mcf_utfwk_ota_input_struct));
+
+ ota_input.lid[0] = NVRAM_EF_MCF_TEST_OTA_QUERY_LID;
+ ota_input.lid_cnt = 1;
+ ota_input.ota_type = MCF_UTFWK_ATTR_OTA;
+
+ getcwd(ota_data_path, sizeof(ota_data_path));
+ pos = strstr(ota_data_path, "mcu");
+ kal_sprintf(pos + strlen("mcu"), "\\%s\\%s%c", MCF_UT_DB_FOLDER_PATH, "MCF_OTA_QUERY_ut_gid_normal.mcfota", '\0');
+
+ ota_input.input_op = MCF_UTFWK_OTA_FILE_PATH;
+ strcpy(ota_input.input_mode.file_path_name, ota_data_path);
+
+ ret = mcf_utfwk_initial_env(ota_input);
+ if (ret == KAL_FALSE){
+ return ret;
+ }
+
+ mcf_utfwk_execute();
+
+ nvram_api_ret = nvram_external_get_lid_info(NVRAM_EF_MCF_TEST_OTA_QUERY_LID, &lid_info);
+ if (nvram_api_ret != NVRAM_ERRNO_SUCCESS) {
+
+ ret = KAL_FALSE;
+ return ret;
+ }
+
+ kal_mem_set(&test_lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
+
+ if((lid_info.attr & NVRAM_ATTR_MCF_OTA_FOR_QUERY) != 0) {
+ 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){
+ ret = KAL_FALSE;
+ return ret;
+ }
+ }else {
+ ret = KAL_FALSE;
+ return ret;
+ }
+
+ if ( kal_mem_cmp(&test_lid_buffer, &mcf_ut_test_lid_value_pattern, sizeof(nvram_ef_mcf_test_struct)) != 0 ) {
+ ret = KAL_FALSE;
+ return ret;
+ }
+
+ dump_buffer = (kal_uint8 *)get_ctrl_buffer(sizeof(nvram_ef_mcf_test_struct));
+ kal_mem_set(dump_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
+
+ 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){
+ ret = KAL_FALSE;
+ return KAL_FALSE;
+ }
+
+ if ( kal_mem_cmp(dump_buffer, &mcf_ut_test_lid_value_pattern, sizeof(nvram_ef_mcf_test_struct)) != 0 ) {
+ ret = KAL_FALSE;
+
+ return KAL_FALSE;
+ }
+
+ free_ctrl_buffer_set_null(dump_buffer);
+
+ mcf_utfwk_reset();
+
+
+ /* Generate OTA Case */
+
+ kal_mem_set(&ota_input, 0, sizeof(mcf_utfwk_ota_input_struct));
+ kal_mem_set(&var, 0, sizeof(mcf_utfwk_config_variable_struct));
+
+ ota_input.lid[0] = NVRAM_EF_MCF_TEST_OTA_LID;
+ ota_input.lid_cnt = 1;
+ ota_input.ota_type = MCF_UTFWK_ATTR_OTA;
+ ota_input.input_op = MCF_UTFWK_OTA_VARIABLE_CONFIG;
+
+ //VAL_STRUCT_3[0].ARRAY_D[4][3][2]
+ var.gid = MCF_TEST_OTA_LID_BASE_GID+106;
+ strcpy(var.array_index, "0$4$3$2$");
+ value = 12;
+ var.value = &value;
+ var.value_len = 1;
+ var.rec_id = 1;
+ ota_input.input_mode.var_info.var = &var;
+ ota_input.input_mode.var_info.var_cnt = 1;
+
+ ret = mcf_utfwk_initial_env(ota_input);
+ if (ret == KAL_FALSE){
+ return ret;
+ }
+
+ mcf_utfwk_execute();
+
+ nvram_api_ret = nvram_external_get_lid_info(NVRAM_EF_MCF_TEST_OTA_LID, &lid_info);
+ if (nvram_api_ret != NVRAM_ERRNO_SUCCESS) {
+
+ ret = KAL_FALSE;
+ return ret;
+ }
+
+ dump_buffer = (kal_uint8 *)get_ctrl_buffer(sizeof(nvram_ef_mcf_test_struct));
+ kal_mem_set(dump_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
+
+ 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){
+ ret = KAL_FALSE;
+ return KAL_FALSE;
+ }
+
+ mcf_bytes_to_hex(&value, 1, KAL_FALSE, &oring_value);
+ mcf_bytes_to_hex(dump_buffer, 1, KAL_FALSE, &hex_value);
+
+ if (strncmp(hex_value, oring_value, 2) != 0 ) {
+ ret = KAL_FALSE;
+ return KAL_FALSE;
+ }
+
+ free_ctrl_buffer_set_null(dump_buffer);
+
+ mcf_utfwk_reset();
+
+ /* Generate OTA Case - 2 variables */
+
+ kal_mem_set(&ota_input, 0, sizeof(mcf_utfwk_ota_input_struct));
+ kal_mem_set(&var_arr, 0, sizeof(mcf_utfwk_config_variable_struct)*5);
+
+ ota_input.lid[0] = NVRAM_EF_MCF_TEST_OTA_LID;
+ ota_input.lid_cnt = 1;
+ ota_input.ota_type = MCF_UTFWK_ATTR_OTA;
+ ota_input.input_op = MCF_UTFWK_OTA_VARIABLE_CONFIG;
+
+ //VAL_STRUCT_3[0].ARRAY_D[4][3][2]
+ var_arr[0].gid = MCF_TEST_OTA_LID_BASE_GID+106;
+ strcpy(var_arr[0].array_index, "0$4$3$2$");
+ value = 12;
+ var_arr[0].value = &value;
+ var_arr[0].value_len = 1;
+ var_arr[0].rec_id = 1;
+
+ //val_byte_11
+ var_arr[1].gid = MCF_TEST_OTA_LID_BASE_GID+44;
+ value1 = 32;
+ var_arr[1].value = &value1;
+ var_arr[1].value_len = 1;
+ var_arr[1].rec_id = 1;
+ ota_input.input_mode.var_info.var = var_arr;
+ ota_input.input_mode.var_info.var_cnt = 2;
+
+
+ ret = mcf_utfwk_initial_env(ota_input);
+ if (ret == KAL_FALSE){
+ return ret;
+ }
+
+ mcf_utfwk_execute();
+
+ nvram_api_ret = nvram_external_get_lid_info(NVRAM_EF_MCF_TEST_OTA_LID, &lid_info);
+ if (nvram_api_ret != NVRAM_ERRNO_SUCCESS) {
+
+ ret = KAL_FALSE;
+ return ret;
+ }
+
+ dump_buffer = (kal_uint8 *)get_ctrl_buffer(sizeof(nvram_ef_mcf_test_struct));
+ kal_mem_set(dump_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
+
+ 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){
+ ret = KAL_FALSE;
+ return KAL_FALSE;
+ }
+
+ mcf_bytes_to_hex(&value, 1, KAL_FALSE, &oring_value);
+ mcf_bytes_to_hex(dump_buffer, 1, KAL_FALSE, &hex_value);
+
+ if (strncmp(hex_value, oring_value, 2) != 0 ) {
+ ret = KAL_FALSE;
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(dump_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
+
+ 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){
+ ret = KAL_FALSE;
+ return KAL_FALSE;
+ }
+
+ mcf_bytes_to_hex(&value1, 1, KAL_FALSE, &oring_value);
+ mcf_bytes_to_hex(dump_buffer, 1, KAL_FALSE, &hex_value);
+
+ if (strncmp(hex_value, oring_value, 2) != 0 ) {
+ ret = KAL_FALSE;
+ return KAL_FALSE;
+ }
+
+ free_ctrl_buffer_set_null(dump_buffer);
+
+ mcf_utfwk_reset();
+
+ /* OP OTA Case */
+
+ kal_mem_set(&ota_input, 0, sizeof(mcf_utfwk_ota_input_struct));
+ kal_mem_set(&mcf_utfwk_lid_buffer,0, sizeof(nvram_ef_mcf_test_struct));
+
+ ota_input.lid[0] = NVRAM_EF_MCF_TEST_OTA_LID;
+ ota_input.lid_cnt = 1;
+ ota_input.ota_type = MCF_UTFWK_ATTR_OTA_BY_OP;
+ ota_input.sim_id = 0;
+ ota_input.sbp_id = SBP_TAG_SBPID;
+ strncpy(ota_input.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
+ strncpy(ota_input.mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
+
+ getcwd(ota_data_path, sizeof(ota_data_path));
+ pos = strstr(ota_data_path, "mcu");
+ kal_sprintf(pos + strlen("mcu"), "\\%s\\%s%c", MCF_UT_DB_FOLDER_PATH, "MCF_TLVOTA_SBP_full_ut_gid_normal.mcfopota", '\0');
+
+ ota_input.input_op = MCF_UTFWK_OTA_FILE_PATH;
+ strcpy(ota_input.input_mode.file_path_name, ota_data_path);
+
+ ret = mcf_utfwk_initial_env(ota_input);
+ if (ret == KAL_FALSE){
+ return ret;
+ }
+
+ mcf_utfwk_initial_dsbp_callback(mcf_utfwk_dsbp_callback);
+
+ mcf_utfwk_execute();
+
+ if ( kal_mem_cmp(&mcf_utfwk_lid_buffer, &mcf_ut_test_lid_value_pattern, sizeof(nvram_ef_mcf_test_struct)) != 0 ) {
+ ret = KAL_FALSE;
+ return ret;
+ }
+
+ nvram_api_ret = nvram_external_get_lid_info(NVRAM_EF_MCF_TEST_OTA_LID, &lid_info);
+ if (nvram_api_ret != NVRAM_ERRNO_SUCCESS) {
+
+ ret = KAL_FALSE;
+ return ret;
+ }
+
+ dump_buffer = (kal_uint8 *)get_ctrl_buffer(sizeof(nvram_ef_mcf_test_struct));
+ kal_mem_set(dump_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
+
+ if(mcf_utfwk_dump_result(NVRAM_EF_MCF_TEST_OTA_LID, 1, MCF_UTFWK_DUMP_LID, dump_buffer, lid_info.size, 0, "") != KAL_TRUE){
+ ret = KAL_FALSE;
+ return KAL_FALSE;
+ }
+
+
+ if ( kal_mem_cmp(dump_buffer, &mcf_ut_test_lid_value_pattern, sizeof(nvram_ef_mcf_test_struct)) != 0 ) {
+ ret = KAL_FALSE;
+ return KAL_FALSE;
+ }
+
+ free_ctrl_buffer_set_null(dump_buffer);
+
+ mcf_utfwk_reset();
+
+ /* OP OTA Generate Case */
+
+ kal_mem_set(&ota_input, 0, sizeof(mcf_utfwk_ota_input_struct));
+ kal_mem_set(&var_arr, 0, sizeof(mcf_utfwk_config_variable_struct)*5);
+ kal_mem_set(&mcf_utfwk_lid_buffer,0, sizeof(nvram_ef_mcf_test_struct));
+
+ ota_input.lid[0] = NVRAM_EF_MCF_TEST_OTA_LID;
+ ota_input.lid_cnt = 1;
+ ota_input.ota_type = MCF_UTFWK_ATTR_OTA_BY_OP;
+ ota_input.sim_id = 0;
+ ota_input.sbp_id = SBP_TAG_SBPID;
+ strncpy(ota_input.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
+ strncpy(ota_input.mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
+
+
+ ota_input.input_mode.var_info.tag_type = 1;
+ ota_input.input_op = MCF_UTFWK_OTA_VARIABLE_CONFIG;
+ //VAL_BYTE_11
+ var_arr[0].gid = MCF_TEST_OTA_LID_BASE_GID+44;
+ value = 32;
+ var_arr[0].value = &value;
+ var_arr[0].value_len = 1;
+ var_arr[0].rec_id = 1;
+ //VAL_STRUCT_3[0].ARRAY_D[4][3][2]
+ var_arr[1].gid = MCF_TEST_OTA_LID_BASE_GID+106;
+ strcpy(var_arr[1].array_index, "0$4$3$2$");
+ value1 = 64;
+ var_arr[1].value = &value1;
+ var_arr[1].value_len = 1;
+ var_arr[1].rec_id = 1;
+ //VAL_SHORT_11
+ var_arr[2].gid = MCF_TEST_OTA_LID_BASE_GID+56;
+ sh_value = 5566;
+ var_arr[2].value = &sh_value;
+ var_arr[2].value_len = 2;
+ var_arr[2].rec_id = 1;
+ //VAL_BIT_BYTE_11.B3
+ var_arr[3].gid = MCF_TEST_OTA_LID_BASE_GID+21;
+ bit_value = 1;
+ var_arr[3].value = &bit_value;
+ var_arr[3].value_len = 1;
+ var_arr[3].rec_id = 1;
+
+
+ ota_input.input_mode.var_info.var = var_arr;
+ ota_input.input_mode.var_info.var_cnt = 4;
+
+ ret = mcf_utfwk_initial_env(ota_input);
+ if (ret == KAL_FALSE){
+ return ret;
+ }
+
+ mcf_utfwk_initial_dsbp_callback(mcf_utfwk_dsbp_callback);
+
+ mcf_utfwk_execute();
+
+ nvram_api_ret = nvram_external_get_lid_info(NVRAM_EF_MCF_TEST_OTA_LID, &lid_info);
+ if (nvram_api_ret != NVRAM_ERRNO_SUCCESS) {
+
+ ret = KAL_FALSE;
+ return ret;
+ }
+
+ dump_buffer = (kal_uint8 *)get_ctrl_buffer(sizeof(nvram_ef_mcf_test_struct));
+ kal_mem_set(dump_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
+
+ 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){
+ ret = KAL_FALSE;
+ return KAL_FALSE;
+ }
+
+ mcf_bytes_to_hex(&value, 1, KAL_FALSE, &oring_value);
+ mcf_bytes_to_hex(dump_buffer, 1, KAL_FALSE, &hex_value);
+
+ if (strncmp(hex_value, oring_value, 2) != 0 ) {
+ ret = KAL_FALSE;
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(dump_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
+
+ 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){
+ ret = KAL_FALSE;
+ return KAL_FALSE;
+ }
+
+ mcf_bytes_to_hex(&value1, 1, KAL_FALSE, &oring_value);
+ mcf_bytes_to_hex(dump_buffer, 1, KAL_FALSE, &hex_value);
+
+ if (strncmp(hex_value, oring_value, 2) != 0 ) {
+ ret = KAL_FALSE;
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(dump_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
+
+ 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){
+ ret = KAL_FALSE;
+ return KAL_FALSE;
+ }
+
+ mcf_bytes_to_hex(&sh_value, 2, KAL_FALSE, &oring_value);
+ mcf_bytes_to_hex(dump_buffer, 2, KAL_FALSE, &hex_value);
+
+ if (strncmp(hex_value, oring_value, 4) != 0 ) {
+ ret = KAL_FALSE;
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(dump_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
+
+ 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){
+ ret = KAL_FALSE;
+ return KAL_FALSE;
+ }
+
+ mcf_bytes_to_hex(&bit_value, 1, KAL_FALSE, &oring_value);
+ mcf_bytes_to_hex(dump_buffer, 1, KAL_FALSE, &hex_value);
+
+ if (strncmp(hex_value, oring_value, 2) != 0 ) {
+ ret = KAL_FALSE;
+ return KAL_FALSE;
+ }
+
+ free_ctrl_buffer_set_null(dump_buffer);
+
+ mcf_utfwk_reset();
+
+
+ MCF_UT_PASS();
+ return KAL_TRUE;
+}
+#endif
+#if defined(__MCF_COMBINE_FILE_SUPPORT__)
+kal_uint8 test_file1[MCF_MAX_OTA_FILE_SIZE];
+kal_uint8 test_file2[MCF_MAX_OTA_FILE_SIZE];
+kal_uint8 output_file[MCF_MAX_OTA_FILE_SIZE];
+kal_bool mcf_merge_ota_file_ut(void *p_param, kal_char *p_ret_err_str, kal_uint32 *p_ret_err_str_sz)
+{
+ kal_char ota_data_path[512];
+ kal_bool ret = KAL_FALSE;
+ FILE *file1, *file2;
+ kal_char *pos;
+ kal_bool mcf_ret;
+
+ // ========== BASIC TEST ========== //
+ getcwd(ota_data_path, sizeof(ota_data_path));
+ pos = strstr(ota_data_path, "mcu");
+ kal_sprintf(pos + strlen("mcu"), "\\%s\\%s", MCF_UT_DB_FOLDER_PATH, "OTA_2_LIDs_ut_gid_normal.mcfota");
+ file1 = fopen(ota_data_path, "rb");
+
+ getcwd(ota_data_path, sizeof(ota_data_path));
+ pos = strstr(ota_data_path, "mcu");
+ kal_sprintf(pos + strlen("mcu"), "\\%s\\%s", MCF_UT_DB_FOLDER_PATH, "OTA_3_LIDs_ut_gid_normal.mcfota");
+ file2 = fopen(ota_data_path, "rb");
+
+ if(file1 != NULL && file2 != NULL)
+ {
+ kal_mem_set(test_file1, 0, sizeof(test_file1));
+ fread(test_file1, sizeof(test_file1), 1, file1);
+ fclose(file1);
+ kal_mem_set(test_file2, 0, sizeof(test_file2));
+ fread(test_file2, sizeof(test_file2), 1, file2);
+ fclose(file2);
+ } else {
+ mcf_ut_format_err_str("Merge OTA open file failed!!\r\n");
+ return KAL_FALSE;
+ }
+ ret = mcf_merge_ota_buffer(test_file1, test_file2, output_file, sizeof(output_file));
+ if (ret == KAL_FALSE){
+ mcf_ut_format_err_str("Merge OTA buffer failed!!\r\n");
+ return KAL_FALSE;
+ }
+
+ // checksum comparasion
+ {
+ mcf_tool_file_info_t *output_header = (mcf_tool_file_info_t *)output_file;
+ if (mcf_check_check_sum((kal_uint32 *)output_file, output_header->file_size) != 0) {
+ mcf_ut_format_err_str("Merge OTA buffer checksim failed!!\r\n");
+ return KAL_FALSE;
+ }
+ }
+
+ // ========== VALUE TEST : no encypted file========== //
+ {
+ mcf_t *pMcf = mcf_get_instance();
+ mcf_ota_file_t *ota_file = &(pMcf->ota_file);
+ mcf_tool_file_info_t *pFile = (mcf_tool_file_info_t *)(ota_file->buff);
+ nvram_ef_mcf_test_struct test_lid_buffer;
+ mcf_tool_file_info_t *file_header;
+
+ getcwd(ota_data_path, sizeof(ota_data_path));
+ pos = strstr(ota_data_path, "mcu");
+ kal_sprintf(pos + strlen("mcu"), "\\%s\\%s", MCF_UT_DB_FOLDER_PATH, "MCF_OTA_ut_gid_normal.mcfota");
+ file1 = fopen(ota_data_path, "rb");
+
+ getcwd(ota_data_path, sizeof(ota_data_path));
+ pos = strstr(ota_data_path, "mcu");
+ kal_sprintf(pos + strlen("mcu"), "\\%s\\%s", MCF_UT_DB_FOLDER_PATH, "MCF_OTA_QUERY_ut_gid_normal.mcfota");
+ file2 = fopen(ota_data_path, "rb");
+
+ if (file1 != NULL && file2 != NULL)
+ {
+ kal_mem_set(test_file1, 0, sizeof(test_file1));
+ fread(test_file1, sizeof(test_file1), 1, file1);
+ fclose(file1);
+ kal_mem_set(test_file2, 0, sizeof(test_file2));
+ fread(test_file2, sizeof(test_file2), 1, file2);
+ fclose(file2);
+ }
+ else {
+ mcf_ut_format_err_str("Merge OTA open file failed!!\r\n");
+ return KAL_FALSE;
+ }
+ file_header = (mcf_tool_file_info_t *)test_file2;
+ file_header->operation_mask |= MCF_FILE_OP_AES_128;
+ ret = mcf_merge_ota_buffer(test_file1, test_file2, output_file, sizeof(output_file));
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Merge OTA buffer failed!!\r\n");
+ return KAL_FALSE;
+ }
+
+ getcwd(ota_data_path, sizeof(ota_data_path));
+ pos = strstr(ota_data_path, "mcu");
+ kal_sprintf(pos + strlen("mcu"), "\\%s\\%s", MCF_UT_DB_FOLDER_PATH, "MCF_OTA_GID_MERGE.mcfota");
+ file1 = fopen(ota_data_path, "wb");
+
+ if (file1 != NULL)
+ {
+ mcf_tool_file_info_t *output_header = (mcf_tool_file_info_t *)output_file;
+ fwrite(output_file, 1, output_header->file_size, file1);
+ fclose(file1);
+ }
+ else {
+ return KAL_FALSE;
+ }
+
+ if (ota_file) {
+ ret = mcf_ut_open_test_data("MCF_OTA_GID_MERGE.mcfota", (kal_char *)(ota_file->buff), MCF_MAX_OTA_FILE_SIZE);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_OTA_GID_MERGE.mcfota");
+ return KAL_FALSE;
+ }
+ }
+ else {
+ mcf_ut_format_err_str("Do full OTA FAIL!! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+
+ mcf_ret = mcf_do_ota_full();
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Do full OTA FAIL!! ret(%d) \r\n", mcf_ret);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_test_lid_value(NULL);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Do full OTA positive test FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+
+ // Record index 1
+ kal_mem_set(&test_lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
+
+ 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));
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Read OTA by LID FAIL!! ret(%d) \r\n", mcf_ret);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_test_lid_value((kal_uint8 *)&test_lid_buffer);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Read OTA by LID positive test FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+
+ // Record index 2
+ kal_mem_set(&test_lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
+
+ 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));
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Read OTA by LID FAIL!! ret(%d) \r\n", mcf_ret);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_test_lid_value((kal_uint8 *)&test_lid_buffer);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Read OTA by LID positive test FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+ }
+ // ========== VALUE TEST : encypted file========== //
+ {
+ mcf_t *pMcf = mcf_get_instance();
+ mcf_ota_file_t *ota_file = &(pMcf->ota_file);
+ mcf_tool_file_info_t *pFile = (mcf_tool_file_info_t *)(ota_file->buff);
+ nvram_ef_mcf_test_struct test_lid_buffer;
+ mcf_tool_file_info_t *file_header;
+ kal_char password[32] = {0};
+
+ getcwd(ota_data_path, sizeof(ota_data_path));
+ pos = strstr(ota_data_path, "mcu");
+ kal_sprintf(pos + strlen("mcu"), "\\%s\\%s", MCF_UT_DB_FOLDER_PATH, "MCF_OTA_ut_gid_normal_AES256_RSA3072.mcfota");
+ file1 = fopen(ota_data_path, "rb");
+
+ getcwd(ota_data_path, sizeof(ota_data_path));
+ pos = strstr(ota_data_path, "mcu");
+ kal_sprintf(pos + strlen("mcu"), "\\%s\\%s", MCF_UT_DB_FOLDER_PATH, "MCF_OTA_QUERY_ut_gid_normal_AES256_RSA3072.mcfota");
+ file2 = fopen(ota_data_path, "rb");
+
+ if (file1 != NULL && file2 != NULL)
+ {
+ kal_mem_set(test_file1, 0, sizeof(test_file1));
+ fread(test_file1, sizeof(test_file1), 1, file1);
+ fclose(file1);
+ kal_mem_set(test_file2, 0, sizeof(test_file2));
+ fread(test_file2, sizeof(test_file2), 1, file2);
+ fclose(file2);
+ }
+ else {
+ mcf_ut_format_err_str("Merge OTA open file failed!!\r\n");
+ return KAL_FALSE;
+ }
+
+ // decrypt input file
+ file_header = (mcf_tool_file_info_t *)test_file1;
+ mcf_get_custom_aes_password(password);
+ if (mcf_decrypt_256bit(password, (kal_char *)file_header + file_header->total_len, (file_header->file_size - file_header->total_len)) != KAL_TRUE)
+ return KAL_FALSE;
+
+ file_header = (mcf_tool_file_info_t *)test_file2;
+ if (mcf_decrypt_256bit(password, (kal_char *)file_header + file_header->total_len, (file_header->file_size - file_header->total_len)) != KAL_TRUE)
+ return KAL_FALSE;
+
+
+ ret = mcf_merge_ota_buffer(test_file1, test_file2, output_file, sizeof(output_file));
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Merge OTA buffer failed!!\r\n");
+ return KAL_FALSE;
+ }
+
+ getcwd(ota_data_path, sizeof(ota_data_path));
+ pos = strstr(ota_data_path, "mcu");
+ kal_sprintf(pos + strlen("mcu"), "\\%s\\%s", MCF_UT_DB_FOLDER_PATH, "MCF_OTA_GID_MERGE_AES256.mcfota");
+ file1 = fopen(ota_data_path, "wb");
+
+ if (file1 != NULL)
+ {
+ mcf_tool_file_info_t *output_header = (mcf_tool_file_info_t *)output_file;
+ fwrite(output_file, 1, output_header->file_size, file1);
+ fclose(file1);
+ }
+ else {
+ return KAL_FALSE;
+ }
+
+ if (ota_file) {
+ ret = mcf_ut_open_test_data("MCF_OTA_GID_MERGE_AES256.mcfota", (kal_char *)(ota_file->buff), MCF_MAX_OTA_FILE_SIZE);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_OTA_GID_MERGE_AES256.mcfota");
+ return KAL_FALSE;
+ }
+ }
+ else {
+ mcf_ut_format_err_str("Do full OTA FAIL!! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+
+ mcf_ret = mcf_do_ota_full();
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Do full OTA FAIL!! ret(%d) \r\n", mcf_ret);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_test_lid_value(NULL);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Do full OTA positive test FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+
+ // Record index 1
+ kal_mem_set(&test_lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
+
+ 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));
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Read OTA by LID FAIL!! ret(%d) \r\n", mcf_ret);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_test_lid_value((kal_uint8 *)&test_lid_buffer);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Read OTA by LID positive test FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+
+ // Record index 2
+ kal_mem_set(&test_lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
+
+ 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));
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Read OTA by LID FAIL!! ret(%d) \r\n", mcf_ret);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_test_lid_value((kal_uint8 *)&test_lid_buffer);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Read OTA by LID positive test FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+ }
+
+ // ========== BIG FILE TEST ========== //
+ getcwd(ota_data_path, sizeof(ota_data_path));
+ pos = strstr(ota_data_path, "mcu");
+ kal_sprintf(pos + strlen("mcu"), "\\%s\\%s", MCF_UT_DB_FOLDER_PATH, "MCF_OTA_ut_big_size.mcfota");
+ file1 = fopen(ota_data_path, "rb");
+
+ getcwd(ota_data_path, sizeof(ota_data_path));
+ pos = strstr(ota_data_path, "mcu");
+ kal_sprintf(pos + strlen("mcu"), "\\%s\\%s", MCF_UT_DB_FOLDER_PATH, "MCF_OTA_ut_big_size.mcfota");
+ file2 = fopen(ota_data_path, "rb");
+
+ if(file1 != NULL && file2 != NULL)
+ {
+ kal_mem_set(test_file1, 0, sizeof(test_file1));
+ fread(test_file1, sizeof(test_file1), 1, file1);
+ fclose(file1);
+ kal_mem_set(test_file2, 0, sizeof(test_file2));
+ fread(test_file2, sizeof(test_file2), 1, file2);
+ fclose(file2);
+ } else {
+ mcf_ut_format_err_str("Merge OTA open file failed!!\r\n");
+ return KAL_FALSE;
+ }
+ ret = mcf_merge_ota_buffer(test_file1, test_file2, output_file, sizeof(output_file));
+ if (ret == KAL_FALSE){
+ mcf_ut_format_err_str("Merge OTA buffer failed!!\r\n");
+ return KAL_FALSE;
+ }
+ MCF_UT_PASS();
+ return KAL_TRUE;
+}
+
+kal_bool mcf_merge_ota_by_op_file_ut(void *p_param, kal_char *p_ret_err_str, kal_uint32 *p_ret_err_str_sz)
+{
+ kal_char ota_data_path[512];
+ kal_bool ret = KAL_FALSE;
+ FILE *file1, *file2;
+ kal_char *pos;
+
+ getcwd(ota_data_path, sizeof(ota_data_path));
+ pos = strstr(ota_data_path, "mcu");
+ kal_sprintf(pos + strlen("mcu"), "\\%s\\%s", MCF_UT_DB_FOLDER_PATH, "MTK_OPOTA_SBPID_1.mcfopota");
+ file1 = fopen(ota_data_path, "rb");
+
+ getcwd(ota_data_path, sizeof(ota_data_path));
+ pos = strstr(ota_data_path, "mcu");
+ kal_sprintf(pos + strlen("mcu"), "\\%s\\%s", MCF_UT_DB_FOLDER_PATH, "MTK_OPOTA_SBPID_2.mcfopota");
+ file2 = fopen(ota_data_path, "rb");
+
+ if (file1 != NULL && file2 != NULL)
+ {
+ kal_mem_set(test_file1, 0, sizeof(test_file1));
+ fread(test_file1, sizeof(test_file1), 1, file1);
+ fclose(file1);
+ kal_mem_set(test_file2, 0, sizeof(test_file2));
+ fread(test_file2, sizeof(test_file2), 1, file2);
+ fclose(file2);
+ }
+ else {
+ mcf_ut_format_err_str("Merge OTA by OP open file failed!!\r\n");
+ return KAL_FALSE;
+ }
+ ret = mcf_merge_ota_buffer(test_file1, test_file2, output_file, sizeof(output_file));
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Merge OTA by OP buffer failed!!\r\n");
+ return KAL_FALSE;
+ }
+ // checksum comparasion
+ {
+ mcf_tool_file_info_t *output_header = (mcf_tool_file_info_t *)output_file;
+ if (mcf_check_check_sum((kal_uint32 *)output_file, output_header->file_size) != 0) {
+ mcf_ut_format_err_str("Merge OTA by OP buffer checksim failed!!\r\n");
+ return KAL_FALSE;
+ }
+ }
+ // ========== VALUE TEST : no encrypted file========== //
+ {
+ mcf_t *pMcf = mcf_get_instance();
+ mcf_tool_file_info_t *pFile;
+ mcf_tool_gid_tlvota_file_item_t *pItem;
+ mcf_tlvota_file_t *tlvota_file;
+ nvram_ef_mcf_tlvota_file_info_struct nv_tlvota_file;
+ nvram_ef_mcf_test_struct test_lid_buffer;
+ nvram_ef_mcf_test_struct empty_buffer = { 0 };
+ mcf_tlvota_sbp_tag_t sbp_tag;
+ kal_uint8 i;
+ mcf_ota_result_e mcf_ret;
+ kal_bool ret;
+ mcf_tool_file_info_t *file_header;
+
+ getcwd(ota_data_path, sizeof(ota_data_path));
+ pos = strstr(ota_data_path, "mcu");
+ kal_sprintf(pos + strlen("mcu"), "\\%s\\%s", MCF_UT_DB_FOLDER_PATH, "MCF_TLVOTA_SBP_full_ut_gid_normal.mcfopota");
+ file1 = fopen(ota_data_path, "rb");
+
+ getcwd(ota_data_path, sizeof(ota_data_path));
+ pos = strstr(ota_data_path, "mcu");
+ kal_sprintf(pos + strlen("mcu"), "\\%s\\%s", MCF_UT_DB_FOLDER_PATH, "MCF_TLVOTA_SBP_partial_ut_gid_normal.mcfopota");
+ file2 = fopen(ota_data_path, "rb");
+
+ if (file1 != NULL && file2 != NULL)
+ {
+ kal_mem_set(test_file1, 0, sizeof(test_file1));
+ fread(test_file1, sizeof(test_file1), 1, file1);
+ fclose(file1);
+ kal_mem_set(test_file2, 0, sizeof(test_file2));
+ fread(test_file2, sizeof(test_file2), 1, file2);
+ fclose(file2);
+ }
+ else {
+ mcf_ut_format_err_str("Merge OTA open file failed!!\r\n");
+ return KAL_FALSE;
+ }
+ file_header = (mcf_tool_file_info_t *)test_file2;
+ //file_header->operation_mask |= MCF_FILE_OP_AES_128;
+ ret = mcf_merge_ota_buffer(test_file1, test_file2, output_file, sizeof(output_file));
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Merge OTA buffer failed!!\r\n");
+ return KAL_FALSE;
+ }
+
+ getcwd(ota_data_path, sizeof(ota_data_path));
+ pos = strstr(ota_data_path, "mcu");
+ kal_sprintf(pos + strlen("mcu"), "\\%s\\%s", MCF_UT_DB_FOLDER_PATH, "MCF_OTA_BY_OP_GID_MERGE.mcfota");
+ file1 = fopen(ota_data_path, "wb");
+
+ if (file1 != NULL)
+ {
+ mcf_tool_file_info_t *output_header = (mcf_tool_file_info_t *)output_file;
+ fwrite(output_file, 1, output_header->file_size, file1);
+ fclose(file1);
+ }
+ else {
+ return KAL_FALSE;
+ }
+ /*
+ * Read TLV-OTA by LID & sbp_tag positive test - partially matched tag
+ * NVRAM_EF_MCF_TEST_OTA_LID with tag SBP_PARTIAL_TAG (12_NA_NA), but user searches SBP_FULL_TAG (12_33_21)
+ */
+ /* Fill TLV-OTA file into buffer */
+ for (i = 0; i < MAX_SIM_NUM; i++) {
+ tlvota_file = &(pMcf->tlvota_file[i]);
+
+ if (tlvota_file) {
+ pFile = (mcf_tool_file_info_t *)(tlvota_file->buff);
+ pItem = (mcf_tool_gid_tlvota_file_item_t *)(tlvota_file->buff + sizeof(mcf_tool_file_info_t));
+
+ ret = mcf_ut_open_test_data("MCF_OTA_BY_OP_GID_MERGE.mcfota", (kal_char *)(tlvota_file->buff), MCF_MAX_TLVOTA_FILE_SIZE);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_OTA_BY_OP_GID_MERGE.mcfota");
+ return KAL_FALSE;
+ }
+
+ }
+ else {
+ mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+ }
+
+ // NVRAM_EF_MCF_TEST_OTA_LID with SBP_PARTIAL_TAG
+ kal_mem_set(&sbp_tag, 0, sizeof(mcf_tlvota_sbp_tag_t));
+ sbp_tag.sbp_id = SBP_TAG_SBPID;
+ strncpy(sbp_tag.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
+ strncpy(sbp_tag.mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
+
+ for (i = 0; i < MAX_SIM_NUM; i++) {
+ kal_mem_set(&test_lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
+
+ 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));
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! i(%d), ret(%d) \r\n", i, mcf_ret);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_test_lid_value((kal_uint8 *)&test_lid_buffer);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag positive test (partially matched tag) FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+ }
+ }
+
+ // ========== VALUE TEST : encrypted file========== //
+ {
+ mcf_t *pMcf = mcf_get_instance();
+ mcf_tool_file_info_t *pFile;
+ mcf_tool_gid_tlvota_file_item_t *pItem;
+ mcf_tlvota_file_t *tlvota_file;
+ nvram_ef_mcf_tlvota_file_info_struct nv_tlvota_file;
+ nvram_ef_mcf_test_struct test_lid_buffer;
+ nvram_ef_mcf_test_struct empty_buffer = { 0 };
+ mcf_tlvota_sbp_tag_t sbp_tag;
+ kal_uint8 i;
+ mcf_ota_result_e mcf_ret;
+ kal_bool ret;
+ mcf_tool_file_info_t *file_header;
+ kal_char password[32] = {0};
+
+ getcwd(ota_data_path, sizeof(ota_data_path));
+ pos = strstr(ota_data_path, "mcu");
+ kal_sprintf(pos + strlen("mcu"), "\\%s\\%s", MCF_UT_DB_FOLDER_PATH, "MCF_TLVOTA_SBP_full_ut_gid_normal_AES256_RSA3072.mcfopota");
+ file1 = fopen(ota_data_path, "rb");
+
+ getcwd(ota_data_path, sizeof(ota_data_path));
+ pos = strstr(ota_data_path, "mcu");
+ kal_sprintf(pos + strlen("mcu"), "\\%s\\%s", MCF_UT_DB_FOLDER_PATH, "MCF_TLVOTA_SBP_partial_ut_gid_normal_AES256_RSA3072.mcfopota");
+ file2 = fopen(ota_data_path, "rb");
+
+ if (file1 != NULL && file2 != NULL)
+ {
+ kal_mem_set(test_file1, 0, sizeof(test_file1));
+ fread(test_file1, sizeof(test_file1), 1, file1);
+ fclose(file1);
+ kal_mem_set(test_file2, 0, sizeof(test_file2));
+ fread(test_file2, sizeof(test_file2), 1, file2);
+ fclose(file2);
+ }
+ else {
+ mcf_ut_format_err_str("Merge OTA open file failed!!\r\n");
+ return KAL_FALSE;
+ }
+
+ // decrypt input file
+ file_header = (mcf_tool_file_info_t *)test_file1;
+ mcf_get_custom_aes_password(password);
+ if (mcf_decrypt_256bit(password, (kal_char *)file_header + file_header->total_len, (file_header->file_size - file_header->total_len)) != KAL_TRUE)
+ return KAL_FALSE;
+
+ file_header = (mcf_tool_file_info_t *)test_file2;
+ if (mcf_decrypt_256bit(password, (kal_char *)file_header + file_header->total_len, (file_header->file_size - file_header->total_len)) != KAL_TRUE)
+ return KAL_FALSE;
+
+ ret = mcf_merge_ota_buffer(test_file1, test_file2, output_file, sizeof(output_file));
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Merge OTA buffer failed!!\r\n");
+ return KAL_FALSE;
+ }
+
+ getcwd(ota_data_path, sizeof(ota_data_path));
+ pos = strstr(ota_data_path, "mcu");
+ kal_sprintf(pos + strlen("mcu"), "\\%s\\%s", MCF_UT_DB_FOLDER_PATH, "MCF_OTA_BY_OP_GID_MERGE_AES256.mcfota");
+ file1 = fopen(ota_data_path, "wb");
+
+ if (file1 != NULL)
+ {
+ mcf_tool_file_info_t *output_header = (mcf_tool_file_info_t *)output_file;
+ fwrite(output_file, 1, output_header->file_size, file1);
+ fclose(file1);
+ }
+ else {
+ return KAL_FALSE;
+ }
+ /*
+ * Read TLV-OTA by LID & sbp_tag positive test - partially matched tag
+ * NVRAM_EF_MCF_TEST_OTA_LID with tag SBP_PARTIAL_TAG (12_NA_NA), but user searches SBP_FULL_TAG (12_33_21)
+ */
+ /* Fill TLV-OTA file into buffer */
+ for (i = 0; i < MAX_SIM_NUM; i++) {
+ tlvota_file = &(pMcf->tlvota_file[i]);
+
+ if (tlvota_file) {
+ l4c_mcf_path_type_enum *apply_path_type;
+ kal_char apply_filename[256],
+ pFile = (mcf_tool_file_info_t *)(tlvota_file->buff);
+ pItem = (mcf_tool_gid_tlvota_file_item_t *)(tlvota_file->buff + sizeof(mcf_tool_file_info_t));
+
+ ret = mcf_ut_open_test_data("MCF_OTA_BY_OP_GID_MERGE_AES256.mcfota", (kal_char *)(tlvota_file->buff), MCF_MAX_TLVOTA_FILE_SIZE);
+ mcf_read_tlvota_file(KAL_FALSE, i, "", "", &apply_path_type, apply_filename, pMcf);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_OTA_BY_OP_GID_MERGE_AES256.mcfota");
+ return KAL_FALSE;
+ }
+
+ }
+ else {
+ mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+ }
+
+ // NVRAM_EF_MCF_TEST_OTA_LID with SBP_PARTIAL_TAG
+ kal_mem_set(&sbp_tag, 0, sizeof(mcf_tlvota_sbp_tag_t));
+ sbp_tag.sbp_id = SBP_TAG_SBPID;
+ strncpy(sbp_tag.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
+ strncpy(sbp_tag.mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
+
+ for (i = 0; i < MAX_SIM_NUM; i++) {
+ kal_mem_set(&test_lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
+
+ 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));
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! i(%d), ret(%d) \r\n", i, mcf_ret);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_test_lid_value((kal_uint8 *)&test_lid_buffer);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag positive test (partially matched tag) FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+ }
+ }
+ MCF_UT_PASS();
+ return KAL_TRUE;
+}
+
+kal_uint8 gid_buffer[256];
+kal_bool mcf_merge_one_gid_ut(void *p_param, kal_char *p_ret_err_str, kal_uint32 *p_ret_err_str_sz)
+{
+ kal_bool ret = KAL_FALSE;
+ mcf_tool_gid_ota_file_item_t *ota_gid;
+ mcf_tool_gid_tlvota_file_item_t *ota_by_op_gid;
+ kal_uint32 *value;
+
+ kal_mem_set(gid_buffer, 0, sizeof(gid_buffer));
+ ota_gid = gid_buffer;
+ ota_gid->global_id = 5103;
+ ota_gid->record_idx = 1;
+ ota_gid->value_len = 4;
+ value = &ota_gid->buff_start;
+ *value = 6;
+ ota_gid->total_len = (kal_uint32)&ota_gid->buff_start + ota_gid->value_len - (kal_uint32)gid_buffer;
+
+ mcf_merge_one_gid(ota_gid, MCF_TYPE_OTA, output_file, sizeof(output_file), MCF_FILE_OP_CHECKSUM);
+ // check result
+ {
+ mcf_tool_file_info_t *output_header = (mcf_tool_file_info_t *)output_file;
+ kal_uint8 *current_pos = NULL;
+ if (output_header->item_num != 1) {
+ mcf_ut_format_err_str("Merge one gid item_num FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+ if (output_header->operation_mask != MCF_FILE_OP_CHECKSUM) {
+ mcf_ut_format_err_str("Merge one gid mask FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+ if (mcf_check_check_sum((kal_uint32 *)output_file, output_header->file_size) != 0) {
+ mcf_ut_format_err_str("Merge one gid checksum failed!!\r\n");
+ return KAL_FALSE;
+ }
+ current_pos = (kal_uint8 *)output_header + output_header->total_len;
+ if (kal_mem_cmp(ota_gid, current_pos, ota_gid->total_len)) {
+ mcf_ut_format_err_str("Merge one gid value failed!!\r\n");
+ return KAL_FALSE;
+ }
+ }
+
+ kal_mem_set(gid_buffer, 0, sizeof(gid_buffer));
+ ota_by_op_gid = gid_buffer;
+ ota_by_op_gid->global_id = 5103;
+ ota_by_op_gid->value_len = 4;
+
+ ota_by_op_gid->tag_type = MCF_TLVOTA_TAG_SBPID;
+ ota_by_op_gid->tag_len = strlen(SBP_FULL_TAG);
+ strcpy((kal_uint32)&ota_by_op_gid->buff_start, SBP_FULL_TAG);
+ value = &ota_by_op_gid->buff_start + ota_by_op_gid->tag_len;
+ *value = 6;
+ 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;
+
+ mcf_merge_one_gid(ota_by_op_gid, MCF_TYPE_OTA_BY_OP, output_file, sizeof(output_file), MCF_FILE_OP_CHECKSUM);
+ // check result
+ {
+ mcf_tool_file_info_t *output_header = (mcf_tool_file_info_t *)output_file;
+ kal_uint8 *current_pos = NULL;
+ if (output_header->item_num != 1) {
+ mcf_ut_format_err_str("Merge one gid item_num FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+ if (output_header->operation_mask != MCF_FILE_OP_CHECKSUM) {
+ mcf_ut_format_err_str("Merge one gid mask FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+ if (mcf_check_check_sum((kal_uint32 *)output_file, output_header->file_size) != 0) {
+ mcf_ut_format_err_str("Merge one gid checksum failed!!\r\n");
+ return KAL_FALSE;
+ }
+ current_pos = (kal_uint8 *)output_header + output_header->total_len;
+ if (kal_mem_cmp(ota_by_op_gid, current_pos, ota_by_op_gid->total_len)) {
+ mcf_ut_format_err_str("Merge one gid value failed!!\r\n");
+ return KAL_FALSE;
+ }
+ }
+ MCF_UT_PASS();
+ return KAL_TRUE;
+}
+
+
+kal_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)
+{
+ kal_char ota_data_path[512];
+ kal_bool ret = KAL_FALSE;
+ FILE *file1, *file2;
+ kal_char *pos;
+
+ getcwd(ota_data_path, sizeof(ota_data_path));
+ pos = strstr(ota_data_path, "mcu");
+ kal_sprintf(pos + strlen("mcu"), "\\%s\\%s", MCF_UT_DB_FOLDER_PATH, "MTK_OPOTA_SBPID_1.mcfopota");
+ file1 = fopen(ota_data_path, "rb");
+
+ if (file1 != NULL)
+ {
+ kal_mem_set(test_file1, 0, sizeof(test_file1));
+ fread(test_file1, sizeof(test_file1), 1, file1);
+ fclose(file1);
+ }
+ else {
+ mcf_ut_format_err_str("Merge OTA by OP open file failed!!\r\n");
+ return KAL_FALSE;
+ }
+
+ mcf_tool_gid_tlvota_file_item_t *ota_by_op_gid;
+ kal_uint32 *value;
+
+ kal_mem_set(gid_buffer, 0, sizeof(gid_buffer));
+ ota_by_op_gid = gid_buffer;
+ ota_by_op_gid->global_id = 5103;
+ ota_by_op_gid->value_len = 4;
+
+ ota_by_op_gid->tag_type = MCF_TLVOTA_TAG_SBPID;
+ ota_by_op_gid->tag_len = strlen(SBP_FULL_TAG);
+ strcpy((kal_uint32)&ota_by_op_gid->buff_start, SBP_FULL_TAG);
+ value = &ota_by_op_gid->buff_start + ota_by_op_gid->tag_len;
+ *value = 6;
+ 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;
+
+ mcf_merge_one_gid(ota_by_op_gid, MCF_TYPE_OTA_BY_OP, test_file2, sizeof(test_file2), MCF_FILE_OP_CHECKSUM);
+
+ ret = mcf_merge_ota_buffer(test_file1, test_file2, output_file, sizeof(output_file));
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Merge OTA by OP buffer failed!!\r\n");
+ return KAL_FALSE;
+ }
+ MCF_UT_PASS();
+ return KAL_TRUE;
+}
+
+kal_bool mcf_merge_encrypted_ota_file_ut(void *p_param, kal_char *p_ret_err_str, kal_uint32 *p_ret_err_str_sz)
+{
+ kal_char ota_data_path[512];
+ kal_bool ret = KAL_FALSE;
+ FILE *file1, *file2;
+ kal_char *pos;
+ kal_bool mcf_ret;
+ kal_char password[32] = {0};
+ mcf_tool_file_info_t *file_header;
+
+ // ========== BASIC TEST ========== //
+ getcwd(ota_data_path, sizeof(ota_data_path));
+ pos = strstr(ota_data_path, "mcu");
+ kal_sprintf(pos + strlen("mcu"), "\\%s\\%s", MCF_UT_DB_FOLDER_PATH, "AES256_SHA256_RSA2048.mcfota");
+ file1 = fopen(ota_data_path, "rb");
+
+ getcwd(ota_data_path, sizeof(ota_data_path));
+ pos = strstr(ota_data_path, "mcu");
+ kal_sprintf(pos + strlen("mcu"), "\\%s\\%s", MCF_UT_DB_FOLDER_PATH, "AES256_SHA384_RSA3072.mcfota");
+ file2 = fopen(ota_data_path, "rb");
+
+ if(file1 != NULL && file2 != NULL)
+ {
+ kal_mem_set(test_file1, 0, sizeof(test_file1));
+ fread(test_file1, sizeof(test_file1), 1, file1);
+ fclose(file1);
+ kal_mem_set(test_file2, 0, sizeof(test_file2));
+ fread(test_file2, sizeof(test_file2), 1, file2);
+ fclose(file2);
+ } else {
+ mcf_ut_format_err_str("Merge OTA open file failed!!\r\n");
+ return KAL_FALSE;
+ }
+
+ // decrypt input file
+ file_header = (mcf_tool_file_info_t *)test_file1;
+ mcf_get_custom_aes_password(password);
+ if (mcf_decrypt_256bit(password, (kal_char *)file_header + file_header->total_len, (file_header->file_size - file_header->total_len)) != KAL_TRUE)
+ return KAL_FALSE;
+
+ file_header = (mcf_tool_file_info_t *)test_file2;
+ if (mcf_decrypt_256bit(password, (kal_char *)file_header + file_header->total_len, (file_header->file_size - file_header->total_len)) != KAL_TRUE)
+ return KAL_FALSE;
+
+ ret = mcf_merge_ota_buffer(test_file1, test_file2, output_file, sizeof(output_file));
+ if (ret == KAL_FALSE){
+ mcf_ut_format_err_str("Merge OTA buffer failed!!\r\n");
+ return KAL_FALSE;
+ }
+
+ // decrypt merge file
+ file_header = (mcf_tool_file_info_t *)output_file;
+ if (mcf_decrypt_256bit(password, (kal_char *)file_header + file_header->total_len, (file_header->file_size - file_header->total_len)) != KAL_TRUE)
+ return KAL_FALSE;
+
+ // checksum comparasion
+ {
+ mcf_tool_file_info_t *output_header = (mcf_tool_file_info_t *)output_file;
+ if (mcf_check_check_sum((kal_uint32 *)output_file, output_header->file_size) != 0) {
+ mcf_ut_format_err_str("Merge OTA buffer checksim failed!!\r\n");
+ return KAL_FALSE;
+ }
+ }
+
+ MCF_UT_PASS();
+ return KAL_TRUE;
+}
+kal_bool mcf_ut_combined_ota_file(void *p_param, kal_char *p_ret_err_str, kal_uint32 *p_ret_err_str_sz)
+{
+ mcf_t *pMcf = mcf_get_instance();
+ mcf_ota_file_t *ota_file = &(pMcf->ota_file);
+ mcf_tool_file_info_t *pFile = (mcf_tool_file_info_t *)(ota_file->buff);
+ nvram_ef_mcf_ota_file_info_struct nv_ota_file;
+ nvram_ef_mcf_sw_info_struct nv_sw_info;
+ kal_uint8 *lid_buffer;
+ nvram_ef_mcf_test_struct empty_buffer = {0};
+ mcf_ota_result_e mcf_ret;
+ kal_bool ret;
+ kal_uint32 i;
+ nvram_ef_mcf_test_struct nv_lid_buffer;
+ nvram_ef_mcf_test_struct test_lid_buffer;
+ l4c_mcf_set_config_req_struct *assigned_file_req;
+ l4c_mcf_set_config_req_struct *combined_file_req;
+ mcf_tool_gid_tlvota_file_item_t *pItem;
+ mcf_tlvota_file_t *tlvota_file;
+ nvram_ef_mcf_tlvota_file_info_struct nv_tlvota_file;
+ mcf_tlvota_sbp_tag_t sbp_tag;
+ sbp_reconfig_custom_param_struct param_ptr;
+
+
+ mcf_ut_init();
+
+ /*
+ * Merge two file positive test - Same path
+ */
+
+ /* Write MCF OTA file version to NVRAM */
+ kal_mem_set(&nv_ota_file, 0, sizeof(nvram_ef_mcf_ota_file_info_struct));
+ strncpy(nv_ota_file.path, MCF_FS_DEFAULT_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN);
+ strncpy(nv_ota_file.name, MCF_FS_DEFAULT_OTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN);
+ 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)) ) {
+ mcf_ut_format_err_str("Fail to write MCF OTA file info to NVRAM!!\r\n");
+ return KAL_FALSE;
+ }
+ kal_mem_set(&nv_sw_info, 0, sizeof(nvram_ef_mcf_sw_info_struct));
+ strncpy(nv_sw_info.last_update_file.sw_version, MCF_UT_SW_VERNO, MCF_FILE_MAX_SW_VERSION_LEN);
+ strncpy(nv_sw_info.last_update_file.gen_time, MCF_UT_GEN_TIME, MCF_FILE_MAX_GEN_TIME_LEN);
+ strcpy(nv_sw_info.last_update_file.path, "");
+ strcpy(nv_sw_info.last_update_file.name, "");
+ if ( !nvram_external_write_data(NVRAM_EF_MCF_SW_INFO_LID, 1, (kal_uint8 *)&nv_sw_info, sizeof(nvram_ef_mcf_sw_info_struct)) ) {
+ mcf_ut_format_err_str("Fail to write MCF sw info to NVRAM!!\r\n");
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(&mcf_last_mod_lid_g, 0, sizeof(nvram_mcf_lid_info_struct));
+ kal_mem_set(&mcf_curr_mod_lid_g, 0, sizeof(nvram_mcf_lid_info_struct));
+
+ assigned_file_req = (l4c_mcf_set_config_req_struct *)construct_local_para(sizeof(l4c_mcf_set_config_req_struct), TD_RESET);
+ assigned_file_req->op = L4C_MCF_CONFIG_ASSIGN_COMBINED_PATH;
+ assigned_file_req->config_type = L4C_MCF_CONFIG_TYPE_DEFAULT_BIN;
+ assigned_file_req->path_type = L4C_MCF_PATH_TYPE_RUNTIME;
+ strcpy(assigned_file_req->config1,"MCF_OTA_ut_merge.mcfota");
+
+ if(mcf_assign_combined_file_path(assigned_file_req) != MCF_OTA_R_SUCCESS){
+ mcf_ut_format_err_str("Assign combined OTA fail!! \r\n");
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)assigned_file_req);
+
+ /* First apply MCF_OTA_ut_gid_normal - reset */
+
+ combined_file_req = (l4c_mcf_set_config_req_struct *)construct_local_para(sizeof(l4c_mcf_set_config_req_struct), TD_RESET);
+ combined_file_req->op = L4C_MCF_CONFIG_SET_FILE_PATH_AND_AUTO_SELECT_BIN;
+ combined_file_req->config_type = L4C_MCF_CONFIG_TYPE_DEFAULT_BIN;
+ combined_file_req->path_type = L4C_MCF_PATH_TYPE_RUNTIME;
+ strcpy(combined_file_req->config1,"MCF_OTA_ut_normal.mcfota");
+ combined_file_req->reset = KAL_TRUE;
+
+ MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ if (ota_file) {
+ ret = mcf_ut_open_test_data("MCF_OTA_ut_gid_normal.mcfota", (kal_char *)(ota_file->buff), MCF_MAX_OTA_FILE_SIZE);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_OTA_ut_gid_normal.mcfota");
+ return KAL_FALSE;
+ }
+
+ MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Do full OTA FAIL!! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+
+ if(mcf_combined_ota_file(combined_file_req) != MCF_OTA_R_SUCCESS){
+ mcf_ut_format_err_str("Combine OTA fail!! \r\n");
+ return KAL_FALSE;
+ }
+
+ /* Second. apply MCF_OTA_QUERY_ut_gid_normal.mcfota - append */
+ combined_file_req->op = L4C_MCF_CONFIG_SET_FILE_PATH_AND_AUTO_SELECT_BIN;
+ combined_file_req->config_type = L4C_MCF_CONFIG_TYPE_DEFAULT_BIN;
+ combined_file_req->path_type = L4C_MCF_PATH_TYPE_RUNTIME;
+ strcpy(combined_file_req->config1,"MCF_OTA_QUERY_ut_gid_normal.mcfota");
+ combined_file_req->reset = KAL_FALSE;
+
+ if(mcf_combined_ota_file(combined_file_req) != MCF_OTA_R_SUCCESS){
+ mcf_ut_format_err_str("Combine OTA fail!! \r\n");
+ return KAL_FALSE;
+ }
+
+ MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ if (ota_file) {
+ kal_mem_cpy(mcf_file_buffer, ota_file->buff, MCF_MAX_OTA_FILE_SIZE);
+ MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Do full OTA FAIL!! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+
+ MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ if (ota_file) {
+ ret = mcf_ut_open_test_data("MCF_OTA_QUERY_ut_gid_normal.mcfota", (kal_char *)(ota_file->buff), MCF_MAX_OTA_FILE_SIZE);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_OTA_QUERY_ut_gid_normal.mcfota");
+ return KAL_FALSE;
+ }
+
+ MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Do full OTA FAIL!! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+
+ MCF_R_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ if (ota_file) {
+ if(mcf_merge_ota_buffer(mcf_file_buffer, ota_file->buff, mcf_merge_buffer, MCF_MAX_OTA_FILE_SIZE) != KAL_TRUE){
+ mcf_ut_format_err_str("Merge OTA file FAIL!!\r\n");
+ ret = KAL_FALSE;
+ MCF_R_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ return ret;
+ }
+ MCF_R_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ }
+
+ free_local_para((local_para_struct *)combined_file_req);
+
+ 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)) ) {
+ mcf_ut_format_err_str("Fail to write MCF OTA file info to NVRAM!!\r\n");
+ return KAL_FALSE;
+ }
+
+ if(strcmp(nv_ota_file.path,MCF_FS_CUSTOM_FOLDER_PATH) != 0){
+ mcf_ut_format_err_str("Fail to store file path!!\r\n");
+ return KAL_FALSE;
+ }
+
+ if(strcmp(nv_ota_file.name,"MCF_OTA_ut_merge.mcfota") != 0){
+ mcf_ut_format_err_str("Fail to store file name!!\r\n");
+ return KAL_FALSE;
+ }
+
+ MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ if (ota_file) {
+ kal_mem_cpy((kal_char *)(ota_file->buff), mcf_merge_buffer, MCF_MAX_OTA_FILE_SIZE);
+ MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Do full OTA FAIL!! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+
+ mcf_ret = mcf_do_ota_full();
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Do full OTA FAIL!! ret(%d) \r\n", mcf_ret);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_test_lid_value(NULL);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Do full OTA positive test (Both SW verno of file and MD mismatch) FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+
+ //first reset NVRAM_EF_MCF_TEST_OTA_LID
+ ret = mcf_check_lid_need_reset(NVRAM_EF_MCF_TEST_OTA_LID);
+ if (ret != KAL_TRUE) {
+ mcf_ut_format_err_str("Check LID need reset FAIL!! ret(%d), LID(%d) \r\n", ret, NVRAM_EF_MCF_TEST_OTA_LID);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_lid_need_reset(NVRAM_EF_MCF_TEST_OTA_QUERY_LID);
+ if (ret != KAL_FALSE) {
+ 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);
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(&test_lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
+
+ 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));
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Read OTA by LID FAIL!! ret(%d) \r\n", mcf_ret);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_test_lid_value((kal_uint8 *)&test_lid_buffer);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Read OTA by LID positive test FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+
+ /*
+ * Merge two file positive test - different path
+ */
+
+ /* Write MCF OTA file version to NVRAM */
+ kal_mem_set(&nv_ota_file, 0, sizeof(nvram_ef_mcf_ota_file_info_struct));
+ strncpy(nv_ota_file.path, MCF_FS_DEFAULT_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN);
+ strncpy(nv_ota_file.name, MCF_FS_DEFAULT_OTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN);
+ 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)) ) {
+ mcf_ut_format_err_str("Fail to write MCF OTA file info to NVRAM!!\r\n");
+ return KAL_FALSE;
+ }
+ kal_mem_set(&nv_sw_info, 0, sizeof(nvram_ef_mcf_sw_info_struct));
+ strncpy(nv_sw_info.last_update_file.sw_version, MCF_UT_SW_VERNO, MCF_FILE_MAX_SW_VERSION_LEN);
+ strncpy(nv_sw_info.last_update_file.gen_time, MCF_UT_GEN_TIME, MCF_FILE_MAX_GEN_TIME_LEN);
+ strcpy(nv_sw_info.last_update_file.path, "");
+ strcpy(nv_sw_info.last_update_file.name, "");
+ if ( !nvram_external_write_data(NVRAM_EF_MCF_SW_INFO_LID, 1, (kal_uint8 *)&nv_sw_info, sizeof(nvram_ef_mcf_sw_info_struct)) ) {
+ mcf_ut_format_err_str("Fail to write MCF sw info to NVRAM!!\r\n");
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(&mcf_last_mod_lid_g, 0, sizeof(nvram_mcf_lid_info_struct));
+ kal_mem_set(&mcf_curr_mod_lid_g, 0, sizeof(nvram_mcf_lid_info_struct));
+
+ /* Reset NVRAM_EF_MCF_INTERNAL_INFO_LID */
+ kal_mem_set(&nv_int_info, 0, sizeof(nvram_ef_mcf_internal_info_struct));
+ if ( !nvram_external_write_data(NVRAM_EF_MCF_INTERNAL_INFO_LID, 1, (kal_uint8 *)&nv_int_info, sizeof(nvram_ef_mcf_internal_info_struct)) ) {
+ mcf_ut_format_err_str("Fail to write NVRAM_EF_MCF_INTERNAL_INFO_LID to NVRAM!!\r\n");
+ return KAL_FALSE;
+ }
+
+ assigned_file_req = (l4c_mcf_set_config_req_struct *)construct_local_para(sizeof(l4c_mcf_set_config_req_struct), TD_RESET);
+ assigned_file_req->op = L4C_MCF_CONFIG_ASSIGN_COMBINED_PATH;
+ assigned_file_req->config_type = L4C_MCF_CONFIG_TYPE_DEFAULT_BIN;
+ assigned_file_req->path_type = L4C_MCF_PATH_TYPE_RUNTIME;
+ strcpy(assigned_file_req->config1,"MCF_OTA_ut_merge.mcfota");
+
+ if(mcf_assign_combined_file_path(assigned_file_req) != MCF_OTA_R_SUCCESS){
+ mcf_ut_format_err_str("Assign combined OTA fail!! \r\n");
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)assigned_file_req);
+
+ /* First apply MCF_OTA_ut_gid_normal - reset */
+
+ combined_file_req = (l4c_mcf_set_config_req_struct *)construct_local_para(sizeof(l4c_mcf_set_config_req_struct), TD_RESET);
+ combined_file_req->op = L4C_MCF_CONFIG_SET_FILE_PATH_AND_AUTO_SELECT_BIN;
+ combined_file_req->config_type = L4C_MCF_CONFIG_TYPE_DEFAULT_BIN;
+ combined_file_req->path_type = L4C_MCF_PATH_TYPE_RUNTIME;
+ strcpy(combined_file_req->config1,"MCF_OTA_ut_normal.mcfota");
+ combined_file_req->reset = KAL_TRUE;
+
+ MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ if (ota_file) {
+ ret = mcf_ut_open_test_data("MCF_OTA_ut_gid_normal.mcfota", (kal_char *)(ota_file->buff), MCF_MAX_OTA_FILE_SIZE);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_OTA_ut_gid_normal.mcfota");
+ return KAL_FALSE;
+ }
+
+ MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Do full OTA FAIL!! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+
+ if(mcf_combined_ota_file(combined_file_req) != MCF_OTA_R_SUCCESS){
+ mcf_ut_format_err_str("Combine OTA fail!! \r\n");
+ return KAL_FALSE;
+ }
+
+ /* Second. apply MCF_OTA_QUERY_ut_gid_normal.mcfota - append */
+ combined_file_req->op = L4C_MCF_CONFIG_SET_FILE_PATH_AND_AUTO_SELECT_BIN;
+ combined_file_req->config_type = L4C_MCF_CONFIG_TYPE_DEFAULT_BIN;
+ combined_file_req->path_type = L4C_MCF_PATH_TYPE_RUNTIME;
+ strcpy(combined_file_req->config1,"MCF_OTA_QUERY_ut_gid_normal.mcfota");
+ combined_file_req->reset = KAL_FALSE;
+
+ if(mcf_combined_ota_file(combined_file_req) != MCF_OTA_R_SUCCESS){
+ mcf_ut_format_err_str("Combine OTA fail!! \r\n");
+ return KAL_FALSE;
+ }
+
+ MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ if (ota_file) {
+ kal_mem_cpy(mcf_file_buffer, ota_file->buff, MCF_MAX_OTA_FILE_SIZE);
+ MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Do full OTA FAIL!! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+
+ MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ if (ota_file) {
+ ret = mcf_ut_open_test_data("MCF_OTA_QUERY_ut_gid_normal.mcfota", (kal_char *)(ota_file->buff), MCF_MAX_OTA_FILE_SIZE);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_OTA_QUERY_ut_gid_normal.mcfota");
+ return KAL_FALSE;
+ }
+
+ MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Do full OTA FAIL!! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+
+ MCF_R_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ if (ota_file) {
+ if(mcf_merge_ota_buffer(mcf_file_buffer, ota_file->buff, mcf_merge_buffer, MCF_MAX_OTA_FILE_SIZE) != KAL_TRUE){
+ mcf_ut_format_err_str("Merge OTA file FAIL!!\r\n");
+ ret = KAL_FALSE;
+ MCF_R_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ return ret;
+ }
+ MCF_R_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ }
+
+ free_local_para((local_para_struct *)combined_file_req);
+
+ 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)) ) {
+ mcf_ut_format_err_str("Fail to write MCF OTA file info to NVRAM!!\r\n");
+ return KAL_FALSE;
+ }
+
+ if(strcmp(nv_ota_file.path,MCF_FS_CUSTOM_FOLDER_PATH) != 0){
+ mcf_ut_format_err_str("Fail to store file path!!\r\n");
+ return KAL_FALSE;
+ }
+
+ if(strcmp(nv_ota_file.name,"MCF_OTA_ut_merge.mcfota") != 0){
+ mcf_ut_format_err_str("Fail to store file name!!\r\n");
+ return KAL_FALSE;
+ }
+
+ MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ if (ota_file) {
+ kal_mem_cpy((kal_char *)(ota_file->buff), mcf_merge_buffer, MCF_MAX_OTA_FILE_SIZE);
+ MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Do full OTA FAIL!! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+
+ mcf_ret = mcf_do_ota_full();
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Do full OTA FAIL!! ret(%d) \r\n", mcf_ret);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_test_lid_value(NULL);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Do full OTA positive test (Both SW verno of file and MD mismatch) FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+
+ //first reset, second append
+ ret = mcf_check_lid_need_reset(NVRAM_EF_MCF_TEST_OTA_LID);
+ if (ret != KAL_TRUE) {
+ mcf_ut_format_err_str("Check LID need reset FAIL!! ret(%d), LID(%d) \r\n", ret, NVRAM_EF_MCF_TEST_OTA_LID);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_lid_need_reset(NVRAM_EF_MCF_TEST_OTA_QUERY_LID);
+ if (ret != KAL_FALSE) {
+ mcf_ut_format_err_str("Check LID need reset FAIL!! ret(%d), LID(%d) \r\n", ret, NVRAM_EF_IMS_PROFILE_LID);
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(&test_lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
+
+ 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));
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Read OTA by LID FAIL!! ret(%d) \r\n", mcf_ret);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_test_lid_value((kal_uint8 *)&test_lid_buffer);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Read OTA by LID positive test FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+
+ /*
+ * Merge two file positive test - Same path - both of reset
+ */
+
+ /* Write MCF OTA file version to NVRAM */
+ kal_mem_set(&nv_ota_file, 0, sizeof(nvram_ef_mcf_ota_file_info_struct));
+ strncpy(nv_ota_file.path, MCF_FS_DEFAULT_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN);
+ strncpy(nv_ota_file.name, MCF_FS_DEFAULT_OTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN);
+ 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)) ) {
+ mcf_ut_format_err_str("Fail to write MCF OTA file info to NVRAM!!\r\n");
+ return KAL_FALSE;
+ }
+ kal_mem_set(&nv_sw_info, 0, sizeof(nvram_ef_mcf_sw_info_struct));
+ strncpy(nv_sw_info.last_update_file.sw_version, MCF_UT_SW_VERNO, MCF_FILE_MAX_SW_VERSION_LEN);
+ strncpy(nv_sw_info.last_update_file.gen_time, MCF_UT_GEN_TIME, MCF_FILE_MAX_GEN_TIME_LEN);
+ strcpy(nv_sw_info.last_update_file.path, "");
+ strcpy(nv_sw_info.last_update_file.name, "");
+ if ( !nvram_external_write_data(NVRAM_EF_MCF_SW_INFO_LID, 1, (kal_uint8 *)&nv_sw_info, sizeof(nvram_ef_mcf_sw_info_struct)) ) {
+ mcf_ut_format_err_str("Fail to write MCF sw info to NVRAM!!\r\n");
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(&mcf_last_mod_lid_g, 0, sizeof(nvram_mcf_lid_info_struct));
+ kal_mem_set(&mcf_curr_mod_lid_g, 0, sizeof(nvram_mcf_lid_info_struct));
+
+ /* Reset NVRAM_EF_MCF_INTERNAL_INFO_LID */
+ kal_mem_set(&nv_int_info, 0, sizeof(nvram_ef_mcf_internal_info_struct));
+ if ( !nvram_external_write_data(NVRAM_EF_MCF_INTERNAL_INFO_LID, 1, (kal_uint8 *)&nv_int_info, sizeof(nvram_ef_mcf_internal_info_struct)) ) {
+ mcf_ut_format_err_str("Fail to write NVRAM_EF_MCF_INTERNAL_INFO_LID to NVRAM!!\r\n");
+ return KAL_FALSE;
+ }
+
+ /* Reset NVRAM_EF_MCF_INTERNAL_INFO_LID */
+ kal_mem_set(&nv_int_info, 0, sizeof(nvram_ef_mcf_internal_info_struct));
+
+ assigned_file_req = (l4c_mcf_set_config_req_struct *)construct_local_para(sizeof(l4c_mcf_set_config_req_struct), TD_RESET);
+ assigned_file_req->op = L4C_MCF_CONFIG_ASSIGN_COMBINED_PATH;
+ assigned_file_req->config_type = L4C_MCF_CONFIG_TYPE_DEFAULT_BIN;
+ assigned_file_req->path_type = L4C_MCF_PATH_TYPE_RUNTIME;
+ strcpy(assigned_file_req->config1,"MCF_OTA_ut_merge.mcfota");
+
+ if(mcf_assign_combined_file_path(assigned_file_req) != MCF_OTA_R_SUCCESS){
+ mcf_ut_format_err_str("Assign combined OTA fail!! \r\n");
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)assigned_file_req);
+
+ /* First. apply MCF_OTA_QUERY_ut_gid_normal.mcfota - reset */
+ combined_file_req = (l4c_mcf_set_config_req_struct *)construct_local_para(sizeof(l4c_mcf_set_config_req_struct), TD_RESET);
+ combined_file_req->op = L4C_MCF_CONFIG_SET_FILE_PATH_AND_AUTO_SELECT_BIN;
+ combined_file_req->config_type = L4C_MCF_CONFIG_TYPE_DEFAULT_BIN;
+ combined_file_req->path_type = L4C_MCF_PATH_TYPE_RUNTIME;
+ strcpy(combined_file_req->config1,"MCF_OTA_QUERY_ut_gid_normal.mcfota");
+ combined_file_req->reset = KAL_TRUE;
+
+ MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ if (ota_file) {
+ ret = mcf_ut_open_test_data("MCF_OTA_QUERY_ut_gid_normal.mcfota", (kal_char *)(ota_file->buff), MCF_MAX_OTA_FILE_SIZE);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_OTA_QUERY_ut_gid_normal.mcfota");
+ return KAL_FALSE;
+ }
+
+ MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Do full OTA FAIL!! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+
+ if(mcf_combined_ota_file(combined_file_req) != MCF_OTA_R_SUCCESS){
+ mcf_ut_format_err_str("Combine OTA fail!! \r\n");
+ return KAL_FALSE;
+ }
+
+ /* Second apply MCF_OTA_ut_gid_normal - reset */
+
+ combined_file_req->op = L4C_MCF_CONFIG_SET_FILE_PATH_AND_AUTO_SELECT_BIN;
+ combined_file_req->config_type = L4C_MCF_CONFIG_TYPE_DEFAULT_BIN;
+ combined_file_req->path_type = L4C_MCF_PATH_TYPE_RUNTIME;
+ strcpy(combined_file_req->config1,"MCF_OTA_ut_gid_normal.mcfota");
+ combined_file_req->reset = KAL_TRUE;
+
+ MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ if (ota_file) {
+ ret = mcf_ut_open_test_data("MCF_OTA_ut_gid_normal.mcfota", (kal_char *)(ota_file->buff), MCF_MAX_OTA_FILE_SIZE);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_OTA_ut_gid_normal.mcfota");
+ return KAL_FALSE;
+ }
+
+ MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Do full OTA FAIL!! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+
+ if(mcf_combined_ota_file(combined_file_req) != MCF_OTA_R_SUCCESS){
+ mcf_ut_format_err_str("Combine OTA fail!! \r\n");
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)combined_file_req);
+
+ 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)) ) {
+ mcf_ut_format_err_str("Fail to write MCF OTA file info to NVRAM!!\r\n");
+ return KAL_FALSE;
+ }
+
+ if(strcmp(nv_ota_file.path,MCF_FS_CUSTOM_FOLDER_PATH) != 0){
+ mcf_ut_format_err_str("Fail to store file path!!\r\n");
+ return KAL_FALSE;
+ }
+
+ if(strcmp(nv_ota_file.name,"MCF_OTA_ut_gid_normal.mcfota") != 0){
+ mcf_ut_format_err_str("Fail to store file name!!\r\n");
+ return KAL_FALSE;
+ }
+
+ MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ if (ota_file) {
+ ret = mcf_ut_open_test_data("MCF_OTA_ut_gid_normal.mcfota", (kal_char *)(ota_file->buff), MCF_MAX_OTA_FILE_SIZE);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_OTA_ut_gid_normal.mcfota");
+ return KAL_FALSE;
+ }
+
+ MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Do full OTA FAIL!! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+
+ mcf_ret = mcf_do_ota_full();
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Do full OTA FAIL!! ret(%d) \r\n", mcf_ret);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_test_lid_value(NULL);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Do full OTA positive test (Both SW verno of file and MD mismatch) FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+
+ //Due to reset, need to reset
+
+ ret = mcf_check_lid_need_reset(NVRAM_EF_MCF_TEST_OTA_LID);
+ if (ret != KAL_TRUE) {
+ mcf_ut_format_err_str("Check LID need reset FAIL!! ret(%d), LID(%d) \r\n", ret, NVRAM_EF_MCF_TEST_OTA_LID);
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(&test_lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
+
+ 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));
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Read OTA by LID FAIL!! ret(%d) \r\n", mcf_ret);
+ return KAL_FALSE;
+ }
+
+ if (kal_mem_cmp(&test_lid_buffer, &empty_buffer, sizeof(nvram_ef_mcf_test_struct)) != 0) {
+ mcf_ut_format_err_str("Reset LID FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+
+ /*
+ * Merge two file positive test - Same path - both of append
+ */
+
+ /* Write MCF OTA file version to NVRAM */
+ kal_mem_set(&nv_ota_file, 0, sizeof(nvram_ef_mcf_ota_file_info_struct));
+ strncpy(nv_ota_file.path, MCF_FS_DEFAULT_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN);
+ strncpy(nv_ota_file.name, MCF_FS_DEFAULT_OTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN);
+ 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)) ) {
+ mcf_ut_format_err_str("Fail to write MCF OTA file info to NVRAM!!\r\n");
+ return KAL_FALSE;
+ }
+ kal_mem_set(&nv_sw_info, 0, sizeof(nvram_ef_mcf_sw_info_struct));
+ strncpy(nv_sw_info.last_update_file.sw_version, MCF_UT_SW_VERNO, MCF_FILE_MAX_SW_VERSION_LEN);
+ strncpy(nv_sw_info.last_update_file.gen_time, MCF_UT_GEN_TIME, MCF_FILE_MAX_GEN_TIME_LEN);
+ strcpy(nv_sw_info.last_update_file.path, "");
+ strcpy(nv_sw_info.last_update_file.name, "");
+ if ( !nvram_external_write_data(NVRAM_EF_MCF_SW_INFO_LID, 1, (kal_uint8 *)&nv_sw_info, sizeof(nvram_ef_mcf_sw_info_struct)) ) {
+ mcf_ut_format_err_str("Fail to write MCF sw info to NVRAM!!\r\n");
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(&mcf_last_mod_lid_g, 0, sizeof(nvram_mcf_lid_info_struct));
+ kal_mem_set(&mcf_curr_mod_lid_g, 0, sizeof(nvram_mcf_lid_info_struct));
+
+ /* Reset NVRAM_EF_MCF_INTERNAL_INFO_LID */
+ kal_mem_set(&nv_int_info, 0, sizeof(nvram_ef_mcf_internal_info_struct));
+ if ( !nvram_external_write_data(NVRAM_EF_MCF_INTERNAL_INFO_LID, 1, (kal_uint8 *)&nv_int_info, sizeof(nvram_ef_mcf_internal_info_struct)) ) {
+ mcf_ut_format_err_str("Fail to write NVRAM_EF_MCF_INTERNAL_INFO_LID to NVRAM!!\r\n");
+ return KAL_FALSE;
+ }
+
+ assigned_file_req = (l4c_mcf_set_config_req_struct *)construct_local_para(sizeof(l4c_mcf_set_config_req_struct), TD_RESET);
+ assigned_file_req->op = L4C_MCF_CONFIG_ASSIGN_COMBINED_PATH;
+ assigned_file_req->config_type = L4C_MCF_CONFIG_TYPE_DEFAULT_BIN;
+ assigned_file_req->path_type = L4C_MCF_PATH_TYPE_RUNTIME;
+ strcpy(assigned_file_req->config1,"MCF_OTA_ut_merge.mcfota");
+
+ if(mcf_assign_combined_file_path(assigned_file_req) != MCF_OTA_R_SUCCESS){
+ mcf_ut_format_err_str("Assign combined OTA fail!! \r\n");
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)assigned_file_req);
+
+ MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ if (ota_file) {
+ kal_mem_set(ota_file->buff, 0, MCF_MAX_OTA_FILE_SIZE);
+
+ MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Do full OTA FAIL!! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+
+ /* First. apply MCF_OTA_QUERY_ut_gid_normal.mcfota - append */
+ combined_file_req = (l4c_mcf_set_config_req_struct *)construct_local_para(sizeof(l4c_mcf_set_config_req_struct), TD_RESET);
+ combined_file_req->op = L4C_MCF_CONFIG_SET_FILE_PATH_AND_AUTO_SELECT_BIN;
+ combined_file_req->config_type = L4C_MCF_CONFIG_TYPE_DEFAULT_BIN;
+ combined_file_req->path_type = L4C_MCF_PATH_TYPE_RUNTIME;
+ strcpy(combined_file_req->config1,"MCF_OTA_QUERY_ut_gid_normal.mcfota");
+ combined_file_req->reset = KAL_FALSE;
+
+ MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ if (ota_file) {
+ ret = mcf_ut_open_test_data("MCF_OTA_QUERY_ut_gid_normal.mcfota", (kal_char *)(ota_file->buff), MCF_MAX_OTA_FILE_SIZE);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_OTA_QUERY_ut_gid_normal.mcfota");
+ return KAL_FALSE;
+ }
+
+ MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Do full OTA FAIL!! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+
+ if(mcf_combined_ota_file(combined_file_req) != MCF_OTA_R_SUCCESS){
+ mcf_ut_format_err_str("Combine OTA fail!! \r\n");
+ return KAL_FALSE;
+ }
+
+ /* Second apply MCF_OTA_ut_gid_normal - append */
+
+ combined_file_req->op = L4C_MCF_CONFIG_SET_FILE_PATH_AND_AUTO_SELECT_BIN;
+ combined_file_req->config_type = L4C_MCF_CONFIG_TYPE_DEFAULT_BIN;
+ combined_file_req->path_type = L4C_MCF_PATH_TYPE_RUNTIME;
+ strcpy(combined_file_req->config1,"MCF_OTA_ut_normal.mcfota");
+ combined_file_req->reset = KAL_FALSE;
+
+
+ if(mcf_combined_ota_file(combined_file_req) != MCF_OTA_R_SUCCESS){
+ mcf_ut_format_err_str("Combine OTA fail!! \r\n");
+ return KAL_FALSE;
+ }
+
+ MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ if (ota_file) {
+ kal_mem_cpy(mcf_file_buffer, ota_file->buff, MCF_MAX_OTA_FILE_SIZE);
+ MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Do full OTA FAIL!! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+
+ MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ if (ota_file) {
+ ret = mcf_ut_open_test_data("MCF_OTA_ut_gid_normal.mcfota", (kal_char *)(ota_file->buff), MCF_MAX_OTA_FILE_SIZE);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_OTA_ut_gid_normal.mcfota");
+ return KAL_FALSE;
+ }
+
+ MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Do full OTA FAIL!! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+
+ MCF_R_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ if (ota_file) {
+ if(mcf_merge_ota_buffer(mcf_file_buffer, ota_file->buff, mcf_merge_buffer, MCF_MAX_OTA_FILE_SIZE) != KAL_TRUE){
+ mcf_ut_format_err_str("Merge OTA file FAIL!!\r\n");
+ ret = KAL_FALSE;
+ MCF_R_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ return ret;
+ }
+ MCF_R_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ }
+
+ free_local_para((local_para_struct *)combined_file_req);
+
+ 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)) ) {
+ mcf_ut_format_err_str("Fail to write MCF OTA file info to NVRAM!!\r\n");
+ return KAL_FALSE;
+ }
+
+ if(strcmp(nv_ota_file.path,MCF_FS_CUSTOM_FOLDER_PATH) != 0){
+ mcf_ut_format_err_str("Fail to store file path!!\r\n");
+ return KAL_FALSE;
+ }
+
+ if(strcmp(nv_ota_file.name,"MCF_OTA_ut_merge.mcfota") != 0){
+ mcf_ut_format_err_str("Fail to store file name!!\r\n");
+ return KAL_FALSE;
+ }
+
+ MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ if (ota_file) {
+ kal_mem_cpy((kal_char *)(ota_file->buff), mcf_merge_buffer, MCF_MAX_OTA_FILE_SIZE);
+ MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Do full OTA FAIL!! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+
+ mcf_ret = mcf_do_ota_full();
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Do full OTA FAIL!! ret(%d) \r\n", mcf_ret);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_test_lid_value(NULL);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Do full OTA positive test (Both SW verno of file and MD mismatch) FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+
+ //Due to append, no need to reset
+ ret = mcf_check_lid_need_reset(NVRAM_EF_MCF_TEST_OTA_LID);
+ if (ret != KAL_FALSE) {
+ 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);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_lid_need_reset(NVRAM_EF_MCF_TEST_OTA_QUERY_LID);
+ if (ret != KAL_FALSE) {
+ 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);
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(&test_lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
+
+ 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));
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Read OTA by LID FAIL!! ret(%d) \r\n", mcf_ret);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_test_lid_value((kal_uint8 *)&test_lid_buffer);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Read OTA by LID positive test FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+
+ //Deactive combine OTA
+ combined_file_req = (l4c_mcf_set_config_req_struct *)construct_local_para(sizeof(l4c_mcf_set_config_req_struct), TD_RESET);
+ combined_file_req->op = L4C_MCF_CONFIG_SET_FILE_PATH_AND_AUTO_SELECT_BIN;
+ combined_file_req->config_type = L4C_MCF_CONFIG_TYPE_DEFAULT_BIN;
+ combined_file_req->path_type = L4C_MCF_PATH_TYPE_RUNTIME;
+ strcpy(combined_file_req->config1,"");
+ combined_file_req->reset = KAL_FALSE;
+
+
+ if(mcf_combined_ota_file(combined_file_req) != MCF_OTA_R_SUCCESS){
+ mcf_ut_format_err_str("Combine OTA fail!! \r\n");
+ return KAL_FALSE;
+ }
+
+ MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ if (ota_file) {
+ ret = mcf_ut_open_test_data("MCF_OTA_ut_gid_normal.mcfota", (kal_char *)(ota_file->buff), MCF_MAX_OTA_FILE_SIZE);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_OTA_ut_gid_normal.mcfota");
+ return KAL_FALSE;
+ }
+
+ MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Do full OTA FAIL!! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)combined_file_req);
+
+ 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)) ) {
+ mcf_ut_format_err_str("Fail to write MCF OTA file info to NVRAM!!\r\n");
+ return KAL_FALSE;
+ }
+
+ if(strcmp(nv_ota_file.path,"") != 0){
+ mcf_ut_format_err_str("Fail to store file path!!\r\n");
+ return KAL_FALSE;
+ }
+
+ if(strcmp(nv_ota_file.name,"") != 0){
+ mcf_ut_format_err_str("Fail to store file name!!\r\n");
+ return KAL_FALSE;
+ }
+
+ mcf_ret = mcf_do_ota_full();
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Do full OTA FAIL!! ret(%d) \r\n", mcf_ret);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_test_lid_value(NULL);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Do full OTA positive test (Both SW verno of file and MD mismatch) FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_lid_need_reset(NVRAM_EF_MCF_TEST_OTA_LID);
+ if (ret != KAL_TRUE) {
+ 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);
+ return KAL_FALSE;
+ }
+
+
+ /*
+ * Read TLV-OTA by LID & sbp_tag positive test - partially matched tag
+ * NVRAM_EF_MCF_TEST_OTA_LID with tag SBP_PARTIAL_TAG (12_NA_NA), but user searches SBP_FULL_TAG (12_33_21)
+ */
+ /* Fill TLV-OTA file into buffer */
+ /*Merge two OP-OTA file positive test - Same path */
+
+ /* Write MCF TLV-OTA file version to NVRAM */
+ kal_mem_set(&nv_tlvota_file, 0, sizeof(nvram_ef_mcf_tlvota_file_info_struct));
+ strncpy(nv_tlvota_file.path, MCF_FS_DEFAULT_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN);
+ strncpy(nv_tlvota_file.name, MCF_FS_DEFAULT_TLVOTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN);
+ 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)) ) {
+ mcf_ut_format_err_str("Fail to write MCF TLV-OTA file info to NVRAM!!\r\n");
+ return KAL_FALSE;
+ }
+
+ /* Reset NVRAM_EF_MCF_INTERNAL_INFO_LID */
+ kal_mem_set(&nv_int_info, 0, sizeof(nvram_ef_mcf_internal_info_struct));
+ if ( !nvram_external_write_data(NVRAM_EF_MCF_INTERNAL_INFO_LID, 1, (kal_uint8 *)&nv_int_info, sizeof(nvram_ef_mcf_internal_info_struct)) ) {
+ mcf_ut_format_err_str("Fail to write NVRAM_EF_MCF_INTERNAL_INFO_LID to NVRAM!!\r\n");
+ return KAL_FALSE;
+ }
+
+ /*Assign merged file name*/
+ assigned_file_req = (l4c_mcf_set_config_req_struct *)construct_local_para(sizeof(l4c_mcf_set_config_req_struct), TD_RESET);
+ assigned_file_req->op = L4C_MCF_CONFIG_ASSIGN_COMBINED_PATH;
+ assigned_file_req->config_type = L4C_MCF_CONFIG_TYPE_CARRIER_BIN;
+ assigned_file_req->path_type = L4C_MCF_PATH_TYPE_RUNTIME;
+ strcpy(assigned_file_req->config1,"MCF_OPOTA_ut_merge.mcfopota");
+
+ if(mcf_assign_combined_file_path(assigned_file_req) != MCF_OTA_R_SUCCESS){
+ mcf_ut_format_err_str("Assign combined OTA fail!! \r\n");
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)assigned_file_req);
+
+ /* First. apply MCF_TLVOTA_SBP_partial_ut_gid_normal.mcfopota - reset */
+ combined_file_req = (l4c_mcf_set_config_req_struct *)construct_local_para(sizeof(l4c_mcf_set_config_req_struct), TD_RESET);
+ combined_file_req->op = L4C_MCF_CONFIG_SET_FILE_PATH_AND_AUTO_SELECT_BIN;
+ combined_file_req->config_type = L4C_MCF_CONFIG_TYPE_CARRIER_BIN;
+ combined_file_req->path_type = L4C_MCF_PATH_TYPE_RUNTIME;
+ strcpy(combined_file_req->config1,"MCF_TLVOTA_SBP_partial_ut_gid_normal.mcfopota");
+ combined_file_req->reset = KAL_TRUE;
+
+ tlvota_file = &(pMcf->tlvota_file[0]);
+
+ MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ if (tlvota_file) {
+ pFile = (mcf_tool_file_info_t *)(tlvota_file->buff);
+ pItem = (mcf_tool_gid_tlvota_file_item_t *)(tlvota_file->buff + sizeof(mcf_tool_file_info_t));
+
+ ret = mcf_ut_open_test_data("MCF_TLVOTA_SBP_partial_ut_gid_normal.mcfopota", (kal_char *)(tlvota_file->buff), MCF_MAX_TLVOTA_FILE_SIZE);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_TLVOTA_SBP_partial_ut_gid_normal.mcfopota");
+ return KAL_FALSE;
+ }
+
+ MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+
+ if(mcf_combined_ota_file(combined_file_req) != MCF_OTA_R_SUCCESS){
+ mcf_ut_format_err_str("Combine OTA fail!! \r\n");
+ return KAL_FALSE;
+ }
+
+
+ /* Second. apply MCF_TLVOTA_SBP_full_ut_gid_query_normal.mcfopota - append */
+ combined_file_req->op = L4C_MCF_CONFIG_SET_FILE_PATH_AND_AUTO_SELECT_BIN;
+ combined_file_req->config_type = L4C_MCF_CONFIG_TYPE_CARRIER_BIN;
+ combined_file_req->path_type = L4C_MCF_PATH_TYPE_RUNTIME;
+ strcpy(combined_file_req->config1,"MCF_TLVOTA_SBP_full_ut_gid_query_normal.mcfopota");
+ combined_file_req->reset = KAL_FALSE;
+
+ tlvota_file = &(pMcf->tlvota_file[0]);
+
+ if(mcf_combined_ota_file(combined_file_req) != MCF_OTA_R_SUCCESS){
+ mcf_ut_format_err_str("Combine OTA fail!! \r\n");
+ return KAL_FALSE;
+ }
+
+ //Due to append, no need to reset
+ ret = mcf_check_lid_need_reset_by_psid(NVRAM_EF_MCF_TEST_OTA_LID, 0);
+ if (ret != KAL_FALSE) {
+ 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);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_lid_need_reset_by_psid(NVRAM_EF_MCF_TEST_OTA_QUERY_LID, 0);
+ if (ret != KAL_FALSE) {
+ 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);
+ return KAL_FALSE;
+ }
+
+
+ MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ if (tlvota_file) {
+ kal_mem_cpy(mcf_file_buffer, (kal_char *)(tlvota_file->buff), MCF_MAX_TLVOTA_FILE_SIZE);
+
+ MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+
+ MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ if (tlvota_file) {
+ pFile = (mcf_tool_file_info_t *)(tlvota_file->buff);
+ pItem = (mcf_tool_gid_tlvota_file_item_t *)(tlvota_file->buff + sizeof(mcf_tool_file_info_t));
+
+ 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);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_TLVOTA_SBP_full_ut_gid_query_normal.mcfopota");
+ return KAL_FALSE;
+ }
+
+ MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+
+ MCF_R_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ if (tlvota_file) {
+ if(mcf_merge_ota_buffer(mcf_file_buffer, tlvota_file->buff, mcf_merge_buffer, MCF_MAX_TLVOTA_FILE_SIZE) != KAL_TRUE){
+ //XXX
+ ret = MCF_OTA_R_INVALID_PARAMETER;
+ MCF_R_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ return ret;
+ }
+ MCF_R_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ }
+
+ free_local_para((local_para_struct *)combined_file_req);
+
+ 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)) ) {
+ mcf_ut_format_err_str("Fail to write MCF TLVOTA file info to NVRAM!!\r\n");
+ return KAL_FALSE;
+ }
+
+ if(strcmp(nv_tlvota_file.path,MCF_FS_CUSTOM_FOLDER_PATH) != 0){
+ mcf_ut_format_err_str("Fail to store file path!!\r\n");
+ return KAL_FALSE;
+ }
+
+ if(strcmp(nv_tlvota_file.name,"MCF_OPOTA_ut_merge.mcfopota") != 0){
+ mcf_ut_format_err_str("Fail to store file name!!\r\n");
+ return KAL_FALSE;
+ }
+
+ MCF_R_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ if (tlvota_file) {
+ kal_mem_cpy(tlvota_file->buff, mcf_merge_buffer, MCF_MAX_TLVOTA_FILE_SIZE);
+ MCF_R_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ }
+
+ // NVRAM_EF_MCF_TEST_OTA_LID with SBP_PARTIAL_TAG
+ kal_mem_set(&sbp_tag, 0, sizeof(mcf_tlvota_sbp_tag_t));
+ sbp_tag.sbp_id = SBP_TAG_SBPID;
+ strncpy(sbp_tag.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
+ strncpy(sbp_tag.mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
+
+
+ kal_mem_set(&test_lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
+
+ 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));
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! i(%d), ret(%d) \r\n", 0, mcf_ret);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_test_lid_value((kal_uint8 *)&test_lid_buffer);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag positive test (partially matched tag) FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(&test_lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
+
+ 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));
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! i(%d), ret(%d) \r\n", 0, mcf_ret);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_test_lid_value((kal_uint8 *)&test_lid_buffer);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag positive test (partially matched tag) FAIL!!\r\n");
+ return KAL_FALSE;
+ }
+
+ /* Test By OP merged reset */
+
+ /* Write MCF TLV-OTA file version to NVRAM */
+ kal_mem_set(&nv_tlvota_file, 0, sizeof(nvram_ef_mcf_tlvota_file_info_struct));
+ strncpy(nv_tlvota_file.path, MCF_FS_DEFAULT_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN);
+ strncpy(nv_tlvota_file.name, MCF_FS_DEFAULT_TLVOTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN);
+ 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)) ) {
+ mcf_ut_format_err_str("Fail to write MCF TLV-OTA file info to NVRAM!!\r\n");
+ return KAL_FALSE;
+ }
+
+ /* Reset NVRAM_EF_MCF_INTERNAL_INFO_LID */
+ kal_mem_set(&nv_int_info, 0, sizeof(nvram_ef_mcf_internal_info_struct));
+ if ( !nvram_external_write_data(NVRAM_EF_MCF_INTERNAL_INFO_LID, 1, (kal_uint8 *)&nv_int_info, sizeof(nvram_ef_mcf_internal_info_struct)) ) {
+ mcf_ut_format_err_str("Fail to write NVRAM_EF_MCF_INTERNAL_INFO_LID to NVRAM!!\r\n");
+ return KAL_FALSE;
+ }
+
+ /*Assign merged file name*/
+ assigned_file_req = (l4c_mcf_set_config_req_struct *)construct_local_para(sizeof(l4c_mcf_set_config_req_struct), TD_RESET);
+ assigned_file_req->op = L4C_MCF_CONFIG_ASSIGN_COMBINED_PATH;
+ assigned_file_req->config_type = L4C_MCF_CONFIG_TYPE_CARRIER_BIN;
+ assigned_file_req->path_type = L4C_MCF_PATH_TYPE_RUNTIME;
+ strcpy(assigned_file_req->config1,"MCF_OPOTA_ut_merge.mcfopota");
+
+ if(mcf_assign_combined_file_path(assigned_file_req) != MCF_OTA_R_SUCCESS){
+ mcf_ut_format_err_str("Assign combined OTA fail!! \r\n");
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)assigned_file_req);
+
+ /* First. apply MCF_TLVOTA_SBP_partial_ut_3LIDs_gid_normal.mcfopota - reset */
+ combined_file_req = (l4c_mcf_set_config_req_struct *)construct_local_para(sizeof(l4c_mcf_set_config_req_struct), TD_RESET);
+ combined_file_req->op = L4C_MCF_CONFIG_SET_FILE_PATH_AND_AUTO_SELECT_BIN;
+ combined_file_req->config_type = L4C_MCF_CONFIG_TYPE_CARRIER_BIN;
+ combined_file_req->path_type = L4C_MCF_PATH_TYPE_RUNTIME;
+ strcpy(combined_file_req->config1,"MCF_TLVOTA_SBP_partial_ut_3LIDs_gid_normal.mcfopota");
+ combined_file_req->reset = KAL_TRUE;
+
+ tlvota_file = &(pMcf->tlvota_file[0]);
+
+ MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ if (tlvota_file) {
+ pFile = (mcf_tool_file_info_t *)(tlvota_file->buff);
+ pItem = (mcf_tool_gid_tlvota_file_item_t *)(tlvota_file->buff + sizeof(mcf_tool_file_info_t));
+
+ 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);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_TLVOTA_SBP_partial_ut_3LIDs_gid_normal.mcfopota");
+ return KAL_FALSE;
+ }
+
+ MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+
+ if(mcf_combined_ota_file(combined_file_req) != MCF_OTA_R_SUCCESS){
+ mcf_ut_format_err_str("Combine OTA fail!! \r\n");
+ return KAL_FALSE;
+ }
+
+
+ /* Second. apply MCF_TLVOTA_SBP_partial_ut_2LIDs_gid_normal.mcfopota - append */
+ combined_file_req->op = L4C_MCF_CONFIG_SET_FILE_PATH_AND_AUTO_SELECT_BIN;
+ combined_file_req->config_type = L4C_MCF_CONFIG_TYPE_CARRIER_BIN;
+ combined_file_req->path_type = L4C_MCF_PATH_TYPE_RUNTIME;
+ strcpy(combined_file_req->config1,"MCF_TLVOTA_SBP_partial_ut_2LIDs_gid_normal.mcfopota");
+ combined_file_req->reset = KAL_FALSE;
+ combined_file_req->trigger_dsbp = KAL_TRUE;
+
+ tlvota_file = &(pMcf->tlvota_file[0]);
+
+ if(mcf_combined_ota_file(combined_file_req) != MCF_OTA_R_SUCCESS){
+ mcf_ut_format_err_str("Combine OTA fail!! \r\n");
+ return KAL_FALSE;
+ }
+
+ MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ if (tlvota_file) {
+ kal_mem_cpy(mcf_file_buffer, (kal_char *)(tlvota_file->buff), MCF_MAX_TLVOTA_FILE_SIZE);
+
+ MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+
+ MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ if (tlvota_file) {
+ pFile = (mcf_tool_file_info_t *)(tlvota_file->buff);
+ pItem = (mcf_tool_gid_tlvota_file_item_t *)(tlvota_file->buff + sizeof(mcf_tool_file_info_t));
+
+ 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);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_TLVOTA_SBP_partial_ut_2LIDs_gid_normal.mcfopota");
+ return KAL_FALSE;
+ }
+
+ MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+
+ MCF_R_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ if (tlvota_file) {
+ if(mcf_merge_ota_buffer(mcf_file_buffer, tlvota_file->buff, mcf_merge_buffer, MCF_MAX_TLVOTA_FILE_SIZE) != KAL_TRUE){
+ //XXX
+ ret = MCF_OTA_R_INVALID_PARAMETER;
+ MCF_R_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ return ret;
+ }
+ MCF_R_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ }
+
+ free_local_para((local_para_struct *)combined_file_req);
+
+ 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)) ) {
+ mcf_ut_format_err_str("Fail to write MCF TLVOTA file info to NVRAM!!\r\n");
+ return KAL_FALSE;
+ }
+
+ if(strcmp(nv_tlvota_file.path,MCF_FS_CUSTOM_FOLDER_PATH) != 0){
+ mcf_ut_format_err_str("Fail to store file path!!\r\n");
+ return KAL_FALSE;
+ }
+
+ if(strcmp(nv_tlvota_file.name,"MCF_OPOTA_ut_merge.mcfopota") != 0){
+ mcf_ut_format_err_str("Fail to store file name!!\r\n");
+ return KAL_FALSE;
+ }
+
+ MCF_R_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ if (tlvota_file) {
+ kal_mem_cpy(tlvota_file->buff, mcf_merge_buffer, MCF_MAX_TLVOTA_FILE_SIZE);
+ MCF_R_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ }
+
+ param_ptr.sbp_id = SBP_TAG_SBPID;
+ param_ptr.ps_id = 0;
+ kal_mem_cpy(param_ptr.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
+ kal_mem_cpy(param_ptr.mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
+ kal_mem_set(param_ptr.iccid, 0, 21);
+
+ ret = mcf_auto_select_tlvota_file(¶m_ptr);
+ if (ret != KAL_TRUE) {
+ mcf_ut_format_err_str("auto select tlvota file FAIL!! ret(%d) \r\n", ret);
+ return KAL_FALSE;
+ }
+
+ //Due to append, no need to reset
+ ret = mcf_check_lid_need_reset_by_psid(NVRAM_EF_MCF_TEST_OTA_LID, 0);
+ if (ret != KAL_FALSE) {
+ 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);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_lid_need_reset_by_psid(NVRAM_EF_IMS_PROFILE_LID, 0);
+ if (ret != KAL_FALSE) {
+ 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);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_lid_need_reset_by_psid(NVRAM_EF_XCAP_PROFILE_LID, 0);
+ if (ret != KAL_FALSE) {
+ 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);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_set_config_after_dsbp(0);
+ if (ret != KAL_TRUE) {
+ mcf_ut_format_err_str("can not set config. ret(%d) \r\n", ret);
+ return KAL_FALSE;
+ }
+
+ //Apply MCF_TLVOTA_SBP_partial_ut_gid_normal with reset
+
+ combined_file_req = (l4c_mcf_set_config_req_struct *)construct_local_para(sizeof(l4c_mcf_set_config_req_struct), TD_RESET);
+ combined_file_req->op = L4C_MCF_CONFIG_SET_FILE_PATH_AND_AUTO_SELECT_BIN;
+ combined_file_req->config_type = L4C_MCF_CONFIG_TYPE_CARRIER_BIN;
+ combined_file_req->path_type = L4C_MCF_PATH_TYPE_RUNTIME;
+ strcpy(combined_file_req->config1,"MCF_TLVOTA_SBP_partial_ut_gid_normal.mcfopota");
+ combined_file_req->reset = KAL_TRUE;
+ combined_file_req->trigger_dsbp = KAL_TRUE;
+
+ tlvota_file = &(pMcf->tlvota_file[0]);
+
+ MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ if (tlvota_file) {
+ pFile = (mcf_tool_file_info_t *)(tlvota_file->buff);
+ pItem = (mcf_tool_gid_tlvota_file_item_t *)(tlvota_file->buff + sizeof(mcf_tool_file_info_t));
+
+ ret = mcf_ut_open_test_data("MCF_TLVOTA_SBP_partial_ut_gid_normal.mcfopota", (kal_char *)(tlvota_file->buff), MCF_MAX_TLVOTA_FILE_SIZE);
+ if (ret == KAL_FALSE) {
+ mcf_ut_format_err_str("Open test data(%s) FAIL!! \r\n", "MCF_TLVOTA_SBP_partial_ut_gid_normal.mcfopota");
+ return KAL_FALSE;
+ }
+
+ MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+
+ if(mcf_combined_ota_file(combined_file_req) != MCF_OTA_R_SUCCESS){
+ mcf_ut_format_err_str("Combine OTA fail!! \r\n");
+ return KAL_FALSE;
+ }
+ free_local_para((local_para_struct *)combined_file_req);
+
+ param_ptr.sbp_id = SBP_TAG_SBPID;
+ param_ptr.ps_id = 0;
+ kal_mem_cpy(param_ptr.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
+ kal_mem_cpy(param_ptr.mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
+ kal_mem_set(param_ptr.iccid, 0, 21);
+
+ ret = mcf_auto_select_tlvota_file(¶m_ptr);
+ if (ret != KAL_TRUE) {
+ mcf_ut_format_err_str("auto select tlvota file FAIL!! ret(%d) \r\n", ret);
+ return KAL_FALSE;
+ }
+
+ //Due to reset, need to reset
+ ret = mcf_check_lid_need_reset_by_psid(NVRAM_EF_MCF_TEST_OTA_LID, 0);
+ if (ret != KAL_TRUE) {
+ 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);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_lid_need_reset_by_psid(NVRAM_EF_IMS_PROFILE_LID, 0);
+ if (ret != KAL_TRUE) {
+ mcf_ut_format_err_str("Check LID need reset reset test FAIL!! ret(%d), LID(%d) \r\n", ret, NVRAM_EF_IMS_PROFILE_LID);
+ return KAL_FALSE;
+ }
+
+ ret = mcf_check_lid_need_reset_by_psid(NVRAM_EF_XCAP_PROFILE_LID, 0);
+ if (ret != KAL_TRUE) {
+ mcf_ut_format_err_str("Check LID need reset reset test FAIL!! ret(%d), LID(%d) \r\n", ret, NVRAM_EF_XCAP_PROFILE_LID);
+ return KAL_FALSE;
+ }
+
+
+ MCF_UT_PASS();
+ return KAL_TRUE;
+}
+
+kal_bool mcf_ut_write_variable_value(void *p_param, kal_char *p_ret_err_str, kal_uint32 *p_ret_err_str_sz)
+{
+ kal_bool ret;
+ l4c_mcf_variable_value_operation_req_struct *req = NULL;
+ l4c_mcf_variable_value_operation_cnf_struct *cnf = NULL;
+ mcf_ota_result_e mcf_ret = MCF_OTA_R_SUCCESS;
+ mcf_t *pMcf = mcf_get_instance();
+ mcf_ota_file_t *ota_file = &(pMcf->ota_file);
+ mcf_tool_file_info_t *pFile = (mcf_tool_file_info_t *)(ota_file->buff);
+ nvram_ef_mcf_ota_file_info_struct nv_ota_file;
+ nvram_ef_mcf_sw_info_struct nv_sw_info;
+ mcf_tlvota_file_t *tlvota_file;
+ nvram_ef_mcf_tlvota_file_info_struct nv_tlvota_file;
+ mcf_tlvota_sbp_tag_t sbp_tag;
+ kal_uint8 i;
+ kal_uint8 test_pattern[512];
+ kal_uint8 array_tag[16];
+ nvram_ef_mcf_test_struct nv_lid_buffer;
+ kal_uint32 int_value;
+ kal_char value[256];
+ kal_uint16 sh_value;
+ nvram_ef_mcf_test_struct lid_buffer;
+ l4c_mcf_variable_value_operation_req_struct *query_req = NULL;
+ l4c_mcf_variable_value_operation_cnf_struct *query_cnf = NULL;
+ double db_value;
+ float fl_value;
+ kal_uint8 ch_value;
+
+ mcf_ut_init();
+
+ /* Write MCF OTA file version to NVRAM */
+ kal_mem_set(&nv_ota_file, 0, sizeof(nvram_ef_mcf_ota_file_info_struct));
+ strncpy(nv_ota_file.path, MCF_FS_DEFAULT_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN);
+ strncpy(nv_ota_file.name, MCF_FS_DEFAULT_OTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN);
+ 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)) ) {
+ mcf_ut_format_err_str("Fail to write MCF OTA file info to NVRAM!!\r\n");
+ return KAL_FALSE;
+ }
+ kal_mem_set(&nv_sw_info, 0, sizeof(nvram_ef_mcf_sw_info_struct));
+ strncpy(nv_sw_info.last_update_file.sw_version, MCF_UT_SW_VERNO, MCF_FILE_MAX_SW_VERSION_LEN);
+ strncpy(nv_sw_info.last_update_file.gen_time, MCF_UT_GEN_TIME, MCF_FILE_MAX_GEN_TIME_LEN);
+ strcpy(nv_sw_info.last_update_file.path, "");
+ strcpy(nv_sw_info.last_update_file.name, "");
+ if ( !nvram_external_write_data(NVRAM_EF_MCF_SW_INFO_LID, 1, (kal_uint8 *)&nv_sw_info, sizeof(nvram_ef_mcf_sw_info_struct)) ) {
+ mcf_ut_format_err_str("Fail to write MCF sw info to NVRAM!!\r\n");
+ return KAL_FALSE;
+ }
+
+ //Byte operation - VAL_BYTE_11
+ req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_WRITE_OTA;
+ req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
+ req->num = MCF_TEST_OTA_LID_BASE_GID+44;
+ req->rec_id = 1;
+ req->len = 1;
+ kal_mem_set(array_tag, 0, 16);
+ strcpy(req->config, array_tag);
+ int_value = 64;
+ mcf_bytes_to_hex(&int_value, 1, KAL_FALSE, &value);
+ strcpy((kal_char *)(req->value), value);
+
+ cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
+
+
+ mcf_ret = mcf_set_variable_value(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "VAL_BYTE_11");
+ return KAL_FALSE;
+ }
+
+ MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ if (ota_file) {
+ kal_mem_cpy(ota_file->buff, mcf_merge_buffer, MCF_MAX_OTA_FILE_SIZE);
+
+ MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Do full OTA FAIL!! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+
+ mcf_ret = mcf_do_ota_full();
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Reset LID FAIL!! ret(%d) \r\n", mcf_ret);
+ return KAL_FALSE;
+ }
+
+ if ( !nvram_external_read_data(NVRAM_EF_MCF_TEST_OTA_LID, 1, &lid_buffer, sizeof(nvram_ef_mcf_test_struct)) ) {
+ printf("Fail to read NVRAM_EF_MCF_TEST_OTA_LID!!\r\n");
+ ret = KAL_FALSE;
+ }
+
+ kal_mem_set(test_pattern,0,512);
+ mcf_bytes_to_hex(&(lid_buffer.val_byte_11), 1, KAL_FALSE, &test_pattern);
+ mcf_toupper((char *)test_pattern);
+ mcf_toupper((char *)req->value);
+
+ if(strncmp((kal_char *)(req->value), test_pattern, cnf->len*2) != 0){
+ mcf_ut_format_err_str("VAL_BYTE_11, %s, %s\r\n", req->value, test_pattern);
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 1){
+ mcf_ut_format_err_str("VAL_BYTE_11, %d, %d\r\n", cnf->len, 1);
+ return KAL_FALSE;
+ }
+
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+ /* Write MCF OTA file version to NVRAM */
+ kal_mem_set(&nv_ota_file, 0, sizeof(nvram_ef_mcf_ota_file_info_struct));
+ strncpy(nv_ota_file.path, MCF_FS_DEFAULT_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN);
+ strncpy(nv_ota_file.name, MCF_FS_DEFAULT_OTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN);
+ 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)) ) {
+ mcf_ut_format_err_str("Fail to write MCF OTA file info to NVRAM!!\r\n");
+ return KAL_FALSE;
+ }
+ kal_mem_set(&nv_sw_info, 0, sizeof(nvram_ef_mcf_sw_info_struct));
+ strncpy(nv_sw_info.last_update_file.sw_version, MCF_UT_SW_VERNO, MCF_FILE_MAX_SW_VERSION_LEN);
+ strncpy(nv_sw_info.last_update_file.gen_time, MCF_UT_GEN_TIME, MCF_FILE_MAX_GEN_TIME_LEN);
+ strcpy(nv_sw_info.last_update_file.path, "");
+ strcpy(nv_sw_info.last_update_file.name, "");
+ if ( !nvram_external_write_data(NVRAM_EF_MCF_SW_INFO_LID, 1, (kal_uint8 *)&nv_sw_info, sizeof(nvram_ef_mcf_sw_info_struct)) ) {
+ mcf_ut_format_err_str("Fail to write MCF sw info to NVRAM!!\r\n");
+ return KAL_FALSE;
+ }
+
+ //Bit operation - VAL_BIT_BYTE_11
+ req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_WRITE_OTA;
+ req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
+ req->num = MCF_TEST_OTA_LID_BASE_GID+18;
+ req->rec_id = 1;
+ req->len = 0;
+ kal_mem_set(array_tag, 0, 16);
+ strcpy(req->config, array_tag);
+ int_value = 255;
+ mcf_bytes_to_hex(&int_value, 1, KAL_FALSE, &value);
+ strcpy((kal_char *)(req->value), value);
+
+ cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_set_variable_value(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "VAL_BYTE_11");
+ return KAL_FALSE;
+ }
+
+ MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ if (ota_file) {
+ kal_mem_cpy(ota_file->buff, mcf_merge_buffer, MCF_MAX_OTA_FILE_SIZE);
+
+ MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Do full OTA FAIL!! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+
+ mcf_ret = mcf_do_ota_full();
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Reset LID FAIL!! ret(%d) \r\n", mcf_ret);
+ return KAL_FALSE;
+ }
+
+ if ( !nvram_external_read_data(NVRAM_EF_MCF_TEST_OTA_LID, 1, &lid_buffer, sizeof(nvram_ef_mcf_test_struct)) ) {
+ printf("Fail to read NVRAM_EF_MCF_TEST_OTA_LID!!\r\n");
+ ret = KAL_FALSE;
+ }
+
+ kal_mem_set(test_pattern,0,512);
+ mcf_bytes_to_hex(&(lid_buffer.val_bit_byte_11), 1, KAL_FALSE, &test_pattern);
+ mcf_toupper((char *)test_pattern);
+ mcf_toupper((char *)req->value);
+
+ if(strncmp((kal_char *)(req->value), test_pattern, cnf->len*2) != 0){
+ mcf_ut_format_err_str("val_bit_byte_11, %s, %s\r\n", req->value, test_pattern);
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 1){
+ mcf_ut_format_err_str("val_bit_byte_11, %d, %d\r\n", cnf->len, 1);
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+ /* Write MCF OTA file version to NVRAM */
+ kal_mem_set(&nv_ota_file, 0, sizeof(nvram_ef_mcf_ota_file_info_struct));
+ strncpy(nv_ota_file.path, MCF_FS_DEFAULT_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN);
+ strncpy(nv_ota_file.name, MCF_FS_DEFAULT_OTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN);
+ 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)) ) {
+ mcf_ut_format_err_str("Fail to write MCF OTA file info to NVRAM!!\r\n");
+ return KAL_FALSE;
+ }
+ kal_mem_set(&nv_sw_info, 0, sizeof(nvram_ef_mcf_sw_info_struct));
+ strncpy(nv_sw_info.last_update_file.sw_version, MCF_UT_SW_VERNO, MCF_FILE_MAX_SW_VERSION_LEN);
+ strncpy(nv_sw_info.last_update_file.gen_time, MCF_UT_GEN_TIME, MCF_FILE_MAX_GEN_TIME_LEN);
+ strcpy(nv_sw_info.last_update_file.path, "");
+ strcpy(nv_sw_info.last_update_file.name, "");
+ if ( !nvram_external_write_data(NVRAM_EF_MCF_SW_INFO_LID, 1, (kal_uint8 *)&nv_sw_info, sizeof(nvram_ef_mcf_sw_info_struct)) ) {
+ mcf_ut_format_err_str("Fail to write MCF sw info to NVRAM!!\r\n");
+ return KAL_FALSE;
+ }
+
+ //Bit operation - VAL_BIT_BYTE_11.B3
+ req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_WRITE_OTA;
+ req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
+ req->num = MCF_TEST_OTA_LID_BASE_GID+21;
+ req->rec_id = 1;
+ req->len = 0;
+ kal_mem_set(array_tag, 0, 16);
+ strcpy(req->config, array_tag);
+ int_value = 255;
+ mcf_bytes_to_hex(&int_value, 1, KAL_FALSE, &value);
+ strcpy((kal_char *)(req->value), value);
+
+ cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_set_variable_value(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "VAL_BYTE_11");
+ return KAL_FALSE;
+ }
+
+ MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ if (ota_file) {
+ kal_mem_cpy(ota_file->buff, mcf_merge_buffer, MCF_MAX_OTA_FILE_SIZE);
+
+ MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Do full OTA FAIL!! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+
+ mcf_ret = mcf_do_ota_full();
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Reset LID FAIL!! ret(%d) \r\n", mcf_ret);
+ return KAL_FALSE;
+ }
+
+ if ( !nvram_external_read_data(NVRAM_EF_MCF_TEST_OTA_LID, 1, &lid_buffer, sizeof(nvram_ef_mcf_test_struct)) ) {
+ printf("Fail to read NVRAM_EF_MCF_TEST_OTA_LID!!\r\n");
+ ret = KAL_FALSE;
+ }
+
+ query_req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
+ query_req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
+ query_req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
+ query_req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
+ query_req->num = MCF_TEST_OTA_LID_BASE_GID+21;
+ query_req->rec_id = 1;
+ query_req->len = 0;
+ kal_mem_set(array_tag, 0, 16);
+ strcpy(query_req->config, array_tag);
+
+ query_cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_query_variable_value(query_req, query_cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "VAL_BIT_BYTE_11.B3");
+ return KAL_FALSE;
+ }
+
+ if(strncmp((query_cnf->value), "01", cnf->len*2) != 0){
+ mcf_ut_format_err_str("VAL_BIT_BYTE_11.B3, %s, %s\r\n", cnf->value, "01");
+ return KAL_FALSE;
+ }
+
+
+ if(cnf->len != 1){
+ mcf_ut_format_err_str("VAL_BIT_BYTE_11.B3, %d, %d\r\n", cnf->len, 1);
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+ free_local_para((local_para_struct *)query_req);
+ free_local_para((local_para_struct *)query_cnf);
+
+ /* Write MCF OTA file version to NVRAM */
+ kal_mem_set(&nv_ota_file, 0, sizeof(nvram_ef_mcf_ota_file_info_struct));
+ strncpy(nv_ota_file.path, MCF_FS_DEFAULT_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN);
+ strncpy(nv_ota_file.name, MCF_FS_DEFAULT_OTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN);
+ 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)) ) {
+ mcf_ut_format_err_str("Fail to write MCF OTA file info to NVRAM!!\r\n");
+ return KAL_FALSE;
+ }
+ kal_mem_set(&nv_sw_info, 0, sizeof(nvram_ef_mcf_sw_info_struct));
+ strncpy(nv_sw_info.last_update_file.sw_version, MCF_UT_SW_VERNO, MCF_FILE_MAX_SW_VERSION_LEN);
+ strncpy(nv_sw_info.last_update_file.gen_time, MCF_UT_GEN_TIME, MCF_FILE_MAX_GEN_TIME_LEN);
+ strcpy(nv_sw_info.last_update_file.path, "");
+ strcpy(nv_sw_info.last_update_file.name, "");
+ if ( !nvram_external_write_data(NVRAM_EF_MCF_SW_INFO_LID, 1, (kal_uint8 *)&nv_sw_info, sizeof(nvram_ef_mcf_sw_info_struct)) ) {
+ mcf_ut_format_err_str("Fail to write MCF sw info to NVRAM!!\r\n");
+ return KAL_FALSE;
+ }
+
+ //Bit operation - val_bit_byte_12
+ req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_WRITE_OTA;
+ req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
+ req->num = MCF_TEST_OTA_LID_BASE_GID+27;
+ req->rec_id = 1;
+ req->len = 1;
+ strcpy(req->config, "");
+ int_value = 16;
+ mcf_bytes_to_hex(&int_value, 1, KAL_FALSE, &value);
+ strcpy((kal_char *)(req->value), value);
+
+ cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_set_variable_value(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "VAL_BYTE_11");
+ return KAL_FALSE;
+ }
+
+ MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ if (ota_file) {
+ kal_mem_cpy(ota_file->buff, mcf_merge_buffer, MCF_MAX_OTA_FILE_SIZE);
+
+ MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Do full OTA FAIL!! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+
+ mcf_ret = mcf_do_ota_full();
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Reset LID FAIL!! ret(%d) \r\n", mcf_ret);
+ return KAL_FALSE;
+ }
+
+ if ( !nvram_external_read_data(NVRAM_EF_MCF_TEST_OTA_LID, 1, &lid_buffer, sizeof(nvram_ef_mcf_test_struct)) ) {
+ printf("Fail to read NVRAM_EF_MCF_TEST_OTA_LID!!\r\n");
+ ret = KAL_FALSE;
+ }
+
+ kal_mem_set(test_pattern,0,512);
+ mcf_bytes_to_hex(&(lid_buffer.val_bit_byte_12), 1, KAL_FALSE, &test_pattern);
+ mcf_toupper((char *)test_pattern);
+ mcf_toupper((char *)req->value);
+
+ if(strncmp((kal_char *)(req->value), test_pattern, cnf->len*2) != 0){
+ mcf_ut_format_err_str("val_bit_byte_12, %s, %s\r\n", req->value, test_pattern);
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 1){
+ mcf_ut_format_err_str("val_bit_byte_12, %d, %d\r\n", cnf->len, 1);
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+ /* Write MCF OTA file version to NVRAM */
+ kal_mem_set(&nv_ota_file, 0, sizeof(nvram_ef_mcf_ota_file_info_struct));
+ strncpy(nv_ota_file.path, MCF_FS_DEFAULT_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN);
+ strncpy(nv_ota_file.name, MCF_FS_DEFAULT_OTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN);
+ 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)) ) {
+ mcf_ut_format_err_str("Fail to write MCF OTA file info to NVRAM!!\r\n");
+ return KAL_FALSE;
+ }
+ kal_mem_set(&nv_sw_info, 0, sizeof(nvram_ef_mcf_sw_info_struct));
+ strncpy(nv_sw_info.last_update_file.sw_version, MCF_UT_SW_VERNO, MCF_FILE_MAX_SW_VERSION_LEN);
+ strncpy(nv_sw_info.last_update_file.gen_time, MCF_UT_GEN_TIME, MCF_FILE_MAX_GEN_TIME_LEN);
+ strcpy(nv_sw_info.last_update_file.path, "");
+ strcpy(nv_sw_info.last_update_file.name, "");
+ if ( !nvram_external_write_data(NVRAM_EF_MCF_SW_INFO_LID, 1, (kal_uint8 *)&nv_sw_info, sizeof(nvram_ef_mcf_sw_info_struct)) ) {
+ mcf_ut_format_err_str("Fail to write MCF sw info to NVRAM!!\r\n");
+ return KAL_FALSE;
+ }
+
+ //Bit operation - val_bit_byte_12.L4b
+ req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_WRITE_OTA;
+ req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
+ req->num = MCF_TEST_OTA_LID_BASE_GID+29;
+ req->rec_id = 1;
+ req->len = 0;
+ strcpy(req->config, "");
+ int_value = 15;
+ mcf_bytes_to_hex(&int_value, 1, KAL_FALSE, &value);
+ strcpy((kal_char *)(req->value), value);
+
+ cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_set_variable_value(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "VAL_BYTE_11");
+ return KAL_FALSE;
+ }
+
+ MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ if (ota_file) {
+ kal_mem_cpy(ota_file->buff, mcf_merge_buffer, MCF_MAX_OTA_FILE_SIZE);
+
+ MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Do full OTA FAIL!! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+
+ mcf_ret = mcf_do_ota_full();
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Reset LID FAIL!! ret(%d) \r\n", mcf_ret);
+ return KAL_FALSE;
+ }
+
+ query_req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
+ query_req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
+ query_req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OTA;
+ query_req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
+ query_req->num = MCF_TEST_OTA_LID_BASE_GID+29;
+ query_req->rec_id = 1;
+ query_req->len = 0;
+ kal_mem_set(array_tag, 0, 16);
+ strcpy(query_req->config, array_tag);
+
+ query_cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_query_variable_value(query_req, query_cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "VAL_BIT_BYTE_11.B3");
+ return KAL_FALSE;
+ }
+
+ if(strncmp(query_cnf->value, "0F", cnf->len*2+2) != 0){
+ mcf_ut_format_err_str("val_bit_byte_12.F4b, %s, %s\r\n", cnf->value, "0F");
+ return KAL_FALSE;
+ }
+
+
+ if(query_cnf->len != 1){
+ mcf_ut_format_err_str("val_bit_byte_12.F4b, %d, %d\r\n", cnf->len, 1);
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+ free_local_para((local_para_struct *)query_req);
+ free_local_para((local_para_struct *)query_cnf);
+
+ /* Write MCF OTA file version to NVRAM */
+ kal_mem_set(&nv_ota_file, 0, sizeof(nvram_ef_mcf_ota_file_info_struct));
+ strncpy(nv_ota_file.path, MCF_FS_DEFAULT_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN);
+ strncpy(nv_ota_file.name, MCF_FS_DEFAULT_OTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN);
+ 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)) ) {
+ mcf_ut_format_err_str("Fail to write MCF OTA file info to NVRAM!!\r\n");
+ return KAL_FALSE;
+ }
+ kal_mem_set(&nv_sw_info, 0, sizeof(nvram_ef_mcf_sw_info_struct));
+ strncpy(nv_sw_info.last_update_file.sw_version, MCF_UT_SW_VERNO, MCF_FILE_MAX_SW_VERSION_LEN);
+ strncpy(nv_sw_info.last_update_file.gen_time, MCF_UT_GEN_TIME, MCF_FILE_MAX_GEN_TIME_LEN);
+ strcpy(nv_sw_info.last_update_file.path, "");
+ strcpy(nv_sw_info.last_update_file.name, "");
+ if ( !nvram_external_write_data(NVRAM_EF_MCF_SW_INFO_LID, 1, (kal_uint8 *)&nv_sw_info, sizeof(nvram_ef_mcf_sw_info_struct)) ) {
+ mcf_ut_format_err_str("Fail to write MCF sw info to NVRAM!!\r\n");
+ return KAL_FALSE;
+ }
+
+ //short operation - val_short_11
+ req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_WRITE_OTA;
+ req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
+ req->num = MCF_TEST_OTA_LID_BASE_GID+56;
+ req->rec_id = 1;
+ req->len = 0;
+ strcpy(req->config, "");
+ sh_value = 256;
+ mcf_bytes_to_hex(&sh_value, 2, KAL_FALSE, &value);
+ strcpy((kal_char *)(req->value), value);
+
+ cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_set_variable_value(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "VAL_BYTE_11");
+ return KAL_FALSE;
+ }
+
+ MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ if (ota_file) {
+ kal_mem_cpy(ota_file->buff, mcf_merge_buffer, MCF_MAX_OTA_FILE_SIZE);
+
+ MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Do full OTA FAIL!! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+
+ mcf_ret = mcf_do_ota_full();
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Reset LID FAIL!! ret(%d) \r\n", mcf_ret);
+ return KAL_FALSE;
+ }
+
+ if ( !nvram_external_read_data(NVRAM_EF_MCF_TEST_OTA_LID, 1, &lid_buffer, sizeof(nvram_ef_mcf_test_struct)) ) {
+ printf("Fail to read NVRAM_EF_MCF_TEST_OTA_LID!!\r\n");
+ ret = KAL_FALSE;
+ }
+
+ kal_mem_set(test_pattern,0,512);
+ mcf_bytes_to_hex(&(lid_buffer.val_short_11), 2, KAL_FALSE, &test_pattern);
+ mcf_toupper((char *)test_pattern);
+ mcf_toupper((char *)req->value);
+
+ if(strncmp((kal_char *)(req->value), test_pattern, cnf->len*2) != 0){
+ mcf_ut_format_err_str("val_short_11, %s, %s\r\n", cnf->value, test_pattern);
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 2){
+ mcf_ut_format_err_str("val_short_11, %d, %d\r\n", cnf->len, 2);
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+ /* Write MCF OTA file version to NVRAM */
+ kal_mem_set(&nv_ota_file, 0, sizeof(nvram_ef_mcf_ota_file_info_struct));
+ strncpy(nv_ota_file.path, MCF_FS_DEFAULT_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN);
+ strncpy(nv_ota_file.name, MCF_FS_DEFAULT_OTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN);
+ 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)) ) {
+ mcf_ut_format_err_str("Fail to write MCF OTA file info to NVRAM!!\r\n");
+ return KAL_FALSE;
+ }
+ kal_mem_set(&nv_sw_info, 0, sizeof(nvram_ef_mcf_sw_info_struct));
+ strncpy(nv_sw_info.last_update_file.sw_version, MCF_UT_SW_VERNO, MCF_FILE_MAX_SW_VERSION_LEN);
+ strncpy(nv_sw_info.last_update_file.gen_time, MCF_UT_GEN_TIME, MCF_FILE_MAX_GEN_TIME_LEN);
+ strcpy(nv_sw_info.last_update_file.path, "");
+ strcpy(nv_sw_info.last_update_file.name, "");
+ if ( !nvram_external_write_data(NVRAM_EF_MCF_SW_INFO_LID, 1, (kal_uint8 *)&nv_sw_info, sizeof(nvram_ef_mcf_sw_info_struct)) ) {
+ mcf_ut_format_err_str("Fail to write MCF sw info to NVRAM!!\r\n");
+ return KAL_FALSE;
+ }
+
+ //double operation - val_double_1
+ req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_WRITE_OTA;
+ req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
+ req->num = MCF_TEST_OTA_LID_BASE_GID+48;
+ req->rec_id = 1;
+ req->len = 0;
+ strcpy(req->config, "");
+ db_value = 6.6;
+ mcf_bytes_to_hex(&db_value, 8, KAL_FALSE, &value);
+ strcpy((kal_char *)(req->value), value);
+
+ cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_set_variable_value(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "VAL_BYTE_11");
+ return KAL_FALSE;
+ }
+
+ MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ if (ota_file) {
+ kal_mem_cpy(ota_file->buff, mcf_merge_buffer, MCF_MAX_OTA_FILE_SIZE);
+
+ MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Do full OTA FAIL!! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+
+ mcf_ret = mcf_do_ota_full();
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Reset LID FAIL!! ret(%d) \r\n", mcf_ret);
+ return KAL_FALSE;
+ }
+
+ if ( !nvram_external_read_data(NVRAM_EF_MCF_TEST_OTA_LID, 1, &lid_buffer, sizeof(nvram_ef_mcf_test_struct)) ) {
+ printf("Fail to read NVRAM_EF_MCF_TEST_OTA_LID!!\r\n");
+ ret = KAL_FALSE;
+ }
+
+
+ kal_mem_set(test_pattern,0,512);
+ mcf_bytes_to_hex(&(lid_buffer.val_double_1), cnf->len, KAL_FALSE, &test_pattern);
+ mcf_toupper((char *)test_pattern);
+ mcf_toupper((char *)req->value);
+
+ if(strncmp((kal_char *)(req->value), test_pattern, cnf->len*2) != 0){
+ mcf_ut_format_err_str("val_double_1, %s, %s\r\n", cnf->value, test_pattern);
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 8){
+ mcf_ut_format_err_str("val_double_1, %d, %d\r\n", cnf->len, 8);
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+ /* Write MCF OTA file version to NVRAM */
+ kal_mem_set(&nv_ota_file, 0, sizeof(nvram_ef_mcf_ota_file_info_struct));
+ strncpy(nv_ota_file.path, MCF_FS_DEFAULT_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN);
+ strncpy(nv_ota_file.name, MCF_FS_DEFAULT_OTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN);
+ 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)) ) {
+ mcf_ut_format_err_str("Fail to write MCF OTA file info to NVRAM!!\r\n");
+ return KAL_FALSE;
+ }
+ kal_mem_set(&nv_sw_info, 0, sizeof(nvram_ef_mcf_sw_info_struct));
+ strncpy(nv_sw_info.last_update_file.sw_version, MCF_UT_SW_VERNO, MCF_FILE_MAX_SW_VERSION_LEN);
+ strncpy(nv_sw_info.last_update_file.gen_time, MCF_UT_GEN_TIME, MCF_FILE_MAX_GEN_TIME_LEN);
+ strcpy(nv_sw_info.last_update_file.path, "");
+ strcpy(nv_sw_info.last_update_file.name, "");
+ if ( !nvram_external_write_data(NVRAM_EF_MCF_SW_INFO_LID, 1, (kal_uint8 *)&nv_sw_info, sizeof(nvram_ef_mcf_sw_info_struct)) ) {
+ mcf_ut_format_err_str("Fail to write MCF sw info to NVRAM!!\r\n");
+ return KAL_FALSE;
+ }
+
+ //buffer operation - val_buffer_1[0]
+ req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_WRITE_OTA;
+ req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
+ req->num = MCF_TEST_OTA_LID_BASE_GID+42;
+ req->rec_id = 1;
+ req->len = 1;
+ strcpy(req->config, "0");
+ ch_value = 'M';
+ mcf_bytes_to_hex(&ch_value, 1, KAL_FALSE, &value);
+ strcpy((kal_char *)(req->value), value);
+
+ cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_set_variable_value(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "VAL_BYTE_11");
+ return KAL_FALSE;
+ }
+
+ MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ if (ota_file) {
+ kal_mem_cpy(ota_file->buff, mcf_merge_buffer, MCF_MAX_OTA_FILE_SIZE);
+
+ MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Do full OTA FAIL!! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+
+ mcf_ret = mcf_do_ota_full();
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Reset LID FAIL!! ret(%d) \r\n", mcf_ret);
+ return KAL_FALSE;
+ }
+
+ if ( !nvram_external_read_data(NVRAM_EF_MCF_TEST_OTA_LID, 1, &lid_buffer, sizeof(nvram_ef_mcf_test_struct)) ) {
+ printf("Fail to read NVRAM_EF_MCF_TEST_OTA_LID!!\r\n");
+ ret = KAL_FALSE;
+ }
+
+ kal_mem_set(test_pattern,0,512);
+ mcf_bytes_to_hex(&(lid_buffer.val_buffer_1), cnf->len, KAL_FALSE, &test_pattern);
+ mcf_toupper((char *)test_pattern);
+ mcf_toupper((char *)req->value);
+
+ if(strncmp((kal_char *)(req->value), test_pattern, cnf->len*2) != 0){
+ mcf_ut_format_err_str("val_buffer_1[0], %s, %s\r\n", cnf->value, test_pattern);
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 1){
+ mcf_ut_format_err_str("val_buffer_1[0], %d, %d\r\n", cnf->len, 1);
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+ /* Write MCF OTA file version to NVRAM */
+ kal_mem_set(&nv_ota_file, 0, sizeof(nvram_ef_mcf_ota_file_info_struct));
+ strncpy(nv_ota_file.path, MCF_FS_DEFAULT_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN);
+ strncpy(nv_ota_file.name, MCF_FS_DEFAULT_OTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN);
+ 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)) ) {
+ mcf_ut_format_err_str("Fail to write MCF OTA file info to NVRAM!!\r\n");
+ return KAL_FALSE;
+ }
+ kal_mem_set(&nv_sw_info, 0, sizeof(nvram_ef_mcf_sw_info_struct));
+ strncpy(nv_sw_info.last_update_file.sw_version, MCF_UT_SW_VERNO, MCF_FILE_MAX_SW_VERSION_LEN);
+ strncpy(nv_sw_info.last_update_file.gen_time, MCF_UT_GEN_TIME, MCF_FILE_MAX_GEN_TIME_LEN);
+ strcpy(nv_sw_info.last_update_file.path, "");
+ strcpy(nv_sw_info.last_update_file.name, "");
+ if ( !nvram_external_write_data(NVRAM_EF_MCF_SW_INFO_LID, 1, (kal_uint8 *)&nv_sw_info, sizeof(nvram_ef_mcf_sw_info_struct)) ) {
+ mcf_ut_format_err_str("Fail to write MCF sw info to NVRAM!!\r\n");
+ return KAL_FALSE;
+ }
+
+ //float operation - val_struct_1.vfloat
+ req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_WRITE_OTA;
+ req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
+ req->num = MCF_TEST_OTA_LID_BASE_GID+78;
+ req->rec_id = 1;
+ req->len = 4;
+ strcpy(req->config, "");
+ fl_value = 0.4;
+ mcf_bytes_to_hex(&fl_value, 4, KAL_FALSE, &value);
+ strcpy((kal_char *)(req->value), value);
+
+ cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_set_variable_value(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "VAL_BYTE_11");
+ return KAL_FALSE;
+ }
+
+ MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ if (ota_file) {
+ kal_mem_cpy(ota_file->buff, mcf_merge_buffer, MCF_MAX_OTA_FILE_SIZE);
+
+ MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Do full OTA FAIL!! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+
+ mcf_ret = mcf_do_ota_full();
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Reset LID FAIL!! ret(%d) \r\n", mcf_ret);
+ return KAL_FALSE;
+ }
+
+ if ( !nvram_external_read_data(NVRAM_EF_MCF_TEST_OTA_LID, 1, &lid_buffer, sizeof(nvram_ef_mcf_test_struct)) ) {
+ printf("Fail to read NVRAM_EF_MCF_TEST_OTA_LID!!\r\n");
+ ret = KAL_FALSE;
+ }
+
+ kal_mem_set(test_pattern,0,512);
+ mcf_bytes_to_hex(&(lid_buffer.val_struct_1.vfloat), cnf->len, KAL_FALSE, &test_pattern);
+ mcf_toupper((char *)test_pattern);
+ mcf_toupper((char *)req->value);
+
+ if(strncmp((kal_char *)(req->value), test_pattern, cnf->len*2) != 0){
+ mcf_ut_format_err_str("val_struct_1.vfloat, %s, %s\r\n", cnf->value, test_pattern);
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 4){
+ mcf_ut_format_err_str("val_struct_1.vfloat, %d, %d\r\n", cnf->len, 4);
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+ /* Write MCF OTA file version to NVRAM */
+ kal_mem_set(&nv_ota_file, 0, sizeof(nvram_ef_mcf_ota_file_info_struct));
+ strncpy(nv_ota_file.path, MCF_FS_DEFAULT_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN);
+ strncpy(nv_ota_file.name, MCF_FS_DEFAULT_OTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN);
+ 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)) ) {
+ mcf_ut_format_err_str("Fail to write MCF OTA file info to NVRAM!!\r\n");
+ return KAL_FALSE;
+ }
+ kal_mem_set(&nv_sw_info, 0, sizeof(nvram_ef_mcf_sw_info_struct));
+ strncpy(nv_sw_info.last_update_file.sw_version, MCF_UT_SW_VERNO, MCF_FILE_MAX_SW_VERSION_LEN);
+ strncpy(nv_sw_info.last_update_file.gen_time, MCF_UT_GEN_TIME, MCF_FILE_MAX_GEN_TIME_LEN);
+ strcpy(nv_sw_info.last_update_file.path, "");
+ strcpy(nv_sw_info.last_update_file.name, "");
+ if ( !nvram_external_write_data(NVRAM_EF_MCF_SW_INFO_LID, 1, (kal_uint8 *)&nv_sw_info, sizeof(nvram_ef_mcf_sw_info_struct)) ) {
+ mcf_ut_format_err_str("Fail to write MCF sw info to NVRAM!!\r\n");
+ return KAL_FALSE;
+ }
+
+ //int in struct operation - val_struct_3[0].vint
+ req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_WRITE_OTA;
+ req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
+ req->num = MCF_TEST_OTA_LID_BASE_GID+125;
+ req->rec_id = 1;
+ req->len = 0;
+ strcpy(req->config, "0");
+ int_value = 66;
+ mcf_bytes_to_hex(&int_value, 4, KAL_FALSE, &value);
+ strcpy((kal_char *)(req->value), value);
+
+ cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_set_variable_value(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "VAL_BYTE_11");
+ return KAL_FALSE;
+ }
+
+ MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ if (ota_file) {
+ kal_mem_cpy(ota_file->buff, mcf_merge_buffer, MCF_MAX_OTA_FILE_SIZE);
+
+ MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Do full OTA FAIL!! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+
+ mcf_ret = mcf_do_ota_full();
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Reset LID FAIL!! ret(%d) \r\n", mcf_ret);
+ return KAL_FALSE;
+ }
+
+ if ( !nvram_external_read_data(NVRAM_EF_MCF_TEST_OTA_LID, 1, &lid_buffer, sizeof(nvram_ef_mcf_test_struct)) ) {
+ printf("Fail to read NVRAM_EF_MCF_TEST_OTA_LID!!\r\n");
+ ret = KAL_FALSE;
+ }
+
+ kal_mem_set(test_pattern,0,512);
+ mcf_bytes_to_hex(&(lid_buffer.val_struct_3[0].vint), cnf->len, KAL_FALSE, &test_pattern);
+ mcf_toupper((char *)test_pattern);
+ mcf_toupper((char *)req->value);
+
+ if(strncmp((kal_char *)(req->value), test_pattern, cnf->len*2) != 0){
+ mcf_ut_format_err_str("val_struct_3[0].vint, %s, %s\r\n", cnf->value, test_pattern);
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 4){
+ mcf_ut_format_err_str("val_struct_3[0].vint, %d, %d\r\n", cnf->len, 4);
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+ /* Write MCF OTA file version to NVRAM */
+ kal_mem_set(&nv_ota_file, 0, sizeof(nvram_ef_mcf_ota_file_info_struct));
+ strncpy(nv_ota_file.path, MCF_FS_DEFAULT_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN);
+ strncpy(nv_ota_file.name, MCF_FS_DEFAULT_OTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN);
+ 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)) ) {
+ mcf_ut_format_err_str("Fail to write MCF OTA file info to NVRAM!!\r\n");
+ return KAL_FALSE;
+ }
+ kal_mem_set(&nv_sw_info, 0, sizeof(nvram_ef_mcf_sw_info_struct));
+ strncpy(nv_sw_info.last_update_file.sw_version, MCF_UT_SW_VERNO, MCF_FILE_MAX_SW_VERSION_LEN);
+ strncpy(nv_sw_info.last_update_file.gen_time, MCF_UT_GEN_TIME, MCF_FILE_MAX_GEN_TIME_LEN);
+ strcpy(nv_sw_info.last_update_file.path, "");
+ strcpy(nv_sw_info.last_update_file.name, "");
+ if ( !nvram_external_write_data(NVRAM_EF_MCF_SW_INFO_LID, 1, (kal_uint8 *)&nv_sw_info, sizeof(nvram_ef_mcf_sw_info_struct)) ) {
+ mcf_ut_format_err_str("Fail to write MCF sw info to NVRAM!!\r\n");
+ return KAL_FALSE;
+ }
+
+ //buffer in struct operation - VAL_STRUCT_3[3].VBUFFER[2][4][5]
+ req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_WRITE_OTA;
+ req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
+ req->num = MCF_TEST_OTA_LID_BASE_GID+120;
+ req->rec_id = 1;
+ req->len = 0;
+ strcpy(req->config, "3,2,4,5");
+ ch_value = 'C';
+ mcf_bytes_to_hex(&ch_value, 1, KAL_FALSE, &value);
+ strcpy((kal_char *)(req->value), value);
+
+ cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_set_variable_value(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "VAL_BYTE_11");
+ return KAL_FALSE;
+ }
+
+ MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ if (ota_file) {
+ kal_mem_cpy(ota_file->buff, mcf_merge_buffer, MCF_MAX_OTA_FILE_SIZE);
+
+ MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Do full OTA FAIL!! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+
+ mcf_ret = mcf_do_ota_full();
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Reset LID FAIL!! ret(%d) \r\n", mcf_ret);
+ return KAL_FALSE;
+ }
+
+ if ( !nvram_external_read_data(NVRAM_EF_MCF_TEST_OTA_LID, 1, &lid_buffer, sizeof(nvram_ef_mcf_test_struct)) ) {
+ printf("Fail to read NVRAM_EF_MCF_TEST_OTA_LID!!\r\n");
+ ret = KAL_FALSE;
+ }
+
+ kal_mem_set(test_pattern,0,512);
+ mcf_bytes_to_hex(&(lid_buffer.val_struct_3[3].vbuffer[2]), cnf->len, KAL_FALSE, &test_pattern);
+ mcf_toupper((char *)test_pattern);
+ mcf_toupper((char *)req->value);
+
+ if(strncmp((kal_char *)(req->value), test_pattern, cnf->len*2) != 0){
+ mcf_ut_format_err_str("VAL_STRUCT_3[3].VBUFFER[2][4][5], %s, %s\r\n", cnf->value, test_pattern);
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 1){
+ mcf_ut_format_err_str("VAL_STRUCT_3[3].VBUFFER[2][4][5], %d, %d\r\n", cnf->len, 1);
+ return KAL_FALSE;
+ }
+
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+ //Test value byte is not equal to variable size
+
+ /* Write MCF OTA file version to NVRAM */
+ kal_mem_set(&nv_ota_file, 0, sizeof(nvram_ef_mcf_ota_file_info_struct));
+ strncpy(nv_ota_file.path, MCF_FS_DEFAULT_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN);
+ strncpy(nv_ota_file.name, MCF_FS_DEFAULT_OTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN);
+ 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)) ) {
+ mcf_ut_format_err_str("Fail to write MCF OTA file info to NVRAM!!\r\n");
+ return KAL_FALSE;
+ }
+ kal_mem_set(&nv_sw_info, 0, sizeof(nvram_ef_mcf_sw_info_struct));
+ strncpy(nv_sw_info.last_update_file.sw_version, MCF_UT_SW_VERNO, MCF_FILE_MAX_SW_VERSION_LEN);
+ strncpy(nv_sw_info.last_update_file.gen_time, MCF_UT_GEN_TIME, MCF_FILE_MAX_GEN_TIME_LEN);
+ strcpy(nv_sw_info.last_update_file.path, "");
+ strcpy(nv_sw_info.last_update_file.name, "");
+ if ( !nvram_external_write_data(NVRAM_EF_MCF_SW_INFO_LID, 1, (kal_uint8 *)&nv_sw_info, sizeof(nvram_ef_mcf_sw_info_struct)) ) {
+ mcf_ut_format_err_str("Fail to write MCF sw info to NVRAM!!\r\n");
+ return KAL_FALSE;
+ }
+
+ //buffer operation - val_long_1
+ req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_WRITE_OTA;
+ req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
+ req->num = 5113;
+ req->rec_id = 1;
+ req->len = 1;
+ strcpy((kal_char *)(req->value), "be15");
+
+ cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_set_variable_value(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "VAL_BYTE_11");
+ return KAL_FALSE;
+ }
+
+ MCF_W_LOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ if (ota_file) {
+ kal_mem_cpy(ota_file->buff, mcf_merge_buffer, MCF_MAX_OTA_FILE_SIZE);
+
+ MCF_W_UNLOCK_OBJECT(ota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Do full OTA FAIL!! Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+
+ mcf_ret = mcf_do_ota_full();
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Reset LID FAIL!! ret(%d) \r\n", mcf_ret);
+ return KAL_FALSE;
+ }
+
+ if ( !nvram_external_read_data(NVRAM_EF_MCF_TEST_OTA_LID, 1, &lid_buffer, sizeof(nvram_ef_mcf_test_struct)) ) {
+ printf("Fail to read NVRAM_EF_MCF_TEST_OTA_LID!!\r\n");
+ ret = KAL_FALSE;
+ }
+
+ kal_mem_set(test_pattern,0,512);
+ mcf_bytes_to_hex(&(lid_buffer.val_long_1), cnf->len, KAL_FALSE, &test_pattern);
+ mcf_toupper((char *)test_pattern);
+ mcf_toupper((char *)req->value);
+
+ if(strncmp(test_pattern, "BE15000000000000", cnf->len*2) != 0){
+ mcf_ut_format_err_str("val_long_1, %s, %s\r\n", "BE15000000000000", test_pattern);
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 8){
+ mcf_ut_format_err_str("val_long_1, %d, %d\r\n", cnf->len, 1);
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+
+ /*Test TLVOTA file*/
+ /* Write MCF TLV-OTA file version to NVRAM */
+ kal_mem_set(&nv_tlvota_file, 0, sizeof(nvram_ef_mcf_tlvota_file_info_struct));
+ strncpy(nv_tlvota_file.path, MCF_FS_DEFAULT_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN);
+ strncpy(nv_tlvota_file.name, MCF_FS_DEFAULT_TLVOTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN);
+ 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)) ) {
+ mcf_ut_format_err_str("Fail to write MCF TLV-OTA file info to NVRAM!!\r\n");
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(&sbp_tag, 0, sizeof(mcf_tlvota_sbp_tag_t));
+ sbp_tag.sbp_id = SBP_TAG_SBPID;
+ strncpy(sbp_tag.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
+ strncpy(sbp_tag.mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
+
+ for (i = 0; i < MAX_SIM_NUM; i++) {
+ tlvota_file = &(pMcf->tlvota_file[i]);
+ tlvota_file->sbp_id = SBP_TAG_SBPID;
+ strncpy(tlvota_file->mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
+ strncpy(tlvota_file->mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
+
+ //Byte operation - VAL_BYTE_11
+ req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_WRITE_OPOTA;
+ req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
+ req->num = MCF_TEST_OTA_LID_BASE_GID+44;
+ req->ps_id = i;
+ req->len = 1;
+ kal_mem_set(array_tag, 0, 16);
+ strcpy(req->config, array_tag);
+ int_value = 64;
+ mcf_bytes_to_hex(&int_value, 1, KAL_FALSE, &value);
+ strcpy((kal_char *)(req->value), value);
+
+ cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
+
+
+ mcf_ret = mcf_set_variable_value(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "VAL_BYTE_11");
+ return KAL_FALSE;
+ }
+
+ MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ if (tlvota_file) {
+ kal_mem_cpy(tlvota_file->buff, mcf_merge_buffer, MCF_MAX_TLVOTA_FILE_SIZE);
+
+ MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(&lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
+
+ 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));
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! i(%d), ret(%d) \r\n", i, mcf_ret);
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(test_pattern,0,512);
+ mcf_bytes_to_hex(&(lid_buffer.val_byte_11), 1, KAL_FALSE, &test_pattern);
+ mcf_toupper((char *)test_pattern);
+ mcf_toupper((char *)req->value);
+
+ if(strncmp((kal_char *)(req->value), test_pattern, cnf->len*2) != 0){
+ mcf_ut_format_err_str("VAL_BYTE_11, %s, %s\r\n", req->value, test_pattern);
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 1){
+ mcf_ut_format_err_str("VAL_BYTE_11, %d, %d\r\n", cnf->len, 1);
+ return KAL_FALSE;
+ }
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+ }
+
+ //Bit operation - VAL_BIT_BYTE_11
+ /* Write MCF TLV-OTA file version to NVRAM */
+ kal_mem_set(&nv_tlvota_file, 0, sizeof(nvram_ef_mcf_tlvota_file_info_struct));
+ strncpy(nv_tlvota_file.path, MCF_FS_DEFAULT_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN);
+ strncpy(nv_tlvota_file.name, MCF_FS_DEFAULT_TLVOTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN);
+ 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)) ) {
+ mcf_ut_format_err_str("Fail to write MCF TLV-OTA file info to NVRAM!!\r\n");
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(&sbp_tag, 0, sizeof(mcf_tlvota_sbp_tag_t));
+ sbp_tag.sbp_id = SBP_TAG_SBPID;
+ strncpy(sbp_tag.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
+ strncpy(sbp_tag.mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
+
+ for (i = 0; i < MAX_SIM_NUM; i++) {
+ tlvota_file = &(pMcf->tlvota_file[i]);
+ tlvota_file->sbp_id = SBP_TAG_SBPID;
+ strncpy(tlvota_file->mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
+ strncpy(tlvota_file->mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
+
+ //Byte operation - VAL_BYTE_11
+ req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_WRITE_OPOTA;
+ req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
+ req->num = MCF_TEST_OTA_LID_BASE_GID+18;
+ req->ps_id = i;
+ req->len = 1;
+ kal_mem_set(array_tag, 0, 16);
+ strcpy(req->config, array_tag);
+ int_value = 255;
+ mcf_bytes_to_hex(&int_value, 1, KAL_FALSE, &value);
+ strcpy((kal_char *)(req->value), value);
+
+ cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
+
+
+ mcf_ret = mcf_set_variable_value(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "VAL_BYTE_11");
+ return KAL_FALSE;
+ }
+
+ MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ if (tlvota_file) {
+ kal_mem_cpy(tlvota_file->buff, mcf_merge_buffer, MCF_MAX_TLVOTA_FILE_SIZE);
+
+ MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(&lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
+
+ 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));
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! i(%d), ret(%d) \r\n", i, mcf_ret);
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(test_pattern,0,512);
+ mcf_bytes_to_hex(&(lid_buffer.val_bit_byte_11), 1, KAL_FALSE, &test_pattern);
+ mcf_toupper((char *)test_pattern);
+ mcf_toupper((char *)req->value);
+
+ if(strncmp((kal_char *)(req->value), test_pattern, cnf->len*2) != 0){
+ mcf_ut_format_err_str("val_bit_byte_11, %s, %s\r\n", req->value, test_pattern);
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 1){
+ mcf_ut_format_err_str("val_bit_byte_11, %d, %d\r\n", cnf->len, 1);
+ return KAL_FALSE;
+ }
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+ }
+
+ //Bit operation - VAL_BIT_BYTE_11.B3
+ /* Write MCF TLV-OTA file version to NVRAM */
+ kal_mem_set(&nv_tlvota_file, 0, sizeof(nvram_ef_mcf_tlvota_file_info_struct));
+ strncpy(nv_tlvota_file.path, MCF_FS_DEFAULT_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN);
+ strncpy(nv_tlvota_file.name, MCF_FS_DEFAULT_TLVOTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN);
+ 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)) ) {
+ mcf_ut_format_err_str("Fail to write MCF TLV-OTA file info to NVRAM!!\r\n");
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(&sbp_tag, 0, sizeof(mcf_tlvota_sbp_tag_t));
+ sbp_tag.sbp_id = SBP_TAG_SBPID;
+ strncpy(sbp_tag.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
+ strncpy(sbp_tag.mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
+
+ for (i = 0; i < MAX_SIM_NUM; i++) {
+ tlvota_file = &(pMcf->tlvota_file[i]);
+ tlvota_file->sbp_id = SBP_TAG_SBPID;
+ strncpy(tlvota_file->mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
+ strncpy(tlvota_file->mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
+
+ //Byte operation - VAL_BIT_BYTE_11.B3
+ req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_WRITE_OPOTA;
+ req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
+ req->num = MCF_TEST_OTA_LID_BASE_GID+21;
+ req->ps_id = i;
+ req->len = 1;
+ kal_mem_set(array_tag, 0, 16);
+ strcpy(req->config, array_tag);
+ int_value = 255;
+ mcf_bytes_to_hex(&int_value, 1, KAL_FALSE, &value);
+ strcpy((kal_char *)(req->value), value);
+
+ cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
+
+
+ mcf_ret = mcf_set_variable_value(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "VAL_BYTE_11");
+ return KAL_FALSE;
+ }
+
+ MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ if (tlvota_file) {
+ kal_mem_cpy(tlvota_file->buff, mcf_merge_buffer, MCF_MAX_TLVOTA_FILE_SIZE);
+
+ MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+
+ query_req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
+ query_req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
+ query_req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OPOTA;
+ query_req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
+ query_req->num = MCF_TEST_OTA_LID_BASE_GID+21;
+ query_req->ps_id = i;
+ query_req->len = 0;
+ kal_mem_set(array_tag, 0, 16);
+ strcpy(query_req->config, array_tag);
+
+ query_cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_query_variable_value(query_req, query_cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "VAL_BIT_BYTE_11.B3");
+ return KAL_FALSE;
+ }
+
+ if(strncmp(query_cnf->value, "01", cnf->len*2) != 0){
+ mcf_ut_format_err_str("VAL_BIT_BYTE_11.B3, %s, %s\r\n", cnf->value, "01");
+ return KAL_FALSE;
+ }
+
+
+ if(cnf->len != 1){
+ mcf_ut_format_err_str("VAL_BIT_BYTE_11.B3, %d, %d\r\n", cnf->len, 1);
+ return KAL_FALSE;
+ }
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+ free_local_para((local_para_struct *)query_req);
+ free_local_para((local_para_struct *)query_cnf);
+ }
+
+ //Bit operation - val_bit_byte_12
+ /* Write MCF TLV-OTA file version to NVRAM */
+ kal_mem_set(&nv_tlvota_file, 0, sizeof(nvram_ef_mcf_tlvota_file_info_struct));
+ strncpy(nv_tlvota_file.path, MCF_FS_DEFAULT_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN);
+ strncpy(nv_tlvota_file.name, MCF_FS_DEFAULT_TLVOTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN);
+ 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)) ) {
+ mcf_ut_format_err_str("Fail to write MCF TLV-OTA file info to NVRAM!!\r\n");
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(&sbp_tag, 0, sizeof(mcf_tlvota_sbp_tag_t));
+ sbp_tag.sbp_id = SBP_TAG_SBPID;
+ strncpy(sbp_tag.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
+ strncpy(sbp_tag.mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
+
+ for (i = 0; i < MAX_SIM_NUM; i++) {
+ tlvota_file = &(pMcf->tlvota_file[i]);
+ tlvota_file->sbp_id = SBP_TAG_SBPID;
+ strncpy(tlvota_file->mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
+ strncpy(tlvota_file->mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
+
+ //Byte operation - VAL_BYTE_11
+ req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_WRITE_OPOTA;
+ req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
+ req->num = MCF_TEST_OTA_LID_BASE_GID+27;
+ req->ps_id = i;
+ req->len = 1;
+ kal_mem_set(array_tag, 0, 16);
+ strcpy(req->config, array_tag);
+ int_value = 16;
+ mcf_bytes_to_hex(&int_value, 1, KAL_FALSE, &value);
+ strcpy((kal_char *)(req->value), value);
+
+ cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
+
+
+ mcf_ret = mcf_set_variable_value(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "VAL_BYTE_11");
+ return KAL_FALSE;
+ }
+
+ MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ if (tlvota_file) {
+ kal_mem_cpy(tlvota_file->buff, mcf_merge_buffer, MCF_MAX_TLVOTA_FILE_SIZE);
+
+ MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(&lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
+
+ 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));
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! i(%d), ret(%d) \r\n", i, mcf_ret);
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(test_pattern,0,512);
+ mcf_bytes_to_hex(&(lid_buffer.val_bit_byte_12), 1, KAL_FALSE, &test_pattern);
+ mcf_toupper((char *)test_pattern);
+ mcf_toupper((char *)req->value);
+
+ if(strncmp((kal_char *)(req->value), test_pattern, cnf->len*2) != 0){
+ mcf_ut_format_err_str("val_bit_byte_12, %s, %s\r\n", req->value, test_pattern);
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 1){
+ mcf_ut_format_err_str("val_bit_byte_12, %d, %d\r\n", cnf->len, 1);
+ return KAL_FALSE;
+ }
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+ }
+
+ //Bit operation - val_bit_byte_12.L4b
+ /* Write MCF TLV-OTA file version to NVRAM */
+ kal_mem_set(&nv_tlvota_file, 0, sizeof(nvram_ef_mcf_tlvota_file_info_struct));
+ strncpy(nv_tlvota_file.path, MCF_FS_DEFAULT_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN);
+ strncpy(nv_tlvota_file.name, MCF_FS_DEFAULT_TLVOTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN);
+ 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)) ) {
+ mcf_ut_format_err_str("Fail to write MCF TLV-OTA file info to NVRAM!!\r\n");
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(&sbp_tag, 0, sizeof(mcf_tlvota_sbp_tag_t));
+ sbp_tag.sbp_id = SBP_TAG_SBPID;
+ strncpy(sbp_tag.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
+ strncpy(sbp_tag.mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
+
+ for (i = 0; i < MAX_SIM_NUM; i++) {
+ tlvota_file = &(pMcf->tlvota_file[i]);
+ tlvota_file->sbp_id = SBP_TAG_SBPID;
+ strncpy(tlvota_file->mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
+ strncpy(tlvota_file->mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
+
+ //Byte operation - VAL_BYTE_11
+ req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_WRITE_OPOTA;
+ req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
+ req->num = MCF_TEST_OTA_LID_BASE_GID+29;
+ req->ps_id = i;
+ req->len = 1;
+ kal_mem_set(array_tag, 0, 16);
+ strcpy(req->config, array_tag);
+ int_value = 15;
+ mcf_bytes_to_hex(&int_value, 1, KAL_FALSE, &value);
+ strcpy((kal_char *)(req->value), value);
+
+ cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
+
+
+ mcf_ret = mcf_set_variable_value(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "VAL_BYTE_11");
+ return KAL_FALSE;
+ }
+
+ MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ if (tlvota_file) {
+ kal_mem_cpy(tlvota_file->buff, mcf_merge_buffer, MCF_MAX_TLVOTA_FILE_SIZE);
+
+ MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+
+ query_req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
+ query_req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
+ query_req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_READ_OPOTA;
+ query_req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
+ query_req->num = MCF_TEST_OTA_LID_BASE_GID+29;
+ query_req->ps_id = i;
+ query_req->len = 0;
+ kal_mem_set(array_tag, 0, 16);
+ strcpy(query_req->config, array_tag);
+
+ query_cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_query_variable_value(query_req, query_cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "VAL_BIT_BYTE_11.B3");
+ return KAL_FALSE;
+ }
+
+ if(strncmp(query_cnf->value, "0F", cnf->len*2) != 0){
+ mcf_ut_format_err_str("VAL_BIT_BYTE_12.L4B, %s, %s\r\n", cnf->value, "01");
+ return KAL_FALSE;
+ }
+
+
+ if(query_cnf->len != 1){
+ mcf_ut_format_err_str("VAL_BIT_BYTE_12.L4B, %d, %d\r\n", cnf->len, 1);
+ return KAL_FALSE;
+ }
+
+
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+ free_local_para((local_para_struct *)query_req);
+ free_local_para((local_para_struct *)query_cnf);
+ }
+
+ //short operation - val_short_11
+ /* Write MCF TLV-OTA file version to NVRAM */
+ kal_mem_set(&nv_tlvota_file, 0, sizeof(nvram_ef_mcf_tlvota_file_info_struct));
+ strncpy(nv_tlvota_file.path, MCF_FS_DEFAULT_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN);
+ strncpy(nv_tlvota_file.name, MCF_FS_DEFAULT_TLVOTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN);
+ 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)) ) {
+ mcf_ut_format_err_str("Fail to write MCF TLV-OTA file info to NVRAM!!\r\n");
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(&sbp_tag, 0, sizeof(mcf_tlvota_sbp_tag_t));
+ sbp_tag.sbp_id = SBP_TAG_SBPID;
+ strncpy(sbp_tag.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
+ strncpy(sbp_tag.mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
+
+ for (i = 0; i < MAX_SIM_NUM; i++) {
+ tlvota_file = &(pMcf->tlvota_file[i]);
+ tlvota_file->sbp_id = SBP_TAG_SBPID;
+ strncpy(tlvota_file->mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
+ strncpy(tlvota_file->mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
+
+ //Byte operation - VAL_BYTE_11
+ req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_WRITE_OPOTA;
+ req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
+ req->num = MCF_TEST_OTA_LID_BASE_GID+56;
+ req->ps_id = i;
+ req->len = 1;
+ kal_mem_set(array_tag, 0, 16);
+ strcpy(req->config, array_tag);
+ sh_value = 256;
+ mcf_bytes_to_hex(&sh_value, 2, KAL_FALSE, &value);
+ strcpy((kal_char *)(req->value), value);
+
+ cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_set_variable_value(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "VAL_BYTE_11");
+ return KAL_FALSE;
+ }
+
+ MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ if (tlvota_file) {
+ kal_mem_cpy(tlvota_file->buff, mcf_merge_buffer, MCF_MAX_TLVOTA_FILE_SIZE);
+
+ MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(&lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
+
+ 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));
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! i(%d), ret(%d) \r\n", i, mcf_ret);
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(test_pattern,0,512);
+ mcf_bytes_to_hex(&(lid_buffer.val_short_11), 2, KAL_FALSE, &test_pattern);
+ mcf_toupper((char *)test_pattern);
+ mcf_toupper((char *)req->value);
+
+ if(strncmp((kal_char *)(req->value), test_pattern, cnf->len*2) != 0){
+ mcf_ut_format_err_str("val_short_11, %s, %s\r\n", cnf->value, test_pattern);
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 2){
+ mcf_ut_format_err_str("val_short_11, %d, %d\r\n", cnf->len, 2);
+ return KAL_FALSE;
+ }
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+ }
+
+ //double operation - val_double_1
+ /* Write MCF TLV-OTA file version to NVRAM */
+ kal_mem_set(&nv_tlvota_file, 0, sizeof(nvram_ef_mcf_tlvota_file_info_struct));
+ strncpy(nv_tlvota_file.path, MCF_FS_DEFAULT_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN);
+ strncpy(nv_tlvota_file.name, MCF_FS_DEFAULT_TLVOTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN);
+ 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)) ) {
+ mcf_ut_format_err_str("Fail to write MCF TLV-OTA file info to NVRAM!!\r\n");
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(&sbp_tag, 0, sizeof(mcf_tlvota_sbp_tag_t));
+ sbp_tag.sbp_id = SBP_TAG_SBPID;
+ strncpy(sbp_tag.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
+ strncpy(sbp_tag.mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
+
+ for (i = 0; i < MAX_SIM_NUM; i++) {
+ tlvota_file = &(pMcf->tlvota_file[i]);
+ tlvota_file->sbp_id = SBP_TAG_SBPID;
+ strncpy(tlvota_file->mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
+ strncpy(tlvota_file->mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
+
+ //Byte operation - VAL_BYTE_11
+ req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_WRITE_OPOTA;
+ req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
+ req->num = MCF_TEST_OTA_LID_BASE_GID+48;
+ req->ps_id = i;
+ req->len = 1;
+ kal_mem_set(array_tag, 0, 16);
+ strcpy(req->config, array_tag);
+ db_value = 6.6;
+ mcf_bytes_to_hex(&db_value, 8, KAL_FALSE, &value);
+ strcpy((kal_char *)(req->value), value);
+
+ cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_set_variable_value(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "VAL_BYTE_11");
+ return KAL_FALSE;
+ }
+
+ MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ if (tlvota_file) {
+ kal_mem_cpy(tlvota_file->buff, mcf_merge_buffer, MCF_MAX_TLVOTA_FILE_SIZE);
+
+ MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(&lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
+
+ 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));
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! i(%d), ret(%d) \r\n", i, mcf_ret);
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(test_pattern,0,512);
+ mcf_bytes_to_hex(&(lid_buffer.val_double_1), cnf->len, KAL_FALSE, &test_pattern);
+ mcf_toupper((char *)test_pattern);
+ mcf_toupper((char *)req->value);
+
+ if(strncmp((kal_char *)(req->value), test_pattern, cnf->len*2) != 0){
+ mcf_ut_format_err_str("val_double_1, %s, %s\r\n", cnf->value, test_pattern);
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 8){
+ mcf_ut_format_err_str("val_double_1, %d, %d\r\n", cnf->len, 8);
+ return KAL_FALSE;
+ }
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+ }
+
+ //buffer operation - val_buffer_1[0]
+ /* Write MCF TLV-OTA file version to NVRAM */
+ kal_mem_set(&nv_tlvota_file, 0, sizeof(nvram_ef_mcf_tlvota_file_info_struct));
+ strncpy(nv_tlvota_file.path, MCF_FS_DEFAULT_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN);
+ strncpy(nv_tlvota_file.name, MCF_FS_DEFAULT_TLVOTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN);
+ 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)) ) {
+ mcf_ut_format_err_str("Fail to write MCF TLV-OTA file info to NVRAM!!\r\n");
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(&sbp_tag, 0, sizeof(mcf_tlvota_sbp_tag_t));
+ sbp_tag.sbp_id = SBP_TAG_SBPID;
+ strncpy(sbp_tag.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
+ strncpy(sbp_tag.mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
+
+ for (i = 0; i < MAX_SIM_NUM; i++) {
+ tlvota_file = &(pMcf->tlvota_file[i]);
+ tlvota_file->sbp_id = SBP_TAG_SBPID;
+ strncpy(tlvota_file->mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
+ strncpy(tlvota_file->mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
+
+ //Byte operation - VAL_BYTE_11
+ req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_WRITE_OPOTA;
+ req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
+ req->num = MCF_TEST_OTA_LID_BASE_GID+42;
+ req->ps_id = i;
+ req->len = 1;
+ strcpy(req->config, "0");
+ ch_value = 'M';
+ mcf_bytes_to_hex(&ch_value, 1, KAL_FALSE, &value);
+ strcpy((kal_char *)(req->value), value);
+
+ cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_set_variable_value(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "VAL_BYTE_11");
+ return KAL_FALSE;
+ }
+
+ MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ if (tlvota_file) {
+ kal_mem_cpy(tlvota_file->buff, mcf_merge_buffer, MCF_MAX_TLVOTA_FILE_SIZE);
+
+ MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(&lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
+
+ 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));
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! i(%d), ret(%d) \r\n", i, mcf_ret);
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(test_pattern,0,512);
+ mcf_bytes_to_hex(&(lid_buffer.val_buffer_1), cnf->len, KAL_FALSE, &test_pattern);
+ mcf_toupper((char *)test_pattern);
+ mcf_toupper((char *)req->value);
+
+ if(strncmp((kal_char *)(req->value), test_pattern, cnf->len*2) != 0){
+ mcf_ut_format_err_str("val_buffer_1[0], %s, %s\r\n", cnf->value, test_pattern);
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 1){
+ mcf_ut_format_err_str("val_buffer_1[0], %d, %d\r\n", cnf->len, 1);
+ return KAL_FALSE;
+ }
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+ }
+
+ //float operation - val_struct_1.vfloat
+ /* Write MCF TLV-OTA file version to NVRAM */
+ kal_mem_set(&nv_tlvota_file, 0, sizeof(nvram_ef_mcf_tlvota_file_info_struct));
+ strncpy(nv_tlvota_file.path, MCF_FS_DEFAULT_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN);
+ strncpy(nv_tlvota_file.name, MCF_FS_DEFAULT_TLVOTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN);
+ 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)) ) {
+ mcf_ut_format_err_str("Fail to write MCF TLV-OTA file info to NVRAM!!\r\n");
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(&sbp_tag, 0, sizeof(mcf_tlvota_sbp_tag_t));
+ sbp_tag.sbp_id = SBP_TAG_SBPID;
+ strncpy(sbp_tag.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
+ strncpy(sbp_tag.mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
+
+ for (i = 0; i < MAX_SIM_NUM; i++) {
+ tlvota_file = &(pMcf->tlvota_file[i]);
+ tlvota_file->sbp_id = SBP_TAG_SBPID;
+ strncpy(tlvota_file->mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
+ strncpy(tlvota_file->mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
+
+ //Byte operation - VAL_BYTE_11
+ req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_WRITE_OPOTA;
+ req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
+ req->num = MCF_TEST_OTA_LID_BASE_GID+78;
+ req->ps_id = i;
+ req->len = 4;
+ strcpy(req->config, "");
+ fl_value = 0.4;
+ mcf_bytes_to_hex(&fl_value, 4, KAL_FALSE, &value);
+ strcpy((kal_char *)(req->value), value);
+
+ cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_set_variable_value(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "VAL_BYTE_11");
+ return KAL_FALSE;
+ }
+
+ MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ if (tlvota_file) {
+ kal_mem_cpy(tlvota_file->buff, mcf_merge_buffer, MCF_MAX_TLVOTA_FILE_SIZE);
+
+ MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(&lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
+
+ 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));
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! i(%d), ret(%d) \r\n", i, mcf_ret);
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(test_pattern,0,512);
+ mcf_bytes_to_hex(&(lid_buffer.val_struct_1.vfloat), cnf->len, KAL_FALSE, &test_pattern);
+ mcf_toupper((char *)test_pattern);
+ mcf_toupper((char *)req->value);
+
+ if(strncmp((kal_char *)(req->value), test_pattern, cnf->len*2) != 0){
+ mcf_ut_format_err_str("val_struct_1.vfloat, %s, %s\r\n", cnf->value, test_pattern);
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 4){
+ mcf_ut_format_err_str("val_struct_1.vfloat, %d, %d\r\n", cnf->len, 4);
+ return KAL_FALSE;
+ }
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+ }
+
+ //int in struct operation - val_struct_3[0].vint
+ /* Write MCF TLV-OTA file version to NVRAM */
+ kal_mem_set(&nv_tlvota_file, 0, sizeof(nvram_ef_mcf_tlvota_file_info_struct));
+ strncpy(nv_tlvota_file.path, MCF_FS_DEFAULT_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN);
+ strncpy(nv_tlvota_file.name, MCF_FS_DEFAULT_TLVOTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN);
+ 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)) ) {
+ mcf_ut_format_err_str("Fail to write MCF TLV-OTA file info to NVRAM!!\r\n");
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(&sbp_tag, 0, sizeof(mcf_tlvota_sbp_tag_t));
+ sbp_tag.sbp_id = SBP_TAG_SBPID;
+ strncpy(sbp_tag.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
+ strncpy(sbp_tag.mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
+
+ for (i = 0; i < MAX_SIM_NUM; i++) {
+ tlvota_file = &(pMcf->tlvota_file[i]);
+ tlvota_file->sbp_id = SBP_TAG_SBPID;
+ strncpy(tlvota_file->mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
+ strncpy(tlvota_file->mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
+
+ //Byte operation - VAL_BYTE_11
+ req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_WRITE_OPOTA;
+ req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
+ req->num = MCF_TEST_OTA_LID_BASE_GID+125;
+ req->ps_id = i;
+ req->len = 0;
+ strcpy(req->config, "0");
+ int_value = 66;
+ mcf_bytes_to_hex(&int_value, 4, KAL_FALSE, &value);
+ strcpy((kal_char *)(req->value), value);
+
+ cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_set_variable_value(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "VAL_BYTE_11");
+ return KAL_FALSE;
+ }
+
+ MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ if (tlvota_file) {
+ kal_mem_cpy(tlvota_file->buff, mcf_merge_buffer, MCF_MAX_TLVOTA_FILE_SIZE);
+
+ MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(&lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
+
+ 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));
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! i(%d), ret(%d) \r\n", i, mcf_ret);
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(test_pattern,0,512);
+ mcf_bytes_to_hex(&(lid_buffer.val_struct_3[0].vint), cnf->len, KAL_FALSE, &test_pattern);
+ mcf_toupper((char *)test_pattern);
+ mcf_toupper((char *)req->value);
+
+ if(strncmp((kal_char *)(req->value), test_pattern, cnf->len*2) != 0){
+ mcf_ut_format_err_str("val_struct_3[0].vint, %s, %s\r\n", cnf->value, test_pattern);
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 4){
+ mcf_ut_format_err_str("val_struct_3[0].vint, %d, %d\r\n", cnf->len, 4);
+ return KAL_FALSE;
+ }
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+ }
+
+ //buffer in struct operation - VAL_STRUCT_3[3].VBUFFER[2][4][5]
+ /* Write MCF TLV-OTA file version to NVRAM */
+ kal_mem_set(&nv_tlvota_file, 0, sizeof(nvram_ef_mcf_tlvota_file_info_struct));
+ strncpy(nv_tlvota_file.path, MCF_FS_DEFAULT_FOLDER_PATH, MCF_FILE_MAX_MD_PATH_LEN);
+ strncpy(nv_tlvota_file.name, MCF_FS_DEFAULT_TLVOTA_FILE_NAME, MCF_FILE_MAX_NAME_LEN);
+ 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)) ) {
+ mcf_ut_format_err_str("Fail to write MCF TLV-OTA file info to NVRAM!!\r\n");
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(&sbp_tag, 0, sizeof(mcf_tlvota_sbp_tag_t));
+ sbp_tag.sbp_id = SBP_TAG_SBPID;
+ strncpy(sbp_tag.mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
+ strncpy(sbp_tag.mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
+
+ for (i = 0; i < MAX_SIM_NUM; i++) {
+ tlvota_file = &(pMcf->tlvota_file[i]);
+ tlvota_file->sbp_id = SBP_TAG_SBPID;
+ strncpy(tlvota_file->mcc, SBP_TAG_MCC, MAX_MCC_STR_LEN);
+ strncpy(tlvota_file->mnc, SBP_TAG_MNC, MAX_MNC_STR_LEN);
+
+ //Byte operation - VAL_BYTE_11
+ req = (l4c_mcf_variable_value_operation_req_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_req_struct), TD_RESET);
+ req->op = L4C_MCF_CONFIG_VARIABLE_VALUE_OPERATION;
+ req->action = L4C_MCF_CONFIG_LID_VARIABLE_ACT_WRITE_OPOTA;
+ req->format = L4C_MCF_QUERY_VARIABLE_FORM_GID;
+ req->num = MCF_TEST_OTA_LID_BASE_GID+120;
+ req->ps_id = i;
+ req->len = 0;
+ strcpy(req->config, "3,2,4,5");
+ ch_value = 'C';
+ mcf_bytes_to_hex(&ch_value, 1, KAL_FALSE, &value);
+ strcpy((kal_char *)(req->value), value);
+
+ cnf = (l4c_mcf_variable_value_operation_cnf_struct *)construct_local_para(sizeof(l4c_mcf_variable_value_operation_cnf_struct), TD_RESET);
+
+ mcf_ret = mcf_set_variable_value(req, cnf);
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("GID Query Variable Value (%s) FAIL!!\r\n", "VAL_BYTE_11");
+ return KAL_FALSE;
+ }
+
+ MCF_W_LOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ if (tlvota_file) {
+ kal_mem_cpy(tlvota_file->buff, mcf_merge_buffer, MCF_MAX_TLVOTA_FILE_SIZE);
+
+ MCF_W_UNLOCK_OBJECT(tlvota_file, mcf_enhmutex_g);
+ } else {
+ mcf_ut_format_err_str("Fail to take write lock! \r\n");
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(&lid_buffer, 0, sizeof(nvram_ef_mcf_test_struct));
+
+ 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));
+ if (mcf_ret != MCF_OTA_R_SUCCESS) {
+ mcf_ut_format_err_str("Read TLV-OTA by LID & sbp_tag FAIL!! i(%d), ret(%d) \r\n", i, mcf_ret);
+ return KAL_FALSE;
+ }
+
+ kal_mem_set(test_pattern,0,512);
+ mcf_bytes_to_hex(&(lid_buffer.val_struct_3[3].vbuffer[2]), cnf->len, KAL_FALSE, &test_pattern);
+ mcf_toupper((char *)test_pattern);
+ mcf_toupper((char *)req->value);
+
+ if(strncmp((kal_char *)(req->value), test_pattern, cnf->len*2) != 0){
+ mcf_ut_format_err_str("VAL_STRUCT_3[3].VBUFFER[2][4][5], %s, %s\r\n", cnf->value, test_pattern);
+ return KAL_FALSE;
+ }
+
+ if(cnf->len != 1){
+ mcf_ut_format_err_str("VAL_STRUCT_3[3].VBUFFER[2][4][5], %d, %d\r\n", cnf->len, 1);
+ return KAL_FALSE;
+ }
+ free_local_para((local_para_struct *)req);
+ free_local_para((local_para_struct *)cnf);
+ }
+
+ MCF_UT_PASS();
+ return KAL_TRUE;
+}
+#endif
+
+kal_char mcf_ut_digest_file[MCF_MAX_OTA_FILE_SIZE];
+kal_bool mcf_ut_mcf_verify_digest(void *p_param, kal_char *p_ret_err_str, kal_uint32 *p_ret_err_str_sz)
+{
+ kal_uint32 ret = KAL_TRUE;
+ kal_uint32 checksum = KAL_TRUE;
+ mcf_tool_file_info_t *ota_file;
+ mcf_digest *sign;
+
+ // CASE1 : verify pure digest by SHA256+RSA2048
+ ret = mcf_ut_open_test_data("SHA256_RSA2048.mcfota", mcf_ut_digest_file, MCF_MAX_OTA_FILE_SIZE);
+ if(ret == KAL_FALSE) return KAL_FALSE;
+
+ ota_file = (mcf_tool_file_info_t *) mcf_ut_digest_file;
+ sign = (kal_char *)ota_file + ota_file->file_size;
+
+ ret = mcf_verify_digest(MCF_FILE_OP_SHA256_RSA2048, ota_file, sign);
+ if(ret == KAL_FALSE) return KAL_FALSE;
+
+ // CASE2 : verify AES128 & digest by SHA256+RSA2048
+
+ ret = mcf_ut_open_test_data("AES128_SHA256_RSA2048.mcfota", mcf_ut_digest_file, MCF_MAX_OTA_FILE_SIZE);
+ if(ret == KAL_FALSE) return KAL_FALSE;
+
+ ota_file = (mcf_tool_file_info_t *) mcf_ut_digest_file;
+ sign = (kal_char *)ota_file + ota_file->file_size;
+
+ ret = mcf_verify_digest(MCF_FILE_OP_SHA256_RSA2048, ota_file, sign);
+ if(ret == KAL_FALSE) return KAL_FALSE;
+
+ {
+ kal_char password[32] = { '\0' };
+ mcf_get_custom_aes_password(password);
+ mcf_decrypt_128bit((kal_char *)password, ((kal_char *)ota_file + ota_file->total_len), (ota_file->file_size - ota_file->total_len));
+ checksum = mcf_check_check_sum((kal_uint32 *)(ota_file), ota_file->file_size);
+ if(checksum != 0) return KAL_FALSE;
+ }
+
+ // CASE3 : verify AES256 & digest by SHA256+RSA2048
+
+ ret = mcf_ut_open_test_data("AES256_SHA256_RSA2048.mcfota", mcf_ut_digest_file, MCF_MAX_OTA_FILE_SIZE);
+ if(ret == KAL_FALSE) return KAL_FALSE;
+
+ ota_file = (mcf_tool_file_info_t *) mcf_ut_digest_file;
+ sign = (kal_char *)ota_file + ota_file->file_size;
+
+ ret = mcf_verify_digest(MCF_FILE_OP_SHA256_RSA2048, ota_file, sign);
+ if(ret == KAL_FALSE) return KAL_FALSE;
+
+ {
+ kal_char password[32] = { '\0' };
+ mcf_get_custom_aes_password(password);
+ mcf_decrypt_256bit((kal_char *)password, ((kal_char *)ota_file + ota_file->total_len), (ota_file->file_size - ota_file->total_len));
+ checksum = mcf_check_check_sum((kal_uint32 *)(ota_file), ota_file->file_size);
+ if(checksum != 0) return KAL_FALSE;
+ }
+
+ // CASE4 : verify pure digest by SHA384+RSA3072
+ ret = mcf_ut_open_test_data("SHA384_RSA3072.mcfota", mcf_ut_digest_file, MCF_MAX_OTA_FILE_SIZE);
+ if(ret == KAL_FALSE) return KAL_FALSE;
+
+ ota_file = (mcf_tool_file_info_t *) mcf_ut_digest_file;
+ sign = (kal_char *)ota_file + ota_file->file_size;
+
+ ret = mcf_verify_digest(MCF_FILE_OP_SHA384_RSA3072, ota_file, sign);
+ if(ret == KAL_FALSE) return KAL_FALSE;
+
+ // CASE5 : verify AES128 & pure digest by SHA384+RSA3072
+
+ ret = mcf_ut_open_test_data("AES128_SHA384_RSA3072.mcfota", mcf_ut_digest_file, MCF_MAX_OTA_FILE_SIZE);
+ if(ret == KAL_FALSE) return KAL_FALSE;
+
+ ota_file = (mcf_tool_file_info_t *) mcf_ut_digest_file;
+ sign = (kal_char *)ota_file + ota_file->file_size;
+
+ ret = mcf_verify_digest(MCF_FILE_OP_SHA384_RSA3072, ota_file, sign);
+ if(ret == KAL_FALSE) return KAL_FALSE;
+
+ {
+ kal_char password[32] = { '\0' };
+ mcf_get_custom_aes_password(password);
+ mcf_decrypt_128bit((kal_char *)password, ((kal_char *)ota_file + ota_file->total_len), (ota_file->file_size - ota_file->total_len));
+ checksum = mcf_check_check_sum((kal_uint32 *)(ota_file), ota_file->file_size);
+ if(checksum != 0) return KAL_FALSE;
+ }
+
+ // CASE6 : verify AES256 & pure digest by SHA384+RSA3072
+
+ ret = mcf_ut_open_test_data("AES256_SHA384_RSA3072.mcfota", mcf_ut_digest_file, MCF_MAX_OTA_FILE_SIZE);
+ if(ret == KAL_FALSE) return KAL_FALSE;
+
+ ota_file = (mcf_tool_file_info_t *) mcf_ut_digest_file;
+ sign = (kal_char *)ota_file + ota_file->file_size;
+
+ ret = mcf_verify_digest(MCF_FILE_OP_SHA384_RSA3072, ota_file, sign);
+ if(ret == KAL_FALSE) return KAL_FALSE;
+
+ {
+ kal_char password[32] = { '\0' };
+ mcf_get_custom_aes_password(password);
+ mcf_decrypt_256bit((kal_char *)password, ((kal_char *)ota_file + ota_file->total_len), (ota_file->file_size - ota_file->total_len));
+ checksum = mcf_check_check_sum((kal_uint32 *)(ota_file), ota_file->file_size);
+ if(checksum != 0) return KAL_FALSE;
+ }
+
+ // CASE7 : Test wrong digest for SHA256 RSA2048
+ ret = mcf_ut_open_test_data("wrong_SHA256_RSA2048.mcfota", mcf_ut_digest_file, MCF_MAX_OTA_FILE_SIZE);
+ if(ret == KAL_FALSE) return KAL_FALSE;
+
+ ota_file = (mcf_tool_file_info_t *) mcf_ut_digest_file;
+ sign = (kal_char *)ota_file + ota_file->file_size;
+
+ ret = mcf_verify_digest(MCF_FILE_OP_SHA256_RSA2048, ota_file, sign);
+ if(ret == KAL_TRUE) return KAL_FALSE;
+
+ // CASE8 : Test wrong digest for SHA384 RSA3072
+ ret = mcf_ut_open_test_data("wrong_SHA384_RSA3072.mcfota", mcf_ut_digest_file, MCF_MAX_OTA_FILE_SIZE);
+ if(ret == KAL_FALSE) return KAL_FALSE;
+
+ ota_file = (mcf_tool_file_info_t *) mcf_ut_digest_file;
+ sign = (kal_char *)ota_file + ota_file->file_size;
+
+ ret = mcf_verify_digest(MCF_FILE_OP_SHA384_RSA3072, ota_file, sign);
+ if(ret == KAL_TRUE) return KAL_FALSE;
+
+ MCF_UT_PASS();
+ return KAL_TRUE;
+}
+
+/*------------------------------------------------------------------------------
+ * Public fucntions.
+ *----------------------------------------------------------------------------*/
+#define MCF_UT_CASE(_func, _param) { #_func, _func, _param }
+
+kal_bool mcf_ut_st_create(void)
+{
+ static ST_TCASE_T mcf_ut_cases_s[] = {
+
+ MCF_UT_CASE(mcf_ut_mcf_set_file_path_dsbp_passive_mode, NULL),
+ MCF_UT_CASE(mcf_ut_mcf_set_file_path_dsbp_active_mode, NULL),
+ MCF_UT_CASE(mcf_ut_mcf_get_applied_file_path, NULL),
+#if !defined(__MTK_TARGET__)
+ MCF_UT_CASE(mcf_ut_find_ini_item, NULL),
+ MCF_UT_CASE(mcf_ut_find_ini_sbp_id, NULL),
+ MCF_UT_CASE(mcf_ut_compose_ini_item, NULL),
+ MCF_UT_CASE(mcf_ut_gid_do_ota_full, NULL),
+ MCF_UT_CASE(mcf_ut_gid_do_ota_by_lid, NULL),
+ MCF_UT_CASE(mcf_ut_gid_read_ota_buffer, NULL),
+ MCF_UT_CASE(mcf_ut_gid_read_tlvota_buffer, NULL),
+ MCF_UT_CASE(mcf_ut_gid_read_tlvota_buffer_sbp, NULL),
+ MCF_UT_CASE(mcf_ut_gid_reset_lid_full, NULL),
+ MCF_UT_CASE(mcf_ut_gid_mcf_check_lid_need_reset, NULL),
+ MCF_UT_CASE(mcf_ut_mcf_check_ota_need_update, NULL),
+ MCF_UT_CASE(mcf_ut_mcf_get_tlvota_file_result, NULL),
+ #if defined(__MCF_COMBINE_FILE_SUPPORT__)
+ MCF_UT_CASE(mcf_ut_combined_ota_file, NULL),
+ MCF_UT_CASE(mcf_ut_write_variable_value, NULL),
+ #endif
+#endif
+#if defined(__MCF_UT_FRAMEWORK_SUPPORT__)
+ MCF_UT_CASE(mcf_utfwk_ut_test_flow, NULL),
+ MCF_UT_CASE(mcf_utfwk_sample_code_ut, NULL),
+#endif
+ MCF_UT_CASE(mcf_ut_em_update_req_hdlr, NULL),
+#if defined(__MCF_FIND_TAG_SUPPORT__)
+ MCF_UT_CASE(mcf_ut_find_tag, NULL),
+ MCF_UT_CASE(mcf_ut_config_LID, NULL),
+ #if !defined(__MTK_TARGET__)
+ MCF_UT_CASE(mcf_ut_do_ota_full, NULL),
+ MCF_UT_CASE(mcf_ut_do_ota_by_lid, NULL),
+ MCF_UT_CASE(mcf_ut_read_ota_buffer, NULL),
+ MCF_UT_CASE(mcf_ut_read_tlvota_buffer, NULL),
+ MCF_UT_CASE(mcf_ut_read_tlvota_buffer_sbp, NULL),
+ MCF_UT_CASE(mcf_ut_reset_lid_full, NULL),
+ MCF_UT_CASE(mcf_ut_mcf_check_lid_need_reset, NULL),
+ #endif
+#endif
+#if defined(__MCF_FIND_GID_SUPPORT__)
+ MCF_UT_CASE(mcf_ut_find_gid, NULL),
+ MCF_UT_CASE(mcf_ut_query_variable_value, NULL),
+#endif
+ MCF_UT_CASE(mcf_ut_gid_mcf_check_lid_need_reset_by_psid, NULL),
+ MCF_UT_CASE(mcf_ut_mcf_encrypt_decrypt, NULL),
+ MCF_UT_CASE(mcf_ut_mcf_verify_digest, NULL),
+ #if defined(__MCF_COMBINE_FILE_SUPPORT__)
+ MCF_UT_CASE(mcf_merge_ota_file_ut, NULL),
+ MCF_UT_CASE(mcf_merge_ota_by_op_file_ut, NULL),
+ MCF_UT_CASE(mcf_merge_one_gid_ut, NULL),
+ MCF_UT_CASE(mcf_merge_ota_by_op_merge_one_gid_ut, NULL),
+ MCF_UT_CASE(mcf_merge_encrypted_ota_file_ut, NULL),
+ #endif
+ //MCF_UT_CASE(mcf_ut_mcf_boot_trace, NULL),
+
+
+ };
+
+#if defined(TEST_MCF_TEST_TASK)
+ {
+ kal_uint32 i = 0;
+ kal_bool ret = KAL_FALSE;
+ kal_char p_ret_err_str[100];
+ kal_uint32 p_ret_err_str_sz;
+ for (i = 0 ; i < (sizeof(mcf_ut_cases_s)/sizeof(ST_TCASE_T)) ; i++)
+ {
+ ret = mcf_ut_cases_s[i].test_func(mcf_ut_cases_s[i].test_param, p_ret_err_str, &p_ret_err_str_sz);
+ if (ret == KAL_FALSE)
+ ASSERT(0);
+ }
+ }
+#elif defined(TEST_SYS_TEST_TASK)
+ return st_reg_test("MCF", &(mcf_ut_cases_s[0]), (sizeof(mcf_ut_cases_s)/sizeof(ST_TCASE_T)));
+#endif
+}
+
+#if defined(TEST_MCF_TEST_TASK)
+kal_bool mcf_test_task_init(void)
+{
+ return KAL_TRUE;
+}
+
+void mcf_test_task_main(task_entry_struct *task_entry_ptr)
+{
+ ilm_struct current_ilm;
+
+ kal_set_active_module_id(MOD_MCF_TEST);
+
+ mcf_ut_st_create();
+ // external queue, this may suspend.*/
+ while(1)
+ {
+ if (KAL_TRUE == msg_receive_extq(¤t_ilm)) {
+ // handle ILM
+ destroy_ilm(¤t_ilm);
+ }
+ }
+}
+
+kal_bool mcf_test_create(comptask_handler_struct **handle)
+{
+ static const comptask_handler_struct mcf_test_task_info =
+ {
+ mcf_test_task_main, /* task entry function */
+ mcf_test_task_init, /* task initialization function */
+ NULL /* task reset handler */
+ };
+
+ *handle = (comptask_handler_struct *)&mcf_test_task_info;
+ return KAL_TRUE;
+}
+#endif
+