From 22f50803393aa28bb29e7c7c44be7e72fa9460e9 Mon Sep 17 00:00:00 2001 From: payton Date: Wed, 13 Dec 2023 19:39:43 +0800 Subject: [PATCH 01/20] =?UTF-8?q?1.=E4=BF=AE=E5=A4=8D=E8=93=9D=E7=89=99?= =?UTF-8?q?=E8=BF=9E=E6=8E=A5=E5=8F=AF=E8=83=BD=E4=B8=8D=E8=B7=B3=E8=BD=AC?= =?UTF-8?q?=E9=A2=84=E8=A7=88=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../UIFlowMenuCommonItemEventCallback.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIFlowLVGL/UIFlowMenuCommonItem/UIFlowMenuCommonItemEventCallback.c b/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIFlowLVGL/UIFlowMenuCommonItem/UIFlowMenuCommonItemEventCallback.c index 4da122afa..ff42b8a7d 100755 --- a/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIFlowLVGL/UIFlowMenuCommonItem/UIFlowMenuCommonItemEventCallback.c +++ b/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIFlowLVGL/UIFlowMenuCommonItem/UIFlowMenuCommonItemEventCallback.c @@ -1034,6 +1034,9 @@ static void UIFlowMenuCommonItem_ScrClose(lv_obj_t* obj) Save_MenuInfo(); LV_MenuItem_OnClose(obj); gMenuLuck = MENU_CLOSED; + #if HUNTING_CAMERA_MCU == ENABLE + sf_set_menu_open(FALSE); + #endif } @@ -1059,9 +1062,6 @@ static void UIFlowMenuCommonItem_ChildScrClose(lv_obj_t* obj,const LV_USER_EVENT } gMenuLuck = MENU_UNLUCK; - #if HUNTING_CAMERA_MCU == ENABLE - sf_set_menu_open(FALSE); - #endif } From c4fb81c19176e5405b6926cb1656dbb15fb151b2 Mon Sep 17 00:00:00 2001 From: payton Date: Fri, 15 Dec 2023 16:28:21 +0800 Subject: [PATCH 02/20] =?UTF-8?q?1.=E5=8D=87=E7=BA=A7=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SrcCode/UIWnd/LVGL_SPORTCAM/UIInfo/UIInfo.c | 16 ++++++++++++---- .../code/source/systemMng/sf_commu_mcu_reg.c | 2 ++ 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIInfo/UIInfo.c b/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIInfo/UIInfo.c index ddff14480..59f340237 100755 --- a/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIInfo/UIInfo.c +++ b/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIInfo/UIInfo.c @@ -505,6 +505,10 @@ void Load_MenuInfo(void) #if HUNTING_CAMERA_MCU == ENABLE if(sf_get_ui_para_flag()) { + if(!sf_is_usb_flag()) + { + sf_mcu_reg_set(SF_MCU_SOFT_UPDATE, 0); + } memcpy(&origInfo, ¤tInfo, sizeof(currentInfo)); memcpy(&origInfo_check, ¤tInfo, sizeof(currentInfo)); return; @@ -515,10 +519,14 @@ void Load_MenuInfo(void) #if HUNTING_CAMERA_MCU == ENABLE sf_power_on_para_check_init(); - if(sf_is_usb_flag()) - { - Save_MenuInfo(); - } + if(sf_is_usb_flag()) + { + Save_MenuInfo(); + } + else + { + sf_mcu_reg_set(SF_MCU_SOFT_UPDATE, 0); + } #endif #if HUNTING_CAMERA_MCU == ENABLE //origInfo = currentInfo; 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 c35a971dc..76b4dc56d 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 @@ -882,6 +882,8 @@ unsigned char sf_mcu_reg_set(MCUParam_t attrId, unsigned char val) if(val == 1) { mcuData[i++] = (puiPara->CamArmDiable) << 6 | isUsb << 2 | isCardFull << 1 | isCard << 0 | 0x08; + mcuReg[i] = WDT_TIME; + mcuData[i++] = 16;/*16 min*/ } else { From 86f848136f0d50f8f5c34b12cb77985d455e3c81 Mon Sep 17 00:00:00 2001 From: payton Date: Thu, 14 Dec 2023 10:05:59 +0800 Subject: [PATCH 03/20] =?UTF-8?q?1.iq=20test=E9=BB=98=E8=AE=A4=E5=8F=82?= =?UTF-8?q?=E6=95=B0=E6=9B=B4=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIInfo/UICfgDefault.h | 2 +- .../cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIInfo/UICfgDefault.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIInfo/UICfgDefault.h b/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIInfo/UICfgDefault.h index 47eecf343..b487b056f 100755 --- a/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIInfo/UICfgDefault.h +++ b/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIInfo/UICfgDefault.h @@ -69,7 +69,7 @@ #if SF_HW_TEST == ENABLE #define DEFAULT_MOVIE_SIZE MOVIE_SIZE_FRONT_1280x720P30 #else - #define DEFAULT_MOVIE_SIZE MOVIE_SIZE_CLONE_1920x1080P30_1920x1080P25 + #define DEFAULT_MOVIE_SIZE MOVIE_SIZE_FRONT_1920x1080P30 #endif #endif #else diff --git a/rtos/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIInfo/UICfgDefault.h b/rtos/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIInfo/UICfgDefault.h index 70e66f904..59f1a5eec 100644 --- a/rtos/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIInfo/UICfgDefault.h +++ b/rtos/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIInfo/UICfgDefault.h @@ -69,7 +69,7 @@ #if SF_HW_TEST == ENABLE #define DEFAULT_MOVIE_SIZE MOVIE_SIZE_FRONT_1280x720P30 #else - #define DEFAULT_MOVIE_SIZE MOVIE_SIZE_CLONE_1920x1080P30_1920x1080P25 + #define DEFAULT_MOVIE_SIZE MOVIE_SIZE_FRONT_1920x1080P30 #endif #endif #else From c89b1d3eae5ab991f701b04ded8af72603055a76 Mon Sep 17 00:00:00 2001 From: payton Date: Thu, 14 Dec 2023 10:06:27 +0800 Subject: [PATCH 04/20] =?UTF-8?q?1.=E8=BF=87=E6=9B=9D=E9=97=AE=E9=A2=98?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../application/source/cardv/SrcCode/FastFlow/flow_preview.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rtos/code/application/source/cardv/SrcCode/FastFlow/flow_preview.c b/rtos/code/application/source/cardv/SrcCode/FastFlow/flow_preview.c index 6c118481d..ae18062a8 100755 --- a/rtos/code/application/source/cardv/SrcCode/FastFlow/flow_preview.c +++ b/rtos/code/application/source/cardv/SrcCode/FastFlow/flow_preview.c @@ -1302,7 +1302,7 @@ void setet_preset_param(void) vendor_isp_get_ae(AET_ITEM_STATUS, &ae_status_info); DBG_WRN(">> aet status exp %d iso %d\r\n",ae_status_info.status_info.expotime[0],ae_status_info.status_info.iso_gain[0]); preset_param.expt= ae_status_info.status_info.expotime[0]; - preset_param.gain= ae_status_info.status_info.iso_gain[0]; + preset_param.gain= ae_status_info.status_info.iso_gain[0]*10; total_gain.id = 0; total_gain.gain = preset_param.gain; vendor_isp_set_common(ISPT_ITEM_TOTAL_GAIN, &total_gain); From fecea29ac49e81e10106a949ca80f24deb540f51 Mon Sep 17 00:00:00 2001 From: payton Date: Thu, 14 Dec 2023 10:08:12 +0800 Subject: [PATCH 05/20] =?UTF-8?q?1.=E8=BF=9E=E6=8B=8D=E6=97=B6=E9=97=B4?= =?UTF-8?q?=E9=97=B4=E9=9A=94=E5=BE=AE=E8=B0=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../source/cardv/SrcCode/UIApp/MovieFast/MovieFast.c | 4 ++-- .../source/cardv/SrcCode/UIApp/PhotoFast/PhotoFast.c | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/rtos/code/application/source/cardv/SrcCode/UIApp/MovieFast/MovieFast.c b/rtos/code/application/source/cardv/SrcCode/UIApp/MovieFast/MovieFast.c index 3ec4a95c2..0ef7a994e 100644 --- a/rtos/code/application/source/cardv/SrcCode/UIApp/MovieFast/MovieFast.c +++ b/rtos/code/application/source/cardv/SrcCode/UIApp/MovieFast/MovieFast.c @@ -1356,10 +1356,10 @@ static INT32 MovieFast_Mode2_Get_Cont_Shot(UINT32* max_cnt, UINT32* duration) if(SF_MULTISHOT_INTEVEL_1S == puiPara->MultiShotIntevel) { - *duration = 1000;//The interval between consecutive shots of each photo is 1 second + *duration = 970;//The interval between consecutive shots of each photo is 1 second } else if(SF_MULTISHOT_INTEVEL_2S == puiPara->MultiShotIntevel) { - *duration = 2000;//The interval between consecutive shots of each photo is 2 second + *duration = 1970;//The interval between consecutive shots of each photo is 2 second } else { *duration = 1000 / *max_cnt;//SF_MULTISHOT_INTEVEL_0S 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 10f6b49c0..b056c5eb9 100644 --- a/rtos/code/application/source/cardv/SrcCode/UIApp/PhotoFast/PhotoFast.c +++ b/rtos/code/application/source/cardv/SrcCode/UIApp/PhotoFast/PhotoFast.c @@ -1500,10 +1500,10 @@ THREAD_RETTYPE PhotoFast_FlowPreviewThread(void *arg) #if HUNTING_CAMERA_MCU == ENABLE if(SF_MULTISHOT_INTEVEL_1S == puiPara->MultiShotIntevel) { - period = 1000;//The interval between consecutive shots of each photo is 1 second + period = 970;//The interval between consecutive shots of each photo is 1 second } else if(SF_MULTISHOT_INTEVEL_2S == puiPara->MultiShotIntevel) { - period = 2000;//The interval between consecutive shots of each photo is 2 second + period = 1970;//The interval between consecutive shots of each photo is 2 second } else { period = 1000 / max_cnt;//SF_MULTISHOT_INTEVEL_0S From 80a26e8088ce7259e18e32770380bf047665e2a0 Mon Sep 17 00:00:00 2001 From: payton Date: Fri, 15 Dec 2023 15:46:08 +0800 Subject: [PATCH 06/20] =?UTF-8?q?1.=E5=A2=9E=E5=8A=A0=E8=83=8C=E5=85=89cmd?= =?UTF-8?q?=EF=BC=9B2.=E5=A6=82=E8=A6=81=E5=88=87=E6=8D=A2=E6=A8=A1?= =?UTF-8?q?=E5=BC=8F=E6=8B=8D=E6=91=84=E7=BB=93=E6=9D=9F=E5=86=8D=E5=88=87?= =?UTF-8?q?=E6=8D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../UIFlowPhoto/UIFlowPhotoEventCallback.c | 3 +- .../lib/source/sifar/code/include/sf_common.h | 3 ++ .../sifar/code/source/common/sf_common.c | 29 +++++++++++++++++-- 3 files changed, 32 insertions(+), 3 deletions(-) diff --git a/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIFlowLVGL/UIFlowPhoto/UIFlowPhotoEventCallback.c b/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIFlowLVGL/UIFlowPhoto/UIFlowPhotoEventCallback.c index 1d6a0655c..9cfc4a93d 100755 --- a/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIFlowLVGL/UIFlowPhoto/UIFlowPhotoEventCallback.c +++ b/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIFlowLVGL/UIFlowPhoto/UIFlowPhotoEventCallback.c @@ -1653,6 +1653,7 @@ void UIFlowPhoto_UpdateInfo(lv_obj_t* obj, const LV_USER_EVENT_NVTMSG_DATA* msg) case UIAPPPHOTO_CB_CAPSTART: #if HUNTING_CAMERA_MCU == ENABLE sf_set_cap_statu(TRUE); + sf_set_cammode_statu(puiPara->CamMode); #endif if(obj == UIFlowPhoto) @@ -1679,7 +1680,7 @@ void UIFlowPhoto_UpdateInfo(lv_obj_t* obj, const LV_USER_EVENT_NVTMSG_DATA* msg) UIFlowPhoto_BackPreviewHandle(); #if HUNTING_CAMERA_MCU == ENABLE - if((sf_get_mode_flag()) && (puiPara->CamMode == SF_CAM_MODE_PHOTO_VIDEO || puiPara->CamMode == SF_CAM_MODE_VIDEO2)){ + if((sf_get_mode_flag()) && (sf_get_cammode_statu() == SF_CAM_MODE_PHOTO_VIDEO || sf_get_cammode_statu() == SF_CAM_MODE_VIDEO2)){ #else if(SysGetFlag(CamMode) == SF_CAM_MODE_PHOTO_VIDEO){ #endif diff --git a/code/lib/source/sifar/code/include/sf_common.h b/code/lib/source/sifar/code/include/sf_common.h index 4e52744da..62830bdeb 100755 --- a/code/lib/source/sifar/code/include/sf_common.h +++ b/code/lib/source/sifar/code/include/sf_common.h @@ -189,4 +189,7 @@ void sf_set_msdc_clk(void); void sf_send_message_to_create_qrcode(void); UINT8 sf_get_rtsp_flag(void); void sf_set_rtsp_flag(UINT8 flag); +char sf_get_cammode_statu(void); +void sf_set_cammode_statu(char is); +BOOL sf_set_backlight_status(unsigned char argc, char **argv); #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 2466f2e3c..40e51004b 100755 --- a/code/lib/source/sifar/code/source/common/sf_common.c +++ b/code/lib/source/sifar/code/source/common/sf_common.c @@ -100,7 +100,7 @@ static UINT8 UiparaFlag = 0; static SF_BLE_STATUS_E BleStatus = SF_BLE_OK; static UINT8 McuUpdateFlag = 0; static SF_GPS_STATUS_E gGpsSearching = SF_GPS_SEARCHING_UNKNOW; - +static char CamMode = 0; static SF_THREAD_S UpgradeTskParam = { .IsRun = 0, @@ -3368,4 +3368,29 @@ void sf_send_message_to_create_qrcode(void) stMessageBuf.arg1 = SF_EVENT_KEY_MOCK_CREATE_QR_CODE; stMessageBuf.cmdId = CMD_KEY; sf_com_message_send_to_app(&stMessageBuf); -} \ No newline at end of file +} + +void sf_set_cammode_statu(char is) +{ + CamMode = is; + //printf("[%s]:%d IsCap:%d\n", __FUNCTION__, __LINE__,IsCap); +} + +char sf_get_cammode_statu(void) +{ + //printf("[%s]:%d IsCap:%d\n", __FUNCTION__, __LINE__,IsCap); + return CamMode; + +} + +BOOL sf_set_backlight_status(unsigned char argc, char **argv) +{ + UINT32 value; + sscanf_s(argv[0],"%d", &value); + printf("[%s:%d] value:%d\n", __FUNCTION__, __LINE__,value); + if(value < SF_ON_OFF_MAX){ + printf("[%s:%d] Status:%d\n", __FUNCTION__, __LINE__,GPIO_SetBacklightStatus(value)); + } + + return TRUE; +} From 13f633bf6cf0630f82a1c4d5865dd35675c51ab0 Mon Sep 17 00:00:00 2001 From: payton Date: Fri, 15 Dec 2023 15:47:44 +0800 Subject: [PATCH 07/20] =?UTF-8?q?1.=E5=A2=9E=E5=8A=A0cardv=E5=85=B3?= =?UTF-8?q?=E6=9C=BA=E8=B6=85=E6=97=B6=E9=94=99=E8=AF=AF=E6=97=B6sfapp?= =?UTF-8?q?=E5=85=B3=E6=9C=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../source/sf_app/code/source/app/sf_system.c | 36 ++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) 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 db2305107..0763b43ff 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 @@ -141,7 +141,11 @@ SF_THREAD_S McuUpDataTskCfg = .IsRun = 0, .TskId = -1, }; - +SF_THREAD_S PowerOffTskCfg = +{ + .IsRun = 0, + .TskId = -1, +}; SINT8 debugFlag = 0; UINT8 McuInitFlag = 0; @@ -1499,7 +1503,36 @@ SINT32 sf_app_mcu_para_stop(void) } return SF_SUCCESS; } +void* sf_app_power_off_thread(void *arg) +{ + SLOGI("thread run\n"); + PowerOffTskCfg.IsRun = 1; + sleep(5); + SLOGE("cdv power off err\n"); + app_system_poweroff(0); + PowerOffTskCfg.IsRun = 0; + SLOGI("thread end\n"); + + return NULL; +} +SINT32 sf_app_power_off_start(void) +{ + SINT32 ret = SF_FAILURE; + if(PowerOffTskCfg.IsRun) + { + SLOGE("thread has already run !!!\n"); + return SF_FAILURE; + } + ret = pthread_create(&PowerOffTskCfg.TskId, NULL, sf_app_power_off_thread, NULL); + if(ret != SF_SUCCESS) + { + MLOGD("thread creat fail!\n"); + return ret; + } + return SF_SUCCESS; + +} /************************************************* Function: sf_power_off_msg_to_cardv Description: power off @@ -1516,6 +1549,7 @@ void sf_power_off_msg_to_cardv(void) stMessageBuf.arg1 = SF_EVENT_KEY_SHORT_CLICK; stMessageBuf.arg2 = SF_KEY_PIN_AOTU_MODE_POWOFF;//auto mode powoff sf_com_message_send_to_cardv(&stMessageBuf); + sf_app_power_off_start(); } UINT8 sf_app_get_mcu_init_flag(void) From b11ea12d850e812cc97dceccbea6c8ab0f52cb0b Mon Sep 17 00:00:00 2001 From: payton Date: Fri, 15 Dec 2023 15:48:04 +0800 Subject: [PATCH 08/20] =?UTF-8?q?1.=E8=83=8C=E5=85=89cmd?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- code/application/source/cardv/SrcCode/System/SysMain_cmd.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/application/source/cardv/SrcCode/System/SysMain_cmd.c b/code/application/source/cardv/SrcCode/System/SysMain_cmd.c index ef5e621a0..2dea0e44e 100755 --- a/code/application/source/cardv/SrcCode/System/SysMain_cmd.c +++ b/code/application/source/cardv/SrcCode/System/SysMain_cmd.c @@ -263,7 +263,7 @@ SXCMD_ITEM("gprssw %", sf_cmd_gprs_switch, "gprssw 0/1") SXCMD_ITEM("uiprint %", sf_cmd_para_printf, "uiprint") SXCMD_ITEM("blusw %", cmd_blu_switch, "blusw 0/1") SXCMD_ITEM("wifisw %", cmd_wifi_switch, "wifisw 0/1") - +SXCMD_ITEM("lcdbk %", sf_set_backlight_status, "lcdbk 0/1") #endif From 1ac9c48f849d97bd702bbc589113328ef77e7425 Mon Sep 17 00:00:00 2001 From: payton Date: Fri, 15 Dec 2023 17:31:47 +0800 Subject: [PATCH 09/20] =?UTF-8?q?1.iq=E8=BF=87=E6=9B=9D=E9=97=AE=E9=A2=98?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../source/cardv/SrcCode/UIApp/MovieFast/MovieFast.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/rtos/code/application/source/cardv/SrcCode/UIApp/MovieFast/MovieFast.c b/rtos/code/application/source/cardv/SrcCode/UIApp/MovieFast/MovieFast.c index 0ef7a994e..6252c77a2 100644 --- a/rtos/code/application/source/cardv/SrcCode/UIApp/MovieFast/MovieFast.c +++ b/rtos/code/application/source/cardv/SrcCode/UIApp/MovieFast/MovieFast.c @@ -1385,11 +1385,11 @@ THREAD_RETTYPE MovieFast_InitMovieModeThread(void *arg) //UI_SetData(FL_MOVIE_SIZE, MOVIE_SIZE_CLONE_1920x1080P30_1280x720P30); Set_NIGHTMODE(0, 0); - nvt_cmdsys_runcmd("ae set_speed 0 128 700 700 100 "); + //nvt_cmdsys_runcmd("ae set_speed 0 128 700 700 100 "); } else{ Set_NIGHTMODE(0, 1); - Set_AEMODE(0); + //Set_AEMODE(0); } MovieFast_SetRecInfoByUISetting(); @@ -1587,6 +1587,9 @@ THREAD_RETTYPE MovieFast_InitMovieModeThread(void *arg) MovieFast_InstallID(); + nvt_cmdsys_runcmd("ae set_speed 0 128 700 700 100 "); + //nvt_cmdsys_runcmd("ae dbg 0 256 1 "); + HD_VIDEO_FRAME frame_capture = {0}; { @@ -1614,8 +1617,8 @@ THREAD_RETTYPE MovieFast_InitMovieModeThread(void *arg) ae_preset_flag = TRUE; vprc_frm_cnt_ae_preset = vprc_frm_cnt; DBG_DUMP("ae preset vprc frame cnt = %lu\n", vprc_frm_cnt_ae_preset); - Set_AEMODE(1); - setet_preset_param(); + Set_AEMODE(0); + //setet_preset_param(); } } From 3ae9ca53e6a88547cfdc39e3e7a06f0e0cee2c1c Mon Sep 17 00:00:00 2001 From: xiaojiazhu Date: Fri, 15 Dec 2023 19:04:47 +0800 Subject: [PATCH 10/20] 7MR5RCwDC04 --- code/application/source/cardv/SrcCode/PrjCfg_HUNTING_S550.h | 2 +- .../code/application/source/cardv/SrcCode/PrjCfg_HUNTING_S550.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/code/application/source/cardv/SrcCode/PrjCfg_HUNTING_S550.h b/code/application/source/cardv/SrcCode/PrjCfg_HUNTING_S550.h index 545c4002c..587c62976 100755 --- a/code/application/source/cardv/SrcCode/PrjCfg_HUNTING_S550.h +++ b/code/application/source/cardv/SrcCode/PrjCfg_HUNTING_S550.h @@ -922,7 +922,7 @@ #define HUNTING_MCU_UART ENABLE #define HUNTING_IR_LED_940 ENABLE #define SF_EXIF_MN_BUF_SIZE 256 -#define SF_BASE_VERSION "7MR5RCwDC03" +#define SF_BASE_VERSION "7MR5RCwDC04" #define HW_S530 DISABLE #define DCF_DIR_NAME "MEDIA" /* 100MEDIA */ #define DCF_FILE_NAME "SYGW" /* SYFW0001.JPG */ diff --git a/rtos/code/application/source/cardv/SrcCode/PrjCfg_HUNTING_S550.h b/rtos/code/application/source/cardv/SrcCode/PrjCfg_HUNTING_S550.h index 91cca7f5e..83cfbec13 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 "7MR5RCwDC03" +#define SF_BASE_VERSION "7MR5RCwDC04" #define DCF_DIR_NAME "MEDIA" /* 100MEDIA */ #define DCF_FILE_NAME "SYGW" /* SYFW0001.JPG */ #define PHOTO_THUMB_PATH "A:\\THUMB\\" From 041d8d89a3bb2afd5fd87b07777a7dd776026abe Mon Sep 17 00:00:00 2001 From: payton Date: Mon, 18 Dec 2023 13:55:23 +0800 Subject: [PATCH 11/20] =?UTF-8?q?1.=E4=BF=A1=E5=8F=B7=E6=94=B9=E4=BD=BF?= =?UTF-8?q?=E7=94=A8=E5=85=A8=E5=B1=80=E5=8F=98=E9=87=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../UIFlowMovie/UIFlowMovieEventCallback.c | 14 ++-- .../UIFlowPhoto/UIFlowPhotoEventCallback.c | 16 ++-- .../source/sf_app/code/include/sf_eg91_sim.h | 2 + .../sf_app/code/source/4gMng/sf_eg91_sim.c | 78 +++++++++---------- .../source/sf_app/code/source/4gMng/sf_ftp.c | 46 +++++------ .../source/sf_app/code/source/app/sf_device.c | 4 +- .../sf_app/code/source/fileMng/sf_file.c | 14 ++-- .../code/source/systemMng/sf_commu_mcu_reg.c | 11 ++- .../lib/source/sifar/code/include/sf_common.h | 2 + .../sifar/code/source/common/sf_common.c | 20 +++++ .../source/sifar/code/source/module/sf_sim.c | 1 - 11 files changed, 117 insertions(+), 91 deletions(-) diff --git a/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIFlowLVGL/UIFlowMovie/UIFlowMovieEventCallback.c b/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIFlowLVGL/UIFlowMovie/UIFlowMovieEventCallback.c index 6ceb46cc7..732b2e4ae 100755 --- a/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIFlowLVGL/UIFlowMovie/UIFlowMovieEventCallback.c +++ b/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIFlowLVGL/UIFlowMovie/UIFlowMovieEventCallback.c @@ -256,12 +256,12 @@ static void signal_icon_show(const short signal) } static void update_4g_module_icon(void) { - UIMenuStoreInfo *puiPara = sf_ui_para_get(); + //UIMenuStoreInfo *puiPara = sf_ui_para_get(); static short signal = SIGNAL_NOT_YET_GET; static short searching_index = -1; short signal_new = sf_cardv_get_cq_signal(); unsigned short signal_level = 0; - network_signal_level_get(puiPara->NetGeneration, signal_new, &signal_level); + network_signal_level_get(sf_get_net_generation(), signal_new, &signal_level); // printf("new signal = %d, old signal = %d\n", signal_new, signal); if(SIGNAL_NOT_YET_GET == signal_new) { @@ -294,20 +294,20 @@ const int EMPTY_IMAGE = 0; LV_PLUGIN_IMG_ID_SF_NET3G, LV_PLUGIN_IMG_ID_SF_NET4G }; -// printf("NetGeneration:%d\n", puiPara->NetGeneration); +// printf("NetGeneration:%d\n", sf_get_net_generation()); const int SIM_CARD_NOT_INIT = 0; const int NET_GENERATION_2G = 2; // const int NET_GENERATION_3G = 3; const int NET_GENERATION_4G = 4; // puiPara->NetGeneration = NET_GENERATION_4G; // Test - if (SIM_CARD_NOT_INIT == puiPara->NetGeneration - || puiPara->NetGeneration < NET_GENERATION_2G - || puiPara->NetGeneration > NET_GENERATION_4G) + if (SIM_CARD_NOT_INIT == sf_get_net_generation() + || sf_get_net_generation() < NET_GENERATION_2G + || sf_get_net_generation() > NET_GENERATION_4G) { lv_obj_set_hidden(image_4g_scr_uiflowmovie, true); return; } - int index = puiPara->NetGeneration; + int index = sf_get_net_generation(); lv_obj_set_hidden(image_4g_scr_uiflowmovie, false); lv_plugin_img_set_src(image_4g_scr_uiflowmovie, res[index]); } diff --git a/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIFlowLVGL/UIFlowPhoto/UIFlowPhotoEventCallback.c b/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIFlowLVGL/UIFlowPhoto/UIFlowPhotoEventCallback.c index 13c52f09e..bc02098b3 100755 --- a/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIFlowLVGL/UIFlowPhoto/UIFlowPhotoEventCallback.c +++ b/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIFlowLVGL/UIFlowPhoto/UIFlowPhotoEventCallback.c @@ -546,12 +546,12 @@ static void update_4g_module_icon(void) const int NET_GENERATION_2G = 2; // const int NET_GENERATION_3G = 3; const int NET_GENERATION_4G = 4; - UIMenuStoreInfo *puiPara = sf_ui_para_get(); + //UIMenuStoreInfo *puiPara = sf_ui_para_get(); static short signal = SIGNAL_NOT_YET_GET; static short searching_index = -1; short signal_new = sf_cardv_get_cq_signal(); unsigned short signal_level = 0; - network_signal_level_get(puiPara->NetGeneration, signal_new, &signal_level); + network_signal_level_get(sf_get_net_generation(), signal_new, &signal_level); // printf("new signal = %d, old signal = %d\n", signal_new, signal); if(SIGNAL_NOT_YET_GET == signal_new) { @@ -561,7 +561,7 @@ static void update_4g_module_icon(void) // printf(" searching ... [%d]\n", searching_index); signal_icon_show(searching_index); } - else if(signal != signal_new && SIM_CARD_NOT_INIT != puiPara->NetGeneration) + else if(signal != signal_new && SIM_CARD_NOT_INIT != sf_get_net_generation()) { lv_obj_set_hidden(label_tips_scr_uiflowphoto, true); // Update the icon. @@ -613,16 +613,16 @@ const int EMPTY_IMAGE = 0; LV_PLUGIN_IMG_ID_SF_NET3G, LV_PLUGIN_IMG_ID_SF_NET4G }; -// printf("NetGeneration:%d\n", puiPara->NetGeneration); +// printf("NetGeneration:%d\n", sf_get_net_generation()); // puiPara->NetGeneration = NET_GENERATION_4G; // Test - if (SIM_CARD_NOT_INIT == puiPara->NetGeneration - || puiPara->NetGeneration < NET_GENERATION_2G - || puiPara->NetGeneration > NET_GENERATION_4G) + if (SIM_CARD_NOT_INIT == sf_get_net_generation() + || sf_get_net_generation() < NET_GENERATION_2G + || sf_get_net_generation() > NET_GENERATION_4G) { lv_obj_set_hidden(image_4g_scr_uiflowphoto, true); return; } - int index = puiPara->NetGeneration; + int index = sf_get_net_generation(); lv_obj_set_hidden(image_4g_scr_uiflowphoto, false); lv_plugin_img_set_src(image_4g_scr_uiflowphoto, res[index]); } diff --git a/code/application/source/sf_app/code/include/sf_eg91_sim.h b/code/application/source/sf_app/code/include/sf_eg91_sim.h index b52b28fa8..aedf04890 100755 --- a/code/application/source/sf_app/code/include/sf_eg91_sim.h +++ b/code/application/source/sf_app/code/include/sf_eg91_sim.h @@ -279,6 +279,8 @@ typedef enum SIM_ERR_CODE_s{ SIM_FAILED, }SIM_ERR_CODE; +UINT8 sf_get_net_generation(void); +void sf_set_net_generation(UINT8 value); SINT32 eg91_iccid_get(SF_CHAR *iccid,SF_FN_PARAM_S *pfnParam); SINT32 eg91_qsclk_set(SF_FN_PARAM_S *pfnParam); diff --git a/code/application/source/sf_app/code/source/4gMng/sf_eg91_sim.c b/code/application/source/sf_app/code/source/4gMng/sf_eg91_sim.c index ca796cc95..dbdd40aee 100755 --- a/code/application/source/sf_app/code/source/4gMng/sf_eg91_sim.c +++ b/code/application/source/sf_app/code/source/4gMng/sf_eg91_sim.c @@ -42,7 +42,7 @@ BOOL GprsNetWorkReady = FALSE; time_t sendStartTime; UINT8 gprs_search_process = GPRS_SEARCH_STEP_IDLE; extern SF_PARA_TIME_S rtcTime; -CHAR netGeneration = SF_NET_NO; +static CHAR netGeneration = SF_NET_NO; // SF_PARA_TIME_S nowDate = { 0, 0, 0, 0, 0, 0}; typedef struct sf_cimi_id @@ -54,6 +54,22 @@ typedef struct sf_cimi_id sf_cimi_id_t cimi_head = { .id = 1, .cimi = "0", .next = NULL }; +UINT8 sf_get_net_generation(void) +{ + return netGeneration; +} + +void sf_set_net_generation(UINT8 value) +{ + if((value >= SF_NET_NO) && (value <= SF_NET_4G)) + { + netGeneration = value; + } + else + { + printf("[%s:%d]value(%d) invalid,no set.\n", __FUNCTION__, __LINE__, value); + } +} UINT8 sf_qcsq_decode(char *instr, UINT8 *csqVal) { char *pStr = NULL; @@ -1784,28 +1800,28 @@ SINT32 eg91_register_net_auto(SF_FN_PARAM_S *pfnParam) SLOGI("%s", ttyData); if(strstr(ttyData, "No Service")) { - pStaticParam->NetGeneration = 2; + sf_set_net_generation(2); }else if (NULL != strtok(ttyData,"\"")){ SF_CHAR netStr[20] = { 0 }; strcpy(netStr, strtok(NULL,"\"")); MLOGD("netStr:%s\n", netStr); if((strstr(netStr,"DD") != NULL)) { - pStaticParam->NetGeneration = 4; + sf_set_net_generation(4); } else if(strstr(netStr, "CDMA") != NULL || strstr(netStr, "HDR") != NULL \ || strstr(netStr, "HSUPA") != NULL || strstr(netStr, "HSDPA") != NULL \ || strstr(netStr, "HSPA+") != NULL) { - pStaticParam->NetGeneration = 3; + sf_set_net_generation(3); } else { - pStaticParam->NetGeneration = 2; + sf_set_net_generation(2); } } - if(pStaticParam->NetGeneration == 4)//NetGeneration == 4 + if(sf_get_net_generation() == 4)//NetGeneration == 4 { enMmcLocation = SIM_REG_NET_QCSQ; sprintf(ttyData, "AT+QCSQ\r"); @@ -2080,24 +2096,24 @@ SINT32 eg91_register_net_manual(SF_FN_PARAM_S *pfnParam) SLOGI("%s", ttyData); if(strstr(ttyData, "No Service")) { - pStaticParam->NetGeneration = 2; + sf_set_net_generation(2); }else if (NULL != strtok(ttyData,"\"")){ SF_CHAR netStr[20] = { 0 }; strcpy(netStr, strtok(NULL,"\"")); MLOGD("netStr:%s\n", netStr); if((strstr(netStr,"DD") != NULL)) { - pStaticParam->NetGeneration = 4; + sf_set_net_generation(4); } else if(strstr(netStr, "CDMA") != NULL || strstr(netStr, "HDR") != NULL \ || strstr(netStr, "HSUPA") != NULL || strstr(netStr, "HSDPA") != NULL \ || strstr(netStr, "HSPA+") != NULL) { - pStaticParam->NetGeneration = 3; + sf_set_net_generation(3); } else { - pStaticParam->NetGeneration = 2; + sf_set_net_generation(2); } } @@ -2122,7 +2138,7 @@ SINT32 eg91_register_net_manual(SF_FN_PARAM_S *pfnParam) printf("cops2 is %s\r\n", pStaticParam->ServiceProvider); } - if(pStaticParam->NetGeneration == 4)//NetGeneration == 4 + if(sf_get_net_generation() == 4)//NetGeneration == 4 { enMmcLocation = SIM_REG_NET_QCSQ; sprintf(ttyData, "AT+QCSQ\r"); @@ -3766,8 +3782,7 @@ SINT32 sf_net_regist_manual(void) { if(strstr((const char *)gsmPara, "No Service")) { - //puiPara->NetGeneration = 2; - netGeneration = 2; + sf_set_net_generation(2); } else if(NULL != strtok((char *)(char *)gsmPara, "\"")) { @@ -3776,30 +3791,23 @@ SINT32 sf_net_regist_manual(void) if((strstr((const char *)netStr, "DD") != NULL)) { - //puiPara->NetGeneration = 4; - netGeneration = 4; + sf_set_net_generation(4); } else if(strstr((const char *)netStr, "CDMA") != NULL || strstr((const char *)netStr, "HDR") != NULL || strstr((const char *)netStr, "HSUPA") != NULL || strstr((const char *)netStr, "HSDPA") != NULL || (strstr((const char *)netStr, "HSPA+") != NULL)) { - //puiPara->NetGeneration = 3; - netGeneration = 3; + sf_set_net_generation(3); } else if(strstr((const char *)netStr, "CMDA") != NULL || strstr((const char *)netStr, "G") != NULL) { - //puiPara->NetGeneration = 2; - netGeneration = 2; + sf_set_net_generation(2); } else { - // puiPara->NetGeneration = 2; - netGeneration = 2; + sf_set_net_generation(2); } } - if(puiPara->NetGeneration != netGeneration) - { - puiPara->NetGeneration = netGeneration; - } + if(netGeneration == 4) { eNetRegLocation = QUECTEL_NETREG_QCSQ; @@ -4598,8 +4606,7 @@ SINT32 sf_auto_net_reg(void) { if(strstr((const char *)gsmPara, "No Service")) { - //puiPara->NetGeneration = 2; - netGeneration = 2; + sf_set_net_generation(2); } else if(NULL != strtok((char *)(char *)gsmPara, "\"")) { @@ -4608,30 +4615,23 @@ SINT32 sf_auto_net_reg(void) if((strstr((const char *)netStr, "DD") != NULL)) { - // puiPara->NetGeneration = 4; - netGeneration = 4; + sf_set_net_generation(4); } else if(strstr((const char *)netStr, "CDMA") != NULL || strstr((const char *)netStr, "HDR") != NULL || strstr((const char *)netStr, "HSUPA") != NULL || strstr((const char *)netStr, "HSDPA") != NULL || (strstr((const char *)netStr, "HSPA+") != NULL)) { - // puiPara->NetGeneration = 3; - netGeneration = 3; + sf_set_net_generation(3); } else if(strstr((const char *)netStr, "CMDA") != NULL || strstr((const char *)netStr, "G") != NULL) { - // puiPara->NetGeneration = 2; - netGeneration = 2; + sf_set_net_generation(2); } else { - // puiPara->NetGeneration = 2; - netGeneration = 2; + sf_set_net_generation(2); } } - if(puiPara->NetGeneration != netGeneration) - { - puiPara->NetGeneration = netGeneration; - } + if(netGeneration == 4) { eNetRegLocation = QUECTEL_NETREG_QCSQ; 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 db6d1c9fe..4c296a8b8 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 @@ -895,15 +895,15 @@ SINT32 sf_pic_send_ftp(void) //sendStartTime = sf_sys_os_utime_get()/1000; sf_custom_str_get(CamNameStr); - sf_4G_signal_level_get(pPara->NetGeneration,sf_get_cq_signal(),&csqlevel); + sf_4G_signal_level_get(sf_get_net_generation(),sf_get_cq_signal(),&csqlevel); snprintf(cameraID, sizeof(cameraID), "%s-%d-%d-%s-", pPara->ModuleImei, sf_app_get_battery(), csqlevel, CamNameStr); /* DCF 8.3 naming rule */ - if(4 == pPara->NetGeneration) + if(4 == sf_get_net_generation()) { tempPicSize = pPara->SendPicSize; } - else if(3 == pPara->NetGeneration) + else if(3 == sf_get_net_generation()) { tempPicSize = ((1 <= pPara->SendPicSize) ? 1 : 0); } @@ -936,7 +936,7 @@ SINT32 sf_pic_send_ftp(void) // piccount = 1; // } // } - MLOGI("NetGeneration:%dG,tempPicSize=%d,piccount=%d,filecnt=%d\n", pPara->NetGeneration, tempPicSize, piccount, pThumbFileCfg->filecnt); + MLOGI("netGeneration:%dG,tempPicSize=%d,piccount=%d,filecnt=%d\n", sf_get_net_generation(), tempPicSize, piccount, pThumbFileCfg->filecnt); //printf("[%s:%d]piccount=%d\n", __FUNCTION__, __LINE__, piccount); @@ -1052,11 +1052,11 @@ SINT32 sf_video_send_ftp(void) MLOGD("start\n"); sf_custom_str_get(CamNameStr); - sf_4G_signal_level_get(pPara->NetGeneration,sf_get_cq_signal(),&csqlevel); + sf_4G_signal_level_get(sf_get_net_generation(),sf_get_cq_signal(),&csqlevel); snprintf(cameraID, sizeof(cameraID), "%s-%d-%d-%s-", pPara->ModuleImei, sf_app_get_battery(), csqlevel, CamNameStr); /* DCF 8.3 naming rule */ - printf("NetGeneration:%dG,tempPicSize=%d,piccount=%d,pic=%d\n", pPara->NetGeneration, tempPicSize, piccount, pic); + printf("netGeneration:%dG,tempPicSize=%d,piccount=%d,pic=%d\n", sf_get_net_generation(), tempPicSize, piccount, pic); /*sf_get_send_video_fname(videoDirKey, videoFname); sprintf((char *)ftpFileName, "%s%s", cameraID, videoFname); @@ -1238,7 +1238,7 @@ SINT32 sf_send_file_to_ftp(UINT8 mode) if(mode == 1 ) //send Original+video { - if(((puiPara->CamMode == SF_CAM_MODE_VIDEO) || (puiPara->CamMode == SF_CAM_MODE_PHOTO_VIDEO) || (puiPara->CamMode == SF_CAM_MODE_VIDEO2)) && (puiPara->SendVideoSwitch == 1) && (puiPara->NetGeneration == 4)) //video + if(((puiPara->CamMode == SF_CAM_MODE_VIDEO) || (puiPara->CamMode == SF_CAM_MODE_PHOTO_VIDEO) || (puiPara->CamMode == SF_CAM_MODE_VIDEO2)) && (puiPara->SendVideoSwitch == 1) && (sf_get_net_generation() == 4)) //video { timeout = 120000; } @@ -1278,9 +1278,9 @@ SINT32 sf_send_file_to_ftp(UINT8 mode) } } - printf("[%s:%d]puiPara->NetGeneration=%d\n", __FUNCTION__, __LINE__, puiPara->NetGeneration); + printf("[%s:%d]netGeneration=%d\n", __FUNCTION__, __LINE__, sf_get_net_generation()); - if(((puiPara->CamMode == SF_CAM_MODE_VIDEO) || (puiPara->CamMode == SF_CAM_MODE_PHOTO_VIDEO) || (puiPara->CamMode == SF_CAM_MODE_VIDEO2)) && (puiPara->SendVideoSwitch == 1) && (puiPara->NetGeneration == 4)) //video + if(((puiPara->CamMode == SF_CAM_MODE_VIDEO) || (puiPara->CamMode == SF_CAM_MODE_PHOTO_VIDEO) || (puiPara->CamMode == SF_CAM_MODE_VIDEO2)) && (puiPara->SendVideoSwitch == 1) && (sf_get_net_generation() == 4)) //video { if(smtpUploadVideoFlag == 0) { @@ -1319,7 +1319,7 @@ SINT32 sf_send_file_to_ftp(UINT8 mode) if(ret1 != SF_FTP_ERROR_TERM) { - ret2 = sf_ftp_stop(ssl, gprsMode); + //ret2 = sf_ftp_stop(ssl, gprsMode); } #if SF_TEST_ERROR_CODE @@ -1427,7 +1427,7 @@ SINT32 sf_connect_ftps_server(void) gprsMode = 0;//puiPara->GprsMode; printf("[%s:%d] ssl:%d,GprsMode:%d\n", __FUNCTION__, __LINE__, ssl, gprsMode); - if(((puiPara->CamMode == SF_CAM_MODE_VIDEO) || (puiPara->CamMode == SF_CAM_MODE_PHOTO_VIDEO) || (puiPara->CamMode == SF_CAM_MODE_VIDEO2)) && (puiPara->SendVideoSwitch == 1) && (puiPara->NetGeneration == 4)) //video + if(((puiPara->CamMode == SF_CAM_MODE_VIDEO) || (puiPara->CamMode == SF_CAM_MODE_PHOTO_VIDEO) || (puiPara->CamMode == SF_CAM_MODE_VIDEO2)) && (puiPara->SendVideoSwitch == 1) && (sf_get_net_generation() == 4)) //video { timeout = 60000; } @@ -1442,7 +1442,7 @@ SINT32 sf_connect_ftps_server(void) { FtpOpenOk = SUCCESS; } - ret = sf_ftp_stop(ssl, gprsMode); + //ret = sf_ftp_stop(ssl, gprsMode); //SF_FTP_CONNECT_END: //printf("[%s:%d]ret:[0x%08X]\n\n", __FUNCTION__, __LINE__, ret); @@ -1561,7 +1561,7 @@ SINT32 sf_concentrated_ftp_send(void) // SINT64 sendStartTime = 0; SINT64 sendEndTime = 0; sf_custom_str_get(CamNameStr); - sf_4G_signal_level_get(pPara->NetGeneration,sf_get_cq_signal(),&csqlevel); + sf_4G_signal_level_get(sf_get_net_generation(),sf_get_cq_signal(),&csqlevel); // sendStartTime = sf_sys_os_utime_get()/1000; @@ -1676,7 +1676,7 @@ SF_CONCENTRATED_END: if(ret1 != SF_FTP_ERROR_TERM) { - ret2 = sf_ftp_stop(ssl, gprsMode); + //ret2 = sf_ftp_stop(ssl, gprsMode); } #if SF_TEST_ERROR_CODE @@ -1748,7 +1748,7 @@ SINT32 sf_hd_ftp_send(void) sf_set_send_hd(0); sf_custom_str_get(CamNameStr); - sf_4G_signal_level_get(pPara->NetGeneration,sf_get_cq_signal(),&csqlevel); + sf_4G_signal_level_get(sf_get_net_generation(),sf_get_cq_signal(),&csqlevel); // sendStartTime = sf_sys_os_utime_get()/1000; @@ -1858,7 +1858,7 @@ SF_HD_END: if(ret1 != SF_FTP_ERROR_TERM) { - ret2 = sf_ftp_stop(ssl, gprsMode); + //ret2 = sf_ftp_stop(ssl, gprsMode); } #if SF_TEST_ERROR_CODE @@ -1969,7 +1969,7 @@ SINT32 sf_video_ftp_send(void) sf_set_send_video(0); sf_custom_str_get(CamNameStr); - sf_4G_signal_level_get(pPara->NetGeneration,sf_get_cq_signal(),&csqlevel); + sf_4G_signal_level_get(sf_get_net_generation(),sf_get_cq_signal(),&csqlevel); // sendStartTime = sf_sys_os_utime_get()/1000; @@ -2084,7 +2084,7 @@ SF_VIDEO_END: if(ret1 != SF_FTP_ERROR_TERM) { - ret2 = sf_ftp_stop(ssl, gprsMode); + //ret2 = sf_ftp_stop(ssl, gprsMode); } #if SF_TEST_ERROR_CODE @@ -2176,7 +2176,7 @@ SINT32 sf_log_send_ftp(void) } if(ret != SF_FTP_ERROR_TERM) { - ret2 = sf_ftp_stop(ssl, gprsMode); + //ret2 = sf_ftp_stop(ssl, gprsMode); } #if SF_TEST_ERROR_CODE @@ -2295,7 +2295,7 @@ SINT32 sf_gps_send_ftp(void) } if(ret != SF_FTP_ERROR_TERM) { - ret2 = sf_ftp_stop(ssl, gprsMode); + //ret2 = sf_ftp_stop(ssl, gprsMode); } #if SF_TEST_ERROR_CODE @@ -2985,11 +2985,11 @@ SINT32 sf_test_send_file_to_ftp(void) MLOGD("start\n"); sf_custom_str_get(CamNameStr); - sf_4G_signal_level_get(puiPara->NetGeneration,sf_get_cq_signal(),&csqlevel); + sf_4G_signal_level_get(sf_get_net_generation(),sf_get_cq_signal(),&csqlevel); snprintf(cameraID, sizeof(cameraID), "%s-%d-%d-%s-", puiPara->ModuleImei, sf_app_get_battery(), csqlevel, CamNameStr); /* DCF 8.3 naming rule */ - printf("NetGeneration:%dG,tempPicSize=%d,piccount=%d,pic=%d\n", puiPara->NetGeneration, tempPicSize, piccount, pic); + printf("netGeneration:%dG,tempPicSize=%d,piccount=%d,pic=%d\n", sf_get_net_generation(), tempPicSize, piccount, pic); sprintf((char *)ftpFileName, "%sMEMPHOTO.JPG", cameraID); sprintf((char *)filePath, "UFS:MEMPHOTO.JPG"); @@ -3082,7 +3082,7 @@ SINT32 sf_card_log_send_ftp(void) } if(ret != SF_FTP_ERROR_TERM) { - ret2 = sf_ftp_stop(ssl, gprsMode); + //ret2 = sf_ftp_stop(ssl, gprsMode); } MLOGD(" end ret:[0x%08X],ret2:[0x%08X]\n", ret, ret2); 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 134b8e691..712666c74 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 @@ -355,6 +355,7 @@ SINT32 sf_app_cq_signal_to_cardv(void) stMessageBuf.cmdId = CMD_GPRS; stMessageBuf.arg1 = SF_GPRS_CMD_SIGNAL; stMessageBuf.arg2 = sf_get_cq_signal(); + stMessageBuf.arg3 = ((SINT32)(((sf_get_sim_insert()) << 16) | (sf_get_net_generation()))); sf_com_message_send_to_cardv(&stMessageBuf); return SF_SUCCESS; } @@ -383,7 +384,6 @@ void sf_signal_led_show(UINT8 signalLevel) SINT32 app_led_net_reg_stop(SINT32 s32ret) { - UIMenuStoreInfo *puiPara = sf_app_ui_para_get(); //UINT8 netSearchStep = sf_get_netsearch_step(); UINT8 signalLevel = 0; sf_app_cq_signal_to_cardv(); @@ -419,7 +419,7 @@ SINT32 app_led_net_reg_stop(SINT32 s32ret) sf_sys_status_led_set(SF_LED_SYS_STATE_SERVER_FAIL); } else { - sf_4G_signal_level_get(puiPara->NetGeneration,sf_get_cq_signal(),&signalLevel); + sf_4G_signal_level_get(sf_get_net_generation(),sf_get_cq_signal(),&signalLevel); MLOGI("signalLevel = %d\n",signalLevel); // sf_app_cq_signal_to_cardv(); sf_signal_led_show(signalLevel); diff --git a/code/application/source/sf_app/code/source/fileMng/sf_file.c b/code/application/source/sf_app/code/source/fileMng/sf_file.c index 7492e3f82..85e1c2710 100755 --- a/code/application/source/sf_app/code/source/fileMng/sf_file.c +++ b/code/application/source/sf_app/code/source/fileMng/sf_file.c @@ -565,11 +565,11 @@ SINT32 sf_upload_send_files_to_module(UINT8 mode) //sf_custom_str_get(customStr); - if(4 == pPara->NetGeneration) + if(4 == sf_get_net_generation()) { tempPicSize = pPara->SendPicSize; } - else if(3 == pPara->NetGeneration) + else if(3 == sf_get_net_generation()) { tempPicSize = ((1 <= pPara->SendPicSize) ? 1 : 0); } @@ -601,7 +601,7 @@ SINT32 sf_upload_send_files_to_module(UINT8 mode) } else if(mode == 1) { - printf("NetGeneration:%dG,tempPicSize=%d,piccount=%d,pic=%d\n", pPara->NetGeneration, tempPicSize, piccount, pic); + printf("netGeneration:%dG,tempPicSize=%d,piccount=%d,pic=%d\n", sf_get_net_generation(), tempPicSize, piccount, pic); SendPicSize = tempPicSize; @@ -657,7 +657,7 @@ SINT32 sf_upload_send_files_to_module(UINT8 mode) printf("[%s:%d]before,piccount=%d\n", __FUNCTION__, __LINE__, piccount); - if(4 == pPara->NetGeneration) + if(4 == sf_get_net_generation()) { if(piccount >= 2) { @@ -1008,8 +1008,8 @@ UINT32 sf_create_dailyreport_file(void) gpsStrTemp[0] = '\0'; }*/ - //csqlevel = sf_signal_level_get(pPara->NetGeneration, sf_get_cq_signal()); - sf_4G_signal_level_get(pPara->NetGeneration,sf_get_cq_signal(),&csqlevel); + //csqlevel = sf_signal_level_get(sf_get_net_generation(), sf_get_cq_signal()); + sf_4G_signal_level_get(sf_get_net_generation(),sf_get_cq_signal(),&csqlevel); if(pPara->DateStyle == SF_DATE_TIME_YYMMDD) { sprintf(tmpDate, "%d/%02d/%02d %02d:%02d:%02d", drRtcTime.Year, drRtcTime.Mon, drRtcTime.Day, drRtcTime.Hour, drRtcTime.Min, drRtcTime.Sec); @@ -1036,7 +1036,7 @@ UINT32 sf_create_dailyreport_file(void) "Total Pics Sent:%ld\r\n", \ pPara->ModuleImei, \ csqlevel, \ - pPara->NetGeneration, \ + sf_get_net_generation(), \ cameraID, \ str, \ tmpDate, \ 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 76b4dc56d..38036be30 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 @@ -34,6 +34,7 @@ #include "sf_sms.h" #include "sf_system.h" #include "sf_message_queue.h" +#include "sf_eg91_sim.h" #ifdef __cplusplus #if __cplusplus extern "C" { @@ -912,7 +913,11 @@ unsigned char sf_mcu_reg_set(MCUParam_t attrId, unsigned char val) sf_debug_save_log(); } #endif - sf_mcu_write_multi(mcuReg, mcuData, i); + if(FAIL == sf_mcu_write_multi(mcuReg, mcuData, i)) + { + sf_sleep_ms(200); + sf_mcu_write_multi(mcuReg, mcuData, i); + } return SUCCESS; } @@ -1267,9 +1272,7 @@ UINT32 sf_get_sim_insert(void) void sf_set_cq_signal(UINT8 csq) { - UIMenuStoreInfo *puiPara = sf_app_ui_para_get(); - - if(((puiPara->NetGeneration == 4) && (csq > 0) && (csq < 129)) || ((puiPara->NetGeneration < 4) && (csq > 1) && (csq < 32))) + if(((sf_get_net_generation() == 4) && (csq > 0) && (csq < 129)) || ((sf_get_net_generation() < 4) && (csq > 1) && (csq < 32))) { cq_Signal = csq; isSignalReady = 1; diff --git a/code/lib/source/sifar/code/include/sf_common.h b/code/lib/source/sifar/code/include/sf_common.h index 62830bdeb..47409f9ca 100755 --- a/code/lib/source/sifar/code/include/sf_common.h +++ b/code/lib/source/sifar/code/include/sf_common.h @@ -192,4 +192,6 @@ void sf_set_rtsp_flag(UINT8 flag); char sf_get_cammode_statu(void); void sf_set_cammode_statu(char is); BOOL sf_set_backlight_status(unsigned char argc, char **argv); +UINT8 sf_get_net_generation(void); +void sf_set_net_generation(UINT8 value); #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 9e5f0a26c..453e6d5cb 100755 --- a/code/lib/source/sifar/code/source/common/sf_common.c +++ b/code/lib/source/sifar/code/source/common/sf_common.c @@ -101,6 +101,7 @@ static SF_BLE_STATUS_E BleStatus = SF_BLE_OK; static UINT8 McuUpdateFlag = 0; static SF_GPS_STATUS_E gGpsSearching = SF_GPS_SEARCHING_UNKNOW; static char CamMode = 0; +static CHAR netGeneration = SF_NET_NO; static SF_THREAD_S UpgradeTskParam = { .IsRun = 0, @@ -1794,6 +1795,8 @@ static SINT32 sf_cardv_proccess_cmd_gprs(SF_MESSAGE_BUF_S *pMessageBuf) { case SF_GPRS_CMD_SIGNAL: cq_Signal = pMessageBuf->arg2; + sf_set_net_generation(pMessageBuf->arg3 & 0xFF); + sf_cardv_set_sim_insert((pMessageBuf->arg3>>16)&0x0F); break; default: @@ -3395,3 +3398,20 @@ BOOL sf_set_backlight_status(unsigned char argc, char **argv) return TRUE; } + +UINT8 sf_get_net_generation(void) +{ + return netGeneration; +} + +void sf_set_net_generation(UINT8 value) +{ + if((value >= SF_NET_NO) && (value <= SF_NET_4G)) + { + netGeneration = value; + } + else + { + printf("[%s:%d]value(%d) invalid,no set.\n", __FUNCTION__, __LINE__, value); + } +} \ No newline at end of file diff --git a/code/lib/source/sifar/code/source/module/sf_sim.c b/code/lib/source/sifar/code/source/module/sf_sim.c index 7b234cd7a..e2cfc6801 100644 --- a/code/lib/source/sifar/code/source/module/sf_sim.c +++ b/code/lib/source/sifar/code/source/module/sf_sim.c @@ -138,7 +138,6 @@ SINT32 sf_module_init(VOID) UIMenuStoreInfo *pPara = sf_ui_para_get(); needRecordLogFlag = 1; - pPara->NetGeneration = SF_NET_NO; sf_4g_data_buff_clear(); sf_gsm_para_buff_clear(); From 52f09283fc587529508a4dc6e2f863b681ef7836 Mon Sep 17 00:00:00 2001 From: payton Date: Mon, 18 Dec 2023 13:55:36 +0800 Subject: [PATCH 12/20] =?UTF-8?q?1.=E9=A2=84=E7=BA=A6=E5=8F=91=E9=80=81?= =?UTF-8?q?=E6=A3=80=E6=9F=A5=E6=96=87=E4=BB=B6=E6=98=AF=E5=90=A6=E5=AD=98?= =?UTF-8?q?=E5=9C=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../source/sf_app/code/source/4gMng/sf_sms.c | 42 ++++++++++++++++--- 1 file changed, 37 insertions(+), 5 deletions(-) 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 489632da4..542d853e4 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 @@ -1975,12 +1975,17 @@ void sf_hd_pic_add_to_list(UINT8 *fileName) UINT8 tempStr[20] = {0}; SubImgList_t *pList = pSubImgListHead; SubImgList_t *qList = pSubImgListHead; - + char fname[50] = {0}; 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); - + SF_SPRINTF(fname, "%s/%03dMEDIA/%s%04d.JPG", SF_DCIM_DIR, dirKey, DCF_FILE_NAME, fileKey); + if(sf_file_IsExsit(fname) != SF_TRUE) + { + MLOGE("%s\n", fname); + return; + } if(pSubImgListHead == NULL) { pSubImgListHead = (SubImgList_t *)malloc(sizeof(SubImgList_t)); @@ -2088,13 +2093,40 @@ void sf_video_add_to_list(UINT8 *fileName) SubImgList_t *qList = pSubVideoListHead; //sfPara_t* pSifarPara = sf_ParaGet(); //UINT8 subscribeMaxNum = SUBSCRIBE_MAX_NUM - pSifarPara->subscribeSendCnt; - + char fname[50] = {0}; + UINT32 fileSize = 0; + UINT32 fileIndex = 0; + UINT8 i = 0; + UINT16 dirKeytmp = 0; + UINT16 fileKeytmp = 0; printf("add to list:%s\n", fileName); SF_STRNCPY(tempStr, fileName+1, 3); dirKey = atoi((const char *)tempStr); fileKey = atoi((const char *)fileName+4); + fileIndex = dirKey * 10000 + fileKey + 1; + + for(i = 0; i < 3; i++) + { + dirKeytmp = fileIndex / 10000; + fileKeytmp = fileIndex % 10000; + SF_SPRINTF(fname, "%s/%03dMEDIA/%s%04d.MP4", SF_DCIM_DIR, dirKeytmp, DCF_FILE_NAME, fileKeytmp); + sf_file_size_get(fname,&fileSize); + printf("find video:%s size=%d\n", fname, fileSize); + + if(fileSize != 0) + { + break; + } + fileIndex++; + } + if(fileSize == 0) + { + MLOGE("No File %s\n", fname); + return; + } + if(pSubVideoListHead == NULL) { pSubVideoListHead = (SubImgList_t *)malloc(sizeof(SubImgList_t)); @@ -2167,10 +2199,10 @@ SINT32 sf_simcom_check_need_send(void) UIMenuStoreInfo *puiPara = sf_app_ui_para_get(); UINT8 PowerOnMode = sf_poweron_type_get(); - printf("[%s:%d]sf_get_pic()=%d,puiPara->NetGeneration=%d\n", __FUNCTION__, __LINE__, sf_get_pic(), puiPara->NetGeneration); + printf("[%s:%d]sf_get_pic()=%d,netGeneration=%d\n", __FUNCTION__, __LINE__, sf_get_pic(), sf_get_net_generation()); if((sf_get_sim_insert()) && ((sf_get_mode_flag() == 1) || (PowerOnMode == PWR_ON_PIR) || (PowerOnMode == PWR_ON_TIMELAPSE) || (sf_get_pic() == SF_TRUE)) - && ((puiPara->SendPhotoSwitch == 1) || ((puiPara->CamMode == SF_CAM_MODE_VIDEO) && (puiPara->SendVideoSwitch == 1) && (puiPara->NetGeneration == 4)))) + && ((puiPara->SendPhotoSwitch == 1) || ((puiPara->CamMode == SF_CAM_MODE_VIDEO) && (puiPara->SendVideoSwitch == 1) && (sf_get_net_generation() == 4)))) { if((sf_check_ftp_send(1) == SF_SUCCESS)) { From a32f7c314a4b11fb81bc2633c50f48bb6db8a2b9 Mon Sep 17 00:00:00 2001 From: payton Date: Mon, 18 Dec 2023 13:56:32 +0800 Subject: [PATCH 13/20] =?UTF-8?q?1.1=E8=BF=9B=E5=85=A5setup=E4=BD=BF?= =?UTF-8?q?=E7=94=A8reboot=E9=87=8D=E5=90=AF=E7=B3=BB=E7=BB=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- code/lib/source/sifar/code/source/mcu/sf_mcu_client.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/code/lib/source/sifar/code/source/mcu/sf_mcu_client.c b/code/lib/source/sifar/code/source/mcu/sf_mcu_client.c index 5f6483806..0125885b7 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 @@ -803,7 +803,14 @@ void sf_mcu_dataready_ck(UINT8 startMode) 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 + if((startMode == 1) && (PWR_ON_AUTO == sf_cardv_convert_power_on_mode())) + { + system("reboot"); + } + else + { + Ux_PostEvent(NVTEVT_SYSTEM_SHUTDOWN, 1, 0); //shutdown start + } } } From 4712e1078b19c543c112a0d281a7344fb2572f55 Mon Sep 17 00:00:00 2001 From: payton Date: Mon, 18 Dec 2023 16:09:22 +0800 Subject: [PATCH 14/20] =?UTF-8?q?1.=E6=9B=B4=E6=94=B9sensor=E9=95=9C?= =?UTF-8?q?=E5=83=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app/sensor/sen_os05b10_565.cfg | 2 +- code/hdal/ext_devices/sensor/configs/cfg/sen_os05b10_565.cfg | 2 +- code/hdal/ext_devices/sensor/configs/dtsi/os05b10_cfg_565.dtsi | 2 +- .../hdal/ext_devices/sensor/configs/cfg/sen_os05b10_565.cfg | 2 +- .../hdal/ext_devices/sensor/configs/dtsi/os05b10_cfg_565.dtsi | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/app/sensor/sen_os05b10_565.cfg b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/app/sensor/sen_os05b10_565.cfg index e729acf2c..b5f5726d6 100755 --- a/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/app/sensor/sen_os05b10_565.cfg +++ b/BSP/root-fs/rootfs/etc_Model/etc_565_HUNTING_EVB_LINUX_4G_S550/app/sensor/sen_os05b10_565.cfg @@ -13,7 +13,7 @@ id_0_expt_time = 10000 #10000us id_0_gain_ratio = 1000 #1x gain [DIRECTION] -id_0_mirror = 1 #no mirror +id_0_mirror = 0 #no mirror id_0_flip = 1 #flip [POWER] diff --git a/code/hdal/ext_devices/sensor/configs/cfg/sen_os05b10_565.cfg b/code/hdal/ext_devices/sensor/configs/cfg/sen_os05b10_565.cfg index e729acf2c..b5f5726d6 100755 --- a/code/hdal/ext_devices/sensor/configs/cfg/sen_os05b10_565.cfg +++ b/code/hdal/ext_devices/sensor/configs/cfg/sen_os05b10_565.cfg @@ -13,7 +13,7 @@ id_0_expt_time = 10000 #10000us id_0_gain_ratio = 1000 #1x gain [DIRECTION] -id_0_mirror = 1 #no mirror +id_0_mirror = 0 #no mirror id_0_flip = 1 #flip [POWER] diff --git a/code/hdal/ext_devices/sensor/configs/dtsi/os05b10_cfg_565.dtsi b/code/hdal/ext_devices/sensor/configs/dtsi/os05b10_cfg_565.dtsi index e32688042..0f01b1009 100755 --- a/code/hdal/ext_devices/sensor/configs/dtsi/os05b10_cfg_565.dtsi +++ b/code/hdal/ext_devices/sensor/configs/dtsi/os05b10_cfg_565.dtsi @@ -17,7 +17,7 @@ }; DIRECTION { - id_0_mirror = <1>; /* no mirror */ + id_0_mirror = <0>; /* no mirror */ id_0_flip = <1>; /* flip */ }; diff --git a/rtos/code/hdal/ext_devices/sensor/configs/cfg/sen_os05b10_565.cfg b/rtos/code/hdal/ext_devices/sensor/configs/cfg/sen_os05b10_565.cfg index e729acf2c..b5f5726d6 100755 --- a/rtos/code/hdal/ext_devices/sensor/configs/cfg/sen_os05b10_565.cfg +++ b/rtos/code/hdal/ext_devices/sensor/configs/cfg/sen_os05b10_565.cfg @@ -13,7 +13,7 @@ id_0_expt_time = 10000 #10000us id_0_gain_ratio = 1000 #1x gain [DIRECTION] -id_0_mirror = 1 #no mirror +id_0_mirror = 0 #no mirror id_0_flip = 1 #flip [POWER] diff --git a/rtos/code/hdal/ext_devices/sensor/configs/dtsi/os05b10_cfg_565.dtsi b/rtos/code/hdal/ext_devices/sensor/configs/dtsi/os05b10_cfg_565.dtsi index e32688042..0f01b1009 100755 --- a/rtos/code/hdal/ext_devices/sensor/configs/dtsi/os05b10_cfg_565.dtsi +++ b/rtos/code/hdal/ext_devices/sensor/configs/dtsi/os05b10_cfg_565.dtsi @@ -17,7 +17,7 @@ }; DIRECTION { - id_0_mirror = <1>; /* no mirror */ + id_0_mirror = <0>; /* no mirror */ id_0_flip = <1>; /* flip */ }; From 7bc6174a29db3bc2e06356e5bd9049aa88fdd880 Mon Sep 17 00:00:00 2001 From: payton Date: Mon, 18 Dec 2023 16:18:40 +0800 Subject: [PATCH 15/20] =?UTF-8?q?1.emmc=E5=90=88=E5=B9=B6=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../source/cardv/SrcCode/System/SysStrg_Exe.c | 59 ++++++++++-------- .../source/cardv/SrcCode/System/sys_mempool.c | 7 +++ .../SrcCode/UIApp/Movie/UIAppMovie_Exe.c | 18 +++--- .../SrcCode/UIApp/Photo/UIAppPhoto_Exe.c | 8 ++- .../source/ImageApp/Photo/libimageapp_photo.a | Bin 143604 -> 143636 bytes .../ImageApp/Photo/libimageapp_photo.so | Bin 101616 -> 101616 bytes 6 files changed, 57 insertions(+), 35 deletions(-) diff --git a/code/application/source/cardv/SrcCode/System/SysStrg_Exe.c b/code/application/source/cardv/SrcCode/System/SysStrg_Exe.c index 43b30e0e7..5d21b03ee 100644 --- a/code/application/source/cardv/SrcCode/System/SysStrg_Exe.c +++ b/code/application/source/cardv/SrcCode/System/SysStrg_Exe.c @@ -833,17 +833,21 @@ INT32 System_OnStrgInsert(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray) #endif dcfParm.WorkbuffSize = POOL_SIZE_DCF_BUFFER; - DCF_Open(&dcfParm); + + UINT32 handle = DCF_Open(&dcfParm); + + DBG_DUMP("Handle = %lu, drive = %c\n", handle, dcfParm.Drive); // DCF_ScanObj(); } #endif - - if (GxStrg_GetDeviceCtrl(stg_id, CARD_READONLY)) { - System_SetState(SYS_STATE_CARD, CARD_LOCKED); - DBG_IND("Card Locked\r\n"); - } else { - System_SetState(SYS_STATE_CARD, CARD_INSERTED); - DBG_IND("Card inserted\r\n"); + if(stg_id == 0){ + if (GxStrg_GetDeviceCtrl(stg_id, CARD_READONLY)) { + System_SetState(SYS_STATE_CARD, CARD_LOCKED); + DBG_IND("Card Locked\r\n"); + } else { + System_SetState(SYS_STATE_CARD, CARD_INSERTED); + DBG_IND("Card inserted\r\n"); + } } return NVTEVT_CONSUME; } @@ -930,6 +934,7 @@ INT32 System_OnStrgAttach(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray) UINT32 result = paramArray[1]; #if HUNTING_CAMERA_MCU == ENABLE SF_MESSAGE_BUF_S stMessageBuf = {0}; + UINT32 strg_id = paramArray[0]; #endif #if defined(__FREERTOS) @@ -969,25 +974,25 @@ INT32 System_OnStrgAttach(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray) result = FileSys_FormatDisk(pStrgDevCur, TRUE); } #endif - -#if ( !defined(_EMBMEM_SPI_NOR_) && (FS_MULTI_STRG_FUNC == ENABLE)) - UINT32 stg_id = paramArray[0]; - - if (stg_id != 0) { // stg_id=1 is interal storage FAT - return NVTEVT_CONSUME; - } -#endif } + DBG_WRN("stg_id = %lu\n", paramArray[0]); + switch (result) { case FST_STA_OK: - printf("read only = %llu\n", FileSys_GetDiskInfoEx('A', FST_INFO_IS_READ_ONLY)); - if(FileSys_GetDiskInfoEx('A', FST_INFO_IS_READ_ONLY)){ - system("mount -t vfat /dev/mmcblk0 /mnt/sd/ -o remount,rw"); - } + + if(strg_id == 0){ + printf("read only = %llu\n", FileSys_GetDiskInfoEx('A', FST_INFO_IS_READ_ONLY)); + if(FileSys_GetDiskInfoEx('A', FST_INFO_IS_READ_ONLY)){ + system("mount -t vfat /dev/mmcblk0 /mnt/sd/ -o remount,rw"); + } + } + //#if (USE_DCF == ENABLE) // if (!UI_GetData(FL_IsCopyToCarding)) { - DCF_ScanObj(); + DBG_DUMP("DCF scan\n"); + DCF_ScanObjEx(0); /* sd card: strg_id = 0, dcf handle = 1 */ + DCF_ScanObjEx(1); // } //#endif //FileSys_GetDiskInfo(FST_INFO_DISK_SIZE); @@ -1087,16 +1092,20 @@ INT32 System_OnStrgAttach(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray) #endif break; case FST_STA_DISK_UNFORMAT: - System_SetState(SYS_STATE_FS, FS_UNFORMATTED); + if(strg_id == 0) + System_SetState(SYS_STATE_FS, FS_UNFORMATTED); break; case FST_STA_DISK_UNKNOWN_FORMAT: - System_SetState(SYS_STATE_FS, FS_UNKNOWN_FORMAT); + if(strg_id == 0) + System_SetState(SYS_STATE_FS, FS_UNKNOWN_FORMAT); break; case FST_STA_CARD_ERR: - System_SetState(SYS_STATE_FS, FS_DISK_ERROR); + if(strg_id == 0) + System_SetState(SYS_STATE_FS, FS_DISK_ERROR); break; default: - System_SetState(SYS_STATE_FS, FS_DISK_ERROR); + if(strg_id == 0) + System_SetState(SYS_STATE_FS, FS_DISK_ERROR); break; } diff --git a/code/application/source/cardv/SrcCode/System/sys_mempool.c b/code/application/source/cardv/SrcCode/System/sys_mempool.c index b70bbf66f..6550a3cc9 100755 --- a/code/application/source/cardv/SrcCode/System/sys_mempool.c +++ b/code/application/source/cardv/SrcCode/System/sys_mempool.c @@ -64,11 +64,18 @@ void mempool_init(void) } mempool_storage_nand = (UINT32)va; #endif + +#if (FS_MULTI_STRG_FUNC) + ret = vendor_common_mem_alloc_fixed_pool("filesys", &pa, (void **)&va, POOL_SIZE_FILESYS * 2, DDR_ID0); +#else ret = vendor_common_mem_alloc_fixed_pool("filesys", &pa, (void **)&va, POOL_SIZE_FILESYS, DDR_ID0); +#endif + if (ret != HD_OK) { return; } mempool_filesys = (UINT32)va; + ret = vendor_common_mem_alloc_fixed_pool("gxgfx_temp", &pa, (void **)&va, POOL_SIZE_GFX_TEMP, DDR_ID0); if (ret != HD_OK) { return; diff --git a/code/application/source/cardv/SrcCode/UIApp/Movie/UIAppMovie_Exe.c b/code/application/source/cardv/SrcCode/UIApp/Movie/UIAppMovie_Exe.c index 3e402f9fa..6a4899e3f 100755 --- a/code/application/source/cardv/SrcCode/UIApp/Movie/UIAppMovie_Exe.c +++ b/code/application/source/cardv/SrcCode/UIApp/Movie/UIAppMovie_Exe.c @@ -1247,16 +1247,17 @@ static void MovieExe_FileNamingCB(MOVIE_CFG_REC_ID id, char *pFileName) #endif #elif USE_DCF + UINT32 dcf_path = 1; /* 0:emmc 1:sd */ UINT32 nextFolderID = 0, nextFileID = 0; - if (DCF_GetDBInfo(DCF_INFO_IS_9999)) { + if (DCF_GetDBInfoEx(dcf_path, DCF_INFO_IS_9999)) { DBG_ERR("Exceed max dcf file!\r\n"); pFileName[0] = '\0'; } else { - DCF_GetNextID(&nextFolderID,&nextFileID); - DCF_MakeObjPath(nextFolderID, nextFileID, DCF_FILE_TYPE_MP4, pFileName); - DCF_AddDBfile(pFileName); - DBG_DUMP("%s added to DCF\r\n", pFileName); + DCF_GetNextIDEx(dcf_path, &nextFolderID,&nextFileID); + DCF_MakeObjPathEx(dcf_path, nextFolderID, nextFileID, DCF_FILE_TYPE_MP4, pFileName); + DCF_AddDBfileEx(dcf_path, pFileName); + DBG_DUMP("%s added to DCF Path%lu\r\n", pFileName, dcf_path); #if HUNTING_CAMERA_MCU == ENABLE char tmp[NMC_TOTALFILEPATH_MAX_LEN] = {'\0'}; sprintf(tmp, "S%03d%04d.JPG", nextFolderID, nextFileID); @@ -1317,13 +1318,14 @@ static void MovieExe_RawEncodeFileNamingCB(MOVIE_CFG_REC_ID id, char *pFileName) #elif USE_DCF UINT32 nextFolderID = 0, nextFileID = 0; + UINT32 dcf_path = 1; - if (DCF_GetDBInfo(DCF_INFO_IS_9999)) { + if (DCF_GetDBInfoEx(dcf_path, DCF_INFO_IS_9999)) { DBG_ERR("Exceed max dcf file!\r\n"); pFileName[0] = '\0'; } else { - DCF_GetNextID(&nextFolderID,&nextFileID); - DCF_MakeObjPath(nextFolderID, nextFileID, DCF_FILE_TYPE_JPG, pFileName); + DCF_GetNextIDEx(dcf_path, &nextFolderID,&nextFileID); + DCF_MakeObjPathEx(dcf_path, nextFolderID, nextFileID, DCF_FILE_TYPE_JPG, pFileName); } #endif diff --git a/code/application/source/cardv/SrcCode/UIApp/Photo/UIAppPhoto_Exe.c b/code/application/source/cardv/SrcCode/UIApp/Photo/UIAppPhoto_Exe.c index 524d5921e..4dd80a36a 100755 --- a/code/application/source/cardv/SrcCode/UIApp/Photo/UIAppPhoto_Exe.c +++ b/code/application/source/cardv/SrcCode/UIApp/Photo/UIAppPhoto_Exe.c @@ -6185,10 +6185,12 @@ INT32 PhotoExe_Preview_SliceEncode(VControl *pCtrl, UINT32 paramNum, UINT32 *par DBG_ERR("primary buffer overflow during combine jpg!\r\n"); } + UINT32 dcf_path = 1; /* 0:emmc , 1:sd */ + FstStatus.Status = ImageApp_Photo_WriteCB( dst_jpg_file.addr, dst_jpg_file.size, - HD_CODEC_TYPE_JPEG, 0); + HD_CODEC_TYPE_JPEG, dcf_path); { char* file_path = ImageApp_Photo_GetLastWriteFilePath(); @@ -6781,10 +6783,12 @@ INT32 PhotoExe_Preview_SliceEncode_CB3(void* user_data) extern INT32 ImageApp_Photo_WriteCB(UINT32 Addr, UINT32 Size, UINT32 Fmt, UINT32 uiPathId); IMG_CAP_FST_INFO FstStatus = {FST_STA_OK}; + UINT32 dcf_path = 1; /* 0:emmc 1:sd */ + FstStatus.Status = ImageApp_Photo_WriteCB( (UINT32)queue_ele_in->jpg_combined_addr, queue_ele_in->jpg_combined_size, - HD_CODEC_TYPE_JPEG, 0); + HD_CODEC_TYPE_JPEG, dcf_path); { char* file_path = ImageApp_Photo_GetLastWriteFilePath(); diff --git a/code/lib/source/ImageApp/Photo/libimageapp_photo.a b/code/lib/source/ImageApp/Photo/libimageapp_photo.a index 479f299bbe61cec68767dade9743789fc0d2945f..c290a77a912047422248b6eb28d6abf738505a5a 100644 GIT binary patch delta 3116 zcmcJRU2GKB6@bs3*|9eci3fHU)`@||#$FS^%kl+8P5*suC^{gG!00Y9(T%q_3uwIBVfjYb03QSBvNc(O(!i ztdy9;p+K>BSPSw+o!<2B7yIg1h`-k77ICHp1{I>9s)=*+nA_2$M##Y0jRuTux1bPYaRU_C3<0n=v6V|0S9{PB8xxH_>@5F;bB%D~Zllj^H z^p+E~j@X{hlIB#)@_&e(Mz;OxQ@L5g-5G~+)VvAjvrb>!1X!1M093SUNmEq1GoWyj z!Or{{fCrpPzX`)e-qje-W#o9S9E@ypb37+vpUiOFbVd!4MGcp7E^gkMnfaHb7+GkJ zo64eolYBFBf4OApV^d75B(S)`1!d0?}yhE8c%< zt7j0W*_Hp z&{6am**Cz*>zt+LJ*Lmh{PWImIHhv5e%rJtd}emi%&?>hm}Dk*XTJ2E&+_#tAKS`z zr9yQdVK}evi0PC2&Bb=6+E8~dhP|EDSNQqV5@#Wc|GmX;rJi7K@inJ^!gljxr`KuE zp?ik}upZkqZn+e;nX!;)A8Xy3O}>YsdY>>EnIvqHLc_Z&@{dH$ZMr% z8oL(XEm}Aj;mVE&(|`U$P>O8>fa`adUPM@!%XL8UXJRk70k}UL5~#)(e0e*O59Z zHXpOOo`@6Zu;qQk*8z^&@}SKTo7ZhRaeq*}2Aj<`H`v@mjG@Cmd=Vc8*iXcxbAY%S zH<2y(61U5SL;Gi8#PD;xb%Y+df6a2~XSd4IBY>j}6&TP-Tmdl4mSv)XOGCsC-t_x_X?D=R#3N{7{DXKzJP3)|Tkzk4N5Fa! z?0<}dwtc~b8$R7R;%00cf8#<6yT&hHXc1%|ufMof@cQ`67uPbKe|E8jt>&IfE$jr} zg3lEH?WLuxnrAQ7vI#DY`q?JF9H0C7kMY^b_u{jMzmLyBety(14OZa%`RNNTKI^i~ z&hYt{{n8oKMfsx3F22FiZ7)r7q6KYo+M@01K^oJUlK-ohU7~q|GSxqEux`2gYR_ zp?};jeSx|M633orZaz6)iOKm2l~4&#Z#gcTkXZv?IpG%`s!ZI!gU#i8P}9oesA;WC zY}~=>F%6Rw{<4uOfIf-;^>___{qidfcgh_tz4406@r{`Hw^x{#J~-L@xbt>J#8-Oe z4NcXs`=X_)>YZ%r7qLiDMWTm-#rL8fQq^LsT2cz>s#bjS>FVv;$GTH>wW-9aDJ7w_ zfL$1c3*K6wWFA_uxFpjxwYZGZwQ$qWxvT8mdKO8vmkVwogmn&V;%$fGL#<9B aF5gLYcnDLSm%fqtBc8cKQws#goUZ|Wewyw8 delta 3041 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 N2s6~4*(Kx0{6CogeRKc- delta 16583 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 From 6853ad1ebf138e9b15b35c671c723aa97c5e88eb Mon Sep 17 00:00:00 2001 From: payton Date: Mon, 18 Dec 2023 16:19:04 +0800 Subject: [PATCH 16/20] =?UTF-8?q?1.=E6=9B=B4=E6=94=B9sd=E5=8D=A1=E9=A9=B1?= =?UTF-8?q?=E5=8A=A8=E8=83=BD=E5=8A=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- configs/Linux/cfg_565_HUNTING_EVB_LINUX_4G_S550/nvt-peri.dtsi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configs/Linux/cfg_565_HUNTING_EVB_LINUX_4G_S550/nvt-peri.dtsi b/configs/Linux/cfg_565_HUNTING_EVB_LINUX_4G_S550/nvt-peri.dtsi index 76dc08ba5..e4e9191dc 100755 --- a/configs/Linux/cfg_565_HUNTING_EVB_LINUX_4G_S550/nvt-peri.dtsi +++ b/configs/Linux/cfg_565_HUNTING_EVB_LINUX_4G_S550/nvt-peri.dtsi @@ -77,7 +77,7 @@ max-voltage = <3300>; bus-width = <4>; neg-sample-edge = <0>; - driving = <15 15 15 20 15 15 25 25 25 25 25 25>; + driving = <25 25 25 25 25 25 25 25 25 25 25 25>; cd_gpio = ; card_power_gpio = ; /*ro_gpio = ;*/ From 01901e0c2350e9af6042719136e6fcdc851bf1cb Mon Sep 17 00:00:00 2001 From: payton Date: Mon, 18 Dec 2023 16:20:06 +0800 Subject: [PATCH 17/20] =?UTF-8?q?1.=E5=BC=BA=E5=8D=87=E4=B8=8D=E6=A3=80?= =?UTF-8?q?=E6=9F=A5fdt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- loader/Include/loader.h | 1 + loader/LibExt/LIBExt_src/Ctrl_Flow/bl_func.c | 23 +++++++++++++++----- loader/Project/Model/Src/prj_main.c | 18 +++++++++++++++ 3 files changed, 37 insertions(+), 5 deletions(-) diff --git a/loader/Include/loader.h b/loader/Include/loader.h index 0e5788c29..da17c476d 100755 --- a/loader/Include/loader.h +++ b/loader/Include/loader.h @@ -91,6 +91,7 @@ extern void loader_setRecoveryPartitionID(UINT32 partition_id); extern void loader_setVersion(UINT32 version); extern void loader_setStorageIntType(STORAGEINT type, PSTORAGE_OBJ strg_obj); extern void loader_installSpecialKeyCB(LDR_SPECIAL_KEY_CB callback); +extern void loader_installsfSpecialKeyCB(LDR_SPECIAL_KEY_CB callback); extern void loader_installCardDetectCB(LDR_CARD_DETECT_CB callback); extern void loader_installRecoveryTriggerCB(LDR_RECOVERY_TRIGGER_CB callback); extern void loader_installFastbootKeyCB(LDR_FASTBOOT_KEY_CB callback); diff --git a/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_func.c b/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_func.c index 70461ad8b..dc1caff95 100755 --- a/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_func.c +++ b/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_func.c @@ -108,6 +108,7 @@ static LDR_FASTBOOT_KEY_CB gFastbootKeyCallBack = NULL; static LDR_SPECIAL_KEY_CB gSpecialKeyCallBack = NULL; static LDR_CARD_DETECT_CB gCardDetectCallBack = NULL; static STORAGEINT gStorageIntType = STORAGEINT_UNOKNOWN; +static LDR_SPECIAL_KEY_CB gsfSpecialKeyCallBack = NULL; static LDR_RECOVERY_TRIGGER_CB gRecoveryTriggerCallBack = NULL; //#if (!USB_WRITELOADER) @@ -675,7 +676,7 @@ static void bl_cpu_timer_init(UINT32 value) #endif _THUMB2 int bl_flash_open(void) { - int er; + int er = -1; //UINT32 uiStorageVersion = (UINT32)&_load_nand_table_start_base; if (g_is_flash_open) { @@ -770,10 +771,15 @@ _THUMB2 static const void *bl_get_fdt_nvt_memory_cfg_property(const void *p_dtb, } nodeoffset = fdt_subnode_offset(p_dtb, nodeoffset_nvt_memory_cfg, &p_path[16]); + //debug_msg_var("nodeoffset_nvt_memory_cfg", nodeoffset_nvt_memory_cfg); + //debug_msg_var("nodeoffset", nodeoffset); + if (nodeoffset < 0) { return NULL; } nodep = fdt_getprop(p_dtb, nodeoffset, p_property, len); + //debug_msg_var("len", *len); + if (len == 0) { return NULL; } @@ -2014,7 +2020,7 @@ _THUMB2 static int bl_load_uboot_from_flash(unsigned char *p_fdt, unsigned char // //============Sifar==============///Payton // // } UIMenuStoreInfo; - +#if 1 _THUMB2 static void *bl_get_sys_partition(unsigned char *p_fdt /*IN*/, int *p_id /*OUT*/) { #if (FDT_SUPPORT) @@ -2099,7 +2105,7 @@ _THUMB2 static int bl_load_uboot_from_flash(unsigned char *p_fdt, unsigned char return (*ota_flag); } - +#endif /***********************************************************************************/ _THUMB2 static int bl_load_rtos_from_flash(unsigned char *p_fdt, unsigned char *p_tmp) @@ -3206,7 +3212,11 @@ _THUMB2 UINT32 bl_mainFlow(void) #endif } - UINT32 ota_flag = bl_check_ota_flag(); + UINT32 ota_flag = 0; + if(gsfSpecialKeyCallBack(0)) + { + ota_flag = bl_check_ota_flag(); + } #if !(USB_WRITELOADER || UART_UPDATE) if (bl_load_rtos_from_uart(uiUpdateMainBinBufAddr, FAT_READ_TOTAL_FILE_LENGTH, &adjusted_addr, &adjusted_size) == 0) { @@ -3620,7 +3630,10 @@ _THUMB2 void loader_installSpecialKeyCB(LDR_SPECIAL_KEY_CB callback) { gSpecialKeyCallBack = callback; } - +_THUMB2 void loader_installsfSpecialKeyCB(LDR_SPECIAL_KEY_CB callback) +{ + gsfSpecialKeyCallBack = callback; +} _THUMB2 void loader_installCardDetectCB(LDR_CARD_DETECT_CB callback) { gCardDetectCallBack = callback; diff --git a/loader/Project/Model/Src/prj_main.c b/loader/Project/Model/Src/prj_main.c index 9873222fb..167593713 100755 --- a/loader/Project/Model/Src/prj_main.c +++ b/loader/Project/Model/Src/prj_main.c @@ -163,6 +163,23 @@ static BOOL prj_isSpecialKeyPressed(UINT32 ota_flag) } //return TRUE; } +static BOOL prj_issfSpecialKeyPressed(UINT32 ota_flag) +{ + + #if (MODEL == MODEL_S530) + if ((!gpio_getPin(GPIO_SPECIAL_KEY)) && (gpio_getPin(GPIO_SPECIAL_USB))) + #elif (MODEL == MODEL_S550) + if ((gpio_getPin(GPIO_SPECIAL_KEY)) && (gpio_getPin(GPIO_SPECIAL_USB))) + #endif + { + return TRUE; + } + else + { + return FALSE; + } + //return TRUE; +} #endif #if (FASTBOOT_KEY == ENABLE) @@ -254,6 +271,7 @@ _THUMB2 void prj_main(void) #if (SPECIAL_KEY_UPDATE == ENABLE) loader_installSpecialKeyCB(prj_isSpecialKeyPressed); + loader_installsfSpecialKeyCB(prj_issfSpecialKeyPressed); #endif #if (CHECK_CARD_EXIST == ENABLE) From 47674661eaaeb17f1dfbbcf0d2c8a129bb2484b8 Mon Sep 17 00:00:00 2001 From: payton Date: Mon, 18 Dec 2023 16:29:54 +0800 Subject: [PATCH 18/20] =?UTF-8?q?1.ota=20cmd=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- code/lib/source/sifar/code/source/common/sf_common.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) 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 453e6d5cb..2b63c91ca 100755 --- a/code/lib/source/sifar/code/source/common/sf_common.c +++ b/code/lib/source/sifar/code/source/common/sf_common.c @@ -1352,7 +1352,11 @@ BOOL sf_cmd_ftp_ota(unsigned char argc, char **argv) //UINT32 value; UIMenuStoreInfo *puiPara = sf_ui_para_get(); if(4 == argc) - { + { + memset(puiPara ->OtaFtpIp,'\0', sizeof(puiPara ->OtaFtpIp)); + memset(puiPara ->OtaFtpPort, '\0', sizeof(puiPara ->OtaFtpPort)); + memset(puiPara ->OtaFtpUserName, '\0', sizeof(puiPara ->OtaFtpUserName)); + memset(puiPara ->OtaFtpPassWord,'\0', sizeof(puiPara ->OtaFtpPassWord)); strncpy((char *)puiPara->OtaFtpIp, argv[0], ((sizeof(puiPara->OtaFtpIp) <= strlen(argv[0])) ? (sizeof(puiPara->OtaFtpIp)) : (strlen(argv[0])))); strncpy((char *)puiPara->OtaFtpPort, argv[1], ((sizeof(puiPara->OtaFtpPort) <= strlen(argv[1])) ? (sizeof(puiPara->OtaFtpPort)) : (strlen(argv[1])))); strncpy((char *)puiPara->OtaFtpUserName, argv[2], ((sizeof(puiPara->OtaFtpUserName) <= strlen(argv[2])) ? (sizeof(puiPara->OtaFtpUserName)) : (strlen(argv[2])))); From 73c15c532c21c52e80b76271a770f8a3738e5f47 Mon Sep 17 00:00:00 2001 From: payton Date: Mon, 18 Dec 2023 16:30:16 +0800 Subject: [PATCH 19/20] =?UTF-8?q?1.=E4=BF=AE=E6=94=B9ota?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../source/cardv/SrcCode/PrjCfg_HUNTING_S550.h | 4 ++-- .../application/source/sf_app/code/source/4gMng/sf_ftp.c | 9 +++++---- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/code/application/source/cardv/SrcCode/PrjCfg_HUNTING_S550.h b/code/application/source/cardv/SrcCode/PrjCfg_HUNTING_S550.h index 587c62976..918345cbe 100755 --- a/code/application/source/cardv/SrcCode/PrjCfg_HUNTING_S550.h +++ b/code/application/source/cardv/SrcCode/PrjCfg_HUNTING_S550.h @@ -966,8 +966,8 @@ #define SF_HW_TEST DISABLE #define SF_MODULE_UP_FILE "EG915QNA.tar.bz2" #define SF_MODULE_UP_FILE_PATH "/mnt/sd/EG915QNA.tar.bz2" -#define SF_CAM_UP_FILE "S530.tar.bz2" -#define SF_CAM_UP_FILE_PATH "/mnt/sd/S530.tar.bz2" +#define SF_CAM_UP_FILE "CAM_OTA_S550/SPHOST_REVEAL.BIN" +#define SF_CAM_UP_FILE_PATH "/mnt/sd/FW98565A.bin" #define SF_CAMERA_GPS_INFO_FILENAME "/tmp/gps.txt" #define SF_UBOOT_UPDATA_FW ENABLE 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 4c296a8b8..e372ae237 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 @@ -1499,10 +1499,11 @@ SINT32 sf_camera_ota_ftp(void) } ret = ftp_download_file(SF_CAM_UP_FILE,SF_CAM_UP_FILE_PATH,0); - if(SUCCESS == ret){ - sprintf(Cmd, "tar -xjvf %s -C %s", SF_CAM_UP_FILE_PATH, SF_SD_ROOT); - MLOGD("%s\n", Cmd); - ret = system(Cmd); + //if(SUCCESS == ret) + { + // sprintf(Cmd, "tar -xjvf %s -C %s", SF_CAM_UP_FILE_PATH, SF_SD_ROOT); + // MLOGD("%s\n", Cmd); + // ret = system(Cmd); if(SUCCESS == ret){ sf_set_fw_update(1); sf_set_key_fw_update(sf_get_fw_update()); From b0325af260cc737c55bc4f8ff243a19f4eca6460 Mon Sep 17 00:00:00 2001 From: payton Date: Mon, 18 Dec 2023 16:46:27 +0800 Subject: [PATCH 20/20] =?UTF-8?q?1.=E5=8E=BB=E6=8E=89loader=E4=B8=AD?= =?UTF-8?q?=E9=97=B4=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index c47fcd0ba..bb54a4992 100755 --- a/.gitignore +++ b/.gitignore @@ -57,4 +57,5 @@ BSP/root-fs/rootfs/usr/lib/libglib-2.0.so.0 BSP/root-fs/rootfs/usr/lib/libintl.so.8 BSP/root-fs/rootfs/usr/lib/libncurses.so.6 BSP/root-fs/rootfs/usr/lib/libreadline.so.8 -BSP/root-fs/rootfs/usr/lib/libbluetooth.so.3 \ No newline at end of file +BSP/root-fs/rootfs/usr/lib/libbluetooth.so.3 +loader/Project/Model/Loader565_Data