364 lines
12 KiB
C
364 lines
12 KiB
C
// (C) Copyright 2006 Marvell International Ltd.
|
|
// All Rights Reserved
|
|
//
|
|
|
|
/*------------------------------------------------------------------------------
|
|
* ----------------------------------------------------------------------------
|
|
*
|
|
* Filename: MRD.h
|
|
*
|
|
* Description: The APIs to handle MRD file
|
|
*
|
|
* History:
|
|
* June, 2010 - Shuki Zanyovka
|
|
*
|
|
* Notes:
|
|
*
|
|
******************************************************************************/
|
|
#if !defined (MRD_HEADER_FILE_H)
|
|
#define MRD_HEADER_FILE_H
|
|
|
|
#include "global_types.h"
|
|
#include "ReliableData.h"
|
|
#include "mep.h"
|
|
#include "teldef.h"
|
|
|
|
#ifdef QUECTEL_PROJECT_CUST
|
|
#include "ptable.h"
|
|
#include "quec_cust_feature.h"
|
|
#define MRD_LOG_ENABLE 0
|
|
#if MRD_LOG_ENABLE
|
|
#define QUEC_MRD_LOG(fmt, ...) RTI_LOG("[QUEC_MRD] "fmt"\r\n", ##__VA_ARGS__)
|
|
#else
|
|
#define QUEC_MRD_LOG(fmt, ...)
|
|
#endif
|
|
#endif
|
|
|
|
#define IMEI_MRD_NAME "IMEI.bin"
|
|
#define MEP_MRD_NAME "MEP.bin"
|
|
#define MEP2_MRD_NAME "MEP2.bin"
|
|
#define CDF_RDSK_NAME "CDF.bin"
|
|
#define SN_MRD_NAME "SN.bin"
|
|
// syns from 1826
|
|
#define MEP_CMD_CAT_NETWORK_STR "PN"
|
|
#define MEP_CMD_CAT_NETWORK_SUBSET_STR "PU"
|
|
#define MEP_CMD_CAT_SERVICE_PROVIDER_STR "PP"
|
|
#define MEP_CMD_CAT_CORPORATE_STR "PC"
|
|
#define MEP_CMD_CAT_SIM_STR "PS"
|
|
#define MEP_CMD_CAT_PASSWORD_STR "PSW"
|
|
#define MEP_CMD_CAT_COMMON_PART_STR "CP"
|
|
#define MEP_CMD_CAT_RAW_STR "RAW"
|
|
#ifdef SS_FEATURE
|
|
#define MEP_MAX_PASSWORD_LEN 32
|
|
#else
|
|
#define MEP_MAX_PASSWORD_LEN 16
|
|
#endif
|
|
#define MEP_CMD_PARAM_MAX_CNT 9
|
|
#define MEP_CMD_CAT_STR_MAX_LEN 3
|
|
#define MEP_MCC_MNC_ACT_MAX_LEN 4
|
|
#define MEP_NETWORK_SUBNET_MAX_LEN 2
|
|
#define MEP_SERVICE_PROVIDER_MAX_LEN 2
|
|
#define MEP_CORPORATE_MAX_LEN 2
|
|
#define MEP_IMSI_MAX_LEN 15
|
|
#define MEP_ENABLE_ACTIVATE_FLAG_MAX_LEN 2
|
|
#define MEP_LOCKNETLIST_MAX_LEN 1024
|
|
//bt macro
|
|
#define BT_ID_NUMBER_SIZE 6
|
|
|
|
//CID MEID etc
|
|
#define MAX_TYPE_LEN 10
|
|
#define MAX_Data_LEN 16
|
|
#define MAX_ADC_Data_LEN 10
|
|
#define MAX_ADC_GROUP_CNT 10
|
|
|
|
//Type of Reliable Data Components
|
|
//0xC... --> (int)0xC...u to fix build
|
|
//warnning "enumeration value is out of "int" range
|
|
typedef enum
|
|
{
|
|
MRD_IMEI_TYPE = (int)0xCAFE0010u,
|
|
MRD_MEP_TYPE = (int)0xCAFE0015u,
|
|
MRD_CDF_TYPE = (int)0xCAFE0020u,
|
|
MRD_SN_TYPE = (int)0xCAFE0025u,
|
|
MRD_GEN_DATA_TYPE = (int)0xCAFE0030u,
|
|
MRD_BT_ID_TYPE = (int)0xCAFE0035u,
|
|
MRD_MAC_TYPE = (int)0xCAFE0040u,
|
|
MRD_SSID_TYPE = (int)0xCAFE0060u,
|
|
MRD_WIFI_PASSWORD_TYPE = (int)0xCAFE0070u,
|
|
MRD_PID_TYPE = (int)0xCAFE0080u,
|
|
MRD_VID_TYPE = (int)0xCAFE0090u,
|
|
MRD_SIMKEY_TYPE = (int)0xCAFE00A0u,
|
|
MRD_ADF_TYPE = (int)0xAAAA0035u,
|
|
MRD_USBMODE_TYPE = (int)0xCAFE00B0u,
|
|
MRD_HWVER_TYPE = (int)0xCAFE00C0u,
|
|
MRD_SWVER_TYPE = (int)0xCAFE00D0u,
|
|
MRD_PTVER_TYPE = (int)0xCAFE00E0u,
|
|
MRD_DIALMODE_TYPE = (int)0xCAFE00F0u,
|
|
MRD_MANUFACTURE_TYPE = (int)0xCAFE0100u,
|
|
MRD_MODEL_TYPE = (int)0xCAFE0110u,
|
|
MRD_WIFI_AUTHMODE_TYPE = (int)0xCAFE0120u,
|
|
MRD_WIFI_CIPHER_TYPE = (int)0xCAFE0130u,
|
|
MRD_DIALAPN_TYPE = (int)0xCAFE0140u,
|
|
MRD_DIALIPTYPE_TYPE = (int)0xCAFE0150u,
|
|
MASTER_KEY_TYPE = (int)0xCAFE0160u,
|
|
MRD_BOARD_TYPE = (int)0xCAFE0170u,
|
|
MRD_CID_TYPE = (int)0xCAFE0180u,
|
|
MRD_MEID_TYPE = (int)0xCAFE0190u,
|
|
MRD_BSN_TYPE = (int)0xCAFE01A0u,
|
|
MRD_QR_TYPE = (int)0xCAFE01B0u,
|
|
MRD_HC_TYPE = (int)0xCAFE01C0u,
|
|
MRD_MMI_FLAG_TYPE = (int)0xCAFE01D0u,
|
|
MRD_FAC_FLAG_TYPE = (int)0xCAFE01E0u,
|
|
MRD_UID16_1_TYPE=(int)0xCAFE01E1,
|
|
MRD_UID16_2_TYPE=(int)0xCAFE01E2,
|
|
} MRD_FILE_TYPES;
|
|
|
|
typedef enum {
|
|
MRD_NO_ERROR,
|
|
MRD_ERROR,
|
|
MRD_INVALID_ADDRESS,
|
|
MRD_FILE_NOT_FOUND_ERROR,
|
|
MRD_FILE_ALREADY_EXISTS_ERROR,
|
|
MRD_FILE_WRITE_ERROR,
|
|
MRD_FILE_READ_ERROR,
|
|
MRD_NOT_INITIALIZED_ERROR,
|
|
MRD_NO_VALID_STAMP_ERROR,
|
|
MRD_INVALID_HEADER_ERROR,
|
|
MRD_INVALID_FILE_HEADER_ERROR,
|
|
MRD_INVALID_CHECKSUM_ERROR,
|
|
MRD_NO_MEMORY_ERROR,
|
|
MRD_ALREADY_INITIALIZED_ERROR,
|
|
MRD_FILENAME_TOO_LONG,
|
|
MRD_NO_SPACE_ERROR,
|
|
MRD_INVALID_END_OF_FILE_ERROR
|
|
} MRDErrorCodes;
|
|
|
|
typedef enum diagCommFsResultCode
|
|
{
|
|
DIAG_COMM_FS_OK,
|
|
DIAG_COMM_FS_DISABLE,
|
|
DIAG_COMM_FS_NOT_INIT,
|
|
DIAG_COMM_FS_INVALID_NAME,
|
|
DIAG_COMM_FS_ALREADY_INIT,
|
|
DIAG_COMM_FS_NULL_POINTER,
|
|
DIAG_COMM_FS_NO_FREE_SPACE,
|
|
DIAG_COMM_FS_INVALID_LENGTH,
|
|
DIAG_COMM_FS_INVALID_BUFFER,
|
|
DIAG_COMM_FS_INVALID_FILE,
|
|
DIAG_COMM_FS_WRITE_ERROR,
|
|
DIAG_COMM_FS_OTHER_ERROR
|
|
}diagCommFsResultCode;
|
|
|
|
//1603(8+16)采用64KB双factory分区
|
|
//1606L(2+4)采用24KB的单factory分区
|
|
//1606 8M项目采用32KB双factory分区
|
|
//1606 4M项目采用32KB单factory分区
|
|
//1602 CRANELR(4+4和2+4)都采用24KB的单factory分区,项目会定义SINGLE_SIM 宏
|
|
//1609 CRANELS(8+8/4+4/4+8)的单卡基线/双卡基线都采用24KB的单factory分区
|
|
|
|
//定义MRD_FACTORY_MIN_SIZE宏,只有单factory分区
|
|
#if defined(CRANEL_4MRAM) || defined (ASR_PLATFORM_CRANELS) //quectel fix 1606 8M的FLASH需要ab备份,不能定义这个宏
|
|
//定义此宏,表示不支持factory_b分区,没有互相备份
|
|
#define MRD_FACTORY_MIN_SIZE
|
|
#endif
|
|
|
|
//工厂区分区大小已不通过宏进行定义,使用获取分区表的方式@Covington.Wei 20240914
|
|
#ifdef QUECTEL_PROJECT_CUST
|
|
extern uint32_t Quec_GetFactorySize(void);
|
|
#define MRD_MAX_FILE_LEN Quec_GetFactorySize()
|
|
#else
|
|
#if defined(CRANEL_4MRAM) || defined(CRANEL_8MRAM) //quectel add 8M ab分区的大小都是32k 不是64k
|
|
#ifdef SINGLE_SIM
|
|
#define MRD_MAX_FILE_LEN 0x6000//(24*1024)
|
|
#else
|
|
#ifdef ASR_PLATFORM_CRANELS
|
|
#define MRD_MAX_FILE_LEN 0x6000//(24*1024)
|
|
#else
|
|
#define MRD_MAX_FILE_LEN 0x8000//(32*1024)
|
|
#endif
|
|
#endif
|
|
#else
|
|
#ifdef ASR_PLATFORM_CRANELS
|
|
#define MRD_MAX_FILE_LEN 0x6000//(24*1024)
|
|
#else
|
|
#define MRD_MAX_FILE_LEN 0x10000//(64*1024)
|
|
#endif
|
|
#endif
|
|
#endif
|
|
|
|
|
|
|
|
#define FLASH_SECTOR_SIZE 0x1000
|
|
#define MRD_IMAGE_TOTAL_SIZE (MRD_MAX_FILE_LEN - FLASH_SECTOR_SIZE) // (64*1024) //last 4k is reserved for adc cal data
|
|
|
|
struct DIAG_MRD_CaliDate
|
|
{
|
|
char Name[128];
|
|
char Date[32];
|
|
char Time[32];
|
|
};
|
|
|
|
struct DIAG_MRD_MEP
|
|
{
|
|
UINT32 version;
|
|
UINT32 date;
|
|
MEP_FIX mep_fix;
|
|
};
|
|
|
|
|
|
typedef struct {
|
|
UINT8 digits[6];
|
|
} BtIDData;
|
|
|
|
|
|
|
|
typedef enum
|
|
{
|
|
ADC_VBAT = 0x0,
|
|
ADC_RTP = 0x1,
|
|
ADC_MAX = 0x2
|
|
}PM803_ADC_TYPE;
|
|
|
|
|
|
//ICAT EXPORTED ENUM
|
|
typedef enum
|
|
{
|
|
TEMP_NORMAL = 0,
|
|
TEMP_LOW,
|
|
TEMP_HIGH,
|
|
TEMP_TYPE_MAX
|
|
}ADC_TEMP_t;
|
|
|
|
//ICAT EXPORTED STRUCT
|
|
typedef struct
|
|
{
|
|
UINT8 volt[MAX_ADC_Data_LEN];
|
|
UINT8 data[MAX_ADC_Data_LEN];
|
|
}ADCValue;
|
|
|
|
//ICAT EXPORTED STRUCT
|
|
typedef struct
|
|
{
|
|
ADCValue value[MAX_ADC_GROUP_CNT];
|
|
UINT32 flag;
|
|
}ADCInfo;
|
|
|
|
//ICAT EXPORTED STRUCT
|
|
typedef struct
|
|
{
|
|
UINT32 version;
|
|
UINT32 timestamp;
|
|
ADCInfo info;
|
|
}MRDADCInfoS;
|
|
|
|
//ICAT EXPORTED STRUCT
|
|
typedef struct
|
|
{
|
|
ADCValue value[TEMP_TYPE_MAX-1][MAX_ADC_GROUP_CNT];
|
|
UINT8 temp[4];
|
|
UINT32 flag;
|
|
}ADCInfo2;
|
|
|
|
//ICAT EXPORTED STRUCT
|
|
typedef struct
|
|
{
|
|
UINT32 version;
|
|
UINT32 timestamp;
|
|
ADCInfo2 info;
|
|
}MRDADCInfoS2;
|
|
|
|
enum mep_cmd_category {
|
|
MEP_CMD_CAT_NETWORK,
|
|
MEP_CMD_CAT_NETWORK_SUBSET,
|
|
MEP_CMD_CAT_SERVICE_PROVIDER,
|
|
MEP_CMD_CAT_CORPORATE,
|
|
MEP_CMD_CAT_SIM,
|
|
MEP_CMD_CAT_PASSWORD,
|
|
MEP_CMD_CAT_COMMON_PART,
|
|
MEP_CMD_CAT_RAW,
|
|
MEP_CMD_CAT_MAX
|
|
};
|
|
|
|
struct mep_cat_info
|
|
{
|
|
unsigned short param_cnt;
|
|
unsigned short max_len;
|
|
};
|
|
#ifdef QUECTEL_PROJECT_CUST
|
|
|
|
void MRDUnlock(void);
|
|
MRDErrorCodes MRDInitNucleus(void);
|
|
#endif
|
|
MRDErrorCodes MRDInit(unsigned char* mrd_area);
|
|
MRDErrorCodes MRDParseHeader(unsigned char *MRD_file_buffer);
|
|
MRDErrorCodes MRDOpen(void);
|
|
MRDErrorCodes MRDClose(void);
|
|
MRDErrorCodes MRDFreeFileBuffer(void);
|
|
MRDErrorCodes MRDFileAdd(char *MRD_filename,
|
|
UINT32 flags,
|
|
UINT32 mrd_file_type,
|
|
UINT32 file_format_version,
|
|
UINT32 timestamp,
|
|
char *input_filename);
|
|
MRDErrorCodes MRDFileRead(char *MRD_filename,
|
|
UINT32 mrd_file_type,
|
|
UINT32 *flags,
|
|
UINT32 *file_format_version,
|
|
UINT32 *timestamp,
|
|
char *output_filename);
|
|
MRDErrorCodes MRDFileExist(char *MRD_filename, UINT32 mrd_file_type);
|
|
MRDErrorCodes MRDFileRemove(char *MRD_filename, UINT32 MRD_file_type);
|
|
MRDErrorCodes MRDFileDirFirst(char *MRD_filename,
|
|
UINT32 *flags,
|
|
UINT32 *file_format_version,
|
|
UINT32 *timestamp);
|
|
MRDErrorCodes MRDFileDirNext(char *MRD_filename,
|
|
UINT32 *flags,
|
|
UINT32 *file_format_version,
|
|
UINT32 *timestamp);
|
|
void DiagCommCopyFileToMRD(char *FileName);
|
|
void DiagCommDelMRDFile(char *FileName);
|
|
void DiagCommMRDFileExist(char *FileName);
|
|
void DiagCommMRDUpdateMEP(struct DIAG_MRD_MEP *diag_mep, int length);
|
|
void DiagCommMRDDelMEP(void);
|
|
void DiagCommMRDDumpMEP(void);
|
|
void DiagCommMRDCopyMEPToNVM(void);
|
|
void DiagCommATCFUN(int* value);
|
|
|
|
RETURNCODE_T AtMrdCdf(const utlAtParameterOp_T op, const char *command_name_p, const utlAtParameterValue_P2c parameter_values_p, const size_t num_parameters, const char *info_text_p, unsigned int *xid_p, void *arg_p);
|
|
RETURNCODE_T AtMrdImei(const utlAtParameterOp_T op, const char *command_name_p, const utlAtParameterValue_P2c parameter_values_p, const size_t num_parameters, const char *info_text_p, unsigned int *xid_p, void *arg_p);
|
|
#ifndef REMOVE_MEP
|
|
RETURNCODE_T AtMrdMep(const utlAtParameterOp_T op, const char *command_name_p, const utlAtParameterValue_P2c parameter_values_p, const size_t num_parameters, const char *info_text_p, unsigned int *xid_p, void *arg_p);
|
|
#endif
|
|
RETURNCODE_T AtCalInfo(const utlAtParameterOp_T op, const char *command_name_p,const utlAtParameterValue_P2c parameter_values_p, const size_t num_parameters, const char *info_text_p, unsigned int *xid_p, void *arg_p);
|
|
RETURNCODE_T AtMrdSn(const utlAtParameterOp_T op, const char *command_name_p,const utlAtParameterValue_P2c parameter_values_p, const size_t num_parameters, const char *info_text_p, unsigned int *xid_p, void *arg_p);
|
|
RETURNCODE_T AtMrdItem(const utlAtParameterOp_T op, const char *command_name_p, const utlAtParameterValue_P2c parameter_values_p, const size_t num_parameters, const char *info_text_p, unsigned int *xid_p, void *arg_p);
|
|
RETURNCODE_T ATMRDBACKUP(const utlAtParameterOp_T op, const char *command_name_p, const utlAtParameterValue_P2c parameter_values_p, const size_t num_parameters, const char *info_text_p, unsigned int *xid_p, void *arg_p);
|
|
#if (!defined(LTEONLY_THIN) && !defined(LTEGSM_THIN))
|
|
RETURNCODE_T AtMrdWiFiMAC(const utlAtParameterOp_T op, const char *command_name_p, const utlAtParameterValue_P2c parameter_values_p, const size_t num_parameters, const char *info_text_p, unsigned int *xid_p, void *arg_p);
|
|
#endif
|
|
void BtIDRead(BtIDData *btID);
|
|
void BtIDInit(unsigned long *ddrBuffaddr);
|
|
#ifdef BT_SUPPORT
|
|
RETURNCODE_T AtMrdBtMAC(const utlAtParameterOp_T op, const char *command_name_p, const utlAtParameterValue_P2c parameter_values_p, const size_t num_parameters, const char *info_text_p, unsigned int *xid_p, void *arg_p);
|
|
#endif
|
|
RETURNCODE_T AtMrdADC(const utlAtParameterOp_T op, const char *command_name_p, const utlAtParameterValue_P2c parameter_values_p, const size_t num_parameters, const char *info_text_p, unsigned int *xid_p, void *arg_p);
|
|
RETURNCODE_T AtMrdRtpADC(const utlAtParameterOp_T op, const char *command_name_p, const utlAtParameterValue_P2c parameter_values_p, const size_t num_parameters, const char *info_text_p, unsigned int *xid_p, void *arg_p);
|
|
|
|
void RDSaveADCFileToMRD(PM803_ADC_TYPE type);
|
|
int MRDItemGet(const char *itemType, char *Data);
|
|
|
|
int MRDAdcValueGet(UINT32 index, UINT32 *AdcValue, UINT32 *VoltageValue, PM803_ADC_TYPE type, ADC_TEMP_t tempType);
|
|
int MRDAdcFlagGet(PM803_ADC_TYPE type, ADC_TEMP_t tempType);
|
|
int MRDAdcCntGet(PM803_ADC_TYPE type, ADC_TEMP_t tempType);
|
|
UINT32 GetMRDFlashAddress(void);
|
|
UINT32 GetMRDBakFlashAddress(void);
|
|
|
|
void vbat_pm803_init(void);
|
|
|
|
|
|
|
|
#define MAX_DEVID_SIZE 512
|
|
|
|
#endif //MRD_HEADER_FILE_H
|