Files
banban/ql-kernel/threadx/common/include/MRD.h

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