188 lines
6.2 KiB
C
188 lines
6.2 KiB
C
//***************************************************************
|
|
#ifndef _OTA_SDCARD_H
|
|
#define _OTA_SDCARD_H
|
|
|
|
/*
|
|
*****************************************************************************************
|
|
* INCLUDE FILES
|
|
*****************************************************************************************
|
|
*/
|
|
#include "types.h"
|
|
#include "qspi_flash.h"
|
|
#include "ff.h"
|
|
#include "common.h"
|
|
#include "loadtable.h"
|
|
|
|
/*
|
|
*****************************************************************************************
|
|
* MACRO AND typedef
|
|
*****************************************************************************************
|
|
*/
|
|
|
|
#define FILENAME "D:/update.bin" //include cp.bin,dsp.bin and rf.bin; 4k alignment
|
|
#define SYSTEM_PART_OFFSET 0x24000 //The start address of system and ptable
|
|
#define DATA_BUF_SIZE (0x10000)
|
|
#define SDCARD_FAT_IS_OK 1
|
|
|
|
#define SPACE_FLAG_FEED_INFO (0x1000) //4k Bytes
|
|
#define OTA_FLAG_SDCARD_UPDATE "ASROTA-S"
|
|
#define OTA_FLAG_SDCARD_KEY_FLAG ("ASROTAKS")
|
|
#define OTA_FLAG_SDCARD_NOT_UPDATE 0xFF
|
|
#define OTA_FLAG_LENGTH (9)
|
|
#define OTA_CRC_RESULT_OFFSET (0x10)
|
|
#define OTA_CRC_RESULT_LENGTH (0x02)
|
|
#define OTA_HEADER_LENGTH 0x20 //Adjust according to the Actual Header In the later stage
|
|
|
|
|
|
//Update_File_Header_Info
|
|
#define OTA_VERSION_LENGTH (0x10)
|
|
|
|
|
|
|
|
//define OTA Feedback info and length
|
|
#define OTA_FLAG_LENGTH (9)
|
|
#define SDCARD_MOUNT_FAIL "SDCard Mount Fail!"
|
|
#define SDCARD_MOUNT_FAIL_LENGTH (19)
|
|
#define OTA_UPDATE_FILE_NO_EXIST "No update.bin in sdcard!"
|
|
#define OTA_UPDATE_FILE_NO_EXIST_LENGTH (25)
|
|
#define OTA_UPDATE_FILE_CRC_INCORRECT "CRC res is different with header file!"
|
|
#define OTA_UPDATE_FILE_CRC_INCORRECT_LENGTH (39)
|
|
|
|
typedef enum{
|
|
OFFSET_OTA_FEED_Flag, //0, OTA_Flag is 9 Bytes
|
|
OFFSET_OTA_FEED_PRE_VERSION = 9, //9
|
|
OFFSET_OTA_FEED_CURRENT_VERSION = 25, //25
|
|
OFFSET_OTA_SD_Mount = 41, //41
|
|
OFFSET_OTA_UPDATE_FILE_No_Exist = 60, //60
|
|
OFFSET_OTA_CRC_Incorrect = 85 //85
|
|
}OFFSET_OTA_FEED_INFO;
|
|
|
|
|
|
//define Error types
|
|
typedef enum
|
|
{
|
|
OTA_ERR_NO = 0, // 0
|
|
OTA_ERR_Verify, // 1
|
|
OTA_ERR_CRC_Check, // 2
|
|
OTA_ERR_f_open, // 3
|
|
OTA_ERR_f_read, // 4
|
|
OTA_ERR_spi_nor_erase, // 5
|
|
OTA_ERR_spi_nor_erase_sector, // 6
|
|
OTA_ERR_spi_nor_write, // 7
|
|
OTA_ERR_spi_nor_read, // 8
|
|
OTA_VERSION_DIFFERENT, // 9
|
|
OTA_VERSION_SAME, // 10
|
|
OTA_CRC_DIFFERENT, // 11
|
|
OTA_CRC_SAME, // 12
|
|
OTA_MALLOC_FAIL, // 13
|
|
OTA_FLASH_NO_Write // 14
|
|
}OTA_ERR_T;
|
|
|
|
|
|
/*
|
|
*****************************************************************************************
|
|
* Log Priority Definition
|
|
*****************************************************************************************
|
|
*/
|
|
/*+++++++++++++Log_Priority Start++++++++++++++++++++++++*/
|
|
|
|
#ifndef LOG_TAG
|
|
#define LOG_TAG __func__
|
|
#endif
|
|
|
|
#define LOG_SEVERITY_V 1
|
|
#define LOG_SEVERITY_D 2
|
|
#define LOG_SEVERITY_I 3
|
|
#define LOG_SEVERITY_W 4
|
|
#define LOG_SEVERITY_E 5
|
|
|
|
#ifndef LOG_SEVERITY
|
|
#define LOG_SEVERITY LOG_SEVERITY_V
|
|
#endif
|
|
|
|
#ifndef LOG_NDEBUG
|
|
#ifdef NDEBUG
|
|
#define LOG_NDEBUG 1
|
|
#else
|
|
#define LOG_NDEBUG 0
|
|
#endif
|
|
#endif
|
|
|
|
#define LOG_PRINT_IF uart_printf
|
|
|
|
#if LOG_NDEBUG
|
|
#define ALOGV(x,...)
|
|
#define ALOGD(x,...)
|
|
#else
|
|
#define ALOGV(x,...) do{if (LOG_SEVERITY <= LOG_SEVERITY_V) LOG_PRINT_IF(" %s [%s]: " x "\r\n","V",LOG_TAG,##__VA_ARGS__);}while(0)
|
|
#define ALOGD(x,...) do{if (LOG_SEVERITY <= LOG_SEVERITY_D) LOG_PRINT_IF(" %s [%s]: " x "\r\n","D",LOG_TAG,##__VA_ARGS__);}while(0)
|
|
#endif
|
|
|
|
#define ALOGI(x,...) do{if (LOG_SEVERITY <= LOG_SEVERITY_I) LOG_PRINT_IF(" %s [%s]: " x "\r\n","I",LOG_TAG,##__VA_ARGS__);}while(0)
|
|
#define ALOGW(x,...) do{if (LOG_SEVERITY <= LOG_SEVERITY_W) LOG_PRINT_IF(" %s [%s],[Func:%s],[Line:%d]: " x "\r\n","W",LOG_TAG,__func__,__LINE__,##__VA_ARGS__);}while(0)
|
|
#define ALOGE(x,...) do{if (LOG_SEVERITY <= LOG_SEVERITY_E) LOG_PRINT_IF(" %s [%s],[Func:%s],[Line:%d]: " x "\r\n","E",LOG_TAG,__func__,__LINE__,##__VA_ARGS__);}while(0)
|
|
|
|
/*+++++++++++++Log_Priority End++++++++++++++++++++++++*/
|
|
|
|
|
|
/*
|
|
*****************************************************************************************
|
|
* Extern Variables
|
|
*Note: These Variable define in OTA_sdcard, and other file will use, such as main.c
|
|
*****************************************************************************************
|
|
*/
|
|
extern char OTA_Sd_KeyFlag[OTA_FLAG_LENGTH];
|
|
extern FIL handle;
|
|
extern void OTA_LCD_ShowProcess(int per);
|
|
extern void OTA_LCD_DisplayText(char * text, int len,uint16_t OTA_x,uint16_t OTA_y);
|
|
extern void OTA_Clear_LCD(void);
|
|
extern void OTA_LCD_ShowImage(void);
|
|
extern VOID mci_LcdSetBrightness(UINT8 level);
|
|
|
|
/*
|
|
*****************************************************************************************
|
|
* Extern Function
|
|
*Note:The function defines in keypad_drv.c, and will use in main.c
|
|
*****************************************************************************************
|
|
*/
|
|
|
|
/***************************************
|
|
Function: Keypad_OTA_Flag_Check_U
|
|
Description: Detect OTA_Sdcard update keypad combination flag during "updater"
|
|
Parmeters: None
|
|
|
|
Return value: True: Have detected the update keypad combination flag
|
|
False: Not detect the update keypad combination flag
|
|
***************************************/
|
|
extern BOOL Keypad_OTA_Flag_Check_U(void);
|
|
|
|
|
|
/*
|
|
*****************************************************************************************
|
|
* Global Function API
|
|
*****************************************************************************************
|
|
*/
|
|
|
|
|
|
/***************************************
|
|
Function: ASR_OTA_Sdcard
|
|
Description: call the above function to update package by OTA_Sdcard
|
|
Parmeters: NULL
|
|
Return value: NULL
|
|
Note: Enter the function by OTA_Flag:"ASROTA-S"
|
|
***************************************/
|
|
void ASR_OTA_Sdcard(void);
|
|
|
|
/***************************************
|
|
Function: ASR_OTA_Key_Sdcard
|
|
Description: After detecting the OTA_Sd_Keypad_Flag, update package
|
|
Parmeters: NULL
|
|
Return value: NULL
|
|
Note: Enter the function by Keypad Combination
|
|
***************************************/
|
|
void ASR_OTA_Key_Sdcard(void);
|
|
|
|
#endif //_OTA_SDCARD_H
|
|
//***************************************************************
|
|
|