[Feature]Upload Modem source code
Change-Id: Id4294f30faced84d3e6fd6d5e61e1111bf287a37
diff --git a/mcu/interface/service/nvram/nvram_interface.h b/mcu/interface/service/nvram/nvram_interface.h
new file mode 100644
index 0000000..df9c490
--- /dev/null
+++ b/mcu/interface/service/nvram/nvram_interface.h
@@ -0,0 +1,1083 @@
+/*****************************************************************************
+* 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) 2005
+*
+* 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:
+ * ---------
+ * nvram_interface.h
+ *
+ * Project:
+ * --------
+ * MAUI
+ *
+ * Description:
+ * ------------
+ * These are interface functions of NVRAM module.
+ *
+ * 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!
+ *
+ *
+ * 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!!
+ *============================================================================
+ ****************************************************************************/
+#ifndef NVRAM_INTERFACE_H
+#define NVRAM_INTERFACE_H
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif /* __cplusplus */
+
+#include "kal_general_types.h"
+#include "kal_public_defs.h"
+#include "nvram_enums.h"
+
+#include "nvram_defs.h"
+
+typedef struct
+{
+ kal_bool (*callback)(void *user_data);
+ void *user_data;
+ module_type module;
+ nvram_lid_enum file_id;
+ kal_bool processed;
+}nvram_read_callback_struct;
+
+typedef enum
+{
+ NVRAM_READ_TYPE_CHKSUM = 1,
+ NVRAM_READ_TYPE_CHKSUM_ONLY,
+ NVRAM_READ_TYPE_MAX
+}nvram_lid_read_type_enum;
+
+typedef struct
+{
+ kal_uint32 chksum_algo_type;
+ kal_uint32 chksum_algo_length;
+}nvram_lid_chksum_algo_info;
+
+#if defined(__MTK_TARGET__)
+#define nvram_read_callback_entry nvram_read_callback_struct __attribute__((section("_nvram_callback_tbl")))
+#else
+#ifdef _MSC_VER
+#define nvram_read_callback_entry __pragma(section("_nvram_callback_tbl_content")) \
+ nvram_read_callback_struct __declspec(allocate("_nvram_callback_tbl_content"))
+#else
+#define nvram_read_callback_entry nvram_read_callback_struct __attribute__((section("_nvram_callback_tbl_content")))
+#endif
+#endif
+
+/*****************************************************************************
+ * FUNCTION
+ * nvram_get_info
+ * DESCRIPTION
+ * This is nvram_get_info() function of NVRAM module.
+ * PARAMETERS
+ * LID: [IN] NVRAM LID
+ * total: [OUT] The record number of the LID
+ * size: [OUT] The record size of the LID
+ * RETURNS
+ * NVRAM_ERRNO_SUCCESS if succeed, NVRAM_ERRNO_INVALID otherwise (ie, invalid LID).
+ *****************************************************************************/
+extern nvram_errno_enum nvram_get_info(nvram_lid_enum LID, kal_uint16 *total, kal_uint16 *size);
+
+/*****************************************************************************
+ * FUNCTION
+ * nvram_write_exception
+ * DESCRIPTION
+ *
+ * PARAMETERS
+ * length: [IN] buffer length
+ * ex_data: [IN] ex_data
+ * ex_log: [IN] ex_log
+ * RETURNS
+ * void
+ *****************************************************************************/
+extern void nvram_write_exception(kal_uint16 length, long *ex_data, long *ex_log);
+
+/*****************************************************************************
+ * FUNCTION
+ * nvram_get_lid_num
+ * DESCRIPTION
+ * To get the total number of LID
+ * PARAMETERS
+ * void
+ * RETURNS
+ * nvram_ptr->ltable.total_LID
+ *****************************************************************************/
+extern nvram_lid_enum nvram_get_lid_num(void);
+
+/*****************************************************************************
+ * FUNCTION
+ * nvram_check_backup
+ * DESCRIPTION
+ * To tell given LID needs to backup or not
+ * PARAMETERS
+ * LID: [IN] LID of the file
+ * prefix: [IN] file prefix
+ * RETURNS
+ * NVRAM_IO_ERRNO_OK: need to backup
+ * NVRAM_IO_ERRNO_INVALID_LID: LID out of range or don't need to backup
+ *****************************************************************************/
+extern kal_uint8 nvram_check_backup(nvram_lid_enum LID, kal_char **prefix, kal_char **verno);
+
+/*****************************************************************************
+ * FUNCTION
+ * nvram_validate_file
+ * DESCRIPTION
+ * To validate integrity of the given file
+ * PARAMETERS
+ * LID: [IN] LID of the file
+ * path: [IN] path to validate
+ * RETURNS
+ * NVRAM_IO_ERRNO_OK: valid
+ * NVRAM_IO_ERRNO_INVALID_LID: LID out of range
+ * others: invalid
+ *****************************************************************************/
+extern nvram_errno_enum nvram_validate_file(nvram_lid_enum LID, kal_wchar *path);
+
+/*****************************************************************************
+ * FUNCTION
+ * nvram_shutdown_handler
+ * DESCRIPTION
+ * Disable all interrupts, change NVRAM state, change FS command mode, and flush
+ * PARAMETERS
+ * void
+ * RETURNS
+ * void
+ *****************************************************************************/
+void nvram_shutdown_handler(void);
+
+/*****************************************************************************
+ * FUNCTION
+ * nvram_test_lock
+ * DESCRIPTION
+ * get lock state from nvram context.
+ * PARAMETERS
+ * void
+ * RETURNS
+ * KAL_TRUE if locked, else KAL_FALSE
+ *****************************************************************************/
+extern kal_bool nvram_test_lock(void);
+
+#ifdef __NVRAM_DISK_SIZE_CHECK__
+/*****************************************************************************
+ * FUNCTION
+ * nvram_space_reserve
+ * DESCRIPTION
+ * get lock state from nvram context.
+ * PARAMETERS
+ * void
+ * RETURNS
+ * KAL_TRUE if locked, else KAL_FALSE
+ *****************************************************************************/
+extern void nvram_space_reserve(kal_uint32 *size_from_code);
+#endif
+
+/*****************************************************************************
+ * FUNCTION
+ * nvram_usb_read_data
+ * DESCRIPTION
+ * This function is used to get bmt calibration data ONLY when USB power on.
+ * PARAMETERS
+ * LID: [IN]
+ * buffer: [OUT]
+ * buffer_size: [IN]
+ * RETURNS
+ * NVRAM_ERRNO_SUCCESS if succeed, NVRAM_ERRNO_INVALID otherwise (ie, invalid LID).
+ *****************************************************************************/
+extern kal_bool nvram_usb_read_data(nvram_lid_enum LID, kal_uint8 *buffer, kal_uint32 buffer_size);
+
+/*****************************************************************************
+ * FUNCTION
+ * nvram_sec_port_is_enable
+ * DESCRIPTION
+ * To get TST port status
+ * PARAMETERS
+ * void
+ * RETURNS
+ * TST port Enable or Disable
+ *****************************************************************************/
+extern kal_bool nvram_sec_port_is_enable(void);
+
+/*****************************************************************************
+ * FUNCTION
+ * nvram_get_default_value
+ * DESCRIPTION
+ * This function is used to get default value for external modules.
+ * PARAMETERS
+ * LID: [IN]
+ * rec_index: [IN]
+ * p_buffer: [IN/OUT]
+ *
+ * RETURNS
+ * NVRAM_DEFAULT_VALUE_FAIL : get default value fail
+ * NVRAM_DEFAULT_VALUE_FF : p_buffer is invalid, default value is FF
+ * NVRAM_DEFAULT_VALUE_ZERO : p_buffer is invalid, default value is zero
+ * NVRAM_DEFAULT_VALUE_POINT: p_buffer is valid, use p_buffer to get default value
+ *****************************************************************************/
+extern nvram_default_value_enum nvram_get_default_value(nvram_lid_enum LID,
+ kal_uint16 rec_index,
+ kal_uint8 **p_buffer);
+
+/*****************************************************************************
+ * FUNCTION
+ * nvram_get_file_fullname
+ * DESCRIPTION
+ * To get the full name of nvram file.
+ * PARAMETERS
+ * folder_idx : [In] folder index
+ * nvramname : [In] nvram name
+ * filename : [Out] full file path
+ * RETURNS
+ * index of folder.
+ *****************************************************************************/
+extern kal_wchar * nvram_get_file_fullname(kal_uint8 folder_idx,
+ kal_char *nvramname,
+ kal_wchar *filename);
+
+/*****************************************************************************
+ * FUNCTION
+ * nvram_get_folder_idx
+ * DESCRIPTION
+ * To get the index of nvram folder.
+ * PARAMETERS
+ * LID: [IN] NVRAM LID
+ * RETURNS
+ * index of folder.
+ *****************************************************************************/
+extern kal_uint8 nvram_get_folder_idx(nvram_lid_enum LID);
+
+/*****************************************************************************
+ * FUNCTION
+ * nvram_get_work_path
+ * DESCRIPTION
+ * To get NVRAM working directory.
+ * PARAMETERS
+ * folder_idx : [IN] Which folder
+ * RETURNS
+ * NVRAM working directory.
+ *****************************************************************************/
+extern kal_char *nvram_get_work_path(kal_uint8 folder_idx);
+
+/*****************************************************************************
+ * FUNCTION
+ * nvram_get_folder_total_amount
+ * DESCRIPTION
+ * To get the full name of nvram file.
+ * PARAMETERS
+ * void
+ * RETURNS
+ * number of folders
+ *****************************************************************************/
+extern kal_uint8 nvram_get_folder_total_amount(void);
+
+#ifdef __NVRAM_READ_RESERVED_FILE__
+/*****************************************************************************
+ * FUNCTION
+ * nvram_external_search_reserved_lid
+ * DESCRIPTION
+ * This function is used to read reserved data items for external modules.
+ * Please must check with NVRAM owner before you use this API.
+ * PARAMETERS
+ * LID: [IN] NVRAM LID
+ * verno: [IN] Reserved LID VERNO. exp."001"
+ * total_records: [IN] Reserved LID record. set 0 for any one.
+ * size: [IN] Reserved LID size. set 0 for any one.
+ * RETURNS
+ * a boolean value
+ * RETURN VALUES
+ * KAL_FALSE: Fail. No match reserved files.
+ * KAL_TRUE: Success. create info to NVRAM_EF_READ_RESERVED_LID
+ *****************************************************************************/
+extern kal_bool nvram_external_search_reserved_lid(nvram_lid_enum LID, kal_char *verno, kal_uint16 total_records, kal_uint16 size);
+#endif
+
+/*****************************************************************************
+ * FUNCTION
+ * nvram_external_read_multi_record
+ * DESCRIPTION
+ * This function is used to get data items for external modules.
+ * PARAMETERS
+ * LID [IN]
+ * rec_index [IN]
+ * rec_amount [IN]
+ * buffer [?]
+ * buffer_size [IN]
+ * .(?)
+ * RETURNS
+ * NVRAM_ERRNO_SUCCESS if succeed, NVRAM_ERRNO_INVALID otherwise (ie, invalid LID).
+ *****************************************************************************/
+extern kal_bool nvram_external_read_multi_record(nvram_lid_enum LID, kal_uint16 rec_index, kal_uint16 rec_amount, kal_uint8 *buffer, kal_uint32 buffer_size);
+
+/*****************************************************************************
+ * FUNCTION
+ * nvram_external_read_data
+ * DESCRIPTION
+ * This function is used to read data items for external modules.
+ * Please must check with NVRAM owner before you use this API.
+ * PARAMETERS
+ * LID: [IN] NVRAM LID
+ * rec_index: [IN] record index
+ * buffer: [OUT] buffer pointer
+ * buffer_size: [IN] buffer size
+ * RETURNS
+ * a boolean value
+ * RETURN VALUES
+ * KAL_FALSE: fail
+ * KAL_TRUE: success
+ *****************************************************************************/
+extern kal_bool nvram_external_read_data(nvram_lid_enum LID, kal_uint16 rec_index, kal_uint8 *buffer, kal_uint32 buffer_size);
+
+/*****************************************************************************
+ * FUNCTION
+ * nvram_external_read_raw_data
+ * DESCRIPTION
+ * This function is used to get data items for external modules.
+ * PARAMETERS
+ * LID [IN]
+ * offset [IN]
+ * buffer [OUT]
+ * buffer_size [IN]
+ * .(?)
+ * RETURNS
+ * NVRAM_ERRNO_SUCCESS if succeed, NVRAM_ERRNO_INVALID otherwise (ie, invalid LID).
+ *****************************************************************************/
+extern kal_bool nvram_external_read_raw_data(nvram_lid_enum LID, kal_uint32 offset, kal_uint8 *buffer, kal_uint32 buffer_size);
+
+/*****************************************************************************
+ * FUNCTION
+ * nvram_external_secure_read_data
+ * DESCRIPTION
+ * This function is used to get data items for external modules with secure check.
+ * PARAMETERS
+ * LID: [IN] NVRAM LID
+ * rec_index: [IN] record index
+ * buffer: [OUT] buffer pointer
+ * buffer_size: [IN] buffer size
+ * RETURNS
+ * NVRAM_ERRNO_SUCCESS if succeed, NVRAM_ERRNO_INVALID otherwise (ie, invalid LID).
+ *****************************************************************************/
+extern nvram_errno_enum nvram_external_secure_read_data(nvram_lid_enum LID, kal_uint16 rec_index, kal_uint8 *buffer, kal_uint32 buffer_size, void* reserved_ptr);
+
+/*****************************************************************************
+ * FUNCTION
+ * nvram_external_get_lid_chksum_algo_info
+ * DESCRIPTION
+ * This function is used to get LID checksum algorithm information for external modules.
+ * PARAMETERS
+ * LID: [IN] NVRAM LID
+ * lid_chksum_algo_info: [OUT] LID checksum algorithm information structure pointer
+ * RETURNS
+ * NVRAM_ERRNO_SUCCESS if succeed, NVRAM_ERRNO_INVALID otherwise (ie, invalid LID).
+ *****************************************************************************/
+extern nvram_errno_enum nvram_external_get_lid_chksum_algo_info(nvram_lid_enum LID, nvram_lid_chksum_algo_info* lid_chksum_algo_info);
+
+/*****************************************************************************
+ * FUNCTION
+ * nvram_external_read_chksum_value
+ * DESCRIPTION
+ * This function is used to read the checksum of data item for external module.
+ * Please must check with NVRAM owner before you use this API.
+ * PARAMETERS
+ * LID: [IN] NVRAM LID
+ * rec_index: [IN] record index
+ * rec_amount: [IN] read how many record
+ * buffer: [OUT] buffer pointer
+ * buffer_size: [IN] buffer size
+ * read_chksum_type: [IN] read checksum type
+ * RETURNS
+ * NVRAM_ERRNO_SUCCESS if succeed, NVRAM_ERRNO_INVALID otherwise (ie, invalid LID).
+ *****************************************************************************/
+extern nvram_errno_enum nvram_external_read_chksum_value(nvram_lid_enum LID, kal_uint16 rec_index, kal_uint16 rec_amount, kal_uint8 *buffer, kal_uint32 buffer_size, nvram_lid_read_type_enum read_chksum_type);
+
+/*****************************************************************************
+ * FUNCTION
+ * nvram_external_read_chksum
+ * DESCRIPTION
+ * This function is used to read the checksum of data item for external module.
+ * Please must check with NVRAM owner before you use this API.
+ * PARAMETERS
+ * LID: [IN] NVRAM LID
+ * rec_index: [IN] record index
+ * rec_amount: [IN] read how many record
+ * buffer: [OUT] buffer pointer
+ * buffer_size: [IN] buffer size
+ * RETURNS
+ * a boolean value
+ * RETURN VALUES
+ * KAL_FALSE: fail
+ * KAL_TRUE: success
+ *****************************************************************************/
+extern kal_bool nvram_external_read_chksum(nvram_lid_enum LID, kal_uint16 rec_index, kal_uint16 rec_amount, kal_uint8 *buffer, kal_uint32 buffer_size);
+
+/*****************************************************************************
+ * FUNCTION
+ * nvram_external_read_chksum_only
+ * DESCRIPTION
+ * This function is used to read the checksum of data item for external module.
+ * This function do not verify current checksum, and just return last written checksum.
+ * If data item is encrypted, this function as same as nvram_external_secure_read_data().
+ * Please must check with NVRAM owner before you use this API.
+ * PARAMETERS
+ * LID: [IN] NVRAM LID
+ * rec_index: [IN] record index
+ * rec_amount: [IN] read how many record
+ * buffer: [OUT] buffer pointer
+ * buffer_size: [IN] buffer size
+ * RETURNS
+ * a boolean value
+ * RETURN VALUES
+ * KAL_FALSE: fail
+ * KAL_TRUE: success
+ *****************************************************************************/
+extern kal_bool nvram_external_read_chksum_only(nvram_lid_enum LID, kal_uint16 rec_index, kal_uint16 rec_amount, kal_uint8 *buffer, kal_uint32 buffer_size);
+
+/*****************************************************************************
+ * FUNCTION
+ * nvram_external_read_chksum_8b
+ * DESCRIPTION
+ * This function is used to read the checksum of data item for external module.
+ * Please must check with NVRAM owner before you use this API.
+ * PARAMETERS
+ * LID: [IN] NVRAM LID
+ * rec_index: [IN] record index
+ * rec_amount: [IN] read how many record
+ * buffer: [OUT] buffer pointer
+ * buffer_size: [IN] buffer size
+ * RETURNS
+ * a boolean value
+ * RETURN VALUES
+ * KAL_FALSE: fail
+ * KAL_TRUE: success
+ *****************************************************************************/
+extern kal_bool nvram_external_read_chksum_8b(nvram_lid_enum LID, kal_uint16 rec_index, kal_uint16 rec_amount, kal_uint8 *buffer, kal_uint32 buffer_size);
+
+/*****************************************************************************
+ * FUNCTION
+ * nvram_external_read_chksum_only_8b
+ * DESCRIPTION
+ * This function is used to read the checksum of data item for external module.
+ * This function do not verify current checksum, and just return last written checksum.
+ * If data item is encrypted, this function as same as nvram_external_secure_read_data().
+ * Please must check with NVRAM owner before you use this API.
+ * PARAMETERS
+ * LID: [IN] NVRAM LID
+ * rec_index: [IN] record index
+ * rec_amount: [IN] read how many record
+ * buffer: [OUT] buffer pointer
+ * buffer_size: [IN] buffer size
+ * RETURNS
+ * a boolean value
+ * RETURN VALUES
+ * KAL_FALSE: fail
+ * KAL_TRUE: success
+ *****************************************************************************/
+extern kal_bool nvram_external_read_chksum_only_8b(nvram_lid_enum LID, kal_uint16 rec_index, kal_uint16 rec_amount, kal_uint8 *buffer, kal_uint32 buffer_size);
+
+
+/*****************************************************************************
+ * FUNCTION
+ * nvram_external_write_data
+ * DESCRIPTION
+ * This function is used to write data items for external modules.
+ * Please must check with NVRAM owner before you use this API.
+ * PARAMETERS
+ * LID: [IN] NVRAM LID
+ * rec_index: [IN] record index
+ * buffer: [IN] buffer pointer
+ * buffer_size: [IN] buffer size
+ * RETURNS
+ * a boolean value
+ * RETURN VALUES
+ * KAL_FALSE: fail
+ * KAL_TRUE: success
+ *****************************************************************************/
+extern kal_bool nvram_external_write_data(nvram_lid_enum LID, kal_uint16 rec_index, kal_uint8 *buffer, kal_uint32 buffer_size);
+
+/*****************************************************************************
+ * FUNCTION
+ * nvram_external_write_raw_data
+ * DESCRIPTION
+ * This function is used to write data items for external modules.
+ * Please must check with NVRAM owner before you use this API.
+ * PARAMETERS
+ * LID [IN]
+ * offset [IN]
+ * buffer [IN]
+ * buffer_size [IN]
+ * .(?)
+ * RETURNS
+ * NVRAM_ERRNO_SUCCESS if succeed, NVRAM_ERRNO_INVALID otherwise (ie, invalid LID).
+ *****************************************************************************/
+extern kal_bool nvram_external_write_raw_data(nvram_lid_enum LID, kal_uint32 offset, kal_uint8 *buffer, kal_uint32 buffer_size);
+
+/*****************************************************************************
+ * FUNCTION
+ * nvram_external_secure_write_data
+ * DESCRIPTION
+ * This function is used to write data items for external modules with secure check.
+ * PARAMETERS
+ * LID: [IN] NVRAM LID
+ * rec_index: [IN] record index
+ * buffer: [IN] buffer pointer
+ * buffer_size: [IN] buffer size
+ * RETURNS
+ * NVRAM_ERRNO_SUCCESS if succeed, NVRAM_ERRNO_INVALID otherwise (ie, invalid LID).
+ *****************************************************************************/
+extern nvram_errno_enum nvram_external_secure_write_data(nvram_lid_enum LID, kal_uint16 rec_index, kal_uint8 *buffer, kal_uint32 buffer_size, void* reserved_ptr);
+
+/*****************************************************************************
+ * FUNCTION
+ * nvram_external_reset_data
+ * DESCRIPTION
+ * This function is used to reset data items for external modules.
+ * Please must check with NVRAM owner before you use this API.
+ * PARAMETERS
+ * LID: [IN] NVRAM LID
+ * rec_index: [IN] record index
+ * buffer: [IN] buffer pointer
+ * RETURNS
+ * a boolean value
+ * RETURN VALUES
+ * KAL_FALSE: fail
+ * KAL_TRUE: success
+ *****************************************************************************/
+kal_bool nvram_external_reset_data(nvram_lid_enum LID, kal_uint16 rec_index, kal_uint16 rec_amount);
+
+/*****************************************************************************
+ * FUNCTION
+ * nvram_check_hidden_files
+ * DESCRIPTION
+ * Check if the files or folder is hidden or not in Meta FAT Editor.
+ * 1. Any LID with NVRAM_CATEGORY_IMPORTANT will not appear in meta FAT Editor. ex: IMEI and SML
+ * 2. Important Folder will not appear in meta FAT Editor.
+ * 3. Customer sensitive data.
+ * Exception 1: During backup/restore, we can see IMEI and SML
+ * Exception 2: When NVRAM is locked. All the files and folder are hidden.
+ *
+ * PARAMETERS
+ * filename: [IN] the filename
+ * backup: [IN] During backup/restore the hidden file is different from normal
+ * Please set this as true during backup/restore
+ * RETURNS
+ * a boolean value
+ * RETURN VALUES
+ * KAL_TRUE: hidden
+ * KAL_FALSE: not hidden
+ *****************************************************************************/
+ extern kal_bool nvram_check_hidden_file(const kal_wchar* filename, kal_bool backup);
+
+
+/*****************************************************************************
+ * FUNCTION
+ * nvram_get_imei_type
+ * DESCRIPTION
+ * To get storage type of IMEI
+ * PARAMETERS
+ * void
+ * RETURNS
+ * NVRAM_STORAGE_TYPE_FAT: store in FAT
+ * NVRAM_STORAGE_TYPE_OTP: store in OTP
+ * NVRAM_STORAGE_TYPE_SECRO: store in secure RO
+ *****************************************************************************/
+extern kal_uint8 nvram_get_imei_type(void);
+
+/*****************************************************************************
+ * FUNCTION
+ * nvram_get_imei_value
+ * DESCRIPTION
+ * To get the IMEI value via blocking function
+ * PARAMETERS
+ * length: [IN] Length of imei_buf, in byte, at least 8 bytes.
+ * imei_buf: [OUT] buffer to fill in IMEI
+ * rec_index: [IN] Can be 1 or 2 to access both IMEI on dual sim project.
+ * It should be 1 on single sim project.
+ * RETURNS
+ * KAL_TRUE: SUCCESS
+ * KAL_FALSE: FAIL
+ *****************************************************************************/
+extern kal_bool nvram_get_imei_value(kal_uint8 length, kal_uint8 *imei_buf, kal_uint16 rec_index);
+
+/*****************************************************************************
+ * FUNCTION
+ * nvram_get_imei_record_num
+ * DESCRIPTION
+ * To get the record number of imei
+ * PARAMETERS
+ * void
+ * RETURNS
+ * number of imei record number
+ *****************************************************************************/
+extern kal_uint16 nvram_get_imei_record_num(void);
+
+/*****************************************************************************
+ * FUNCTION
+ * nvram_is_imei_unset
+ * DESCRIPTION
+ * To tell if the IMEI equals to its default value.
+ * PARAMETERS
+ * rec_index: [IN] the index of record
+ * RETURNS
+ * KAL_TRUE: unset
+ * KAL_FALSE: set
+ *****************************************************************************/
+extern kal_bool nvram_is_imei_unset(kal_uint16 rec_index);
+
+/*****************************************************************************
+ * FUNCTION
+ * nvram_secure_write_imei
+ * DESCRIPTION
+ * This function is used to write imei data items with secure check.
+ * PARAMETERS
+ * length: [IN] Length of imei_buf, in byte, at least 8 bytes.
+ * imei_buf: [IN] IMEI buffer
+ * rec_index: [IN] the index of record
+ * RETURNS
+ * KAL_TRUE: write success
+ * KAL_FALSE: write fail
+ *****************************************************************************/
+extern kal_bool nvram_secure_write_imei(kal_uint8 length, kal_uint8 *imei_buf, kal_uint16 rec_index, void* reserved_ptr);
+
+/*****************************************************************************
+ * FUNCTION
+ * nvram_compare_to_default_value
+ * DESCRIPTION
+ * This function is used to compare the value in nvram file to default value
+ * PARAMETERS
+ * LID: [IN] NVRAM LID
+ * rec_index: [IN] record index, start from 1, but if the value is 0,
+ * this function will compare all record to default value
+ * RETURNS
+ * nvram_errno_enum
+ * RETURN VALUES
+ * NVRAM_ERRNO_SUCCESS: no error
+ * NVRAM_ERRNO_FAIL: at least one record is different to default value
+ *****************************************************************************/
+extern kal_int32 nvram_compare_to_default_value(nvram_lid_enum LID, kal_uint16 rec_index);
+
+
+
+extern kal_uint8 *nvram_get_custpack_version(void);
+/*****************************************************************************
+ * FUNCTION
+ * nvram_set_restore_factory_flag
+ * DESCRIPTION
+ * PARAMETERS
+ * RETURNS
+ *****************************************************************************/
+extern kal_bool nvram_set_restore_factory_flag(nvram_restore_flag_enum restore_flag);
+
+/*****************************************************************************
+ * FUNCTION
+ * nvram_check_restore_factory_flag
+ * DESCRIPTION
+ * PARAMETERS
+ * RETURNS
+ *****************************************************************************/
+extern kal_bool nvram_check_restore_factory_flag(void);
+
+/*****************************************************************************
+ * FUNCTION
+ * nvram_ltable_register
+ * DESCRIPTION
+ * PARAMETERS
+ * RETURNS
+ *****************************************************************************/
+extern void nvram_ltable_register(nvram_ltable_entry_struct *table);
+
+/*****************************************************************************
+ * FUNCTION
+ * nvram_register_read_req
+ * DESCRIPTION
+ * PARAMETERS
+ * RETURNS
+ *****************************************************************************/
+extern kal_bool nvram_register_read_req(nvram_read_callback_struct *entry);
+
+/*****************************************************************************
+ * FUNCTION
+ * nvram_external_get_lid_info
+ * DESCRIPTION
+ * This function is used to get the LID info
+ * PARAMETERS
+ * LID: [IN] NVRAM LID
+ * ldi: [OUT] LID info buffer pointer,store the LID info
+ * RETURNS
+ * nvram_errno_enum
+ * RETURN VALUES
+ * NVRAM_ERRNO_SUCCESS: no error
+ * NVRAM_IO_ERRNO_INVALID_LID: invalid LID
+ * NVRAM_ERRNO_INVALID: lid pointer is NULL
+ *****************************************************************************/
+extern nvram_errno_enum nvram_external_get_lid_info(nvram_lid_enum LID,nvram_ltable_entry_struct *ldi);
+
+/*****************************************************************************
+ * FUNCTION
+ * nvram_debug_info_init
+ * DESCRIPTION
+ * This function is used to get the share memory to store the debug info
+ * PARAMETERS
+ * share_mem: [OUT] the memory address of MD CCCI debug info
+ * length: [OUT] the length of MD CCCI debug info
+ * RETURNS
+ * nvram_errno_enum
+ * RETURN VALUES
+ * KAL_TRUE: get the share memory success
+ * KAL_FALSE: fail to get the share memory
+ *****************************************************************************/
+extern kal_bool nvram_debug_info_init(kal_uint32 **share_mem,kal_uint32 *length);
+
+
+/*****************************************************************************
+ * for FT task to get all nvram data items
+*****************************************************************************/
+extern kal_bool nvram_util_next_data_item(nvram_ltable_entry_struct **entry);
+extern kal_bool nvram_util_get_data_item(nvram_ltable_entry_struct **ldi, nvram_lid_enum LID);
+extern kal_bool nvram_util_get_data_item_by_fileprefix(nvram_ltable_entry_struct **ldi, kal_char *fileprefix);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* NVRAM_INTERFACE_H */
+