Files
banban/ql-application/threadx/interface/zip/example_zip.c
T

823 lines
23 KiB
C

/*================================================================
Copyright (c) 2020 Quectel Wireless Solution, Co., Ltd. All Rights Reserved.
Quectel Wireless Solution Proprietary and Confidential.
=================================================================*/
/*=================================================================
EDIT HISTORY FOR MODULE
This section contains comments describing changes made to the module.
Notice that changes are listed in reverse chronological order.
WHEN WHO WHAT, WHERE, WHY
------------ ------- -------------------------------------------------------------------------------
=================================================================*/
/*===========================================================================
* include files
===========================================================================*/
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include "ql_application.h"
#include "ql_zip.h"
#include "ql_fs.h"
#include "ql_log.h"
#include "ql_rtos.h"
#include "ql_uart.h"
#include "ql_type.h"
#include "ql_func.h"
/*===========================================================================
* Macro Definition
===========================================================================*/
#define QL_ZIPDEMO_LOG(fmt, args...) printf("[%s %d]" fmt, __func__, __LINE__, ##args)
#define FILE_NAME1 "testFile1.txt"
#define FILE_NAME2 "testFile2.txt"
#define FILE_ZIP_NAME "test.zip"
#define FILE_NAME_ZIP1 "test01.txt"
#define FILE_NAME_ZIP2 "test02.txt"
#define U_DISK "U:"
#define U_FILE_UNDER_ROOT1 "" U_DISK "/" FILE_NAME1 ""
#define U_FILE_UNDER_ROOT2 "" U_DISK "/" FILE_NAME2 ""
#define U_FILE_UNDER_ZIP1 "" U_DISK "/" FILE_NAME_ZIP1 ""
#define U_FILE_UNDER_ZIP2 "" U_DISK "/" FILE_NAME_ZIP2 ""
#define U_FILE_UNDER_ZIP "" U_DISK "/" FILE_ZIP_NAME ""
#define DIR_NAME "testDir"
#define U_DIR_PATH "" U_DISK "/" DIR_NAME ""
#define ZIP_FILE_LEN (1024)
/*===========================================================================
* Variate
===========================================================================*/
const char *unZipFilePath = U_FILE_UNDER_ZIP;
char *unZip_path = NULL;
const char *TestFilePath[2] = {U_FILE_UNDER_ROOT1, U_FILE_UNDER_ROOT2};
const char *TestFilezipname[2] = {U_FILE_UNDER_ZIP1, U_FILE_UNDER_ZIP2};
enum
{
QL_SPI_DEV0 = 0,
QL_SPI_DEV2 = 2
};
enum
{
QL_PIN_16_19,
QL_PIN_33_36
};
enum
{
SPI_CLOCK_13M = 0x0,
SPI_CLOCK_26M = 0x1,
SPI_CLOCK_52M = 0x2,
};
typedef struct file
{
unsigned int cnt;
unsigned char buf[1024];
} file_contex;
/*===========================================================================
* Functions
===========================================================================*/
static void ql_zip_demo_thread(void *param)
{
int ret = 0;
int run_num = 0;
HZIP hz = 0;
QFILE *fp1 = NULL;
QFILE *fp2 = NULL;
unsigned char *zip_fs_space = calloc(10, ZIP_FILE_LEN);
if (NULL == zip_fs_space)
{
QL_ZIPDEMO_LOG("malloc err\r\n");
return;
}
ql_rtos_task_sleep_s(5);
QL_ZIPDEMO_LOG("========== zip demo start ==========\r\n");
QL_ZIPDEMO_LOG("========== start create Test Files:[%s][%s]==========\r\n", TestFilePath[0], TestFilePath[1]);
fp1 = ql_fopen(TestFilePath[0], "w+");
fp2 = ql_fopen(TestFilePath[1], "w+");
if ((fp1 == NULL) || (fp2 == NULL))
{
QL_ZIPDEMO_LOG("open file failed ! %p-%p\r\n", fp1, fp2);
QL_ZIPDEMO_LOG("========== Create Test Files:[%s][%s] fail==========\r\n", TestFilePath[0], TestFilePath[1]);
goto main_exit;
}
else
{
QL_ZIPDEMO_LOG("open file:[%x][%x] success!\r\n", fp1, fp2);
}
memset(zip_fs_space, 'a', 10 * ZIP_FILE_LEN);
ret = ql_fwrite(zip_fs_space, 10 * ZIP_FILE_LEN, 1, fp1);
if (ret > 0)
{
QL_ZIPDEMO_LOG("file:test01.txt write :%d bytes data\r\n", ret);
}
else
{
ql_fclose(fp1);
ql_fclose(fp2);
QL_ZIPDEMO_LOG("file:test01.txt write Failed\r\n");
QL_ZIPDEMO_LOG("========== Create Test Files:[%s][%s] Failed==========\r\n", TestFilePath[0], TestFilePath[1]);
goto main_exit;
}
memset(zip_fs_space, 'b', 5 * ZIP_FILE_LEN);
ret = ql_fwrite(zip_fs_space, 5 * ZIP_FILE_LEN, 1, fp2);
if (ret > 0)
{
QL_ZIPDEMO_LOG("file:test02.txt write :%d bytes data\r\n", ret);
}
else
{
ql_fclose(fp1);
ql_fclose(fp2);
QL_ZIPDEMO_LOG("file:test02.txt write Failed\r\n");
QL_ZIPDEMO_LOG("========== Create Test Files:[%s][%s] Failed==========\r\n", TestFilePath[0], TestFilePath[1]);
goto main_exit;
}
ql_fclose(fp1);
ql_fclose(fp2);
QL_ZIPDEMO_LOG("========== Create Test Files:[%s][%s] success==========\r\n", TestFilePath[0], TestFilePath[1]);
ql_rtos_task_sleep_s(5);
for (run_num = 0; run_num < 1; run_num++)
{
QL_ZIPDEMO_LOG("========== loop_test[%d] start==========\r\n", run_num + 1);
QL_ZIPDEMO_LOG("========== start zip file[%d]==========\r\n", run_num + 1);
hz = ql_fs_zip_create(unZipFilePath, 0, &ret);
if (ret < 0)
{
QL_ZIPDEMO_LOG("create empty.zip:[%s] Failed,errcode=%d\r\n", unZipFilePath, ret);
goto main_exit;
}
else
{
QL_ZIPDEMO_LOG("create empty.zip:[%s] Success\r\n", unZipFilePath);
}
ret = ql_fs_zip_add_file(hz, TestFilezipname[0], TestFilePath[0]);
if (ret != QL_FILE_OK)
{
QL_ZIPDEMO_LOG("add [%s] to zip Failed\r\n", TestFilePath[0]);
goto main_exit;
}
QL_ZIPDEMO_LOG("add [%s] to zip Success\r\n", TestFilePath[0]);
ret = ql_fs_zip_add_file(hz, TestFilezipname[1], TestFilePath[1]);
if (ret != QL_FILE_OK)
{
QL_ZIPDEMO_LOG("add [%s] to zip Failed\r\n", TestFilePath[1]);
goto main_exit;
}
QL_ZIPDEMO_LOG("add [%s] to zip Success\r\n", TestFilePath[1]);
ql_fs_zip_close(hz);
#if 0
//?????
ql_rtos_task_sleep_s(5);
ql_unzip_mem_data_s *ql_unzip_tmp = (ql_unzip_mem_data_s *)calloc(1, sizeof(ql_unzip_mem_data_s));
if (ql_unzip_tmp == NULL)
{
QL_ZIPDEMO_LOG("malloc err");
goto main_exit;
}
ql_unzip_tmp->data = (void *)calloc(1, 15*ZIP_FILE_LEN);
if (ql_unzip_tmp->data == NULL)
{
QL_ZIPDEMO_LOG("malloc err");
free(ql_unzip_tmp);
goto main_exit;
}
ql_unzip_tmp->total_len = 15*ZIP_FILE_LEN;
ret = ql_fs_unzip_ex(unZipFilePath, QL_UNZIP_TO_MEMERY, ql_unzip_tmp);
if(ret!=QL_FILE_OK)
{
QL_ZIPDEMO_LOG("unzip file:[%s] Failed",unZipFilePath);
free(ql_unzip_tmp->data);
free(ql_unzip_tmp);
goto main_exit;
}
QL_ZIPDEMO_LOG("used_len=%d,item_num=%d\n",ql_unzip_tmp->used_len, ql_unzip_tmp->item_num);
int j=0;
int i = 0;
char *tmep = NULL;
for (j=0; j<ql_unzip_tmp->item_num; j++)
{
QL_ZIPDEMO_LOG("file path=%s\n", ql_unzip_tmp->item[j].file_path);
QL_ZIPDEMO_LOG("file len=%d,type=%d\n", ql_unzip_tmp->item[j].item_len, ql_unzip_tmp->item[j].file_type);
tmep = (char *)ql_unzip_tmp->item[j].item_data;
if (tmep && ql_unzip_tmp->item[j].file_type == QL_UNZIP_FILE)
{
if (0 == strcmp(ql_unzip_tmp->item[j].file_path, TestFilePath[0]))
{
for (i=0; i<ql_unzip_tmp->item[j].item_len; i++)
{
if (tmep[i] != 'a')
{
QL_ZIPDEMO_LOG("not match -----------");
break;
}
}
}
if (0 == strcmp(ql_unzip_tmp->item[j].file_path, TestFilePath[1]))
{
for (i=0; i<ql_unzip_tmp->item[j].item_len; i++)
{
if (tmep[i] != 'b')
{
QL_ZIPDEMO_LOG("not match -----------");
break;
}
}
}
}
}
free(ql_unzip_tmp->data);
free(ql_unzip_tmp);
QL_ZIPDEMO_LOG("unzip file:[%s] Success\r\n",unZipFilePath);
#else
//???????
QL_ZIPDEMO_LOG("========== zip file[%d] success==========\r\n", run_num + 1);
ql_rtos_task_sleep_s(5);
QL_ZIPDEMO_LOG("========== start unzip file[%d]==========\r\n", run_num + 1);
ret = ql_fs_unzip(unZipFilePath, unZip_path, 1);
if (ret != QL_FILE_OK)
{
QL_ZIPDEMO_LOG("unzip file:[%s] Failed\r\n", unZipFilePath);
goto main_exit;
}
QL_ZIPDEMO_LOG("unzip file:[%s] Success\r\n", unZipFilePath);
#endif
QL_ZIPDEMO_LOG("========== unzip file[%d] success==========\r\n", run_num + 1);
ql_rtos_task_sleep_s(5);
}
main_exit:
QL_ZIPDEMO_LOG("========== zip demo end ==========\r\n");
ql_remove(TestFilePath[0]);
ql_remove(TestFilePath[1]);
if (zip_fs_space != NULL)
{
free(zip_fs_space);
zip_fs_space = NULL;
}
ql_rtos_task_delete(NULL);
return;
}
// application_init(ql_zip_demo_thread, "ql_zipdemo", 32, 0);
static void ql_unzip_demo_test(void *param)
{
ql_rtos_task_sleep_s(5);
QL_ZIPDEMO_LOG("========== start unzip file==========\r\n");
int ret = ql_fs_unzip(unZipFilePath, unZip_path, 1);
if (ret != QL_FILE_OK)
{
QL_ZIPDEMO_LOG("unzip file:[%s] Failed\r\n", unZipFilePath);
goto main_exit;
}
QL_ZIPDEMO_LOG("unzip file:[%s] Success\r\n", unZipFilePath);
main_exit:
QL_ZIPDEMO_LOG("========== zip demo end ==========\r\n");
ql_rtos_task_delete(NULL);
return;
}
#define NAND_DEV "NAND:/"
#define U_DEV "U:"
#define TEST_TXT_NAME "test.txt"
#define TEST_ZIP_NAME "test.zip"
#define LITFS_ZIP_PATH "" U_DEV "/" TEST_ZIP_NAME ""
typedef unsigned int File_Handle;
typedef unsigned int size_t;
void nand_zip_test(void *argv)
{
int ret = 0;
File_Handle filep;
size_t status = 0;
HZIP hzs;
ql_rtos_task_sleep_s(5);
ql_spi_nand_init(QL_SPI_DEV0, QL_PIN_33_36, SPI_CLOCK_26M);
//写入文件1
filep = ql_nand_fopen("mount_temp.txt", "w+");
if (filep < 0)
{
printf("nand mount Failed\r\n");
return;
}
char mount_buf[50]="mount_temp_the_test_file";
status = ql_nand_fwrite(mount_buf, 1, strlen(mount_buf), filep);
if (status != strlen(mount_buf))
{
printf("fx_file_write is failede.!!\n");
return;
}
status = ql_nand_fsync(filep);
if (status != 0)
{
printf("ql_nand_fsync is failede.!!\n");
return;
}
printf("ql_nand_fwrite is ok.!!\r\n");
ql_nand_fclose(filep);
//写入文件2
char bufs_test[50] = "quec_zips2_test_in_windows";
char reads_buf[56] = {0};
filep = ql_nand_fopen(TEST_TXT_NAME, "w+");
status = ql_nand_fwrite(bufs_test, 1, strlen(bufs_test), filep);
if (status != strlen(bufs_test))
{
printf("fx_file_write is failede.!!\n");
return;
}
status = ql_nand_fsync(filep);
if (status != 0)
{
printf("ql_nand_fsync is failede.!!\n");
return;
}
printf("ql_nand_fwrite is ok.!!\r\n");
ql_nand_fclose(filep);
// 构建nand文件路径,用于压缩解压
char unZipFilePath[50] = {0};
sprintf(unZipFilePath, "%s%s", NAND_DEV, TEST_TXT_NAME);
char zipFilePath[50] = {0};
sprintf(zipFilePath, "%s%s", NAND_DEV, TEST_ZIP_NAME);
// 创建一个zip文件头
hzs = ql_fs_zip_create(zipFilePath, 0, &ret);
if (ret < 0)
{
printf("create empty.zip:[%s] Failed,errcode=%d\r\n", zipFilePath, ret);
ql_fs_zip_close(hzs);
return;
}
else
{
printf(("create empty.zip:[%s] Success\r\n", zipFilePath));
}
//添加文件1
ret = ql_fs_zip_add_file(hzs, TEST_TXT_NAME, unZipFilePath);
if (ret != QL_FILE_OK)
{
printf("add [%s] to zip Failed\r\n", TEST_TXT_NAME);
ql_fs_zip_close(hzs);
return;
}
///添加文件2
char unZipFilePath2[50] = {0};
sprintf(unZipFilePath2, "%s%s", NAND_DEV, "mount_temp.txt");
ret = ql_fs_zip_add_file(hzs, "mount_temp.txt", unZipFilePath2);
if (ret != QL_FILE_OK)
{
printf("add [mount_temp.txt] to zip Failed\r\n");
ql_fs_zip_close(hzs);
return;
}
printf("add to zip Success\r\n");
ql_fs_zip_close(hzs);
// printf("add to zip Success\r\n");
printf("zip_size_file:[%d]\r\n", sizeof(zipFilePath));
//先移除文件
ret = ql_nand_fremove(TEST_TXT_NAME);
ret = ql_nand_fremove("mount_temp.txt");
printf("ql_nand_fsize :ret=%d\r\n", ql_nand_fsize(TEST_ZIP_NAME));
//开始解压数据
#if 1
ql_rtos_task_sleep_s(5);
printf("========== start unzip file[%d]==========\r\n");
char *unZip_path = "NAND:/";
ret = ql_fs_unzip(zipFilePath, NULL, 1);
if (ret != QL_FILE_OK)
{
printf("unzip file:[%s] Failed\r\n", zipFilePath);
return;
}
printf("unzip file:[%s] Success\r\n", zipFilePath);
#endif
//读取解压的文件
#if 1
printf("========== start read file1==========\r\n");
filep = ql_nand_fopen(TEST_TXT_NAME, "r");
if (filep < 0)
{
printf("nand mount Failed:%d\r\n",__LINE__);
return;
}
status = ql_nand_fread(reads_buf, 1, sizeof(reads_buf), filep);
printf("status:%d\r\n",status);
ql_nand_fclose(filep);
printf("reads_buf1:%s\r\n", reads_buf);
printf("========== read file2_start==========\r\n");
memset(reads_buf, 0, sizeof(reads_buf));
filep = ql_nand_fopen("mount_temp.txt", "r");
if (filep < 0)
{
printf("nand mount Failed:%d\r\n",__LINE__);
return;
}
status = ql_nand_fread(reads_buf, 1, sizeof(reads_buf), filep);
printf("status:%d\r\n", status);
ql_nand_fclose(filep);
printf("reads_buf2:%s\r\n", reads_buf);
printf("read from zip Success\r\n");
printf("========== end read file==========\r\n");
#endif
//把压缩包数据写到littfs系统中,方便导入到windows中进行解压
#if 0
printf("========== start read test_zip==========\r\n");
char zip_buf[169]={0};
filep=ql_nand_fopen("test.zip", "rb");
if(filep == NULL){
printf("fx_file_open is failede.!!\r\n");
return;
}
status = ql_nand_fread(zip_buf,1,sizeof(zip_buf),filep);
if(status != 168){
printf("fx_file_read is failede.!!\n");
ql_nand_fclose(filep);
return;
}
printf("read from zip Success\r\n");
printf("status:%d\r\n",status);
ql_nand_fclose(filep);
// printf("zip_data:");
// for(int i=0;i<sizeof(zip_buf);i++){
// printf("%x",zip_buf[i]);
// }
// printf("\r\n");
QFILE *littfs_filep = NULL;
littfs_filep = ql_fopen(LITFS_ZIP_PATH, "wb");
if(littfs_filep == NULL){
printf("ql_fopen is failede.!!\r\n");
return;
}
ret = ql_fwrite(zip_buf,sizeof(zip_buf),1,littfs_filep);
if(ret>0){
printf("ql_fwrite is ok.!!\r\n");
ql_fclose(littfs_filep);
}else{
printf("ql_fwrite is failede.!!\r\n");
ql_fclose(littfs_filep);
return;
}
ql_fclose(littfs_filep);
#endif
}
//解压从windows接受的压缩包
ql_sem_t semaRef;
int read_len = 0;
char r_data[1024] = {0};
void quec_uart_rx_callback(QL_UART_PORT_NUMBER_E port, void *para)
{
read_len = ql_uart_read(port, r_data, sizeof(r_data));
ql_rtos_semaphore_release(semaRef);
}
void quec_main_uart_rx(void)
{
int ret = -1;
ql_uart_config_t dcb;
ql_log_mask_set(QL_LOG_APP_MASK, QL_LOG_PORT_UART);
ret = ql_uart_open(QL_MAIN_UART_PORT, QL_UART_BAUD_115200, QL_FC_NONE);
ql_uart_get_dcbconfig(QL_MAIN_UART_PORT, &dcb);
dcb.baudrate = QL_UART_BAUD_115200;
ql_uart_set_dcbconfig(QL_MAIN_UART_PORT, &dcb);
ql_uart_register_cb(QL_MAIN_UART_PORT, quec_uart_rx_callback); // use callback to read uart data
// 清除可能已存在的信号量计数
while(ql_rtos_semaphore_wait(semaRef, 0) == 0);
ql_rtos_semaphore_wait(semaRef, QL_WAIT_FOREVER);
printf("data_len:%d\r\n", read_len);
// printf("data:\r\n");
// for (int i = 0; i < read_len; i++)
// {
// printf("%x", r_data[i]);
// }
// printf("\r\n");
}
static void nand_unzip_test(void *argv)
{
printf("======nand_unzip_test_start=======\r\n");
int ret = 0;
File_Handle filep,filep1;
size_t status = 0;
HZIP hzs;
char from_win_buf[50]={0};
ql_rtos_semaphore_create(&semaRef, 0);
quec_main_uart_rx();//接受从windows下压缩包的数据
ql_spi_nand_init(QL_SPI_DEV0, QL_PIN_33_36, SPI_CLOCK_26M);
filep = ql_nand_fopen("zip_test2.zip", "wb");
if (filep < 0)
{
printf("ql_nand_fopen is failede.!!\r\n");
return;
}
status = ql_nand_fwrite(r_data, 1, sizeof(r_data), filep);
if (status > 0)
{
printf("ql_nand_fwrite is ok.!!\r\n");
ql_nand_fclose(filep);
}
else
{
printf("ql_nand_fwrite is failede.!!\r\n");
ql_nand_fclose(filep);
return;
}
char zipFilePath[128] = {0};
sprintf(zipFilePath, "%s%s", NAND_DEV,"zip_test2.zip" );
ret = ql_fs_unzip(zipFilePath, NULL, 1);
if (ret != QL_FILE_OK)
{
printf("unzip file:[%s] Failed\r\n", zipFilePath);
return;
}
printf("unzip file:[%s] Success\r\n", zipFilePath);
filep = ql_nand_fopen("zip_test.txt", "r");
if(filep < 0){
printf("ql_nand_fopen is failede.!!\r\n");
ql_nand_fclose(filep);
return;
}
//读文件1
status = ql_nand_fread(from_win_buf, 1, sizeof(from_win_buf), filep);
if (status > 0)
{
printf("ql_nand_fread is ok.!! %d\r\n",__LINE__);
ql_nand_fclose(filep);
}
else
{
printf("ql_nand_fread is failede.!!\r\n");
ql_nand_fclose(filep);
return;
}
printf("status:%d\r\n",status);
printf("from_win_buf:%s\r\n", from_win_buf);
//读文件2
memset(from_win_buf, 0, sizeof(from_win_buf));
filep1 = ql_nand_fopen("zip_test2.txt", "r");
if(filep1 < 0){
printf("ql_nand_fopen is failede.!!\r\n");
ql_nand_fclose(filep1);
return;
}
status = ql_nand_fread(from_win_buf, 1, sizeof(from_win_buf), filep1);
if (status > 0)
{
printf("ql_nand_fread is ok.!!\r\n");
ql_nand_fclose(filep1);
}
else
{
printf("ql_nand_fread is failede.!!\r\n");
ql_nand_fclose(filep1);
return;
}
printf("from_win_buf:%s\r\n", from_win_buf);
printf("======nand_unzip_test_end=======\r\n");
}
#define FILE_ZIP_NAME1 "test3.zip"
#define FILE_NAME1 "ZIPTEST.TXT"
#define U_DISK1 "U:"
#define FILE_NAME_ZIP1 "ZIPTEST1.txt"
#define FILE_ZIP_DIR_FILE1 "" U_DISK1 "/" FILE_NAME_ZIP1 ""
#define FILE_ZIP_DS_FILE1 "" U_DISK1 "/" FILE_NAME1 ""
#define FILE_ZIP_PATH1 "" U_DISK1 "/" FILE_ZIP_NAME1 ""
const char *unZipFilePaths1 = FILE_ZIP_PATH1;
const char *zipFilePath1 = FILE_ZIP_DS_FILE1;
const char *zipNAME1 = FILE_ZIP_DIR_FILE1;
char *unZip_paths1 = NULL;
void littfs_zip_test(void *argv)
{
int ret = 0;
QFILE *filep = NULL;
HZIP hzs;
// ql_rtos_task_sleep_s(5);
// ql_spi_nand_init(QL_SPI_DEV0, QL_PIN_33_36,SPI_CLOCK_26M);
// ret = ql_nand_mkdir("quec_zips1");
// printf("ql_nand_mkdir %d\n",ret);
char bufs_test[50] = "quec_zips2_test_in_windows";
char read_buf[50] = {0};
filep = ql_fopen(FILE_ZIP_DS_FILE1, "wb+");
if (filep == NULL)
{
printf("fx_file_open is failede.!!\n");
return;
}
ret = ql_fwrite(bufs_test, strlen(bufs_test), 1, filep);
if (ret > 0)
{
printf("fx_file_write is success.!!\n");
}
else
{
printf("fx_file_write is failede.!!\n");
ql_fclose(filep);
return;
}
ql_fclose(filep);
ql_rtos_task_sleep_s(5);
// 创建一个zip文件头
hzs = ql_fs_zip_create(unZipFilePaths1, 0, &ret);
if (ret < 0)
{
printf("create empty.zip:[%s] Failed,errcode=%d\r\n", unZipFilePaths1, ret);
printf("------------------\n");
ql_fs_zip_close(hzs);
return;
}
else
{
printf(("create empty.zip:[%s] Success\r\n", unZipFilePaths1));
}
ret = ql_fs_zip_add_file(hzs, zipNAME1, zipFilePath1);
if (ret != QL_FILE_OK)
{
printf("add [%s] to zip Failed\r\n", zipFilePath1);
ql_fs_zip_close(hzs);
return;
}
else
{
printf("add [%s] to zip Success\r\n", zipFilePath1);
}
ql_fs_zip_close(hzs);
// printf("add to zip Success\r\n");
ql_rtos_task_sleep_s(5);
printf("========== start unzip file[%d]==========\r\n");
ret = ql_fs_unzip(unZipFilePaths1, unZip_paths1, 1);
if (ret != QL_FILE_OK)
{
printf("unzip file:[%s] Failed\r\n", unZipFilePaths1);
return;
}
printf("unzip file:[%s] Success\r\n", unZipFilePaths1);
#if 0
printf("========== start read zip file==========\r\n");
filep =ql_fopen(unZipFilePaths1, "rb");
if(filep==NULL){
printf("littfss_fx_file_open is failede.!!\n");
return;
}
ret=ql_fread(read_buf, sizeof(read_buf), 1, filep);
ql_fclose(filep);
printf("read file size is %d\r\n",ret);
printf("data:");
for(int i=0;i<sizeof(read_buf);i++){
printf("%x",read_buf[i]);
}
printf("\r\n");
#endif
}
// application_init(ql_unzip_demo_test, "ql_zipdemo", 32, 0);
//application_init(nand_zip_test, "nand_zip_test", 10, 0);
//application_init(littfs_zip_test, "littfs_zip_test", 10, 0);
// application_init(ql_zip_demo_thread,"ql_zip_demo_thread",10,0);
//application_init(nand_unzip_test, "nand_unzip_test", 10, 0);
// application_init(test_seek, "test_seek", 10, 0);