From 4b5dadc827305687e9d9a7733608e23849297a38 Mon Sep 17 00:00:00 2001 From: "sober.song" Date: Fri, 5 Jan 2024 20:32:39 +0800 Subject: [PATCH 01/32] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E5=90=8D=EF=BC=8C=E5=A2=9E=E5=8A=A0=E5=AD=98=E5=82=A8=E8=AE=BE?= =?UTF-8?q?=E5=A4=87=E7=9B=98=E7=AC=A6=E6=A0=87=E8=AF=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cardv/SrcCode/PrjCfg_HUNTING_S550.h | 2 +- .../SrcCode/UIApp/Movie/UIAppMovie_Exe.c | 7 ++-- .../SrcCode/UIApp/Photo/UIAppPhoto_Exe.c | 9 +++-- .../source/sf_app/code/source/4gMng/sf_ftp.c | 15 ++++--- .../source/sf_app/code/source/4gMng/sf_sms.c | 7 +++- .../sf_app/code/source/storeMng/sf_storeMng.c | 14 ++++--- .../sf_app/code/source/wifi/sf_wifi_svr.c | 17 +++++--- .../sifar/code/source/common/sf_common.c | 9 ++++- .../cardv/SrcCode/UIApp/MovieFast/MovieFast.c | 40 ++++++++++++++++++- .../cardv/SrcCode/UIApp/PhotoFast/PhotoFast.c | 20 +++++++++- .../UIApp/PhotoFast/PhotoFastSliceEncode.c | 7 +++- 11 files changed, 114 insertions(+), 33 deletions(-) diff --git a/code/application/source/cardv/SrcCode/PrjCfg_HUNTING_S550.h b/code/application/source/cardv/SrcCode/PrjCfg_HUNTING_S550.h index f8f257ab6..44ceda96b 100755 --- a/code/application/source/cardv/SrcCode/PrjCfg_HUNTING_S550.h +++ b/code/application/source/cardv/SrcCode/PrjCfg_HUNTING_S550.h @@ -927,7 +927,7 @@ #define SF_BASE_VERSION "7MR5RCw4102" #define HW_S530 DISABLE #define DCF_DIR_NAME "MEDIA" /* 100MEDIA */ -#define DCF_FILE_NAME "SYGW" /* SYFW0001.JPG */ +#define DCF_FILE_NAME "SY" /* SYFW0001.JPG */ #define PHOTO_THUMB_PATH ":\\THUMB\\" #define MOVIE_THUMB_PATH ":\\THUMB\\" diff --git a/code/application/source/cardv/SrcCode/UIApp/Movie/UIAppMovie_Exe.c b/code/application/source/cardv/SrcCode/UIApp/Movie/UIAppMovie_Exe.c index 67d0b568f..d4523784b 100755 --- a/code/application/source/cardv/SrcCode/UIApp/Movie/UIAppMovie_Exe.c +++ b/code/application/source/cardv/SrcCode/UIApp/Movie/UIAppMovie_Exe.c @@ -1224,10 +1224,11 @@ BOOL MovieExe_CheckSNFull(void) static void MovieExe_FileNamingCB(MOVIE_CFG_REC_ID id, char *pFileName) { + UINT32 dcf_handle = (UINT32)System_Get_DCF_Handle(); /* 0:emmc 1:sd */ + char font = System_Get_DCF_Disk_Drive(dcf_handle) == 'B' ? 'B' : 'E'; #if USE_FILEDB static struct tm CurDateTime = {0}; - g_FileSerialNum++; if (g_FileSerialNum > FILE_SN_MAX) { @@ -1256,7 +1257,7 @@ static void MovieExe_FileNamingCB(MOVIE_CFG_REC_ID id, char *pFileName) #endif #elif USE_DCF - UINT32 dcf_handle = (UINT32) System_Get_DCF_Handle(); + //UINT32 dcf_handle = (UINT32) System_Get_DCF_Handle(); UINT32 nextFolderID = 0, nextFileID = 0; if (DCF_GetDBInfoEx(dcf_handle, DCF_INFO_IS_9999)) { @@ -1269,7 +1270,7 @@ static void MovieExe_FileNamingCB(MOVIE_CFG_REC_ID id, char *pFileName) DBG_DUMP("%s added to DCF Path%lu\r\n", pFileName, dcf_handle); #if HUNTING_CAMERA_MCU == ENABLE char tmp[NMC_TOTALFILEPATH_MAX_LEN] = {'\0'}; - sprintf(tmp, "S%03d%04d.JPG", nextFolderID, nextFileID); + sprintf(tmp, "S%c%03d%04d.JPG", font, nextFolderID, nextFileID); if(id == _CFG_REC_ID_1){ snprintf(thumb_current_path_main, sizeof(thumb_current_path_main), "%s", tmp); } diff --git a/code/application/source/cardv/SrcCode/UIApp/Photo/UIAppPhoto_Exe.c b/code/application/source/cardv/SrcCode/UIApp/Photo/UIAppPhoto_Exe.c index c4947f9c4..3db23be68 100755 --- a/code/application/source/cardv/SrcCode/UIApp/Photo/UIAppPhoto_Exe.c +++ b/code/application/source/cardv/SrcCode/UIApp/Photo/UIAppPhoto_Exe.c @@ -6884,6 +6884,7 @@ INT32 PhotoExe_Preview_SliceEncode_CB3(void* user_data) char* file_path = ImageApp_Photo_GetLastWriteFilePath(); char tmp[256] = {'\0'}; UINT32 length = strlen(file_path); + char font = System_Get_DCF_Disk_Drive(dcf_handle) == 'B' ? 'B' : 'E'; #if HUNTING_CAMERA_MCU == ENABLE char folder[4], number[5]; @@ -6893,7 +6894,7 @@ INT32 PhotoExe_Preview_SliceEncode_CB3(void* user_data) strncpy(number, file_path + length - 8, 4); number[4] = '\0'; - snprintf(tmp, sizeof(tmp), "%c%sW%s%s.JPG", System_Get_DCF_Disk_Drive(dcf_handle), PHOTO_THUMB_PATH, folder, number); /* DCF 8.3 naming rule */ + snprintf(tmp, sizeof(tmp), "%c%sW%c%s%s.JPG", System_Get_DCF_Disk_Drive(dcf_handle), PHOTO_THUMB_PATH, font, SF_SEND_LIST_DIR, folder, number); /* DCF 8.3 naming rule */ #else @@ -6919,8 +6920,10 @@ INT32 PhotoExe_Preview_SliceEncode_CB3(void* user_data) else if(SF_CAM_MODE_VIDEO2 == sf_get_cammode_statu()){ enFileType = SF_FILE_TYPE_PIC_VIDEO; } - snprintf(tmp, sizeof(tmp), "%s%sW%s%s.JPG", System_Get_DCF_Disk_Drive(dcf_handle) == 'B' ? SF_EMMC_ROOT : SF_SD_ROOT, SF_SEND_LIST_DIR, folder, number); /* DCF 8.3 naming rule */ - snprintf(tmp2, sizeof(tmp2), "W%s%s.JPG", folder, number); /* DCF 8.3 naming rule */ + snprintf(tmp, sizeof(tmp), "%s%sW%c%s%s.JPG", System_Get_DCF_Disk_Drive(dcf_handle) == 'B' ? SF_EMMC_ROOT : SF_SD_ROOT, SF_SEND_LIST_DIR, + font, folder, number); /* DCF 8.3 naming rule */ + + snprintf(tmp2, sizeof(tmp2), "W%c%s%s.JPG", font, folder, number); /* DCF 8.3 naming rule */ DBG_DUMP("PHOTO THUMB2 %s \n %s\n", tmp, tmp2); sf_file_thumb_cfg_fill(tmp, tmp2, queue_ele_in->jpg_thumb_size, enFileType); if((!sf_get_mode_flag()) || ((FALSE == sf_check_net_work_flag()) && (0 < sf_cardv_get_cq_signal()) && (SF_CAM_MODE_PHOTO == sf_get_cammode_statu()))) diff --git a/code/application/source/sf_app/code/source/4gMng/sf_ftp.c b/code/application/source/sf_app/code/source/4gMng/sf_ftp.c index caa751cc5..1133b1c2a 100755 --- a/code/application/source/sf_app/code/source/4gMng/sf_ftp.c +++ b/code/application/source/sf_app/code/source/4gMng/sf_ftp.c @@ -1806,6 +1806,8 @@ SINT32 sf_hd_ftp_send(void) return SF_FAILURE; } + char font = sf_get_strg_dev() == MMC_DEV_EMMC ? 'B' : 'E'; + sf_set_send_hd(0); sf_custom_str_get(CamNameStr); sf_4G_signal_level_get(sf_get_net_generation(),sf_get_cq_signal(),&csqlevel); @@ -1819,7 +1821,7 @@ SINT32 sf_hd_ftp_send(void) { while((sf_app_while_flag()) && (((piccount) < SendFileTotal)) && ((pPara->GprsMode == 1) || ((pSifarPara->subscribeSendCnt < SUBSCRIBE_SEND_MAX_NUM) && (pPara->GprsMode != 1)))) { - snprintf((char *)ftpFileName, sizeof(ftpFileName), "W%03d%04d.JPG", fileCfg->stfileattr[piccount].dirKey, fileCfg->stfileattr[piccount].fileKey); + snprintf((char *)ftpFileName, sizeof(ftpFileName), "W%c%03d%04d.JPG", font, fileCfg->stfileattr[piccount].dirKey, fileCfg->stfileattr[piccount].fileKey); snprintf((char *)filePath, sizeof(filePath), "%s%s/%s", strg_path, SF_HD_DIR, ftpFileName); free(strg_path); sf_set_del_flag(FALSE); @@ -1841,7 +1843,7 @@ SINT32 sf_hd_ftp_send(void) //memset(filePath, '\0', sizeof(filePath)); snprintf(cameraID, sizeof(cameraID), "%s-%d-%d-%s-", pPara->ModuleImei, battery, csqlevel, CamNameStr); - snprintf((char *)ftpFileName, sizeof(ftpFileName), "%sHD-W%03d%04d.JPG", cameraID, fileCfg->stfileattr[piccount].dirKey, fileCfg->stfileattr[piccount].fileKey); + snprintf((char *)ftpFileName, sizeof(ftpFileName), "%sHD-W%c%03d%04d.JPG", cameraID, font, fileCfg->stfileattr[piccount].dirKey, fileCfg->stfileattr[piccount].fileKey); //snprintf((char *)filePath, sizeof(filePath), "UFS:/W%03d%04d.JPG", fileCfg->stfileattr[piccount].dirKey, fileCfg->stfileattr[piccount].fileKey); @@ -1966,6 +1968,7 @@ UINT32 sf_video_find_file(UINT16 dirKey, UINT16 fileKey, UINT8 *destFname) //UINT8 srcFname[50] = {0}; char *strg_path = sf_get_root_path(); + char *font_str = sf_get_strg_dev() == MMC_DEV_EMMC ? "BX" : "EX"; if(strg_path == NULL) { free(strg_path); @@ -1978,7 +1981,7 @@ UINT32 sf_video_find_file(UINT16 dirKey, UINT16 fileKey, UINT8 *destFname) { dirKey = fileIndex / 10000; fileKey = fileIndex % 10000; - SF_SPRINTF(fname, "%s%s/%03dMEDIA/%s%04d.MP4", strg_path, SF_DCIM_DIR, dirKey, DCF_FILE_NAME, fileKey); + SF_SPRINTF(fname, "%s%s/%03dMEDIA/%s%s%04d.MP4", strg_path, SF_DCIM_DIR, dirKey, DCF_FILE_NAME, font_str, fileKey); //fileSize = sf_get_file_size(fname); sf_file_size_get(fname,&fileSize); @@ -2036,6 +2039,8 @@ SINT32 sf_video_ftp_send(void) double elapsed_time = 0; SINT64 sendEndTime = 0; UINT32 size = 0; + + char font = sf_get_strg_dev() == MMC_DEV_EMMC ? 'B' : 'E'; sf_set_send_video(0); sf_custom_str_get(CamNameStr); @@ -2050,7 +2055,7 @@ SINT32 sf_video_ftp_send(void) { while((sf_app_while_flag()) && (((piccount) < SendFileTotal)) && ((pPara->GprsMode == 1) || ((pSifarPara->subscribeVideoSendCnt < SUBSCRIBE_VIDEO_SEND_MAX_NUM) && (pPara->GprsMode != 1)))) { - snprintf((char *)ftpFileName, sizeof(ftpFileName), "W%03d%04d.MP4", fileCfg->stfileattr[piccount].dirKey, fileCfg->stfileattr[piccount].fileKey); + snprintf((char *)ftpFileName, sizeof(ftpFileName), "W%c%03d%04d.MP4", font, fileCfg->stfileattr[piccount].dirKey, fileCfg->stfileattr[piccount].fileKey); //snprintf((char *)filePath, sizeof(filePath), "%s/%s", SF_HD_DIR, ftpFileName); printf("[%s:%d] piccount:%d dirKey:%d fileKey:%d\n", __FUNCTION__, __LINE__, piccount, fileCfg->stfileattr[piccount].dirKey, fileCfg->stfileattr[piccount].fileKey); @@ -2080,7 +2085,7 @@ SINT32 sf_video_ftp_send(void) //memset(filePath, '\0', sizeof(filePath)); snprintf(cameraID, sizeof(cameraID), "%s-%d-%d-%s-", pPara->ModuleImei, battery, csqlevel, CamNameStr); - snprintf((char *)ftpFileName, sizeof(ftpFileName), "%sW%03d%04d.MP4", cameraID, fileCfg->stfileattr[piccount].dirKey, fileCfg->stfileattr[piccount].fileKey); + snprintf((char *)ftpFileName, sizeof(ftpFileName), "%sW%c%03d%04d.MP4", cameraID, font, fileCfg->stfileattr[piccount].dirKey, fileCfg->stfileattr[piccount].fileKey); //snprintf((char *)filePath, sizeof(filePath), "UFS:/W%03d%04d.MP4", fileCfg->stfileattr[piccount].dirKey, fileCfg->stfileattr[piccount].fileKey); diff --git a/code/application/source/sf_app/code/source/4gMng/sf_sms.c b/code/application/source/sf_app/code/source/4gMng/sf_sms.c index c364e7940..bc2a4da64 100755 --- a/code/application/source/sf_app/code/source/4gMng/sf_sms.c +++ b/code/application/source/sf_app/code/source/4gMng/sf_sms.c @@ -1976,7 +1976,9 @@ void sf_hd_pic_add_to_list(UINT8 *fileName) SubImgList_t *pList = pSubImgListHead; SubImgList_t *qList = pSubImgListHead; char fname[50] = {0}; + char *font = sf_get_strg_dev() == MMC_DEV_EMMC ? "BX" : "EX"; printf("[%s:%d] add to list:%s\n", __FUNCTION__, __LINE__, fileName); + SF_STRNCPY(tempStr, fileName+1, 3); dirKey = atoi((const char *)tempStr); fileKey = atoi((const char *)fileName+4); @@ -1986,7 +1988,7 @@ void sf_hd_pic_add_to_list(UINT8 *fileName) free(strg_path); return; } - SF_SPRINTF(fname, "%s%s/%03dMEDIA/%s%04d.JPG", strg_path, SF_DCIM_DIR, dirKey, DCF_FILE_NAME, fileKey); + SF_SPRINTF(fname, "%s%s/%03dMEDIA/%s%s%04d.JPG", strg_path, SF_DCIM_DIR, dirKey, DCF_FILE_NAME, font, fileKey); free(strg_path); if(sf_file_IsExsit(fname) != SF_TRUE) { @@ -2117,6 +2119,7 @@ void sf_video_add_to_list(UINT8 *fileName) UINT8 i = 0; UINT16 dirKeytmp = 0; UINT16 fileKeytmp = 0; + char *font_str = sf_get_strg_dev() == MMC_DEV_EMMC ? "BX" : "EX"; printf("add to list:%s\n", fileName); char *strg_path = sf_get_root_path(); @@ -2136,7 +2139,7 @@ void sf_video_add_to_list(UINT8 *fileName) { dirKeytmp = fileIndex / 10000; fileKeytmp = fileIndex % 10000; - SF_SPRINTF(fname, "%s%s/%03dMEDIA/%s%04d.MP4", strg_path, SF_DCIM_DIR, dirKeytmp, DCF_FILE_NAME, fileKeytmp); + SF_SPRINTF(fname, "%s%s/%03dMEDIA/%s%s%04d.MP4", strg_path, SF_DCIM_DIR, dirKeytmp, DCF_FILE_NAME, font_str, fileKeytmp); free(strg_path); sf_file_size_get(fname,&fileSize); printf("find video:%s size=%d\n", fname, fileSize); diff --git a/code/application/source/sf_app/code/source/storeMng/sf_storeMng.c b/code/application/source/sf_app/code/source/storeMng/sf_storeMng.c index fd46d4763..188febbcb 100644 --- a/code/application/source/sf_app/code/source/storeMng/sf_storeMng.c +++ b/code/application/source/sf_app/code/source/storeMng/sf_storeMng.c @@ -290,7 +290,7 @@ SINT32 sf_sd_loopremove(const char *path) SLOGE("open [%s] error!!!\n",path); return -1; } - + while(index < dircnt) { MLOGD("d_name: %s\n",namelist[index]->d_name); @@ -878,12 +878,14 @@ int sf_app_sd_loop(void) free(strg_path); return SF_FAILURE; } - + char font = sf_get_strg_dev() == MMC_DEV_EMMC ? 'B' : 'E'; + char *font_str = sf_get_strg_dev() == MMC_DEV_EMMC ? "BX" : "EX"; + while((nloop) && (dircount < 5)) { sprintf(cPathTmp,"%s%s/%03d%s", strg_path, SF_DCF_ROOT_DIR_NAME, nDirKey, DCF_DIR_NAME); // ""/mnt/sd/DCIM/100MEDIA" //Not Empty,Record File Name - sprintf(cFileTmp, "%s/%s%04d.%s",cPathTmp, DCF_FILE_NAME, nFileKey, SF_DCF_EXT_PHOTO); + sprintf(cFileTmp, "%s/%s%s%04d.%s",cPathTmp, DCF_FILE_NAME, font_str, nFileKey, SF_DCF_EXT_PHOTO); if(access(cFileTmp,R_OK) == 0) { @@ -893,7 +895,7 @@ int sf_app_sd_loop(void) } else { - sprintf(cFileTmp, "%s/%s%04d.%s", cPathTmp, DCF_FILE_NAME, nFileKey, SF_DCF_EXT_MOV); + sprintf(cFileTmp, "%s/%s%s%04d.%s", cPathTmp, DCF_FILE_NAME, font_str, nFileKey, SF_DCF_EXT_MOV); if(access(cFileTmp,R_OK) == 0) { MLOGD("Will Delete File Name:%s\n", cFileTmp); @@ -919,7 +921,7 @@ int sf_app_sd_loop(void) } } - sprintf(cFileTmp,"%s%s/W%03d%04d.JPG", strg_path, SF_DCF_THM_DIR_NAME, nDirKey, nFileKey); + sprintf(cFileTmp,"%s%s/W%c%03d%04d.JPG", strg_path, SF_DCF_THM_DIR_NAME, font, nDirKey, nFileKey); //MLOGD("Thumb Filename:%s\n", cFileTmp); if(access(cFileTmp,R_OK) == 0) { @@ -927,7 +929,7 @@ int sf_app_sd_loop(void) remove(cFileTmp); } - sprintf(cFileTmp,"%s%s/S%03d%04d.JPG", strg_path, SF_DCF_THM_DIR_NAME, nDirKey, nFileKey); + sprintf(cFileTmp,"%s%s/S%c%03d%04d.JPG", strg_path, SF_DCF_THM_DIR_NAME, font, nDirKey, nFileKey); //MLOGD("Thumb Filename:%s\n", cFileTmp); if(access(cFileTmp,R_OK) == 0) { diff --git a/code/application/source/sf_app/code/source/wifi/sf_wifi_svr.c b/code/application/source/sf_app/code/source/wifi/sf_wifi_svr.c index 6929ac9b4..a214f865e 100755 --- a/code/application/source/sf_app/code/source/wifi/sf_wifi_svr.c +++ b/code/application/source/sf_app/code/source/wifi/sf_wifi_svr.c @@ -431,6 +431,8 @@ S8 *appThumbKeyToName(thumbSize_t imgSize, thumbType_t fileType, UINT16 dirKey, return SF_FAILURE; } + char font =sf_get_strg_dev() == MMC_DEV_EMMC ? 'B' : 'E'; + if(imgSize == THUMB_320x240) { sprintf((char *)tempPath, "%s%s/small", strg_path, THUMB_PATH); @@ -472,7 +474,7 @@ S8 *appThumbKeyToName(thumbSize_t imgSize, thumbType_t fileType, UINT16 dirKey, #endif /****check floder and creat it if that is not exist***end****/ - sprintf((char *)fileName, "%s/%03d%1d%04d.JPG", path, dirKey, fileType, fileKey); + sprintf((char *)fileName, "%s/%03d%1d%c%04d.JPG", path, dirKey, fileType, font, fileKey); MLOGI("ThumbName:%s", fileName); return fileName; } @@ -1141,7 +1143,8 @@ SINT32 sf_svr_packet_proc(SINT32 fd, UINT8 *pAppData, UINT16 dataLen) return SF_FAILURE; } - + char *font_str = sf_get_strg_dev() == MMC_DEV_EMMC ? "BX" : "EX"; + //printf("[sf_svr_packet_proc]dataLen: %d\n",dataLen); if(poweroff_mode == POWEROFF_COUNTDOWN) @@ -1355,11 +1358,12 @@ SINT32 sf_svr_packet_proc(SINT32 fd, UINT8 *pAppData, UINT16 dataLen) strcpy((char *)tempbuf, (char *)pMsgStruct->msgBuf.getHdFile.dirName); strncpy((char *)tempbuf2, (char *)tempbuf, 3); tempbuf[8] = '\0'; - sprintf((char *)gFileName, "%sDCIM/%s%s/%s%s%s", + sprintf((char *)gFileName, "%sDCIM/%s%s/%s%s%s%s", strg_path, tempbuf2, DCF_DIR_NAME, DCF_FILE_NAME, + font_str, tempbuf+4, (tempbuf[3] == '0' ? ".JPG" : (tempbuf[3] == '1' ? ".MP4" : ".MP4"))); } @@ -1896,11 +1900,12 @@ SINT32 sf_svr_packet_proc(SINT32 fd, UINT8 *pAppData, UINT16 dataLen) strncpy((char *)tempbuf2, (char *)pMsgStruct->msgBuf.ctrlFileTransfer.fileName +1, 3); tempbuf[8] = '\0'; - sprintf((char *)fileName, "%sDCIM/%s%s/%s%s%s", + sprintf((char *)fileName, "%sDCIM/%s%s/%s%s%s%s", strg_path, tempbuf2, DCF_DIR_NAME, DCF_FILE_NAME, + font_str, tempbuf+4, (tempbuf[0] == 'W' ? ".JPG" : (tempbuf[0] == 'S' ? ".MP4" : ".MP4"))); } @@ -2003,9 +2008,9 @@ SINT32 sf_svr_packet_proc(SINT32 fd, UINT8 *pAppData, UINT16 dataLen) ret = remove((char *)fileName); MLOGI("delete thumb name=%s ret=%d\n",fileName,ret); if(fileType == STILL_THUMB) - sprintf((char *)fileName,"./%3dMEDIA/%s%04d.JPG", dirKey, DCF_FILE_NAME, fileKey); + sprintf((char *)fileName,"./%3dMEDIA/%s%s%04d.JPG", dirKey, DCF_FILE_NAME, font_str, fileKey); else - sprintf((char *)fileName,"./%3dMEDIA/%s%04d.MP4", dirKey, DCF_FILE_NAME, fileKey); + sprintf((char *)fileName,"./%3dMEDIA/%s%s%04d.MP4", dirKey, DCF_FILE_NAME, font_str, fileKey); ret = remove((char *)fileName); } diff --git a/code/lib/source/sifar/code/source/common/sf_common.c b/code/lib/source/sifar/code/source/common/sf_common.c index 64812fc8e..d61c88752 100755 --- a/code/lib/source/sifar/code/source/common/sf_common.c +++ b/code/lib/source/sifar/code/source/common/sf_common.c @@ -65,6 +65,8 @@ #include "sf_4g_lpa.h" #include #include +#include + BOOL isGoing2PowerOff = FALSE; UINT16 AutoOfftime = 0; @@ -2913,6 +2915,9 @@ void* sf_cardv_hd_cap_thread(void *arg) { UINT8 PowerOnMode = sf_cardv_convert_power_on_mode(); MLOGD(" HD start PowerOnMode:%d\n", PowerOnMode); + + char font = sf_get_strg_dev() == MMC_DEV_EMMC ? 'B' : 'E'; + char *font_str = sf_get_strg_dev() == MMC_DEV_EMMC ? "BX" : "EX"; if((PWR_ON_SMS == PowerOnMode) || (PWR_ON_TIME_SYNC == PowerOnMode)) { //if(TRUE != sf_is_preview()) @@ -2939,8 +2944,8 @@ void* sf_cardv_hd_cap_thread(void *arg) //HdflieName memset(HdflieName, '\0', sizeof(HdflieName)); sf_hd_flag_clear_done(0); - snprintf(HdflieName, sizeof(HdflieName), "W%03d%04d.JPG", fileCfg->stfileattr[fileIndex].dirKey, fileCfg->stfileattr[fileIndex].fileKey); - snprintf(str, 64, "A:\\DCIM\\%03d%s\\%s%04d.JPG", fileCfg->stfileattr[fileIndex].dirKey, DCF_DIR_NAME, DCF_FILE_NAME, fileCfg->stfileattr[fileIndex].fileKey); + snprintf(HdflieName, sizeof(HdflieName), "W%c%03d%04d.JPG", font, fileCfg->stfileattr[fileIndex].dirKey, fileCfg->stfileattr[fileIndex].fileKey); + snprintf(str, 64, "A:\\DCIM\\%03d%s\\%s%s%04d.JPG", fileCfg->stfileattr[fileIndex].dirKey, DCF_DIR_NAME, DCF_FILE_NAME, font_str, fileCfg->stfileattr[fileIndex].fileKey); printf("%s\n", str); arg[0] = str; sf_cmd_transcode_start(arg); diff --git a/rtos/code/application/source/cardv/SrcCode/UIApp/MovieFast/MovieFast.c b/rtos/code/application/source/cardv/SrcCode/UIApp/MovieFast/MovieFast.c index 6becb00d9..08fcb492c 100644 --- a/rtos/code/application/source/cardv/SrcCode/UIApp/MovieFast/MovieFast.c +++ b/rtos/code/application/source/cardv/SrcCode/UIApp/MovieFast/MovieFast.c @@ -939,12 +939,28 @@ static void MovieFast_FileNamingCB(MOVIE_CFG_REC_ID id, char *pFileName) //3. If the working mode is normal and it is cyclic recording, please judge the DirID and FileID by yourself before enering next new file recording. UINT32 nextFolderID = 0, nextFileID = 0; UINT32 max_cnt = 0; + +#if USE_RTOS_MMC_CHECK + SF_RTOS_ST_MMC_DEV *mmc_dev = SF_RtosStrgCheckWorkableDev(); + if(mmc_dev ==NULL) + { + DBG_ERR("No MMC_Dev Can use!\n"); + return; + } + if(mmc_dev->dcf_handle < 0) + { + DBG_ERR("dcf_handle err\n"); + return; + } +#endif + if (DCF_GetDBInfo(DCF_INFO_IS_9999)) { DBG_ERR("Exceed max dcf file!\r\n"); pFileName[0] = '\0'; } else { DBG_DUMP("%s\n", __FUNCTION__); DCF_HANDLE handle = MovieFast_Get_DCF_Handle(); + char font = mmc_dev->dev_type == MMC_DEV_EMMC ? 'B' : 'E'; DCF_GetNextIDEx(handle, &nextFolderID,&nextFileID); if(DrvGPIO_GetPhotoMovieModeFromMonitor() == DX_HUNTING_MODE_MOVIE2) { @@ -987,7 +1003,7 @@ static void MovieFast_FileNamingCB(MOVIE_CFG_REC_ID id, char *pFileName) DBG_DUMP("%s added to DCF\r\n", pFileName); #if HUNTING_CAMERA_MCU == ENABLE char tmp[NMC_TOTALFILEPATH_MAX_LEN] = {'\0'}; - sprintf(tmp, "S%03ld%04ld.JPG", nextFolderID, nextFileID); + sprintf(tmp, "S%c%03ld%04ld.JPG", font, nextFolderID, nextFileID); if(id == _CFG_REC_ID_1){ snprintf(thumb_current_path_main, sizeof(thumb_current_path_main), "%s", tmp); } @@ -1277,6 +1293,26 @@ int MovieFast_GetWaterLogoSource(const UINT32 recWidth,WATERLOGO_BUFFER *waterSr static void MovieFast_FileNaming_Init(void) { static UINT8 is_init = 0; + +#if USE_RTOS_MMC_CHECK + SF_RTOS_ST_MMC_DEV *mmc_dev = SF_RtosStrgCheckWorkableDev(); + if(mmc_dev ==NULL) + { + DBG_ERR("No MMC_Dev Can use!\n"); + return; + } + if(mmc_dev->dcf_handle < 0) + { + DBG_ERR("dcf_handle err\n"); + return; + } + +#endif + + char *font_str = mmc_dev->dev_type == MMC_DEV_EMMC ? "BX" : "EX"; + char file_name[64] = {'\0'}; + + snprintf(file_name, sizeof(file_name), "%s%s", DCF_FILE_NAME, font_str); /* DCF 8.3 naming rule */ if(is_init == 1) return; @@ -1289,7 +1325,7 @@ static void MovieFast_FileNaming_Init(void) DCF_SetParm(DCF_PRMID_SET_VALID_FILE_FMT, DCF_FILE_TYPE_JPG|DCF_FILE_TYPE_MP4|DCF_FILE_TYPE_MOV); DCF_SetParm(DCF_PRMID_SET_DEP_FILE_FMT, DCF_FILE_TYPE_JPG|DCF_FILE_TYPE_WAV|DCF_FILE_TYPE_MPO); DCF_SetDirFreeChars(DCF_DIR_NAME); - DCF_SetFileFreeChars(DCF_FILE_TYPE_ANYFORMAT, DCF_FILE_NAME); + DCF_SetFileFreeChars(DCF_FILE_TYPE_ANYFORMAT, file_name); } THREAD_RETTYPE MovieFast_InitFileNamingThread(void *arg) diff --git a/rtos/code/application/source/cardv/SrcCode/UIApp/PhotoFast/PhotoFast.c b/rtos/code/application/source/cardv/SrcCode/UIApp/PhotoFast/PhotoFast.c index d50543ea2..62557004d 100644 --- a/rtos/code/application/source/cardv/SrcCode/UIApp/PhotoFast/PhotoFast.c +++ b/rtos/code/application/source/cardv/SrcCode/UIApp/PhotoFast/PhotoFast.c @@ -715,6 +715,24 @@ HD_RESULT PhotoFast_get_hd_common_buf(PPHOTOFAST_HD_COM_BUF p_hd_comm_buf) static void PhotoFast_FileNaming_Init(void) { static UINT8 is_init = 0; +#if USE_RTOS_MMC_CHECK + SF_RTOS_ST_MMC_DEV *mmc_dev = SF_RtosStrgCheckWorkableDev(); + if(mmc_dev ==NULL) + { + DBG_ERR("No MMC_Dev Can use!\n"); + return; + } + if(mmc_dev->dcf_handle < 0) + { + DBG_ERR("dcf_handle err\n"); + return; + } + +#endif + char *font_str = mmc_dev->dev_type == MMC_DEV_EMMC ? "BX" : "EX"; + char file_name[64] = {'\0'}; + + snprintf(file_name, sizeof(file_name), "%s%s", DCF_FILE_NAME, font_str); /* DCF 8.3 naming rule */ if(is_init == 1) return; @@ -727,7 +745,7 @@ static void PhotoFast_FileNaming_Init(void) DCF_SetParm(DCF_PRMID_SET_VALID_FILE_FMT, DCF_FILE_TYPE_JPG|DCF_FILE_TYPE_MP4|DCF_FILE_TYPE_MOV); DCF_SetParm(DCF_PRMID_SET_DEP_FILE_FMT, DCF_FILE_TYPE_JPG|DCF_FILE_TYPE_WAV|DCF_FILE_TYPE_MPO); DCF_SetDirFreeChars(DCF_DIR_NAME); - DCF_SetFileFreeChars(DCF_FILE_TYPE_ANYFORMAT, DCF_FILE_NAME); + DCF_SetFileFreeChars(DCF_FILE_TYPE_ANYFORMAT, file_name); } INT32 PhotoFast_FileNaming_Open(void) diff --git a/rtos/code/application/source/cardv/SrcCode/UIApp/PhotoFast/PhotoFastSliceEncode.c b/rtos/code/application/source/cardv/SrcCode/UIApp/PhotoFast/PhotoFastSliceEncode.c index 7815d000b..24bb1f57c 100644 --- a/rtos/code/application/source/cardv/SrcCode/UIApp/PhotoFast/PhotoFastSliceEncode.c +++ b/rtos/code/application/source/cardv/SrcCode/UIApp/PhotoFast/PhotoFastSliceEncode.c @@ -2369,15 +2369,18 @@ INT32 PhotoFast_SliceEncode_CB3(void* user_data) { char tmp[NMC_TOTALFILEPATH_MAX_LEN] = {'\0'}; + SF_RTOS_ST_MMC_DEV *mmc_dev = SF_RtosStrgCheckWorkableDev(); #if !PHOTOFAST_FAST_CLOSE extern CHAR* PhotoFast_GetLastWriteFilePath(void); char* file_path = PhotoFast_GetLastWriteFilePath(); #else char file_path[NMC_TOTALFILEPATH_MAX_LEN]; + #if HUNTING_CAMERA_MCU == ENABLE - sprintf(tmp, "W%03ld%04ld.JPG", queue_ele_in->nextFolderID, queue_ele_in->nextFileID); + char font = mmc_dev->dev_type == MMC_DEV_EMMC ? 'B' : 'E'; + sprintf(tmp, "W%c%03ld%04ld.JPG", font, queue_ele_in->nextFolderID, queue_ele_in->nextFileID); strncpy(file_path, tmp, strlen(queue_ele_in->file_path) - 1); DBG_IND("last send file:%s\r\n", file_path); #else @@ -2391,7 +2394,7 @@ INT32 PhotoFast_SliceEncode_CB3(void* user_data) #if HUNTING_CAMERA_MCU == ENABLE #if USE_RTOS_MMC_CHECK - SF_RTOS_ST_MMC_DEV *mmc_dev = SF_RtosStrgCheckWorkableDev(); + if(mmc_dev != NULL) { if(mmc_dev->dcf_handle < 0) From fc7ba6d5dbced95a36cdc570134508f2a764d919 Mon Sep 17 00:00:00 2001 From: payton Date: Fri, 5 Jan 2024 20:55:01 +0800 Subject: [PATCH 02/32] =?UTF-8?q?1.rtos=E5=A2=9E=E5=8A=A0emmc=E5=AE=B9?= =?UTF-8?q?=E9=87=8F=E8=8E=B7=E5=8F=96=E5=92=8CIsEmmcFull=E5=88=A4?= =?UTF-8?q?=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- rtos/code/driver/na51089/include/sf_mcu.h | 3 +- .../driver/na51089/source/mcu/sf_sd_common.c | 35 +++++++++++++++++++ 2 files changed, 37 insertions(+), 1 deletion(-) diff --git a/rtos/code/driver/na51089/include/sf_mcu.h b/rtos/code/driver/na51089/include/sf_mcu.h index 3af70a914..6d93014ef 100755 --- a/rtos/code/driver/na51089/include/sf_mcu.h +++ b/rtos/code/driver/na51089/include/sf_mcu.h @@ -494,7 +494,8 @@ UINT16 sf_mcu_get_irshtter(void); BOOL sf_is_card_full(void); UINT32 sf_check_card_full(void); - +BOOL sf_is_emmc_full(void); +UINT32 sf_check_emmc_full(void); typedef BOOL (*SF_CALLBACK_SD_CMD)(void); void sf_sd_exist_reg_cb(SF_CALLBACK_SD_CMD fpCB); diff --git a/rtos/code/driver/na51089/source/mcu/sf_sd_common.c b/rtos/code/driver/na51089/source/mcu/sf_sd_common.c index 79d703e9b..d264d48a8 100755 --- a/rtos/code/driver/na51089/source/mcu/sf_sd_common.c +++ b/rtos/code/driver/na51089/source/mcu/sf_sd_common.c @@ -48,6 +48,7 @@ static BOOL IsCardFull = FALSE; SF_CALLBACK_SD_CMD g_fpSd_Exist_CB = NULL; extern BOOL DrvCARD_DetStrgCard(void); +static BOOL IsEmmcFull = FALSE; SF_RTOS_ST_MMC_DEV *sf_rtos_mmc_dev[MMC_DEV_MAX_NUM] = {NULL}; @@ -92,6 +93,40 @@ UINT32 sf_check_card_full(void) return ret; } +BOOL sf_is_emmc_full(void) +{ + //printf("[%s]:%d IsCardFull:%d\n", __FUNCTION__, __LINE__, IsCardFull); + return IsEmmcFull; +} + +UINT32 sf_check_emmc_full(void) +{ + UINT64 diskFree = 0; + UINT32 ret = 0; + + /*check disk free size*/ + diskFree = FileSys_GetDiskInfoEx('B', FST_INFO_FREE_SPACE); + diskFree = diskFree/1024/1024; + + if(diskFree < 30) /* 30MB */ + { + ret = TRUE; + //if(0 == puiPara->SdLoopSwitch) + { + IsCardFull = TRUE; + } + //printf("%s:%d sd card is full diskFree=%lu",__FUNCTION__,__LINE__,diskFree); + } + else + { + ret = FALSE; + //printf("%s:%d sd card no full diskFree=%lu",__FUNCTION__,__LINE__,diskFree); + } + + printf("[%s:%d]emmc diskFree=%lluM\n", __FUNCTION__, __LINE__, diskFree); + + return ret; +} void sf_sd_exist_reg_cb(SF_CALLBACK_SD_CMD fpCB) { From 39976b09f85f1281f121f7875bd5ba44fc454887 Mon Sep 17 00:00:00 2001 From: payton Date: Fri, 5 Jan 2024 20:56:00 +0800 Subject: [PATCH 03/32] =?UTF-8?q?1.rtos=E4=B8=8Bemmc=E5=AF=B9=E9=BD=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../source/cardv/SrcCode/System/sys_filesys.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/rtos/code/application/source/cardv/SrcCode/System/sys_filesys.c b/rtos/code/application/source/cardv/SrcCode/System/sys_filesys.c index e5c4ee958..fda0d95c5 100755 --- a/rtos/code/application/source/cardv/SrcCode/System/sys_filesys.c +++ b/rtos/code/application/source/cardv/SrcCode/System/sys_filesys.c @@ -90,7 +90,7 @@ static void card_insert_job2(void) int ret; FILE_TSK_INIT_PARAM Param = {0}; FS_HANDLE StrgDXH2; - UINT32 start_sector = 16 ; /* linux cmd fdisk can list partition info */ + UINT32 start_sector = 8192 ; /* linux cmd fdisk can list partition info */ UINT32 totoal_sectors = 0; StrgDXH2 = (FS_HANDLE)sdio2_getStorageObject(STRG_OBJ_FAT1); STORAGE_OBJ* pStrg = sdio2_getStorageObject(STRG_OBJ_FAT1); @@ -126,7 +126,14 @@ static void card_insert_job2(void) #if USE_RTOS_MMC_CHECK SF_RtosStrgRegister(1, ret); #endif - fastboot_set_done(BOOT_INIT_FILESYSOK_2); +#if SF_AGEING_TEST == ENABLE + sf_check_emmc_full(); + fastboot_set_done(BOOT_INIT_FILESYSOK_2); + +#else + fastboot_set_done(BOOT_INIT_FILESYSOK_2); +#endif + printf("filesys2_init e\r\n"); #endif From 9dc4b606882ef3177cef365bfa33ba9bdec13d28 Mon Sep 17 00:00:00 2001 From: payton Date: Fri, 5 Jan 2024 21:09:14 +0800 Subject: [PATCH 04/32] =?UTF-8?q?1.=E5=90=8C=E6=AD=A5=E8=80=81=E5=8C=96?= =?UTF-8?q?=E8=BD=AF=E4=BB=B6=E6=89=93=E5=8D=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../application/source/sf_app/code/source/4gMng/sf_sms.c | 6 ++++++ .../source/sf_app/code/source/app/sf_common.c | 9 +++++++++ .../source/sf_app/code/source/wifi/sf_wifi_svr.c | 8 ++++++++ 3 files changed, 23 insertions(+) diff --git a/code/application/source/sf_app/code/source/4gMng/sf_sms.c b/code/application/source/sf_app/code/source/4gMng/sf_sms.c index c364e7940..274165054 100755 --- a/code/application/source/sf_app/code/source/4gMng/sf_sms.c +++ b/code/application/source/sf_app/code/source/4gMng/sf_sms.c @@ -2490,7 +2490,9 @@ SINT32 sf_power_off_check_sd(void) { UIMenuStoreInfo *puiPara = sf_app_ui_para_get(); SF_STORE_ATTR_S storeattrs = {0}; + MMC_DEV_TYPE mmc_dev = MMC_DEV_NO; + mmc_dev = sf_get_strg_dev(); /******************** SD cycle *************************/ if((0 == sf_check_sd()) || (sf_get_mode_flag() == 1)) { @@ -2526,6 +2528,10 @@ SINT32 sf_power_off_check_sd(void) puiPara->SdFailCount++; sf_sleep_ms(100); } + if(mmc_dev == MMC_DEV_EMMC) + { + printf("eMMC is FULL!\n"); + } } else { diff --git a/code/application/source/sf_app/code/source/app/sf_common.c b/code/application/source/sf_app/code/source/app/sf_common.c index e9d91bad8..b0ceaae2d 100755 --- a/code/application/source/sf_app/code/source/app/sf_common.c +++ b/code/application/source/sf_app/code/source/app/sf_common.c @@ -634,6 +634,10 @@ static SINT32 sfStrgDevOnActionMount(int dev_id, int result) { sf_app_mcu_updata_start(); } + if(dev_id == MMC_DEV_EMMC) + { + printf("EMMC has Mounted!\r\n"); + } break; case FST_STA_DISK_UNFORMAT: sf_statistics_param_load(sf_statistics_param_get()); @@ -646,6 +650,10 @@ static SINT32 sfStrgDevOnActionMount(int dev_id, int result) case FST_STA_CARD_ERR: sf_sys_status_led_set(SF_LED_SYS_STATE_SD_ERROR); MLOGI("^Rcard-%d mount FAIL: Card Error\r\n", dev_id + 1); + if(dev_id == MMC_DEV_EMMC) + { + printf("Mount eMMC Fail!\r\n"); + } break; default: MLOGI("^Rcard-%d mount FAIL: ErrID=%d\r\n", dev_id + 1, status); @@ -688,6 +696,7 @@ static SINT32 sfStrgDevEmmcHandler(int cb_evt, int dev_id, int result) { case CMD_SD_STRG_CB_UNKNOWN: sf_set_card_full(1); + printf("eMMC is FULL!\r\n"); break; case CMD_SD_STRG_CB_MOUNT_FINISH: diff --git a/code/application/source/sf_app/code/source/wifi/sf_wifi_svr.c b/code/application/source/sf_app/code/source/wifi/sf_wifi_svr.c index 6929ac9b4..87b5d472b 100755 --- a/code/application/source/sf_app/code/source/wifi/sf_wifi_svr.c +++ b/code/application/source/sf_app/code/source/wifi/sf_wifi_svr.c @@ -2781,6 +2781,14 @@ void sf_wifi_hw_init(void) } ret = system("ifconfig wlan0 192.168.1.1 netmask 255.255.255.0 up"); + if(ret == 0) + { + printf("Wifi Init OK\r\n"); + } + else + { + printf("Wifi Init ERR\r\n"); + } //ret = system("hostapd -ddd /appfs/etc/hostapd/hostapd-8189.conf &"); //ret = system("udhcpd /appfs/etc/udhcpd-8189.conf"); //FILE *fp; From 8058456c1cb57237ba16c4274ee57a5769db224a Mon Sep 17 00:00:00 2001 From: payton Date: Fri, 5 Jan 2024 21:09:34 +0800 Subject: [PATCH 05/32] =?UTF-8?q?1.=E8=B0=83=E6=95=B4=E6=89=93=E5=8D=B0?= =?UTF-8?q?=E5=92=8C=E4=BC=98=E5=8C=96usb=E8=B6=85=E6=97=B6=E6=97=B6?= =?UTF-8?q?=E9=97=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../application/source/sf_app/code/source/app/sf_service.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/code/application/source/sf_app/code/source/app/sf_service.c b/code/application/source/sf_app/code/source/app/sf_service.c index 0604af114..0768909ee 100755 --- a/code/application/source/sf_app/code/source/app/sf_service.c +++ b/code/application/source/sf_app/code/source/app/sf_service.c @@ -91,15 +91,17 @@ SINT32 app_ttyusb_IsOpen(void) { UINT8 i = 0; - for (i = 0; i < 40; i++) { + for (i = 0; i < 150; i++) { if (access("/dev/ttyUSB2", F_OK) == SF_SUCCESS) { printf("tty usb ko exist!\r\n"); + printf("4G Init OK\r\n"); break; } else { usleep(100 * 1000); - if(39 == i) + if(149 == i) { MLOGE("NO ttyUSB dev!!\n"); + printf("4G Init ERR\r\n"); } } } @@ -119,6 +121,7 @@ SINT32 app_ttyusb_IsOpen(void) { { MLOGE("-------ttyUSB retry init fail!\n"); s32ret = SF_TTY_ERROR_OPEN; + printf("4G Init Fail, retry\r\n"); break; } } From 2a1a0c5c9085dc0f9a84e0f405c8e31230a18342 Mon Sep 17 00:00:00 2001 From: payton Date: Fri, 5 Jan 2024 21:03:37 +0800 Subject: [PATCH 06/32] =?UTF-8?q?1.rtos=E4=B8=8B=E5=8D=A1=E5=88=A4?= =?UTF-8?q?=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cardv/SrcCode/UIApp/MovieFast/MovieFast.c | 17 +++++++++++------ .../cardv/SrcCode/UIApp/PhotoFast/PhotoFast.c | 10 ++++++++-- .../UIApp/PhotoFast/PhotoFastSliceEncode.c | 2 +- 3 files changed, 20 insertions(+), 9 deletions(-) diff --git a/rtos/code/application/source/cardv/SrcCode/UIApp/MovieFast/MovieFast.c b/rtos/code/application/source/cardv/SrcCode/UIApp/MovieFast/MovieFast.c index 6becb00d9..69a58a537 100644 --- a/rtos/code/application/source/cardv/SrcCode/UIApp/MovieFast/MovieFast.c +++ b/rtos/code/application/source/cardv/SrcCode/UIApp/MovieFast/MovieFast.c @@ -868,7 +868,12 @@ static DCF_HANDLE MovieFast_Get_DCF_Handle(void) //#endif SF_RtosStrgSetDcfHandle(MMC_DEV_SD, g_dcf_hdl); SF_RtosStrgSetDcfHandle(MMC_DEV_EMMC, g_dcf_hdl2); - +#if SF_AGEING_EMMC_TEST == ENABLE + return g_dcf_hdl2; +#endif +#if SF_AGEING_SD_TEST == ENABLE + return g_dcf_hdl; +#endif #if USE_RTOS_MMC_CHECK SF_RTOS_ST_MMC_DEV *mmc_dev = SF_RtosStrgCheckWorkableDev(); if(mmc_dev ==NULL) @@ -1077,7 +1082,7 @@ static void MovieFast_WriteFile_Task(void* arg) MovieFast_Wait_FileSys(FASTBOOT_WAIT_FILESYS_TIMEOUT_MS); #if HUNTING_CAMERA_MCU == ENABLE - if(TRUE == sf_is_card_full()) + if(TRUE == sf_is_card_full() && TRUE == sf_is_emmc_full()) { DBG_ERR("ERR card full\r\n"); //return ; @@ -1094,7 +1099,7 @@ static void MovieFast_WriteFile_Task(void* arg) if(param->va){ DBG_DUMP("Write %s\n", param->path); #if HUNTING_CAMERA_MCU == ENABLE - if(TRUE != sf_is_card_full()) + if(TRUE != sf_is_card_full() || TRUE != sf_is_emmc_full()) #endif { FST_FILE fp = FileSys_OpenFile(param->path, FST_OPEN_ALWAYS | FST_OPEN_WRITE); @@ -1105,9 +1110,9 @@ static void MovieFast_WriteFile_Task(void* arg) free(param->va); } else if(param->frame.phy_addr[0]){ - DBG_DUMP("Write %s\n", param->path); + DBG_DUMP("Write2 %s\n", param->path); #if HUNTING_CAMERA_MCU == ENABLE - if(TRUE != sf_is_card_full()) + if(TRUE != sf_is_card_full() || TRUE != sf_is_emmc_full()) #endif { FST_FILE fp = FileSys_OpenFile(param->path, FST_OPEN_ALWAYS | FST_OPEN_WRITE); @@ -1358,7 +1363,7 @@ THREAD_RETTYPE MovieFast_InitFileNamingThread2(void *arg) DCF_ScanObjEx(g_dcf_hdl2); #if HUNTING_CAMERA_MCU == ENABLE - if(TRUE != sf_is_card_full()) + if(TRUE != sf_is_emmc_full()) #endif { #if USE_RTOS_MMC_CHECK diff --git a/rtos/code/application/source/cardv/SrcCode/UIApp/PhotoFast/PhotoFast.c b/rtos/code/application/source/cardv/SrcCode/UIApp/PhotoFast/PhotoFast.c index d50543ea2..c6a759bc9 100644 --- a/rtos/code/application/source/cardv/SrcCode/UIApp/PhotoFast/PhotoFast.c +++ b/rtos/code/application/source/cardv/SrcCode/UIApp/PhotoFast/PhotoFast.c @@ -939,6 +939,12 @@ DCF_HANDLE PhotoFast_Get_DCF_Handle() SF_RtosStrgSetDcfHandle(MMC_DEV_SD, g_dcf_hdl); SF_RtosStrgSetDcfHandle(MMC_DEV_EMMC, g_dcf_hdl2); +#if SF_AGEING_EMMC_TEST == ENABLE + return g_dcf_hdl2; +#endif +#if SF_AGEING_SD_TEST == ENABLE + return g_dcf_hdl; +#endif #if USE_RTOS_MMC_CHECK SF_RTOS_ST_MMC_DEV *mmc_dev = SF_RtosStrgCheckWorkableDev(); if(mmc_dev ==NULL) @@ -1070,7 +1076,7 @@ INT32 PhotoFast_WriteFile(UINT32 Addr, UINT32 Size, UINT32 Fmt, UINT32 uiPathId, //sprintf(tmp, "W%03ld%04ld.JPG", nextFolderID, nextFileID); strncpy(g_photo_fast_write_file_Path, tmp, sizeof(g_photo_fast_write_file_Path) - 1); DBG_IND("last send file:%s\r\n", tmp); - if(TRUE == sf_is_card_full()) + if(TRUE == sf_is_card_full() && TRUE == sf_is_emmc_full()) { DBG_ERR("ERR Addr=0x%x,Size=0x%x,Fmt=%d card full\r\n", Addr, Size, Fmt); rt =FST_STA_ERROR; @@ -2010,7 +2016,7 @@ exit: #if SF_TRIGGER_TIME_TEST == ENABLE sf_trigger_time_led_cb(0); #endif - if((sf_get_power_off_flag()) || (TRUE == sf_is_card_full())) + if((sf_get_power_off_flag()) || (TRUE == sf_is_card_full() && TRUE == sf_is_emmc_full())) { vos_flag_set(PHOTOFAST_FLG_ID, FLGPHOTOFAST_SHUTDOWN); } diff --git a/rtos/code/application/source/cardv/SrcCode/UIApp/PhotoFast/PhotoFastSliceEncode.c b/rtos/code/application/source/cardv/SrcCode/UIApp/PhotoFast/PhotoFastSliceEncode.c index 7815d000b..75f9a032c 100644 --- a/rtos/code/application/source/cardv/SrcCode/UIApp/PhotoFast/PhotoFastSliceEncode.c +++ b/rtos/code/application/source/cardv/SrcCode/UIApp/PhotoFast/PhotoFastSliceEncode.c @@ -2419,7 +2419,7 @@ INT32 PhotoFast_SliceEncode_CB3(void* user_data) DBG_IND("PHOTO THUMB %s\n", tmp); vos_perf_mark(&t3); - if(FALSE == sf_is_card_full()) + if((TRUE != sf_is_card_full() && (mmc_dev->dev_type == MMC_DEV_SD)) || (TRUE != sf_is_emmc_full() && (mmc_dev->dev_type == MMC_DEV_EMMC))) { FST_FILE fp = FileSys_OpenFile(tmp, FST_CREATE_ALWAYS | FST_OPEN_WRITE); From 6421080989b4aeb8e6d471247099a8b0c4c1d160 Mon Sep 17 00:00:00 2001 From: payton Date: Fri, 5 Jan 2024 21:03:59 +0800 Subject: [PATCH 07/32] =?UTF-8?q?1.Linux=E4=B8=8B=E5=AD=98=E5=82=A8?= =?UTF-8?q?=E5=88=A4=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- code/application/source/cardv/SrcCode/System/SysStrg_Exe.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/code/application/source/cardv/SrcCode/System/SysStrg_Exe.c b/code/application/source/cardv/SrcCode/System/SysStrg_Exe.c index 1291047c4..047362414 100644 --- a/code/application/source/cardv/SrcCode/System/SysStrg_Exe.c +++ b/code/application/source/cardv/SrcCode/System/SysStrg_Exe.c @@ -759,6 +759,12 @@ INT32 System_Set_Storage_Act_Drive(char drive) DCF_HANDLE System_Get_DCF_Handle(void) { +#if SF_AGEING_EMMC_TEST == ENABLE + return 0;//emmc +#endif +#if SF_AGEING_SD_TEST == ENABLE + return 1;//sd +#endif #if USE_MMC_DEV_CHECK SF_ST_MMC_DEV *mmc_dev = SF_GetMMCDev(); if(mmc_dev == NULL) From 7845407826b97f0e55eb0947579ffd9130e0303e Mon Sep 17 00:00:00 2001 From: payton Date: Fri, 5 Jan 2024 21:04:27 +0800 Subject: [PATCH 08/32] =?UTF-8?q?1.Linux=E4=B8=8B=E8=80=81=E5=8C=96?= =?UTF-8?q?=E8=BD=AF=E4=BB=B6=E5=AE=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- code/application/source/cardv/SrcCode/PrjCfg_HUNTING_S550.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/code/application/source/cardv/SrcCode/PrjCfg_HUNTING_S550.h b/code/application/source/cardv/SrcCode/PrjCfg_HUNTING_S550.h index f8f257ab6..7b34fddbc 100755 --- a/code/application/source/cardv/SrcCode/PrjCfg_HUNTING_S550.h +++ b/code/application/source/cardv/SrcCode/PrjCfg_HUNTING_S550.h @@ -984,7 +984,9 @@ #define SF_SD_LOG_INFO_FILENAME "/tmp/SD.txt" #define SF_4G_MODE_TEST DISABLE - +#define SF_AGEING_TEST ENABLE +#define SF_AGEING_EMMC_TEST ENABLE +#define SF_AGEING_SD_TEST DISABLE #define SF_DCIM_PATH ":\\DCIM\\" //////////////////////sf end/////////////////////////////// From 7f08fea4de951cc2e643272943d8de2ae055b13b Mon Sep 17 00:00:00 2001 From: payton Date: Fri, 5 Jan 2024 21:04:38 +0800 Subject: [PATCH 09/32] =?UTF-8?q?1.rtos=E4=B8=8B=E8=80=81=E5=8C=96?= =?UTF-8?q?=E8=BD=AF=E4=BB=B6=E5=AE=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../application/source/cardv/SrcCode/PrjCfg_HUNTING_S550.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/rtos/code/application/source/cardv/SrcCode/PrjCfg_HUNTING_S550.h b/rtos/code/application/source/cardv/SrcCode/PrjCfg_HUNTING_S550.h index ead48e83a..d1d20647d 100755 --- a/rtos/code/application/source/cardv/SrcCode/PrjCfg_HUNTING_S550.h +++ b/rtos/code/application/source/cardv/SrcCode/PrjCfg_HUNTING_S550.h @@ -988,7 +988,9 @@ #endif #define SF_NO_SD_SEND ENABLE #define SF_4G_MODE_TEST DISABLE - +#define SF_AGEING_TEST ENABLE +#define SF_AGEING_EMMC_TEST ENABLE +#define SF_AGEING_SD_TEST DISABLE ////////////////////sf end//////////////////////////////// From 8096c4c60ed9472314cc5aac78cebe563ad45fc6 Mon Sep 17 00:00:00 2001 From: payton Date: Fri, 5 Jan 2024 21:11:18 +0800 Subject: [PATCH 10/32] =?UTF-8?q?1.rtos=E4=B8=8B=E6=A3=80=E6=B5=8Bemmc?= =?UTF-8?q?=E8=BF=9B=E8=A1=8C=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../application/source/cardv/SrcCode/System/sys_filesys.c | 5 ----- 1 file changed, 5 deletions(-) diff --git a/rtos/code/application/source/cardv/SrcCode/System/sys_filesys.c b/rtos/code/application/source/cardv/SrcCode/System/sys_filesys.c index fda0d95c5..034f34b78 100755 --- a/rtos/code/application/source/cardv/SrcCode/System/sys_filesys.c +++ b/rtos/code/application/source/cardv/SrcCode/System/sys_filesys.c @@ -126,14 +126,9 @@ static void card_insert_job2(void) #if USE_RTOS_MMC_CHECK SF_RtosStrgRegister(1, ret); #endif -#if SF_AGEING_TEST == ENABLE sf_check_emmc_full(); fastboot_set_done(BOOT_INIT_FILESYSOK_2); -#else - fastboot_set_done(BOOT_INIT_FILESYSOK_2); -#endif - printf("filesys2_init e\r\n"); #endif From 57efc9d753361eb4c7e139725b45efb08dcb7354 Mon Sep 17 00:00:00 2001 From: payton Date: Fri, 5 Jan 2024 22:05:36 +0800 Subject: [PATCH 11/32] =?UTF-8?q?1.=E4=BF=AE=E6=94=B9=E6=A0=BC=E5=BC=8F?= =?UTF-8?q?=E5=8C=96=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../source/cardv/SrcCode/UIApp/Background/UIBackgroundObj.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/application/source/cardv/SrcCode/UIApp/Background/UIBackgroundObj.c b/code/application/source/cardv/SrcCode/UIApp/Background/UIBackgroundObj.c index 3509ddd9a..fec8f3035 100755 --- a/code/application/source/cardv/SrcCode/UIApp/Background/UIBackgroundObj.c +++ b/code/application/source/cardv/SrcCode/UIApp/Background/UIBackgroundObj.c @@ -871,7 +871,7 @@ UINT32 BackgroundFormatEmmc(void) //DX_HANDLE pStrgDev = Dx_GetObject(DX_CLASS_STORAGE_EXT|DX_TYPE_CARD1); //UINT32 hStrgObj = Dx_Getcaps(pStrgDev, STORAGE_CAPS_HANDLE, 0); //ret = FileSys_FormatDisk((HNVT_STRG)hStrgObj, FALSE); - FS_HANDLE pStrgDXH = (FS_HANDLE)Dx_GetObject(DX_CLASS_STORAGE_EXT | DX_TYPE_CARD1); + FS_HANDLE pStrgDXH = (FS_HANDLE)Dx_GetObject(DX_CLASS_STORAGE_EXT | DX_TYPE_EMBMEM8); //FS_HANDLE pStrgDXH = (FS_HANDLE)sdio_getStorageObject(STRG_OBJ_FAT1); DBG_FUNC("pStrgDXH=0x%08X\r\n",pStrgDXH); //#NT#2016/05/30#Lincy Lin -begin From 642167b25e4aae1381db6f9c63c84aa029fab790 Mon Sep 17 00:00:00 2001 From: "sober.song" Date: Sat, 6 Jan 2024 17:06:21 +0800 Subject: [PATCH 12/32] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E5=90=8D=E4=B8=8D=E7=94=9F=E6=95=88=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cardv/SrcCode/PrjCfg_HUNTING_S550.h | 2 +- .../cardv/SrcCode/System/SF_SysStrgMng.c | 2 +- .../source/cardv/SrcCode/System/SysStrg_Exe.c | 4 +- .../SrcCode/UIApp/Movie/UIAppMovie_Exe.c | 12 ++++-- .../SrcCode/UIApp/Photo/UIAppPhoto_Exe.c | 4 +- .../source/sf_app/code/source/4gMng/sf_ftp.c | 4 +- .../source/sf_app/code/source/4gMng/sf_sms.c | 8 ++-- .../sf_app/code/source/app/sf_service.c | 3 +- .../sf_app/code/source/fileMng/sf_fileMng.c | 9 +++-- .../sf_app/code/source/storeMng/sf_storeMng.c | 8 ++-- .../sf_app/code/source/wifi/sf_wifi_svr.c | 18 ++++----- .../source/cardv/SrcCode/System/SysStrg_Exe.c | 2 +- .../cardv/SrcCode/UIApp/MovieFast/MovieFast.c | 15 ++++--- .../cardv/SrcCode/UIApp/PhotoFast/PhotoFast.c | 39 +++++++++---------- 14 files changed, 69 insertions(+), 61 deletions(-) diff --git a/code/application/source/cardv/SrcCode/PrjCfg_HUNTING_S550.h b/code/application/source/cardv/SrcCode/PrjCfg_HUNTING_S550.h index 44ceda96b..f8f257ab6 100755 --- a/code/application/source/cardv/SrcCode/PrjCfg_HUNTING_S550.h +++ b/code/application/source/cardv/SrcCode/PrjCfg_HUNTING_S550.h @@ -927,7 +927,7 @@ #define SF_BASE_VERSION "7MR5RCw4102" #define HW_S530 DISABLE #define DCF_DIR_NAME "MEDIA" /* 100MEDIA */ -#define DCF_FILE_NAME "SY" /* SYFW0001.JPG */ +#define DCF_FILE_NAME "SYGW" /* SYFW0001.JPG */ #define PHOTO_THUMB_PATH ":\\THUMB\\" #define MOVIE_THUMB_PATH ":\\THUMB\\" diff --git a/code/application/source/cardv/SrcCode/System/SF_SysStrgMng.c b/code/application/source/cardv/SrcCode/System/SF_SysStrgMng.c index 2be1cab1f..7a363e3de 100755 --- a/code/application/source/cardv/SrcCode/System/SF_SysStrgMng.c +++ b/code/application/source/cardv/SrcCode/System/SF_SysStrgMng.c @@ -38,7 +38,7 @@ SF_THREAD_S MMCMonitorTskCfg = .TskId = -1, }; -#define MIN_DISK_FREE_SIZE_MB 30 +#define MIN_DISK_FREE_SIZE_MB 300 SF_ST_MMC_DEV *sf_mmc_dev[MMC_DEV_MAX_NUM] = {NULL}; diff --git a/code/application/source/cardv/SrcCode/System/SysStrg_Exe.c b/code/application/source/cardv/SrcCode/System/SysStrg_Exe.c index 1291047c4..05c0620e9 100644 --- a/code/application/source/cardv/SrcCode/System/SysStrg_Exe.c +++ b/code/application/source/cardv/SrcCode/System/SysStrg_Exe.c @@ -478,7 +478,7 @@ void System_OnStrgInit_FS(void) DCF_SetParm(DCF_PRMID_SET_VALID_FILE_FMT, DCF_FILE_TYPE_JPG|DCF_FILE_TYPE_MP4|DCF_FILE_TYPE_MOV); DCF_SetParm(DCF_PRMID_SET_DEP_FILE_FMT, DCF_FILE_TYPE_JPG|DCF_FILE_TYPE_WAV|DCF_FILE_TYPE_MPO); DCF_SetDirFreeChars(DCF_DIR_NAME); - DCF_SetFileFreeChars(DCF_FILE_TYPE_ANYFORMAT, DCF_FILE_NAME); + //DCF_SetFileFreeChars(DCF_FILE_TYPE_ANYFORMAT, DCF_FILE_NAME); #endif } @@ -983,9 +983,11 @@ INT32 System_OnStrgInsert(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray) if(strg_id == STRG_ID_SD){ DBG_WRN("sd act\n"); System_Set_Storage_Act_Drive(g_strg_mapping_table[strg_id].drive); + DCF_SetFileFreeChars(DCF_FILE_TYPE_ANYFORMAT, "SYEX"); } else if(strg_id == STRG_ID_EMMC){ DBG_WRN("emmc act\n"); + DCF_SetFileFreeChars(DCF_FILE_TYPE_ANYFORMAT, "SYBX"); System_Set_Storage_Act_Drive(g_strg_mapping_table[strg_id].drive); } #if USE_MMC_DEV_CHECK diff --git a/code/application/source/cardv/SrcCode/UIApp/Movie/UIAppMovie_Exe.c b/code/application/source/cardv/SrcCode/UIApp/Movie/UIAppMovie_Exe.c index d4523784b..8a61e7e67 100755 --- a/code/application/source/cardv/SrcCode/UIApp/Movie/UIAppMovie_Exe.c +++ b/code/application/source/cardv/SrcCode/UIApp/Movie/UIAppMovie_Exe.c @@ -1226,7 +1226,7 @@ static void MovieExe_FileNamingCB(MOVIE_CFG_REC_ID id, char *pFileName) { UINT32 dcf_handle = (UINT32)System_Get_DCF_Handle(); /* 0:emmc 1:sd */ char font = System_Get_DCF_Disk_Drive(dcf_handle) == 'B' ? 'B' : 'E'; - + char *dcf_file = System_Get_DCF_Disk_Drive(dcf_handle) == 'B' ? "SYBX" : "SYEX"; #if USE_FILEDB static struct tm CurDateTime = {0}; g_FileSerialNum++; @@ -1264,10 +1264,12 @@ static void MovieExe_FileNamingCB(MOVIE_CFG_REC_ID id, char *pFileName) DBG_ERR("Exceed max dcf file!\r\n"); pFileName[0] = '\0'; } else { + + DCF_SetFileFreeChars(DCF_FILE_TYPE_ANYFORMAT, dcf_file); DCF_GetNextIDEx(dcf_handle, &nextFolderID,&nextFileID); DCF_MakeObjPathEx(dcf_handle, nextFolderID, nextFileID, DCF_FILE_TYPE_MP4, pFileName); DCF_AddDBfileEx(dcf_handle, pFileName); - DBG_DUMP("%s added to DCF Path%lu\r\n", pFileName, dcf_handle); + DBG_DUMP("MovieExe %s added to DCF Path%lu\r\n", pFileName, dcf_handle); #if HUNTING_CAMERA_MCU == ENABLE char tmp[NMC_TOTALFILEPATH_MAX_LEN] = {'\0'}; sprintf(tmp, "S%c%03d%04d.JPG", font, nextFolderID, nextFileID); @@ -1297,6 +1299,8 @@ static void MovieExe_FileNamingCB(MOVIE_CFG_REC_ID id, char *pFileName) static void MovieExe_RawEncodeFileNamingCB(MOVIE_CFG_REC_ID id, char *pFileName) { + UINT32 dcf_handle = (UINT32)System_Get_DCF_Handle(); /* 0:emmc 1:sd */ + char *dcf_file = System_Get_DCF_Disk_Drive(dcf_handle) == 'B' ? "SYBX" : "SYEX"; #if USE_FILEDB static struct tm CurDateTime = {0}; @@ -1328,12 +1332,14 @@ static void MovieExe_RawEncodeFileNamingCB(MOVIE_CFG_REC_ID id, char *pFileName) #elif USE_DCF UINT32 nextFolderID = 0, nextFileID = 0; - UINT32 dcf_handle = (UINT32) System_Get_DCF_Handle(); + //UINT32 dcf_handle = (UINT32) System_Get_DCF_Handle(); if (DCF_GetDBInfoEx(dcf_handle, DCF_INFO_IS_9999)) { DBG_ERR("Exceed max dcf file!\r\n"); pFileName[0] = '\0'; } else { + DBG_DUMP("JPG %s added to DCF Path%lu\r\n", pFileName, dcf_handle); + DCF_SetFileFreeChars(DCF_FILE_TYPE_ANYFORMAT, dcf_file); DCF_GetNextIDEx(dcf_handle, &nextFolderID,&nextFileID); DCF_MakeObjPathEx(dcf_handle, nextFolderID, nextFileID, DCF_FILE_TYPE_JPG, pFileName); } diff --git a/code/application/source/cardv/SrcCode/UIApp/Photo/UIAppPhoto_Exe.c b/code/application/source/cardv/SrcCode/UIApp/Photo/UIAppPhoto_Exe.c index 3db23be68..4d9a10e82 100755 --- a/code/application/source/cardv/SrcCode/UIApp/Photo/UIAppPhoto_Exe.c +++ b/code/application/source/cardv/SrcCode/UIApp/Photo/UIAppPhoto_Exe.c @@ -6894,14 +6894,14 @@ INT32 PhotoExe_Preview_SliceEncode_CB3(void* user_data) strncpy(number, file_path + length - 8, 4); number[4] = '\0'; - snprintf(tmp, sizeof(tmp), "%c%sW%c%s%s.JPG", System_Get_DCF_Disk_Drive(dcf_handle), PHOTO_THUMB_PATH, font, SF_SEND_LIST_DIR, folder, number); /* DCF 8.3 naming rule */ + snprintf(tmp, sizeof(tmp), "%c%sW%c%s%s.JPG", System_Get_DCF_Disk_Drive(dcf_handle), PHOTO_THUMB_PATH, font, folder, number); /* DCF 8.3 naming rule */ #else snprintf(tmp, sizeof(tmp), "%c%s%s", System_Get_DCF_Disk_Drive(dcf_handle), PHOTO_THUMB_PATH, file_path + length - 12); /* DCF 8.3 naming rule */ snprintf(tmp + strlen(tmp) - 3, sizeof(tmp), "%s", "JPG"); #endif - DBG_IND("PHOTO THUMB %s\n", tmp); + DBG_DUMP("PHOTO THUMB %s\n", tmp); FST_FILE fp = FileSys_OpenFile(tmp, FST_OPEN_ALWAYS | FST_OPEN_WRITE); diff --git a/code/application/source/sf_app/code/source/4gMng/sf_ftp.c b/code/application/source/sf_app/code/source/4gMng/sf_ftp.c index 1133b1c2a..57a1c3340 100755 --- a/code/application/source/sf_app/code/source/4gMng/sf_ftp.c +++ b/code/application/source/sf_app/code/source/4gMng/sf_ftp.c @@ -1968,7 +1968,7 @@ UINT32 sf_video_find_file(UINT16 dirKey, UINT16 fileKey, UINT8 *destFname) //UINT8 srcFname[50] = {0}; char *strg_path = sf_get_root_path(); - char *font_str = sf_get_strg_dev() == MMC_DEV_EMMC ? "BX" : "EX"; + char *dcf_file = sf_get_strg_dev() == MMC_DEV_EMMC ? "SYBX" : "SYEX"; if(strg_path == NULL) { free(strg_path); @@ -1981,7 +1981,7 @@ UINT32 sf_video_find_file(UINT16 dirKey, UINT16 fileKey, UINT8 *destFname) { dirKey = fileIndex / 10000; fileKey = fileIndex % 10000; - SF_SPRINTF(fname, "%s%s/%03dMEDIA/%s%s%04d.MP4", strg_path, SF_DCIM_DIR, dirKey, DCF_FILE_NAME, font_str, fileKey); + SF_SPRINTF(fname, "%s%s/%03dMEDIA/%s%04d.MP4", strg_path, SF_DCIM_DIR, dirKey, dcf_file, fileKey); //fileSize = sf_get_file_size(fname); sf_file_size_get(fname,&fileSize); diff --git a/code/application/source/sf_app/code/source/4gMng/sf_sms.c b/code/application/source/sf_app/code/source/4gMng/sf_sms.c index bc2a4da64..c065b0e67 100755 --- a/code/application/source/sf_app/code/source/4gMng/sf_sms.c +++ b/code/application/source/sf_app/code/source/4gMng/sf_sms.c @@ -1976,7 +1976,7 @@ void sf_hd_pic_add_to_list(UINT8 *fileName) SubImgList_t *pList = pSubImgListHead; SubImgList_t *qList = pSubImgListHead; char fname[50] = {0}; - char *font = sf_get_strg_dev() == MMC_DEV_EMMC ? "BX" : "EX"; + char *dcf_file = sf_get_strg_dev() == MMC_DEV_EMMC ? "SYBX" : "SYEX"; printf("[%s:%d] add to list:%s\n", __FUNCTION__, __LINE__, fileName); SF_STRNCPY(tempStr, fileName+1, 3); @@ -1988,7 +1988,7 @@ void sf_hd_pic_add_to_list(UINT8 *fileName) free(strg_path); return; } - SF_SPRINTF(fname, "%s%s/%03dMEDIA/%s%s%04d.JPG", strg_path, SF_DCIM_DIR, dirKey, DCF_FILE_NAME, font, fileKey); + SF_SPRINTF(fname, "%s%s/%03dMEDIA/%s%04d.JPG", strg_path, SF_DCIM_DIR, dirKey, dcf_file, fileKey); free(strg_path); if(sf_file_IsExsit(fname) != SF_TRUE) { @@ -2119,7 +2119,7 @@ void sf_video_add_to_list(UINT8 *fileName) UINT8 i = 0; UINT16 dirKeytmp = 0; UINT16 fileKeytmp = 0; - char *font_str = sf_get_strg_dev() == MMC_DEV_EMMC ? "BX" : "EX"; + char *dcf_file = sf_get_strg_dev() == MMC_DEV_EMMC ? "SYBX" : "SYEX"; printf("add to list:%s\n", fileName); char *strg_path = sf_get_root_path(); @@ -2139,7 +2139,7 @@ void sf_video_add_to_list(UINT8 *fileName) { dirKeytmp = fileIndex / 10000; fileKeytmp = fileIndex % 10000; - SF_SPRINTF(fname, "%s%s/%03dMEDIA/%s%s%04d.MP4", strg_path, SF_DCIM_DIR, dirKeytmp, DCF_FILE_NAME, font_str, fileKeytmp); + SF_SPRINTF(fname, "%s%s/%03dMEDIA/%s%04d.MP4", strg_path, SF_DCIM_DIR, dirKeytmp, dcf_file, fileKeytmp); free(strg_path); sf_file_size_get(fname,&fileSize); printf("find video:%s size=%d\n", fname, fileSize); diff --git a/code/application/source/sf_app/code/source/app/sf_service.c b/code/application/source/sf_app/code/source/app/sf_service.c index 0604af114..78846b3c3 100755 --- a/code/application/source/sf_app/code/source/app/sf_service.c +++ b/code/application/source/sf_app/code/source/app/sf_service.c @@ -885,6 +885,7 @@ SINT16 sf_thumb_file_creat(void) { free(strg_path); return SF_FAILURE; } + char *dcf_file = sf_get_strg_dev() == MMC_DEV_EMMC ? "SYBX" : "SYEX"; SF_SRCFILE_ATTR_S *fileCfg = sf_file_thumb_cfg_get(); for (fileIndex = 0; fileIndex < fileCfg->filecnt; fileIndex++) { @@ -894,7 +895,7 @@ SINT16 sf_thumb_file_creat(void) { strncpy(fileKeyStr, fileCfg->stfileattr[fileIndex].thumbfileName + 4, 8); MLOGD("dirKeyStr:%s, fileKeyStr:%s\n", dirKeyStr, fileKeyStr); sprintf(filePathStr, "%s%s/%s%s/%s%s", strg_path, SF_DCF_ROOT_DIR_NAME, - dirKeyStr, SF_DCF_DIR_NAME_SUFFIX, SF_DCF_FILE_NAME_PREFIX, + dirKeyStr, dcf_file, SF_DCF_FILE_NAME_PREFIX, fileKeyStr); MLOGD("fileKeyStr:%s\n", filePathStr); // check if pic exist diff --git a/code/application/source/sf_app/code/source/fileMng/sf_fileMng.c b/code/application/source/sf_app/code/source/fileMng/sf_fileMng.c index f4071f149..bdb719ad4 100755 --- a/code/application/source/sf_app/code/source/fileMng/sf_fileMng.c +++ b/code/application/source/sf_app/code/source/fileMng/sf_fileMng.c @@ -312,6 +312,8 @@ SINT32 sf_file_subscribe_check(SF_FILE_ATTR_S *pstfileAttr, SF_SUBSCRIBE_ATTR_S memset(pstfileAttr->txtfileName, '\0', sizeof(pstfileAttr->txtfileName)); memset(pstfileAttr->txtfilePath, '\0', sizeof(pstfileAttr->txtfilePath)); + char *dcf_file = sf_get_strg_dev() == MMC_DEV_EMMC ? "SYBX" : "SYEX"; + char *strg_path = sf_get_root_path(); if(strg_path == NULL) { @@ -353,7 +355,7 @@ SINT32 sf_file_subscribe_check(SF_FILE_ATTR_S *pstfileAttr, SF_SUBSCRIBE_ATTR_S strncpy(fileName, pSubscribe->subscribeFileName + (strlen(pSubscribe->subscribeFileName) - 12), 12); fileKey = atoi(fileName+4); MLOGD("FileName:%s, fileKey:%d\n", fileName, fileKey); - sprintf(filePath, "%s%s/%03d%s/%s%s", strg_path, SF_DCF_ROOT_DIR_NAME,dirKey, SF_DCF_DIR_NAME_SUFFIX, SF_DCF_FILE_NAME_PREFIX,fileName+4); + sprintf(filePath, "%s%s/%03d%s/%s%s", strg_path, SF_DCF_ROOT_DIR_NAME,dirKey, dcf_file, SF_DCF_FILE_NAME_PREFIX,fileName+4); MLOGD("srcFile:%s\n", filePath); ret = sf_file_IsExsit((CHAR*)filePath); @@ -554,6 +556,7 @@ SINT32 sf_file_subscribe_check(SF_FILE_ATTR_S *pstfileAttr, SF_SEND_FILE_ATTR_S* free(strg_path); return SF_FAILURE; } + char *dcf_file = sf_get_strg_dev() == MMC_DEV_EMMC ? "SYBX" : "SYEX"; switch(pSendFileAttr->enFileTye) { @@ -568,7 +571,7 @@ SINT32 sf_file_subscribe_check(SF_FILE_ATTR_S *pstfileAttr, SF_SEND_FILE_ATTR_S* strncpy(fileName, pSendFileAttr->SubFileName + (strlen(pSendFileAttr->SubFileName) - 12), 12); fileKey = atoi(fileName+4); SLOGD("FileName:%s, fileKey:%d\n", fileName, fileKey); - sprintf(filePath, "%s%s/%03d%s/%s%04d.%s", strg_path, SF_DCF_ROOT_DIR_NAME,dirKey, SF_DCF_DIR_NAME_SUFFIX, SF_DCF_FILE_NAME_PREFIX,fileKey,SF_DCF_EXT_MOV); + sprintf(filePath, "%s%s/%03d%s/%s%04d.%s", strg_path, SF_DCF_ROOT_DIR_NAME,dirKey, dcf_file, SF_DCF_FILE_NAME_PREFIX,fileKey,SF_DCF_EXT_MOV); SLOGD("srcFile:%s\n", filePath); // strncpy(fileName, pSendFileAttr->SubFileName + (strlen(pSendFileAttr->SubFileName) - 11), 8); @@ -597,7 +600,7 @@ SINT32 sf_file_subscribe_check(SF_FILE_ATTR_S *pstfileAttr, SF_SEND_FILE_ATTR_S* strncpy(fileName, pSendFileAttr->SubFileName + (strlen(pSendFileAttr->SubFileName) - 12), 12); fileKey = atoi(fileName+4); SLOGD("FileName:%s, fileKey:%d\n", fileName, fileKey); - sprintf(filePath, "%s%s/%03d%s/%s%s", strg_path, SF_DCF_ROOT_DIR_NAME,dirKey, SF_DCF_DIR_NAME_SUFFIX, SF_DCF_FILE_NAME_PREFIX,fileName+4); + sprintf(filePath, "%s%s/%03d%s/%s%s", strg_path, SF_DCF_ROOT_DIR_NAME,dirKey, dcf_file, SF_DCF_FILE_NAME_PREFIX,fileName+4); SLOGD("srcFile:%s\n", filePath); ret = sf_file_IsExsit((CHAR*)filePath); diff --git a/code/application/source/sf_app/code/source/storeMng/sf_storeMng.c b/code/application/source/sf_app/code/source/storeMng/sf_storeMng.c index 188febbcb..b106a27e9 100644 --- a/code/application/source/sf_app/code/source/storeMng/sf_storeMng.c +++ b/code/application/source/sf_app/code/source/storeMng/sf_storeMng.c @@ -353,7 +353,7 @@ SINT32 sf_sd_loopremove(const char *path) filedir[2] = *pTemp++; /*get file group ID*/ filedir[3] = '\0'; - pTemp = strstr(g_cFileList[FileCount], DCF_FILE_NAME); + pTemp = strstr(g_cFileList[FileCount], "SYGW"); if(pTemp) { @@ -879,13 +879,13 @@ int sf_app_sd_loop(void) return SF_FAILURE; } char font = sf_get_strg_dev() == MMC_DEV_EMMC ? 'B' : 'E'; - char *font_str = sf_get_strg_dev() == MMC_DEV_EMMC ? "BX" : "EX"; + char *dcf_file = sf_get_strg_dev() == MMC_DEV_EMMC ? "SYBX" : "SYEX"; while((nloop) && (dircount < 5)) { sprintf(cPathTmp,"%s%s/%03d%s", strg_path, SF_DCF_ROOT_DIR_NAME, nDirKey, DCF_DIR_NAME); // ""/mnt/sd/DCIM/100MEDIA" //Not Empty,Record File Name - sprintf(cFileTmp, "%s/%s%s%04d.%s",cPathTmp, DCF_FILE_NAME, font_str, nFileKey, SF_DCF_EXT_PHOTO); + sprintf(cFileTmp, "%s/%s%04d.%s",cPathTmp, dcf_file, nFileKey, SF_DCF_EXT_PHOTO); if(access(cFileTmp,R_OK) == 0) { @@ -895,7 +895,7 @@ int sf_app_sd_loop(void) } else { - sprintf(cFileTmp, "%s/%s%s%04d.%s", cPathTmp, DCF_FILE_NAME, font_str, nFileKey, SF_DCF_EXT_MOV); + sprintf(cFileTmp, "%s/%s%04d.%s", cPathTmp, dcf_file, nFileKey, SF_DCF_EXT_MOV); if(access(cFileTmp,R_OK) == 0) { MLOGD("Will Delete File Name:%s\n", cFileTmp); diff --git a/code/application/source/sf_app/code/source/wifi/sf_wifi_svr.c b/code/application/source/sf_app/code/source/wifi/sf_wifi_svr.c index a214f865e..7948b71d3 100755 --- a/code/application/source/sf_app/code/source/wifi/sf_wifi_svr.c +++ b/code/application/source/sf_app/code/source/wifi/sf_wifi_svr.c @@ -703,7 +703,7 @@ UINT8 appCmpFileList(void) //appThumbNameToKey(&fileType, &dirKey, &fileKey, gDevFileList[i].fileNameString);ERROR:dirKey always zero //printf("dirkey=%d\n",dirKey); sprintf(fileName,"D:/DCIM/%.3s%s/%s%.4s%s", - gDevFileList[i].fileNameString,DCF_DIR_NAME,DCF_FILE_NAME,gDevFileList[i].fileNameString+4, + gDevFileList[i].fileNameString,DCF_DIR_NAME,"SYGW",gDevFileList[i].fileNameString+4, (gDevFileList[i].fileNameString[3] == '0' ? ".JPG" : (gDevFileList[i].fileNameString[3] == '1' ? ".MP4" : ".MP4"))); //profLogPrintf(0,"file:%s", fileName); //printf("str:%s,name:%s,\n",gDevFileList[i].fileNameString,fileName); @@ -1143,7 +1143,7 @@ SINT32 sf_svr_packet_proc(SINT32 fd, UINT8 *pAppData, UINT16 dataLen) return SF_FAILURE; } - char *font_str = sf_get_strg_dev() == MMC_DEV_EMMC ? "BX" : "EX"; + char *dcf_file = sf_get_strg_dev() == MMC_DEV_EMMC ? "SYBX" : "SYEX"; //printf("[sf_svr_packet_proc]dataLen: %d\n",dataLen); @@ -1358,12 +1358,11 @@ SINT32 sf_svr_packet_proc(SINT32 fd, UINT8 *pAppData, UINT16 dataLen) strcpy((char *)tempbuf, (char *)pMsgStruct->msgBuf.getHdFile.dirName); strncpy((char *)tempbuf2, (char *)tempbuf, 3); tempbuf[8] = '\0'; - sprintf((char *)gFileName, "%sDCIM/%s%s/%s%s%s%s", + sprintf((char *)gFileName, "%sDCIM/%s%s/%s%s%s", strg_path, tempbuf2, DCF_DIR_NAME, - DCF_FILE_NAME, - font_str, + dcf_file, tempbuf+4, (tempbuf[3] == '0' ? ".JPG" : (tempbuf[3] == '1' ? ".MP4" : ".MP4"))); } @@ -1900,12 +1899,11 @@ SINT32 sf_svr_packet_proc(SINT32 fd, UINT8 *pAppData, UINT16 dataLen) strncpy((char *)tempbuf2, (char *)pMsgStruct->msgBuf.ctrlFileTransfer.fileName +1, 3); tempbuf[8] = '\0'; - sprintf((char *)fileName, "%sDCIM/%s%s/%s%s%s%s", + sprintf((char *)fileName, "%sDCIM/%s%s/%s%s%s", strg_path, tempbuf2, DCF_DIR_NAME, - DCF_FILE_NAME, - font_str, + dcf_file, tempbuf+4, (tempbuf[0] == 'W' ? ".JPG" : (tempbuf[0] == 'S' ? ".MP4" : ".MP4"))); } @@ -2008,9 +2006,9 @@ SINT32 sf_svr_packet_proc(SINT32 fd, UINT8 *pAppData, UINT16 dataLen) ret = remove((char *)fileName); MLOGI("delete thumb name=%s ret=%d\n",fileName,ret); if(fileType == STILL_THUMB) - sprintf((char *)fileName,"./%3dMEDIA/%s%s%04d.JPG", dirKey, DCF_FILE_NAME, font_str, fileKey); + sprintf((char *)fileName,"./%3dMEDIA/%s%04d.JPG", dirKey, dcf_file, fileKey); else - sprintf((char *)fileName,"./%3dMEDIA/%s%s%04d.MP4", dirKey, DCF_FILE_NAME, font_str, fileKey); + sprintf((char *)fileName,"./%3dMEDIA/%s%04d.MP4", dirKey, dcf_file, fileKey); ret = remove((char *)fileName); } diff --git a/rtos/code/application/source/cardv/SrcCode/System/SysStrg_Exe.c b/rtos/code/application/source/cardv/SrcCode/System/SysStrg_Exe.c index 4c9c38ecc..e61256db8 100644 --- a/rtos/code/application/source/cardv/SrcCode/System/SysStrg_Exe.c +++ b/rtos/code/application/source/cardv/SrcCode/System/SysStrg_Exe.c @@ -445,7 +445,7 @@ void System_OnStrgInit_FS(void) DCF_SetParm(DCF_PRMID_SET_VALID_FILE_FMT, DCF_FILE_TYPE_JPG|DCF_FILE_TYPE_MP4|DCF_FILE_TYPE_MOV); DCF_SetParm(DCF_PRMID_SET_DEP_FILE_FMT, DCF_FILE_TYPE_JPG|DCF_FILE_TYPE_WAV|DCF_FILE_TYPE_MPO); DCF_SetDirFreeChars(DCF_DIR_NAME); - DCF_SetFileFreeChars(DCF_FILE_TYPE_ANYFORMAT, DCF_FILE_NAME); + //DCF_SetFileFreeChars(DCF_FILE_TYPE_ANYFORMAT, DCF_FILE_NAME); } #endif } diff --git a/rtos/code/application/source/cardv/SrcCode/UIApp/MovieFast/MovieFast.c b/rtos/code/application/source/cardv/SrcCode/UIApp/MovieFast/MovieFast.c index 08fcb492c..fc54794d0 100644 --- a/rtos/code/application/source/cardv/SrcCode/UIApp/MovieFast/MovieFast.c +++ b/rtos/code/application/source/cardv/SrcCode/UIApp/MovieFast/MovieFast.c @@ -998,6 +998,8 @@ static void MovieFast_FileNamingCB(MOVIE_CFG_REC_ID id, char *pFileName) } } } + char *dcf_file = mmc_dev->dev_type == MMC_DEV_EMMC ? "SYBX" : "SYEX"; + DCF_SetFileFreeChars(DCF_FILE_TYPE_ANYFORMAT, dcf_file); DCF_MakeObjPathEx(handle, nextFolderID, nextFileID, DCF_FILE_TYPE_MP4, pFileName); DCF_AddDBfileEx(handle, pFileName); DBG_DUMP("%s added to DCF\r\n", pFileName); @@ -1294,7 +1296,7 @@ static void MovieFast_FileNaming_Init(void) { static UINT8 is_init = 0; -#if USE_RTOS_MMC_CHECK +#if 0//USE_RTOS_MMC_CHECK SF_RTOS_ST_MMC_DEV *mmc_dev = SF_RtosStrgCheckWorkableDev(); if(mmc_dev ==NULL) { @@ -1306,14 +1308,11 @@ static void MovieFast_FileNaming_Init(void) DBG_ERR("dcf_handle err\n"); return; } - + //char *font_str = mmc_dev->dev_type == MMC_DEV_EMMC ? "BX" : "EX"; + //char file_name[64] = {'\0'}; + //snprintf(file_name, sizeof(file_name), "%s%s", DCF_FILE_NAME, font_str); /* DCF 8.3 naming rule */ #endif - char *font_str = mmc_dev->dev_type == MMC_DEV_EMMC ? "BX" : "EX"; - char file_name[64] = {'\0'}; - - snprintf(file_name, sizeof(file_name), "%s%s", DCF_FILE_NAME, font_str); /* DCF 8.3 naming rule */ - if(is_init == 1) return; @@ -1325,7 +1324,7 @@ static void MovieFast_FileNaming_Init(void) DCF_SetParm(DCF_PRMID_SET_VALID_FILE_FMT, DCF_FILE_TYPE_JPG|DCF_FILE_TYPE_MP4|DCF_FILE_TYPE_MOV); DCF_SetParm(DCF_PRMID_SET_DEP_FILE_FMT, DCF_FILE_TYPE_JPG|DCF_FILE_TYPE_WAV|DCF_FILE_TYPE_MPO); DCF_SetDirFreeChars(DCF_DIR_NAME); - DCF_SetFileFreeChars(DCF_FILE_TYPE_ANYFORMAT, file_name); + //DCF_SetFileFreeChars(DCF_FILE_TYPE_ANYFORMAT, DCF_FILE_NAME); } THREAD_RETTYPE MovieFast_InitFileNamingThread(void *arg) diff --git a/rtos/code/application/source/cardv/SrcCode/UIApp/PhotoFast/PhotoFast.c b/rtos/code/application/source/cardv/SrcCode/UIApp/PhotoFast/PhotoFast.c index 62557004d..74d461979 100644 --- a/rtos/code/application/source/cardv/SrcCode/UIApp/PhotoFast/PhotoFast.c +++ b/rtos/code/application/source/cardv/SrcCode/UIApp/PhotoFast/PhotoFast.c @@ -715,24 +715,6 @@ HD_RESULT PhotoFast_get_hd_common_buf(PPHOTOFAST_HD_COM_BUF p_hd_comm_buf) static void PhotoFast_FileNaming_Init(void) { static UINT8 is_init = 0; -#if USE_RTOS_MMC_CHECK - SF_RTOS_ST_MMC_DEV *mmc_dev = SF_RtosStrgCheckWorkableDev(); - if(mmc_dev ==NULL) - { - DBG_ERR("No MMC_Dev Can use!\n"); - return; - } - if(mmc_dev->dcf_handle < 0) - { - DBG_ERR("dcf_handle err\n"); - return; - } - -#endif - char *font_str = mmc_dev->dev_type == MMC_DEV_EMMC ? "BX" : "EX"; - char file_name[64] = {'\0'}; - - snprintf(file_name, sizeof(file_name), "%s%s", DCF_FILE_NAME, font_str); /* DCF 8.3 naming rule */ if(is_init == 1) return; @@ -745,7 +727,7 @@ static void PhotoFast_FileNaming_Init(void) DCF_SetParm(DCF_PRMID_SET_VALID_FILE_FMT, DCF_FILE_TYPE_JPG|DCF_FILE_TYPE_MP4|DCF_FILE_TYPE_MOV); DCF_SetParm(DCF_PRMID_SET_DEP_FILE_FMT, DCF_FILE_TYPE_JPG|DCF_FILE_TYPE_WAV|DCF_FILE_TYPE_MPO); DCF_SetDirFreeChars(DCF_DIR_NAME); - DCF_SetFileFreeChars(DCF_FILE_TYPE_ANYFORMAT, file_name); + //DCF_SetFileFreeChars(DCF_FILE_TYPE_ANYFORMAT, DCF_FILE_NAME); } INT32 PhotoFast_FileNaming_Open(void) @@ -1032,6 +1014,20 @@ INT32 PhotoFast_WriteFile(UINT32 Addr, UINT32 Size, UINT32 Fmt, UINT32 uiPathId, UINT32 nextFolderID = 0, nextFileID = 0; DCF_HANDLE handle = PhotoFast_Get_DCF_Handle(); /* handle determines which storage would be written */ +#if USE_RTOS_MMC_CHECK + SF_RTOS_ST_MMC_DEV *mmc_dev = SF_RtosStrgCheckWorkableDev(); + if(mmc_dev ==NULL) + { + DBG_ERR("No MMC_Dev Can use!\n"); + return -1; + } + if(mmc_dev->dcf_handle < 0) + { + DBG_ERR("dcf_handle err\n"); + return -1; + } +#endif + if(Path == NULL){ if (DCF_GetDBInfoEx(handle, DCF_INFO_IS_9999)) { DBG_ERR("Exceed max dcf file!\r\n"); @@ -1069,6 +1065,8 @@ INT32 PhotoFast_WriteFile(UINT32 Addr, UINT32 Size, UINT32 Fmt, UINT32 uiPathId, } } } + char *dcf_file = mmc_dev->dev_type == MMC_DEV_EMMC ? "SYBX" : "SYEX"; + DCF_SetFileFreeChars(DCF_FILE_TYPE_ANYFORMAT, dcf_file); DCF_MakeObjPathEx(handle, nextFolderID, nextFileID, fileType, FilePath); DCF_AddDBfileEx(handle, FilePath); DBG_DUMP("%s added to DCF\r\n", FilePath); @@ -1082,9 +1080,10 @@ INT32 PhotoFast_WriteFile(UINT32 Addr, UINT32 Size, UINT32 Fmt, UINT32 uiPathId, char tmp[NMC_TOTALFILEPATH_MAX_LEN] = {'\0'}; char str1[5] = { 0 }; char str2[5] = { 0 }; + char font = mmc_dev->dev_type == MMC_DEV_EMMC ? 'B' : 'E'; memcpy(str1, FilePath + 8, 3); memcpy(str2, FilePath + 21, 4); - sprintf(tmp, "W%s%s.JPG", str1, str2); + sprintf(tmp, "W%c%s%s.JPG", font, str1, str2); //sprintf(tmp, "W%03ld%04ld.JPG", nextFolderID, nextFileID); strncpy(g_photo_fast_write_file_Path, tmp, sizeof(g_photo_fast_write_file_Path) - 1); DBG_IND("last send file:%s\r\n", tmp); From 9b6fa552e6e530a923424bd81830fa6ec8a34267 Mon Sep 17 00:00:00 2001 From: "sober.song" Date: Sat, 6 Jan 2024 18:36:22 +0800 Subject: [PATCH 13/32] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dlinux=E7=B3=BB=E7=BB=9F?= =?UTF-8?q?=E5=90=AF=E5=8A=A8=E9=A6=96=E6=AC=A1=E5=91=BD=E5=90=8D=E7=9B=98?= =?UTF-8?q?=E7=AC=A6=E9=94=99=E4=B9=B1=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../source/cardv/SrcCode/System/SF_SysStrgMng.c | 10 ++++++++++ .../source/cardv/SrcCode/System/SysStrg_Exe.c | 4 ++-- .../source/cardv/SrcCode/UIApp/Movie/UIAppMovie_Exe.c | 9 ++++++--- 3 files changed, 18 insertions(+), 5 deletions(-) diff --git a/code/application/source/cardv/SrcCode/System/SF_SysStrgMng.c b/code/application/source/cardv/SrcCode/System/SF_SysStrgMng.c index 7a363e3de..d8049ba2c 100755 --- a/code/application/source/cardv/SrcCode/System/SF_SysStrgMng.c +++ b/code/application/source/cardv/SrcCode/System/SF_SysStrgMng.c @@ -19,6 +19,10 @@ #include #include #include "sf_mcu.h" +#if (USE_DCF == ENABLE) +#include "DCF.h" +#endif + #if HUNTING_CAMERA_MCU == ENABLE #include @@ -336,6 +340,12 @@ SF_ST_MMC_DEV *SF_StrgCheckWorkableDev(void) sf_mmc_dev[workable_dev]->dev_type = workable_dev; //MLOGD("Strg Check, workable_dev = %d\n", workable_dev); SF_SetMMCDev(sf_mmc_dev[workable_dev]); + + if(workable_dev == MMC_DEV_SD) + DCF_SetFileFreeChars(DCF_FILE_TYPE_ANYFORMAT, "SYEX"); + else if(workable_dev == MMC_DEV_EMMC) + DCF_SetFileFreeChars(DCF_FILE_TYPE_ANYFORMAT, "SYBX"); + return sf_mmc_dev[workable_dev]; } } diff --git a/code/application/source/cardv/SrcCode/System/SysStrg_Exe.c b/code/application/source/cardv/SrcCode/System/SysStrg_Exe.c index 05c0620e9..ee4d0a1fd 100644 --- a/code/application/source/cardv/SrcCode/System/SysStrg_Exe.c +++ b/code/application/source/cardv/SrcCode/System/SysStrg_Exe.c @@ -983,11 +983,11 @@ INT32 System_OnStrgInsert(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray) if(strg_id == STRG_ID_SD){ DBG_WRN("sd act\n"); System_Set_Storage_Act_Drive(g_strg_mapping_table[strg_id].drive); - DCF_SetFileFreeChars(DCF_FILE_TYPE_ANYFORMAT, "SYEX"); + //DCF_SetFileFreeChars(DCF_FILE_TYPE_ANYFORMAT, "SYEX"); } else if(strg_id == STRG_ID_EMMC){ DBG_WRN("emmc act\n"); - DCF_SetFileFreeChars(DCF_FILE_TYPE_ANYFORMAT, "SYBX"); + //DCF_SetFileFreeChars(DCF_FILE_TYPE_ANYFORMAT, "SYBX"); System_Set_Storage_Act_Drive(g_strg_mapping_table[strg_id].drive); } #if USE_MMC_DEV_CHECK diff --git a/code/application/source/cardv/SrcCode/UIApp/Movie/UIAppMovie_Exe.c b/code/application/source/cardv/SrcCode/UIApp/Movie/UIAppMovie_Exe.c index 8a61e7e67..d42ea7127 100755 --- a/code/application/source/cardv/SrcCode/UIApp/Movie/UIAppMovie_Exe.c +++ b/code/application/source/cardv/SrcCode/UIApp/Movie/UIAppMovie_Exe.c @@ -1227,6 +1227,8 @@ static void MovieExe_FileNamingCB(MOVIE_CFG_REC_ID id, char *pFileName) UINT32 dcf_handle = (UINT32)System_Get_DCF_Handle(); /* 0:emmc 1:sd */ char font = System_Get_DCF_Disk_Drive(dcf_handle) == 'B' ? 'B' : 'E'; char *dcf_file = System_Get_DCF_Disk_Drive(dcf_handle) == 'B' ? "SYBX" : "SYEX"; + DBG_DUMP("movie naming: %c %s\n", System_Get_DCF_Disk_Drive(dcf_handle), dcf_file); + DCF_SetFileFreeChars(DCF_FILE_TYPE_ANYFORMAT, dcf_file); #if USE_FILEDB static struct tm CurDateTime = {0}; g_FileSerialNum++; @@ -1264,8 +1266,7 @@ static void MovieExe_FileNamingCB(MOVIE_CFG_REC_ID id, char *pFileName) DBG_ERR("Exceed max dcf file!\r\n"); pFileName[0] = '\0'; } else { - - DCF_SetFileFreeChars(DCF_FILE_TYPE_ANYFORMAT, dcf_file); + DCF_GetNextIDEx(dcf_handle, &nextFolderID,&nextFileID); DCF_MakeObjPathEx(dcf_handle, nextFolderID, nextFileID, DCF_FILE_TYPE_MP4, pFileName); DCF_AddDBfileEx(dcf_handle, pFileName); @@ -1301,6 +1302,8 @@ static void MovieExe_RawEncodeFileNamingCB(MOVIE_CFG_REC_ID id, char *pFileName) { UINT32 dcf_handle = (UINT32)System_Get_DCF_Handle(); /* 0:emmc 1:sd */ char *dcf_file = System_Get_DCF_Disk_Drive(dcf_handle) == 'B' ? "SYBX" : "SYEX"; + DBG_DUMP("photo naming: %c %s\n", System_Get_DCF_Disk_Drive(dcf_handle), dcf_file); + DCF_SetFileFreeChars(DCF_FILE_TYPE_ANYFORMAT, dcf_file); #if USE_FILEDB static struct tm CurDateTime = {0}; @@ -1339,7 +1342,7 @@ static void MovieExe_RawEncodeFileNamingCB(MOVIE_CFG_REC_ID id, char *pFileName) pFileName[0] = '\0'; } else { DBG_DUMP("JPG %s added to DCF Path%lu\r\n", pFileName, dcf_handle); - DCF_SetFileFreeChars(DCF_FILE_TYPE_ANYFORMAT, dcf_file); + DCF_GetNextIDEx(dcf_handle, &nextFolderID,&nextFileID); DCF_MakeObjPathEx(dcf_handle, nextFolderID, nextFileID, DCF_FILE_TYPE_JPG, pFileName); } From 1f95104d4c9ed1ef8ec244fe683e7252e3f1c869 Mon Sep 17 00:00:00 2001 From: payton Date: Mon, 8 Jan 2024 09:06:29 +0800 Subject: [PATCH 14/32] =?UTF-8?q?1.=E5=AF=B9=E9=BD=90=E6=96=B9=E5=BC=8F?= =?UTF-8?q?=E8=BF=98=E5=8E=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- rtos/code/application/source/cardv/SrcCode/System/sys_filesys.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rtos/code/application/source/cardv/SrcCode/System/sys_filesys.c b/rtos/code/application/source/cardv/SrcCode/System/sys_filesys.c index 034f34b78..29eeed291 100755 --- a/rtos/code/application/source/cardv/SrcCode/System/sys_filesys.c +++ b/rtos/code/application/source/cardv/SrcCode/System/sys_filesys.c @@ -90,7 +90,7 @@ static void card_insert_job2(void) int ret; FILE_TSK_INIT_PARAM Param = {0}; FS_HANDLE StrgDXH2; - UINT32 start_sector = 8192 ; /* linux cmd fdisk can list partition info */ + UINT32 start_sector = 16 ; /* linux cmd fdisk can list partition info */ UINT32 totoal_sectors = 0; StrgDXH2 = (FS_HANDLE)sdio2_getStorageObject(STRG_OBJ_FAT1); STORAGE_OBJ* pStrg = sdio2_getStorageObject(STRG_OBJ_FAT1); From 575462f6a62046b25172890e65462c609efb9575 Mon Sep 17 00:00:00 2001 From: payton Date: Mon, 8 Jan 2024 09:08:00 +0800 Subject: [PATCH 15/32] =?UTF-8?q?1.=E5=85=B3=E9=97=AD=E8=80=81=E5=8C=96?= =?UTF-8?q?=E6=B5=8B=E8=AF=95=E8=BD=AF=E4=BB=B6=E5=AE=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- code/application/source/cardv/SrcCode/PrjCfg_HUNTING_S550.h | 4 ++-- .../application/source/cardv/SrcCode/PrjCfg_HUNTING_S550.h | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/code/application/source/cardv/SrcCode/PrjCfg_HUNTING_S550.h b/code/application/source/cardv/SrcCode/PrjCfg_HUNTING_S550.h index 7b34fddbc..67b7ca2b0 100755 --- a/code/application/source/cardv/SrcCode/PrjCfg_HUNTING_S550.h +++ b/code/application/source/cardv/SrcCode/PrjCfg_HUNTING_S550.h @@ -984,8 +984,8 @@ #define SF_SD_LOG_INFO_FILENAME "/tmp/SD.txt" #define SF_4G_MODE_TEST DISABLE -#define SF_AGEING_TEST ENABLE -#define SF_AGEING_EMMC_TEST ENABLE +#define SF_AGEING_TEST DISABLE +#define SF_AGEING_EMMC_TEST DISABLE #define SF_AGEING_SD_TEST DISABLE #define SF_DCIM_PATH ":\\DCIM\\" //////////////////////sf end/////////////////////////////// diff --git a/rtos/code/application/source/cardv/SrcCode/PrjCfg_HUNTING_S550.h b/rtos/code/application/source/cardv/SrcCode/PrjCfg_HUNTING_S550.h index d1d20647d..feb1d3a1a 100755 --- a/rtos/code/application/source/cardv/SrcCode/PrjCfg_HUNTING_S550.h +++ b/rtos/code/application/source/cardv/SrcCode/PrjCfg_HUNTING_S550.h @@ -988,8 +988,8 @@ #endif #define SF_NO_SD_SEND ENABLE #define SF_4G_MODE_TEST DISABLE -#define SF_AGEING_TEST ENABLE -#define SF_AGEING_EMMC_TEST ENABLE +#define SF_AGEING_TEST DISABLE +#define SF_AGEING_EMMC_TEST DISABLE #define SF_AGEING_SD_TEST DISABLE ////////////////////sf end//////////////////////////////// From 5a1902186daa4e46e5b1fe866c8a8f80ed5ee53a Mon Sep 17 00:00:00 2001 From: payton Date: Mon, 8 Jan 2024 13:48:08 +0800 Subject: [PATCH 16/32] =?UTF-8?q?1.=E5=A2=9E=E5=8A=A0=E8=B6=85=E6=97=B6?= =?UTF-8?q?=E4=B8=BB=E6=8E=A7=E5=85=B3=E6=9C=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../source/sifar/code/source/mcu/sf_mcu_client.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/code/lib/source/sifar/code/source/mcu/sf_mcu_client.c b/code/lib/source/sifar/code/source/mcu/sf_mcu_client.c index 879629655..8162ed466 100644 --- a/code/lib/source/sifar/code/source/mcu/sf_mcu_client.c +++ b/code/lib/source/sifar/code/source/mcu/sf_mcu_client.c @@ -762,6 +762,7 @@ UINT32 sf_gpio_get_status(UINT32 ipin) *************************************************/ void sf_mcu_dataready_ck(UINT8 startMode) { + static UINT8 McupwrFlag = 0; printf("startMode=%d\n", startMode); #if 1 if(GxUSB_GetIsUSBPlug())//sf_gpio_get_status(GPIO_INT_USBPLUGIN)) @@ -787,6 +788,11 @@ void sf_mcu_dataready_ck(UINT8 startMode) sf_set_auto_off_time(0); sf_set_pir_statu_flag(0); sf_sys_status_led_set(SF_LED_SYS_STATE_EXIT_GO_TO_PIR); + McupwrFlag++; + } + else if(McupwrFlag){ + printf("%s:%d power off err\n", __FUNCTION__, __LINE__); + system("watchdog -T 1 -t 5 /dev/watchdog"); } } else if(startMode == 3) //ON @@ -799,13 +805,18 @@ void sf_mcu_dataready_ck(UINT8 startMode) } else { - if((startMode == 0) || (startMode == 1)) //PIR MODE: ON->OFF/ ON->SETUP + if((startMode == 0) || (startMode == 1)) //PIR MODE: ON->OFF/ ON->SETUP { gModuleSleep = 0; //power off 4G module sf_set_power_off_flag(1); printf("[power off] %s(%d)\n", __FUNCTION__, __LINE__); Ux_PostEvent(NVTEVT_SYSTEM_SHUTDOWN, 1, 0); //shutdown start + McupwrFlag++; } + else if(McupwrFlag){ + printf("%s:%d power off err\n", __FUNCTION__, __LINE__); + system("watchdog -T 1 -t 5 /dev/watchdog"); + } } #endif From 1e9e60946f841e0439588fc975e50a5f5b1846fc Mon Sep 17 00:00:00 2001 From: payton Date: Mon, 8 Jan 2024 13:49:22 +0800 Subject: [PATCH 17/32] =?UTF-8?q?1.=E8=B0=83=E6=95=B4WiFi=E5=8A=A0?= =?UTF-8?q?=E8=BD=BD=E6=97=B6=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../source/sf_app/code/source/wifi/sf_wifi_svr.c | 2 +- code/lib/source/sifar/code/include/sf_common.h | 1 + .../source/sifar/code/source/common/sf_common.c | 16 ++++++++++++++++ 3 files changed, 18 insertions(+), 1 deletion(-) diff --git a/code/application/source/sf_app/code/source/wifi/sf_wifi_svr.c b/code/application/source/sf_app/code/source/wifi/sf_wifi_svr.c index 90815ec55..d514b6745 100755 --- a/code/application/source/sf_app/code/source/wifi/sf_wifi_svr.c +++ b/code/application/source/sf_app/code/source/wifi/sf_wifi_svr.c @@ -2764,7 +2764,7 @@ void sf_wifi_hw_init(void) } else { - ret = system("modprobe 8723du"); + //ret = system("modprobe 8723du"); } //sleep(2); ret = system("ifconfig lo 127.0.0.1"); diff --git a/code/lib/source/sifar/code/include/sf_common.h b/code/lib/source/sifar/code/include/sf_common.h index d7050e904..1355ae335 100755 --- a/code/lib/source/sifar/code/include/sf_common.h +++ b/code/lib/source/sifar/code/include/sf_common.h @@ -208,4 +208,5 @@ BOOL sf_vos_perf_list_dump(unsigned char argc, char **argv); void sf_mem_free(void); void sf_cardv_battery_level_set(UINT32 val); void sf_cardv_statistics_param_reset(void); +void sf_cardv_set_wifi_en(UINT32 cnt); #endif diff --git a/code/lib/source/sifar/code/source/common/sf_common.c b/code/lib/source/sifar/code/source/common/sf_common.c index d61c88752..9d38ea064 100755 --- a/code/lib/source/sifar/code/source/common/sf_common.c +++ b/code/lib/source/sifar/code/source/common/sf_common.c @@ -2778,6 +2778,10 @@ void sf_save_camera_info(void) void* sf_cardv_wifi_thread(void *arg) { /*wifi init*/ + sf_cardv_set_wifi_en(1); + usleep(200*1000); + system("modprobe 8723du"); + usleep(200*1000); UINet_AppIpc_Init(); sf_net_wifi_init(NET_AP_MODE, NET_AUTH_WPA2); WifiTskCfg.IsRun = 0; @@ -3544,3 +3548,15 @@ void sf_cardv_statistics_param_reset(void) sf_com_message_send_to_app(&stMessageBuf); printf("[%s]:%d sf e\n", __FUNCTION__, __LINE__); } + +void sf_cardv_set_wifi_en(UINT32 cnt) +{ + static UINT8 state = 0; + if(0 == state) + { + state = 1; + gpio_direction_output(SF_WIFI_EN, 1); + } + gpio_set_value(SF_WIFI_EN, cnt); + printf("[%s:%d] e cnt:%d\n", __FUNCTION__, __LINE__,cnt); +} \ No newline at end of file From 25c0d5f992e74e3efea93edc99fefffa87fc6eeb Mon Sep 17 00:00:00 2001 From: payton Date: Mon, 8 Jan 2024 13:50:32 +0800 Subject: [PATCH 18/32] =?UTF-8?q?1.=E4=BC=98=E5=8C=96mcu=E8=AF=BB=E5=86=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sf_app/code/source/systemMng/sf_commu_mcu.c | 13 ++++++++++--- .../sf_app/code/source/systemMng/sf_commu_mcu_reg.c | 13 +++++++++---- 2 files changed, 19 insertions(+), 7 deletions(-) diff --git a/code/application/source/sf_app/code/source/systemMng/sf_commu_mcu.c b/code/application/source/sf_app/code/source/systemMng/sf_commu_mcu.c index bba817877..2e4e8c88b 100755 --- a/code/application/source/sf_app/code/source/systemMng/sf_commu_mcu.c +++ b/code/application/source/sf_app/code/source/systemMng/sf_commu_mcu.c @@ -1197,10 +1197,11 @@ static void * sf_commu_mcu_task(void * argv) } else { + mcubuf_reset(); memcpy(mcu_buf, &buffer[start], copy_size); mcu_buf_len = copy_size; sf_commu_parse_mcu_data(mcu_buf, mcu_buf_len); - mcubuf_reset(); + } start = -1; end = -1; @@ -1326,7 +1327,8 @@ int sf_commu_set_mcu_many(unsigned char reg[], unsigned char val[], unsigned int int ret = -1; int retries = 0; // 重试次数 unsigned int i = 0; - + unsigned char tmpreg[3] = {0}; + unsigned char tmpval[3] = {0}; if (gsfd == -1) sf_commu_mcu_open(); @@ -1351,7 +1353,12 @@ int sf_commu_set_mcu_many(unsigned char reg[], unsigned char val[], unsigned int printf("%s:%d error\r\n", __FUNCTION__, __LINE__); ret = -1; retries++; // 错误时增加重试次数 - + ret = sf_getRegFromMcu_depack(mcu_buf, mcu_buf_len, &tmpreg[0], &tmpval[0]); + if (ret > 0) + { + MLOGD("MCU send 0x05, reg_value[%d,%d]\n\n",tmpreg[0], tmpval[0]); + sf_getRegFromMcu_ack(tmpreg[0], tmpval[0]); + } } else { diff --git a/code/application/source/sf_app/code/source/systemMng/sf_commu_mcu_reg.c b/code/application/source/sf_app/code/source/systemMng/sf_commu_mcu_reg.c index 7690d8305..d75194d76 100755 --- a/code/application/source/sf_app/code/source/systemMng/sf_commu_mcu_reg.c +++ b/code/application/source/sf_app/code/source/systemMng/sf_commu_mcu_reg.c @@ -97,14 +97,19 @@ UINT8 sf_mcu_write_multi(UINT8 reg[], UINT8 data[], UINT32 num) { UINT32 i; unsigned int pnum = num; + for(i = 0; i < num; i++) + { + printf("W_addr[%d]=0x%02x\n", reg[i], data[i]); + } if(0 <= sf_commu_set_mcu_many(reg, data, &pnum)) { - for(i = 0; i < num; i++) - { - printf("W_addr[%d]=0x%02x\n", reg[i], data[i]); - } + // for(i = 0; i < num; i++) + // { + // printf("W_addr[%d]=0x%02x\n", reg[i], data[i]); + // } return SUCCESS; } + printf("%s:%d FAIL write err\n", __FUNCTION__, __LINE__); return FAIL; } From e22ee707d82511b204f94f3961c10c8db079630a Mon Sep 17 00:00:00 2001 From: payton Date: Mon, 8 Jan 2024 13:55:41 +0800 Subject: [PATCH 19/32] =?UTF-8?q?1.=E4=BC=98=E5=8C=96=E8=93=9D=E7=89=99?= =?UTF-8?q?=E9=A9=B1=E5=8A=A8=E5=8A=A0=E8=BD=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../code/source/sf_blue/src/sf_blue_hal.c | 21 +++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/code/application/source/sf_app/code/source/sf_blue/src/sf_blue_hal.c b/code/application/source/sf_app/code/source/sf_blue/src/sf_blue_hal.c index c65baae4b..c61b8b139 100644 --- a/code/application/source/sf_app/code/source/sf_blue/src/sf_blue_hal.c +++ b/code/application/source/sf_app/code/source/sf_blue/src/sf_blue_hal.c @@ -31,6 +31,7 @@ #include #include "sf_blue_app.h" #include "sf_device.h" +#include "sf_hal_gpio.h" extern int hciconfig_start_advertising(const char *ssid); extern int hciconfig_close_device(void); @@ -106,6 +107,7 @@ static void sf_bluetooth_power_enable(void) // system("echo 44 > /sys/class/gpio/export"); // system("echo out > /sys/class/gpio/gpio44/direction"); // system("echo 1 > /sys/class/gpio/gpio44/value"); + sf_set_bt_en(1); } /************************************************* @@ -128,7 +130,6 @@ static void *sf_bluetooth_piscan_task(void *arg) { UINT8 i = 0; sf_bluetooth_power_enable(); - //system("export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/misc:/customer/rocus/lib"); //system("adduser messagebus"); @@ -150,16 +151,24 @@ static void *sf_bluetooth_piscan_task(void *arg) // } // } // } - for (i = 0; i < 40; i++) { - if (sf_system_check_bt_ko() == TRUE) { + for (i = 0; i < 40; i++) + { + if (sf_system_check_bt_ko() == TRUE) + { break; - } else { - usleep(500 * 1000); - if(39 == i) + } + else + { + if(39 == 1) + { + sf_load_bt_ko(); + } + else if(39 == i) { MLOGE("blue setup fall!!\n"); return NULL; } + usleep(500 * 1000); } } From 53d921dd295d592653876b950ea717f5f0f42b29 Mon Sep 17 00:00:00 2001 From: payton Date: Mon, 8 Jan 2024 13:56:25 +0800 Subject: [PATCH 20/32] =?UTF-8?q?1.cardv=E5=85=B3=E6=9C=BA=E6=97=B6?= =?UTF-8?q?=E5=BC=80=E5=90=AFpoweroff=E7=BB=93=E6=9D=9F=E5=9B=9E=E6=94=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- code/application/source/cardv/SrcCode/System/SysMain.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/application/source/cardv/SrcCode/System/SysMain.c b/code/application/source/cardv/SrcCode/System/SysMain.c index 657e6c944..be96d70eb 100644 --- a/code/application/source/cardv/SrcCode/System/SysMain.c +++ b/code/application/source/cardv/SrcCode/System/SysMain.c @@ -873,7 +873,7 @@ exit: #endif #endif - //System_PowerOffStart(); + System_PowerOffStart(); } From 6051de741f0fb9bc737d7063b0d2d9794ea4d6ab Mon Sep 17 00:00:00 2001 From: payton Date: Mon, 8 Jan 2024 15:50:59 +0800 Subject: [PATCH 21/32] =?UTF-8?q?1=E8=B0=83=E6=95=B4WiFi=E5=92=8C=E8=93=9D?= =?UTF-8?q?=E7=89=99=E6=97=B6=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../source/cardv/SrcCode/System/SysMain_Exe.c | 2 +- .../source/sf_app/code/source/app/sf_device.c | 38 +++++++++++++++++++ .../source/sf_app/code/source/app/sf_system.c | 19 +++++++++- .../code/source/sf_blue/src/sf_blue_hal.c | 4 +- .../sf_app/code/source/wifi/sf_wifi_svr.c | 2 +- .../sifar/code/source/common/sf_common.c | 9 ++--- 6 files changed, 64 insertions(+), 10 deletions(-) diff --git a/code/application/source/cardv/SrcCode/System/SysMain_Exe.c b/code/application/source/cardv/SrcCode/System/SysMain_Exe.c index 15cdfc886..78e10f4aa 100755 --- a/code/application/source/cardv/SrcCode/System/SysMain_Exe.c +++ b/code/application/source/cardv/SrcCode/System/SysMain_Exe.c @@ -244,7 +244,7 @@ INT32 System_OnBoot(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray) #if HUNTING_CAMERA_MCU == ENABLE sf_cardv_para_check_start(); - sf_cardv_wifi_start(); + //sf_cardv_wifi_start(); #endif #if (UCTRL_FUNC) diff --git a/code/application/source/sf_app/code/source/app/sf_device.c b/code/application/source/sf_app/code/source/app/sf_device.c index 8a2f476b0..1f7a5afc7 100755 --- a/code/application/source/sf_app/code/source/app/sf_device.c +++ b/code/application/source/sf_app/code/source/app/sf_device.c @@ -645,12 +645,50 @@ BOOL sf_system_check_bt_ko(void) } } +BOOL sf_system_check_firmware_class_ko(void) +{ + char command[30] = "lsmod | grep firmware_class"; + FILE *fp = popen(command, "r"); + char result[256]; + fgets(result, sizeof(result), fp); + pclose(fp); + if (result[0] == '\0') { + MLOGI("rtk_btusb module is not loaded.\n"); + return FALSE; + } else { + MLOGI("rtk_btusb module is loaded.\n"); + return TRUE; + } +} + BOOL sf_load_bt_ko(void) { BOOL ret2 = TRUE; int ret = 0; + UINT8 i = 0; char cmd[70] = {'\0'}; MLOGI("start.\n"); + if (sf_system_check_bt_ko() == TRUE) + { + return ret2; + } + + for (i = 0; i < 50; i++) + { + if (sf_system_check_firmware_class_ko() == TRUE) + { + break; + } + else + { + if(49 == i) + { + MLOGE("blue setup fall!!\n"); + return FALSE; + } + usleep(500 * 1000); + } + } snprintf(cmd, sizeof(cmd), "insmod %s/kernel/drivers/bluetooth/rtk_btusb.ko", driver_path_prefix); ret = system(cmd); //ret = system("modprobe rtk_btusb"); diff --git a/code/application/source/sf_app/code/source/app/sf_system.c b/code/application/source/sf_app/code/source/app/sf_system.c index b9bd02196..f118a83a0 100755 --- a/code/application/source/sf_app/code/source/app/sf_system.c +++ b/code/application/source/sf_app/code/source/app/sf_system.c @@ -1334,6 +1334,22 @@ void sf_do_4g_upgrade_thread(void) } } +/************************************************* + Function: sf_wifi_start_to_cardv + Description: wifi on + Input: N/A + Output: N/A + Return: N/A + Others: N/A +*************************************************/ +void sf_wifi_start_to_cardv(void) +{ + SF_MESSAGE_BUF_S stMessageBuf = {0}; + SLOGI(" CMD_WIFI SF_WIFI_CMD_START\n"); + stMessageBuf.cmdId = CMD_WIFI; + stMessageBuf.arg1 = SF_WIFI_CMD_START; + sf_com_message_send_to_cardv(&stMessageBuf); +} void* sf_app_load_ko_thread(void *arg) { @@ -1344,7 +1360,8 @@ void* sf_app_load_ko_thread(void *arg) if(PWR_ON_SETUP == sf_poweron_type_get()) { - sf_load_bt_ko(); + //sf_load_bt_ko(); + sf_wifi_start_to_cardv(); } /*if((SF_MCU_STARTUP_NORMAL != sf_poweron_type_get()) && (0 == sf_get_fw_update())) { diff --git a/code/application/source/sf_app/code/source/sf_blue/src/sf_blue_hal.c b/code/application/source/sf_app/code/source/sf_blue/src/sf_blue_hal.c index c61b8b139..213785baa 100644 --- a/code/application/source/sf_app/code/source/sf_blue/src/sf_blue_hal.c +++ b/code/application/source/sf_app/code/source/sf_blue/src/sf_blue_hal.c @@ -130,6 +130,8 @@ static void *sf_bluetooth_piscan_task(void *arg) { UINT8 i = 0; sf_bluetooth_power_enable(); + sf_load_bt_ko(); + usleep(100 * 1000); //system("export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/misc:/customer/rocus/lib"); //system("adduser messagebus"); @@ -159,7 +161,7 @@ static void *sf_bluetooth_piscan_task(void *arg) } else { - if(39 == 1) + if(1 == i) { sf_load_bt_ko(); } diff --git a/code/application/source/sf_app/code/source/wifi/sf_wifi_svr.c b/code/application/source/sf_app/code/source/wifi/sf_wifi_svr.c index d514b6745..90815ec55 100755 --- a/code/application/source/sf_app/code/source/wifi/sf_wifi_svr.c +++ b/code/application/source/sf_app/code/source/wifi/sf_wifi_svr.c @@ -2764,7 +2764,7 @@ void sf_wifi_hw_init(void) } else { - //ret = system("modprobe 8723du"); + ret = system("modprobe 8723du"); } //sleep(2); ret = system("ifconfig lo 127.0.0.1"); diff --git a/code/lib/source/sifar/code/source/common/sf_common.c b/code/lib/source/sifar/code/source/common/sf_common.c index 9d38ea064..1ac0b1e18 100755 --- a/code/lib/source/sifar/code/source/common/sf_common.c +++ b/code/lib/source/sifar/code/source/common/sf_common.c @@ -1850,7 +1850,7 @@ static SINT32 sf_cardv_proccess_cmd_wifi(SF_MESSAGE_BUF_S *pMessageBuf) switch(pMessageBuf->arg1) { case SF_WIFI_CMD_START: - if((0 == sf_get_mcu_update_flag()) && (0 == sf_get_fw_update()) && (sf_get_mode_flag())) + //if((0 == sf_get_mcu_update_flag()) && (0 == sf_get_fw_update()) && (sf_get_mode_flag())) sf_cardv_wifi_start(); break; @@ -2778,10 +2778,6 @@ void sf_save_camera_info(void) void* sf_cardv_wifi_thread(void *arg) { /*wifi init*/ - sf_cardv_set_wifi_en(1); - usleep(200*1000); - system("modprobe 8723du"); - usleep(200*1000); UINet_AppIpc_Init(); sf_net_wifi_init(NET_AP_MODE, NET_AUTH_WPA2); WifiTskCfg.IsRun = 0; @@ -2792,8 +2788,9 @@ UINT32 sf_cardv_wifi_start(void) { SINT32 ret = 1; UIMenuStoreInfo *puiPara = sf_ui_para_get(); + SLOGI("thread run\n"); - if((0 == sf_get_mcu_update_flag()) && (0 == sf_get_fw_update()) && (sf_get_mode_flag()) && (puiPara->WifiSwitch)) + if((0 == sf_is_usb_flag()) && (0 == sf_get_mcu_update_flag()) && (0 == sf_get_fw_update()) && (sf_get_mode_flag()) && (puiPara->WifiSwitch)) { if(WifiTskCfg.IsRun) { From 6b941b519d24fb1e14cfc41f86f48200bd5377b9 Mon Sep 17 00:00:00 2001 From: greg Date: Mon, 8 Jan 2024 16:06:27 +0800 Subject: [PATCH 22/32] =?UTF-8?q?=E8=A7=A3=E5=86=B3=E9=A6=96=E6=AC=A1?= =?UTF-8?q?=E5=88=86=E5=8C=BA=E3=80=81=E6=A0=BC=E5=BC=8F=E5=8C=96=E3=80=81?= =?UTF-8?q?=E6=8C=82=E8=BD=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../init.d/S07_SysInit | 71 ++++++++++++++++++- 1 file changed, 68 insertions(+), 3 deletions(-) diff --git a/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/init.d/S07_SysInit b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/init.d/S07_SysInit index f3321cff6..2c0128437 100755 --- a/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/init.d/S07_SysInit +++ b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/init.d/S07_SysInit @@ -71,8 +71,6 @@ insmod /etc/lib/modules/$KERVER/extra/fs/exfat/exfat.ko # fi #mdev -s - - if [ -d "/sys/class/block/mmcblk0p1" ]; then mknod /dev/mmcblk0p1 b `cat /sys/class/block/mmcblk0p1/dev | sed "s/:/\ /g"` fi @@ -81,6 +79,66 @@ if [ -d "/sys/class/block/mmcblk1p1" ]; then mknod /dev/mmcblk1p1 b `cat /sys/class/block/mmcblk1p1/dev | sed "s/:/\ /g"` fi + +if [ -d "/sys/class/block/mmcblk0" ]; then + if [ ! -b /dev/mmcblk0 ]; then + mknod /dev/mmcblk0 b `cat /sys/class/block/mmcblk0/dev | sed "s/:/\ /g"` + fi +fi + +if [ -d "/sys/class/block/mmcblk1" ]; then + if [ ! -b /dev/mmcblk1 ]; then + mknod /dev/mmcblk1 b `cat /sys/class/block/mmcblk1/dev | sed "s/:/\ /g"` + fi +fi + +if [ -d "/sys/class/block/mmcblk0p1" ]; then + if [ ! -b /dev/mmcblk0p1 ]; then + mknod /dev/mmcblk0p1 b `cat /sys/class/block/mmcblk0p1/dev | sed "s/:/\ /g"` + fi +fi + + +disk="/dev/mmcblk1" +disk_part="/dev/mmcblk1p1" +#flag="$1" + +partition_func() { + fdisk "$disk" < Date: Mon, 8 Jan 2024 16:14:42 +0800 Subject: [PATCH 23/32] =?UTF-8?q?1.=E4=BF=AE=E6=94=B9WiFi=E8=BF=9E?= =?UTF-8?q?=E6=8E=A5=E5=AE=95=E6=9C=BA=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../source/sf_app/code/source/storeMng/sf_storeMng.c | 5 +++++ .../source/sf_app/code/source/wifi/sf_wifi_svr.c | 6 +++--- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/code/application/source/sf_app/code/source/storeMng/sf_storeMng.c b/code/application/source/sf_app/code/source/storeMng/sf_storeMng.c index b106a27e9..4f90c6244 100644 --- a/code/application/source/sf_app/code/source/storeMng/sf_storeMng.c +++ b/code/application/source/sf_app/code/source/storeMng/sf_storeMng.c @@ -60,6 +60,11 @@ void sf_strg_dev_register(SINT32 dev_id, SINT32 mounted) MMC_DEV_TYPE sf_get_strg_dev(void) { + if(sf_strg_dev == NULL) + { + MLOGI("err\n"); + return MMC_DEV_EMMC; + } return sf_strg_dev->dev_type; } diff --git a/code/application/source/sf_app/code/source/wifi/sf_wifi_svr.c b/code/application/source/sf_app/code/source/wifi/sf_wifi_svr.c index 90815ec55..159ee6714 100755 --- a/code/application/source/sf_app/code/source/wifi/sf_wifi_svr.c +++ b/code/application/source/sf_app/code/source/wifi/sf_wifi_svr.c @@ -430,8 +430,8 @@ S8 *appThumbKeyToName(thumbSize_t imgSize, thumbType_t fileType, UINT16 dirKey, free(strg_path); return SF_FAILURE; } - - char font =sf_get_strg_dev() == MMC_DEV_EMMC ? 'B' : 'E'; + MLOGI("s1\n"); + char font =sf_get_strg_dev() == MMC_DEV_EMMC ? 'B' : 'A'; if(imgSize == THUMB_320x240) { @@ -1142,7 +1142,7 @@ SINT32 sf_svr_packet_proc(SINT32 fd, UINT8 *pAppData, UINT16 dataLen) free(strg_path); return SF_FAILURE; } - + MLOGI("s1\n"); char *dcf_file = sf_get_strg_dev() == MMC_DEV_EMMC ? "SYBX" : "SYEX"; //printf("[sf_svr_packet_proc]dataLen: %d\n",dataLen); From 9f64fc75d1628c4b8471ad677426e085e162c798 Mon Sep 17 00:00:00 2001 From: payton Date: Mon, 8 Jan 2024 17:29:44 +0800 Subject: [PATCH 24/32] =?UTF-8?q?1.=E5=8D=87=E7=BA=A7=E6=8C=89=E9=94=AE?= =?UTF-8?q?=E8=B0=83=E6=95=B4=E4=B8=BA=E9=95=BF=E6=8C=891s=E6=89=8D?= =?UTF-8?q?=E7=94=9F=E6=95=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- rtos/code/driver/na51089/source/mcu/sf_mcu.c | 29 +++++++++++++++++--- 1 file changed, 25 insertions(+), 4 deletions(-) diff --git a/rtos/code/driver/na51089/source/mcu/sf_mcu.c b/rtos/code/driver/na51089/source/mcu/sf_mcu.c index 4a7924fa8..572d9177e 100755 --- a/rtos/code/driver/na51089/source/mcu/sf_mcu.c +++ b/rtos/code/driver/na51089/source/mcu/sf_mcu.c @@ -767,18 +767,39 @@ UINT32 sf_gpio_get_status(UINT32 ipin) } UINT32 sf_in_update(void) { + int i = 0; if((sf_gpio_get_status(GPIO_KEY_TEST)) && (PWR_ON_SETUP == sf_get_power_on_mode())) { - return 1; + while((sf_gpio_get_status(GPIO_KEY_TEST)) && (10 > i)) + { + i++; + vos_util_delay_us(100); + } + if(10 <= i) + { + return 1; + } } return 0; } UINT32 sf_in_mcu_update(void) { - if((sf_gpio_get_status(GPIO_KEY_DOWN)) && (PWR_ON_SETUP == sf_get_power_on_mode())){ - return 1; + int i = 0; + + if((sf_gpio_get_status(GPIO_KEY_DOWN)) && (PWR_ON_SETUP == sf_get_power_on_mode())) + { + while((sf_gpio_get_status(GPIO_KEY_DOWN)) && (10 > i)) + { + i++; + vos_util_delay_us(100); + } + if(10 <= i) + { + return 1; + } } - if(PWR_ON_MCU_UPDATA == sf_get_power_on_mode()){ + if(PWR_ON_MCU_UPDATA == sf_get_power_on_mode()) + { return 1; } return 0; From b1a479f8e1e68fa17595f5892377969230ed595d Mon Sep 17 00:00:00 2001 From: payton Date: Mon, 8 Jan 2024 17:30:03 +0800 Subject: [PATCH 25/32] =?UTF-8?q?1.=E4=BF=AE=E6=94=B9mcu=E5=8D=87=E7=BA=A7?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../source/sf_app/code/source/app/sf_system.c | 19 +++++++++++++++---- .../code/source/systemMng/sf_mcu_upgrade.c | 19 +++++++++++++++---- 2 files changed, 30 insertions(+), 8 deletions(-) diff --git a/code/application/source/sf_app/code/source/app/sf_system.c b/code/application/source/sf_app/code/source/app/sf_system.c index f118a83a0..14340c068 100755 --- a/code/application/source/sf_app/code/source/app/sf_system.c +++ b/code/application/source/sf_app/code/source/app/sf_system.c @@ -1640,9 +1640,21 @@ void* sf_app_mcu_updata_thread(void *arg) MLOGI("MCU_UPGRADE\n"); UINT32 McuFsize = 0; SINT8 ret = 0; + int sdflag = 0; + int emmcflag = 0; + char file_path[64] = {0}; + if((access("/mnt/sd/Mupgrade.bin", F_OK) == 0)) + { + sdflag = 1; + snprintf(file_path, sizeof(file_path), "/mnt/sd/Mupgrade.bin"); - char *file_path = sf_root_path_strcat(UPGRADE_FIRMWARE_NANE); - if(file_path == NULL) + } + if((access("/mnt/sd2/Mupgrade.bin", F_OK) == 0)) + { + emmcflag = 1; + snprintf(file_path, sizeof(file_path), "/mnt/sd2/Mupgrade.bin"); + } + if(emmcflag == 0 && sdflag == 0) { MLOGI(" sf_power_off_msg_to_cardv\n"); MLOGE("MCU_UPGRADE no file\n"); @@ -1651,8 +1663,7 @@ void* sf_app_mcu_updata_thread(void *arg) return NULL; } ret = Fw_GetFirmwareSize(file_path, &McuFsize); - if((sf_in_card_exist() == SF_TRUE) && (access(file_path, F_OK) == 0) - && (ret == 0) && (McuFsize > 1024) && (sf_is_enough_power_to_update() == SF_TRUE)) + if((ret == 0) && (McuFsize > 1024) && (sf_is_enough_power_to_update() == SF_TRUE)) { sf_set_mcu_update_flag(SF_TRUE); Fw_UpgradeThreadStart(); diff --git a/code/application/source/sf_app/code/source/systemMng/sf_mcu_upgrade.c b/code/application/source/sf_app/code/source/systemMng/sf_mcu_upgrade.c index 2034c0c53..743329c4a 100755 --- a/code/application/source/sf_app/code/source/systemMng/sf_mcu_upgrade.c +++ b/code/application/source/sf_app/code/source/systemMng/sf_mcu_upgrade.c @@ -28,6 +28,7 @@ #include #include "sf_common.h" +#include "sf_log.h" #include "sf_mcu_upgrade.h" #include "sf_param_common.h" #include "sf_ledmng.h" @@ -340,11 +341,21 @@ static void * FwUpgradeTask(void * argv) SINT8 param[1] = {0}; param[0] = 0; - char *file_path = sf_root_path_strcat(UPGRADE_FIRMWARE_NANE); - if(file_path == NULL) + //char *file_path = sf_root_path_strcat(UPGRADE_FIRMWARE_NANE); + char file_path[64] = {0}; + memset(file_path, '\0', sizeof(file_path)); + if((access("/mnt/sd/Mupgrade.bin", F_OK) == 0)) + { + snprintf(file_path, sizeof(file_path), "/mnt/sd/Mupgrade.bin"); + } + if((access("/mnt/sd2/Mupgrade.bin", F_OK) == 0)) + { + snprintf(file_path, sizeof(file_path), "/mnt/sd2/Mupgrade.bin"); + } + if(file_path[0] == '\0') { - free(file_path); - return; + MLOGE("no update file\n"); + return NULL; } while(FwUpgradeExit == 0) From 00623e27c2a7642d5cfb1608db69bd45b29c4da2 Mon Sep 17 00:00:00 2001 From: "sober.song" Date: Mon, 8 Jan 2024 18:49:45 +0800 Subject: [PATCH 26/32] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dwifi=5Fsvr=E8=8E=B7?= =?UTF-8?q?=E5=8F=96=E6=96=87=E4=BB=B6=E5=91=BD=E5=90=8D=E5=AD=97=E6=AE=B5?= =?UTF-8?q?=E6=AD=BB=E6=9C=BA=E5=92=8C=E4=B8=8A=E7=94=B5=E4=B8=8D=E6=8F=92?= =?UTF-8?q?=E5=85=A5SD=E5=8D=A1UI=E6=98=BE=E7=A4=BA=E5=BC=82=E5=B8=B8?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SrcCode/UIApp/Background/UIBackgroundObj.c | 7 ++++++- .../cardv/SrcCode/UIApp/Network/WifiAppXML.c | 9 +++++---- .../cardv/SrcCode/UIApp/Photo/UIStorageCheck.c | 15 +++++++++------ .../UIFlowLVGL/UIFlowPhoto/UIFlowPhotoFuncs.c | 4 ++-- .../sf_app/code/source/storeMng/sf_storeMng.c | 11 +++++------ .../source/sf_app/code/source/wifi/sf_wifi_svr.c | 16 ++++++++++++---- 6 files changed, 39 insertions(+), 23 deletions(-) diff --git a/code/application/source/cardv/SrcCode/UIApp/Background/UIBackgroundObj.c b/code/application/source/cardv/SrcCode/UIApp/Background/UIBackgroundObj.c index fec8f3035..3a00b135d 100755 --- a/code/application/source/cardv/SrcCode/UIApp/Background/UIBackgroundObj.c +++ b/code/application/source/cardv/SrcCode/UIApp/Background/UIBackgroundObj.c @@ -973,7 +973,9 @@ UINT32 BackgroundFormatCard(void) //DX_HANDLE pStrgDev = Dx_GetObject(DX_CLASS_STORAGE_EXT|DX_TYPE_CARD1); //UINT32 hStrgObj = Dx_Getcaps(pStrgDev, STORAGE_CAPS_HANDLE, 0); //ret = FileSys_FormatDisk((HNVT_STRG)hStrgObj, FALSE); - FS_HANDLE pStrgDXH = (FS_HANDLE)Dx_GetObject(DX_CLASS_STORAGE_EXT | DX_TYPE_CARD1); + //FS_HANDLE pStrgDXH = (FS_HANDLE)Dx_GetObject(DX_CLASS_STORAGE_EXT | DX_TYPE_CARD1); + FS_HANDLE pStrgDXH = 0; + FileSys_GetStrgObj(&pStrgDXH); //FS_HANDLE pStrgDXH = (FS_HANDLE)sdio_getStorageObject(STRG_OBJ_FAT1); DBG_FUNC("pStrgDXH=0x%08X\r\n",pStrgDXH); //#NT#2016/05/30#Lincy Lin -begin @@ -996,6 +998,9 @@ UINT32 BackgroundFormatCard(void) //#NT#2016/05/30#Lincy Lin -end ret = FileSys_FormatDisk(pStrgDXH, FALSE); DBG_FUNC("Call FileSys_FormatDisk() ret=%d\r\n", ret); + + //ret = FileSys_FormatAndLabel('A', pStrgDXH, FALSE, NULL); + //DBG_FUNC("Call FileSys_FormatDisk() ret=%d\r\n", ret); if (ret == FST_STA_OK) { // reset file ID (for FileDB) diff --git a/code/application/source/cardv/SrcCode/UIApp/Network/WifiAppXML.c b/code/application/source/cardv/SrcCode/UIApp/Network/WifiAppXML.c index 60530934a..d3fd5ae24 100755 --- a/code/application/source/cardv/SrcCode/UIApp/Network/WifiAppXML.c +++ b/code/application/source/cardv/SrcCode/UIApp/Network/WifiAppXML.c @@ -2002,10 +2002,11 @@ int XML_GetPictureEnd(char *path, char *argument, HFS_U32 bufAddr, HFS_U32 *bufS DBG_ERR("storage full\r\n"); } else #endif - if (System_GetState(SYS_STATE_FS) == FS_DISK_ERROR) { - result = WIFIAPP_RET_FILE_ERROR; - DBG_ERR("write file fail\r\n"); - } else { + //if (System_GetState(SYS_STATE_FS) == FS_DISK_ERROR) { + //result = WIFIAPP_RET_FILE_ERROR; + //DBG_ERR("write file fail\r\n"); + //} else + { #if 0 //not support get file after capture,get from file list result = 0; diff --git a/code/application/source/cardv/SrcCode/UIApp/Photo/UIStorageCheck.c b/code/application/source/cardv/SrcCode/UIApp/Photo/UIStorageCheck.c index 4005a19d9..e1f96855f 100755 --- a/code/application/source/cardv/SrcCode/UIApp/Photo/UIStorageCheck.c +++ b/code/application/source/cardv/SrcCode/UIApp/Photo/UIStorageCheck.c @@ -182,10 +182,10 @@ static BOOL UIStrgCheckFolderFull(DCF_HANDLE DcfHandle) UINT32 DCF_DirId = 0, DCF_FileId = 0; BOOL ret; - if (System_GetState(SYS_STATE_FS) == FS_NUM_FULL) { - DBG_ERR("UI_Validate_Storage: DIR:999 is existing!\r\n"); - return TRUE; - } + //if (System_GetState(SYS_STATE_FS) == FS_NUM_FULL) { + //DBG_ERR("UI_Validate_Storage: DIR:999 is existing!\r\n"); + //return TRUE; + //} bIsFileReachMax = FALSE; #if USE_MMC_DEV_CHECK ret = DCF_GetNextIDEx(DcfHandle, &DCF_DirId, &DCF_FileId); @@ -247,7 +247,8 @@ static BOOL UIStrgCheckErr(MMC_DEV_TYPE dev_id) { FileSys_WaitFinishEx('B'); } - + +#if 0 if (System_GetState(SYS_STATE_FS) == FS_DISK_ERROR || System_GetState(SYS_STATE_FS) == FS_UNKNOWN_FORMAT || System_GetState(SYS_STATE_FS) == FS_UNFORMATTED @@ -259,7 +260,9 @@ static BOOL UIStrgCheckErr(MMC_DEV_TYPE dev_id) { DBG_ERR("UIStorageCheck: %d Card Error\r\n", System_GetState(SYS_STATE_FS)); return TRUE; - } else { + } else +#endif + { if (UIStorageCheck_DCIMWritable() == FALSE) { return TRUE; diff --git a/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIFlowLVGL/UIFlowPhoto/UIFlowPhotoFuncs.c b/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIFlowLVGL/UIFlowPhoto/UIFlowPhotoFuncs.c index 9c0f3714d..ea53fad1f 100755 --- a/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIFlowLVGL/UIFlowPhoto/UIFlowPhotoFuncs.c +++ b/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIFlowLVGL/UIFlowPhoto/UIFlowPhotoFuncs.c @@ -25,9 +25,9 @@ extern void UIFlowPhoto_update_selftimer_cnt(UINT32 time); CHAR *Get_FreePicNumString(UINT32 uiValue) { - if (System_GetState(SYS_STATE_FS) != FS_INIT_OK) + //if (System_GetState(SYS_STATE_FS) != FS_INIT_OK) { - return 0; + //return 0; } unsigned long fileCount = 0; #if USE_MMC_DEV_CHECK diff --git a/code/application/source/sf_app/code/source/storeMng/sf_storeMng.c b/code/application/source/sf_app/code/source/storeMng/sf_storeMng.c index 4f90c6244..f865a2dbe 100644 --- a/code/application/source/sf_app/code/source/storeMng/sf_storeMng.c +++ b/code/application/source/sf_app/code/source/storeMng/sf_storeMng.c @@ -60,12 +60,11 @@ void sf_strg_dev_register(SINT32 dev_id, SINT32 mounted) MMC_DEV_TYPE sf_get_strg_dev(void) { - if(sf_strg_dev == NULL) - { - MLOGI("err\n"); - return MMC_DEV_EMMC; - } - return sf_strg_dev->dev_type; + if(sf_strg_dev != NULL) { + return sf_strg_dev->dev_type; + } + else + return MMC_DEV_NO; } static SINT32 sd_file_Isexsit(SF_CHAR *fileName) diff --git a/code/application/source/sf_app/code/source/wifi/sf_wifi_svr.c b/code/application/source/sf_app/code/source/wifi/sf_wifi_svr.c index 159ee6714..394bf41d6 100755 --- a/code/application/source/sf_app/code/source/wifi/sf_wifi_svr.c +++ b/code/application/source/sf_app/code/source/wifi/sf_wifi_svr.c @@ -149,7 +149,7 @@ static PHONE_SHOT_E gPhoneShot = PHONE_SHOT_END; extern sem_t gAppSvrSendQueue; extern UINT8 StopSendFile; extern UINT8 SendingFile; - +extern DCF_HANDLE System_Get_DCF_Handle(void); /************************************************************************** * F U N C T I O N D E C L A R A T I O N S * **************************************************************************/ @@ -430,8 +430,15 @@ S8 *appThumbKeyToName(thumbSize_t imgSize, thumbType_t fileType, UINT16 dirKey, free(strg_path); return SF_FAILURE; } +<<<<<<< Updated upstream MLOGI("s1\n"); char font =sf_get_strg_dev() == MMC_DEV_EMMC ? 'B' : 'A'; +======= + + //char font = sf_get_strg_dev() == MMC_DEV_EMMC ? 'B' : 'E'; + UINT32 dcf_handle = (UINT32)System_Get_DCF_Handle(); /* 0:emmc 1:sd */ + char font = System_Get_DCF_Disk_Drive(dcf_handle) == 'B' ? 'B' : 'E'; +>>>>>>> Stashed changes if(imgSize == THUMB_320x240) { @@ -1142,9 +1149,10 @@ SINT32 sf_svr_packet_proc(SINT32 fd, UINT8 *pAppData, UINT16 dataLen) free(strg_path); return SF_FAILURE; } - MLOGI("s1\n"); - char *dcf_file = sf_get_strg_dev() == MMC_DEV_EMMC ? "SYBX" : "SYEX"; - + + UINT32 dcf_handle = (UINT32)System_Get_DCF_Handle(); /* 0:emmc 1:sd */ + char *dcf_file = System_Get_DCF_Disk_Drive(dcf_handle) == 'B' ? "SYBX" : "SYEX"; + //printf("[sf_svr_packet_proc]dataLen: %d\n",dataLen); if(poweroff_mode == POWEROFF_COUNTDOWN) From dc4ddd2a3add26568eeac9e6e95c8a1fcab5b4ba Mon Sep 17 00:00:00 2001 From: "sober.song" Date: Mon, 8 Jan 2024 18:53:08 +0800 Subject: [PATCH 27/32] =?UTF-8?q?=E4=BF=AE=E6=94=B9sf=5Fwifi=5Fsvr?= =?UTF-8?q?=E5=90=88=E5=B9=B6=E4=BB=A3=E7=A0=81=E5=86=B2=E7=AA=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../source/sf_app/code/source/wifi/sf_wifi_svr.c | 6 ------ 1 file changed, 6 deletions(-) diff --git a/code/application/source/sf_app/code/source/wifi/sf_wifi_svr.c b/code/application/source/sf_app/code/source/wifi/sf_wifi_svr.c index 394bf41d6..f6aafad7c 100755 --- a/code/application/source/sf_app/code/source/wifi/sf_wifi_svr.c +++ b/code/application/source/sf_app/code/source/wifi/sf_wifi_svr.c @@ -430,15 +430,9 @@ S8 *appThumbKeyToName(thumbSize_t imgSize, thumbType_t fileType, UINT16 dirKey, free(strg_path); return SF_FAILURE; } -<<<<<<< Updated upstream - MLOGI("s1\n"); - char font =sf_get_strg_dev() == MMC_DEV_EMMC ? 'B' : 'A'; -======= - //char font = sf_get_strg_dev() == MMC_DEV_EMMC ? 'B' : 'E'; UINT32 dcf_handle = (UINT32)System_Get_DCF_Handle(); /* 0:emmc 1:sd */ char font = System_Get_DCF_Disk_Drive(dcf_handle) == 'B' ? 'B' : 'E'; ->>>>>>> Stashed changes if(imgSize == THUMB_320x240) { From 09be0f47b70a1220511037e0c4f2d05e538ccd8b Mon Sep 17 00:00:00 2001 From: payton Date: Tue, 9 Jan 2024 09:09:49 +0800 Subject: [PATCH 28/32] =?UTF-8?q?1.=E4=BF=AE=E6=94=B9=E5=8A=A0=E5=85=A5Log?= =?UTF-8?q?file=E5=BE=8C=20,=20=E5=8F=AF=E8=83=BD=E6=9C=83=E6=9C=89=20stac?= =?UTF-8?q?koverflow=20=E7=9A=84=E5=95=8F=E9=A1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/DxHunting.c | 2 +- rtos/code/driver/na51089/source/mcu/sf_led.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/rtos/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/DxHunting.c b/rtos/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/DxHunting.c index 29a88aabd..d9617ea30 100755 --- a/rtos/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/DxHunting.c +++ b/rtos/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/DxHunting.c @@ -393,7 +393,7 @@ static void IrCutCtrlThreadInit(void) { //DBG_DUMP("\r\n [%s:%d] s \r\n",__FUNCTION__,__LINE__); - g_handle_ir_cut = vos_task_create(IrCutCtrlThread, NULL, "IrCutCtrlThread", 18, 2048); + g_handle_ir_cut = vos_task_create(IrCutCtrlThread, NULL, "IrCutCtrlThread", 18, 4096); if(!g_handle_ir_cut){ DBG_ERR("[ERROR] IR CUT thread creat failed!\r\n"); Delay_DelayMs(80); diff --git a/rtos/code/driver/na51089/source/mcu/sf_led.c b/rtos/code/driver/na51089/source/mcu/sf_led.c index 6a172e0f9..95eb8656e 100755 --- a/rtos/code/driver/na51089/source/mcu/sf_led.c +++ b/rtos/code/driver/na51089/source/mcu/sf_led.c @@ -356,7 +356,7 @@ void sf_led_init(void) //vos_flag_create(&FLG_ID_SF_LED, NULL, "FLG_ID_SF_LED"); /*thread creat*/ - ledTskId = vos_task_create(sf_led_thread, NULL, "sf_led_thread", 25, 2048); + ledTskId = vos_task_create(sf_led_thread, NULL, "sf_led_thread", 25, 4096); vos_task_resume(ledTskId); #if HW_S530 /*thread creat*/ From cc4e643ce411a2a3f6dff0523431e977bd16fee0 Mon Sep 17 00:00:00 2001 From: payton Date: Tue, 9 Jan 2024 09:10:43 +0800 Subject: [PATCH 29/32] =?UTF-8?q?1.rtos=E4=B8=8B=E7=9A=84Logfile=E5=8A=9F?= =?UTF-8?q?=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../source/cardv/SrcCode/System/SysStrg_Exe.c | 6 +- .../source/cardv/SrcCode/System/rtos-main.c | 67 ++++++++++++++----- .../source/cardv/SrcCode/System/sys_filesys.c | 4 +- .../UIApp/Background/UIBackgroundObj.c | 12 ++-- .../cardv/SrcCode/UIApp/MovieFast/MovieFast.c | 1 + .../cardv/SrcCode/UIApp/PhotoFast/PhotoFast.c | 3 +- .../source/cardv/rtos-main-hunting_lvgl.lds | 5 ++ 7 files changed, 68 insertions(+), 30 deletions(-) diff --git a/rtos/code/application/source/cardv/SrcCode/System/SysStrg_Exe.c b/rtos/code/application/source/cardv/SrcCode/System/SysStrg_Exe.c index e61256db8..500f1d61e 100644 --- a/rtos/code/application/source/cardv/SrcCode/System/SysStrg_Exe.c +++ b/rtos/code/application/source/cardv/SrcCode/System/SysStrg_Exe.c @@ -486,7 +486,7 @@ void System_OnStrgExit_FS(void) #if (LOGFILE_FUNC==ENABLE) #if HUNTING_CAMERA_MCU == ENABLE UIMenuStoreInfo *puiPara = sf_ui_para_get(); - if(puiPara->DebugMode) + if(puiPara->AutoLogSwitch) { LogFile_Close(); } @@ -640,7 +640,7 @@ INT32 System_OnStrgRemove(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray) #if (LOGFILE_FUNC==ENABLE) #if HUNTING_CAMERA_MCU == ENABLE UIMenuStoreInfo *puiPara = sf_ui_para_get(); - if(puiPara->DebugMode) + if(puiPara->AutoLogSwitch) { LogFile_Suspend(); LogFile_Close(); @@ -787,7 +787,7 @@ INT32 System_OnStrgAttach(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray) #if HUNTING_CAMERA_MCU == ENABLE UIMenuStoreInfo *puiPara = sf_ui_para_get(); - if ((puiPara->DebugMode) && SxTimer_GetFuncActive(SX_TIMER_DET_SYSTEM_ERROR_ID) == 0) + if ((puiPara->AutoLogSwitch) && SxTimer_GetFuncActive(SX_TIMER_DET_SYSTEM_ERROR_ID) == 0) #else if (SxTimer_GetFuncActive(SX_TIMER_DET_SYSTEM_ERROR_ID) == 0) #endif diff --git a/rtos/code/application/source/cardv/SrcCode/System/rtos-main.c b/rtos/code/application/source/cardv/SrcCode/System/rtos-main.c index 758ea9946..6b3ed7b68 100644 --- a/rtos/code/application/source/cardv/SrcCode/System/rtos-main.c +++ b/rtos/code/application/source/cardv/SrcCode/System/rtos-main.c @@ -114,6 +114,48 @@ extern void eac_set_phypower(BOOL b_en); #if (defined(_NVT_ETHREARCAM_TX_)) && (ETHCAM_EIS == ENABLE) extern int gyro_init(void); #endif +_ALIGNED(64) static CHAR gLogFile_Buff[LOGFILE_BUFFER_SIZE]= {0}; + +void sf_log_confgs(void) +{ + #if (LOGFILE_FUNC==ENABLE) + UIMenuStoreInfo *puiPara = sf_ui_para_get(); + if(puiPara->AutoLogSwitch) + { + DBG_WRN("SwTimer_Init\n"); + SwTimer_Init(); // sw timer + { + LOGFILE_OPEN logOpenParm = {0}; + LOGFILE_CFG cfg = {0}; + UINT32 maxFileNum = 32; + UINT32 maxFileSize = 0x100000; // 1MB + CHAR rootDir[LOGFILE_ROOT_DIR_MAX_LEN + 1] = "A:\\LOG\\"; + CHAR sysErrRootDir[LOGFILE_ROOT_DIR_MAX_LEN + 1] = "A:\\SYS\\"; + cfg.ConType = LOGFILE_CON_MEM | LOGFILE_CON_UART; + cfg.TimeType = LOGFILE_TIME_TYPE_DATETIME; + cfg.LogBuffAddr = (UINT32)gLogFile_Buff; + cfg.LogBuffSize = sizeof(gLogFile_Buff); + + DBG_WRN("LogFile_Config\n"); + LogFile_Config(&cfg); + + logOpenParm.maxFileNum = maxFileNum; + logOpenParm.maxFileSize = maxFileSize; + logOpenParm.isPreAllocAllFiles = FALSE; + logOpenParm.isSaveLastTimeSysErrLog = FALSE; + logOpenParm.lastTimeSysErrLogBuffAddr = 0; + logOpenParm.lastTimeSysErrLogBuffSize = 0; + logOpenParm.isZeroFile = TRUE; + strncpy(logOpenParm.rootDir, rootDir, LOGFILE_ROOT_DIR_MAX_LEN); + strncpy(logOpenParm.sysErrRootDir, sysErrRootDir, LOGFILE_ROOT_DIR_MAX_LEN); + + DBG_WRN("LogFile_Open\n"); + LogFile_Open(&logOpenParm); + } + } + #endif +} + static void insmod_system(void) { #if (HUNTING_CAMERA_MODEL == ENABLE) @@ -196,14 +238,14 @@ static void insmod_system(void) DBG_ERR("open hwclock failed!\n"); } else{ - #if HUNTING_CAMERA_MCU != ENABLE// The time is controlled by the MCU. sf_get_mcu_rtc_set_sys + #if 1//HUNTING_CAMERA_MCU != ENABLE// The time is controlled by the MCU. sf_get_mcu_rtc_set_sys struct tm current_time = {0}; struct tm current_time2 = {0}; - current_time.tm_year = 2001; - current_time.tm_mon = 12; - current_time.tm_mday = 30; - current_time.tm_hour = 6; + current_time.tm_year = 2023; + current_time.tm_mon = 1; + current_time.tm_mday = 1; + current_time.tm_hour = 8; current_time.tm_min = 0; current_time.tm_sec = 0; @@ -216,6 +258,7 @@ static void insmod_system(void) #endif } + vos_perf_list_mark("b_sys", __LINE__, 1); } @@ -1153,13 +1196,7 @@ void rtos_main(void) #if (POWERON_FAST_BOOT_MSG == DISABLE) fastboot_msg_en(DISABLE); #endif - #if HUNTING_CAMERA_MCU == ENABLE - UIMenuStoreInfo *puiPara = sf_ui_para_get(); - if(puiPara->DebugMode == 0) - { - //fastboot_msg_en(DISABLE); - } - #endif + VK_TASK_HANDLE vkt_boot = vos_task_create(fastboot_thread, fastboot, "boot", 9, 10240); vos_task_resume(vkt_boot); fastboot_wait_done(BOOT_FLOW_BOOT); @@ -1169,12 +1206,6 @@ void rtos_main(void) #if (POWERON_FAST_BOOT_MSG == DISABLE) fastboot_msg_en(ENABLE); #endif - #if HUNTING_CAMERA_MCU == ENABLE - if(puiPara->DebugMode == 0) - { - // fastboot_msg_en(ENABLE); - } - #endif #if (FASTBOOT_KEYSCAN_FUNC == ENABLE) // enable for keyscan / usb function, but need modify lds file flow_system_init(); diff --git a/rtos/code/application/source/cardv/SrcCode/System/sys_filesys.c b/rtos/code/application/source/cardv/SrcCode/System/sys_filesys.c index 29eeed291..6d277b0a8 100755 --- a/rtos/code/application/source/cardv/SrcCode/System/sys_filesys.c +++ b/rtos/code/application/source/cardv/SrcCode/System/sys_filesys.c @@ -267,7 +267,7 @@ void sf_log_confg(void) { #if (LOGFILE_FUNC==ENABLE) UIMenuStoreInfo *puiPara = sf_ui_para_get(); - if(puiPara->DebugMode) + if(puiPara->AutoLogSwitch) { LOGFILE_CFG cfg = {0}; cfg.ConType = LOGFILE_CON_UART|LOGFILE_CON_STORE; @@ -289,7 +289,7 @@ void sf_log_open(void) UIMenuStoreInfo *puiPara = sf_ui_para_get(); - if ((puiPara->DebugMode) && SxTimer_GetFuncActive(SF_SX_TIMER_DET_SYSTEM_ERROR_ID) == 0) + if ((puiPara->AutoLogSwitch) && SxTimer_GetFuncActive(SF_SX_TIMER_DET_SYSTEM_ERROR_ID) == 0) { LOGFILE_OPEN logOpenParm = {0}; UINT32 maxFileNum = 32; diff --git a/rtos/code/application/source/cardv/SrcCode/UIApp/Background/UIBackgroundObj.c b/rtos/code/application/source/cardv/SrcCode/UIApp/Background/UIBackgroundObj.c index 0ecec41dc..bd24b3159 100644 --- a/rtos/code/application/source/cardv/SrcCode/UIApp/Background/UIBackgroundObj.c +++ b/rtos/code/application/source/cardv/SrcCode/UIApp/Background/UIBackgroundObj.c @@ -750,7 +750,7 @@ UINT32 BackgroundFormat(void) #if (LOGFILE_FUNC==ENABLE) #if HUNTING_CAMERA_MCU == ENABLE UIMenuStoreInfo *puiPara = sf_ui_para_get(); - if(puiPara->DebugMode) + if(puiPara->AutoLogSwitch) { LogFile_Suspend(); LogFile_Close(); @@ -788,7 +788,7 @@ UINT32 BackgroundFormat(void) //#NT#Support logfile function #if (LOGFILE_FUNC==ENABLE) #if HUNTING_CAMERA_MCU == ENABLE - if(puiPara->DebugMode) + if(puiPara->AutoLogSwitch) { LogFile_ReOpen(); } @@ -826,7 +826,7 @@ UINT32 BackgroundFormatCard(void) #if (LOGFILE_FUNC==ENABLE) #if HUNTING_CAMERA_MCU == ENABLE UIMenuStoreInfo *puiPara = sf_ui_para_get(); - if(puiPara->DebugMode) + if(puiPara->AutoLogSwitch) { LogFile_Suspend(); LogFile_Complete(); @@ -864,7 +864,7 @@ UINT32 BackgroundFormatCard(void) //#NT#Support logfile function #if (LOGFILE_FUNC==ENABLE) #if HUNTING_CAMERA_MCU == ENABLE - if(puiPara->DebugMode) + if(puiPara->AutoLogSwitch) { LogFile_ReOpen(); } @@ -894,7 +894,7 @@ UINT32 BackgroundFormatNand(void) #if HUNTING_CAMERA_MCU == ENABLE UIMenuStoreInfo *puiPara = sf_ui_para_get(); - if(puiPara->DebugMode) + if(puiPara->AutoLogSwitch) { LogFile_Suspend(); LogFile_Complete(); @@ -932,7 +932,7 @@ UINT32 BackgroundFormatNand(void) //#NT#Support logfile function #if (LOGFILE_FUNC==ENABLE) #if HUNTING_CAMERA_MCU == ENABLE - if(puiPara->DebugMode) + if(puiPara->AutoLogSwitch) { LogFile_ReOpen(); } diff --git a/rtos/code/application/source/cardv/SrcCode/UIApp/MovieFast/MovieFast.c b/rtos/code/application/source/cardv/SrcCode/UIApp/MovieFast/MovieFast.c index 9748894d5..ba2a6d5b3 100644 --- a/rtos/code/application/source/cardv/SrcCode/UIApp/MovieFast/MovieFast.c +++ b/rtos/code/application/source/cardv/SrcCode/UIApp/MovieFast/MovieFast.c @@ -321,6 +321,7 @@ static void MovieFast_ShutDown(void) { DBG_DUMP("LogFile_Close ...\n"); LogFile_Suspend(); + LogFile_DumpToFile("A:\\Log.txt"); LogFile_Close(); } #endif diff --git a/rtos/code/application/source/cardv/SrcCode/UIApp/PhotoFast/PhotoFast.c b/rtos/code/application/source/cardv/SrcCode/UIApp/PhotoFast/PhotoFast.c index 04c2e08e7..f0b14aaa0 100644 --- a/rtos/code/application/source/cardv/SrcCode/UIApp/PhotoFast/PhotoFast.c +++ b/rtos/code/application/source/cardv/SrcCode/UIApp/PhotoFast/PhotoFast.c @@ -2179,10 +2179,11 @@ static void PhotoFast_ShutDown(void) // DBG_DUMP("wait filesys close ...\n"); #if (LOGFILE_FUNC==ENABLE) UIMenuStoreInfo *puiPara = sf_ui_para_get(); - if(puiPara->DebugMode) + if(puiPara->AutoLogSwitch) { DBG_DUMP("LogFile_Close ...\n"); LogFile_Suspend(); + LogFile_DumpToFile("A:\\Log.txt"); LogFile_Close(); } #endif diff --git a/rtos/code/application/source/cardv/rtos-main-hunting_lvgl.lds b/rtos/code/application/source/cardv/rtos-main-hunting_lvgl.lds index 21a8a5c8d..7de79c8a5 100755 --- a/rtos/code/application/source/cardv/rtos-main-hunting_lvgl.lds +++ b/rtos/code/application/source/cardv/rtos-main-hunting_lvgl.lds @@ -156,6 +156,8 @@ SECTIONS libzlib.a (.text* .data* .data1* .rodata* .rodata1* .reginfo* .init* .exit*) libmem.a (.text* .data* .data1* .rodata* .rodata1* .reginfo* .init* .exit*) libDbgUt.a (.text* .data* .data1* .rodata* .rodata1* .reginfo* .init* .exit*) + liblogfile.a (.text* .data* .data1* .rodata* .rodata1* .reginfo* .init* .exit*) + libSxTimer.a (.text* .data* .data1* .rodata* .rodata1* .reginfo* .init* .exit*) /* driver */ libdrv_portable.a (.text* .data* .data1* .rodata* .rodata1* .reginfo* .init* .exit*) libdrv_drtc.a (.text* .data* .data1* .rodata* .rodata1* .reginfo* .init* .exit*) @@ -515,3 +517,6 @@ EXTERN("h264Enc_queryMemSize") EXTERN("aud_set_default_setting") EXTERN("eac_set_ad_config") EXTERN("eac_set_phypower") +EXTERN("SwTimer_Init") +EXTERN("LogFile_Config") +EXTERN("LogFile_Open") From 473b90824341516315fa2352c90e15979a295f8c Mon Sep 17 00:00:00 2001 From: payton Date: Tue, 9 Jan 2024 09:11:17 +0800 Subject: [PATCH 30/32] =?UTF-8?q?1.fat32=E6=A0=BC=E5=BC=8F=E5=8C=96?= =?UTF-8?q?=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- code/lib/source/FsLinux/libFsLinux.a | Bin 170854 -> 170590 bytes code/lib/source/FsLinux/libFsLinux.so | Bin 108056 -> 108056 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/code/lib/source/FsLinux/libFsLinux.a b/code/lib/source/FsLinux/libFsLinux.a index 913e68df20e6ea72b31b5d8550f255f5e14fb662..06803cd41c240dcbc654e70622c309d3cfc4659e 100644 GIT binary patch delta 14578 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 TX)`6i5X-XVbt(F`JNLf<8>je- delta 14811 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 delta 22897 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 From a85126e6b38b5551576905355ad8e2232d48ccd8 Mon Sep 17 00:00:00 2001 From: payton Date: Tue, 9 Jan 2024 09:11:47 +0800 Subject: [PATCH 31/32] =?UTF-8?q?1.=E4=BF=AE=E6=94=B9WiFi=E8=BF=9E?= =?UTF-8?q?=E6=8E=A5=E5=90=8E=E5=8D=A1=E6=9C=BA=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../source/sf_app/code/source/storeMng/sf_storeMng.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/application/source/sf_app/code/source/storeMng/sf_storeMng.c b/code/application/source/sf_app/code/source/storeMng/sf_storeMng.c index f865a2dbe..3260e94ea 100644 --- a/code/application/source/sf_app/code/source/storeMng/sf_storeMng.c +++ b/code/application/source/sf_app/code/source/storeMng/sf_storeMng.c @@ -64,7 +64,7 @@ MMC_DEV_TYPE sf_get_strg_dev(void) return sf_strg_dev->dev_type; } else - return MMC_DEV_NO; + return MMC_DEV_EMMC; } static SINT32 sd_file_Isexsit(SF_CHAR *fileName) From 75e392a48d8b579d2a6412b121fea6f742f4d0dd Mon Sep 17 00:00:00 2001 From: payton Date: Tue, 9 Jan 2024 09:12:02 +0800 Subject: [PATCH 32/32] 1.ver:7MR5RCwE101 --- code/application/source/cardv/SrcCode/PrjCfg_HUNTING_S550.h | 2 +- .../code/application/source/cardv/SrcCode/PrjCfg_HUNTING_S550.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/code/application/source/cardv/SrcCode/PrjCfg_HUNTING_S550.h b/code/application/source/cardv/SrcCode/PrjCfg_HUNTING_S550.h index 67b7ca2b0..87744d544 100755 --- a/code/application/source/cardv/SrcCode/PrjCfg_HUNTING_S550.h +++ b/code/application/source/cardv/SrcCode/PrjCfg_HUNTING_S550.h @@ -924,7 +924,7 @@ #define HUNTING_MCU_UART ENABLE #define HUNTING_IR_LED_940 ENABLE #define SF_EXIF_MN_BUF_SIZE 256 -#define SF_BASE_VERSION "7MR5RCw4102" +#define SF_BASE_VERSION "7MR5RCwE101" #define HW_S530 DISABLE #define DCF_DIR_NAME "MEDIA" /* 100MEDIA */ #define DCF_FILE_NAME "SYGW" /* SYFW0001.JPG */ diff --git a/rtos/code/application/source/cardv/SrcCode/PrjCfg_HUNTING_S550.h b/rtos/code/application/source/cardv/SrcCode/PrjCfg_HUNTING_S550.h index feb1d3a1a..9326c1f1b 100755 --- a/rtos/code/application/source/cardv/SrcCode/PrjCfg_HUNTING_S550.h +++ b/rtos/code/application/source/cardv/SrcCode/PrjCfg_HUNTING_S550.h @@ -945,7 +945,7 @@ #define HUNTING_MCU_UART ENABLE #define HUNTING_IR_LED_940 ENABLE #define SF_EXIF_MN_BUF_SIZE 256 -#define SF_BASE_VERSION "7MR5RCw4102" +#define SF_BASE_VERSION "7MR5RCwE101" #define DCF_DIR_NAME "MEDIA" /* 100MEDIA */ #define DCF_FILE_NAME "SYGW" /* SYFW0001.JPG */ #define PHOTO_THUMB_PATH ":\\THUMB\\"