diff --git a/code/application/source/cardv/SrcCode/System/SF_SysStrgMng.c b/code/application/source/cardv/SrcCode/System/SF_SysStrgMng.c index 4df6c7828..c90b0d2ee 100755 --- a/code/application/source/cardv/SrcCode/System/SF_SysStrgMng.c +++ b/code/application/source/cardv/SrcCode/System/SF_SysStrgMng.c @@ -26,7 +26,7 @@ typedef struct int mounted_status; }STRG_CB_PARAM; -static SF_ST_MMC_DEV *sf_mmc_dev[MMC_DEV_MAX_NUM] = {NULL}; +SF_ST_MMC_DEV *sf_mmc_dev[MMC_DEV_MAX_NUM] = {NULL}; void SF_StrgInit(void) { @@ -37,6 +37,7 @@ void SF_StrgInit(void) // 处理内存分配失败的情况 } sf_mmc_dev[i]->dcf_handle = -1; + sf_mmc_dev[i]->dev_type = MMC_DEV_NO; sf_mmc_dev[i]->node = MMC_DEV_NODE_STATE_NO; sf_mmc_dev[i]->moumted_state = MMC_DEV_MOUNT_STATE_NO; sf_mmc_dev[i]->space_state = MMC_DEV_SPACE_STATE_NO; @@ -79,11 +80,11 @@ static UINT32 SF_StrgSpaceCheckFull(MMC_DEV_TYPE mmc_dev) if(diskFree < 30) /* 30MB */ { - ret = TRUE; + ret = 1; } else { - ret = FALSE; + ret = 0; } MLOGD("[%s:%d]sd card diskFree=%lluM\n", __FUNCTION__, __LINE__, diskFree); return ret; @@ -200,7 +201,7 @@ void SF_StrgRegister(SF_MESSAGE_BUF_S *pMessageBuf) } } -SF_ST_MMC_DEV *SF_StrgCheckWorkableDev(void) +int SF_StrgCheckWorkableDev(void) { MMC_DEV_TYPE workable_dev = MMC_DEV_NO; MLOGD("sf mmc check workable dev start!!!\n"); @@ -302,19 +303,20 @@ SF_ST_MMC_DEV *SF_StrgCheckWorkableDev(void) } } } + MLOGD("sf mmc check workable dev end, dev_id = %d!!!\n", workable_dev); for(int i = 0; i < 2; i++) { + sf_mmc_dev[i]->dev_type = workable_dev; MLOGD("node:%d, mount:%d, space:%d, loop:%d\n", sf_mmc_dev[i]->node, sf_mmc_dev[i]->moumted_state, sf_mmc_dev[i]->space_state, sf_mmc_dev[i]->loop_state); } - if(workable_dev != MMC_DEV_NO) { MLOGD("dcf_handle = %d\n", sf_mmc_dev[workable_dev]->dcf_handle); - return sf_mmc_dev[workable_dev]; + return sf_mmc_dev[workable_dev]->dcf_handle; } else - return NULL; + return -1; } diff --git a/code/application/source/cardv/SrcCode/System/SF_SysStrgMng.h b/code/application/source/cardv/SrcCode/System/SF_SysStrgMng.h index 6ab9f6c96..c168818b7 100755 --- a/code/application/source/cardv/SrcCode/System/SF_SysStrgMng.h +++ b/code/application/source/cardv/SrcCode/System/SF_SysStrgMng.h @@ -70,6 +70,7 @@ typedef enum typedef struct { + MMC_DEV_TYPE dev_type; MMC_DEV_NODE_STATE node; MMC_DEV_MOUNT_STATE moumted_state; MMC_DEV_SPACE_STATE space_state; @@ -82,7 +83,7 @@ void SF_StrgInit(void); void SF_StrgUnInit(void); void SF_StrgSetDcfHandle(UINT32 strg_id, UINT32 handle); void SF_StrgRegister(SF_MESSAGE_BUF_S *pMessageBuf); -SF_ST_MMC_DEV *SF_StrgCheckWorkableDev(void); +int SF_StrgCheckWorkableDev(void); #endif //_SF_SYS_STRG_MNG_H_ diff --git a/code/application/source/cardv/SrcCode/System/SysStrg_Exe.c b/code/application/source/cardv/SrcCode/System/SysStrg_Exe.c index 22418d3ce..d434740b7 100644 --- a/code/application/source/cardv/SrcCode/System/SysStrg_Exe.c +++ b/code/application/source/cardv/SrcCode/System/SysStrg_Exe.c @@ -760,14 +760,14 @@ INT32 System_Set_Storage_Act_Drive(char drive) DCF_HANDLE System_Get_DCF_Handle(void) { - SF_ST_MMC_DEV *mmc_dev = SF_StrgCheckWorkableDev(); - if(mmc_dev->dcf_handle < 0) + int dcf_handle = SF_StrgCheckWorkableDev(); + if(dcf_handle < 0) { DBG_ERR("No MMC_Dev Can use!\n"); return -1; } - DBG_WRN("DCF_GET_HANDLE, %d\n", mmc_dev->dcf_handle); - return mmc_dev->dcf_handle; + DBG_WRN("DCF_GET_HANDLE, %d\n", dcf_handle); + return dcf_handle; } CHAR System_Get_DCF_Disk_Drive(DCF_HANDLE handle) diff --git a/loader/Project/Model/tmp_awk1 b/loader/Project/Model/tmp_awk1 deleted file mode 100644 index e69de29bb..000000000 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 22dfe1b7a..fe543acaa 100755 --- a/rtos/code/application/source/cardv/SrcCode/PrjCfg_HUNTING_S550.h +++ b/rtos/code/application/source/cardv/SrcCode/PrjCfg_HUNTING_S550.h @@ -948,8 +948,8 @@ #define SF_BASE_VERSION "7MR5RCwDC05" #define DCF_DIR_NAME "MEDIA" /* 100MEDIA */ #define DCF_FILE_NAME "SYGW" /* SYFW0001.JPG */ -#define PHOTO_THUMB_PATH "A:\\THUMB\\" -#define MOVIE_THUMB_PATH "A:\\THUMB\\" +#define PHOTO_THUMB_PATH ":\\THUMB\\" +#define MOVIE_THUMB_PATH ":\\THUMB\\" #define SF_SEND_LIST_DIR "/mnt/sd/THUMB" #define SF_THUMB_SEND_LIST PHOTO_THUMB_PATH"send.list" #define SF_THUMB_SEND_AUTO PHOTO_THUMB_PATH"auto.list" 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 e0472d576..d5ca7334d 100644 --- a/rtos/code/application/source/cardv/SrcCode/UIApp/MovieFast/MovieFast.c +++ b/rtos/code/application/source/cardv/SrcCode/UIApp/MovieFast/MovieFast.c @@ -866,7 +866,7 @@ static DCF_HANDLE MovieFast_Get_DCF_Handle(void) //#else //return g_dcf_hdl; //#endif - SF_RTOS_ST_MMC_DEV *mmc_dev = SF_RtosStrgCheckWorkableDev(); + SF_RTOS_ST_MMC_DEV *mmc_dev = SF_RtosStrgCheckWorkableDev(); if(mmc_dev->dcf_handle < 0) { DBG_ERR("No MMC_Dev Can use!\n"); @@ -1127,9 +1127,24 @@ static void MovieFast_UserEventCb(UINT32 id, MOVIE_USER_CB_EVENT event_id, UINT3 char tmp[256] = {'\0'}; - #if HUNTING_CAMERA_MCU == ENABLE - snprintf(tmp, sizeof(tmp), "%s%s", MOVIE_THUMB_PATH, thumb_current_path); /* DCF 8.3 naming rule */ + SF_RTOS_ST_MMC_DEV *mmc_dev = SF_RtosStrgCheckWorkableDev(); + if(mmc_dev->dcf_handle < 0) + { + DBG_ERR("No MMC_Dev Can use!\n"); + } + else + { + if(mmc_dev->dev_type == MMC_DEV_SD) + { + snprintf(tmp, sizeof(tmp), "%c%s%s", 'A', MOVIE_THUMB_PATH, thumb_current_path); /* DCF 8.3 naming rule */ + } + else + { + snprintf(tmp, sizeof(tmp), "%c%s%s", 'B', MOVIE_THUMB_PATH, thumb_current_path); /* DCF 8.3 naming rule */ + } + } + #else snprintf(tmp, sizeof(tmp), "%s%s", MOVIE_THUMB_PATH, (thumb_current_path + (length - 12))); /* DCF 8.3 naming rule */ snprintf(tmp + strlen(tmp) - 3, sizeof(tmp), "%s", "JPG"); 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 149595b58..486d71eeb 100644 --- a/rtos/code/application/source/cardv/SrcCode/UIApp/PhotoFast/PhotoFast.c +++ b/rtos/code/application/source/cardv/SrcCode/UIApp/PhotoFast/PhotoFast.c @@ -894,7 +894,7 @@ DCF_HANDLE PhotoFast_Get_DCF_Handle() //#else //return g_dcf_hdl; //#endif - SF_RTOS_ST_MMC_DEV *mmc_dev = SF_RtosStrgCheckWorkableDev(); + SF_RTOS_ST_MMC_DEV *mmc_dev = SF_RtosStrgCheckWorkableDev(); if(mmc_dev->dcf_handle < 0) { DBG_ERR("No MMC_Dev Can use!\n"); 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 7c1cb9984..c9e94f248 100644 --- a/rtos/code/application/source/cardv/SrcCode/UIApp/PhotoFast/PhotoFastSliceEncode.c +++ b/rtos/code/application/source/cardv/SrcCode/UIApp/PhotoFast/PhotoFastSliceEncode.c @@ -21,6 +21,7 @@ #include "sys_usrmem.h" #if HUNTING_CAMERA_MCU == ENABLE #include +#include "sf_sd_common.h" #endif #define VDO_YUV_BUFSIZE(w, h, pxlfmt) ALIGN_CEIL_4(((w) * (h) * HD_VIDEO_PXLFMT_BPP(pxlfmt)) / 8) @@ -2384,7 +2385,22 @@ INT32 PhotoFast_SliceEncode_CB3(void* user_data) #endif #if HUNTING_CAMERA_MCU == ENABLE - snprintf(tmp, sizeof(tmp), "%s%s", PHOTO_THUMB_PATH, file_path); /* DCF 8.3 naming rule */ + SF_RTOS_ST_MMC_DEV *mmc_dev = SF_RtosStrgCheckWorkableDev(); + if(mmc_dev->dcf_handle < 0) + { + DBG_ERR("No MMC_Dev Can use!\n"); + } + else + { + if(mmc_dev->dev_type == MMC_DEV_SD) + { + snprintf(tmp, sizeof(tmp), "%c%s%s", 'A', PHOTO_THUMB_PATH, file_path); /* DCF 8.3 naming rule */ + } + else + { + snprintf(tmp, sizeof(tmp), "%c%s%s", 'B', PHOTO_THUMB_PATH, file_path); /* DCF 8.3 naming rule */ + } + } #else UINT32 length = strlen(file_path); snprintf(tmp, sizeof(tmp), "%s%s", PHOTO_THUMB_PATH, file_path + length - 12); /* DCF 8.3 naming rule */ diff --git a/rtos/code/driver/na51089/include/sf_sd_common.h b/rtos/code/driver/na51089/include/sf_sd_common.h index 89838456f..2f267f451 100755 --- a/rtos/code/driver/na51089/include/sf_sd_common.h +++ b/rtos/code/driver/na51089/include/sf_sd_common.h @@ -59,10 +59,9 @@ typedef enum typedef struct { - //MMC_DEV_NODE_STATE node; + MMC_DEV_TYPE dev_type; MMC_DEV_MOUNT_STATE moumted_state; MMC_DEV_SPACE_STATE space_state; - //MMC_DEV_LOOP_STATE loop_state; int dcf_handle; }SF_RTOS_ST_MMC_DEV; 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 43b8c7263..9d04409c7 100755 --- a/rtos/code/driver/na51089/source/mcu/sf_sd_common.c +++ b/rtos/code/driver/na51089/source/mcu/sf_sd_common.c @@ -49,7 +49,7 @@ static BOOL IsCardFull = FALSE; SF_CALLBACK_SD_CMD g_fpSd_Exist_CB = NULL; extern BOOL DrvCARD_DetStrgCard(void); -static SF_RTOS_ST_MMC_DEV *sf_mmc_dev[MMC_DEV_MAX_NUM] = {NULL}; +SF_RTOS_ST_MMC_DEV *sf_rtos_mmc_dev[MMC_DEV_MAX_NUM] = {NULL}; BOOL sf_is_card_full(void) { @@ -117,15 +117,16 @@ void SF_RtosStrgInit(void) { for(int i = 0; i < MMC_DEV_MAX_NUM; i++) { - sf_mmc_dev[i] = (SF_RTOS_ST_MMC_DEV *)malloc(sizeof(SF_RTOS_ST_MMC_DEV)); - if(sf_mmc_dev[i] == NULL) { + sf_rtos_mmc_dev[i] = (SF_RTOS_ST_MMC_DEV *)malloc(sizeof(SF_RTOS_ST_MMC_DEV)); + if(sf_rtos_mmc_dev[i] == NULL) { // 处理内存分配失败的情况 } - sf_mmc_dev[i]->dcf_handle = -1; - //sf_mmc_dev[i]->node = MMC_DEV_NODE_STATE_NO; - sf_mmc_dev[i]->moumted_state = MMC_DEV_MOUNT_STATE_NO; - sf_mmc_dev[i]->space_state = MMC_DEV_SPACE_STATE_NO; - //sf_mmc_dev[i]->loop_state = MMC_DEV_LOOP_STATE_NO; + sf_rtos_mmc_dev[i]->dcf_handle = -1; + sf_rtos_mmc_dev[i]->dev_type = MMC_DEV_NO; + //sf_rtos_mmc_dev[i]->node = MMC_DEV_NODE_STATE_NO; + sf_rtos_mmc_dev[i]->moumted_state = MMC_DEV_MOUNT_STATE_NO; + sf_rtos_mmc_dev[i]->space_state = MMC_DEV_SPACE_STATE_NO; + //sf_rtos_mmc_dev[i]->loop_state = MMC_DEV_LOOP_STATE_NO; } DBG_WRN("SF_RtosStrgInit!\n"); } @@ -134,15 +135,15 @@ void SF_RtosStrgUnInit(void) { for(int i = 0; i < MMC_DEV_MAX_NUM; i++) { - if(sf_mmc_dev[i] != NULL) { - free(sf_mmc_dev[i]); - sf_mmc_dev[i] = NULL; + if(sf_rtos_mmc_dev[i] != NULL) { + free(sf_rtos_mmc_dev[i]); + sf_rtos_mmc_dev[i] = NULL; } } DBG_WRN("SF_RtosStrgUnInit!\n"); } -static UINT32 sf_mmc_dev_space_check_full(MMC_DEV_TYPE mmc_dev) +static UINT32 sf_rtos_mmc_dev_space_check_full(MMC_DEV_TYPE mmc_dev) { UINT64 diskFree = 0; UINT32 ret = 0; @@ -167,14 +168,14 @@ static UINT32 sf_mmc_dev_space_check_full(MMC_DEV_TYPE mmc_dev) if(diskFree < 30) /* 30MB */ { - ret = TRUE; + ret = 1; IsCardFull = TRUE; } else { - ret = FALSE; + ret = 0; } - DBG_WRN("[%s:%d]sd card diskFree=%lluM\n", __FUNCTION__, __LINE__, diskFree); + DBG_WRN("[%d]sd card diskFree=%lluM, ret = %d\n", __LINE__, diskFree, ret); return ret; } @@ -182,28 +183,29 @@ int SF_RtosStrgRegister(int devid, int mounted_state) { if(mounted_state == FST_STA_OK) { - sf_mmc_dev[devid]->moumted_state = MMC_DEV_MOUNT_STATE_MOUNTED; + sf_rtos_mmc_dev[devid]->moumted_state = MMC_DEV_MOUNT_STATE_MOUNTED; } else { - sf_mmc_dev[devid]->moumted_state = MMC_DEV_MOUNT_STATE_UNMOUNTED; + sf_rtos_mmc_dev[devid]->moumted_state = MMC_DEV_MOUNT_STATE_UNMOUNTED; } - int isfull = sf_mmc_dev_space_check_full(devid); - if(isfull) + UINT32 isfull = sf_rtos_mmc_dev_space_check_full(devid); + if(isfull == 1) { - sf_mmc_dev[devid]->space_state = MMC_DEV_SPACE_STATE_ENOUGH; + sf_rtos_mmc_dev[devid]->space_state = MMC_DEV_SPACE_STATE_NO_ENOUGH; } - else{ - sf_mmc_dev[devid]->space_state = MMC_DEV_SPACE_STATE_NO_ENOUGH; + else if(isfull == 0) + { + sf_rtos_mmc_dev[devid]->space_state = MMC_DEV_SPACE_STATE_ENOUGH; } - DBG_WRN("devid = %d, state = %d\n", devid, mounted_state); + DBG_WRN("11devid = %d, state = %d\n", devid, mounted_state); return 0; } void SF_RtosStrgSetDcfHandle(UINT32 strg_id, UINT32 handle) { - sf_mmc_dev[strg_id]->dcf_handle = handle; + sf_rtos_mmc_dev[strg_id]->dcf_handle = handle; DBG_WRN("strg_id = %d, handle = %d\n", strg_id, handle); } @@ -212,34 +214,34 @@ SF_RTOS_ST_MMC_DEV *SF_RtosStrgCheckWorkableDev(void) { MMC_DEV_TYPE workable_dev = MMC_DEV_NO; - if((sf_mmc_dev[MMC_DEV_SD]->moumted_state == MMC_DEV_MOUNT_STATE_UNMOUNTED) && - (sf_mmc_dev[MMC_DEV_EMMC]->moumted_state == MMC_DEV_MOUNT_STATE_UNMOUNTED)) + if((sf_rtos_mmc_dev[MMC_DEV_SD]->moumted_state == MMC_DEV_MOUNT_STATE_UNMOUNTED) && + (sf_rtos_mmc_dev[MMC_DEV_EMMC]->moumted_state == MMC_DEV_MOUNT_STATE_UNMOUNTED)) { workable_dev = MMC_DEV_NO; } - else if(sf_mmc_dev[MMC_DEV_SD]->moumted_state == MMC_DEV_MOUNT_STATE_UNMOUNTED) + else if(sf_rtos_mmc_dev[MMC_DEV_SD]->moumted_state == MMC_DEV_MOUNT_STATE_UNMOUNTED) { - if(sf_mmc_dev[MMC_DEV_EMMC]->space_state == MMC_DEV_SPACE_STATE_ENOUGH) + if(sf_rtos_mmc_dev[MMC_DEV_EMMC]->space_state == MMC_DEV_SPACE_STATE_ENOUGH) { workable_dev = MMC_DEV_EMMC; } else { - //if(sf_mmc_dev[MMC_DEV_SD]->loop_state == MMC_DEV_LOOP_STATE_ON) + //if(sf_rtos_mmc_dev[MMC_DEV_SD]->loop_state == MMC_DEV_LOOP_STATE_ON) { //workable_dev = MMC_DEV_EMMC; } } } - else if(sf_mmc_dev[MMC_DEV_EMMC]->moumted_state == MMC_DEV_MOUNT_STATE_UNMOUNTED) + else if(sf_rtos_mmc_dev[MMC_DEV_EMMC]->moumted_state == MMC_DEV_MOUNT_STATE_UNMOUNTED) { - if(sf_mmc_dev[MMC_DEV_SD]->space_state == MMC_DEV_SPACE_STATE_ENOUGH) + if(sf_rtos_mmc_dev[MMC_DEV_SD]->space_state == MMC_DEV_SPACE_STATE_ENOUGH) { workable_dev = MMC_DEV_SD; } else { - //if(sf_mmc_dev[MMC_DEV_SD]->loop_state == MMC_DEV_LOOP_STATE_ON) + //if(sf_rtos_mmc_dev[MMC_DEV_SD]->loop_state == MMC_DEV_LOOP_STATE_ON) { //workable_dev = MMC_DEV_SD; } @@ -247,42 +249,45 @@ SF_RTOS_ST_MMC_DEV *SF_RtosStrgCheckWorkableDev(void) } else { - if(sf_mmc_dev[MMC_DEV_EMMC]->space_state == MMC_DEV_SPACE_STATE_ENOUGH && - sf_mmc_dev[MMC_DEV_SD]->space_state == MMC_DEV_SPACE_STATE_ENOUGH) + if(sf_rtos_mmc_dev[MMC_DEV_EMMC]->space_state == MMC_DEV_SPACE_STATE_ENOUGH && + sf_rtos_mmc_dev[MMC_DEV_SD]->space_state == MMC_DEV_SPACE_STATE_ENOUGH) { workable_dev = MMC_DEV_EMMC; } - else if(sf_mmc_dev[MMC_DEV_EMMC]->space_state == MMC_DEV_SPACE_STATE_ENOUGH) + else if(sf_rtos_mmc_dev[MMC_DEV_EMMC]->space_state == MMC_DEV_SPACE_STATE_ENOUGH) { workable_dev = MMC_DEV_EMMC; } - else if(sf_mmc_dev[MMC_DEV_SD]->space_state == MMC_DEV_SPACE_STATE_ENOUGH) + else if(sf_rtos_mmc_dev[MMC_DEV_SD]->space_state == MMC_DEV_SPACE_STATE_ENOUGH) { workable_dev = MMC_DEV_SD; } else { - //if(sf_mmc_dev[MMC_DEV_SD]->loop_state == MMC_DEV_LOOP_STATE_ON) + //if(sf_rtos_mmc_dev[MMC_DEV_SD]->loop_state == MMC_DEV_LOOP_STATE_ON) { //workable_dev = MMC_DEV_EMMC; } } } + DBG_WRN("dev_id = %d!!!\n", workable_dev); for(int i = 0; i < 2; i++) { - DBG_WRN("mount:%d, space:%d\n", - sf_mmc_dev[i]->moumted_state, sf_mmc_dev[i]->space_state); + sf_rtos_mmc_dev[i]->dev_type = workable_dev; + DBG_WRN("mount:%d, space:%d\n", sf_rtos_mmc_dev[i]->moumted_state, + sf_rtos_mmc_dev[i]->space_state); } - - if(workable_dev != MMC_DEV_NO) + if(workable_dev == MMC_DEV_NO) { - DBG_WRN("dcf_handle = %d\n", sf_mmc_dev[workable_dev]->dcf_handle); - return sf_mmc_dev[workable_dev]; - } - else return NULL; + } + else + { + return sf_rtos_mmc_dev[workable_dev]; + } + }