Merge branch 'Branch_S550_Fast_Emmc' of 192.168.6.216:linux-em-group/s530-ntk into Branch_S550_Emmc

This commit is contained in:
xiehongyan 2024-01-09 10:37:36 +08:00
commit 916b6d5985
44 changed files with 595 additions and 144 deletions

View File

@ -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" <<EOF
d
n
p
1
w
EOF
}
if [ -d "/sys/class/block/mmcblk1p1" ]; then
if [ ! -b "/dev/mmcblk1p1" ]; then
mknod /dev/mmcblk1p1 b `cat /sys/class/block/mmcblk1p1/dev | sed "s/:/\ /g"`
fi
else
partition_func
if [ ! -b "/dev/mmcblk1p1" ]; then
mknod /dev/mmcblk1p1 b `cat /sys/class/block/mmcblk1p1/dev | sed "s/:/\ /g"`
fi
if [ -b "/dev/mmcblk1p1" ]; then
mkfs.vfat /dev/mmcblk1p1
#mount /dev/mmcblk1p1 /mnt/sd2
mount -t vfat -o rw,errors=continue /dev/mmcblk1p1 /mnt/sd2
#create DCIM for emmc
if [ ! -d "/mnt/sd2/DCIM" ]; then
mkdir -p /mnt/sd2/DCIM
fi
fi
fi
# Scan for without insert card
if [ ! -f /tmp/.nvt_mounts ]; then
/etc/mdev-script/autosd.sh
@ -88,5 +146,12 @@ if [ ! -f /tmp/.nvt_mounts ]; then
fi
# mount emmc node mmcblk1p1 to sd2
mount -t vfat -o rw,errors=continue /dev/mmcblk1p1 /mnt/sd2
if [ -b "/dev/mmcblk1p1" ]; then
mount -t vfat -o rw,errors=continue /dev/mmcblk1p1 /mnt/sd2
#create DCIM for emmc
if [ ! -d "/mnt/sd2/DCIM" ]; then
mkdir -p /mnt/sd2/DCIM
fi
fi

View File

@ -924,7 +924,7 @@
#define HUNTING_MCU_UART ENABLE
#define HUNTING_IR_LED_940 ENABLE
#define SF_EXIF_MN_BUF_SIZE 256
#define SF_BASE_VERSION "7MR5RCw4102"
#define SF_BASE_VERSION "7MR5RCwE101"
#define HW_S530 DISABLE
#define DCF_DIR_NAME "MEDIA" /* 100MEDIA */
#define DCF_FILE_NAME "SYGW" /* SYFW0001.JPG */
@ -984,7 +984,9 @@
#define SF_SD_LOG_INFO_FILENAME "/tmp/SD.txt"
#define SF_4G_MODE_TEST DISABLE
#define SF_AGEING_TEST DISABLE
#define SF_AGEING_EMMC_TEST DISABLE
#define SF_AGEING_SD_TEST DISABLE
#define SF_DCIM_PATH ":\\DCIM\\"
//////////////////////sf end///////////////////////////////

View File

@ -19,6 +19,10 @@
#include <sf_param_struct.h>
#include <FileSysTsk.h>
#include "sf_mcu.h"
#if (USE_DCF == ENABLE)
#include "DCF.h"
#endif
#if HUNTING_CAMERA_MCU == ENABLE
#include <sf_message_queue.h>
@ -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];
}
}

View File

@ -873,7 +873,7 @@ exit:
#endif
#endif
//System_PowerOffStart();
System_PowerOffStart();
}

View File

@ -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)

View File

@ -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

View File

@ -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
@ -997,6 +999,9 @@ UINT32 BackgroundFormatCard(void)
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)
#if USE_FILEDB

View File

@ -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);
}

View File

@ -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;

View File

@ -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())))

View File

@ -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);
@ -248,6 +248,7 @@ 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;

View File

@ -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

View File

@ -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);
@ -2037,6 +2040,8 @@ SINT32 sf_video_ftp_send(void)
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);
sf_4G_signal_level_get(sf_get_net_generation(),sf_get_cq_signal(),&csqlevel);
@ -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);

View File

@ -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
{

View File

@ -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:

View File

@ -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");

View File

@ -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

View File

@ -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();

View File

@ -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);

View File

@ -31,6 +31,7 @@
#include <net/if.h>
#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);
}
}

View File

@ -60,7 +60,11 @@ void sf_strg_dev_register(SINT32 dev_id, SINT32 mounted)
MMC_DEV_TYPE sf_get_strg_dev(void)
{
if(sf_strg_dev != NULL) {
return sf_strg_dev->dev_type;
}
else
return MMC_DEV_EMMC;
}
static SINT32 sd_file_Isexsit(SF_CHAR *fileName)
@ -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)
{

View File

@ -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
{

View File

@ -97,14 +97,19 @@ UINT8 sf_mcu_write_multi(UINT8 reg[], UINT8 data[], UINT32 num)
{
UINT32 i;
unsigned int pnum = num;
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]);
}
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]);
// }
return SUCCESS;
}
printf("%s:%d FAIL write err\n", __FUNCTION__, __LINE__);
return FAIL;
}

View File

@ -28,6 +28,7 @@
#include <sys/stat.h>
#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))
{
free(file_path);
return;
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')
{
MLOGE("no update file\n");
return NULL;
}
while(FwUpgradeExit == 0)

View File

@ -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;

Binary file not shown.

View File

@ -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

View File

@ -65,6 +65,8 @@
#include "sf_4g_lpa.h"
#include <sf_wifi_svr.h>
#include <sf_log.h>
#include <sf_storeMng.h>
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);
}

View File

@ -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
@ -805,6 +811,11 @@ void sf_mcu_dataready_ck(UINT8 startMode)
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");
}
}

View File

@ -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);

View File

@ -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////////////////////////////////

View File

@ -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

View File

@ -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();

View File

@ -126,7 +126,9 @@ static void card_insert_job2(void)
#if USE_RTOS_MMC_CHECK
SF_RtosStrgRegister(1, ret);
#endif
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;

View File

@ -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();
}

View File

@ -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);
@ -1278,6 +1302,23 @@ 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

View File

@ -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

View File

@ -2369,6 +2369,7 @@ 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);
@ -2376,8 +2377,10 @@ INT32 PhotoFast_SliceEncode_CB3(void* user_data)
#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);

View File

@ -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")

View File

@ -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);

View File

@ -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*/

View File

@ -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()))
{
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())){
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;

View File

@ -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)
{