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" < #include #include "sf_mcu.h" +#if (USE_DCF == ENABLE) +#include "DCF.h" +#endif + #if HUNTING_CAMERA_MCU == ENABLE #include @@ -38,7 +42,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}; @@ -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/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(); } 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/cardv/SrcCode/System/SysStrg_Exe.c b/code/application/source/cardv/SrcCode/System/SysStrg_Exe.c index 1291047c4..01b197a99 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 } @@ -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) @@ -983,9 +989,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/Background/UIBackgroundObj.c b/code/application/source/cardv/SrcCode/UIApp/Background/UIBackgroundObj.c index 3509ddd9a..3a00b135d 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 @@ -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/Movie/UIAppMovie_Exe.c b/code/application/source/cardv/SrcCode/UIApp/Movie/UIAppMovie_Exe.c index 67d0b568f..d42ea7127 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,13 @@ 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'; + 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++; if (g_FileSerialNum > FILE_SN_MAX) { @@ -1256,20 +1259,21 @@ 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)) { DBG_ERR("Exceed max dcf file!\r\n"); pFileName[0] = '\0'; } else { + 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%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); } @@ -1296,6 +1300,10 @@ 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"; + 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}; @@ -1327,12 +1335,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_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/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/UIAppPhoto_Exe.c b/code/application/source/cardv/SrcCode/UIApp/Photo/UIAppPhoto_Exe.c index c4947f9c4..4d9a10e82 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,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%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, 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); @@ -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/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/4gMng/sf_ftp.c b/code/application/source/sf_app/code/source/4gMng/sf_ftp.c index caa751cc5..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 @@ -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 *dcf_file = sf_get_strg_dev() == MMC_DEV_EMMC ? "SYBX" : "SYEX"; 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%04d.MP4", strg_path, SF_DCIM_DIR, dirKey, dcf_file, 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..c541e865f 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 *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); 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%04d.JPG", strg_path, SF_DCIM_DIR, dirKey, dcf_file, 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 *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(); @@ -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%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); @@ -2490,7 +2493,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 +2531,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/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_service.c b/code/application/source/sf_app/code/source/app/sf_service.c index 0604af114..db156002f 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; } } @@ -885,6 +888,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 +898,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/app/sf_system.c b/code/application/source/sf_app/code/source/app/sf_system.c index b9bd02196..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 @@ -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())) { @@ -1623,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"); @@ -1634,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/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/sf_blue/src/sf_blue_hal.c b/code/application/source/sf_app/code/source/sf_blue/src/sf_blue_hal.c index c65baae4b..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 @@ -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,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"); @@ -150,16 +153,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(1 == i) + { + sf_load_bt_ko(); + } + else if(39 == i) { MLOGE("blue setup fall!!\n"); return NULL; } + usleep(500 * 1000); } } 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..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 @@ -60,7 +60,11 @@ void sf_strg_dev_register(SINT32 dev_id, SINT32 mounted) MMC_DEV_TYPE sf_get_strg_dev(void) { - return sf_strg_dev->dev_type; + if(sf_strg_dev != NULL) { + return sf_strg_dev->dev_type; + } + else + return MMC_DEV_EMMC; } static SINT32 sd_file_Isexsit(SF_CHAR *fileName) @@ -290,7 +294,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); @@ -353,7 +357,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) { @@ -878,12 +882,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 *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%04d.%s",cPathTmp, DCF_FILE_NAME, 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) { @@ -893,7 +899,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%04d.%s", cPathTmp, dcf_file, nFileKey, SF_DCF_EXT_MOV); if(access(cFileTmp,R_OK) == 0) { MLOGD("Will Delete File Name:%s\n", cFileTmp); @@ -919,7 +925,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 +933,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/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; } 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) 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..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 @@ -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 * **************************************************************************/ @@ -431,6 +431,9 @@ S8 *appThumbKeyToName(thumbSize_t imgSize, thumbType_t fileType, UINT16 dirKey, return SF_FAILURE; } + 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(imgSize == THUMB_320x240) { sprintf((char *)tempPath, "%s%s/small", strg_path, THUMB_PATH); @@ -472,7 +475,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; } @@ -701,7 +704,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); @@ -1141,6 +1144,8 @@ SINT32 sf_svr_packet_proc(SINT32 fd, UINT8 *pAppData, UINT16 dataLen) return SF_FAILURE; } + 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); @@ -1359,7 +1364,7 @@ SINT32 sf_svr_packet_proc(SINT32 fd, UINT8 *pAppData, UINT16 dataLen) strg_path, tempbuf2, DCF_DIR_NAME, - DCF_FILE_NAME, + dcf_file, tempbuf+4, (tempbuf[3] == '0' ? ".JPG" : (tempbuf[3] == '1' ? ".MP4" : ".MP4"))); } @@ -1900,7 +1905,7 @@ SINT32 sf_svr_packet_proc(SINT32 fd, UINT8 *pAppData, UINT16 dataLen) strg_path, tempbuf2, DCF_DIR_NAME, - DCF_FILE_NAME, + dcf_file, 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%04d.JPG", dirKey, dcf_file, fileKey); else - sprintf((char *)fileName,"./%3dMEDIA/%s%04d.MP4", dirKey, DCF_FILE_NAME, fileKey); + sprintf((char *)fileName,"./%3dMEDIA/%s%04d.MP4", dirKey, dcf_file, fileKey); ret = remove((char *)fileName); } @@ -2781,6 +2786,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; diff --git a/code/lib/source/FsLinux/libFsLinux.a b/code/lib/source/FsLinux/libFsLinux.a index 913e68df2..06803cd41 100644 Binary files a/code/lib/source/FsLinux/libFsLinux.a and b/code/lib/source/FsLinux/libFsLinux.a differ diff --git a/code/lib/source/FsLinux/libFsLinux.so b/code/lib/source/FsLinux/libFsLinux.so index 224f655ec..711877b73 100755 Binary files a/code/lib/source/FsLinux/libFsLinux.so and b/code/lib/source/FsLinux/libFsLinux.so differ 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 64812fc8e..1ac0b1e18 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; @@ -1848,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; @@ -2786,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) { @@ -2913,6 +2916,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 +2945,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); @@ -3539,3 +3545,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 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 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/application/source/cardv/SrcCode/PrjCfg_HUNTING_S550.h b/rtos/code/application/source/cardv/SrcCode/PrjCfg_HUNTING_S550.h index ead48e83a..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\\" @@ -988,7 +988,9 @@ #endif #define SF_NO_SD_SEND ENABLE #define SF_4G_MODE_TEST DISABLE - +#define SF_AGEING_TEST DISABLE +#define SF_AGEING_EMMC_TEST DISABLE +#define SF_AGEING_SD_TEST DISABLE ////////////////////sf end//////////////////////////////// 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..500f1d61e 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 } @@ -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 e5c4ee958..6d277b0a8 100755 --- a/rtos/code/application/source/cardv/SrcCode/System/sys_filesys.c +++ b/rtos/code/application/source/cardv/SrcCode/System/sys_filesys.c @@ -126,7 +126,9 @@ static void card_insert_job2(void) #if USE_RTOS_MMC_CHECK SF_RtosStrgRegister(1, ret); #endif - fastboot_set_done(BOOT_INIT_FILESYSOK_2); + sf_check_emmc_full(); + fastboot_set_done(BOOT_INIT_FILESYSOK_2); + printf("filesys2_init e\r\n"); #endif @@ -265,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; @@ -287,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 6becb00d9..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 @@ -868,7 +869,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) @@ -939,12 +945,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) { @@ -982,12 +1004,14 @@ 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); #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); } @@ -1077,7 +1101,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 +1118,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 +1129,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); @@ -1277,6 +1301,23 @@ int MovieFast_GetWaterLogoSource(const UINT32 recWidth,WATERLOGO_BUFFER *waterSr static void MovieFast_FileNaming_Init(void) { static UINT8 is_init = 0; + +#if 0//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; + } + //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 if(is_init == 1) return; @@ -1289,7 +1330,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, DCF_FILE_NAME); } THREAD_RETTYPE MovieFast_InitFileNamingThread(void *arg) @@ -1358,7 +1399,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..f0b14aaa0 100644 --- a/rtos/code/application/source/cardv/SrcCode/UIApp/PhotoFast/PhotoFast.c +++ b/rtos/code/application/source/cardv/SrcCode/UIApp/PhotoFast/PhotoFast.c @@ -727,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, DCF_FILE_NAME); + //DCF_SetFileFreeChars(DCF_FILE_TYPE_ANYFORMAT, DCF_FILE_NAME); } INT32 PhotoFast_FileNaming_Open(void) @@ -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) @@ -1014,6 +1020,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"); @@ -1051,6 +1071,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); @@ -1064,13 +1086,14 @@ 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); - 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 +2033,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); } @@ -2156,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/SrcCode/UIApp/PhotoFast/PhotoFastSliceEncode.c b/rtos/code/application/source/cardv/SrcCode/UIApp/PhotoFast/PhotoFastSliceEncode.c index 7815d000b..1432e9354 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) @@ -2419,7 +2422,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); 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") 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_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*/ 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; 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) {