Merge branch 'Branch_S550_GUI' of 192.168.6.216:/linux-em-group/s530-ntk into branch_s550_gui_debug

This commit is contained in:
zyj 2023-11-02 19:55:26 +08:00
commit b313530625
64 changed files with 7498 additions and 1997 deletions

View File

@ -916,6 +916,7 @@
#define HUNTING_CAMERA_4G ENABLE//DISABLE
#define PHOTO_PREVIEW_SLICE_ENC_FUNC ENABLE
#define PHOTO_PREVIEW_SLICE_ENC_VER2_FUNC ENABLE
#define PHOTO_PREVIEW_SLICE_ENC_SRC_STAMP ENABLE
#define DZOOM_FUNC ENABLE
#define HUNTING_MCU_I2C DISABLE
#define HUNTING_MCU_UART ENABLE

View File

@ -922,31 +922,31 @@ UINT32 BackgroundFormatCard(void)
#endif
//#NT#2016/05/30#Lincy Lin -end
vos_util_delay_ms(1000);
// vos_util_delay_ms(1000);
SysMain_system("sync");
#if HUNTING_CAMERA_MCU == ENABLE
//vos_util_delay_ms(1000);
sf_sys_status_led_set(SF_LED_SYS_STATE_SD_FORMAT_SUCCESS);
if(sf_get_pir_statu_flag()){
vos_util_delay_ms(3000);
}
// sf_sys_status_led_set(SF_LED_SYS_STATE_SD_FORMAT_SUCCESS);
// if(sf_get_pir_statu_flag()){
// vos_util_delay_ms(3000);
// }
#endif
}
else
{
#if HUNTING_CAMERA_MCU == ENABLE
sf_sys_status_led_set(SF_LED_SYS_STATE_SD_FORMAT_FAIL);
if(sf_get_pir_statu_flag()){
vos_util_delay_ms(3000);
}
// sf_sys_status_led_set(SF_LED_SYS_STATE_SD_FORMAT_FAIL);
// if(sf_get_pir_statu_flag()){
// vos_util_delay_ms(3000);
// }
#endif
}
MovieExe_ResetFileSN();
#if HUNTING_CAMERA_MCU == ENABLE
sf_sys_status_led_set(SF_LED_SYS_STATE_SD_FORMAT_EXIT);
if(sf_get_pir_statu_flag()){
vos_util_delay_ms(1000);
}
// sf_sys_status_led_set(SF_LED_SYS_STATE_SD_FORMAT_EXIT);
// if(sf_get_pir_statu_flag()){
// vos_util_delay_ms(1000);
// }
sf_set_card_statu(ret);
#endif
DBG_FUNC_END("\r\n");

View File

@ -73,12 +73,29 @@
#else
#if PHOTO_PREVIEW_SLICE_ENC_FUNC
#define PHOTO_MAX_CAP_SIZE UIAPP_PHOTO_SIZE_40M /* Max slice encode size */
#define PHOTO_SLICE_ENC_MIN_CAP_SIZE UIAPP_PHOTO_SIZE_2M /* UI Menu only display options which size is larger than PHOTO_SLICE_ENC_MIN_CAP_SIZE */
#define PHOTO_MIN_CAP_SIZE UIAPP_PHOTO_SIZE_2M /* UI Menu only display options which size is larger than PHOTO_SLICE_ENC_MIN_CAP_SIZE */
#else
#define PHOTO_MAX_CAP_SIZE UIAPP_PHOTO_SIZE_12M
#endif
#endif
#if PHOTO_PREVIEW_SLICE_ENC_FUNC == ENABLE
#define CFG_JPG_PREVIEW_SLICE_ENC_PRIMARY_BUF_WIDTH 1920
#define CFG_JPG_PREVIEW_SLICE_ENC_PRIMARY_BUF_HEIGHT 1080
#define CFG_JPG_PREVIEW_SLICE_ENC_PRIMARY_BUF_SIZE VDO_YUV_BUFSIZE(CFG_JPG_PREVIEW_SLICE_ENC_PRIMARY_BUF_WIDTH, CFG_JPG_PREVIEW_SLICE_ENC_PRIMARY_BUF_HEIGHT, HD_VIDEO_PXLFMT_YUV420)
#define CFG_JPG_PREVIEW_SLICE_ENC_BS_BUF_RATIO JPG_COMERESSED_RATIO_8 /* (yuv size / ratio) + header = bs buf size */
#define CFG_JPG_PREVIEW_SLICE_ENC_INIT_QUALITY_PRIMARY 90
#define CFG_JPG_PREVIEW_SLICE_ENC_INIT_QUALITY_THUMBNAIL 70
#define CFG_JPG_PREVIEW_SLICE_ENC_INIT_QUALITY_SCREENNAIL 70
#define CFG_JPG_PREVIEW_SLICE_ENC_QUALITY_STEP 10
#define CFG_JPG_PREVIEW_SLICE_ENC_RC_SCREENNAIL 1 /* rate control */
#define CFG_JPG_PREVIEW_SLICE_ENC_RC_SCREENNAIL_UBOUND (SCREENNAIL_TARGETBYTERATE + (SCREENNAIL_TARGETBYTERATE * 20 / 100))
#define CFG_JPG_PREVIEW_SLICE_ENC_RC_SCREENNAIL_LBOUND (SCREENNAIL_TARGETBYTERATE - (SCREENNAIL_TARGETBYTERATE * 20 / 100))
#define CFG_JPG_PREVIEW_SLICE_ENC_RC_SCREENNAIL_QUALITY_STEP 2
#endif
#define JPG_COMERESSED_RATIO_5 (5)
#define JPG_COMERESSED_RATIO_6 (6)
#define JPG_COMERESSED_RATIO_7 (7)
@ -105,22 +122,7 @@
#define PRIMARY_TARGETBYTERATE_LBOUND(TBR) (TBR - (TBR * 15 / 100))
#define JPG_FILE_BUFFER_SIZE(primary, screenail, thumbnail, exif) (primary + screenail + thumbnail + exif*6)
#if PHOTO_PREVIEW_SLICE_ENC_FUNC == ENABLE
#define CFG_JPG_PREVIEW_SLICE_ENC_PRIMARY_BUF_WIDTH 1920
#define CFG_JPG_PREVIEW_SLICE_ENC_PRIMARY_BUF_HEIGHT 1080
#define CFG_JPG_PREVIEW_SLICE_ENC_PRIMARY_BUF_SIZE VDO_YUV_BUFSIZE(CFG_JPG_PREVIEW_SLICE_ENC_PRIMARY_BUF_WIDTH, CFG_JPG_PREVIEW_SLICE_ENC_PRIMARY_BUF_HEIGHT, HD_VIDEO_PXLFMT_YUV420)
#define CFG_JPG_PREVIEW_SLICE_ENC_BS_BUF_RATIO 8 /* (yuv size / ratio) + header = bs buf size */
#define CFG_JPG_PREVIEW_SLICE_ENC_INIT_QUALITY_PRIMARY 90
#define CFG_JPG_PREVIEW_SLICE_ENC_INIT_QUALITY_THUMBNAIL 70
#define CFG_JPG_PREVIEW_SLICE_ENC_INIT_QUALITY_SCREENNAIL 70
#define CFG_JPG_PREVIEW_SLICE_ENC_QUALITY_STEP 3
#define CFG_JPG_PREVIEW_SLICE_ENC_RC_SCREENNAIL 1 /* rate control */
#define CFG_JPG_PREVIEW_SLICE_ENC_RC_SCREENNAIL_UBOUND (SCREENNAIL_TARGETBYTERATE + (SCREENNAIL_TARGETBYTERATE * 20 / 100))
#define CFG_JPG_PREVIEW_SLICE_ENC_RC_SCREENNAIL_LBOUND (SCREENNAIL_TARGETBYTERATE - (SCREENNAIL_TARGETBYTERATE * 20 / 100))
#define CFG_JPG_PREVIEW_SLICE_ENC_RC_SCREENNAIL_QUALITY_STEP 2
#endif
extern UINT32 gPhotoFrameBuf;

View File

@ -853,7 +853,7 @@ void UiDateImprint_ChkUpdateData(DATE_IMPRINT_INFO *pInfo)
DBG_IND("event=%d, bScreenNailEn=%d, bGenEn=%d\r\n",pInfo->pCapInfo->event,bScreenNailEn,bGenEn);
//if (pInfo->pCapInfo->event == CAP_DS_EVENT_QV || pInfo->pCapInfo->event == CAP_DS_EVENT_SCR) {
if (pInfo->pCapInfo->event == CAP_DS_EVENT_QV || bGenEn) {
if (pInfo->pCapInfo->event == CAP_DS_EVENT_PRI) {
#if HUNTING_CAMERA_MCU == ENABLE
pInfo->isStrDirty = UiDateImprint_UpdateDate(pInfo->StrBuf,sizeof(pInfo->StrBuf));
#else

View File

@ -1436,7 +1436,7 @@
"X": 0,
"Y": 0
},
"source": "sf_wifi_unconnected",
"source": "sf_wifi_connected",
"styles": [
{
"part": 0,

View File

@ -1682,7 +1682,7 @@
"X": 0,
"Y": 0
},
"source": "sf_wifi_unconnected",
"source": "sf_wifi_connected",
"styles": [
{
"part": 0,
@ -1786,7 +1786,7 @@
"X": 0,
"Y": 0
},
"source": "sf_wifi_unconnected",
"source": "sf_wifi_connected",
"styles": [
{
"part": 0,
@ -1838,7 +1838,7 @@
"X": 0,
"Y": 0
},
"source": "sf_bluetooth_unconnected",
"source": "sf_bluetooth_connected",
"styles": [
{
"part": 0,

View File

@ -4767,6 +4767,11 @@
"filename": "icons/sf_play.bmp",
"name": "sf_play"
},
{
"colorFormat": "Indexed 256 in RGB332",
"filename": "icons/sf_pwd_down-up.bmp",
"name": "sf_pwd_down-up"
},
{
"colorFormat": "Indexed 256 in RGB332",
"filename": "icons/sf_qr.bmp",

View File

@ -490,6 +490,7 @@ lv_plugin_img_t lv_plugin_UIFlowLVGL_img_table[] =
{ &sf_password },
{ &sf_picture_upon_daily_report },
{ &sf_play },
{ &sf_pwd_down_up },
{ &sf_qr },
{ &sf_reset },
{ &sf_right },

View File

@ -535,6 +535,7 @@ LV_IMG_DECLARE(sf_operating_time);
LV_IMG_DECLARE(sf_password);
LV_IMG_DECLARE(sf_picture_upon_daily_report);
LV_IMG_DECLARE(sf_play);
LV_IMG_DECLARE(sf_pwd_down_up);
LV_IMG_DECLARE(sf_qr);
LV_IMG_DECLARE(sf_reset);
LV_IMG_DECLARE(sf_right);
@ -1019,38 +1020,39 @@ LV_IMG_DECLARE(work_mode);
#define LV_PLUGIN_IMG_ID_SF_PASSWORD 450
#define LV_PLUGIN_IMG_ID_SF_PICTURE_UPON_DAILY_REPORT 451
#define LV_PLUGIN_IMG_ID_SF_PLAY 452
#define LV_PLUGIN_IMG_ID_SF_QR 453
#define LV_PLUGIN_IMG_ID_SF_RESET 454
#define LV_PLUGIN_IMG_ID_SF_RIGHT 455
#define LV_PLUGIN_IMG_ID_SF_SEND_TYPE 456
#define LV_PLUGIN_IMG_ID_SF_SENSITVITY 457
#define LV_PLUGIN_IMG_ID_SF_SHOOT_1 458
#define LV_PLUGIN_IMG_ID_SF_SIGNAL0 459
#define LV_PLUGIN_IMG_ID_SF_SIGNAL1 460
#define LV_PLUGIN_IMG_ID_SF_SIGNAL2 461
#define LV_PLUGIN_IMG_ID_SF_SIGNAL3 462
#define LV_PLUGIN_IMG_ID_SF_SIGNAL4 463
#define LV_PLUGIN_IMG_ID_SF_SMS_CTRL 464
#define LV_PLUGIN_IMG_ID_SF_STOP 465
#define LV_PLUGIN_IMG_ID_SF_TAB_RELEASE 466
#define LV_PLUGIN_IMG_ID_SF_TAB_SELECT 467
#define LV_PLUGIN_IMG_ID_SF_VIDEO_LENGTH 468
#define LV_PLUGIN_IMG_ID_SF_VIDEO_SIZE 469
#define LV_PLUGIN_IMG_ID_SF_WARNING_BG 470
#define LV_PLUGIN_IMG_ID_SF_WARNING_NOT_SELECT 471
#define LV_PLUGIN_IMG_ID_SF_WARNING_SELECTED 472
#define LV_PLUGIN_IMG_ID_SF_WIFI_CONNECTED 473
#define LV_PLUGIN_IMG_ID_SF_WIFI_UNCONNECTED 474
#define LV_PLUGIN_IMG_ID_SF_WIFI_UNSUPPORT 475
#define LV_PLUGIN_IMG_ID_SY_BG_102X28 476
#define LV_PLUGIN_IMG_ID_SY_BG_32X28 477
#define LV_PLUGIN_IMG_ID_SY_BG_MSG 478
#define LV_PLUGIN_IMG_ID_SY_BG_MSG2 479
#define LV_PLUGIN_IMG_ID_SY_LUZHI 480
#define LV_PLUGIN_IMG_ID_SY_REDLINE 481
#define LV_PLUGIN_IMG_ID_SY_REDLINE2 482
#define LV_PLUGIN_IMG_ID_WORK_MODE 483
#define LV_PLUGIN_IMG_TABLE_SIZE 484
#define LV_PLUGIN_IMG_ID_SF_PWD_DOWN_UP 453
#define LV_PLUGIN_IMG_ID_SF_QR 454
#define LV_PLUGIN_IMG_ID_SF_RESET 455
#define LV_PLUGIN_IMG_ID_SF_RIGHT 456
#define LV_PLUGIN_IMG_ID_SF_SEND_TYPE 457
#define LV_PLUGIN_IMG_ID_SF_SENSITVITY 458
#define LV_PLUGIN_IMG_ID_SF_SHOOT_1 459
#define LV_PLUGIN_IMG_ID_SF_SIGNAL0 460
#define LV_PLUGIN_IMG_ID_SF_SIGNAL1 461
#define LV_PLUGIN_IMG_ID_SF_SIGNAL2 462
#define LV_PLUGIN_IMG_ID_SF_SIGNAL3 463
#define LV_PLUGIN_IMG_ID_SF_SIGNAL4 464
#define LV_PLUGIN_IMG_ID_SF_SMS_CTRL 465
#define LV_PLUGIN_IMG_ID_SF_STOP 466
#define LV_PLUGIN_IMG_ID_SF_TAB_RELEASE 467
#define LV_PLUGIN_IMG_ID_SF_TAB_SELECT 468
#define LV_PLUGIN_IMG_ID_SF_VIDEO_LENGTH 469
#define LV_PLUGIN_IMG_ID_SF_VIDEO_SIZE 470
#define LV_PLUGIN_IMG_ID_SF_WARNING_BG 471
#define LV_PLUGIN_IMG_ID_SF_WARNING_NOT_SELECT 472
#define LV_PLUGIN_IMG_ID_SF_WARNING_SELECTED 473
#define LV_PLUGIN_IMG_ID_SF_WIFI_CONNECTED 474
#define LV_PLUGIN_IMG_ID_SF_WIFI_UNCONNECTED 475
#define LV_PLUGIN_IMG_ID_SF_WIFI_UNSUPPORT 476
#define LV_PLUGIN_IMG_ID_SY_BG_102X28 477
#define LV_PLUGIN_IMG_ID_SY_BG_32X28 478
#define LV_PLUGIN_IMG_ID_SY_BG_MSG 479
#define LV_PLUGIN_IMG_ID_SY_BG_MSG2 480
#define LV_PLUGIN_IMG_ID_SY_LUZHI 481
#define LV_PLUGIN_IMG_ID_SY_REDLINE 482
#define LV_PLUGIN_IMG_ID_SY_REDLINE2 483
#define LV_PLUGIN_IMG_ID_WORK_MODE 484
#define LV_PLUGIN_IMG_TABLE_SIZE 485
#define LV_PLUGIN_FONT_ID_LV_FONT_MONTSERRAT_16 1
#define LV_PLUGIN_FONT_ID_NOTOSANSCJKSC_BLACK_16_1BPP 2

View File

@ -4,6 +4,8 @@
#include "UIInfo/UIInfo.h"
#include "UIWnd/UIFlow.h"
#include "sf_systemMng.h"
// #include "sf_commu_mcu_reg.h"
#include "sf_common.h"
TMDEF_BEGIN_OPTIONS(CAMERA_MODE)
TMDEF_OPTION_TEXT_S(CAMERA_MODE_PHOTO, TM_OPTION_ENABLE)
@ -929,6 +931,9 @@ void Option_DateTime_Key(lv_obj_t* obj, uint32_t key)
printf("\033[33m[Option_DateTime_Key]SELECT\033[0m\n");
puiPara->DateAuto = SF_DATE_MANUAL;
sf_sys_rtc_time_set(&gDateTime);
system("hwclock -s");
// sf_set_mcu_rtc_flag(1);
sf_cardv_set_mcu_rtc_flag();
lv_plugin_scr_close(obj, gen_nvtmsg_data(NVTRET_ENTER_MENU, 0));
hidde_DateTime_page();
break;

View File

@ -1497,7 +1497,7 @@ lv_obj_t* UIFlowMovie_create(){
lv_obj_set_drag(image_wifi_connected, false);
lv_obj_set_pos(image_wifi_connected, 40, 0);
lv_obj_set_size(image_wifi_connected, 48, 40);
lv_img_set_src(image_wifi_connected, &sf_wifi_unconnected);
lv_img_set_src(image_wifi_connected, &sf_wifi_connected);
lv_obj_add_style(image_wifi_connected, 0, &image_wifi_connected_s0);
image_wifi_connected_scr_uiflowmovie = image_wifi_connected;

View File

@ -314,6 +314,15 @@ static void update_camera_message(void)
// if((puiPara->CamMode == SF_CAM_MODE_PHOTO) || (puiPara->CamMode == SF_CAM_MODE_PHOTO_VIDEO))
switch (puiPara->ImgSize)
{
case PHOTO_SIZE_40M:
lv_label_set_text(label_5_scr_uiflowmovie, "40M");
break;
case PHOTO_SIZE_32M:
lv_label_set_text(label_5_scr_uiflowmovie, "32M");
break;
case PHOTO_SIZE_24M:
lv_label_set_text(label_5_scr_uiflowmovie, "24M");
break;
case PHOTO_SIZE_16M:
lv_label_set_text(label_5_scr_uiflowmovie, "16M");
break;
@ -323,36 +332,52 @@ static void update_camera_message(void)
case PHOTO_SIZE_8M:
lv_label_set_text(label_5_scr_uiflowmovie, "8M");
break;
case PHOTO_SIZE_5M:
lv_label_set_text(label_5_scr_uiflowmovie, "5M");
break;
default:
break;
}
switch (puiPara->Multishot)
{
case 1:
case CONTINUE_SHOT_OFF:
lv_label_set_text(label_4_scr_uiflowmovie, "1P");
break;
case 2:
case CONTINUE_SHOT_BURST_2:
lv_label_set_text(label_4_scr_uiflowmovie, "2P");
break;
case 3:
case CONTINUE_SHOT_BURST_3:
lv_label_set_text(label_4_scr_uiflowmovie, "3P");
break;
case CONTINUE_SHOT_BURST_4:
lv_label_set_text(label_4_scr_uiflowmovie, "4P");
break;
case CONTINUE_SHOT_BURST_5:
lv_label_set_text(label_4_scr_uiflowmovie, "5P");
break;
default:
break;
}
UINT32 freePicNum = 0;
// PhotoExe_GetTotalPicNum();
UINT32 cardStatus = System_GetState(SYS_STATE_CARD);
if (cardStatus != CARD_REMOVED)
{
if (UIStorageCheck(STORAGE_CHECK_ERROR, NULL) == TRUE)
{
lv_label_set_text(label_6_scr_uiflowmovie, "NO SD CARD");
lv_label_set_text(label_6_scr_uiflowmovie, "SD CARD ERROR");
}
else
{
UIStorageCheck(STORAGE_CHECK_FULL, &freePicNum);
lv_label_set_text(label_6_scr_uiflowmovie, Get_FreePicNumString(freePicNum));
}
}
else
{
lv_label_set_text(label_6_scr_uiflowmovie, "NO SD CARD");
}
}
static void update_rec_time(void)
@ -733,7 +758,7 @@ static void UIFlowMovie_ScrOpen(lv_obj_t* obj)
}
//#NT#2018/08/10#KCHong -end
#if HUNTING_CAMERA_MCU == ENABLE
if(puiPara->CamMode == SF_CAM_MODE_PHOTO_VIDEO)
if(puiPara->CamMode == SF_CAM_MODE_PHOTO_VIDEO || puiPara->CamMode == SF_CAM_MODE_VIDEO2)
#else
if(SysGetFlag(CamMode) == SF_CAM_MODE_PHOTO_VIDEO)
#endif
@ -1382,7 +1407,7 @@ static void UIFlowMovie_NVTMSG(lv_obj_t* obj, const LV_USER_EVENT_NVTMSG_DATA* m
UIFlowMovie_REC_FINISH(obj,msg);
#if HUNTING_CAMERA_MCU == ENABLE
if(puiPara->CamMode == SF_CAM_MODE_PHOTO_VIDEO){
if(puiPara->CamMode == SF_CAM_MODE_PHOTO_VIDEO || puiPara->CamMode == SF_CAM_MODE_VIDEO2){
#else
if(SysGetFlag(CamMode) == SF_CAM_MODE_PHOTO_VIDEO){
#endif

View File

@ -892,7 +892,7 @@ lv_obj_t* UIFlowPhoto_create(){
STYLE_COLOR_PROP(0x3a, 0x01, 0xa2, 0xb1) ; lv_style_set_outline_color(&button_1_s0, LV_STATE_DEFAULT, color);
STYLE_COLOR_PROP(0x01, 0x00, 0x00, 0x00) ; lv_style_set_shadow_color(&button_1_s0, LV_STATE_DEFAULT, color);
STYLE_COLOR_PROP(0x01, 0x00, 0x00, 0x00) ; lv_style_set_pattern_recolor(&button_1_s0, LV_STATE_DEFAULT, color);
STYLE_COLOR_PROP(0xd3, 0x3c, 0x3c, 0x3c) ; lv_style_set_value_color(&button_1_s0, LV_STATE_DEFAULT, color);
STYLE_COLOR_PROP(0xd3, 0x31, 0x40, 0x4f) ; lv_style_set_value_color(&button_1_s0, LV_STATE_DEFAULT, color);
lv_style_set_value_font(&button_1_s0,LV_STATE_DEFAULT,&lv_font_montserrat_16);
STYLE_COLOR_PROP(0x3a, 0x01, 0xa2, 0xb1) ; lv_style_set_bg_color(&button_1_s0, LV_STATE_CHECKED, color);
STYLE_COLOR_PROP(0x02, 0xff, 0xff, 0xff) ; lv_style_set_bg_grad_color(&button_1_s0, LV_STATE_CHECKED, color);
@ -900,42 +900,42 @@ lv_obj_t* UIFlowPhoto_create(){
STYLE_COLOR_PROP(0x3a, 0x01, 0xa2, 0xb1) ; lv_style_set_outline_color(&button_1_s0, LV_STATE_CHECKED, color);
STYLE_COLOR_PROP(0x01, 0x00, 0x00, 0x00) ; lv_style_set_shadow_color(&button_1_s0, LV_STATE_CHECKED, color);
STYLE_COLOR_PROP(0x01, 0x00, 0x00, 0x00) ; lv_style_set_pattern_recolor(&button_1_s0, LV_STATE_CHECKED, color);
STYLE_COLOR_PROP(0xd3, 0x3c, 0x3c, 0x3c) ; lv_style_set_value_color(&button_1_s0, LV_STATE_CHECKED, color);
STYLE_COLOR_PROP(0x02, 0xff, 0xff, 0xff) ; lv_style_set_value_color(&button_1_s0, LV_STATE_CHECKED, color);
STYLE_COLOR_PROP(0x02, 0xff, 0xff, 0xff) ; lv_style_set_bg_color(&button_1_s0, LV_STATE_FOCUSED, color);
STYLE_COLOR_PROP(0x02, 0xff, 0xff, 0xff) ; lv_style_set_bg_grad_color(&button_1_s0, LV_STATE_FOCUSED, color);
STYLE_COLOR_PROP(0x3a, 0x01, 0xa2, 0xb1) ; lv_style_set_border_color(&button_1_s0, LV_STATE_FOCUSED, color);
STYLE_COLOR_PROP(0x3a, 0x01, 0xa2, 0xb1) ; lv_style_set_outline_color(&button_1_s0, LV_STATE_FOCUSED, color);
STYLE_COLOR_PROP(0x01, 0x00, 0x00, 0x00) ; lv_style_set_shadow_color(&button_1_s0, LV_STATE_FOCUSED, color);
STYLE_COLOR_PROP(0x01, 0x00, 0x00, 0x00) ; lv_style_set_pattern_recolor(&button_1_s0, LV_STATE_FOCUSED, color);
STYLE_COLOR_PROP(0xd3, 0x3c, 0x3c, 0x3c) ; lv_style_set_value_color(&button_1_s0, LV_STATE_FOCUSED, color);
STYLE_COLOR_PROP(0xd3, 0x31, 0x40, 0x4f) ; lv_style_set_value_color(&button_1_s0, LV_STATE_FOCUSED, color);
STYLE_COLOR_PROP(0x02, 0xff, 0xff, 0xff) ; lv_style_set_bg_color(&button_1_s0, LV_STATE_EDITED, color);
STYLE_COLOR_PROP(0x02, 0xff, 0xff, 0xff) ; lv_style_set_bg_grad_color(&button_1_s0, LV_STATE_EDITED, color);
STYLE_COLOR_PROP(0x3a, 0x01, 0xa2, 0xb1) ; lv_style_set_border_color(&button_1_s0, LV_STATE_EDITED, color);
STYLE_COLOR_PROP(0x13, 0x44, 0xd1, 0xb6) ; lv_style_set_outline_color(&button_1_s0, LV_STATE_EDITED, color);
STYLE_COLOR_PROP(0x01, 0x00, 0x00, 0x00) ; lv_style_set_shadow_color(&button_1_s0, LV_STATE_EDITED, color);
STYLE_COLOR_PROP(0x01, 0x00, 0x00, 0x00) ; lv_style_set_pattern_recolor(&button_1_s0, LV_STATE_EDITED, color);
STYLE_COLOR_PROP(0xd3, 0x3c, 0x3c, 0x3c) ; lv_style_set_value_color(&button_1_s0, LV_STATE_EDITED, color);
STYLE_COLOR_PROP(0xd3, 0x31, 0x40, 0x4f) ; lv_style_set_value_color(&button_1_s0, LV_STATE_EDITED, color);
STYLE_COLOR_PROP(0x02, 0xff, 0xff, 0xff) ; lv_style_set_bg_color(&button_1_s0, LV_STATE_HOVERED, color);
STYLE_COLOR_PROP(0x02, 0xff, 0xff, 0xff) ; lv_style_set_bg_grad_color(&button_1_s0, LV_STATE_HOVERED, color);
STYLE_COLOR_PROP(0x3a, 0x01, 0xa2, 0xb1) ; lv_style_set_border_color(&button_1_s0, LV_STATE_HOVERED, color);
STYLE_COLOR_PROP(0x3a, 0x01, 0xa2, 0xb1) ; lv_style_set_outline_color(&button_1_s0, LV_STATE_HOVERED, color);
STYLE_COLOR_PROP(0x01, 0x00, 0x00, 0x00) ; lv_style_set_shadow_color(&button_1_s0, LV_STATE_HOVERED, color);
STYLE_COLOR_PROP(0x01, 0x00, 0x00, 0x00) ; lv_style_set_pattern_recolor(&button_1_s0, LV_STATE_HOVERED, color);
STYLE_COLOR_PROP(0xd3, 0x3c, 0x3c, 0x3c) ; lv_style_set_value_color(&button_1_s0, LV_STATE_HOVERED, color);
STYLE_COLOR_PROP(0xd3, 0x31, 0x40, 0x4f) ; lv_style_set_value_color(&button_1_s0, LV_STATE_HOVERED, color);
STYLE_COLOR_PROP(0xbc, 0xcc, 0xec, 0xef) ; lv_style_set_bg_color(&button_1_s0, LV_STATE_PRESSED, color);
STYLE_COLOR_PROP(0x02, 0xff, 0xff, 0xff) ; lv_style_set_bg_grad_color(&button_1_s0, LV_STATE_PRESSED, color);
STYLE_COLOR_PROP(0x3a, 0x01, 0xa2, 0xb1) ; lv_style_set_border_color(&button_1_s0, LV_STATE_PRESSED, color);
STYLE_COLOR_PROP(0x3a, 0x01, 0xa2, 0xb1) ; lv_style_set_outline_color(&button_1_s0, LV_STATE_PRESSED, color);
STYLE_COLOR_PROP(0x01, 0x00, 0x00, 0x00) ; lv_style_set_shadow_color(&button_1_s0, LV_STATE_PRESSED, color);
STYLE_COLOR_PROP(0x01, 0x00, 0x00, 0x00) ; lv_style_set_pattern_recolor(&button_1_s0, LV_STATE_PRESSED, color);
STYLE_COLOR_PROP(0xd3, 0x3c, 0x3c, 0x3c) ; lv_style_set_value_color(&button_1_s0, LV_STATE_PRESSED, color);
STYLE_COLOR_PROP(0xd3, 0x31, 0x40, 0x4f) ; lv_style_set_value_color(&button_1_s0, LV_STATE_PRESSED, color);
STYLE_COLOR_PROP(0x02, 0xff, 0xff, 0xff) ; lv_style_set_bg_color(&button_1_s0, LV_STATE_DISABLED, color);
STYLE_COLOR_PROP(0x02, 0xff, 0xff, 0xff) ; lv_style_set_bg_grad_color(&button_1_s0, LV_STATE_DISABLED, color);
STYLE_COLOR_PROP(0x9c, 0x88, 0x88, 0x88) ; lv_style_set_border_color(&button_1_s0, LV_STATE_DISABLED, color);
STYLE_COLOR_PROP(0x3a, 0x01, 0xa2, 0xb1) ; lv_style_set_outline_color(&button_1_s0, LV_STATE_DISABLED, color);
STYLE_COLOR_PROP(0x01, 0x00, 0x00, 0x00) ; lv_style_set_shadow_color(&button_1_s0, LV_STATE_DISABLED, color);
STYLE_COLOR_PROP(0x01, 0x00, 0x00, 0x00) ; lv_style_set_pattern_recolor(&button_1_s0, LV_STATE_DISABLED, color);
STYLE_COLOR_PROP(0xd3, 0x3c, 0x3c, 0x3c) ; lv_style_set_value_color(&button_1_s0, LV_STATE_DISABLED, color);
STYLE_COLOR_PROP(0x9c, 0x88, 0x88, 0x88) ; lv_style_set_value_color(&button_1_s0, LV_STATE_DISABLED, color);
lv_obj_t *button_1 = lv_btn_create(parent, NULL);
lv_obj_set_hidden(button_1, false);
lv_obj_set_click(button_1, true);
@ -1216,6 +1216,7 @@ lv_obj_t* UIFlowPhoto_create(){
STYLE_COLOR_PROP(0x01, 0x00, 0x00, 0x00) ; lv_style_set_border_color(&label_3_s0, LV_STATE_DEFAULT, color);
STYLE_COLOR_PROP(0xd3, 0x31, 0x40, 0x4f) ; lv_style_set_text_color(&label_3_s0, LV_STATE_DEFAULT, color);
lv_style_set_text_font(&label_3_s0,LV_STATE_DEFAULT,&sf_ui_text_medium_16_1bpp);
lv_style_set_text_line_space(&label_3_s0,LV_STATE_DEFAULT,-21862);
STYLE_COLOR_PROP(0xd3, 0x3b, 0x3e, 0x42) ; lv_style_set_text_sel_color(&label_3_s0, LV_STATE_DEFAULT, color);
STYLE_COLOR_PROP(0x3a, 0x01, 0xa2, 0xb1) ; lv_style_set_text_sel_bg_color(&label_3_s0, LV_STATE_DEFAULT, color);
STYLE_COLOR_PROP(0x02, 0xff, 0xff, 0xff) ; lv_style_set_bg_color(&label_3_s0, LV_STATE_CHECKED, color);
@ -1719,7 +1720,7 @@ lv_obj_t* UIFlowPhoto_create(){
lv_obj_set_drag(image_wifi_connected, false);
lv_obj_set_pos(image_wifi_connected, 40, 0);
lv_obj_set_size(image_wifi_connected, 48, 40);
lv_img_set_src(image_wifi_connected, &sf_wifi_unconnected);
lv_img_set_src(image_wifi_connected, &sf_wifi_connected);
lv_obj_add_style(image_wifi_connected, 0, &image_wifi_connected_s0);
image_wifi_connected_scr_uiflowphoto = image_wifi_connected;
@ -1817,7 +1818,7 @@ lv_obj_t* UIFlowPhoto_create(){
lv_obj_set_drag(image_wifi_unconnected, false);
lv_obj_set_pos(image_wifi_unconnected, 40, 0);
lv_obj_set_size(image_wifi_unconnected, 48, 40);
lv_img_set_src(image_wifi_unconnected, &sf_wifi_unconnected);
lv_img_set_src(image_wifi_unconnected, &sf_wifi_connected);
lv_obj_add_style(image_wifi_unconnected, 0, &image_wifi_unconnected_s0);
image_wifi_unconnected_scr_uiflowphoto = image_wifi_unconnected;
@ -1866,7 +1867,7 @@ lv_obj_t* UIFlowPhoto_create(){
lv_obj_set_drag(image_bluetooth_unconnected, false);
lv_obj_set_pos(image_bluetooth_unconnected, 0, 0);
lv_obj_set_size(image_bluetooth_unconnected, 48, 40);
lv_img_set_src(image_bluetooth_unconnected, &sf_bluetooth_unconnected);
lv_img_set_src(image_bluetooth_unconnected, &sf_bluetooth_connected);
lv_obj_add_style(image_bluetooth_unconnected, 0, &image_bluetooth_unconnected_s0);
image_bluetooth_unconnected_scr_uiflowphoto = image_bluetooth_unconnected;

View File

@ -146,14 +146,19 @@ static void update_quality(void)
static void update_free_pic_number(void)
{
UINT32 cardStatus = System_GetState(SYS_STATE_CARD);
if (cardStatus != CARD_REMOVED)
{
if(g_PhotoBgInitFileSys == TRUE){
#if (FS_FUNC == ENABLE)
#if (FS_FUNC == ENABLE)
UIStorageCheck(STORAGE_CHECK_FULL, &g_uiFreePicNum);
#endif
#endif
lv_label_set_text(label_free_pic_scr_uiflowphoto, Get_FreePicNumString(g_uiFreePicNum));
}else{
lv_label_set_text_fmt(label_free_pic_scr_uiflowphoto, "Check free space ...");
}
}
}
static void update_card(void)
@ -412,45 +417,71 @@ static void update_camera_message(void)
{
UIMenuStoreInfo *puiPara = sf_ui_para_get();
// if((puiPara->CamMode == SF_CAM_MODE_PHOTO) || (puiPara->CamMode == SF_CAM_MODE_PHOTO_VIDEO))
switch (puiPara->ImgSize)
{
case PHOTO_SIZE_40M:
lv_label_set_text(label_4_scr_uiflowphoto, "40M");
break;
case PHOTO_SIZE_32M:
lv_label_set_text(label_4_scr_uiflowphoto, "32M");
break;
case PHOTO_SIZE_24M:
lv_label_set_text(label_4_scr_uiflowphoto, "24M");
break;
case PHOTO_SIZE_16M:
lv_label_set_text(label_5_scr_uiflowphoto, "16M");
lv_label_set_text(label_4_scr_uiflowphoto, "16M");
break;
case PHOTO_SIZE_12M:
lv_label_set_text(label_5_scr_uiflowphoto, "12M");
lv_label_set_text(label_4_scr_uiflowphoto, "12M");
break;
case PHOTO_SIZE_8M:
lv_label_set_text(label_5_scr_uiflowphoto, "8M");
lv_label_set_text(label_4_scr_uiflowphoto, "8M");
break;
case PHOTO_SIZE_5M:
lv_label_set_text(label_4_scr_uiflowphoto, "5M");
break;
default:
break;
}
switch (puiPara->Multishot)
{
case 1:
case CONTINUE_SHOT_OFF:
lv_label_set_text(label_4_scr_uiflowphoto, "1P");
break;
case 2:
case CONTINUE_SHOT_BURST_2:
lv_label_set_text(label_4_scr_uiflowphoto, "2P");
break;
case 3:
case CONTINUE_SHOT_BURST_3:
lv_label_set_text(label_4_scr_uiflowphoto, "3P");
break;
case CONTINUE_SHOT_BURST_4:
lv_label_set_text(label_4_scr_uiflowphoto, "4P");
break;
case CONTINUE_SHOT_BURST_5:
lv_label_set_text(label_4_scr_uiflowphoto, "5P");
break;
default:
break;
}
UINT32 cardStatus = System_GetState(SYS_STATE_CARD);
if (cardStatus != CARD_REMOVED)
{
if (UIStorageCheck(STORAGE_CHECK_ERROR, NULL) == TRUE)
{
lv_label_set_text(label_6_scr_uiflowphoto, "NO SD CARD");
lv_label_set_text(label_6_scr_uiflowphoto, "SD CARD ERROR");
}
else
{
UIStorageCheck(STORAGE_CHECK_FULL, &g_uiFreePicNum);
lv_label_set_text(label_6_scr_uiflowphoto, Get_FreePicNumString(g_uiFreePicNum));
}
}
else
{
lv_label_set_text(label_6_scr_uiflowphoto, "NO SD CARD");
}
}
static void update_wifi(void)
@ -1332,7 +1363,7 @@ void UIFlowPhoto_UpdateInfo(lv_obj_t* obj, const LV_USER_EVENT_NVTMSG_DATA* msg)
UIFlowPhoto_BackPreviewHandle();
#if HUNTING_CAMERA_MCU == ENABLE
if(puiPara->CamMode == SF_CAM_MODE_PHOTO_VIDEO){
if(puiPara->CamMode == SF_CAM_MODE_PHOTO_VIDEO || puiPara->CamMode == SF_CAM_MODE_VIDEO2){
#else
if(SysGetFlag(CamMode) == SF_CAM_MODE_PHOTO_VIDEO){
#endif
@ -1566,7 +1597,7 @@ void UIFlowPhotoEventCallback(lv_obj_t* obj, lv_event_t event)
}
#if HUNTING_CAMERA_MCU == ENABLE
UIMenuStoreInfo *puiPara = sf_ui_para_get();
if((puiPara->CamMode == SF_CAM_MODE_PHOTO) || (puiPara->CamMode == SF_CAM_MODE_PHOTO_VIDEO))
if((puiPara->CamMode == SF_CAM_MODE_PHOTO) || (puiPara->CamMode == SF_CAM_MODE_PHOTO_VIDEO) || (puiPara->CamMode == SF_CAM_MODE_VIDEO2))
{
sf_rtsp_restart();
}

View File

@ -1866,6 +1866,7 @@ typedef enum {
SF_CAM_MODE_PHOTO = 0x00,
SF_CAM_MODE_VIDEO,
SF_CAM_MODE_PHOTO_VIDEO,
SF_CAM_MODE_VIDEO2,
SF_CAM_MODE_MAX,
}SF_BOOT_WORK_MODE;

View File

@ -30,7 +30,7 @@ typedef struct {
static PHOTO_SIZE_PARAM g_PhotoCapSizeTable[PHOTO_SIZE_ID_MAX + 2] = {
#if PHOTO_PREVIEW_SLICE_ENC_FUNC || POWERON_FAST_SLICE_ENC
{7296, 5472, IMAGERATIO_4_3, "40M"}, /* 40M */
{7296, 5760, IMAGERATIO_4_3, "40M"}, /* 40M */
#endif
{6528, 4896, IMAGERATIO_4_3, "32M"}, /* 32M */
{5664, 4248, IMAGERATIO_4_3, "24M"}, //16M

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 KiB

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 KiB

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 KiB

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 KiB

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 KiB

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 KiB

After

Width:  |  Height:  |  Size: 2.9 KiB

View File

@ -18,7 +18,13 @@ typedef enum sfHAL_LED_STATE_E
SF_HAL_LED_STATE_BUIT,
} SF_HAL_LED_STATE_E;
typedef enum sf_MSG_FORMAT_SD_e
{
CMD_FORMAT_SD_OK = 0,
CMD_FORMAT_SD_STA = 1,
CMD_FORMAT_SD_ERR = 10,
}SF_MSG_FORMAT_SD_E;
SINT32 app_pir_monitoring_start(void);
@ -59,6 +65,8 @@ BOOL sf_load_bt_ko(void);
SINT32 sf_in_update(void);
void sf_set_card_statu(UINT32 val);
UINT32 sf_get_card_statu(void);
#ifdef __cplusplus
#if __cplusplus
}

View File

@ -482,8 +482,9 @@ typedef enum sf_PARA_MESSAGE_TYPE_E
SF_PARA_CMD_BATTERY_LEVEL = 0x1F02,
SF_PARA_CMD_WAIT = 0x1F03,
SF_PARA_CMD_SIG = 0x1F04,
SF_PARA_CMD_SIMISINSERT = 0x1F05,
SF_PARA_CMD_ISESIM = 0x1F06,
SF_PARA_CMD_BLE = 0x1F05,
SF_PARA_CMD_SIMISINSERT = 0x1F06,
SF_PARA_CMD_ISESIM = 0x1F07,
}SF_PARA_MESSAGE_TYPE_E;
typedef enum sf_WIFI_MESSAGE_TYPE_E

View File

@ -1148,7 +1148,7 @@ SINT32 sf_check_ftp_send(UINT8 mode)
else
{
if(((puiPara->CamMode == SF_CAM_MODE_PHOTO) && (puiPara->SendPhotoSwitch == 1)) || ((puiPara->CamMode == SF_CAM_MODE_VIDEO) && (puiPara->SendVideoSwitch == 1))
|| ((puiPara->CamMode == SF_CAM_MODE_PHOTO_VIDEO) && ((puiPara->SendPhotoSwitch == 1) || (puiPara->SendVideoSwitch == 1))))
|| (((puiPara->CamMode == SF_CAM_MODE_PHOTO_VIDEO) || (puiPara->CamMode == SF_CAM_MODE_VIDEO2)) && ((puiPara->SendPhotoSwitch == 1) || (puiPara->SendVideoSwitch == 1))))
{
if((puiPara->FtpSwitch != 1) && (puiPara->Sim4gApn[0] != '\0'))
{
@ -1206,11 +1206,11 @@ 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->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) && (puiPara->NetGeneration == 4)) //video
{
timeout = 120000;
}
else if((2 == puiPara->SendPicSize) && (((puiPara->CamMode == SF_CAM_MODE_PHOTO) || (puiPara->CamMode == SF_CAM_MODE_PHOTO_VIDEO)) && (puiPara->SendPhotoSwitch == 1))) //pic(+video)
else if((2 == puiPara->SendPicSize) && (((puiPara->CamMode == SF_CAM_MODE_PHOTO) || (puiPara->CamMode == SF_CAM_MODE_PHOTO_VIDEO) || (puiPara->CamMode == SF_CAM_MODE_VIDEO2)) && (puiPara->SendPhotoSwitch == 1))) //pic(+video)
{
timeout = 120000;
}
@ -1222,7 +1222,7 @@ SINT32 sf_send_file_to_ftp(UINT8 mode)
{
if(mode == 1)
{
if(((puiPara->CamMode == SF_CAM_MODE_PHOTO) || (puiPara->CamMode == SF_CAM_MODE_PHOTO_VIDEO)) && (puiPara->SendPhotoSwitch == 1)) //pic(+video)
if(((puiPara->CamMode == SF_CAM_MODE_PHOTO) || (puiPara->CamMode == SF_CAM_MODE_PHOTO_VIDEO) || (puiPara->CamMode == SF_CAM_MODE_VIDEO2)) && (puiPara->SendPhotoSwitch == 1)) //pic(+video)
{
if(smtpUploadPicFlag == 0)
{
@ -1248,7 +1248,7 @@ SINT32 sf_send_file_to_ftp(UINT8 mode)
printf("[%s:%d]puiPara->NetGeneration=%d\n", __FUNCTION__, __LINE__, puiPara->NetGeneration);
if(((puiPara->CamMode == SF_CAM_MODE_VIDEO) || (puiPara->CamMode == SF_CAM_MODE_PHOTO_VIDEO)) && (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) && (puiPara->NetGeneration == 4)) //video
{
if(smtpUploadVideoFlag == 0)
{
@ -1388,11 +1388,11 @@ 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->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) && (puiPara->NetGeneration == 4)) //video
{
timeout = 120000;
}
else if((2 == puiPara->SendPicSize) && (((puiPara->CamMode == SF_CAM_MODE_PHOTO) || (puiPara->CamMode == SF_CAM_MODE_PHOTO_VIDEO)) && (puiPara->SendPhotoSwitch == 1))) //pic(+video)
else if((2 == puiPara->SendPicSize) && (((puiPara->CamMode == SF_CAM_MODE_PHOTO) || (puiPara->CamMode == SF_CAM_MODE_PHOTO_VIDEO) || (puiPara->CamMode == SF_CAM_MODE_VIDEO2)) && (puiPara->SendPhotoSwitch == 1))) //pic(+video)
{
timeout = 120000;
}

View File

@ -204,7 +204,7 @@ UINT8 sf_message_data_processing(UINT8 strValue[30][32], UINT16 mm, UINT8 *sms_s
}
else if(strValue[i][4] == '2')
{
pPara_sms_saved->CamMode = SF_CAM_MODE_PHOTO_VIDEO;
pPara_sms_saved->CamMode = SF_CAM_MODE_VIDEO2;
}
else
{

View File

@ -709,6 +709,9 @@ static SINT32 sf_app_process_cmd_SD(SF_MESSAGE_BUF_S *pMessageBuf)
}
break;
*/
case CMD_SD_FORMAT:
sf_set_card_statu(pMessageBuf->arg2);
break;
default:
break;
}

View File

@ -44,6 +44,7 @@ extern pthread_mutex_t GPIO_mutexLock;
static SINT32 IsCardFull = 0;
static SINT32 isGoing2Pir = 0;
static SINT32 IsCard = 0;
static int formatSD = CMD_FORMAT_SD_ERR;
SF_THREAD_S PirMonitorTskCfg =
{
@ -560,6 +561,16 @@ void sf_set_pir_statu_flag(SINT32 flag)
isGoing2Pir = flag;
}
void sf_set_card_statu(UINT32 val)
{
formatSD = val;
}
UINT32 sf_get_card_statu(void)
{
return formatSD;
}
static BOOL sf_system_check_usb_host(void)
{
char command[26] = "lsmod | grep usbcore";

View File

@ -110,7 +110,7 @@ SINT32 sf_com_message_send_to_app(SF_MESSAGE_BUF_S *pMessageBuf)
SINT32 sf_com_message_cardv_init(void)
{
return message_queue_create((char*)"/tmp/cardv_message",&cardv_msgQueueId);
return message_queue_create((char*)"/tmp/cdv_message",&cardv_msgQueueId);
}
SINT32 sf_com_message_recv_from_cardv(SF_MESSAGE_BUF_S *pMessageBuf)
{

View File

@ -1538,7 +1538,7 @@ BOOL sf_check_auto_thumb_file(VOID)
fileCfg->filecnt = SendFileTotal;
for(fileIndex = 0; fileIndex < SendFileTotal; fileIndex++)
{
if(SF_CAM_MODE_PHOTO_VIDEO == (SendFileList[fileIndex][0] - '0')){
if((SF_CAM_MODE_PHOTO_VIDEO == (SendFileList[fileIndex][0] - '0')) || (SF_CAM_MODE_VIDEO2 == (SendFileList[fileIndex][0] - '0'))){
fileCfg->stfileattr[fileIndex].enFileTye = SF_FILE_TYPE_PIC_VIDEO;
}else if(SF_CAM_MODE_PHOTO == (SendFileList[fileIndex][0] - '0')){
fileCfg->stfileattr[fileIndex].enFileTye = SF_FILE_TYPE_PIC_SMALL;

View File

@ -21,13 +21,59 @@
#include <unistd.h>
#include <errno.h>
#include <sys/ioctl.h>
#include <fcntl.h>
#include "bluetooth.h"
#include "hci.h"
#include "hci_lib.h"
#include "src/util.h"
static struct hci_dev_info di;
static char g_sf_ble_ssid[14] = {0};
static void cmd_lecc(int dev_id, char *addr)
{
int err, dd;
bdaddr_t bdaddr;
uint16_t interval, latency, max_ce_length, max_interval, min_ce_length;
uint16_t min_interval, supervision_timeout, window, handle;
uint8_t initiator_filter, own_bdaddr_type, peer_bdaddr_type;
own_bdaddr_type = LE_RANDOM_ADDRESS;
peer_bdaddr_type = LE_RANDOM_ADDRESS;
initiator_filter = 1; /* Use peer address */
dd = hci_open_dev(dev_id);
if (dd < 0) {
perror("Could not open device");
return ;
}
memset(&bdaddr, 0, sizeof(bdaddr_t));
if (addr)
str2ba(addr, &bdaddr);
printf("Conn_Address: %02x %02x %02x %02x %02x %02x.\n", bdaddr.b[0], bdaddr.b[1], bdaddr.b[2], bdaddr.b[3], bdaddr.b[4], bdaddr.b[5]);
interval = htobs(0x0004);
window = htobs(0x0004);
min_interval = htobs(0x000F);
max_interval = htobs(0x000F);
latency = htobs(0x0000);
supervision_timeout = htobs(0x0C80);
min_ce_length = htobs(0x0001);
max_ce_length = htobs(0x0001);
err = hci_le_create_conn(dd, interval, window, initiator_filter,
peer_bdaddr_type, bdaddr, own_bdaddr_type, min_interval,
max_interval, latency, supervision_timeout,
min_ce_length, max_ce_length, &handle, 25000);
if (err < 0) {
perror("Could not create connection");
return ;
}
printf("Connection handle %d\n", handle);
hci_close_dev(dd);
}
static void cmd_up(int ctl, int hdev)
{
@ -42,48 +88,19 @@ static void cmd_up(int ctl, int hdev)
}
}
static void cmd_piscan(int ctl, int hdev)
static void cmd_down(int ctl, int hdev)
{
struct hci_dev_req dr;
dr.dev_id = hdev;
dr.dev_opt = SCAN_DISABLED;
dr.dev_opt = SCAN_PAGE | SCAN_INQUIRY;
if (ioctl(ctl, HCISETSCAN, (unsigned long) &dr) < 0)
/* Start HCI device */
if (ioctl(ctl, HCIDEVDOWN, hdev) < 0)
{
fprintf(stderr, "Can't set scan mode on hci%d: %s (%d)\n",
if (errno == EALREADY)
return;
fprintf(stderr, "Can't init device hci%d: %s (%d)\n",
hdev, strerror(errno), errno);
return;
}
}
static void cmd_name(int ctl, int hdev, char *name)
{
int dd;
dd = hci_open_dev(hdev);
if (dd < 0)
{
fprintf(stderr, "Can't open device hci%d: %s (%d)\n",
hdev, strerror(errno), errno);
return;
}
char *opt = name;
if (hci_write_local_name(dd, opt, 2000) < 0)
{
fprintf(stderr, "Can't change local name on hci%d: %s (%d)\n",
hdev, strerror(errno), errno);
return;
}
printf("Name: '%s'\n", name);
hci_close_dev(dd);
}
static int sf_ba2str(const bdaddr_t *ba, char *str)
{
return sprintf(str, "%2.2X%2.2X%2.2X",ba->b[2], ba->b[1], ba->b[0]);
}
static void cmd_address(int ctl, int hdev, char *ssid)
{
int dd;
@ -96,115 +113,185 @@ static void cmd_address(int ctl, int hdev, char *ssid)
return;
}
hci_read_bd_addr(dd, &di.bdaddr, 1000);
sf_ba2str(&di.bdaddr, ssid);
printf("BT Address: %s.\n", ssid);
hci_close_dev(dd);
}
static void cmd_le_adv(int ctl, int hdev)
{
struct hci_request rq;
le_set_advertise_enable_cp advertise_cp;
le_set_advertising_parameters_cp adv_params_cp;
uint8_t status;
int dd, ret;
if (hdev < 0)
hdev = hci_get_route(NULL);
dd = hci_open_dev(hdev);
if (dd < 0)
bdaddr_t bdaddr = {0};
if (hci_read_bd_addr(dd, &bdaddr, 0) < 0)
{
perror("Could not open device");
return;
}
memset(&adv_params_cp, 0, sizeof(adv_params_cp));
adv_params_cp.min_interval = htobs(0x0800);
adv_params_cp.max_interval = htobs(0x0800);
adv_params_cp.advtype = 0; //mt set
adv_params_cp.chan_map = 7;
memset(&rq, 0, sizeof(rq));
rq.ogf = OGF_LE_CTL;
rq.ocf = OCF_LE_SET_ADVERTISING_PARAMETERS;
rq.cparam = &adv_params_cp;
rq.clen = LE_SET_ADVERTISING_PARAMETERS_CP_SIZE;
rq.rparam = &status;
rq.rlen = 1;
ret = hci_send_req(dd, &rq, 1000);
if (ret < 0)
goto done;
memset(&advertise_cp, 0, sizeof(advertise_cp));
advertise_cp.enable = 0x01;
memset(&rq, 0, sizeof(rq));
rq.ogf = OGF_LE_CTL;
rq.ocf = OCF_LE_SET_ADVERTISE_ENABLE;
rq.cparam = &advertise_cp;
rq.clen = LE_SET_ADVERTISE_ENABLE_CP_SIZE;
rq.rparam = &status;
rq.rlen = 1;
ret = hci_send_req(dd, &rq, 1000);
done:
hci_close_dev(dd);
if (ret < 0)
{
fprintf(stderr, "Can't set advertise mode on hci%d: %s (%d)\n",
fprintf(stderr, "Get bd address on hci%d: %s (%d)\n",
hdev, strerror(errno), errno);
return;
}
if (status)
if (NULL != ssid)
{
fprintf(stderr,
"LE set advertise enable on hci%d returned status %d\n",
hdev, status);
return;
ssid[0] = bdaddr.b[5];
ssid[1] = bdaddr.b[4];
ssid[2] = bdaddr.b[3];
ssid[3] = bdaddr.b[2];
ssid[4] = bdaddr.b[1];
ssid[5] = bdaddr.b[0];
printf("BT_Address: %02x,%02x,%02x,%02x,%02x,%02x.\n", ssid[0], ssid[1], ssid[2], ssid[3], ssid[4], ssid[5]);
}
hci_close_dev(dd);
}
int hciconfig_open_piscan(void)
static void set_random_address(int fd)
{
int ctl = -1;
int hdev = 0;
le_set_random_address_cp cmd;
/* Open HCI socket */
if ((ctl = socket(AF_BLUETOOTH, SOCK_RAW, BTPROTO_HCI)) < 0)
memset(&cmd, 0, sizeof(cmd));
int urandom_fd;
urandom_fd = open("/dev/urandom", O_RDONLY);
if (urandom_fd < 0) {
fprintf(stderr, "Failed to open /dev/urandom device\n");
cmd.bdaddr.b[5] = 0xc0;
cmd.bdaddr.b[4] = 0x55;
cmd.bdaddr.b[3] = 0x44;
cmd.bdaddr.b[2] = 0x33;
cmd.bdaddr.b[1] = 0x22;
cmd.bdaddr.b[0] = 0x11;
} else {
ssize_t len;
len = read(urandom_fd, cmd.bdaddr.b, sizeof(cmd.bdaddr.b));
if (len < 0 || len != sizeof(cmd.bdaddr.b)) {
fprintf(stderr, "Failed to read random data\n");
return;
}
cmd.bdaddr.b[5] &= 0x3f;
cmd.bdaddr.b[5] |= 0xc0;
}
if (hci_send_cmd(fd, OGF_LE_CTL, OCF_LE_SET_RANDOM_ADDRESS, sizeof(cmd),
&cmd) < 0)
perror("Send msg for set random address error");
}
static void set_adv_parameters(int fd)
{
le_set_advertising_parameters_cp cmd;
cmd.min_interval = cpu_to_le16(0x0001);
cmd.max_interval = cpu_to_le16(0x0001);
//cmd.min_interval = cpu_to_le16(0x0020);
//cmd.max_interval = cpu_to_le16(0x0020);
/* 0x00: Connectable undirected advertising
* 0x03: Non connectable undirected advertising
* */
cmd.advtype = 0x00;
/* 0: public address
* 1: random address */
cmd.own_bdaddr_type = 0x00;
cmd.direct_bdaddr_type = 0x00;
memset(cmd.direct_bdaddr.b, 0, 6);
cmd.chan_map = 0x07;
cmd.filter = 0x00;
if (hci_send_cmd(fd, OGF_LE_CTL, OCF_LE_SET_ADVERTISING_PARAMETERS,
sizeof(cmd), &cmd))
perror("Send msg for set adv params error");
}
static void set_scan_enable(int fd, uint8_t enable, uint8_t filter_dup)
{
le_set_scan_enable_cp scan_cp;
//uint8_t status;
if (enable)
enable = 0x01;
memset(&scan_cp, 0, sizeof(scan_cp));
scan_cp.enable = enable;
scan_cp.filter_dup = filter_dup;
if (hci_send_cmd(fd, OGF_LE_CTL, OCF_LE_SET_SCAN_ENABLE, sizeof(scan_cp),
&scan_cp) < 0)
perror("Send cmd for set scan enable error");
}
static void set_adv_enable(int fd, uint8_t enable)
{
if (enable)
enable = 0x01;
if (hci_send_cmd(fd, OGF_LE_CTL, OCF_LE_SET_ADVERTISE_ENABLE, 1,
&enable) < 0)
perror("Send cmd for set adv enable error");
}
static void set_adv_data(int fd, const char* name)
{
le_set_advertising_data_cp cmd;
int i = 0;
int n;
//const char *name = "ADVTEST";
cmd.length = 0;
memset(cmd.data, 0, sizeof(cmd.data));
/* set adv data */
cmd.data[i] = 0x02; /* Field length */
cmd.length += (1 + cmd.data[i++]);
cmd.data[i++] = 0x01; /* Flags */
/* LE General Discoverable Mode, BR/EDR Not Supported */
cmd.data[i++] = (0x02 | 0x04);
cmd.data[i] = 0x03;
cmd.length += (1 + cmd.data[i++]);
cmd.data[i++] = 0x03; /* complete list of 15-bit service class uuids */
cmd.data[i++] = 0xa0;
cmd.data[i++] = 0x0a;
n = strlen(name);
cmd.data[i] = 1 + n;
cmd.length += (1 + cmd.data[i++]);
cmd.data[i++] = 0x09; /* complete local name */
memcpy(&cmd.data[i], name, n);
i += n;
printf("advertise_data, len=%d:\n", i);
for (int k = 0; k < i; k++)
{
perror("Can't open HCI socket.");
printf("%02x ", cmd.data);
}
printf("\n");
if (hci_send_cmd(fd, OGF_LE_CTL, OCF_LE_SET_ADVERTISING_DATA,
sizeof(cmd), &cmd))
perror("Send cmd for set adv data error");
}
int hciconfig_start_advertising(const char *ssid)
{
int hci_fd;
//printf("Start advertising\n");
hci_fd = hci_open_dev(0);
if (hci_fd < 0)
{
perror("Failed to open hci dev");
return -1;
}
cmd_up(ctl, hdev);
usleep(100*1000);
//cmd_name(ctl, hdev, g_sf_ble_ssid);
//usleep(100*1000);
cmd_piscan(ctl, hdev);
usleep(100*1000);
set_scan_enable(hci_fd, 0, 1);
set_adv_enable(hci_fd, 0);
set_adv_data(hci_fd, ssid);
set_random_address(hci_fd);
set_adv_parameters(hci_fd);
set_adv_enable(hci_fd, 1);
cmd_le_adv(ctl, hdev);
//usleep(500*1000);
//cmd_le_adv(ctl, hdev);
close(ctl);
printf("blue scan.\n");
hci_close_dev(hci_fd);
return 0;
}
int hciconfig_set_name(char *name)
int hciconfig_open_device(void)
{
snprintf(g_sf_ble_ssid, sizeof(g_sf_ble_ssid), "%s",name);
printf("set bluename:%s\n",g_sf_ble_ssid);
int ctl = -1;
int hdev = 0;
@ -214,11 +301,32 @@ int hciconfig_set_name(char *name)
perror("Can't open HCI socket.");
return -1;
}
cmd_up(ctl, hdev);
cmd_name(ctl, hdev, name);
usleep(100*1000);
close(ctl);
printf("set bluename.\n");
printf("open hci0 device.\n");
return 0;
}
int hciconfig_close_device(void)
{
int ctl = -1;
int hdev = 0;
/* Open HCI socket */
if ((ctl = socket(AF_BLUETOOTH, SOCK_RAW, BTPROTO_HCI)) < 0)
{
perror("Can't open HCI socket.");
return -1;
}
cmd_down(ctl, hdev);
close(ctl);
printf("close hci0 device.\n");
return 0;
}
@ -233,15 +341,19 @@ int hciconfig_get_address(char *ssid)
perror("Can't open HCI socket.");
return -1;
}
cmd_up(ctl, hdev);
if (ioctl(ctl, HCIGETDEVINFO, (void *) &di)) {
perror("Can't get device info");
}
cmd_address(ctl, hdev, ssid);
usleep(100*1000);
close(ctl);
printf("get blueaddress.\n");
return 0;
}
int hciconfig_conn_le(char *addr)
{
cmd_lecc(0, addr);
printf("connect le.\n");
return 0;
}

File diff suppressed because it is too large Load Diff

View File

@ -29,6 +29,8 @@
#include "sf_systemMng.h"
#include <netinet/in.h>
#include <unistd.h> //usleep()
#include "sf_device.h"
#include "sf_message_queue.h"
#define MSG_BLE_PRE_FIX 0x55AA
#define MSG_BLE_END_FIX 0xFFEE
@ -40,6 +42,32 @@
static BLE_APP_PACKET_T gst_msgResult = {0};
static unsigned int gmsgResultLen = 0;
SF_BLE_STATUS_E BleStatus = SF_BLE_BUTT;
SF_BLE_STATUS_E sf_get_ble_status(void)
{
return BleStatus;
}
void sf_set_ble_status(SF_BLE_STATUS_E enStatus)
{
SF_MESSAGE_BUF_S stMessageBuf = {0};
if(enStatus < SF_BLE_BUTT)
{
if(BleStatus != enStatus)
{
stMessageBuf.arg2 = enStatus;
stMessageBuf.arg1 = SF_PARA_CMD_BLE;
stMessageBuf.cmdId = CMD_PARA;
sf_com_message_send_to_cardv(&stMessageBuf);
}
BleStatus = enStatus;
}
else
SLOGE("Type format error\n");
return;
}
static void sf_clear_poweroff_time(void)
{
@ -147,7 +175,7 @@ static void sf_blue_command_get_camera_para(MSG_DEV_BLE_Param_Get_Rsp_T *CamPara
//printf("[sf_app_Get_Camera_Para],snapnum:%d\n",puiPara->snapnum);
CamPara->cmdRet = 0;
CamPara->zoom = puiPara->Zoom;
CamPara->zoom = puiPara->Zoom + 1;
CamPara->cameraMode = (puiPara->CamMode==2)?1:0;
@ -278,7 +306,7 @@ static signed int sf_blue_command_request_process(U8 *val, unsigned int nval, U8
UINT8 paraNeedReboot = 0;
UINT8 SendingFile = 0;
UINT16 tmp = 0;
SF_MESSAGE_BUF_S stMessageBuf = {0};
UIMenuStoreInfo *puiPara = sf_app_ui_para_get();
BLE_APP_PACKET_T msgParse;
BLE_APP_PACKET_T *pMsgStruct = NULL;
@ -288,6 +316,7 @@ static signed int sf_blue_command_request_process(U8 *val, unsigned int nval, U8
UINT16 PreFind=0;
UINT16 uTemp=0;
UINT16 msgTotolLen=0, msgEndVal=0;
SINT8 ret = -1;
for(offset = 0; offset < nval && offset < sizeof(BLE_APP_PACKET_T);)
{
@ -403,7 +432,7 @@ static signed int sf_blue_command_request_process(U8 *val, unsigned int nval, U8
{
SLOGI("[BLE_SET_CAMERA_Zoom],Zoom:%d\n",puiPara->Zoom);
puiPara->Zoom = pMsgStruct->msgBuf.deviceZoomSet.zoom;
puiPara->Zoom = (puiPara->Zoom > 4 ? 1 : puiPara->Zoom);
puiPara->Zoom = (puiPara->Zoom > 4 ? 1 : puiPara->Zoom) - 1;
//forbuild sp5kModeGet(&curMode);
//curMode = 0;//forbuild
@ -447,7 +476,7 @@ static signed int sf_blue_command_request_process(U8 *val, unsigned int nval, U8
}
else if (tmpMode == 1)
{
puiPara->CamMode = SF_CAM_MODE_PHOTO_VIDEO;
puiPara->CamMode = SF_CAM_MODE_VIDEO2;
}
else if (tmpMode == 2)
{
@ -803,6 +832,50 @@ static signed int sf_blue_command_request_process(U8 *val, unsigned int nval, U8
}
break;
case BLE_CONTROL_CAMERA_FormatSDCard:
{
SLOGI("[BLE_CONTROL_CAMERA_FormatSDCard],format:%d\n",pMsgStruct->msgBuf.ctrlFormat.format);
if(pMsgStruct->msgBuf.ctrlFormat.format == 1)
{
if((sf_in_card_exist()) && (sf_is_card()))
{
stMessageBuf.arg1 = CMD_SD_FORMAT;
stMessageBuf.cmdId = CMD_SD;
sf_com_message_send_to_cardv(&stMessageBuf);
}
sf_set_card_statu(CMD_FORMAT_SD_STA);
// while(CMD_FORMAT_SD_STA == sf_get_card_statu())
// {
// usleep(100*1000);
// }
ret = sf_get_card_statu();
if(ret == CMD_FORMAT_SD_OK)
{
ret = 0;
}
else
{
ret = 0x10;
}
}
msgParse.msgBuf.camreaSetRsp.cmdRet = ret;
msgParse.msgBuf.camreaSetRsp.suffix = htons(MSG_BLE_END_FIX);
msgParse.msglen = htons(sizeof(MSG_DEV_BLE_SET_Rsp_T) + 2*sizeof(UINT16));
respFlag = 1;
}
break;
case BLE_CONTROL_CAMERA_Recovery:
{
SLOGI("[BLE_CONTROL_CAMERA_Recovery]\n");
SF_PDT_PARAM_STATISTICS_S *pSifarPara = sf_statistics_param_get();
sf_statistics_param_reset(pSifarPara);
stMessageBuf.arg1 = SF_PARA_CMD_RESET;
stMessageBuf.cmdId = CMD_PARA;
sf_com_message_send_to_cardv(&stMessageBuf);
paraNeedReboot = 1;
respFlag = 2;
}
break;
default:
{
msgParse.msgBuf.camreaSetRsp.cmdRet = -1;

View File

@ -58,6 +58,10 @@ typedef enum
BLE_SET_CAMERA_timeLapse = 0x23, //设置相机缩时摄影
BLE_SET_CAMERA_PicUponDailyReport = 0x24, //设置DailyReport时是否发送照片.
//*APP待增加项
BLE_CONTROL_CAMERA_FormatSDCard = 0x30,//格式化SD卡
BLE_CONTROL_CAMERA_Recovery = 0x32, //恢复出厂设置
BLE_CMD_MAX = 0x40,
} BLE_CMD_E;
@ -67,6 +71,14 @@ typedef enum
BLE_CMD_ERR = 0x01, //command error
} BLE_ErrCode_t;
typedef enum sfBLE_STATUS_E
{
SF_BLE_OK = 0x01,/*BLE start success*/
SF_BLE_CON, /*BLE has been connected*/
SF_BLE_FAIL, /*BLE start fail*/
SF_BLE_BUTT,
} SF_BLE_STATUS_E;
/*--------------------BLE Module Get CMD-------------------------------*/
typedef struct
{
@ -365,6 +377,44 @@ typedef struct
UINT16 suffix; /* 0xFFEE */
} __attribute__((packed)) MSG_DEV_BLE_DebugMode_Set_T;
/*******相机控制指令结构体***********/
typedef struct
{
UINT8 format; /* 1format immediately */
UINT16 sufix; /* 0xFFEE */
} __attribute__((packed)) MSG_DEV_BLE_FormatSDCard_Ctrl_T;
typedef struct
{
UINT8 cmdRet; /* 0: mean cmd OK othermean cmd error */
UINT16 suffix; /* 0xFFEE */
} __attribute__((packed)) MSG_DEV_BLE_FormatSDCard_Ctrl_RSP_T;
typedef struct
{
UINT8 reboot; /* 1: Reboot */
UINT16 sufix; /* 0xFFEE */
} __attribute__((packed)) MSG_DEV_BLE_REBOOT_Ctrl_T;
typedef struct
{
UINT8 cmdRet; /* 0: mean cmd OK othermean cmd error */
UINT16 suffix; /* 0xFFEE */
} __attribute__((packed)) MSG_DEV_BLE_REBOOT_Ctrl_RSP_T;
typedef struct
{
UINT8 reset; /* reset */
UINT16 sufix; /* 0xFFEE */
} __attribute__((packed)) MSG_DEV_BLE_Reset_Ctrl_T;
typedef struct
{
UINT8 cmdRet; /* 0: mean cmd OK othermean cmd error */
UINT16 suffix; /* 0xFFEE */
} __attribute__((packed)) MSG_DEV_BLE_Reset_Ctrl_RSP_T;
/************* APP_MSG_T 数据结构 **************/
typedef struct
{
@ -463,6 +513,19 @@ typedef struct
/*设置调试模式*/
MSG_DEV_BLE_DebugMode_Set_T setDebugMode;
/*******相机控制指令结构体***********/
/*格式化SD卡*/
MSG_DEV_BLE_FormatSDCard_Ctrl_T ctrlFormat;
MSG_DEV_BLE_FormatSDCard_Ctrl_RSP_T rctrlFormat;
/*重启*/
MSG_DEV_BLE_REBOOT_Ctrl_T ctrlReboot;
MSG_DEV_BLE_REBOOT_Ctrl_RSP_T rctrlReboot;
/*恢复出厂设置*/
MSG_DEV_BLE_Reset_Ctrl_T ctrlReset;
MSG_DEV_BLE_Reset_Ctrl_RSP_T rctrlReset;
};
} __attribute__((packed)) BLE_APP_MSG_T;
typedef struct
@ -477,6 +540,8 @@ typedef struct
unsigned int sf_blue_app_start(void);
unsigned int sf_blue_app_stop(void);
int sf_set_ble_name(char *name);
void sf_set_ble_status(SF_BLE_STATUS_E enStatus);
SF_BLE_STATUS_E sf_get_ble_status(void);
#ifdef __cplusplus
}
#endif

View File

@ -31,9 +31,11 @@
#include <net/if.h>
#include "sf_blue_app.h"
extern int hciconfig_start_advertising(const char *ssid);
extern int hciconfig_close_device(void);
extern int hciconfig_open_device(void);
extern int hciconfig_conn_le(char *addr);
extern int hciconfig_get_address(char *ssid);
extern int hciconfig_set_name(char *name);
extern int hciconfig_open_piscan(void);
extern int gatt_service_register(BLE_RD rcb, BLE_WR wcb);
static pthread_t gblue_piscan_task_pid;
@ -42,7 +44,9 @@ static pthread_t gblue_disconnect_pid;
static BLE_RD gst_ble_rcb = NULL;
static BLE_WR gst_ble_wcb = NULL;
static char g_ble_ssid[14] = {0};
static char g_ble_bdaddr[6] = {0};
static char g_ble_ssid[16] = {0};
static char g_ble_connect = 0;
/*************************************************
Function: sf_bluetooth_disconnect_task
@ -54,13 +58,33 @@ static char g_ble_ssid[14] = {0};
*************************************************/
static void *sf_bluetooth_disconnect_task(void *arg)
{
//int count = 0;
while (1)
{
if (access("/tmp/blue_disconnect", F_OK) == 0)
{
remove("/tmp/blue_disconnect");
remove("/tmp/blue_connect");
SLOGI("reset piscan.\n");
hciconfig_open_piscan();
g_ble_connect = 0;
sf_set_ble_status(SF_BLE_OK);
hciconfig_start_advertising(g_ble_ssid);
}
else if (access("/tmp/blue_connect", F_OK) == 0)
{
//SF_BLUE_LOGI("blue_connect.\n");
g_ble_connect = 1;
//sf_clear_poweroff_time();/*reset power off count time*/
sf_set_ble_status(SF_BLE_CON);
}
if (access("/tmp/blue_le", F_OK) == 0)
{
remove("/tmp/blue_le");
//char *addr = "2C:C3:E6:DF:59:C0";
char *addr = "C0:59:DF:E6:C3:2C";
hciconfig_conn_le(addr);
}
usleep(500*1000);
@ -83,36 +107,6 @@ static void sf_bluetooth_power_enable(void)
// system("echo 1 > /sys/class/gpio/gpio44/value");
}
int sf_getb_mac(char *ifName, UINT8 *pbMacAddr)
{
struct ifreq ifreq;
int sock = 0;
int i = 0;
sock = socket(AF_BLUETOOTH, SOCK_STREAM, 0);
if(sock < 0)
{
MLOGE("error sock");
return 2;
}
strcpy(ifreq.ifr_name, ifName);
if(ioctl(sock,SIOCGIFHWADDR,&ifreq) < 0)
{
MLOGE("error ioctl");
return 3;
}
for(i = 0; i < 6; i++)
{
pbMacAddr[i]=(unsigned char)ifreq.ifr_hwaddr.sa_data[i];
}
MLOGI("MAC: %02X-%02X-%02X-%02X-%02X-%02X\n", pbMacAddr[0],pbMacAddr[1],pbMacAddr[2],pbMacAddr[3],pbMacAddr[4],pbMacAddr[5]);
return 0;
}
/*************************************************
Function: sf_bluetooth_scaning_task
Description: Bluetooth radio on and set to low power mode
@ -156,10 +150,9 @@ static void *sf_bluetooth_piscan_task(void *arg)
}
}
char ssid[14]= {0};
hciconfig_get_address(ssid);
snprintf(g_ble_ssid, sizeof(g_ble_ssid), "X-PRO_%s",ssid);
hciconfig_set_name(g_ble_ssid);
hciconfig_get_address(g_ble_bdaddr);
snprintf(g_ble_ssid, sizeof(g_ble_ssid), "X-PRO_%02X%02X%02X",g_ble_bdaddr[3],g_ble_bdaddr[4],g_ble_bdaddr[5]);
sf_set_ble_name(g_ble_ssid);
system("dbus-daemon --system");
@ -187,11 +180,17 @@ static void *sf_bluetooth_piscan_task(void *arg)
}
}
}
//sleep(15);
printf("%s:%d --------------test blu------------\n",__FUNCTION__,__LINE__);
sleep(2);
hciconfig_open_device();
usleep(200*1000);
hciconfig_open_piscan();
//!< start to advertise
hciconfig_start_advertising(g_ble_ssid);
//!< register gatt callback
gatt_service_register(gst_ble_rcb, gst_ble_wcb);
sf_set_ble_status(SF_BLE_OK);
return NULL;
}

View File

@ -31,6 +31,7 @@ extern "C" {
typedef int (*BLE_RD)(unsigned char **, unsigned int *);
typedef int (*BLE_WR)(unsigned char *, unsigned int, unsigned char **, unsigned int *);
void sf_blue_hal_get_ssid(char *ssid);
unsigned int sf_blue_hal_init(BLE_RD rcb, BLE_WR wcb);
#ifdef __cplusplus

View File

@ -1348,7 +1348,7 @@ SINT32 sf_svr_packet_proc(SINT32 fd, UINT8 *pAppData, UINT16 dataLen)
}
else if (tmpMode == 1)
{
puiPara->CamMode = SF_CAM_MODE_PHOTO_VIDEO;
puiPara->CamMode = SF_CAM_MODE_VIDEO2;
}
else if (tmpMode == 2)
{
@ -1362,7 +1362,7 @@ SINT32 sf_svr_packet_proc(SINT32 fd, UINT8 *pAppData, UINT16 dataLen)
int iCurrMode = System_GetState(SYS_STATE_CURRMODE);
int iNextMode = PRIMARY_MODE_PHOTO;
if((puiPara->CamMode == SF_CAM_MODE_PHOTO) || (puiPara->CamMode == SF_CAM_MODE_PHOTO_VIDEO))
if((puiPara->CamMode == SF_CAM_MODE_PHOTO) || (puiPara->CamMode == SF_CAM_MODE_VIDEO2))
{
iNextMode = PRIMARY_MODE_PHOTO;
}
@ -2652,7 +2652,7 @@ void sf_wifi_hw_init(void)
sprintf(sSSID,"REVEAL_%02X%02X%02X",smac[3],smac[4],smac[5]);
strcpy(SSID_STR, sSSID);
snprintf((char *)puiPara->strSSID, sizeof(puiPara->strSSID), "%s", (char *)SSID_STR);
ret = system("ifconfig wlan0 192.168.1.1 netmask 255.255.255.0 up");
//ret = system("hostapd -ddd /appfs/etc/hostapd/hostapd-8189.conf &");
//ret = system("udhcpd /appfs/etc/udhcpd-8189.conf");
@ -2685,6 +2685,7 @@ void sf_wifi_hw_init(void)
sprintf(sSSID,"REVEAL_%02X%02X%02X",smac[3],smac[4],smac[5]);
strcpy(SSID_STR, sSSID);
snprintf((char *)puiPara->strSSID, sizeof(puiPara->strSSID), "%s", (char *)SSID_STR);
sprintf(scmd,"echo \"ap0 alg_cfg tpc_mode 0\" >/sys/hisys/hipriv ");
ret =system(scmd);
sprintf(scmd,"echo \"ap0 intrf_mode 0 0 0 0 0\" >/sys/hisys/hipriv ");

View File

@ -15,6 +15,14 @@ typedef enum MCU_FLAG_INIT {
HD_FLAG_INIT_MAX_CNT = 32, //flag max bit cnt is 32
} HD_FLAG_INIT;
typedef enum sfBLE_STATUS_E
{
SF_BLE_OK = 0x01,/*BLE start success*/
SF_BLE_CON, /*BLE has been connected*/
SF_BLE_FAIL, /*BLE start fail*/
SF_BLE_BUTT,
} SF_BLE_STATUS_E;
void sf_mode_detect(void);
int sf_pir_statu_read(void);
void sf_set_pir_power_off_flag(BOOL flag);
@ -146,4 +154,6 @@ BOOL sf_cmd_para_printf(unsigned char argc, char **argv);
BOOL cmd_blu_switch(unsigned char argc, char **argv);
BOOL sf_ota_trigger(void);
BOOL sf_ota_result(void);
SF_BLE_STATUS_E sf_get_ble_status(void);
void sf_set_ble_status(SF_BLE_STATUS_E enStatus);
#endif

View File

@ -95,6 +95,8 @@ static pthread_mutex_t Param_mutexLock;
static int shared_condition = 1;
static SINT32 WifiSocket = 0;
static UINT8 UiparaFlag = 0;
static SF_BLE_STATUS_E BleStatus = SF_BLE_BUTT;
static SF_THREAD_S UpgradeTskParam =
{
.IsRun = 0,
@ -303,7 +305,7 @@ void sf_mode_detect(void)
//countDownOffFlg = 0;
}
if(puiPara->AutoOffSwitch == 0 || (0x04 == NetWorkFlag/*SF_4G_SENDING*/) || (0x05 == NetWorkFlag/*SF_4G_SEARCHING*/) || (sf_get_fw_update()) || (sf_get_module_update())/*|| (appActiveStateGet() == APP_STATE_CUSTOMER_TRANSFER)*/)
if(puiPara->AutoOffSwitch == 0 || SF_BLE_CON == sf_get_ble_status() || (0x04 == NetWorkFlag/*SF_4G_SENDING*/) || (0x05 == NetWorkFlag/*SF_4G_SEARCHING*/) || (sf_get_fw_update()) || (sf_get_module_update())/*|| (appActiveStateGet() == APP_STATE_CUSTOMER_TRANSFER)*/)
{
AutoOfftime=0;
}
@ -484,7 +486,7 @@ BOOL sf_cmd_video_size(unsigned char argc, char **argv)
int iCurrMode = System_GetState(SYS_STATE_CURRMODE);
int iNextMode = PRIMARY_MODE_PHOTO;
if((puiPara->CamMode == SF_CAM_MODE_PHOTO) || (puiPara->CamMode == SF_CAM_MODE_PHOTO_VIDEO))
if((puiPara->CamMode == SF_CAM_MODE_PHOTO) || (puiPara->CamMode == SF_CAM_MODE_PHOTO_VIDEO) || (puiPara->CamMode == SF_CAM_MODE_VIDEO2))
{
iNextMode = PRIMARY_MODE_PHOTO;
}
@ -1113,7 +1115,7 @@ BOOL cmd_cam_mode(unsigned char argc, char **argv)
int iNextMode = PRIMARY_MODE_PHOTO;
if(value < SF_CAM_MODE_MAX){
puiPara->CamMode = value;
if((puiPara->CamMode == SF_CAM_MODE_PHOTO) || (puiPara->CamMode == SF_CAM_MODE_PHOTO_VIDEO))
if((puiPara->CamMode == SF_CAM_MODE_PHOTO) || (puiPara->CamMode == SF_CAM_MODE_VIDEO2))
{
iNextMode = PRIMARY_MODE_PHOTO;
}
@ -1703,6 +1705,8 @@ static SINT32 sf_cardv_proccess_cmd_para_update(SF_MESSAGE_BUF_S *pMessageBuf)
case SF_PARA_CMD_SIG:
sf_cardv_para_signaling_start();
break;
case SF_PARA_CMD_BLE:
case SF_PARA_CMD_SIMISINSERT:
sf_cardv_set_sim_insert(pMessageBuf->arg2);
break;
@ -2055,6 +2059,8 @@ void sf_hd_flag_clear_done(HD_FLAG_INIT flag)
vos_flag_clr(sf_hd_flag_id, (FLGPTN)-1);
}
#if !SF_UBOOT_UPDATA_FW
static UINT32 sf_fwupdate(void)
{
DBG_FUNC_BEGIN("\r\n");
@ -2079,7 +2085,7 @@ static UINT32 sf_fwupdate(void)
DBG_FUNC_END("\r\n");
return result;
}
#else
BOOL sf_ota_trigger(void)
{
UINT32 uiUserData = WDT_OTA_MAKEFOURCC(WDT_OTA_STS_LINUX_TRIGGER);
@ -2087,7 +2093,7 @@ BOOL sf_ota_trigger(void)
Ux_PostEvent(NVTEVT_ALGMSG_FOCUSEND, 0);
sprintf(cmd, "mem w %x %x",WDT_REG_ADDR(WDT_DATA_OFS),uiUserData);
sprintf(cmd, "mem w %x %lx",WDT_REG_ADDR(WDT_DATA_OFS),uiUserData);
system(cmd);
system("watchdog -T 1 -t 5 /dev/watchdog");
@ -2141,6 +2147,8 @@ BOOL sf_ota_result(void)
return TRUE;
}
#endif
void* sf_sys_do_upgrade(void *arg)
{
//int s32Ret = 0;
@ -2678,7 +2686,7 @@ void* sf_cardv_cap_thread(void *arg)
UIMenuStoreInfo *puiPara = sf_ui_para_get();
int iCurrMode = System_GetState(SYS_STATE_CURRMODE);
int iNextMode = PRIMARY_MODE_PHOTO;
if((puiPara->CamMode == SF_CAM_MODE_PHOTO) || (puiPara->CamMode == SF_CAM_MODE_PHOTO_VIDEO))
if((puiPara->CamMode == SF_CAM_MODE_PHOTO) || (puiPara->CamMode == SF_CAM_MODE_VIDEO2))
{
iNextMode = PRIMARY_MODE_PHOTO;
}
@ -3202,3 +3210,21 @@ BOOL cmd_blu_switch(unsigned char argc, char **argv)
return TRUE;
}
SF_BLE_STATUS_E sf_get_ble_status(void)
{
return BleStatus;
}
void sf_set_ble_status(SF_BLE_STATUS_E enStatus)
{
if(enStatus < SF_BLE_BUTT)
{
BleStatus = enStatus;
}
else
SLOGE("Type format error\n");
return;
}

View File

@ -209,6 +209,10 @@ UINT32 DrvGPIO_GetPhotoMovieModeFromMonitor(void)
{
g_uiBootMode = DX_HUNTING_MODE_MOVIE;
}
else if(SF_CAM_MODE_VIDEO2 == puiPara->CamMode)
{
g_uiBootMode = DX_HUNTING_MODE_MOVIE2;
}
else
{
g_uiBootMode = DX_HUNTING_MODE_PHOTO_MOVIE;

View File

@ -33,10 +33,11 @@
enum _DX_HUNTING_MODE //Must match with _HUNTING_MODE in UIInfo.h
{
/* for hunting camera application */
DX_HUNTING_MODE_PHOTO = 0,
DX_HUNTING_MODE_MOVIE,
DX_HUNTING_MODE_PHOTO_MOVIE,
DX_HUNTING_MODE_OTHER,
DX_HUNTING_MODE_PHOTO = 0, /* PhotoFast */
DX_HUNTING_MODE_MOVIE, /* MovieFast */
DX_HUNTING_MODE_PHOTO_MOVIE, /* PhotoFast -> MovieFast */
DX_HUNTING_MODE_OTHER, /* for boot linux */
DX_HUNTING_MODE_MOVIE2, /* MovieFast + sensor sized photo with slice encode */
/* for life camera application */
DX_HUNTING_MODE_CAMERA_PHOTO = 100,
DX_HUNTING_MODE_CAMERA_MOVIE,

View File

@ -851,55 +851,13 @@ void flow_preview_get_path(HD_PATH_ID *pPath, FLOW_PREIVEW_PATH PathType, UINT32
extern void Set_NIGHTMODE(UINT32 id, UINT8 isSnapVideo);
extern void DrvGOIO_Turn_Onoff_IRCUT(UINT8 onoff);
int flow_preview(void)
INT32 flow_preview_load_sen_cfg(void)
{
int ret;
// int join_ret;
VK_TASK_HANDLE handle_sensor = 0;
VK_TASK_HANDLE handle_cap_proc = 0;
VK_TASK_HANDLE handle_preview = 0;
// int policy;
INT32 ret = E_OK;
HD_RESULT hd_ret = HD_OK;
PHOTO_SENSOR_INFO sen_cfg = {0};
PHOTO_SENSOR_INFO *pSenCfg = &sen_cfg;
HD_RESULT hd_ret;
// struct sched_param schedparam = {0};
T_CFLG cflg = {0};
FLGPTN flag_ptn;
#if (_PACKAGE_DISPLAY_)
VK_TASK_HANDLE handle_videoout = 0;
#endif
if(!flag_task){
if ((ret = vos_flag_create(&flag_task, &cflg, "flow_preview")) != E_OK) {
DBG_ERR("create flag failed!(%d)\n", ret);
return -1;
}
}
// quick sensor setup
vos_flag_clr(flag_task, FLAG_SENSOR_TASK_EXIT);
handle_sensor = vos_task_create(thread_sensor, NULL, "init_sensor", 10, DEFAULT_TASK_STACK_SIZE);
if(!handle_sensor){
DBG_ERR("create thread_sensor failed\r\n");
return -1;
}
else
vos_task_resume(handle_sensor);
//hd_common_init(including vds), must wait until insmod_capture()
fastboot_wait_done(BOOT_INIT_CAPTURE);
// init hdal
ret = fastflow_common_init();
if (ret != HD_OK) {
DBG_ERR("init fail\r\n");
}
ret = flowpreview_mem_relayout();
if (ret != HD_OK) {
DBG_ERR("relayout fail\r\n");
}
//load ae/awb/iq
System_GetSensorInfo(0, SENSOR_AE_PATH, &(sen_cfg.ae_path));
System_GetSensorInfo(0, SENSOR_AWB_PATH, &(sen_cfg.awb_path));
@ -988,8 +946,59 @@ int flow_preview(void)
if ((hd_ret = vendor_isp_uninit()) != HD_OK) {
DBG_ERR("vendor_isp_uninit fail(%d)\n", hd_ret);
}
return ret;
}
int flow_preview(void)
{
int ret;
// int join_ret;
VK_TASK_HANDLE handle_sensor = 0;
VK_TASK_HANDLE handle_cap_proc = 0;
VK_TASK_HANDLE handle_preview = 0;
// int policy;
// PHOTO_SENSOR_INFO sen_cfg = {0};
// PHOTO_SENSOR_INFO *pSenCfg = &sen_cfg;
// HD_RESULT hd_ret;
// struct sched_param schedparam = {0};
T_CFLG cflg = {0};
FLGPTN flag_ptn;
#if (_PACKAGE_DISPLAY_)
VK_TASK_HANDLE handle_videoout = 0;
#endif
if(!flag_task){
if ((ret = vos_flag_create(&flag_task, &cflg, "flow_preview")) != E_OK) {
DBG_ERR("create flag failed!(%d)\n", ret);
return -1;
}
}
// quick sensor setup
vos_flag_clr(flag_task, FLAG_SENSOR_TASK_EXIT);
handle_sensor = vos_task_create(thread_sensor, NULL, "init_sensor", 10, DEFAULT_TASK_STACK_SIZE);
if(!handle_sensor){
DBG_ERR("create thread_sensor failed\r\n");
return -1;
}
else
vos_task_resume(handle_sensor);
//hd_common_init(including vds), must wait until insmod_capture()
fastboot_wait_done(BOOT_INIT_CAPTURE);
// init hdal
ret = fastflow_common_init();
if (ret != HD_OK) {
DBG_ERR("init fail\r\n");
}
ret = flowpreview_mem_relayout();
if (ret != HD_OK) {
DBG_ERR("relayout fail\r\n");
}
flow_preview_load_sen_cfg();
vos_flag_clr(flag_task, FLAG_CAP_PROC_TASK_EXIT);
handle_cap_proc = vos_task_create(thread_cap_proc, NULL, "cap_proc", 10, DEFAULT_TASK_STACK_SIZE);
if(!handle_cap_proc){

View File

@ -19,4 +19,5 @@ extern void flow_preview_close_module(void);
extern void flow_preview_uninit_module(void);
extern void flow_preview_set_stop_flag(BOOL flag);
extern BOOL flow_preview_get_stop_flag(void);
extern INT32 flow_preview_load_sen_cfg(void);
#endif

View File

@ -634,7 +634,7 @@ static void insmod_encoder(void)
vos_perf_list_mark(__func__, __LINE__, 1);
} else { //fastboot
fwload_wait_done(CODE_SECTION_05);
fwload_wait_done(CODE_SECTION_06);
/* media encoder */
#if (_PACKAGE_VIDEO_)
@ -967,7 +967,7 @@ static void fastboot(void)
vos_task_resume(handle_photo_filenaming);
break;
case DX_HUNTING_MODE_MOVIE2:
case DX_HUNTING_MODE_MOVIE:
case DX_HUNTING_MODE_CAMERA_MOVIE:
@ -984,11 +984,7 @@ static void fastboot(void)
// #endif
#endif
// wait all text-code loaded
fwload_wait_done(CODE_SECTION_10);
System_OnPowerPreInit();
System_OnVideoFastbootInit();
fwload_wait_done(CODE_SECTION_06);
handle_movie_filenaming = vos_task_create(MovieFast_InitFileNamingThread, "init_fn", NULL, 10, 8192);
if (!handle_movie_filenaming) {
@ -997,7 +993,6 @@ static void fastboot(void)
else
vos_task_resume(handle_movie_filenaming);
fastboot_wait_done(BOOT_INIT_FILENAMINGOK);
handle_movie_moviemode = vos_task_create(MovieFast_InitMovieModeThread, "init_movie", NULL, 10, 8192);
if (!handle_movie_moviemode) {
@ -1006,6 +1001,10 @@ static void fastboot(void)
else
vos_task_resume(handle_movie_moviemode);
/* GxTime, for stamp */
fwload_wait_done(CODE_SECTION_10);
System_OnPowerPreInit();
System_OnVideoFastbootInit();
break;
case DX_HUNTING_MODE_OTHER: /* boot linux only */

View File

@ -16,6 +16,7 @@
#include "PrjCfg.h"
#include "sys_fwload.h"
#include "sys_storage_partition.h"
#include "DxHunting.h"
//#NT#PARTIAL_COMPRESS, we use rtos-main size + 1 block size
#define FW_PARTIAL_COMPRESS_WORK_BUF_SIZE 0x320000
@ -30,11 +31,16 @@ static ID fwload_flg_id = 0;
static UINT32 UserSection_Load[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
//This array is sort by loading order
static UINT32 UserSection_Order_full[] = {
static UINT32 UserSection_Order_common[] = {
CODE_SECTION_02, CODE_SECTION_03, CODE_SECTION_04, CODE_SECTION_05, CODE_SECTION_06,
CODE_SECTION_07, CODE_SECTION_08, CODE_SECTION_09, CODE_SECTION_10, FWSRV_PL_BURST_END_TAG
};
static UINT32 UserSection_Order_movie_fast_mode2[] = {
CODE_SECTION_02, CODE_SECTION_03, CODE_SECTION_04, CODE_SECTION_06, CODE_SECTION_05,
CODE_SECTION_07, CODE_SECTION_08, CODE_SECTION_09, CODE_SECTION_10, FWSRV_PL_BURST_END_TAG
};
int fwload_init(void)
{
vos_flag_create(&fwload_flg_id, NULL, "fwload_flg_id");
@ -168,7 +174,14 @@ int fwload_partload(void)
// start partial load
void (*LoadCallback)(const UINT32 Idx) = UserSection_LoadCb;
UINT32 *SecOrderTable = UserSection_Order_full;
UINT32 *SecOrderTable = NULL;
if(DrvGPIO_GetPhotoMovieModeFromMonitor() == DX_HUNTING_MODE_MOVIE2){
SecOrderTable = UserSection_Order_movie_fast_mode2;
}
else{
SecOrderTable = UserSection_Order_common;
}
LoadCallback(CODE_SECTION_01); // 1st part has loaded by loader

View File

@ -6,9 +6,12 @@
#include "SysSensor.h"
#include <kwrap/debug.h>
#include "flow_boot_logo.h"
#include "UIApp/PhotoFast/PhotoFastSliceEncode.h"
#include "UIAppPhoto_Param.h"
#if HUNTING_CAMERA_MCU == ENABLE
#include "sf_mcu.h"
#include <sf_mcu.h>
#endif
#include "DxHunting.h"
//#define ENABLE 1
//#define DISABLE 0
@ -106,7 +109,22 @@
static HD_COMMON_MEM_INIT_CONFIG mem_cfg = {0};
static void Movie_CommPoolInit_Mode1(void);
static void Movie_CommPoolInit_Mode2(void);
void Movie_CommPoolInit(void)
{
UINT32 mode = DrvGPIO_GetPhotoMovieModeFromMonitor();
if(mode == DX_HUNTING_MODE_MOVIE || mode == DX_HUNTING_MODE_PHOTO_MOVIE){
Movie_CommPoolInit_Mode1();
}
else{ /* DX_HUNTING_MODE_MOVIE2 */
Movie_CommPoolInit_Mode2();
}
}
static void Movie_CommPoolInit_Mode1(void)
{
UINT32 id=0;
UINT32 vcap_buf_size = 0;
@ -226,6 +244,78 @@ void Movie_CommPoolInit(void)
ImageApp_MovieMulti_Config(MOVIE_CONFIG_MEM_POOL_INFO, (UINT32)&mem_cfg);
}
static void Movie_CommPoolInit_Mode2(void)
{
UINT32 id=0;
UINT32 vcap_buf_size = 0;
HD_VIDEO_PXLFMT vcap_fmt = HD_VIDEO_PXLFMT_RAW12;
const UINT32 vdo_size_w = 2592;
const UINT32 vdo_size_h = 1944;
const UINT32 main_size_w = 1920;
const UINT32 main_size_h = 1080;
const UINT32 clone_size_w = 640;
const UINT32 clone_size_h = 360;
/*******************************************************************
* VCap + Main
*******************************************************************/
System_GetSensorInfo(id, SENSOR_CAPOUT_FMT, &vcap_fmt);
/* yuv */
if (HD_VIDEO_PXLFMT_CLASS(vcap_fmt) == HD_VIDEO_PXLFMT_CLASS_YUV) {
vcap_buf_size = VDO_YUV_BUFSIZE(vdo_size_w, vdo_size_h, vcap_fmt);
}
/* raw */
else {
vcap_buf_size = VDO_RAW_BUFSIZE(vdo_size_w, vdo_size_h, vcap_fmt);
}
#if (MOVIE_DIRECT_FUNC == ENABLE)
if (id == 0) {
vcap_buf_size = 0;
}
#endif
mem_cfg.pool_info[id].type = HD_COMMON_MEM_COMMON_POOL;
mem_cfg.pool_info[id].blk_size = DBGINFO_BUFSIZE() +
vcap_buf_size +
VDO_CA_BUF_SIZE(CA_WIN_NUM_W, CA_WIN_NUM_H) +
VDO_LA_BUF_SIZE(LA_WIN_NUM_W, LA_WIN_NUM_H);
mem_cfg.pool_info[id].blk_cnt = 6;
mem_cfg.pool_info[id].ddr_id = DDR_ID0;
/*******************************************************************
* Main
*******************************************************************/
id ++;
mem_cfg.pool_info[id].type = HD_COMMON_MEM_COMMON_POOL;
mem_cfg.pool_info[id].blk_size = DBGINFO_BUFSIZE() + VDO_YUV_BUFSIZE(main_size_w, main_size_h, HD_VIDEO_PXLFMT_YUV420);
mem_cfg.pool_info[id].blk_cnt = 4;
mem_cfg.pool_info[id].ddr_id = DDR_ID0;
/*******************************************************************
* Clone
*******************************************************************/
id ++;
mem_cfg.pool_info[id].type = HD_COMMON_MEM_COMMON_POOL;
mem_cfg.pool_info[id].blk_size = DBGINFO_BUFSIZE() + VDO_YUV_BUFSIZE(clone_size_w, clone_size_h, HD_VIDEO_PXLFMT_YUV420);
mem_cfg.pool_info[id].blk_cnt = 4;
mem_cfg.pool_info[id].ddr_id = DDR_ID0;
extern MOVIE_ALG_INFO gMovie_Alg_Info[];
UIAPP_PHOTO_SENSOR_INFO *sensor_info = UIAppPhoto_get_SensorInfo(0);
gMovie_Alg_Info[0].path13.ImgSize = (USIZE) {sensor_info->sSize.w, sensor_info->sSize.h};
ImageApp_MovieMulti_Config(MOVIE_CONFIG_MEM_POOL_INFO, (UINT32)&mem_cfg);
}
void Movie_CommPool_AI2_Init(void)
{
#if (ALG_FUNC_AI2 == ENABLE)

View File

@ -32,7 +32,12 @@
#include "DxHunting.h"
#include "flow_preview.h"
#include <kwrap/cmdsys.h>
#include "UIApp/PhotoFast/PhotoFast.h"
#include "UIApp/PhotoFast/PhotoFastSliceEncode.h"
#include "UIApp/PhotoFast/PhotoFastCapDateImprint.h"
#include "UIAppPhoto_Param.h"
#include "sys_fwload.h"
#include "../lfqueue/lfqueue.h"
#if defined(_UI_STYLE_LVGL_)
#include "flow_lvgl.h"
#endif
@ -57,14 +62,30 @@
#define FLG_EXE_MOVIE_RECSTART FLGPTN_BIT(1) ///< trigger display task
#define FLG_EXE_MOVIE_RECSTOP FLGPTN_BIT(2) ///< stop task
#define VDO_YUV_BUFSIZE(w, h, pxlfmt) ALIGN_CEIL_4(((w) * (h) * HD_VIDEO_PXLFMT_BPP(pxlfmt)) / 8)
typedef enum {
MOVIEFAST_IQ_VIDEO,
MOVIEFAST_IQ_PHOTO,
} MOVIEFAST_IQ_CFG;
typedef struct {
void* va;
UINT32 size;
char path[256];
HD_VIDEO_FRAME frame;
HD_PATH_ID vprc_path_id;
} MOVIEFAST_WRITE_QUEUE_PARAM;
/**********************************************************************************
* independent thumbnail
*********************************************************************************/
static char thumb_current_path_main[256] = {'\0'};
static char thumb_current_path_clone[256] = {'\0'};
static lfqueue_t write_queue = {0};
#define MOVIE_ROOT_PATH "A:\\Novatek\\"
#define MOIVE2_YUV_PATH "A:\\MOVIE2.yuv420"
#define FILE_SN_MAX 99999
#define FILEDB_MAX_NUM 5000
#define MOVIE_THUMB_WIDTH 640
@ -78,9 +99,13 @@ static UINT32 g_moviefast_tsk_run = 1;
static UINT32 g_moviefast_poweroff_tsk_run = 1;
static THREAD_HANDLE g_moviefast_tsk_id = 0;
static THREAD_HANDLE g_moviefast_power_off_tsk_id = 0;
static THREAD_HANDLE g_moviefast_write_tsk_id = 0;
static BOOL g_bIsRecStatus = FALSE;
static VOS_TICK g_rec_start_tick = 0;
static VOS_TICK g_alg_start_time= 0;
static VOS_TICK g_alg_end_time= 0;
static VOS_TICK g_vprc_trigger_frm_time= 0;
static UINT32 g_vprc_trigger_frm_count= 0;
//local function
static void MovieFast_OnRecStart(void);
@ -89,6 +114,7 @@ static void MovieFast_CmdTsk_Exit(void);
static int MovieFast_GetWaterLogoSource(const UINT32 recWidth,WATERLOGO_BUFFER *waterSrc);
static void MovieFast_ShutDown(void);
static void MovieFast_Close(void);
static void MovieFast_Load_Sen_Cfg(MOVIEFAST_IQ_CFG cfg);
static VOID MovieFast_Set_RecStartTick(VOS_TICK tick)
{
@ -247,6 +273,14 @@ static void MovieFast_ShutDown(void)
#if POWERON_BOOT_REPORT == ENABLE
DBG_DUMP("PhotoMovie mode = %u\n", mode);
VOS_TICK tick;
PhotoFast_GetTick(g_vprc_trigger_frm_count, &tick);
DBG_DUMP("\n\n**********************************************************\n"
" Trigger Speed(vcap frame count = %lu) : %lu us alg_start_time = %lu g_alg_end_time = %lu, perf tick = %lu us\n"
"**********************************************************\n",
g_vprc_trigger_frm_count, g_vprc_trigger_frm_time, g_alg_start_time, g_alg_end_time, tick);
vos_perf_list_dump();
@ -284,6 +318,15 @@ static void MovieFast_ShutDown(void)
#if POWERON_BOOT_REPORT == ENABLE
VOS_TICK tick;
PhotoFast_GetTick(g_vprc_trigger_frm_count, &tick);
DBG_DUMP("\n\n**********************************************************\n"
" Trigger Speed(vcap frame count = %lu) : %lu us alg_start_time = %lu g_alg_end_time = %lu, perf tick = %lu us\n"
"**********************************************************\n",
g_vprc_trigger_frm_count, g_vprc_trigger_frm_time, g_alg_start_time, g_alg_end_time, tick);
vos_perf_list_dump();
if(mode == DX_HUNTING_MODE_PHOTO_MOVIE){
MovieFast_PV_Info_Dump();
@ -464,7 +507,7 @@ static void MovieFast_RecMovieStamp(void)
NULL);
#endif
}
#if 1
#if 0
// set rawenc path 1st movie stamp
if (movie_rec_mask & mask) {
Width = gMovie_Rec_Info[i].size.w;
@ -664,6 +707,7 @@ static void MovieFast_OnRecStart(void)
}
#if defined(_UI_STYLE_LVGL_)
fwload_wait_done(CODE_SECTION_05);
flow_lv_init();
#endif
@ -821,6 +865,45 @@ static void MovieFast_FileNamingCB(MOVIE_CFG_REC_ID id, char *pFileName)
}
}
static void MovieFast_WriteFile_Task(void* arg)
{
lfqueue_t* queue = (lfqueue_t*)arg;
MOVIEFAST_WRITE_QUEUE_PARAM* param;
fastboot_wait_done(BOOT_INIT_FILESYSOK);
while(1)
{
param = (MOVIEFAST_WRITE_QUEUE_PARAM*) lfqueue_deq(queue);
if(param == NULL){
vos_util_delay_ms(5);
continue;
}
if(param->va){
DBG_DUMP("Write %s\n", param->path);
FST_FILE fp = FileSys_OpenFile(param->path, FST_OPEN_ALWAYS | FST_OPEN_WRITE);
FileSys_WriteFile(fp, (UINT8*)param->va, &param->size, 0, NULL);
FileSys_CloseFile(fp);
free(param->va);
}
else if(param->frame.phy_addr[0]){
DBG_DUMP("Write %s\n", param->path);
FST_FILE fp = FileSys_OpenFile(param->path, FST_OPEN_ALWAYS | FST_OPEN_WRITE);
FileSys_WriteFile(fp, (UINT8*)param->frame.phy_addr[0], &param->size, 0, NULL);
FileSys_CloseFile(fp);
hd_videoproc_release_out_buf(param->vprc_path_id, &param->frame);
}
if(param){
free(param);
}
}
}
static void MovieFast_UserEventCb(UINT32 id, MOVIE_USER_CB_EVENT event_id, UINT32 value)
{
//static UINT32 u32Cnt = 0;
@ -860,8 +943,6 @@ static void MovieFast_UserEventCb(UINT32 id, MOVIE_USER_CB_EVENT event_id, UINT3
case MOVIE_USER_CB_EVENT_JENC_DONE:{
fastboot_wait_done(BOOT_INIT_FILESYSOK);
MOVIE_JPEG_INFO *ptr = (MOVIE_JPEG_INFO*)value;
if(ptr->sign == MAKEFOURCC('T', 'H', 'U', 'M')){
@ -892,11 +973,26 @@ static void MovieFast_UserEventCb(UINT32 id, MOVIE_USER_CB_EVENT event_id, UINT3
#endif
DBG_DUMP("MOVIE_USER_CB_EVENT_JENC_DONE %s\n", tmp);
FST_FILE fp = FileSys_OpenFile(tmp, FST_CREATE_ALWAYS | FST_OPEN_WRITE);
MOVIEFAST_WRITE_QUEUE_PARAM* param = (MOVIEFAST_WRITE_QUEUE_PARAM*) malloc(sizeof(MOVIEFAST_WRITE_QUEUE_PARAM));
FileSys_WriteFile(fp, (UINT8*)ptr->addr_va, &ptr->size, 0, NULL);
FileSys_FlushFile(fp);
FileSys_CloseFile(fp);
if(param){
memset(param, 0, sizeof(MOVIEFAST_WRITE_QUEUE_PARAM));
param->size = ptr->size;
param->va = (void *)malloc(param->size);
snprintf(param->path, sizeof(param->path), tmp);
if(param->va){
memcpy(param->va, (void*)ptr->addr_va, param->size);
while (lfqueue_enq(&write_queue, (void*) param) == -1)
{
DBG_ERR("ENQ Full ?\r\n");
}
}
else{
DBG_ERR("malloc thumb va err!\n");
free(param);
}
}
thumb_current_path[0] = '\0';
}
}
@ -939,6 +1035,7 @@ int MovieFast_GetWaterLogoSource(const UINT32 recWidth,WATERLOGO_BUFFER *waterSr
return E_OK;
}
THREAD_RETTYPE MovieFast_InitFileNamingThread(void *arg)
{
if(DrvGPIO_GetPhotoMovieModeFromMonitor() != DX_HUNTING_MODE_PHOTO_MOVIE ){
@ -979,21 +1076,62 @@ void MovieFast_Set_Shutdown_flag(void)
vos_flag_set(MOVIEFAST_FLG_ID, FLGMOVIEFAST_SHUTDOWN);
}
static void MovieFast_Load_Sen_Cfg(MOVIEFAST_IQ_CFG cfg)
{
MOVIE_SENSOR_INFO sen_cfg = {0};
MOVIE_SENSOR_INFO *pSenCfg = &sen_cfg;
UINT32 size = sizeof(pSenCfg->iq_path.path) - 1;
for (int i = 0; i < SENSOR_CAPS_COUNT; i++) {
// get sensor info
sen_cfg.rec_id = _CFG_REC_ID_1 + i;
System_GetSensorInfo(i, SENSOR_DRV_CFG, &(sen_cfg.vcap_cfg));
System_GetSensorInfo(i, SENSOR_SENOUT_FMT, &(sen_cfg.senout_pxlfmt));
System_GetSensorInfo(i, SENSOR_CAPOUT_FMT, &(sen_cfg.capout_pxlfmt));
System_GetSensorInfo(i, SENSOR_DATA_LANE, &(sen_cfg.data_lane));
System_GetSensorInfo(i, SENSOR_AE_PATH, &(sen_cfg.ae_path));
System_GetSensorInfo(i, SENSOR_AWB_PATH, &(sen_cfg.awb_path));
System_GetSensorInfo(i, SENSOR_IQ_PATH, &(sen_cfg.iq_path));
System_GetSensorInfo(i, SENSOR_IQ_SHADING_PATH, &(sen_cfg.iq_shading_path));
System_GetSensorInfo(i, SENSOR_IQ_DPC_PATH, &(sen_cfg.iq_dpc_path));
System_GetSensorInfo(i, SENSOR_IQ_LDC_PATH, &(sen_cfg.iq_ldc_path));
if(cfg == MOVIEFAST_IQ_VIDEO){
strncpy(pSenCfg->iq_path.path, "/isp/iq/os05b10_iq_0_vid", size);
}
else{ /* MOVIEFAST_IQ_PHOTO */
if(sf_is_night_mode(0) ==TRUE)
strncpy(pSenCfg->iq_path.path, "/isp/iq/os05b10_iq_0", size);
else
strncpy(pSenCfg->iq_path.path, "/isp/iq/os05b10_iq_0_cap", size);
}
ImageApp_MovieMulti_Config(MOVIE_CONFIG_SENSOR_INFO, (UINT32)&sen_cfg);
}
}
THREAD_RETTYPE MovieFast_InitMovieModeThread(void *arg)
{
UINT32 i;
MOVIEMULTI_MAX_LINK_INFO MaxLinkInfo = {1, 0, 0, 1, 0}; //Img, Disp, Wifi, AudCap, EthCam
MOVIE_SENSOR_INFO sen_cfg = {0};
MOVIE_SENSOR_INFO *pSenCfg = &sen_cfg;
HD_RESULT hd_ret;
DBG_FUNC("\r\n");
UINT32 rec_type = MovieMapping_GetRecType(UI_GetData(FL_MOVIE_SIZE));
Movie_CommPoolInit();
MovieFast_SetRecInfoByUISetting();
if(DrvGPIO_GetPhotoMovieModeFromMonitor() == DX_HUNTING_MODE_MOVIE2){
//UI_SetData(FL_MOVIE_SIZE, MOVIE_SIZE_CLONE_1920x1080P30_1280x720P30);
Set_NIGHTMODE(0, 0);
}
else{
Set_NIGHTMODE(0, 1);
Set_AEMODE(0);
}
MovieFast_SetRecInfoByUISetting();
#if (_PACKAGE_DISPLAY_)
gMovie_Disp_Info.vout_ctrl = GxVideo_GetDeviceCtrl(DOUT1,DISPLAY_DEVCTRL_CTRLPATH);
@ -1007,49 +1145,16 @@ THREAD_RETTYPE MovieFast_InitMovieModeThread(void *arg)
MaxLinkInfo.MaxDispLink = 1;
#endif
ImageApp_MovieMulti_Config(MOVIE_CONFIG_MAX_LINK_INFO, (UINT32) &MaxLinkInfo);
for (i = 0; i < SENSOR_CAPS_COUNT; i++) {
ImageApp_MovieMulti_Config(MOVIE_CONFIG_RECORD_INFO, (UINT32)&gMovie_Rec_Info[i]);
ImageApp_MovieMulti_Config(MOVIE_CONFIG_RECORD_INFO, (UINT32)&gMovie_Clone_Info[i]);
ImageApp_MovieMulti_Config(MOVIE_CONFIG_RECORD_INFO, (UINT32)&gMovie_Rec_Info[0]);
ImageApp_MovieMulti_Config(MOVIE_CONFIG_RECORD_INFO, (UINT32)&gMovie_Clone_Info[0]);
ImageApp_MovieMulti_Config(MOVIE_CONFIG_ALG_INFO, (UINT32)&gMovie_Alg_Info[0]);
// get sensor info
sen_cfg.rec_id = _CFG_REC_ID_1 + i;
System_GetSensorInfo(i, SENSOR_DRV_CFG, &(sen_cfg.vcap_cfg));
System_GetSensorInfo(i, SENSOR_SENOUT_FMT, &(sen_cfg.senout_pxlfmt));
System_GetSensorInfo(i, SENSOR_CAPOUT_FMT, &(sen_cfg.capout_pxlfmt));
System_GetSensorInfo(i, SENSOR_DATA_LANE, &(sen_cfg.data_lane));
System_GetSensorInfo(i, SENSOR_AE_PATH, &(sen_cfg.ae_path));
System_GetSensorInfo(i, SENSOR_AWB_PATH, &(sen_cfg.awb_path));
System_GetSensorInfo(i, SENSOR_IQ_PATH, &(sen_cfg.iq_path));
System_GetSensorInfo(i, SENSOR_IQ_SHADING_PATH, &(sen_cfg.iq_shading_path));
System_GetSensorInfo(i, SENSOR_IQ_DPC_PATH, &(sen_cfg.iq_dpc_path));
System_GetSensorInfo(i, SENSOR_IQ_LDC_PATH, &(sen_cfg.iq_ldc_path));
ImageApp_MovieMulti_Config(MOVIE_CONFIG_SENSOR_INFO, (UINT32)&sen_cfg);
#if (SENSOR_SIEPATGEN == ENABLE)
ImageApp_MovieMulti_SetParam(_CFG_REC_ID_1, MOVIEMULTI_PARAM_VCAP_PAT_GEN, HD_VIDEOCAP_SEN_PAT_COLORBAR);
#endif
}
if ((hd_ret = vendor_isp_init()) != HD_OK) {
DBG_ERR("vendor_isp_init fail(%d)\n", hd_ret);
if(DrvGPIO_GetPhotoMovieModeFromMonitor() != DX_HUNTING_MODE_MOVIE2){
MovieFast_Load_Sen_Cfg(MOVIEFAST_IQ_VIDEO);
}
if (strlen(pSenCfg->iq_path.path) != 0) {
IQT_DTSI_INFO iq_dtsi_info;
iq_dtsi_info.id = pSenCfg->iq_path.id;
strncpy(iq_dtsi_info.node_path, "/isp/iq/os05b10_iq_0_vid", 31);
strncpy(iq_dtsi_info.file_path, "null", DTSI_NAME_LENGTH);
//DBG_ERR("vendor_isp_set_iq %s\r\n",iq_dtsi_info.node_path);
iq_dtsi_info.buf_addr = (UINT8 *)pSenCfg->iq_path.addr;
if ((hd_ret = vendor_isp_set_iq(IQT_ITEM_RLD_DTSI, &iq_dtsi_info)) != HD_OK) {
DBG_ERR("vendor_isp_set_iq fail(%d)\r\n", hd_ret);
else{
MovieFast_Load_Sen_Cfg(MOVIEFAST_IQ_PHOTO);
}
}
if ((hd_ret = vendor_isp_uninit()) != HD_OK) {
DBG_ERR("vendor_isp_uninit fail(%d)\n", hd_ret);
}
MovieMapping_GetStreamInfo(UI_GetData(FL_MOVIE_SIZE), (UINT32)&gMovie_Strm_Info);
ImageApp_MovieMulti_Config(MOVIE_CONFIG_STREAM_INFO, (UINT32)&gMovie_Strm_Info);
ImageApp_MovieMulti_Config(MOVIE_CONFIG_AUDIO_INFO, (UINT32)&gMovie_Audio_Info);
@ -1063,7 +1168,6 @@ THREAD_RETTYPE MovieFast_InitMovieModeThread(void *arg)
// User Callback
ImageApp_MovieMulti_RegUserCB(MovieFast_UserEventCb);
ImageApp_MovieMulti_SetParam(_CFG_CTRL_ID, MOVIEMULTI_PARAM_FILE_UTC_AUTO_EN, TRUE);
#if (MOVIE_DIRECT_FUNC == ENABLE)
ImageApp_MovieMulti_SetParam(_CFG_REC_ID_1, MOVIEMULTI_PARAM_VCAP_OUTFUNC, HD_VIDEOCAP_OUTFUNC_DIRECT);
@ -1071,10 +1175,34 @@ THREAD_RETTYPE MovieFast_InitMovieModeThread(void *arg)
ImageApp_MovieMulti_SetParam(_CFG_REC_ID_1, MOVIEMULTI_PRARM_FILEDB_MAX_MUM, 5000);
if(DrvGPIO_GetPhotoMovieModeFromMonitor() != DX_HUNTING_MODE_MOVIE2){
MOVIEMULTI_IPL_SIZE_INFO ipl_size={{2560,1440}, 30};
ImageApp_MovieMulti_SetParam(_CFG_REC_ID_1 , MOVIEMULTI_PARAM_IPL_USER_IMG_SIZE, (UINT32)&ipl_size);
ImageApp_MovieMulti_SetParam(_CFG_REC_ID_1 , MOVIEMULTI_PARAM_IPL_FORCED_IMG_SIZE, MOVIE_IPL_SIZE_USER);
ImageApp_MovieMulti_SetParam(_CFG_CTRL_ID, MOVIEMULTI_PARAM_FILE_UTC_AUTO_EN, TRUE);
}
else{
UIAPP_PHOTO_SENSOR_INFO *sensor_info = UIAppPhoto_get_SensorInfo(0);
MOVIEMULTI_IPL_SIZE_INFO ipl_size={{sensor_info->sSize.w, sensor_info->sSize.h}, 60};
ImageApp_MovieMulti_SetParam(_CFG_REC_ID_1 , MOVIEMULTI_PARAM_IPL_USER_IMG_SIZE, (UINT32)&ipl_size);
ImageApp_MovieMulti_SetParam(_CFG_REC_ID_1 , MOVIEMULTI_PARAM_IPL_FORCED_IMG_SIZE, MOVIE_IPL_SIZE_USER);
MOVIEMULTI_IME_CROP_INFO crop_info = {0};
/* 4:3 -> 16:9 */
crop_info.IMESize = (USIZE){1920, 1440};
crop_info.IMEWin = (URECT){0, 180, 1920, 1080};
ImageApp_MovieMulti_SetParam(_CFG_REC_ID_1 , MOVIEMULTI_PARAM_MAIN_IME_CROP, (UINT32)&crop_info);
if(MOVIE_REC_TYPE_CLONE == rec_type)
{
/* 4:3 -> 16:9 */
crop_info.IMESize = (USIZE){640, 480};
crop_info.IMEWin = (URECT){0, 60, 640, 360};
ImageApp_MovieMulti_SetParam(_CFG_REC_ID_1 , MOVIEMULTI_PARAM_CLONE_IME_CROP, (UINT32)&crop_info);
}
}
#if (ANR_FUNC == ENABLE)
HD_AUDIOCAP_ANR audio_cfg_param = {0};
@ -1099,6 +1227,40 @@ THREAD_RETTYPE MovieFast_InitMovieModeThread(void *arg)
ImageApp_MovieMulti_SetParam(_CFG_REC_ID_1 + i, MOVIEMULTI_PARAM_FILE_FRONT_MOOV_FLUSH_SEC, 2);
}
if(DrvGPIO_GetPhotoMovieModeFromMonitor() == DX_HUNTING_MODE_MOVIE2){
HD_PATH_ID vprc_in_id = ImageApp_MovieMulti_GetVprc3DNRPort(_CFG_REC_ID_1);
HD_PATH_ID vprc_main_id = ImageApp_MovieMulti_GetVprcPort(_CFG_REC_ID_1, IAMOVIE_VPRC_EX_MAIN);
HD_PATH_ID vprc_alg_id = ImageApp_MovieMulti_GetVprcPort(_CFG_REC_ID_1, IAMOVIE_VPRC_EX_ALG);
HD_PATH_ID vprc_clone_id = ImageApp_MovieMulti_GetVprcPort(_CFG_REC_ID_1, IAMOVIE_VPRC_EX_CLONE);
HD_VIDEOPROC_OUT_EX vprc_out = {0};
HD_VIDEOPROC_IN vprc_in = {0};
hd_videoproc_get(vprc_in_id, HD_VIDEOPROC_PARAM_IN, &vprc_in);
vprc_in.frc = HD_VIDEO_FRC_RATIO(30, 60);
hd_videoproc_set(vprc_in_id, HD_VIDEOPROC_PARAM_IN, &vprc_in);
/* alg */
hd_videoproc_get(vprc_alg_id, HD_VIDEOPROC_PARAM_OUT_EX, &vprc_out);
vprc_out.frc = HD_VIDEO_FRC_RATIO(1, 1);
hd_videoproc_set(vprc_alg_id, HD_VIDEOPROC_PARAM_OUT_EX, &vprc_out);
/* main */
hd_videoproc_get(vprc_main_id, HD_VIDEOPROC_PARAM_OUT_EX, &vprc_out);
vprc_out.frc = HD_VIDEO_FRC_RATIO(1, 1);
// vprc_out.depth = 0; /* raw encode */
hd_videoproc_set(vprc_main_id, HD_VIDEOPROC_PARAM_OUT_EX, &vprc_out);
if(MOVIE_REC_TYPE_CLONE == rec_type)
{
/* clone */
hd_videoproc_get(vprc_clone_id, HD_VIDEOPROC_PARAM_OUT_EX, &vprc_out);
vprc_out.frc = HD_VIDEO_FRC_RATIO(1, 1);
// vprc_out.depth = 0;
hd_videoproc_set(vprc_clone_id, HD_VIDEOPROC_PARAM_OUT_EX, &vprc_out);
}
}
if (1){//gMovie_Alg_Info[_CFG_REC_ID_1 + i].path13.ImgSize.w && gMovie_Alg_Info[_CFG_REC_ID_1 + i].path13.ImgSize.h) {
ImageApp_MovieMulti_ImgLinkForAlg((_CFG_REC_ID_1 ), _CFG_ALG_PATH3, ENABLE, TRUE);
}
@ -1114,9 +1276,95 @@ THREAD_RETTYPE MovieFast_InitMovieModeThread(void *arg)
//ImageApp_MovieMulti_SetParam(_CFG_REC_ID_1, MOVIEMULTI_PARAM_IMGCAP_THUM_WITH_EXIF, TRUE); // enable if wants exif in mp4 thumbnail
MovieExe_InitExif();
#endif
if(lfqueue_init(&write_queue)){
DBG_ERR("init write_queue failed\n");
}
else{
if ((g_moviefast_write_tsk_id = vos_task_create(MovieFast_WriteFile_Task, &write_queue, "MovieFastThumTsk", PRI_MOVIEFAST_CMDTSK, STKSIZE_MOVIEFAST_CMDTSK)) == 0) {
DBG_ERR("MovieFast_Thumb_Task create failed.\r\n");
} else {
vos_task_resume(g_moviefast_write_tsk_id);
}
}
MovieFast_InstallID();
vos_util_delay_ms(132);
{
HD_VIDEO_FRAME frame;
HD_PATH_ID alg_path;
BOOL stop = FALSE;
UINT32 ae_cnt = 0;
UINT32 stop_cnt = 0;
BOOL ae_locked = FALSE;
if(DrvGPIO_GetPhotoMovieModeFromMonitor() == DX_HUNTING_MODE_MOVIE2){
ae_cnt = 6;
stop_cnt = 12;
}
else{
ae_cnt = 9999;
stop_cnt = 12;
}
alg_path = ImageApp_MovieMulti_GetAlgDataPort(_CFG_REC_ID_1, _CFG_ALG_PATH3);
vos_perf_mark(&g_alg_start_time);
do {
hd_videoproc_pull_out_buf(alg_path, &frame, PHOTOFAST_HD_PUSH_PULL_TIMEOUT_MS);
DBG_DUMP("count = %llu, timestamp = %llu\n", frame.count, frame.timestamp);
if(frame.count >= ae_cnt && ae_locked == FALSE){
DBG_DUMP("timestamp = %llu count = %llu\n", frame.timestamp, frame.count);
Set_AEMODE(1);
setet_preset_param();
ae_locked = TRUE;
}
if(frame.count >= stop_cnt){
UIAPP_PHOTO_SENSOR_INFO *sensor_info = UIAppPhoto_get_SensorInfo(0);
UINT32 buf_size = 0;
buf_size = VDO_YUV_BUFSIZE(sensor_info->sSize.w, sensor_info->sSize.h , HD_VIDEO_PXLFMT_YUV420);
#if 0
VOS_TICK t1, t2;
vos_perf_mark(&t1);
FST_FILE fp = FileSys_OpenFile(MOIVE2_YUV_PATH, FST_OPEN_ALWAYS | FST_OPEN_WRITE);
FileSys_WriteFile(fp, (UINT8*)frame.phy_addr[0], &buf_size, 0, NULL);
FileSys_CloseFile(fp);
vos_perf_mark(&t2);
DBG_DUMP("write = %lu us\n", vos_perf_duration(t1, t2));
#endif
MOVIEFAST_WRITE_QUEUE_PARAM* param = (MOVIEFAST_WRITE_QUEUE_PARAM*) malloc(sizeof(MOVIEFAST_WRITE_QUEUE_PARAM));
if(param){
memcpy((void*)&param->frame, (void*)&frame, sizeof(HD_VIDEO_FRAME));
param->va = NULL;
param->vprc_path_id = alg_path;
param->size = buf_size;
sprintf(param->path, MOIVE2_YUV_PATH);
}
g_vprc_trigger_frm_time = (VOS_TICK)frame.timestamp;
g_vprc_trigger_frm_count = (UINT32)frame.count;
while (lfqueue_enq(&write_queue, (void*) param) == -1)
{
DBG_ERR("ENQ Full ?\r\n");
}
stop = TRUE;
}
else{
hd_videoproc_release_out_buf(alg_path, &frame);
}
} while(stop == FALSE);
vos_perf_mark(&g_alg_end_time);
}
if ((g_moviefast_power_off_tsk_id = vos_task_create(MovieFast_PowerOffTsk, 0, "MovieFastPwrTsk", PRI_MOVIEFAST_CMDTSK, STKSIZE_MOVIEFAST_CMDTSK)) == 0) {
DBG_ERR("MovieFast_PowerOffTsk create failed.\r\n");
@ -1147,6 +1395,65 @@ static void MovieFast_Close(void)
ImageApp_MovieMulti_Close();
if(DrvGPIO_GetPhotoMovieModeFromMonitor() == DX_HUNTING_MODE_MOVIE2){
HD_PATH_ID alg_path = ImageApp_MovieMulti_GetAlgDataPort(_CFG_REC_ID_1, _CFG_ALG_PATH3);
UIAPP_PHOTO_SENSOR_INFO *sensor_info = UIAppPhoto_get_SensorInfo(0);
UINT32 buf_pa = 0;
void* buf_va = 0;
PhotoFast_Movie_Init();
PhotoFast_SliceEncode_Open(alg_path);
PhotoFast_SliceEncode2_Open(alg_path, 1);
HD_VIDEO_FRAME frame = {0};
UINT32 addr_dst[HD_VIDEO_MAX_PLANE] = {0};
UINT32 loff_dst[HD_VIDEO_MAX_PLANE] = {0};
UINT32 buf_size = 0;
HD_COMMON_MEM_VB_BLK blk = 0;
buf_size = VDO_YUV_BUFSIZE(sensor_info->sSize.w, sensor_info->sSize.h , HD_VIDEO_PXLFMT_YUV420);
blk = hd_common_mem_get_block(HD_COMMON_MEM_COMMON_POOL, buf_size, DDR_ID0); // Get block from mem pool
if (blk == HD_COMMON_MEM_VB_INVALID_BLK) {
DBG_ERR("hd_common_mem_get_block failed!(size=%lx)\n", buf_size);
}
buf_pa = hd_common_mem_blk2pa(blk);
if (buf_pa == 0) {
DBG_ERR("hd_common_mem_blk2pa failed!(blk=0x%x)\n", blk);
}
buf_va = (void*)hd_common_mem_mmap(HD_COMMON_MEM_MEM_TYPE_CACHE, buf_pa, buf_size);
if (buf_va == 0) {
DBG_ERR("hd_common_mem_mmap failed!\r\n");
}
if(buf_pa){
/* dst img */
addr_dst[0] = buf_pa;
loff_dst[0] = sensor_info->sSize.w;
addr_dst[1] = addr_dst[0] + loff_dst[0] * sensor_info->sSize.h;
loff_dst[1] = sensor_info->sSize.w;
vf_init_ex(&frame, sensor_info->sSize.w, sensor_info->sSize.h, HD_VIDEO_PXLFMT_YUV420, loff_dst, addr_dst);
FST_FILE fp = FileSys_OpenFile(MOIVE2_YUV_PATH, FST_OPEN_READ);
if(fp){
FileSys_ReadFile(fp, (UINT8*)buf_va, &buf_size, 0, NULL);
FileSys_CloseFile(fp);
PhotoFast_Sliceencode2_Enq_Frame(&frame);
PhotoFast_SliceEncode2_Close();
}
else{
DBG_ERR("%s not found!\n", MOIVE2_YUV_PATH);
}
}
else{
DBG_ERR("allocate %lx failed!\n", buf_size);
}
}
DCF_Close(g_dcf_hdl);
DCF_UnInstallID();

View File

@ -19,6 +19,7 @@
#include "vf_gfx.h"
#include "GxTime.h"
#include "hd_type.h"
#include "sys_fwload.h"
#if MOVIE_ISP_LOG
#include "vendor_isp.h"
@ -328,6 +329,8 @@ static void MovieStamp_get_isp_status(UINT32 id, char* Buf, UINT32 BufLen)
#endif
UINT32 MovieStamp_TriggerUpdateChk(void)
{
extern int fwload_wait_done(CODE_SECTION section);
fwload_wait_done(CODE_SECTION_10);
struct tm CurDateTime;
GxTime_GetTime(&CurDateTime);
@ -1490,7 +1493,7 @@ void MovieStamp_VsFontConfig(UINT32 uiVEncOutPortId)
YUV_GET_RGB(y, u, v, r, g, b);
#if defined(_UI_STYLE_LVGL_)
g_VsFontIn[uiVEncOutPortId].ciTransparet = ((LV_COLOR_GET_A32((lv_color32_t){.full = LV_USER_CFG_MOVIE_DATESTAMP_COLOR_BACKGROUND}) >> 4) << 12) | ((g>>4)<<4) | (b>>4); //0x0000;
g_VsFontIn[uiVEncOutPortId].ciTransparet = ((LV_COLOR_GET_A32((lv_color32_t){.full = LV_USER_CFG_STAMP_COLOR_BACKGROUND}) >> 4) << 12) | ((g>>4)<<4) | (b>>4); //0x0000;
#else
g_VsFontIn[uiVEncOutPortId].ciTransparet = ((r>>4)<<8) | ((g>>4)<<4) | (b>>4); //0x0000;
#endif

View File

@ -72,7 +72,7 @@
#else
#if PHOTO_PREVIEW_SLICE_ENC_FUNC || POWERON_FAST_SLICE_ENC
#define PHOTO_MAX_CAP_SIZE UIAPP_PHOTO_SIZE_40M /* Max slice encode size */
#define PHOTO_SLICE_ENC_MIN_CAP_SIZE UIAPP_PHOTO_SIZE_2M /* UI Menu only display options which size is larger than PHOTO_SLICE_ENC_MIN_CAP_SIZE */
#define PHOTO_MIN_CAP_SIZE UIAPP_PHOTO_SIZE_2M /* UI Menu only display options which size is larger than PHOTO_SLICE_ENC_MIN_CAP_SIZE */
#else
#define PHOTO_MAX_CAP_SIZE UIAPP_PHOTO_SIZE_12M
#endif

View File

@ -37,6 +37,7 @@
#include "PhotoFastCapDateImprint.h"
#include "DCF.h"
#include "flow_boot_linux.h"
#include "UIAppPhoto_Param.h"
#if HUNTING_CAMERA_MCU == ENABLE
#include <sf_mcu.h>
#include "sf_led.h"
@ -116,7 +117,7 @@ INT32 PhotoFast_FileNaming_MakePath(UINT32 filetype, CHAR *pPath, UINT32 uiPathI
INT32 PhotoFast_Phy2LogID(UINT32 id);
THREAD_RETTYPE PhotoFast_EncodeBsPullThread(void *ptr);
UINT32 PhotoFast_GetExpectSize_RhoBRCrtl(UINT32 ImgIdx, BOOL bPrimaryOnly);
INT32 PhotoFast_WriteFile(UINT32 Addr, UINT32 Size, UINT32 Fmt, UINT32 uiPathId);
INT32 PhotoFast_WriteFile(UINT32 Addr, UINT32 Size, UINT32 Fmt, UINT32 uiPathId, char* Path);
static void PhotoFast_ShutDown(void);
void Set_NIGHTMODE(UINT32 id, UINT8 isSnapVideo);
void Set_AEMODE(UINT32 id);
@ -847,7 +848,7 @@ void PhotoFast_FileNaming_SetSortBySN(CHAR *pDelimStr, UINT32 nDelimCount, UINT3
DBG_ERR("No set Delim String!!\r\n");
}
INT32 PhotoFast_WriteFile(UINT32 Addr, UINT32 Size, UINT32 Fmt, UINT32 uiPathId)
INT32 PhotoFast_WriteFile(UINT32 Addr, UINT32 Size, UINT32 Fmt, UINT32 uiPathId, char* Path)
{
FST_FILE fp;
INT32 rt;
@ -857,6 +858,7 @@ INT32 PhotoFast_WriteFile(UINT32 Addr, UINT32 Size, UINT32 Fmt, UINT32 uiPathId)
UINT32 open_flag;
UINT32 nextFolderID = 0, nextFileID = 0;
if(Path == NULL){
if (DCF_GetDBInfo(DCF_INFO_IS_9999)) {
DBG_ERR("Exceed max dcf file!\r\n");
return FST_STA_NOFREE_SPACE;
@ -870,6 +872,12 @@ INT32 PhotoFast_WriteFile(UINT32 Addr, UINT32 Size, UINT32 Fmt, UINT32 uiPathId)
}
DCF_GetNextID(&nextFolderID,&nextFileID);
DCF_MakeObjPath(nextFolderID, nextFileID, fileType, FilePath);
DCF_AddDBfile(FilePath);
DBG_DUMP("%s added to DCF\r\n", FilePath);
}
}
else{
strncpy(FilePath, Path, sizeof(FilePath));
}
#if HUNTING_CAMERA_MCU == ENABLE
@ -897,8 +905,8 @@ INT32 PhotoFast_WriteFile(UINT32 Addr, UINT32 Size, UINT32 Fmt, UINT32 uiPathId)
FileSys_FlushFile(fp);
FileSys_CloseFile(fp);
if (rt == FST_STA_OK) {
DCF_AddDBfile(FilePath);
DBG_DUMP("%s added to DCF\r\n", FilePath);
// DCF_AddDBfile(FilePath);
// DBG_DUMP("%s added to DCF\r\n", FilePath);
} else {
DBG_ERR("Addr=0x%x,Size=0x%x,Fmt=%d\r\n", Addr, Size, Fmt);
}
@ -1343,7 +1351,7 @@ static void PhotoFast_CaptureStart(HD_VIDEO_FRAME *p_video_frame)
GxImgFile_CombineJPG(&exif_data, &pri_jpg, &scr_jpg, &dst_jpg_file);
fastboot_wait_done(BOOT_INIT_FILENAMINGOK);
PhotoFast_WriteFile(dst_jpg_file.addr, dst_jpg_file.size, NAMERULE_FMT_JPG, 0);
PhotoFast_WriteFile(dst_jpg_file.addr, dst_jpg_file.size, NAMERULE_FMT_JPG, 0, 0);
for (i=0; i < PHOTO_ENC_JPG_TYPE_MAX_ID; i++) {
hd_ret = hd_videoenc_release_out_buf(g_video_enc_path[i], &g_bs_data_pull[i]);
@ -1684,7 +1692,11 @@ THREAD_RETTYPE PhotoFast_FlowPreviewThread(void *arg)
//#endif
start_cap = TRUE;
DBG_DUMP("*** trigger frame count = %llu (start from 1)\n", video_cap_frame.count); /* UINT64, use %llu */
VOS_TICK tick;
PhotoFast_GetTick(video_cap_frame.count, &tick);
DBG_DUMP("*** trigger frame count = %llu (start from 1) frame timestamp = %llu, tick=%lu ms , \n", video_cap_frame.count, video_cap_frame.timestamp, tick); /* UINT64, use %llu */
//Set_AEMODE(1);
}
@ -2033,7 +2045,6 @@ void Set_NIGHTMODE(UINT32 id, UINT8 isSnapVideo)
void Set_AEMODE(UINT32 id)
{
AET_MANUAL ae_manual = {0};
AWBT_MANUAL manual = {0};
AWBT_STATUS status = {0};
ISPT_C_GAIN c_gain = {0};
HD_RESULT hd_ret;
@ -2102,20 +2113,6 @@ void Set_AEMODE(UINT32 id)
c_gain.gain[1] = status.status.cur_g_gain;
c_gain.gain[2] = status.status.cur_b_gain;
vendor_isp_set_common(ISPT_ITEM_C_GAIN, &c_gain);
manual.id = 0;
if (id == 1)
{
manual.manual.en = 1;
manual.manual.r_gain = status.status.cur_r_gain;
manual.manual.g_gain = status.status.cur_g_gain;
manual.manual.b_gain = status.status.cur_b_gain;
}
else
{
manual.manual.en = 0;
}
vendor_isp_set_awb(AWBT_ITEM_MANUAL, &manual);
}
}
if ((hd_ret = vendor_isp_uninit()) != HD_OK) {
@ -2189,5 +2186,75 @@ UINT32 PhotoFast_GetTickBufSize(void)
return VD_TICK_BUF_SIZE;
}
#include "vendor_common.h"
#define DBGINFO_BUFSIZE() (0x200)
ER PhotoFast_Movie_Init(void)
{
PhotoFast_InitExif();
PhotoFastCapDateImprint_InitBuff();
hd_gfx_init();
HD_COMMON_MEM_INIT_CONFIG mem_cfg = {0};
UINT32 id = 0;
/*******************************************************************
* Slice encode thumbnail
*******************************************************************/
#if HUNTING_CAMERA_MCU == ENABLE
UIMenuStoreInfo *puiPara = sf_ui_para_get();
UINT32 blk_size = DBGINFO_BUFSIZE() + VDO_YUV_BUFSIZE(sf_get_screen_nail_width(puiPara->SendPicSize), sf_get_screen_nail_height(puiPara->SendPicSize), HD_VIDEO_PXLFMT_YUV420);
#else
UINT32 blk_size = DBGINFO_BUFSIZE() + VDO_YUV_BUFSIZE(CFG_SCREENNAIL_W, CFG_SCREENNAIL_H, HD_VIDEO_PXLFMT_YUV420);
#endif
mem_cfg.pool_info[id].type = HD_COMMON_MEM_COMMON_POOL;
mem_cfg.pool_info[id].blk_size = blk_size;
mem_cfg.pool_info[id].blk_cnt = 1;
mem_cfg.pool_info[id].ddr_id = DDR_ID0;
/*******************************************************************
* Slice encode slice yuv buffer
*******************************************************************/
id ++;
mem_cfg.pool_info[id].type = HD_COMMON_MEM_COMMON_POOL;
mem_cfg.pool_info[id].blk_size = PhotoFast_SliceEncode_Get_Max_Dst_Slice_Buffer_Size(HD_VIDEO_PXLFMT_YUV420);
mem_cfg.pool_info[id].blk_cnt = 1;
mem_cfg.pool_info[id].ddr_id = DDR_ID0;
// config common pool (screennail image)
id ++;
mem_cfg.pool_info[id].type = HD_COMMON_MEM_COMMON_POOL;
#if HUNTING_CAMERA_MCU == ENABLE
mem_cfg.pool_info[id].blk_size = DBGINFO_BUFSIZE()+VDO_YUV_BUFSIZE(sf_get_screen_nail_width(puiPara->SendPicSize), sf_get_screen_nail_height(puiPara->SendPicSize), HD_VIDEO_PXLFMT_YUV420);
#else
mem_cfg.pool_info[id].blk_size = DBGINFO_BUFSIZE()+VDO_YUV_BUFSIZE(CFG_SCREENNAIL_W, CFG_SCREENNAIL_H, HD_VIDEO_PXLFMT_YUV420);
#endif
mem_cfg.pool_info[id].blk_cnt = 1;
mem_cfg.pool_info[id].ddr_id = DDR_ID0;
// config common pool (EXIF)
id++;
mem_cfg.pool_info[id].type = HD_COMMON_MEM_COMMON_POOL;
mem_cfg.pool_info[id].blk_size = DBGINFO_BUFSIZE()+CFG_JPG_HEADER_SIZE;
mem_cfg.pool_info[id].blk_cnt = 1;
mem_cfg.pool_info[id].ddr_id = DDR_ID0;
UIAPP_PHOTO_SENSOR_INFO *sensor_info = UIAppPhoto_get_SensorInfo(0);
id++;
mem_cfg.pool_info[id].type = HD_COMMON_MEM_COMMON_POOL;
mem_cfg.pool_info[id].blk_size = DBGINFO_BUFSIZE()+VDO_YUV_BUFSIZE(sensor_info->sSize.w, sensor_info->sSize.h , HD_VIDEO_PXLFMT_YUV420);
mem_cfg.pool_info[id].blk_cnt = 1;
mem_cfg.pool_info[id].ddr_id = DDR_ID0;
vendor_common_mem_relayout(&mem_cfg);
return E_OK;
}
#endif

View File

@ -56,10 +56,11 @@ extern THREAD_RETTYPE PhotoFast_EncodeBsPullThread(void *arg);
extern THREAD_RETTYPE PhotoFast_FlowPreviewThread(void *arg);
extern void PhotoFast_PhotoClose(void);
extern BOOL PhotoFast_SetTick(UINT32 cnt, VOS_TICK tick); /* start from 0 */
extern BOOL PhotoFast_GetTick(UINT32 cnt, VOS_TICK* tick); /* start from 0 */
extern BOOL PhotoFast_SetTick(UINT32 cnt, VOS_TICK tick); /* start from 1 */
extern BOOL PhotoFast_GetTick(UINT32 cnt, VOS_TICK* tick); /* start from 1 */
extern BOOL PhotoFast_SetTriggerFrmCnt(UINT32 cnt); /* trigger vcap frame count , get from HD_VIDEO_FRAME */
UINT32 PhotoFast_GetTriggerFrmCnt(VOID);
extern UINT32 PhotoFast_GetTickBufSize(void);
ER PhotoFast_Movie_Init(void);
#endif //_UIAPP_PHOTO_H_

View File

@ -234,7 +234,7 @@ static UINT32 PhotoFast_SliceEncode_Get_Max_Dst_Slice_Info(PhotoFast_SliceSize_I
UINT8 cap_idx = 0;
for(cap_idx = PHOTO_MAX_CAP_SIZE ; cap_idx <= PHOTO_SLICE_ENC_MIN_CAP_SIZE ; cap_idx++)
for(cap_idx = PHOTO_MAX_CAP_SIZE ; cap_idx <= PHOTO_MIN_CAP_SIZE ; cap_idx++)
{
HD_DIM tmp_cap_size = {0};
PhotoFast_SliceSize_Info tmp_slice_info = {0};

View File

@ -19,43 +19,43 @@ TMDEF_BEGIN_OPTIONS(PHOTO_SIZE)
#if PHOTO_PREVIEW_SLICE_ENC_FUNC || POWERON_FAST_SLICE_ENC
#if(PHOTO_MAX_CAP_SIZE > PHOTO_SLICE_ENC_MIN_CAP_SIZE)
#if(PHOTO_MAX_CAP_SIZE > PHOTO_MIN_CAP_SIZE)
#error "please check PHOTO_MAX_CAP_SIZE in UIAppPhoto.h"
#endif
#if (PHOTO_SLICE_ENC_MIN_CAP_SIZE < UIAPP_PHOTO_SIZE_40M)//PHOTO_SIZE_40M
#if (PHOTO_MIN_CAP_SIZE < UIAPP_PHOTO_SIZE_40M)//PHOTO_SIZE_40M
TMDEF_OPTION_TEXT_S(PHOTO_SIZE_40M, TM_OPTION_DISABLE)
#else
TMDEF_OPTION_TEXT_S(PHOTO_SIZE_40M, TM_OPTION_ENABLE)
#endif
#if (PHOTO_SLICE_ENC_MIN_CAP_SIZE < UIAPP_PHOTO_SIZE_12M)//PHOTO_SIZE_12M
#if (PHOTO_MIN_CAP_SIZE < UIAPP_PHOTO_SIZE_12M)//PHOTO_SIZE_12M
TMDEF_OPTION_TEXT_S(PHOTO_SIZE_12M, TM_OPTION_DISABLE)
#else
TMDEF_OPTION_TEXT_S(PHOTO_SIZE_12M, TM_OPTION_ENABLE)
#endif
#if (PHOTO_SLICE_ENC_MIN_CAP_SIZE < UIAPP_PHOTO_SIZE_10M)//PHOTO_SIZE_10M
#if (PHOTO_MIN_CAP_SIZE < UIAPP_PHOTO_SIZE_10M)//PHOTO_SIZE_10M
TMDEF_OPTION_TEXT_S(PHOTO_SIZE_10M, TM_OPTION_DISABLE)
#else
TMDEF_OPTION_TEXT_S(PHOTO_SIZE_10M, TM_OPTION_ENABLE)
#endif
#if (PHOTO_SLICE_ENC_MIN_CAP_SIZE < UIAPP_PHOTO_SIZE_8M)//PHOTO_SIZE_8M
#if (PHOTO_MIN_CAP_SIZE < UIAPP_PHOTO_SIZE_8M)//PHOTO_SIZE_8M
TMDEF_OPTION_TEXT_S(PHOTO_SIZE_8M, TM_OPTION_DISABLE)
#else
TMDEF_OPTION_TEXT_S(PHOTO_SIZE_8M, TM_OPTION_ENABLE)
#endif
#if (PHOTO_SLICE_ENC_MIN_CAP_SIZE < UIAPP_PHOTO_SIZE_5M)//PHOTO_SIZE_5M
#if (PHOTO_MIN_CAP_SIZE < UIAPP_PHOTO_SIZE_5M)//PHOTO_SIZE_5M
TMDEF_OPTION_TEXT_S(PHOTO_SIZE_5M, TM_OPTION_DISABLE)
#else
TMDEF_OPTION_TEXT_S(PHOTO_SIZE_5M, TM_OPTION_ENABLE)
#endif
#if (PHOTO_SLICE_ENC_MIN_CAP_SIZE < UIAPP_PHOTO_SIZE_3M)//PHOTO_SIZE_3M
#if (PHOTO_MIN_CAP_SIZE < UIAPP_PHOTO_SIZE_3M)//PHOTO_SIZE_3M
TMDEF_OPTION_TEXT_S(PHOTO_SIZE_3M, TM_OPTION_DISABLE)
#else
TMDEF_OPTION_TEXT_S(PHOTO_SIZE_3M, TM_OPTION_ENABLE)
#endif
#if (PHOTO_SLICE_ENC_MIN_CAP_SIZE < UIAPP_PHOTO_SIZE_VGA)//PHOTO_SIZE_VGA
#if (PHOTO_MIN_CAP_SIZE < UIAPP_PHOTO_SIZE_VGA)//PHOTO_SIZE_VGA
TMDEF_OPTION_TEXT_S(PHOTO_SIZE_VGA, TM_OPTION_DISABLE)
#else
TMDEF_OPTION_TEXT_S(PHOTO_SIZE_VGA, TM_OPTION_ENABLE)

View File

@ -1866,6 +1866,7 @@ typedef enum {
SF_CAM_MODE_PHOTO = 0x00,
SF_CAM_MODE_VIDEO,
SF_CAM_MODE_PHOTO_VIDEO,
SF_CAM_MODE_VIDEO2,
SF_CAM_MODE_MAX,
}SF_BOOT_WORK_MODE;

View File

@ -164,6 +164,7 @@ SECTIONS
libdrv_storage.a (.text* .data* .data1* .rodata* .rodata1* .reginfo* .init* .exit*)
libsifar.a (.text* .data* .data1* .rodata* .rodata1* .reginfo* .init* .exit*)
/* kdrv */
libker_pkg.a (.text* .data* .data1* .rodata* .rodata1* .reginfo* .init* .exit*)
libkdrv_comm.a (.text* .data* .data1* .rodata* .rodata1* .reginfo* .init* .exit*)
libarb_protected.a (.text* .data* .data1* .rodata* .rodata1* .reginfo* .init* .exit*)
libkdrv_cpu.a (.text* .data* .data1* .rodata* .rodata1* .reginfo* .init* .exit*)
@ -175,7 +176,7 @@ SECTIONS
libkdrv_interrupt.a (.text* .data* .data1* .rodata* .rodata1* .reginfo* .init* .exit*)
/* os */
./SrcCode/Startup/bin_info.o(.got*)
libker_pkg.a (.text* .data* .data1* .rodata* .rodata1* .reginfo* .init* .exit*)
/*libker_pkg.a (.text* .data* .data1* .rodata* .rodata1* .reginfo* .init* .exit*)*/
libkwrap.a (.text* .data* .data1* .rodata* .rodata1* .reginfo* .init* .exit*)
libvos.a (.text* .data* .data1* .rodata* .rodata1* .reginfo* .init* .exit*)
/* freertos.a must be located after kwrap.a for linking text.xEventGroup* */
@ -295,17 +296,6 @@ SECTIONS
libexif.a (.text* .data* .data1* .rodata* .rodata1* .reginfo* .init* .exit*)
libgximagefile.a (.text* .data* .data1* .rodata* .rodata1* .reginfo* .init* .exit*)
/* audio */
#if (_PACKAGE_AUDIO_)
libkflow_audiocap.a(.text* .data* .data1* .rodata* .rodata1* .reginfo* .init* .exit*)
libkflow_audioenc.a(.text* .data* .data1* .rodata* .rodata1* .reginfo* .init* .exit*)
libnvt_audio.a(.text* .data* .data1* .rodata* .rodata1* .reginfo* .init* .exit*)
libnvt_kdrv_audio.a(.text* .data* .data1* .rodata* .rodata1* .reginfo* .init* .exit*)
libaud_aec.a(.text* .data* .data1* .rodata* .rodata1* .reginfo* .init* .exit*)
libaud_aace.a(.text* .data* .data1* .rodata* .rodata1* .reginfo* .init* .exit*)
libaudlib_IIR.a(.text* .data* .data1* .rodata* .rodata1* .reginfo* .init* .exit*)
#endif
liblvgl.a (.text* .data* .data1* .rodata* .rodata1* .reginfo* .init* .exit*)
./SrcCode/FastFlow/flow_lvgl.o (.text* .data* .data1* .rodata* .rodata1* .reginfo* .init* .exit*)
./SrcCode/UIApp/lv_user_font_conv/lv_user_font_conv.o (.text* .data* .data1* .rodata* .rodata1* .reginfo* .init* .exit*)
@ -324,6 +314,35 @@ SECTIONS
{
_section_05_size = ABSOLUTE(.) - _section_05_addr;
_section_06_addr = ABSOLUTE(.);
/* app */
./SrcCode/UIApp/MovieFast/MovieFast.o (.text* .data* .data1* .rodata* .rodata1* .reginfo* .init* .exit*)
./SrcCode/UIApp/Movie/UIAppMovie_Exe.o (.text* .data* .data1* .rodata* .rodata1* .reginfo* .init* .exit*)
./SrcCode/UIApp/Movie/UIAppMovie_CommPoolInit.o (.text* .data* .data1* .rodata* .rodata1* .reginfo* .init* .exit*)
./SrcCode/UIApp/Movie/UIAppMovie_RecSetting.o (.text* .data* .data1* .rodata* .rodata1* .reginfo* .init* .exit*)
./SrcCode/UIApp/MovieStamp/MovieStamp.o (.text* .data* .data1* .rodata* .rodata1* .reginfo* .init* .exit*)
./SrcCode/UIApp/MovieStamp/MovieStampID.o (.text* .data* .data1* .rodata* .rodata1* .reginfo* .init* .exit*)
./SrcCode/UIApp/MovieStamp/MovieStampTsk.o (.text* .data* .data1* .rodata* .rodata1* .reginfo* .init* .exit*)
./SrcCode/UIApp/MovieStamp/BG_Watermark_640x480.o (.text* .data* .data1* .rodata* .rodata1* .reginfo* .init* .exit*)
./SrcCode/UIWnd/LVGL_SPORTCAM/UIInfo/UIMovieMapping.o (.text* .data* .data1* .rodata* .rodata1* .reginfo* .init* .exit*)
/* lib */
libimageapp_moviemulti.a (.text* .data* .data1* .rodata* .rodata1* .reginfo* .init* .exit*)
libimageapp_common.a (.text* .data* .data1* .rodata* .rodata1* .reginfo* .init* .exit*)
libfileout.a (.text* .data* .data1* .rodata* .rodata1* .reginfo* .init* .exit*)
libbsmux.a (.text* .data* .data1* .rodata* .rodata1* .reginfo* .init* .exit*)
libavfile.a (.text* .data* .data1* .rodata* .rodata1* .reginfo* .init* .exit*)
/* audio */
#if (_PACKAGE_AUDIO_)
libkflow_audiocap.a(.text* .data* .data1* .rodata* .rodata1* .reginfo* .init* .exit*)
libkflow_audioenc.a(.text* .data* .data1* .rodata* .rodata1* .reginfo* .init* .exit*)
libnvt_audio.a(.text* .data* .data1* .rodata* .rodata1* .reginfo* .init* .exit*)
libnvt_kdrv_audio.a(.text* .data* .data1* .rodata* .rodata1* .reginfo* .init* .exit*)
libaud_aec.a(.text* .data* .data1* .rodata* .rodata1* .reginfo* .init* .exit*)
libaud_aace.a(.text* .data* .data1* .rodata* .rodata1* .reginfo* .init* .exit*)
libaudlib_IIR.a(.text* .data* .data1* .rodata* .rodata1* .reginfo* .init* .exit*)
#endif
}
. = ALIGN(4);
@ -484,3 +503,13 @@ GROUP(libgcc.a libc.a libdrv_portable.a libfreertos.a libkwrap.a libkdrv_comm.a
EXTERN("_init")
EXTERN("SwTimer_Open")
EXTERN("vendor_videoenc_set")
EXTERN("vendor_audiocap_set")
EXTERN("vendor_audioenc_set")
EXTERN("vendor_videoproc_set")
EXTERN("vendor_videodec_set")
EXTERN("eac_init")
EXTERN("dai_disableclk")
EXTERN("aud_open")
EXTERN("h264Enc_queryMemSize")
EXTERN("aud_set_default_setting")

View File

@ -101,6 +101,7 @@ typedef enum {
IAMOVIE_VPRC_EX_ALG,
IAMOVIE_VPRC_EX_DISP2,
IAMOVIE_VPRC_EX_ALG2,
IAMOVIE_VPRC_EX_MAX,
ENUM_DUMMY4WORD(IAMOVIE_VPRC_EX_PATH)
} IAMOVIE_VPRC_EX_PATH;
@ -884,6 +885,7 @@ extern HD_PATH_ID ImageApp_MovieMulti_GetVprcInPort(MOVIE_CFG_REC_ID id);
extern HD_PATH_ID ImageApp_MovieMulti_GetVprc3DNRPort(MOVIE_CFG_REC_ID id);
extern HD_PATH_ID ImageApp_MovieMulti_GetVdoEncPort(MOVIE_CFG_REC_ID id);
extern HD_PATH_ID ImageApp_MovieMulti_GetRawEncPort(MOVIE_CFG_REC_ID id);
extern HD_PATH_ID ImageApp_MovieMulti_GetVprcPort(MOVIE_CFG_REC_ID id, IAMOVIE_VPRC_EX_PATH path);
extern HD_PATH_ID ImageApp_MovieMulti_GetAlgDataPort(MOVIE_CFG_REC_ID id, MOVIE_CFG_ALG_PATH path);
extern HD_PATH_ID ImageApp_MovieMulti_GetAudEncPort(MOVIE_CFG_REC_ID id);
extern void ImageApp_MovieMulti_Root_Path(CHAR *prootpath, UINT32 rec_id);