From 7bc6174a29db3bc2e06356e5bd9049aa88fdd880 Mon Sep 17 00:00:00 2001 From: payton Date: Mon, 18 Dec 2023 16:18:40 +0800 Subject: [PATCH] =?UTF-8?q?1.emmc=E5=90=88=E5=B9=B6=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../source/cardv/SrcCode/System/SysStrg_Exe.c | 59 ++++++++++-------- .../source/cardv/SrcCode/System/sys_mempool.c | 7 +++ .../SrcCode/UIApp/Movie/UIAppMovie_Exe.c | 18 +++--- .../SrcCode/UIApp/Photo/UIAppPhoto_Exe.c | 8 ++- .../source/ImageApp/Photo/libimageapp_photo.a | Bin 143604 -> 143636 bytes .../ImageApp/Photo/libimageapp_photo.so | Bin 101616 -> 101616 bytes 6 files changed, 57 insertions(+), 35 deletions(-) diff --git a/code/application/source/cardv/SrcCode/System/SysStrg_Exe.c b/code/application/source/cardv/SrcCode/System/SysStrg_Exe.c index 43b30e0e7..5d21b03ee 100644 --- a/code/application/source/cardv/SrcCode/System/SysStrg_Exe.c +++ b/code/application/source/cardv/SrcCode/System/SysStrg_Exe.c @@ -833,17 +833,21 @@ INT32 System_OnStrgInsert(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray) #endif dcfParm.WorkbuffSize = POOL_SIZE_DCF_BUFFER; - DCF_Open(&dcfParm); + + UINT32 handle = DCF_Open(&dcfParm); + + DBG_DUMP("Handle = %lu, drive = %c\n", handle, dcfParm.Drive); // DCF_ScanObj(); } #endif - - if (GxStrg_GetDeviceCtrl(stg_id, CARD_READONLY)) { - System_SetState(SYS_STATE_CARD, CARD_LOCKED); - DBG_IND("Card Locked\r\n"); - } else { - System_SetState(SYS_STATE_CARD, CARD_INSERTED); - DBG_IND("Card inserted\r\n"); + if(stg_id == 0){ + if (GxStrg_GetDeviceCtrl(stg_id, CARD_READONLY)) { + System_SetState(SYS_STATE_CARD, CARD_LOCKED); + DBG_IND("Card Locked\r\n"); + } else { + System_SetState(SYS_STATE_CARD, CARD_INSERTED); + DBG_IND("Card inserted\r\n"); + } } return NVTEVT_CONSUME; } @@ -930,6 +934,7 @@ INT32 System_OnStrgAttach(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray) UINT32 result = paramArray[1]; #if HUNTING_CAMERA_MCU == ENABLE SF_MESSAGE_BUF_S stMessageBuf = {0}; + UINT32 strg_id = paramArray[0]; #endif #if defined(__FREERTOS) @@ -969,25 +974,25 @@ INT32 System_OnStrgAttach(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray) result = FileSys_FormatDisk(pStrgDevCur, TRUE); } #endif - -#if ( !defined(_EMBMEM_SPI_NOR_) && (FS_MULTI_STRG_FUNC == ENABLE)) - UINT32 stg_id = paramArray[0]; - - if (stg_id != 0) { // stg_id=1 is interal storage FAT - return NVTEVT_CONSUME; - } -#endif } + DBG_WRN("stg_id = %lu\n", paramArray[0]); + switch (result) { case FST_STA_OK: - printf("read only = %llu\n", FileSys_GetDiskInfoEx('A', FST_INFO_IS_READ_ONLY)); - if(FileSys_GetDiskInfoEx('A', FST_INFO_IS_READ_ONLY)){ - system("mount -t vfat /dev/mmcblk0 /mnt/sd/ -o remount,rw"); - } + + if(strg_id == 0){ + printf("read only = %llu\n", FileSys_GetDiskInfoEx('A', FST_INFO_IS_READ_ONLY)); + if(FileSys_GetDiskInfoEx('A', FST_INFO_IS_READ_ONLY)){ + system("mount -t vfat /dev/mmcblk0 /mnt/sd/ -o remount,rw"); + } + } + //#if (USE_DCF == ENABLE) // if (!UI_GetData(FL_IsCopyToCarding)) { - DCF_ScanObj(); + DBG_DUMP("DCF scan\n"); + DCF_ScanObjEx(0); /* sd card: strg_id = 0, dcf handle = 1 */ + DCF_ScanObjEx(1); // } //#endif //FileSys_GetDiskInfo(FST_INFO_DISK_SIZE); @@ -1087,16 +1092,20 @@ INT32 System_OnStrgAttach(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray) #endif break; case FST_STA_DISK_UNFORMAT: - System_SetState(SYS_STATE_FS, FS_UNFORMATTED); + if(strg_id == 0) + System_SetState(SYS_STATE_FS, FS_UNFORMATTED); break; case FST_STA_DISK_UNKNOWN_FORMAT: - System_SetState(SYS_STATE_FS, FS_UNKNOWN_FORMAT); + if(strg_id == 0) + System_SetState(SYS_STATE_FS, FS_UNKNOWN_FORMAT); break; case FST_STA_CARD_ERR: - System_SetState(SYS_STATE_FS, FS_DISK_ERROR); + if(strg_id == 0) + System_SetState(SYS_STATE_FS, FS_DISK_ERROR); break; default: - System_SetState(SYS_STATE_FS, FS_DISK_ERROR); + if(strg_id == 0) + System_SetState(SYS_STATE_FS, FS_DISK_ERROR); break; } diff --git a/code/application/source/cardv/SrcCode/System/sys_mempool.c b/code/application/source/cardv/SrcCode/System/sys_mempool.c index b70bbf66f..6550a3cc9 100755 --- a/code/application/source/cardv/SrcCode/System/sys_mempool.c +++ b/code/application/source/cardv/SrcCode/System/sys_mempool.c @@ -64,11 +64,18 @@ void mempool_init(void) } mempool_storage_nand = (UINT32)va; #endif + +#if (FS_MULTI_STRG_FUNC) + ret = vendor_common_mem_alloc_fixed_pool("filesys", &pa, (void **)&va, POOL_SIZE_FILESYS * 2, DDR_ID0); +#else ret = vendor_common_mem_alloc_fixed_pool("filesys", &pa, (void **)&va, POOL_SIZE_FILESYS, DDR_ID0); +#endif + if (ret != HD_OK) { return; } mempool_filesys = (UINT32)va; + ret = vendor_common_mem_alloc_fixed_pool("gxgfx_temp", &pa, (void **)&va, POOL_SIZE_GFX_TEMP, DDR_ID0); if (ret != HD_OK) { return; 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 3e402f9fa..6a4899e3f 100755 --- a/code/application/source/cardv/SrcCode/UIApp/Movie/UIAppMovie_Exe.c +++ b/code/application/source/cardv/SrcCode/UIApp/Movie/UIAppMovie_Exe.c @@ -1247,16 +1247,17 @@ static void MovieExe_FileNamingCB(MOVIE_CFG_REC_ID id, char *pFileName) #endif #elif USE_DCF + UINT32 dcf_path = 1; /* 0:emmc 1:sd */ UINT32 nextFolderID = 0, nextFileID = 0; - if (DCF_GetDBInfo(DCF_INFO_IS_9999)) { + if (DCF_GetDBInfoEx(dcf_path, DCF_INFO_IS_9999)) { DBG_ERR("Exceed max dcf file!\r\n"); pFileName[0] = '\0'; } else { - DCF_GetNextID(&nextFolderID,&nextFileID); - DCF_MakeObjPath(nextFolderID, nextFileID, DCF_FILE_TYPE_MP4, pFileName); - DCF_AddDBfile(pFileName); - DBG_DUMP("%s added to DCF\r\n", pFileName); + DCF_GetNextIDEx(dcf_path, &nextFolderID,&nextFileID); + DCF_MakeObjPathEx(dcf_path, nextFolderID, nextFileID, DCF_FILE_TYPE_MP4, pFileName); + DCF_AddDBfileEx(dcf_path, pFileName); + DBG_DUMP("%s added to DCF Path%lu\r\n", pFileName, dcf_path); #if HUNTING_CAMERA_MCU == ENABLE char tmp[NMC_TOTALFILEPATH_MAX_LEN] = {'\0'}; sprintf(tmp, "S%03d%04d.JPG", nextFolderID, nextFileID); @@ -1317,13 +1318,14 @@ static void MovieExe_RawEncodeFileNamingCB(MOVIE_CFG_REC_ID id, char *pFileName) #elif USE_DCF UINT32 nextFolderID = 0, nextFileID = 0; + UINT32 dcf_path = 1; - if (DCF_GetDBInfo(DCF_INFO_IS_9999)) { + if (DCF_GetDBInfoEx(dcf_path, DCF_INFO_IS_9999)) { DBG_ERR("Exceed max dcf file!\r\n"); pFileName[0] = '\0'; } else { - DCF_GetNextID(&nextFolderID,&nextFileID); - DCF_MakeObjPath(nextFolderID, nextFileID, DCF_FILE_TYPE_JPG, pFileName); + DCF_GetNextIDEx(dcf_path, &nextFolderID,&nextFileID); + DCF_MakeObjPathEx(dcf_path, nextFolderID, nextFileID, DCF_FILE_TYPE_JPG, pFileName); } #endif 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 524d5921e..4dd80a36a 100755 --- a/code/application/source/cardv/SrcCode/UIApp/Photo/UIAppPhoto_Exe.c +++ b/code/application/source/cardv/SrcCode/UIApp/Photo/UIAppPhoto_Exe.c @@ -6185,10 +6185,12 @@ INT32 PhotoExe_Preview_SliceEncode(VControl *pCtrl, UINT32 paramNum, UINT32 *par DBG_ERR("primary buffer overflow during combine jpg!\r\n"); } + UINT32 dcf_path = 1; /* 0:emmc , 1:sd */ + FstStatus.Status = ImageApp_Photo_WriteCB( dst_jpg_file.addr, dst_jpg_file.size, - HD_CODEC_TYPE_JPEG, 0); + HD_CODEC_TYPE_JPEG, dcf_path); { char* file_path = ImageApp_Photo_GetLastWriteFilePath(); @@ -6781,10 +6783,12 @@ INT32 PhotoExe_Preview_SliceEncode_CB3(void* user_data) extern INT32 ImageApp_Photo_WriteCB(UINT32 Addr, UINT32 Size, UINT32 Fmt, UINT32 uiPathId); IMG_CAP_FST_INFO FstStatus = {FST_STA_OK}; + UINT32 dcf_path = 1; /* 0:emmc 1:sd */ + FstStatus.Status = ImageApp_Photo_WriteCB( (UINT32)queue_ele_in->jpg_combined_addr, queue_ele_in->jpg_combined_size, - HD_CODEC_TYPE_JPEG, 0); + HD_CODEC_TYPE_JPEG, dcf_path); { char* file_path = ImageApp_Photo_GetLastWriteFilePath(); diff --git a/code/lib/source/ImageApp/Photo/libimageapp_photo.a b/code/lib/source/ImageApp/Photo/libimageapp_photo.a index 479f299bbe61cec68767dade9743789fc0d2945f..c290a77a912047422248b6eb28d6abf738505a5a 100644 GIT binary patch delta 3116 zcmcJRU2GKB6@bs3*|9eci3fHU)`@||#$FS^%kl+8P5*suC^{gG!00Y9(T%q_3uwIBVfjYb03QSBvNc(O(!i ztdy9;p+K>BSPSw+o!<2B7yIg1h`-k77ICHp1{I>9s)=*+nA_2$M##Y0jRuTux1bPYaRU_C3<0n=v6V|0S9{PB8xxH_>@5F;bB%D~Zllj^H z^p+E~j@X{hlIB#)@_&e(Mz;OxQ@L5g-5G~+)VvAjvrb>!1X!1M093SUNmEq1GoWyj z!Or{{fCrpPzX`)e-qje-W#o9S9E@ypb37+vpUiOFbVd!4MGcp7E^gkMnfaHb7+GkJ zo64eolYBFBf4OApV^d75B(S)`1!d0?}yhE8c%< zt7j0W*_Hp z&{6am**Cz*>zt+LJ*Lmh{PWImIHhv5e%rJtd}emi%&?>hm}Dk*XTJ2E&+_#tAKS`z zr9yQdVK}evi0PC2&Bb=6+E8~dhP|EDSNQqV5@#Wc|GmX;rJi7K@inJ^!gljxr`KuE zp?ik}upZkqZn+e;nX!;)A8Xy3O}>YsdY>>EnIvqHLc_Z&@{dH$ZMr% z8oL(XEm}Aj;mVE&(|`U$P>O8>fa`adUPM@!%XL8UXJRk70k}UL5~#)(e0e*O59Z zHXpOOo`@6Zu;qQk*8z^&@}SKTo7ZhRaeq*}2Aj<`H`v@mjG@Cmd=Vc8*iXcxbAY%S zH<2y(61U5SL;Gi8#PD;xb%Y+df6a2~XSd4IBY>j}6&TP-Tmdl4mSv)XOGCsC-t_x_X?D=R#3N{7{DXKzJP3)|Tkzk4N5Fa! z?0<}dwtc~b8$R7R;%00cf8#<6yT&hHXc1%|ufMof@cQ`67uPbKe|E8jt>&IfE$jr} zg3lEH?WLuxnrAQ7vI#DY`q?JF9H0C7kMY^b_u{jMzmLyBety(14OZa%`RNNTKI^i~ z&hYt{{n8oKMfsx3F22FiZ7)r7q6KYo+M@01K^oJUlK-ohU7~q|GSxqEux`2gYR_ zp?};jeSx|M633orZaz6)iOKm2l~4&#Z#gcTkXZv?IpG%`s!ZI!gU#i8P}9oesA;WC zY}~=>F%6Rw{<4uOfIf-;^>___{qidfcgh_tz4406@r{`Hw^x{#J~-L@xbt>J#8-Oe z4NcXs`=X_)>YZ%r7qLiDMWTm-#rL8fQq^LsT2cz>s#bjS>FVv;$GTH>wW-9aDJ7w_ zfL$1c3*K6wWFA_uxFpjxwYZGZwQ$qWxvT8mdKO8vmkVwogmn&V;%$fGL#<9B aF5gLYcnDLSm%fqtBc8cKQws#goUZ|Wewyw8 delta 3041 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 N2s6~4*(Kx0{6CogeRKc- delta 16583 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