1.0418 IQ更新;2.sf_app 调整,将led、mcu调整到sf app

This commit is contained in:
payton 2023-04-24 15:34:56 +08:00
parent ffb3e99f4e
commit 9c7b5aaeeb
81 changed files with 8496 additions and 606 deletions

5
.gitignore vendored
View File

@ -2,7 +2,12 @@
*.ko.cmd *.ko.cmd
*.mod.c *.mod.c
*.ko *.ko
*.sln
*.vcxproj
*.filters
*.user
modules.order modules.order
.tmp_versions .tmp_versions
Module.symvers Module.symvers
/.vs /.vs
/.vscode

View File

@ -19,6 +19,8 @@ HUNTING_BOOT_MODE=`dmesg | grep "Kernel command line" | sed 's/.* hunt_boot_mode
echo HUNTING_BOOT_MODE=${HUNTING_BOOT_MODE} echo HUNTING_BOOT_MODE=${HUNTING_BOOT_MODE}
sf_app &
if [ "${HUNTING_BOOT_MODE_4G_ONLY}" = "${HUNTING_BOOT_MODE}" ]; then if [ "${HUNTING_BOOT_MODE_4G_ONLY}" = "${HUNTING_BOOT_MODE}" ]; then
echo "skip insert ko"; echo "skip insert ko";

View File

@ -29,6 +29,7 @@ else
endif endif
SIFAR_DIR = $(LIBRARY_DIR)/source/sifar/code SIFAR_DIR = $(LIBRARY_DIR)/source/sifar/code
SIFAR_APP_DIR = $(APP_DIR)/source/sf_app/code/include
# public includes # public includes
EXTRA_INCLUDE += \ EXTRA_INCLUDE += \
@ -51,6 +52,7 @@ EXTRA_INCLUDE += \
-I$(NVT_HDAL_DIR)/vendor/media/include \ -I$(NVT_HDAL_DIR)/vendor/media/include \
-I$(NVT_HDAL_DIR)/vendor/common/include \ -I$(NVT_HDAL_DIR)/vendor/common/include \
-I$(SIFAR_DIR)/include \ -I$(SIFAR_DIR)/include \
-I$(SIFAR_APP_DIR) \
# application local includes # application local includes
EXTRA_INCLUDE += \ EXTRA_INCLUDE += \

View File

@ -322,7 +322,8 @@ INT32 GPIO_SetBacklightStatus(BOOL en)
void GOIO_Turn_Onoff_IRCUT(UINT8 onoff) void GOIO_Turn_Onoff_IRCUT(UINT8 onoff)
{ {
static UINT32 ir_flag = 1; static UINT32 ir_flag = 1;
printf("[%s:%d]s onoff:%d\n",__FUNCTION__,__LINE__,onoff); //printf("[%s:%d]s onoff:%d\n",__FUNCTION__,__LINE__,onoff);
DBG_IND(" s onoff:%d\n",onoff);
if(ir_flag) if(ir_flag)
{ {
@ -353,7 +354,8 @@ void GOIO_Turn_Onoff_IRCUT(UINT8 onoff)
//Delay_DelayMs(20); //Delay_DelayMs(20);
//gpio_clearPin(GPIO_IRCUT_MEN1); //gpio_clearPin(GPIO_IRCUT_MEN1);
//gpio_clearPin(GPIO_IRCUT_MEN2); //gpio_clearPin(GPIO_IRCUT_MEN2);
printf("[%s:%d]e\n",__FUNCTION__,__LINE__); //printf("[%s:%d]e\n",__FUNCTION__,__LINE__);
DBG_IND(" e\n");
} }
@ -445,7 +447,8 @@ extern int nvt_system(const char* pCommand);
*************************************************/ *************************************************/
void sf_ir_led_set(UINT8 mode, UINT8 flashLed, UINT8 stillExp, UINT8 isSnapVideo) void sf_ir_led_set(UINT8 mode, UINT8 flashLed, UINT8 stillExp, UINT8 isSnapVideo)
{ {
printf("[%s:%d]s mode:%d,flashLed:%d,isSnapVideo:%d\n",__FUNCTION__,__LINE__,mode,flashLed, isSnapVideo); //printf("[%s:%d]s mode:%d,flashLed:%d,isSnapVideo:%d\n",__FUNCTION__,__LINE__,mode,flashLed, isSnapVideo);
DBG_IND(" s mode:%d,flashLed:%d,isSnapVideo:%d\n",mode,flashLed, isSnapVideo);
UINT32 ui_rise = 0; ///< Rising at which clock UINT32 ui_rise = 0; ///< Rising at which clock
int ret = 0; int ret = 0;
char argv[70] = {0}; char argv[70] = {0};
@ -505,7 +508,8 @@ void sf_ir_led_set(UINT8 mode, UINT8 flashLed, UINT8 stillExp, UINT8 isSnapVideo
sprintf(argv, "echo \"w openpwm 3 100 %d 100 0 0 0 0\" > /proc/pwm/cmd", ui_rise); sprintf(argv, "echo \"w openpwm 3 100 %d 100 0 0 0 0\" > /proc/pwm/cmd", ui_rise);
ret = nvt_system(argv); ret = nvt_system(argv);
printf("%s:%d argv:%s\n", __FUNCTION__, __LINE__,argv); //printf("%s:%d argv:%s\n", __FUNCTION__, __LINE__,argv);
DBG_IND(" argv:%s\n", argv);
if(0 != ret) if(0 != ret)
{ {
printf("%s:%d sf pwm open failed, errno\n", __FUNCTION__, __LINE__); printf("%s:%d sf pwm open failed, errno\n", __FUNCTION__, __LINE__);
@ -514,8 +518,9 @@ void sf_ir_led_set(UINT8 mode, UINT8 flashLed, UINT8 stillExp, UINT8 isSnapVideo
} }
else else
{ {
printf("%s:%d sf pwm open success\n", __FUNCTION__, __LINE__); DBG_IND("sf pwm open success\n");
DBG_DUMP("sf pwm open success\n"); //printf("%s:%d sf pwm open success\n", __FUNCTION__, __LINE__);
//DBG_DUMP("sf pwm open success\n");
} }
sf_set_night_led_flag(1); sf_set_night_led_flag(1);
@ -524,7 +529,8 @@ void sf_ir_led_set(UINT8 mode, UINT8 flashLed, UINT8 stillExp, UINT8 isSnapVideo
{ {
sprintf(argv, "echo \"w closepwm 3\" > /proc/pwm/cmd"); sprintf(argv, "echo \"w closepwm 3\" > /proc/pwm/cmd");
ret = nvt_system(argv); ret = nvt_system(argv);
printf("%s:%d argv:%s\n", __FUNCTION__, __LINE__,argv); DBG_IND("argv:%s\n",argv);
//printf("%s:%d argv:%s\n", __FUNCTION__, __LINE__,argv);
if(0 != ret) if(0 != ret)
{ {
DBG_ERR("sf pwm failed, errno(%d)\n", errno); DBG_ERR("sf pwm failed, errno(%d)\n", errno);
@ -533,8 +539,9 @@ void sf_ir_led_set(UINT8 mode, UINT8 flashLed, UINT8 stillExp, UINT8 isSnapVideo
} }
else else
{ {
printf("%s:%d sf pwm close success\n", __FUNCTION__, __LINE__); DBG_IND("sf pwm close success\n");
DBG_DUMP("sf pwm close success\n"); //printf("%s:%d sf pwm close success\n", __FUNCTION__, __LINE__);
//DBG_DUMP("sf pwm close success\n");
} }
sf_set_night_led_flag(0); sf_set_night_led_flag(0);
} }

View File

@ -304,6 +304,36 @@ extern BOOL GPIOMap_DetPoweroff(void);
#define GPIO_GREEN_LED P_GPIO_10 //FPGA #define GPIO_GREEN_LED P_GPIO_10 //FPGA
#define PAD_GREEN_LED PAD_PIN_PGPIO10 #define PAD_GREEN_LED PAD_PIN_PGPIO10
#define GPIO_LED_STATUS_R DSI_GPIO_8 //
#define PAD_LED_STATUS_R PAD_PIN_DSIGPIO8
#define GPIO_LED_STATUS_G DSI_GPIO_9//
#define PAD_LED_STATUS_G PAD_PIN_DSIGPIO9
#define GPIO_LED_SD_G DSI_GPIO_7//
#define PAD_LED_SD_G PAD_PIN_DSIGPIO7
#define GPIO_LED_SD_R DSI_GPIO_4//
#define PAD_LED_SD_R PAD_PIN_DSIGPIO4
#define GPIO_LED_WIFI_B DSI_GPIO_6//
#define PAD_LED_WIFI_B PAD_PIN_DSIGPIO6
#define GPIO_LED_BAT_1 DSI_GPIO_5//
#define PAD_LED_BAT_1 PAD_PIN_DSIGPIO5
#define GPIO_LED_BAT_2 DSI_GPIO_2//
#define PAD_LED_BAT_2 PAD_PIN_DSIGPIO2
#define GPIO_LED_BAT_3 DSI_GPIO_3//
#define PAD_LED_BAT_3 PAD_PIN_DSIGPIO3
#define GPIO_LED_BAT_4 DSI_GPIO_0//
#define PAD_LED_BAT_4 PAD_PIN_DSIGPIO0
#define GPIO_LED_SIG_1_R DSI_GPIO_10//
#define PAD_LED_SIG_1_R PAD_PIN_DSIGPIO10
#define GPIO_LED_SIG_1_G DSI_GPIO_1//
#define PAD_LED_SIG_1_G PAD_PIN_DSIGPIO1
#define GPIO_LED_SIG_2 L_GPIO_1//
#define PAD_LED_SIG_2 PAD_PIN_LGPIO1
#define GPIO_LED_SIG_3 L_GPIO_0//
#define PAD_LED_SIG_3 PAD_PIN_LGPIO0
#define GPIO_LED_SIG_4 P_GPIO_8//
#define PAD_LED_SIG_4 PAD_PIN_PGPIO8
#define LED_FOCUS_DUMMY 0 #define LED_FOCUS_DUMMY 0
#define LED_FOCUS_BY_GPIO 1 #define LED_FOCUS_BY_GPIO 1
#define LED_FOCUS_BY_PWM 2 //use PWM to control LED brightness #define LED_FOCUS_BY_PWM 2 //use PWM to control LED brightness

View File

@ -910,7 +910,8 @@
#define MOVIE_AI_DEMO DISABLE #define MOVIE_AI_DEMO DISABLE
#define HUNTING_CAMERA_SYS_PARTITION_NAME sys #define HUNTING_CAMERA_SYS_PARTITION_NAME sys
#define HUNTING_CAMERA_MCU ENABLE #define HUNTING_CAMERA_MCU ENABLE
#define HUNTING_CAMERA_4G ENABLE//DISABLE
#define PHOTO_PREVIEW_SLICE_ENC_FUNC ENABLE #define PHOTO_PREVIEW_SLICE_ENC_FUNC ENABLE
#define PHOTO_PREVIEW_SLICE_ENC_VER2_FUNC ENABLE #define PHOTO_PREVIEW_SLICE_ENC_VER2_FUNC ENABLE
#define DZOOM_FUNC ENABLE #define DZOOM_FUNC ENABLE
@ -918,6 +919,7 @@
#define HUNTING_MCU_UART ENABLE #define HUNTING_MCU_UART ENABLE
#define HUNTING_IR_LED_940 DISABLE #define HUNTING_IR_LED_940 DISABLE
#define SF_BASE_VERSION "7MD4RCwD3T2" #define SF_BASE_VERSION "7MD4RCwD3T2"
#define HW_S530 1
/******************************************************************************************* /*******************************************************************************************

View File

@ -22,6 +22,9 @@
#include <kwrap/debug.h> #include <kwrap/debug.h>
#if HUNTING_CAMERA_MCU == ENABLE #if HUNTING_CAMERA_MCU == ENABLE
#include <sf_inc.h> #include <sf_inc.h>
#include <sf_param_enum.h>
#include <sf_message_queue.h>
#include <sf_commMng.h>
#endif #endif
extern void System_BootStart(void); extern void System_BootStart(void);
@ -711,7 +714,17 @@ exit:
////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////
#if HUNTING_CAMERA_MCU == ENABLE #if HUNTING_CAMERA_MCU == ENABLE
//sf_check_card_full(); //sf_check_card_full();
#if HUNTING_CAMERA_4G == ENABLE
SF_MESSAGE_BUF_S stMessageBuf = {0};
stMessageBuf.arg1 = paramArray[0];
stMessageBuf.cmdId = CMD_POWEROFF;
sf_com_message_send_to_app(&stMessageBuf);
#else
sf_mcu_reg_set(SF_MCU_POWEROFF,paramArray[0]); sf_mcu_reg_set(SF_MCU_POWEROFF,paramArray[0]);
#endif
#endif #endif
//System_PowerOffStart(); //System_PowerOffStart();

View File

@ -10,7 +10,7 @@
//global debug level: PRJ_DBG_LVL //global debug level: PRJ_DBG_LVL
#include "PrjInc.h" #include "PrjInc.h"
//local debug level: THIS_DBGLVL //local debug level: THIS_DBGLVL
#define THIS_DBGLVL 2 // 0=FATAL, 1=ERR, 2=WRN, 3=UNIT, 4=FUNC, 5=IND, 6=MSG, 7=VALUE, 8=USER #define THIS_DBGLVL 5 // 0=FATAL, 1=ERR, 2=WRN, 3=UNIT, 4=FUNC, 5=IND, 6=MSG, 7=VALUE, 8=USER
/////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////
#define __MODULE__ SysStrgExe #define __MODULE__ SysStrgExe
#define __DBGLVL__ ((THIS_DBGLVL>=PRJ_DBG_LVL)?THIS_DBGLVL:PRJ_DBG_LVL) #define __DBGLVL__ ((THIS_DBGLVL>=PRJ_DBG_LVL)?THIS_DBGLVL:PRJ_DBG_LVL)
@ -37,12 +37,22 @@
#include "GxStrg.h" #include "GxStrg.h"
#include "FileSysTsk.h" #include "FileSysTsk.h"
#include <sf_message_queue.h>
#include <sf_param_struct.h>
void Strg_CB(UINT32 event, UINT32 param1, UINT32 param2); void Strg_CB(UINT32 event, UINT32 param1, UINT32 param2);
void Strg_CB(UINT32 event, UINT32 param1, UINT32 param2) void Strg_CB(UINT32 event, UINT32 param1, UINT32 param2)
{ {
UINT32 status; UINT32 status;
SF_MESSAGE_BUF_S stMessageBuf = {0};
stMessageBuf.arg1 = event;
stMessageBuf.arg2 = param1;
stMessageBuf.arg3 = param2;
stMessageBuf.cmdId = CMD_SD;
sf_com_message_send_to_app(&stMessageBuf);
switch (event) { switch (event) {
// part-1 // part-1
case SYSTEM_CB_CONFIG: case SYSTEM_CB_CONFIG:

View File

@ -15,6 +15,9 @@
#include "GxUSB.h" #include "GxUSB.h"
#include "UsbDevDef.h" #include "UsbDevDef.h"
#include "usb2dev.h" #include "usb2dev.h"
#include <stdio.h>
#include <stdlib.h>
#include <sf_led.h>
#define THIS_DBGLVL 2 // 0=FATAL, 1=ERR, 2=WRN, 3=UNIT, 4=FUNC, 5=IND, 6=MSG, 7=VALUE, 8=USER #define THIS_DBGLVL 2 // 0=FATAL, 1=ERR, 2=WRN, 3=UNIT, 4=FUNC, 5=IND, 6=MSG, 7=VALUE, 8=USER
/////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////
#define __MODULE__ SysUsbExe #define __MODULE__ SysUsbExe
@ -76,6 +79,25 @@ static BOOL System_WaitUsbDev(void)
return ret; return ret;
} }
static BOOL System_check_usb_host(void)
{
char command[26] = "lsmod | grep usbcore";
FILE *fp = popen(command, "r");
char result[256];
fgets(result, sizeof(result), fp);
pclose(fp);
if (result[0] == '\0') {
printf("usbcore module is not loaded.\n");
return FALSE;
} else {
printf("usbcore module is loaded.\n");
return TRUE;
}
}
static BOOL System_InsmodUsb(BOOL isHost) static BOOL System_InsmodUsb(BOOL isHost)
{ {
char** usb_drivers = NULL; char** usb_drivers = NULL;
@ -87,7 +109,11 @@ static BOOL System_InsmodUsb(BOOL isHost)
if(is_usb_host_driver_inserted == TRUE) if(is_usb_host_driver_inserted == TRUE)
return TRUE; return TRUE;
if(System_check_usb_host() == TRUE)
{
is_usb_host_driver_inserted = TRUE;
return TRUE;
}
usb_drivers = usb_host_drivers; usb_drivers = usb_host_drivers;
} }
else{ else{
@ -233,6 +259,11 @@ void System_OnUsbInit(void)
//force check USB connect type //force check USB connect type
if (GxUSB_GetIsUSBPlug()) { if (GxUSB_GetIsUSBPlug()) {
#if HW_S530 == ENABLE
sf_sys_status_led_set(SF_LED_SYS_STATE_USB_IN);
#endif
System_InsmodUsb(FALSE); /* insmod usb dev ko */ System_InsmodUsb(FALSE); /* insmod usb dev ko */
GxUSB_UpdateConnectType(); GxUSB_UpdateConnectType();
GxUSB_SetChargerType(FALSE); GxUSB_SetChargerType(FALSE);

View File

@ -12,9 +12,13 @@
#include "DrvExt.h" #include "DrvExt.h"
#include "comm/hwclock.h" #include "comm/hwclock.h"
#include "comm/timer.h" #include "comm/timer.h"
#include <sf_inc.h>
#include <io/gpio.h> #include <io/gpio.h>
#include <IOCfg.h> #include <IOCfg.h>
#if HUNTING_CAMERA_MCU == ENABLE
#include <sf_inc.h>
#endif
/////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////
@ -353,14 +357,37 @@ int NvtMain(void)
#if HUNTING_CAMERA_MCU == ENABLE #if HUNTING_CAMERA_MCU == ENABLE
if(!GxUSB_GetIsUSBPlug())//(!sf_gpio_get_status(GPIO_INT_USBPLUGIN)) if(!GxUSB_GetIsUSBPlug())//(!sf_gpio_get_status(GPIO_INT_USBPLUGIN))
{ {
#if HUNTING_CAMERA_4G == ENABLE
sf_share_mem_file_init();
/*if (cardv_message_queue_init())
{
printf("cardv initial message queue error!\n");
exit(1);
}*/
if(SF_SUCCESS == sf_com_message_cardv_init())
{
printf("create message successs!!!!\n");
}
if(SF_SUCCESS == sf_com_message_app_init())
{
printf("create cardv message successs!!!!\n");
}
sf_cardv_message_thread_init();
SF_MESSAGE_BUF_S stMessageBuf = {0};
stMessageBuf.arg1 = SF_MCU_CMD_POWERON;
stMessageBuf.cmdId = CMD_MCU;
sf_com_message_send_to_app(&stMessageBuf);
#else
sf_mcu_init(); sf_mcu_init();
sf_get_power_on_mode(); sf_get_power_on_mode();
sf_mcu_wdg_set(30); sf_mcu_wdg_set(30);
sf_usb_mux_s(1); sf_usb_mux_s(1);
//sf_mcu_reg_set(SF_MCU_CTRL_MODULE_PIR, 1);
sf_sd_exist_reg_cb(DrvCARD_DetStrgCard);
/*led init*/ /*led init*/
sf_led_init(); sf_led_init();
#endif
sf_sd_exist_reg_cb(DrvCARD_DetStrgCard);
sf_sys_status_led_set(SF_LED_SYS_STATE_PIR_NOT_DETECT); sf_sys_status_led_set(SF_LED_SYS_STATE_PIR_NOT_DETECT);
sf_battery_thread_init(); sf_battery_thread_init();
} }

View File

@ -279,7 +279,7 @@ static void MovieStamp_get_isp_status(UINT32 id, char* Buf, UINT32 BufLen)
IQT_WDR_PARAM wdr = {0}; IQT_WDR_PARAM wdr = {0};
//sf_mcu_power_on_para_get(SF_MCU_POWERON); //sf_mcu_power_on_para_get(SF_MCU_POWERON);
UINT16 AD_Value; UINT16 AD_Value;
AD_Value = sf_mcu_get_irshtter(); AD_Value = sf_get_irshtter();
id = 0; id = 0;
ae_status.id = id; ae_status.id = id;

View File

@ -30,6 +30,7 @@
#include <vf_gfx.h> #include <vf_gfx.h>
#include "vendor_videocapture.h" #include "vendor_videocapture.h"
#include "sf_mcu.h" #include "sf_mcu.h"
#include "IOCfg.h"
#define THIS_DBGLVL 2 // 0=FATAL, 1=ERR, 2=WRN, 3=UNIT, 4=FUNC, 5=IND, 6=MSG, 7=VALUE, 8=USER #define THIS_DBGLVL 2 // 0=FATAL, 1=ERR, 2=WRN, 3=UNIT, 4=FUNC, 5=IND, 6=MSG, 7=VALUE, 8=USER
@ -420,7 +421,7 @@ static UINT32 PhotoExe_GetScreenNailSize(void)
ScreenNailSize = CFG_SCREENNAIL_SIZE; ScreenNailSize = CFG_SCREENNAIL_SIZE;
uiImageSize = UI_GetData(FL_PHOTO_SIZE); uiImageSize = UI_GetData(FL_PHOTO_SIZE);
if (uiImageSize < ScreenNailSize) { if (uiImageSize < ScreenNailSize) {
BitStreamSize = CFG_SCREENNAIL_W * CFG_SCREENNAIL_H / 2; BitStreamSize = (sf_get_screen_nail_width(UI_GetData(SendPicSize))) * (sf_get_screen_nail_height(UI_GetData(SendPicSize))) / 2;
} else { } else {
BitStreamSize = 0; BitStreamSize = 0;
} }
@ -452,7 +453,7 @@ void PhotoExe_SetScreenNailSize(UINT32 sensor_id)
if (uiImageSize < ScreenNailSize) { if (uiImageSize < ScreenNailSize) {
//BufferSize.w = GetPhotoSizeWidth(ScreenNailSize); //BufferSize.w = GetPhotoSizeWidth(ScreenNailSize);
//BufferSize.h = GetPhotoSizeHeight(ScreenNailSize); //BufferSize.h = GetPhotoSizeHeight(ScreenNailSize);
BufferSize.w = CFG_SCREENNAIL_W; BufferSize.w = CFG_SCREENNAIL_W;//SendPicSize
BufferSize.h = BufferSize.w * 3 / 4; BufferSize.h = BufferSize.w * 3 / 4;
ImageRatioIdx = GetPhotoSizeRatio(UI_GetData(FL_PHOTO_SIZE)); ImageRatioIdx = GetPhotoSizeRatio(UI_GetData(FL_PHOTO_SIZE));
@ -1438,7 +1439,7 @@ AD_Value = sf_mcu_get_irshtter();
return; return;
} }
extern void GOIO_Turn_Onoff_IRCUT(BOOL onoff); //extern void GOIO_Turn_Onoff_IRCUT(BOOL onoff);
@ -2374,6 +2375,8 @@ INT32 PhotoExe_OnOpen(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray)
// g_photo_ImageRatioSize = IMAGERATIO_SIZE[4]; // g_photo_ImageRatioSize = IMAGERATIO_SIZE[4];
FileSys_MakeDir(PHOTO_THUMB_PATH); FileSys_MakeDir(PHOTO_THUMB_PATH);
GOIO_Turn_Onoff_IRCUT(1); GOIO_Turn_Onoff_IRCUT(1);
//sf_ir_led_set(((2 == SysGetFlag(NightMode)) ? 2 : 1),SysGetFlag(FlashLed), SysGetFlag(NightMode), 0);
if((0 == access("/mnt/sd/FW98565A.bin", F_OK))){ if((0 == access("/mnt/sd/FW98565A.bin", F_OK))){
system("rm -rf /mnt/sd/LD96565A.bin"); system("rm -rf /mnt/sd/LD96565A.bin");
system("rm -rf /mnt/sd/FW98565A.bin"); system("rm -rf /mnt/sd/FW98565A.bin");

View File

@ -453,21 +453,21 @@ void Load_MenuInfo(void)
//#NT#porting KS's suggestion that PStore reset mechanism //#NT#porting KS's suggestion that PStore reset mechanism
UINT32 uiPsFreeSpace = PStore_GetInfo(PS_INFO_FREE_SPACE); UINT32 uiPsFreeSpace = PStore_GetInfo(PS_INFO_FREE_SPACE);
result = PStore_ReadSection((UINT8 *)&currentInfo, 0, sizeof(UIMenuStoreInfo), pSection); result = PStore_ReadSection((UINT8 *)&currentInfo, 0, sizeof(UIMenuStoreInfo), pSection);
if ((result != E_PS_OK || currentInfo.uhInfoSize != sizeof(currentInfo)|| uiFWUpdate) && if ((result != E_PS_OK || currentInfo.uhInfoSize != sizeof(UIMenuStoreInfo)|| uiFWUpdate) &&
uiPsFreeSpace) { uiPsFreeSpace) {
DBG_DUMP("PStore reset info.\r\n"); DBG_DUMP("PStore reset info.\r\n");
memset(&currentInfo, 0, sizeof(currentInfo)); memset(&currentInfo, 0, sizeof(UIMenuStoreInfo));
currentInfo.uhInfoSize = sizeof(UIMenuStoreInfo); currentInfo.uhInfoSize = sizeof(UIMenuStoreInfo);
SysResetFlag(); SysResetFlag();
PStore_WriteSection((UINT8 *)&currentInfo, 0, sizeof(UIMenuStoreInfo), pSection); PStore_WriteSection((UINT8 *)&currentInfo, 0, sizeof(UIMenuStoreInfo), pSection);
PStore_CloseSection(pSection); PStore_CloseSection(pSection);
} else if ((result != E_PS_OK|| uiFWUpdate) && (currentInfo.uhInfoSize == sizeof(currentInfo)) && } else if ((result != E_PS_OK|| uiFWUpdate) && (currentInfo.uhInfoSize == sizeof(UIMenuStoreInfo)) &&
(uiPsFreeSpace == 0)) { (uiPsFreeSpace == 0)) {
//if current size is the same with previous, use PS_UPDATE instead //if current size is the same with previous, use PS_UPDATE instead
//of PS_RDWR to prevent that PStore is no free space //of PS_RDWR to prevent that PStore is no free space
DBG_DUMP("PStore reset info for uiPsFreeSpace=0.\r\n"); DBG_DUMP("PStore reset info for uiPsFreeSpace=0.\r\n");
PStore_CloseSection(pSection); PStore_CloseSection(pSection);
memset(&currentInfo, 0, sizeof(currentInfo)); memset(&currentInfo, 0, sizeof(UIMenuStoreInfo));
currentInfo.uhInfoSize = sizeof(UIMenuStoreInfo); currentInfo.uhInfoSize = sizeof(UIMenuStoreInfo);
SysResetFlag(); SysResetFlag();
if ((pSection = PStore_OpenSection(PS_SYS_PARAM, PS_UPDATE)) != E_PS_SECHDLER) { if ((pSection = PStore_OpenSection(PS_SYS_PARAM, PS_UPDATE)) != E_PS_SECHDLER) {
@ -511,13 +511,13 @@ void Load_MenuInfo(void)
void *pTempbuf = NULL; void *pTempbuf = NULL;
ret = UIInfo_GetStrgPartitionInfo(&partition_ofs, &partition_size, PARTITION_PATH_USR1); ret = UIInfo_GetStrgPartitionInfo(&partition_ofs, &partition_size, PARTITION_PATH_USR1);
if ((ret == 0) && (sizeof(currentInfo) < partition_size)) { if ((ret == 0) && (sizeof(UIMenuStoreInfo) < partition_size)) {
if ((sizeof(currentInfo)/_EMBMEM_BLK_SIZE_) == 0) { if ((sizeof(UIMenuStoreInfo)/_EMBMEM_BLK_SIZE_) == 0) {
sectorCnt = 1; sectorCnt = 1;
} else if (((sizeof(currentInfo)/_EMBMEM_BLK_SIZE_) > 0) && ((sizeof(currentInfo)%_EMBMEM_BLK_SIZE_) != 0)) { } else if (((sizeof(UIMenuStoreInfo)/_EMBMEM_BLK_SIZE_) > 0) && ((sizeof(UIMenuStoreInfo)%_EMBMEM_BLK_SIZE_) != 0)) {
sectorCnt = sizeof(currentInfo)/_EMBMEM_BLK_SIZE_ + 1; sectorCnt = sizeof(UIMenuStoreInfo)/_EMBMEM_BLK_SIZE_ + 1;
} else if (((sizeof(currentInfo)/_EMBMEM_BLK_SIZE_) > 0) && ((sizeof(currentInfo)%_EMBMEM_BLK_SIZE_) == 0)) { } else if (((sizeof(UIMenuStoreInfo)/_EMBMEM_BLK_SIZE_) > 0) && ((sizeof(UIMenuStoreInfo)%_EMBMEM_BLK_SIZE_) == 0)) {
sectorCnt = sizeof(currentInfo)/_EMBMEM_BLK_SIZE_; sectorCnt = sizeof(UIMenuStoreInfo)/_EMBMEM_BLK_SIZE_;
} }
if ((fd_mmc = fopen("/dev/mmcblk2p14", "rb")) == NULL) { ///dev/mmcblk2p14 ==> partition_usr1 ; cat /proc/nvt_info/emmc if ((fd_mmc = fopen("/dev/mmcblk2p14", "rb")) == NULL) { ///dev/mmcblk2p14 ==> partition_usr1 ; cat /proc/nvt_info/emmc
@ -531,12 +531,12 @@ void Load_MenuInfo(void)
DBG_ERR("allocate pTempbuf fail !!\r\n"); DBG_ERR("allocate pTempbuf fail !!\r\n");
SysResetFlag(); SysResetFlag();
} else { } else {
rw_len = (INT32)fread(pTempbuf, 1, sizeof(currentInfo), fd_mmc); rw_len = (INT32)fread(pTempbuf, 1, sizeof(UIMenuStoreInfo), fd_mmc);
if (rw_len != sizeof(currentInfo)) { if (rw_len != sizeof(UIMenuStoreInfo)) {
DBG_ERR("read size %d < %ld\r\n", rw_len, sizeof(currentInfo)); DBG_ERR("read size %d < %ld\r\n", rw_len, sizeof(UIMenuStoreInfo));
SysResetFlag(); SysResetFlag();
} else { } else {
memcpy(&currentInfo, pTempbuf, sizeof(currentInfo)); memcpy(&currentInfo, pTempbuf, sizeof(UIMenuStoreInfo));
} }
free(pTempbuf); free(pTempbuf);
pTempbuf = NULL; pTempbuf = NULL;
@ -559,10 +559,10 @@ void Load_MenuInfo(void)
char cmd[128] = {0}; char cmd[128] = {0};
char filename[128] = {0}; char filename[128] = {0};
sectorCnt = (sizeof(currentInfo) / _EMBMEM_BLK_SIZE_) + (sizeof(currentInfo) % _EMBMEM_BLK_SIZE_)? 1 : 0; sectorCnt = (sizeof(UIMenuStoreInfo) / _EMBMEM_BLK_SIZE_) + (sizeof(UIMenuStoreInfo) % _EMBMEM_BLK_SIZE_)? 1 : 0;
ret = UIInfo_GetStrgPartitionInfo(&partition_ofs, &partition_size, PARTITION_PATH_SYS); ret = UIInfo_GetStrgPartitionInfo(&partition_ofs, &partition_size, PARTITION_PATH_SYS);
if ((ret == 0) && (sizeof(currentInfo) < partition_size)) { if ((ret == 0) && (sizeof(UIMenuStoreInfo) < partition_size)) {
char sys_mtd_dev_path[128] = {'\0'}; char sys_mtd_dev_path[128] = {'\0'};
ret = find_sys_mtd_device(sys_mtd_dev_path, sizeof(sys_mtd_dev_path)); ret = find_sys_mtd_device(sys_mtd_dev_path, sizeof(sys_mtd_dev_path));
@ -607,13 +607,13 @@ void Load_MenuInfo(void)
goto EXIT; goto EXIT;
} }
if(((UIMenuStoreInfo*)tmpInfo)->uhInfoSize == sizeof(currentInfo)){ if(((UIMenuStoreInfo*)tmpInfo)->uhInfoSize == sizeof(UIMenuStoreInfo)){
memcpy(&currentInfo, tmpInfo, sizeof(currentInfo)); memcpy(&currentInfo, tmpInfo, sizeof(UIMenuStoreInfo));
} }
else{ else{
DBG_WRN("menu info size loaded from flash seems incorrect, reset menu info\n"); DBG_WRN("menu info size loaded from flash seems incorrect, reset menu info\n");
SysResetFlag(); SysResetFlag();
currentInfo.uhInfoSize = sizeof(currentInfo); currentInfo.uhInfoSize = sizeof(UIMenuStoreInfo);
} }
} }
@ -621,7 +621,7 @@ EXIT:
if(ret){ if(ret){
SysResetFlag(); SysResetFlag();
currentInfo.uhInfoSize = sizeof(currentInfo); currentInfo.uhInfoSize = sizeof(UIMenuStoreInfo);
} }
SysCheckFlag(); SysCheckFlag();
origInfo = currentInfo; origInfo = currentInfo;
@ -637,6 +637,8 @@ EXIT:
} }
#elif defined(_EMBMEM_SPI_NOR_) #elif defined(_EMBMEM_SPI_NOR_)
printf("%s:%d cardv app load ui info s\n", __FUNCTION__, __LINE__);
unsigned long long partition_ofs= 0, partition_size = 0; unsigned long long partition_ofs= 0, partition_size = 0;
int ret = -1; int ret = -1;
FILE *sys_mtd_fp = NULL; FILE *sys_mtd_fp = NULL;
@ -645,10 +647,10 @@ EXIT:
void *tmpInfo = NULL; void *tmpInfo = NULL;
size_t read_size; size_t read_size;
sectorCnt = (sizeof(currentInfo) / _EMBMEM_BLK_SIZE_) + (sizeof(currentInfo) % _EMBMEM_BLK_SIZE_)? 1 : 0; sectorCnt = (sizeof(UIMenuStoreInfo) / _EMBMEM_BLK_SIZE_) + (sizeof(UIMenuStoreInfo) % _EMBMEM_BLK_SIZE_)? 1 : 0;
ret = UIInfo_GetStrgPartitionInfo(&partition_ofs, &partition_size, PARTITION_PATH_SYS); ret = UIInfo_GetStrgPartitionInfo(&partition_ofs, &partition_size, PARTITION_PATH_SYS);
if ((ret == 0) && (sizeof(currentInfo) < partition_size)) { if ((ret == 0) && (sizeof(UIMenuStoreInfo) < partition_size)) {
char sys_mtd_dev_path[128] = {'\0'}; char sys_mtd_dev_path[128] = {'\0'};
ret = find_sys_mtd_device(sys_mtd_dev_path, sizeof(sys_mtd_dev_path)); ret = find_sys_mtd_device(sys_mtd_dev_path, sizeof(sys_mtd_dev_path));
@ -679,21 +681,22 @@ EXIT:
goto EXIT; goto EXIT;
} }
if(((UIMenuStoreInfo*)tmpInfo)->uhInfoSize == sizeof(currentInfo)){ if(((UIMenuStoreInfo*)tmpInfo)->uhInfoSize == sizeof(UIMenuStoreInfo)){
memcpy(&currentInfo, tmpInfo, sizeof(currentInfo)); memcpy(&currentInfo, tmpInfo, sizeof(UIMenuStoreInfo));
} }
else{ else{
DBG_WRN("menu info size loaded from flash seems incorrect(old:%lu new:%lu), reset menu info\n", DBG_WRN("menu info size loaded from flash seems incorrect(old:%lu new:%lu), reset menu info\n",
((UIMenuStoreInfo*)tmpInfo)->uhInfoSize, ((UIMenuStoreInfo*)tmpInfo)->uhInfoSize,
sizeof(currentInfo) sizeof(UIMenuStoreInfo)
); );
SysResetFlag(); SysResetFlag();
currentInfo.uhInfoSize = sizeof(currentInfo); currentInfo.uhInfoSize = sizeof(UIMenuStoreInfo);
sf_share_mem_customer_down(0);
} }
UINT32 sum = MemCheck_CalcCheckSum16Bit((UINT32)tmpInfo, sizeof(currentInfo)); UINT32 sum = MemCheck_CalcCheckSum16Bit((UINT32)tmpInfo, sizeof(UIMenuStoreInfo));
DBG_DUMP("**************size = %lx / mov size = %u / sum = %lx **************\n", DBG_DUMP("**************size = %lx / mov size = %u / sum = %lx **************\n",
sizeof(currentInfo), sizeof(UIMenuStoreInfo),
//((UIMenuStoreInfo*)tmpInfo)->UIParameter[FL_MOVIE_SIZE], //((UIMenuStoreInfo*)tmpInfo)->UIParameter[FL_MOVIE_SIZE],
((UIMenuStoreInfo*)tmpInfo)->UIParameter[CamMode], ((UIMenuStoreInfo*)tmpInfo)->UIParameter[CamMode],
sum); sum);
@ -703,7 +706,8 @@ EXIT:
if(ret){ if(ret){
SysResetFlag(); SysResetFlag();
currentInfo.uhInfoSize = sizeof(currentInfo); currentInfo.uhInfoSize = sizeof(UIMenuStoreInfo);
sf_share_mem_customer_down(0);
} }
SysCheckFlag(); SysCheckFlag();
origInfo = currentInfo; origInfo = currentInfo;
@ -716,8 +720,9 @@ EXIT:
if(tmpInfo){ if(tmpInfo){
free(tmpInfo); free(tmpInfo);
tmpInfo = NULL; tmpInfo = NULL;
} }
printf("%s:%d cardv app load ui info e\n", __FUNCTION__, __LINE__);
#else #else
SysResetFlag(); SysResetFlag();
#endif #endif
@ -884,12 +889,12 @@ void Save_MenuInfo(void)
INT32 rw_len = 0; INT32 rw_len = 0;
ret = UIInfo_GetStrgPartitionInfo(&partition_ofs, &partition_size, PARTITION_PATH_USR1); ret = UIInfo_GetStrgPartitionInfo(&partition_ofs, &partition_size, PARTITION_PATH_USR1);
if ((ret == 0) && (sizeof(currentInfo) < partition_size)) { if ((ret == 0) && (sizeof(UIMenuStoreInfo) < partition_size)) {
if ((fd_mmc = fopen("/dev/mmcblk2p14", "wb")) == NULL) { ///dev/mmcblk2p14 ==> partition_usr1 ; cat /proc/nvt_info/emmc if ((fd_mmc = fopen("/dev/mmcblk2p14", "wb")) == NULL) { ///dev/mmcblk2p14 ==> partition_usr1 ; cat /proc/nvt_info/emmc
DBG_ERR("/dev/mmcblk2p14 fail !!\r\n"); DBG_ERR("/dev/mmcblk2p14 fail !!\r\n");
} else { } else {
rw_len = fwrite(&currentInfo, 1, sizeof(currentInfo), fd_mmc); rw_len = fwrite(&currentInfo, 1, sizeof(UIMenuStoreInfo), fd_mmc);
if(rw_len != sizeof(currentInfo)) { if(rw_len != sizeof(UIMenuStoreInfo)) {
DBG_ERR("Error to write file for /dev/mmcblk2p14"); DBG_ERR("Error to write file for /dev/mmcblk2p14");
} }
fclose(fd_mmc);; fclose(fd_mmc);;
@ -898,8 +903,8 @@ void Save_MenuInfo(void)
if ((fd_mmc = fopen("/dev/mmcblk2p15", "wb")) == NULL) { ///dev/mmcblk2p14 ==> partition_usr2 ; cat /proc/nvt_info/emmc if ((fd_mmc = fopen("/dev/mmcblk2p15", "wb")) == NULL) { ///dev/mmcblk2p14 ==> partition_usr2 ; cat /proc/nvt_info/emmc
DBG_ERR("/dev/mmcblk2p14 fail !!\r\n"); DBG_ERR("/dev/mmcblk2p14 fail !!\r\n");
} else { } else {
rw_len = fwrite(&currentInfo, 1, sizeof(currentInfo), fd_mmc); rw_len = fwrite(&currentInfo, 1, sizeof(UIMenuStoreInfo), fd_mmc);
if(rw_len != sizeof(currentInfo)) { if(rw_len != sizeof(UIMenuStoreInfo)) {
DBG_ERR("Error to write file for /dev/mmcblk2p14"); DBG_ERR("Error to write file for /dev/mmcblk2p14");
} }
fclose(fd_mmc); fclose(fd_mmc);
@ -921,15 +926,15 @@ void Save_MenuInfo(void)
SysCheckFlag(); SysCheckFlag();
/* check if sys param changed */ /* check if sys param changed */
if(memcmp(&currentInfo, &origInfo, sizeof(currentInfo)) == 0){ if(memcmp(&currentInfo, &origInfo, sizeof(UIMenuStoreInfo)) == 0){
DBG_DUMP("menu info is not changed\n"); DBG_DUMP("menu info is not changed\n");
goto EXIT; goto EXIT;
} }
sectorCnt = (sizeof(currentInfo) / _EMBMEM_BLK_SIZE_) + ((sizeof(currentInfo) % _EMBMEM_BLK_SIZE_)? 1 : 0); sectorCnt = (sizeof(UIMenuStoreInfo) / _EMBMEM_BLK_SIZE_) + ((sizeof(UIMenuStoreInfo) % _EMBMEM_BLK_SIZE_)? 1 : 0);
ret = UIInfo_GetStrgPartitionInfo(&partition_ofs, &partition_size, PARTITION_PATH_SYS); ret = UIInfo_GetStrgPartitionInfo(&partition_ofs, &partition_size, PARTITION_PATH_SYS);
if ((ret == 0) && (sizeof(currentInfo) < partition_size)) { if ((ret == 0) && (sizeof(UIMenuStoreInfo) < partition_size)) {
char sys_mtd_dev_path[128] = {'\0'}; char sys_mtd_dev_path[128] = {'\0'};
ret = find_sys_mtd_device(sys_mtd_dev_path, sizeof(sys_mtd_dev_path)); ret = find_sys_mtd_device(sys_mtd_dev_path, sizeof(sys_mtd_dev_path));
if(ret){ if(ret){
@ -952,8 +957,8 @@ void Save_MenuInfo(void)
} }
memset(tmpInfo, 0xFF, write_size); /* keep remain data 0xFF to avoid write flash */ memset(tmpInfo, 0xFF, write_size); /* keep remain data 0xFF to avoid write flash */
currentInfo.uhInfoSize = sizeof(currentInfo); currentInfo.uhInfoSize = sizeof(UIMenuStoreInfo);
memcpy(tmpInfo, &currentInfo, sizeof(currentInfo)); memcpy(tmpInfo, &currentInfo, sizeof(UIMenuStoreInfo));
sprintf(filename, "nandwrite.in"); sprintf(filename, "nandwrite.in");
nandwrite_fp = fopen(filename, "wb"); nandwrite_fp = fopen(filename, "wb");
if(!nandwrite_fp){ if(!nandwrite_fp){
@ -1012,15 +1017,15 @@ EXIT:
SysCheckFlag(); SysCheckFlag();
/* check if sys param changed */ /* check if sys param changed */
if(memcmp(&currentInfo, &origInfo, sizeof(currentInfo)) == 0){ if(memcmp(&currentInfo, &origInfo, sizeof(UIMenuStoreInfo)) == 0){
DBG_DUMP("menu info is not changed\n"); DBG_DUMP("menu info is not changed\n");
goto EXIT; goto EXIT;
} }
sectorCnt = (sizeof(currentInfo) / _EMBMEM_BLK_SIZE_) + ((sizeof(currentInfo) % _EMBMEM_BLK_SIZE_)? 1 : 0); sectorCnt = (sizeof(UIMenuStoreInfo) / _EMBMEM_BLK_SIZE_) + ((sizeof(UIMenuStoreInfo) % _EMBMEM_BLK_SIZE_)? 1 : 0);
ret = UIInfo_GetStrgPartitionInfo(&partition_ofs, &partition_size, PARTITION_PATH_SYS); ret = UIInfo_GetStrgPartitionInfo(&partition_ofs, &partition_size, PARTITION_PATH_SYS);
if ((ret == 0) && (sizeof(currentInfo) < partition_size)) { if ((ret == 0) && (sizeof(UIMenuStoreInfo) < partition_size)) {
char sys_mtd_dev_path[128] = {'\0'}; char sys_mtd_dev_path[128] = {'\0'};
ret = find_sys_mtd_device(sys_mtd_dev_path, sizeof(sys_mtd_dev_path)); ret = find_sys_mtd_device(sys_mtd_dev_path, sizeof(sys_mtd_dev_path));
if(ret){ if(ret){
@ -1051,8 +1056,8 @@ EXIT:
} }
memset(tmpInfo, 0xFF, write_size); memset(tmpInfo, 0xFF, write_size);
currentInfo.uhInfoSize = sizeof(currentInfo); currentInfo.uhInfoSize = sizeof(UIMenuStoreInfo);
memcpy(tmpInfo, &currentInfo, sizeof(currentInfo)); memcpy(tmpInfo, &currentInfo, sizeof(UIMenuStoreInfo));
rw_len = fwrite(tmpInfo, 1, write_size, sys_mtd_fp); rw_len = fwrite(tmpInfo, 1, write_size, sys_mtd_fp);
if(rw_len != (INT32)(write_size)) { if(rw_len != (INT32)(write_size)) {
DBG_ERR("fwrite size not matched(%ld / %ld)!\n", rw_len, write_size); DBG_ERR("fwrite size not matched(%ld / %ld)!\n", rw_len, write_size);
@ -1061,11 +1066,12 @@ EXIT:
} }
fflush(sys_mtd_fp); fflush(sys_mtd_fp);
UINT32 sum = MemCheck_CalcCheckSum16Bit((UINT32)tmpInfo, sizeof(currentInfo)); UINT32 sum = MemCheck_CalcCheckSum16Bit((UINT32)tmpInfo, sizeof(UIMenuStoreInfo));
DBG_DUMP("**************size = %lx / mov size = %u / sum = %lx **************\n", DBG_DUMP("**************size = %lx / CamMode = %u / sum = %lx **************\n",
sizeof(currentInfo), sizeof(UIMenuStoreInfo),
((UIMenuStoreInfo*)tmpInfo)->UIParameter[FL_MOVIE_SIZE], ((UIMenuStoreInfo*)tmpInfo)->UIParameter[CamMode],
sum); sum);
sf_share_mem_customer_down(0);
} }
else{ else{
DBG_ERR("can't get partition info or menu info size exceed partition size!\n"); DBG_ERR("can't get partition info or menu info size exceed partition size!\n");
@ -1690,7 +1696,7 @@ void SysResetFlag(void)
SysSetFlag(TimeSend2Switch, DEFAULT_TIMESEND2_SWITCH); SysSetFlag(TimeSend2Switch, DEFAULT_TIMESEND2_SWITCH);
SysSetFlag(TimeSend3Switch, DEFAULT_TIMESEND3_SWITCH); SysSetFlag(TimeSend3Switch, DEFAULT_TIMESEND3_SWITCH);
SysSetFlag(TimeSend4Switch, DEFAULT_TIMESEND4_SWITCH); SysSetFlag(TimeSend4Switch, DEFAULT_TIMESEND4_SWITCH);
//sf_set_pir_sensitivity(7); sf_set_pir_sensitivity(7);
#endif #endif

View File

@ -17,9 +17,9 @@ typedef struct sf_PARA_TIME_S
UINT16 Mon; UINT16 Mon;
UINT16 Day; UINT16 Day;
UINT8 Hour; UINT16 Hour;
UINT8 Min; UINT16 Min;
UINT8 Sec; UINT16 Sec;
} SF_PARA_TIME_S; } SF_PARA_TIME_S;
typedef struct sf_WORKTIME_S typedef struct sf_WORKTIME_S

View File

@ -147,9 +147,9 @@ static MOVIE_SIZE_ITEM g_MovieSizeTable[] = {
}, },
[MOVIE_SIZE_1920x1080P30] = { [MOVIE_SIZE_1920x1080P30] = {
{1920, 1080, 30, 1200 * 1024, MEDIAREC_DAR_DEFAULT, IMAGERATIO_16_9}, {1920, 1080, 30, 400 * 1024, MEDIAREC_DAR_DEFAULT, IMAGERATIO_16_9},
{1, 3, 36, 8, -8, 0}, {1, 3, 36, 8, -8, 0},
{1, 4, 30, 1200 * 1024, 15, 26, 15, 45, 26, 15, 45, 0, 1, 8, 4}, {1, 4, 30, 400 * 1024, 15, 26, 15, 45, 26, 15, 45, 0, 1, 8, 4},
}, },
[MOVIE_SIZE_1280x720P240] = { [MOVIE_SIZE_1280x720P240] = {
@ -171,15 +171,15 @@ static MOVIE_SIZE_ITEM g_MovieSizeTable[] = {
}, },
[MOVIE_SIZE_1280x720P30] = { [MOVIE_SIZE_1280x720P30] = {
{1280, 720, 30, 450 * 1024, MEDIAREC_DAR_DEFAULT, IMAGERATIO_16_9}, {1280, 720, 30, 240 * 1024, MEDIAREC_DAR_DEFAULT, IMAGERATIO_16_9},
{1, 3, 36, 8, -8, 0}, {1, 3, 36, 8, -8, 0},
{1, 4, 30, 450 * 1024, 15, 26, 15, 45, 26, 15, 45, 0, 1, 8, 4}, {1, 4, 30, 240 * 1024, 15, 26, 15, 45, 26, 15, 45, 0, 1, 8, 4},
}, },
[MOVIE_SIZE_848x480P30] = { [MOVIE_SIZE_848x480P30] = {
{848, 480, 30, 200 * 1024, MEDIAREC_DAR_DEFAULT, IMAGERATIO_16_9}, {848, 480, 30, 120 * 1024, MEDIAREC_DAR_DEFAULT, IMAGERATIO_16_9},
{1, 3, 36, 8, -8, 0}, {1, 3, 36, 8, -8, 0},
{1, 4, 30, 200 * 1024, 15, 26, 15, 45, 26, 15, 45, 0, 1, 8, 4}, {1, 4, 30, 120 * 1024, 15, 26, 15, 45, 26, 15, 45, 0, 1, 8, 4},
}, },
[MOVIE_SIZE_848x480P30_WIFI] = { [MOVIE_SIZE_848x480P30_WIFI] = {

View File

@ -47,6 +47,15 @@ static PHOTO_SIZE_PARAM g_PhotoCapSizeTable[PHOTO_SIZE_ID_MAX + 2] = {
{1920, 1080, IMAGERATIO_16_9, "2MHD"}, // 2MHD {1920, 1080, IMAGERATIO_16_9, "2MHD"}, // 2MHD
}; };
static PHOTO_SIZE_PARAM g_ScreenNailSizeTable[PHOTO_SIZE_ID_MAX + 2] = {
#if defined(_MODEL_565_HUNTING_EVB_LINUX_4G_68CS_)
{1024, 768, IMAGERATIO_4_3, "0.78M"}, // 0.78M
#elif defined(_MODEL_565_HUNTING_EVB_LINUX_4G_S530_)
{640, 480, IMAGERATIO_4_3, "VGA"}, // VGA
#endif
};
const CHAR *Get_SizeString(UINT32 uiIndex) const CHAR *Get_SizeString(UINT32 uiIndex)
{ {
if (uiIndex < PHOTO_SIZE_ID_MAX) { if (uiIndex < PHOTO_SIZE_ID_MAX) {
@ -71,6 +80,21 @@ UINT32 GetPhotoSizeRatio(UINT32 ubIndex)
return g_PhotoCapSizeTable[ubIndex].uiImageRatio; return g_PhotoCapSizeTable[ubIndex].uiImageRatio;
} }
UINT32 sf_get_screen_nail_width(UINT32 ubIndex)
{
return g_ScreenNailSizeTable[ubIndex].uiWidth;
}
UINT32 sf_get_screen_nail_height(UINT32 ubIndex)
{
return g_ScreenNailSizeTable[ubIndex].uiHeight;
}
UINT32 sf_get_screen_nail_ratio(UINT32 ubIndex)
{
return g_ScreenNailSizeTable[ubIndex].uiImageRatio;
}
/************************************************* /*************************************************
Dzoom string handling Dzoom string handling
**************************************************/ **************************************************/

View File

@ -4,6 +4,9 @@
extern UINT32 GetPhotoSizeWidth(UINT32 ubIndex); extern UINT32 GetPhotoSizeWidth(UINT32 ubIndex);
extern UINT32 GetPhotoSizeHeight(UINT32 ubIndex); extern UINT32 GetPhotoSizeHeight(UINT32 ubIndex);
extern UINT32 GetPhotoSizeRatio(UINT32 ubIndex); extern UINT32 GetPhotoSizeRatio(UINT32 ubIndex);
extern UINT32 sf_get_screen_nail_width(UINT32 ubIndex);
extern UINT32 sf_get_screen_nail_height(UINT32 ubIndex);
extern UINT32 sf_get_screen_nail_ratio(UINT32 ubIndex);
extern CHAR *Get_DZoomRatioString(void); extern CHAR *Get_DZoomRatioString(void);
extern UINT32 Get_AFWindowIndexFromValue(UINT32 value); extern UINT32 Get_AFWindowIndexFromValue(UINT32 value);
extern UINT32 Get_AFWindowValue(UINT32 uhIndex); extern UINT32 Get_AFWindowValue(UINT32 uhIndex);

View File

@ -30,7 +30,7 @@ else
endif endif
SIFAR_DIR = $(LIBRARY_DIR)/source/sifar/code SIFAR_DIR = $(LIBRARY_DIR)/source/sifar/code
SIFAR_APP_DIR = ./code/include SIFAR_APP_DIR = $(APP_DIR)/source/sf_app/code/include
#LIB DIRs for C_LDFLAGS #LIB DIRs for C_LDFLAGS
EXTRA_LIB_DIR += \ EXTRA_LIB_DIR += \
@ -206,6 +206,10 @@ EXTRA_LIB += \
SRC = \ SRC = \
./code/source/app/sf_device.c \ ./code/source/app/sf_device.c \
./code/source/app/sf_app.c \ ./code/source/app/sf_app.c \
./code/source/app/sf_common.c \
./code/source/app/sf_system.c \
./code/source/app/sf_service.c \
./code/source/app/sf_dbg.c \
./code/source/gpio/sf_hal_gpio.c \ ./code/source/gpio/sf_hal_gpio.c \
./code/source/logMng/sf_log.c \ ./code/source/logMng/sf_log.c \
./code/source/commMng/sf_message_queue.c \ ./code/source/commMng/sf_message_queue.c \
@ -250,9 +254,10 @@ SRC = \
./code/source/devMng/sf_ledmng.c \ ./code/source/devMng/sf_ledmng.c \
./code/source/utils/mbedtls.c \ ./code/source/utils/mbedtls.c \
./code/source/utils/sf_aes.c \ ./code/source/utils/sf_aes.c \
./code/source/debugMng/sf_debug.c ./code/source/debugMng/sf_debug.c \
./code/source/updataMng/sf_md5.c \
./code/source/updataMng/sf_otamng.c
#--------- END OF SOURCEs FOR APPLICATION --------------------------------------------- #--------- END OF SOURCEs FOR APPLICATION ---------------------------------------------
#--------- ENVIRONMENT SETTING -------------------- #--------- ENVIRONMENT SETTING --------------------

View File

@ -7,6 +7,7 @@ extern "C" {
#endif #endif
#include "sf_type.h" #include "sf_type.h"
#include "sf_param_common.h" #include "sf_param_common.h"
//#include "UIInfo/UIInfo.h"
@ -22,7 +23,8 @@ SINT32 sf_share_mem_file_init(void);
SINT32 sf_share_mem_file_deinit(void); SINT32 sf_share_mem_file_deinit(void);
SINT32 sf_share_mem_customer_init(void); SINT32 sf_share_mem_customer_update(void);
SINT32 sf_share_mem_customer_down(UINT32 to);
SINT32 sf_share_mem_customer_deinit(void); SINT32 sf_share_mem_customer_deinit(void);

View File

@ -0,0 +1,20 @@
#ifndef __SF_COMMON_H__
#define __SF_COMMON_H__
#ifdef __cplusplus
#if __cplusplus
extern "C" {
#endif
#endif
void app_message_recv_start(void);
#ifdef __cplusplus
#if __cplusplus
}
#endif
#endif
#endif

View File

@ -31,7 +31,8 @@
#define REG_SIZE 91 #define REG_SIZE 91
#define SF_MCU_NIGHT_MODE_LUMINANCE 380 #define SF_MCU_NIGHT_MODE_LUMINANCE 600
#define SF_BATT_RECOVERY 72 //S530
/*REG POWER_OFFON*/ /*REG POWER_OFFON*/
#define MCU_MODE_AUTO 0x00 #define MCU_MODE_AUTO 0x00
@ -307,7 +308,7 @@ typedef struct sf_TIME_S {
unsigned char sf_mcu_power_on_para_get (MCUParam_t attrId); unsigned char sf_mcu_power_on_para_get (MCUParam_t attrId);
unsigned char sf_mcu_wdg_set(unsigned char value); unsigned char sf_mcu_wdg_set(unsigned char value);
void sf_mcu_poweron_4g_module(void); void sf_mcu_poweron_4g_module(void);
unsigned char sf_mcu_start_mode_get(void); //unsigned char sf_mcu_start_mode_get(void);
SF_BOOL sf_is_night_mode(unsigned int isRefresh); SF_BOOL sf_is_night_mode(unsigned int isRefresh);
unsigned char sf_mcu_rtc_get (SF_TIME_S *time); unsigned char sf_mcu_rtc_get (SF_TIME_S *time);
@ -333,8 +334,13 @@ int sf_get_last_light_val(void);
SF_TIME_S sf_get_mcu_poweroff_date(void); SF_TIME_S sf_get_mcu_poweroff_date(void);
void sf_set_mcu_poweroff_date(SF_PARA_TIME_S date); void sf_set_mcu_poweroff_date(SF_PARA_TIME_S date);
UINT8 sf_get_power_on_mode(void);
BOOL sf_get_mode_flag(void);
UINT8 sf_convert_power_on_mode(void);
int sf_mcu_init(void);
unsigned char sf_mcu_wdg_off(void);
void sf_set_module_sleep_flag(UINT8 flag);
extern unsigned char PowerOnMode;
extern unsigned short TrigType; extern unsigned short TrigType;

View File

@ -0,0 +1,90 @@
#ifndef __SF_DBG_H__
#define __SF_DBG_H__
#ifdef __cplusplus
#if __cplusplus
extern "C" {
#endif
#endif
#include "sf_type.h"
#include "sf_param_common.h"
#define DEBUG_CMD_FIFO_FATH "/tmp/sf_debug"
SINT32 app_debug_camname(SINT32 argc, SF_CHAR **argv[]);
SINT32 app_debug_cameraMode(SINT32 argc, SF_CHAR **argv[]);
SINT32 app_debug_imageSize(SINT32 argc, SF_CHAR **argv[]);
SINT32 app_debug_flashled(SINT32 argc, SF_CHAR **argv[]);
SINT32 app_debug_multishot(SINT32 argc, SF_CHAR **argv[]);
SINT32 app_debug_videosize(SINT32 argc, SF_CHAR **argv[]);
SINT32 app_debug_videolen(SINT32 argc, SF_CHAR **argv[]);
SINT32 app_debug_nightmode(SINT32 argc, SF_CHAR **argv[]);
SINT32 app_debug_pirsenDig(SINT32 argc, SF_CHAR **argv[]);
SINT32 app_debug_pirdelay(SINT32 argc, SF_CHAR **argv[]);
SINT32 app_debug_timelapse(SINT32 argc, SF_CHAR **argv[]);
SINT32 app_debug_worktime(SINT32 argc, SF_CHAR **argv[]);
SINT32 app_debug_maxNum(SINT32 argc, SF_CHAR **argv[]);
SINT32 app_debug_dailyreport(SINT32 argc, SF_CHAR **argv[]);
SINT32 app_debug_gps(SINT32 argc, SF_CHAR **argv[]);
SINT32 app_debug_batterytype(SINT32 argc, SF_CHAR **argv[]);
SINT32 app_debug_stamp(SINT32 argc, SF_CHAR **argv[]);
SINT32 app_debug_sdcycle(SINT32 argc, SF_CHAR **argv[]);
SINT32 app_debug_datestyle(SINT32 argc, SF_CHAR **argv[]);
SINT32 app_debug_mcuw(SINT32 argc, SF_CHAR **argv[]);
SINT32 app_debug_mcur(SINT32 argc, SF_CHAR **argv[]);
SINT32 app_debug_debugmode(SINT32 argc, SF_CHAR **argv[]);
SINT32 app_debug_help(SINT32 argc, SF_CHAR **argv[]);
SINT32 app_debug_save(SINT32 argc, SF_CHAR **argv[]);
SINT32 app_debug_cleartime(SINT32 argc, SF_CHAR **argv[]);
SINT32 app_debug_signal(SINT32 argc, SF_CHAR **argv[]);
SINT32 app_debug_ver(SINT32 argc, SF_CHAR **argv[]);
SINT32 app_debug_process(SINT32 argc, SF_CHAR **argv[]);
SINT32 app_debug_init(void);
SINT32 app_debug_create(void);
SINT32 app_debug_start(void);
SINT32 app_debug_stop(void);
SINT32 app_debug_deinit(void);
#ifdef __cplusplus
#if __cplusplus
}
#endif
#endif
#endif

View File

@ -5,29 +5,12 @@
extern "C" { extern "C" {
#endif #endif
#endif #endif
//#include <io/gpio.h>
#include <sf_type.h> #include <sf_type.h>
#include "sf_param_common.h" #include "sf_param_common.h"
typedef enum sfHAL_LED_GPIO_IDX_E #include <sf_ledmng.h>
{
SF_HAL_LED_IDX_0 = 0, /**<led index 0*/
SF_HAL_LED_IDX_1,
SF_HAL_LED_STATUS_G = 45,
SF_HAL_LED_WIFI = 45,
SF_HAL_LED_SD_G = 76,
SF_HAL_LED_SD_R = 77,
SF_HAL_LED_BAT_G = 62,
SF_HAL_LED_BAT_R = 63,
SF_HAL_LED_SIG1_R = 65,
SF_HAL_LED_SIG1_G = 64,
SF_HAL_LED_USERBIND_R = 47,
SF_HAL_LED_USERBIND_G = 46,
SF_HAL_LED_IDX_BUIT,
} SF_LED_GPIO_IDX_E;
typedef enum sfHAL_LED_STATE_E typedef enum sfHAL_LED_STATE_E
{ {
SF_HAL_LED_STATE_OFF = 0,/**<led off state*/ SF_HAL_LED_STATE_OFF = 0,/**<led off state*/
@ -56,9 +39,25 @@ SINT32 app_led_group_register(void);
SINT32 app_led_pin_init(void); SINT32 app_led_pin_init(void);
SINT32 sf_in_card_exist(void);
SINT32 sf_is_card_full(void);
void sf_set_card_full(SINT32 vol);
SINT32 sf_is_card(void);
void sf_set_card(SINT32 vol);
SINT32 sf_get_pir_statu_flag(void);
void sf_set_pir_statu_flag(SINT32 flag);
BOOL sf_load_ko(void);
#ifdef __cplusplus #ifdef __cplusplus
#if __cplusplus #if __cplusplus
} }
#endif #endif
#endif #endif
#endif #endif

View File

@ -49,9 +49,9 @@ typedef enum SIM_SEARCH_GPS_E
static unsigned long int gps_get_seconds(SF_PARA_TIME_S *pTime); //static unsigned long int gps_get_seconds(SF_PARA_TIME_S *pTime);
static int gps_diffSec_from_date(SF_PARA_TIME_S *pnowDate, SF_PARA_TIME_S *poldDate); //static int gps_diffSec_from_date(SF_PARA_TIME_S *pnowDate, SF_PARA_TIME_S *poldDate);
static void gps_infor_convert(SF_CHAR *str); //static void gps_infor_convert(SF_CHAR *str);
SINT16 eg91_gps_greendate_Get(SF_FN_PARAM_S *pfnParam,SF_PARA_TIME_S *pNowTime); SINT16 eg91_gps_greendate_Get(SF_FN_PARAM_S *pfnParam,SF_PARA_TIME_S *pNowTime);
SINT32 eg91_gps_search_result(SF_FN_PARAM_S *pfnParam); SINT32 eg91_gps_search_result(SF_FN_PARAM_S *pfnParam);

View File

@ -12,6 +12,7 @@ extern "C" {
#define GPIO_ID_VALUE "/sys/class/gpio/gpio%d/value" #define GPIO_ID_VALUE "/sys/class/gpio/gpio%d/value"
#define GPIO_UNEXPORT "/sys/class/gpio/unexport" #define GPIO_UNEXPORT "/sys/class/gpio/unexport"
#define SF_GPIO_CARD_DETECT 9
SINT32 sf_hal_gpio_init(U32 gpio_num, int dir); SINT32 sf_hal_gpio_init(U32 gpio_num, int dir);
@ -21,6 +22,8 @@ SINT32 sf_hal_gpio_get(U32 gpio_num, SINT8 *nval);
SINT32 sf_hal_gpio_deinit(U32 gpioNum); SINT32 sf_hal_gpio_deinit(U32 gpioNum);
void sf_usb_mux_s(UINT32 cnt);
#ifdef __cplusplus #ifdef __cplusplus
#if __cplusplus #if __cplusplus
} }

View File

@ -34,7 +34,7 @@ SINT32 sf_usbnet_server_acm_open(SF_PDT_PARAM_STATISTICS_S *pStaticParam);
SINT32 sf_usbnet_server_acm_transfer(SF_DATA_ATTR_S *psenddate); SINT32 sf_usbnet_server_acm_transfer(SF_DATA_ATTR_S *psenddate);
SINT32 sf_usbnet_server_acm_close(); SINT32 sf_usbnet_server_acm_close(void);

View File

@ -16,7 +16,7 @@ extern "C" {
typedef enum sf_KEY_PIN_E typedef enum sf_KEY_PIN_E
{ {
SF_KEY_PIN_RESET = 69, SF_KEY_PIN_RESET = 69,
SF_KEY_PIN_SYNC = 7, SF_KEY_PIN_SYNC = 4,
SF_KEY_PIN_FORMAT = 66, SF_KEY_PIN_FORMAT = 66,
SF_KEY_PIN_DATAREADY = 6, SF_KEY_PIN_DATAREADY = 6,
SF_KEY_PIN_FILESTATUS = 128,/*virtual key*/ SF_KEY_PIN_FILESTATUS = 128,/*virtual key*/

View File

@ -10,6 +10,60 @@ extern "C" {
#define LED_GRPOUP_MAX 100 #define LED_GRPOUP_MAX 100
/*LCD GPIO - LGPIO*/
#define SF_L_GPIO_SHIFT_BASE 96
#define SF_L_GPIO_0 (0 +SF_L_GPIO_SHIFT_BASE) ///< L_GPIO[0]
#define SF_L_GPIO_1 (1 +SF_L_GPIO_SHIFT_BASE) ///< L_GPIO[1]
/*Peripheral GPIO - PGPIO*/
#define SF_P_GPIO_SHIFT_BASE 32
#define SF_P_GPIO_8 (8 +SF_P_GPIO_SHIFT_BASE) ///< P_GPIO[8]
#define SF_P_GPIO_10 (10+SF_P_GPIO_SHIFT_BASE) ///< P_GPIO[10]
/*GPIO DSI Data register*/
#define SF_DSI_GPIO_SHIFT_BASE 224
#define SF_DSI_GPIO_0 (0 + SF_DSI_GPIO_SHIFT_BASE) ///< DSI_GPIO[0]
#define SF_DSI_GPIO_1 (1 + SF_DSI_GPIO_SHIFT_BASE) ///< DSI_GPIO[1]
#define SF_DSI_GPIO_2 (2 + SF_DSI_GPIO_SHIFT_BASE) ///< DSI_GPIO[2]
#define SF_DSI_GPIO_3 (3 + SF_DSI_GPIO_SHIFT_BASE) ///< DSI_GPIO[3]
#define SF_DSI_GPIO_4 (4 + SF_DSI_GPIO_SHIFT_BASE) ///< DSI_GPIO[4]
#define SF_DSI_GPIO_5 (5 + SF_DSI_GPIO_SHIFT_BASE) ///< DSI_GPIO[5]
#define SF_DSI_GPIO_6 (6 + SF_DSI_GPIO_SHIFT_BASE) ///< DSI_GPIO[6]
#define SF_DSI_GPIO_7 (7 + SF_DSI_GPIO_SHIFT_BASE) ///< DSI_GPIO[7]
#define SF_DSI_GPIO_8 (8 + SF_DSI_GPIO_SHIFT_BASE) ///< DSI_GPIO[8]
#define SF_DSI_GPIO_9 (9 + SF_DSI_GPIO_SHIFT_BASE) ///< DSI_GPIO[9]
#define SF_DSI_GPIO_10 (10+ SF_DSI_GPIO_SHIFT_BASE) ///< DSI_GPIO[10]
typedef enum sfHAL_LED_GPIO_IDX_E
{
SF_HAL_LED_IDX_0 = 0, /**<led index 0*/
SF_HAL_LED_IDX_1,
SF_HAL_LED_STATUS_R = SF_DSI_GPIO_8,
SF_HAL_LED_STATUS_G = SF_DSI_GPIO_9,
SF_HAL_LED_WIFI = SF_DSI_GPIO_6,
SF_HAL_LED_SD_G = SF_DSI_GPIO_7,
SF_HAL_LED_SD_R = SF_DSI_GPIO_4,
SF_HAL_LED_BAT1 = SF_DSI_GPIO_5,
SF_HAL_LED_BAT2 = SF_DSI_GPIO_2,
SF_HAL_LED_BAT3 = SF_DSI_GPIO_3,
SF_HAL_LED_BAT4 = SF_DSI_GPIO_0,
SF_HAL_LED_BAT_G = 62,
SF_HAL_LED_BAT_R = 63,
SF_HAL_LED_SIG1_R = SF_DSI_GPIO_10,
SF_HAL_LED_SIG1_G = SF_DSI_GPIO_1,
SF_HAL_LED_SIG_2 = SF_L_GPIO_1,
SF_HAL_LED_SIG_3 = SF_L_GPIO_0,
SF_HAL_LED_SIG_4 = SF_P_GPIO_8,
SF_HAL_LED_BUSY = SF_P_GPIO_10,
SF_HAL_LED_USERBIND_R = 47,
SF_HAL_LED_USERBIND_G = 46,
SF_HAL_LED_IDX_BUIT,
} SF_LED_GPIO_IDX_E;
typedef enum _SF_LED_STATUS_E typedef enum _SF_LED_STATUS_E
{ {
LED_STATUS_HOLD_OFF = 0, LED_STATUS_HOLD_OFF = 0,
@ -81,6 +135,99 @@ SINT32 sf_led_event_process(SINT32 arg1,SINT32 arg2,SINT32 arg3);
#include "UIInfo/UIInfo.h"
typedef enum LedId_e
{
#if HW_S530
SF_LED_STATUS_R,
SF_LED_STATUS_G,
SF_LED_SD_G,
SF_LED_SD_R,
SF_LED_WIFI,
SF_LED_BAT1,
SF_LED_BAT2,
SF_LED_BAT3,
SF_LED_BAT4,
SF_LED_SIG1_R,
SF_LED_SIG1_G,
SF_LED_SIG2,
SF_LED_SIG3,
SF_LED_SIG4,
#endif
SF_LED_BUSY,
SF_LED_ALL,
}LedId_t;
typedef enum Ledstate_e
{
SF_LED_STATE_OFF,
SF_LED_STATE_ON,
SF_LED_STATE_SLOW_FLASHING,/*0.5s*/
SF_LED_STATE_FLASHING, /*1s*/
}Ledstate_t;
typedef enum LedSysState_e
{
SF_LED_SYS_STATE_ERROR,
SF_LED_SYS_STATE_NORMAL,
SF_LED_SYS_STATE_UPDATE,
SF_LED_SYS_STATE_SENDING,
SF_LED_SYS_STATE_SEND_FAIL,
SF_LED_SYS_STATE_SEND_SUCCESS,
SF_LED_SYS_STATE_SD_NORMAL,/*6*/
SF_LED_SYS_STATE_SD_ERROR,
SF_LED_SYS_STATE_SD_FULL,
SF_LED_SYS_STATE_SD_FORMAT_START,
SF_LED_SYS_STATE_SD_FORMAT_SUCCESS,
SF_LED_SYS_STATE_SD_FORMAT_FAIL,
SF_LED_SYS_STATE_SD_FORMAT_EXIT,
SF_LED_SYS_STATE_WIFI_DISCONNECT,/*13*/
SF_LED_SYS_STATE_WIFI_CONNECTED,
SF_LED_SYS_STATE_BAT_0,/*15*/
SF_LED_SYS_STATE_BAT_1,
SF_LED_SYS_STATE_BAT_2,
SF_LED_SYS_STATE_BAT_3,
SF_LED_SYS_STATE_BAT_4,
/*SF_LED_SYS_STATE_BAT_LOW,*/
SF_LED_SYS_STATE_GPRS_NO_SIGNAL,/*20*/
SF_LED_SYS_STATE_GPRS_SIGNAL_0,
SF_LED_SYS_STATE_GPRS_SIGNAL_1,
SF_LED_SYS_STATE_GPRS_SIGNAL_2,
SF_LED_SYS_STATE_GPRS_SIGNAL_3,
SF_LED_SYS_STATE_GPRS_SIGNAL_4,
SF_LED_SYS_STATE_GPRS_SEARCH,/*26*/
SF_LED_SYS_STATE_SIM_ERROR,
SF_LED_SYS_STATE_SERVER_FAIL,
SF_LED_SYS_STATE_DEBUG_ON,
SF_LED_SYS_STATE_DEBUG_OFF,
SF_LED_SYS_STATE_RESET,
SF_LED_SYS_STATE_USB_IN,
SF_LED_SYS_STATE_GOING_TO_PIR,
SF_LED_SYS_STATE_EXIT_GO_TO_PIR,
SF_LED_SYS_STATE_POWER_OFF,
SF_LED_SYS_STATE_PIR_DETECT,/*36*/
SF_LED_SYS_STATE_PIR_NOT_DETECT,
}LedSysState_t;
typedef struct LedInfo_s
{
LedId_t ledId;
Ledstate_t ledstate;
UINT16 times;
UINT32 gpioNum;
}LedInfo_t;
void sf_led_init(void);
void sf_led_go_to_pir(BOOL mode);
UINT8 sf_led_set(LedId_t ledId, Ledstate_t ledstate);
Ledstate_t sf_led_get(LedId_t ledId);
void sf_sys_status_led_set(LedSysState_t ledSysStateId);
void sf_trigger_time_led_cb(UINT32 cnt);

View File

@ -47,6 +47,11 @@ SINT32 sf_upgrade_ota_reset(void);
SINT32 sf_upgrade_ota_deinit(void); SINT32 sf_upgrade_ota_deinit(void);
SINT32 sf_upgrade_ota_filecheck(void);
SINT32 sf_upgrade_ota_param_bak(void);
SINT32 sf_upgrade_ota_param_recover(void);
#ifdef __cplusplus #ifdef __cplusplus
#if __cplusplus #if __cplusplus

View File

@ -24,7 +24,7 @@ void sf_customer_param_init(void);
SF_PDT_PARAM_CFG_S* sf_customer_param_get(void); SF_PDT_PARAM_CFG_S* sf_customer_param_get(void);
void sf_customer_param_set(SF_PDT_PARAM_CFG_S *pSfCustomerPara); void sf_customer_param_set(UIMenuStoreInfo *pSfCustomerPara);
void sf_customer_param_reset(SF_PDT_PARAM_CFG_S *psfpdtparam,UINT8 sysRet); void sf_customer_param_reset(SF_PDT_PARAM_CFG_S *psfpdtparam,UINT8 sysRet);
@ -53,9 +53,13 @@ UINT8 sf_cap_status_get(void);
SF_URL_S* sf_ota_url_get(void); SF_URL_S* sf_ota_url_get(void);
extern void SysSetFlag(UINT32 uiFlag, UINT32 uiValue); extern void sf_sys_set_flag(UINT32 uiFlag, UINT32 uiValue);
extern UINT32 SysGetFlag(UINT32 uiFlag); extern UINT32 sf_sys_get_flag(UINT32 uiFlag);
extern UIMenuStoreInfo* sf_ui_para_get(void); extern UIMenuStoreInfo* sf_app_ui_para_get(void);
void sf_customer_param_set_down(UIMenuStoreInfo *pSfCustomerPara);
UINT8 sf_signal_level_get(UINT8 netFlagG, UINT8 cqSignal);
#ifdef __cplusplus #ifdef __cplusplus
#if __cplusplus #if __cplusplus

View File

@ -94,18 +94,18 @@ extern "C" {
#define SF_THUMB_FILE_MAX_LEN 20 #define SF_THUMB_FILE_MAX_LEN 20
#define GPIOID_PIR_TEST 3 #define GPIOID_PIR_TEST 7 //C_GPIO_7
#define GPIOID_SIM_INSRET 4 #define GPIOID_SIM_INSRET 4
#define GPIOID_USB_INSERT 61 #define GPIOID_USB_INSERT (128+7) //D_GPIO_7 D_GPIO_SHIFT_BASE 128
#define GPIOID_WIFI_POWER 6 #define GPIOID_WIFI_POWER 6
#define GPIOID_USB_MUX1 16 //t100 only one usb mux #define GPIOID_USB_MUX1 32+2 //P_GPIO_2 P_GPIO_SHIFT_BASE 32
#define GPIOID_USB_MUX2 16 #define GPIOID_USB_MUX2 16
#define GPIOID_ADC_MUXA 52 #define GPIOID_ADC_MUXA (128) //P_GPIO_0
#define GPIOID_ADC_MUXB 53 #define GPIOID_ADC_MUXB (128+1) //P_GPIO_1
#define GPIOID_IRCUT_MEN1 50 #define GPIOID_IRCUT_MEN1 (128+6) //D_GPIO_6
#define GPIOID_IRCUT_MEN2 51 #define GPIOID_IRCUT_MEN2 (128+5) //D_GPIO_5
#define SD_WARNING_SPACE 30 /*30MB*/ #define SD_WARNING_SPACE 30 /*30MB*/
@ -357,17 +357,28 @@ typedef enum sf_MESSAGE_TYPE_E
CMD_FILE = 0x1D00, CMD_FILE = 0x1D00,
CMD_POWEROFF = 0x1E00, CMD_POWEROFF = 0x1E00,
CMD_VENC = 0x1F00, CMD_VENC = 0x1F00,
CMD_MCU = 0x1F01,
CMD_PARA = 0x1F02,
CMD_GPRS = 0x1F03,
}SF_MESSAGE_TYPE_E; }SF_MESSAGE_TYPE_E;
typedef enum sf_MESSAGE_CMD_SD_e typedef enum sf_MESSAGE_CMD_SD_e
{ {
CMD_SD_MOUNT_SUCCESS = 0x01, /*CMD_SD_MOUNT_SUCCESS = 0x01,
CMD_SD_ERROR = 0x02, CMD_SD_ERROR = 0x02,
CMD_SD_OUT = 0x03, CMD_SD_OUT = 0x03,
CMD_SD_FULL = 0x04,
CMD_SD_MOUNT_FAILURE = 0x05, CMD_SD_MOUNT_FAILURE = 0x05,*/
CMD_SD_STRG_CB_UNKNOWN = 0, ///< The type for unknown card status
CMD_SD_STRG_CB_INSERTED = 1, ///< The type for calling after card inserted
CMD_SD_STRG_CB_REMOVED = 2, ///< The type for calling after card removed
CMD_SD_STRG_CB_MOUNT_FINISH = 3, ///< The type for calling after storage mounted
CMD_SD_STRG_CB_UNMOUNT_FINISH = 4, ///< The type for calling after storage unmounted
CMD_SD_FULL = 5,
CMD_SD_SYSTEM_CB_CONFIG = 0xFFFFFFFF,
}SF_MESSAGE_CMD_SD_E; }SF_MESSAGE_CMD_SD_E;
@ -421,6 +432,35 @@ typedef enum sf_SIM_TYPE_E
}SF_SIM_TYPE_E; }SF_SIM_TYPE_E;
typedef enum sf_MCU_MESSAGE_TYPE_E
{
SF_MCU_CMD_IRSHTTER = 0x1A00,
SF_MCU_CMD_POWERON = 0x1B00,
SF_MCU_CMD_LED = 0x1C00,
SF_MCU_CMD_MODULE_SLEEP = 0x1D00,
}SF_MCU_MESSAGE_TYPE_E;
typedef enum sf_PARA_MESSAGE_TYPE_E
{
SF_PARA_CMD_UPDATE = 0x1A00,
SF_PARA_CMD_DOMN = 0x1B00,
}SF_PARA_MESSAGE_TYPE_E;
typedef enum _GPRS_SEARCH_STEP_e{
GPRS_SEARCH_STEP_IDLE = 0x0,
GPRS_SEARCH_STEP_SEARCH,
GPRS_SEARCH_STEP_SYNC_TIME,
GPRS_SEARCH_STEP_FINISH,
GPRS_SEARCH_STEP_LOGIN,
GPRS_SEARCH_STEP_LOGIN_SUCCESS,
GPRS_SEARCH_STEP_LOGIN_FAILED,
GPRS_SEARCH_STEP_GPS_LOCATE,
GPRS_SEARCH_STEP_GPS_LOCATE_FINISH,
} GPRS_SEARCH_STEP_e;
#ifdef __cplusplus #ifdef __cplusplus

View File

@ -0,0 +1,59 @@
#ifndef __SF_SERVICE_H__
#define __SF_SERVICE_H__
#ifdef __cplusplus
#if __cplusplus
extern "C" {
#endif
#endif
#include "sf_type.h"
#include "sf_param_common.h"
#define QLOG_PATH SF_SD_ROOT"qlog/"
#define SF_APP_ERROR_NO_SUPPOET SF_ERR_ID(SF_MOD_APP, ERROR_NO_SUPPORT)
#define SF_APP_ERROR_REQUEST SF_ERR_ID(SF_MOD_APP, ERROR_REQUEST)
#define SF_APP_ERROR_QIACT SF_ERR_ID(SF_MOD_APP, ERROR_AT_ACTIVE)
#define SF_APP_ERROR_NO_FILE SF_ERR_ID(SF_MOD_APP, ERROR_NO_FILE)
#define SF_APP_ERROR_WRITE SF_ERR_ID(SF_MOD_APP, ERROR_WRITE)
#define SF_APP_ERROR_FILE_SEND SF_ERR_ID(SF_MOD_APP, ERROR_FILE_SEND)
#define SF_APP_CHECK_RANGE(cmd, min,max) \
do { \
if(cmd < min || cmd > max)\
{\
MLOGE("Parameter[%d] out of normal range [%#x,%#x)!!!\n",cmd,min,max);\
return SF_FAILURE;\
} \
} while (0)
typedef enum SF_CMD_TYPE_E {
SF_CMD_LOGIN_IN,
SF_CMD_REPORT_STATE,
SF_CMD_PHOTO_RESULT,
SF_CMD_QUERYPENDING_CMD,
SF_CMD_QUERYPENDING_PARAM,
SF_CMD_REPORT_RESULT,
SF_CMD_TRIGGER,
SF_CMD_DISCON_SEND,
SF_CMD_QUERYPENDING_BIND_ACCOUNT,
SF_CMD_SYNC_CFG,
SF_CMD_BUTT
} SF_CMD_TYPE_E;
SINT16 app_file_upload(SF_FILE_ATTR_S *pstFileAttr, SF_FN_PARAM_S *pfnParam);
SF_BOOL app_disconnect_4g_module(void);
SINT32 app_ttyusb_IsOpen(void);
SINT32 app_file_subscrible_check(SF_REPORT_FILE_ATTR_S *pDtsReportFileAttr,SF_REPORT_FILE_ATTR_S *pSrcReportFileAttr);
SINT32 app_RegisterNet_start(void);
void app_FileSend_start(void);
SINT32 app_t110(void);
#ifdef __cplusplus
#if __cplusplus
}
#endif
#endif
#endif

View File

@ -0,0 +1,59 @@
#ifndef __SF_SYSTEM_H__
#define __SF_SYSTEM_H__
#ifdef __cplusplus
#if __cplusplus
extern "C" {
#endif
#endif
#include "sf_type.h"
#include "sf_param_common.h"
extern SINT32 bUpdateEnble;
extern SINT32 s32ThreeWaySwitch;
void app_poweroff_time_clear(void);
SINT8 app_flash_poweroff_task_IsRun(void);
SINT32 app_funkey_switch_check_start(void);
SINT32 app_funkey_switch_check_stop(void);
SINT32 app_upgrade_restore_start(void);
SINT32 app_upgrade_restore_stop(void);
SINT8 app_upgrade_restore_IsRun(void);
SINT32 app_system_poweroff(SF_POWEROFF_TYPE_E enType );
SINT32 app_usb_mode_start(void);
SINT32 app_system_time_update(unsigned int rtosBootTime) ;
SINT32 app_system_param_update(void);
SINT32 app_http_time_by_timezone_set(void);
SINT32 app_upgrade_sd_execute(void);
SINT32 app_upgrade_ota_restore_start(void);
SINT32 app_upgrade_ota_restore_stop(void);
SINT8 app_upgrade_ota_restore_IsRun(void);
SINT32 app_preinit(void);
#ifdef __cplusplus
#if __cplusplus
}
#endif
#endif
#endif

View File

@ -449,7 +449,7 @@ SINT32 sf_usbnet_server_acm_transfer(SF_DATA_ATTR_S *psenddate)
return SF_SUCCESS; return SF_SUCCESS;
} }
SINT32 sf_usbnet_server_acm_close() SINT32 sf_usbnet_server_acm_close(void)
{ {
MLOGI("\n"); MLOGI("\n");
return http_server_close(socketfd); return http_server_close(socketfd);

View File

@ -21,14 +21,16 @@ extern "C" {
#include "sf_http_server.h" #include "sf_http_server.h"
#endif #endif
#endif #endif
extern pthread_mutex_t GPIO_mutexLock; extern pthread_mutex_t GPIO_mutexLock;
static SF_4G_STATUS_E ModuleStatus = SF_4G_FREE; static SF_4G_STATUS_E ModuleStatus = SF_4G_FREE;
void sf_4G_usb_init(void) void sf_4G_usb_init(void)
{ {
sf_hal_gpio_init(GPIOID_USB_MUX1,GPIO_DIR_OUT); sf_usb_mux_s(1);
sf_hal_gpio_set(GPIOID_USB_MUX1,1); //sf_hal_gpio_init(GPIOID_USB_MUX1,GPIO_DIR_OUT);
//sf_hal_gpio_set(GPIOID_USB_MUX1,1);
} }
SF_4G_STATUS_E sf_4G_status_get(void) SF_4G_STATUS_E sf_4G_status_get(void)
{ {

View File

@ -24,32 +24,68 @@
#include <sys/sem.h> #include <sys/sem.h>
#include <sys/ipc.h> #include <sys/ipc.h>
#include <sys/ioctl.h> #include <sys/ioctl.h>
#include <signal.h>
#include <sf_hal_ttyusb.h> #include "UIInfo/UIInfo.h"
//#include "UIInfo/UIInfo.h"
#include <sf_param_common.h> #include <sf_param_common.h>
#include <sf_message_queue.h>
#include <sf_type.h>
#include <sf_log.h>
#include <sf_module.h>
#include <sf_ledmng.h>
#include <sf_dev_usb.h>
#include <sf_dev_other.h>
pthread_mutex_t Param_mutexLock; #include <sf_systemMng.h>
pthread_mutex_t GPIO_mutexLock; #include <sf_commMng.h>
#include <sf_commu_mcu.h>
#include <sf_service.h>
#include <sf_common.h>
#include <sf_system.h>
#include <sf_debug.h>
#include <sf_dbg.h>
#include <sf_device.h>
#include <sf_hal_gpio.h>
#include <sf_hal_ttyusb.h>
#include <sys/vfs.h>
SINT32 app_ttyusb_IsOpen() extern pthread_mutex_t Param_mutexLock;
extern pthread_mutex_t GPIO_mutexLock;
//---------------------UIInfo Global Variables -----------------------------
UIMenuStoreInfo currentInfo = {0}; //#NT#Init the array to zero.
UIMenuStoreInfo origInfo = {0}; /* backup */
void sf_signalStop(SINT32 signo)
{ {
int retryTime = 0; printf("\nsignalStop(signal code: %d) !!!\n", signo);
SINT32 s32ret = 0;
//MLOGD("ttyUSB has not been init, will init ttyUSB!\n"); sf_share_mem_file_deinit();
while ((s32ret = sf_hal_ttyusb2_init()) < 0) sf_share_mem_customer_deinit();
{
retryTime++; _exit(0);
if((retryTime >=200)&&(retryTime%200 == 0)) }
{
//MLOGE("-------ttyUSB init fail!\n");
s32ret = SF_TTY_ERROR_OPEN;
break;
}
}
return s32ret;
int test_sd_free(void)
{
#define SFMMC_SYS_PATH "/dev/mmcblk0p1"
struct statfs s;
int res = statfs(SFMMC_SYS_PATH, &s);
if (res == -1)
{
perror("statfs error: ");
}
else
{
unsigned long long total_size = (unsigned long long)s.f_blocks * (unsigned long long)s.f_bsize;
unsigned long long free_size = (unsigned long long)s.f_bfree * (unsigned long long)s.f_bsize;
printf("SD card total size: %llu bytes\n", total_size);
printf("SD card available size: %llu bytes\nSFMMC_SYS_PATH:%s\n", free_size, SFMMC_SYS_PATH);
}
return 0;
} }
int main(int argc, char *argv[]) int main(int argc, char *argv[])
@ -60,18 +96,78 @@ int main(int argc, char *argv[])
printf("* *\n"); printf("* *\n");
printf("*********************************************\n"); printf("*********************************************\n");
//gpio_direction_input(C_GPIO(10)); //gpio_direction_input(C_GPIO(10));
SINT16 startup = 0;
//test_sd_free();
//return 0;
SINT32 isUsb = sf_usb_IsInsert();
printf("[%s:%d] isUsb = %d\n", isUsb);
sf_mcu_init();
sf_get_power_on_mode();
sf_mcu_wdg_set(30);
sf_usb_mux_s(1);
sf_share_mem_file_init(); sf_share_mem_file_init();
//sf_share_mem_customer_update();
sf_com_message_app_init(); sf_com_message_app_init();
sf_com_message_cardv_init(); sf_com_message_cardv_init();
sf_customer_param_load(); sf_customer_param_load();
if(!isUsb)
{
sf_load_ko();
sf_mcu_reg_set(SF_MCU_CTRL_MODULE_PIR, 1);
}
printf("[%s:%d] CamMode:%d\n", __FUNCTION__, __LINE__,sf_sys_get_flag(CamMode));
SF_MUTEX_INIT_LOCK(Param_mutexLock); SF_MUTEX_INIT_LOCK(Param_mutexLock);
SF_MUTEX_INIT_LOCK(GPIO_mutexLock); SF_MUTEX_INIT_LOCK(GPIO_mutexLock);
sf_led_init();
sf_sys_status_led_set(SF_LED_SYS_STATE_PIR_NOT_DETECT);
sf_sys_status_led_set(SF_LED_SYS_STATE_NORMAL);
app_led_group_register(); //app_led_group_register();
//app_message_recv_start(); app_message_recv_start();
struct sigaction sigAction;
sigAction.sa_handler = sf_signalStop;
sigemptyset(&sigAction.sa_mask);
sigAction.sa_flags = 0;
sigaction(SIGHUP, &sigAction, NULL); //-1
sigaction(SIGINT, &sigAction, NULL); //-2
sigaction(SIGQUIT, &sigAction, NULL); //-3
sigaction(SIGKILL, &sigAction, NULL); //-9
sigaction(SIGTERM, &sigAction, NULL); //-15
//app_led_pin_init();
//app_upgrade_sd_execute();
app_preinit();
//app_RegisterNet_start();
startup = sf_poweron_type_get();
SLOGD("poweron type beginning :[%d,%s]\n", startup, sf_poweron_type_string(startup));
if(SF_MCU_STARTUP_ONKEY == startup)
{
////////////////////////////////
app_debug_init();
app_debug_create();
app_debug_start();
app_debug_deinit();
/////////////////////////////
}
sf_share_mem_file_deinit();
sf_share_mem_customer_deinit();
SF_MUTEX_DESTROY(Param_mutexLock);
SF_MUTEX_DESTROY(GPIO_mutexLock);
exit(0);
printf("********************sf app end***********************\n");
return 0; return 0;

View File

@ -0,0 +1,799 @@
#include <stdio.h>
#include <string.h>
#include <stdbool.h>
#include <unistd.h>
#include <stdlib.h>
#include <errno.h>
#include <ctype.h>
#include <stdlib.h>
#include <fcntl.h>
#include <sys/types.h>
#include <sys/syscall.h>
#include <sys/queue.h>
#include <sys/stat.h>
#include <sys/statfs.h>
#include <dirent.h>
#include <fnmatch.h>
#include <time.h>
#include <linux/msdos_fs.h>
#include <sys/ioctl.h>
#include <pthread.h>
#ifdef __cplusplus
#if __cplusplus
extern "C" {
#endif
#endif
#include "sf_type.h"
#include "sf_log.h"
#include "sf_qrcode.h"
#include "sf_module.h"
#include "sf_keymng.h"
#include "sf_ledmng.h"
#include "sf_dev_usb.h"
#include "sf_otamng.h"
#include "sf_dev_other.h"
#include "sf_systemMng.h"
#include "sf_storeMng.h"
#if defined(CFG_LIVE_ENBLE)
#include "sf_liveMng.h"
#endif
#include "sf_commu_mcu_reg.h"
#include "sf_message_queue.h"
#include "sf_device.h"
#include "sf_system.h"
#include "sf_service.h"
#include <FileSysTsk.h>
extern pthread_mutex_t Param_mutexLock;
SINT8 longClickhold = 0;
SINT8 bmoduleupdate = 0;
static SF_THREAD_CFG_S sf_msgQueueThread =
{
.IsRun = 0,
.TskId = -1,
};
const SF_CHAR* app_process_SD_getstatusstring(SF_MESSAGE_CMD_SD_E enType)
{
switch(enType)
{
case CMD_SD_STRG_CB_UNKNOWN:
return "CMD_SD_STRG_CB_UNKNOWN";
case CMD_SD_STRG_CB_INSERTED:
return "CMD_SD_STRG_CB_INSERTED";
case CMD_SD_STRG_CB_REMOVED:
return "CMD_SD_STRG_CB_REMOVED";
case CMD_SD_STRG_CB_MOUNT_FINISH:
return "CMD_SD_STRG_CB_MOUNT_FINISH";
case CMD_SD_STRG_CB_UNMOUNT_FINISH:
return "CMD_SD_STRG_CB_UNMOUNT_FINISH";
case CMD_SD_SYSTEM_CB_CONFIG:
return "CMD_SD_SYSTEM_CB_CONFIG";
default:
return "Unknown";
}
}
const SF_CHAR* app_process_message_getstatusstring(SF_MESSAGE_TYPE_E enType)
{
switch(enType)
{
case CMD_KEY:
return "CMD_KEY";
case CMD_SD:
return "CMD_SD";
case CMD_LED:
return "CMD_LED";
case CMD_FILE:
return "CMD_FILE";
case CMD_POWEROFF:
return "CMD_POWEROFF";
case CMD_VENC:
return "CMD_VENC";
case CMD_MCU:
return "CMD_MCU";
case CMD_PARA:
return "CMD_PARA";
case CMD_GPRS:
return "CMD_GPRS";
default:
return "Unknown";
}
}
static SINT32 process_cmd_shortclick(SF_MESSAGE_BUF_S *pMessageBuf)
{
static UINT8 cnt = 0;
SF_MESSAGE_BUF_S stMessageBuf = {0};
SF_PDT_PARAM_CFG_S* pCustomer = sf_customer_param_get();
switch(pMessageBuf->arg2) {
case SF_KEY_PIN_RESET:
if(!longClickhold)
break;
if(sf_sd_status_get() == SF_SD_OK || sf_sd_status_get() == SF_SD_FULL)
{
SF_CHAR version[12] = {0};
SF_CHAR iccidStr[22] = {0};
SF_PDT_PARAM_STATISTICS_S *pStaticParam = sf_statistics_param_get();
sf_sys_software_version_get(version);
if(pStaticParam->SimType == SF_SIM_OTHER)
{
sprintf(iccidStr, "%s", "0");
}
else
{
sprintf(iccidStr, "%s", pStaticParam->SimID);
}
sf_qrcode_create(pStaticParam->IMEI, iccidStr, version);
sf_sys_camera_about();
}
break;
case SF_KEY_PIN_SYNC:
{
/*photo and video section*/
SINT8 Isfull = 0;
SINT32 s32ret = SF_SUCCESS;
s32ret = sf_sd_isfull(&Isfull);
if(s32ret == 1) {
sf_sd_status_set(SF_SD_OUT);
if(sf_poweron_type_get() == SF_MCU_STARTUP_ONKEY)
sf_led_event_process(LED_STATUS_HOLD_ON,LED_GROUP_SD,LED_TYPE_RED);
break;
}
else if(s32ret == 2) {
sf_sd_status_set(SF_SD_ERROR);
if(sf_poweron_type_get() == SF_MCU_STARTUP_ONKEY)
sf_led_event_process(LED_STATUS_HOLD_ON,LED_GROUP_SD,LED_TYPE_YELLOW);
break;
}
if(Isfull == 1) {
sf_sd_status_set(SF_SD_FULL);
if(sf_poweron_type_get() == SF_MCU_STARTUP_ONKEY)
sf_led_event_process(LED_STATUS_HOLD_ON,LED_GROUP_SD,LED_TYPE_YELLOW);
break;
}
if(!sf_cap_status_get())
{
sf_cap_status_set(1);
if(sf_poweron_type_get() == SF_MCU_STARTUP_ONKEY)
sf_led_event_process(LED_STATUS_SLOWFLASH_ON,LED_GROUP_STATUS,LED_TYPE_GREEN);
usleep(1000*1000);
#if defined(CFG_COMM_MCU_UART)
UINT8 isNight = 0;
UINT8 lightVal = 0;
SINT8 para[3] = {0};
/*1 update light value */
isNight = sf_is_night_mode(1);
lightVal = sf_get_light_value();
para[0] = isNight;
para[1] = (lightVal & 0xff00) >> 8;
para[2] = lightVal & 0x00ff;
sf_sys_rtoscmd_set(LINUX2RTK_CMD_SET_OTHER,para);
#else
/*1 update light value */
system("echo cli sycmd -getlight > /proc/dualos/rtos");
usleep(100*1000);
UINT8 isNight = 0;
SF_RTOSINFO_S stRtosData = {0};
/*2,get lastest light value*/
sf_sys_rtosdata_get(&stRtosData);
isNight = stRtosData.IsNight;
#endif
/*3,reload IQ file */
stMessageBuf.cmdId = 0x0112;
stMessageBuf.arg1 = isNight;
sf_com_message_send_to_cardv(&stMessageBuf);
MLOGI("CamMode:%d\n",pCustomer->CamMode);
if(pCustomer->CamMode == 0) {
if(pCustomer->Multishot <= 1 )
system("echo rtkmode 0 > /tmp/cardv_fifo");
else
system("echo rtkmode 2 > /tmp/cardv_fifo");
}
else if(pCustomer->CamMode == 1) {
system("echo rtkmode 3 > /tmp/cardv_fifo");
}
else {
if(pCustomer->Multishot <= 1 )
system("echo rtkmode 4 > /tmp/cardv_fifo");
else
system("echo rtkmode 6 > /tmp/cardv_fifo");
}
}
else
{
if((pCustomer->CamMode) && (sf_cap_status_get() == 2))
{
stMessageBuf.cmdId = 0x0111;
sf_com_message_send_to_cardv(&stMessageBuf);
}
}
}
break;
case SF_KEY_PIN_FORMAT:
if(!longClickhold)
break;
if(sf_sd_status_get() == SF_SD_OK || sf_sd_status_get() == SF_SD_FULL)
{
pCustomer->DebugMode = pCustomer->DebugMode?0:1;
sf_led_event_process((pCustomer->DebugMode?LED_STATUS_SLOWFLASH_ON:LED_STATUS_HOLD_ON),LED_GROUP_SD,LED_TYPE_GREEN);
MLOGD("DebugMode =[%d]\n",pCustomer->DebugMode);
}
break;
case SF_KEY_PIN_DATAREADY:
{
#if defined(CFG_COMM_MCU_UART)
UINT8 mode = 0;
mode = sf_mcu_power_on_para_get(SF_MCU_STARTMODE);
#else
UINT8 mode = 0;
system("echo cli sycmd -McuModeGet > /proc/dualos/rtos");
usleep(100*1000);
UINT8 keyValue = 0;
SF_RTOSINFO_S stRtosData = {0};
sf_sys_rtosdata_get(&stRtosData);
mode = stRtosData.test1;
#endif
MLOGD("mode:%d, \n", mode);
if(mode == 0)
{
app_system_poweroff(SF_POWEROFF_KEYOFF);
}
else if(mode == 3)//ON
{
// s32ThreeWaySwitch = 1;
app_funkey_switch_check_start();
}
else if(mode == 1)//SETUP
{
if(app_flash_poweroff_task_IsRun())
{
app_funkey_switch_check_stop();
}
else if(sf_poweron_type_get() != SF_MCU_STARTUP_ONKEY)
{
//check is capture runing, wait cap end or video end
if(sf_cap_status_get() == 0) //
{
app_system_poweroff(SF_POWEROFF_KEYOFF);
}
else
{
//if video/pic+video send stop msg
if(pCustomer->CamMode)
{
app_system_poweroff(SF_POWEROFF_KEYOFF);
}
}
}
}
else
{
cnt++;
if(cnt > 6)
{
cnt = 0;
MLOGE("abnormal power off\n");
app_system_poweroff(SF_POWEROFF_KEYOFF);
}
}
}
break;
case SF_KEY_PIN_FILESTATUS:
sf_cap_status_set(pMessageBuf->arg3);
break;
default:
MLOGE("illegal pin [%d]!!!\n",pMessageBuf->arg2);
break;
}
return SF_SUCCESS;
}
static SINT32 process_cmd_longclick(SF_MESSAGE_BUF_S *pMessageBuf)
{
switch(pMessageBuf->arg2) {
case SF_KEY_PIN_RESET:
if(!longClickhold) {
sf_all_param_reset();
if(sf_poweron_type_get() == SF_MCU_STARTUP_ONKEY)
app_led_all_status_set(LED_STATUS_HOLD_ON,LED_TYPE_GREEN);
app_system_poweroff(SF_POWEROFF_REBOOT);
break;
}
MLOGI("BatRemainCap = [%d]\n", sf_statistics_param_get()->BatRemainCap);
if((access("/mnt/mmc/EG95", F_OK) == 0) && (sf_statistics_param_get()->BatRemainCap > 40))
{
MLOGI("eg95\n");
bmoduleupdate = 1;
if(sf_poweron_type_get() == SF_MCU_STARTUP_ONKEY)
sf_led_event_process(LED_STATUS_QUICKFLASH_ON,LED_GROUP_SD,LED_TYPE_GREEN);
system("/customer/QFirehose -f /mnt/mmc/EG95");
app_system_poweroff(SF_POWEROFF_REBOOT);
}
else
{
if(sf_poweron_type_get() == SF_MCU_STARTUP_ONKEY)
sf_led_event_process(LED_STATUS_QUICKFLASH_ON,LED_GROUP_SD,LED_TYPE_RED);
bUpdateEnble = 1;
}
break;
case SF_KEY_PIN_SYNC:
// if(upgrade_ota_file_IsExsit(SF_OTA_UPGRADE_FILE_PATH) == SF_FALSE)
// break;
//
// if(sf_poweron_type_get() == SF_MCU_STARTUP_ONKEY&& (sf_statistics_param_get()->BatRemainCap > 40)) {
// SINT32 s32ret = SF_SUCCESS;
// s32ret = sf_upgrade_ota_param_bak();
// SF_APPCOMM_CHECK_RETURN(s32ret, SF_APP_ERROR_NO_SUPPOET);
//
// s32ret = sf_upgrade_ota_env_set();
// SF_APPCOMM_CHECK_RETURN(s32ret, SF_APP_ERROR_NO_SUPPOET);
// sleep(2);
//
// sf_mcu_wdg_off();
// sleep(2);
//
// SF_MESSAGE_BUF_S stMessageBuf = {0};
// stMessageBuf.arg1 = SF_POWEROFF_SYNC_PARAM;
// stMessageBuf.cmdId = CMD_POWEROFF;
// sf_com_message_send_to_app(&stMessageBuf);
// }
break;
case SF_KEY_PIN_FORMAT:
if(sf_sd_status_get() == SF_SD_OUT)
break;
if(sf_cap_status_get() != 0)
break;
if(sf_poweron_type_get() == SF_MCU_STARTUP_ONKEY)
sf_led_event_process(LED_STATUS_QUICKFLASH_ON,LED_GROUP_SD,LED_TYPE_OFF);
system("echo format > /tmp/cardv_fifo");
break;
case SF_KEY_PIN_DATAREADY:
break;
default:
MLOGE("illegal pin [%d]!!!\n",pMessageBuf->arg2);
break;
}
return SF_SUCCESS;
}
static SINT32 process_cmd_holddown(SF_MESSAGE_BUF_S *pMessageBuf)
{
switch(pMessageBuf->arg2) {
case SF_KEY_PIN_RESET:
break;
case SF_KEY_PIN_SYNC:
longClickhold = 1;
break;
case SF_KEY_PIN_FORMAT:
break;
case SF_KEY_PIN_DATAREADY:
break;
default:
MLOGE("illegal pin [%d]!!!\n",pMessageBuf->arg2);
break;
}
return SF_SUCCESS;
}
static SINT32 process_cmd_holdup(SF_MESSAGE_BUF_S *pMessageBuf)
{
switch(pMessageBuf->arg2) {
case SF_KEY_PIN_RESET:
if(bmoduleupdate == 1) {
bmoduleupdate = 0;
app_led_sd_status_return();
}
break;
case SF_KEY_PIN_SYNC:
longClickhold = 0;
break;
case SF_KEY_PIN_FORMAT:
break;
case SF_KEY_PIN_DATAREADY:
break;
default:
MLOGE("illegal pin [%d]!!!\n",pMessageBuf->arg2);
break;
}
return SF_SUCCESS;
}
static SINT32 app_process_cmd_keyctrl(SF_MESSAGE_BUF_S *pMessageBuf)
{
SF_MESSAGE_CMD_KEY_E enEventkey = pMessageBuf->arg1;
MLOGI("[%d,%s],[%d,%s]\n", pMessageBuf->arg1,\
sf_keyctrl_getstatusstring(pMessageBuf->arg1),\
pMessageBuf->arg2,\
sf_keypin_getstatusstring(pMessageBuf->arg2));
switch(enEventkey) {
case SF_EVENT_KEY_SHORT_CLICK:
if(SF_UPGRADE_ING == sf_upgrade_status_get() || SF_UPGRADE_FAIL == sf_upgrade_status_get()) {
sf_upgrade_status_set(SF_UPGRADE_BUTT);
return SF_SUCCESS;
}
if(app_upgrade_restore_IsRun()) {
app_upgrade_restore_stop();
return SF_SUCCESS;
}
if(app_upgrade_ota_restore_IsRun()) {
app_upgrade_ota_restore_stop();
return SF_SUCCESS;
}
return process_cmd_shortclick(pMessageBuf);
case SF_EVENT_KEY_LONG_CLICK:
if(SF_UPGRADE_ING == sf_upgrade_status_get() || SF_UPGRADE_FAIL == sf_upgrade_status_get()) {
sf_upgrade_status_set(SF_UPGRADE_BUTT);
return SF_SUCCESS;
}
if(app_upgrade_restore_IsRun()) {
app_upgrade_restore_stop();
return SF_SUCCESS;
}
if(app_upgrade_ota_restore_IsRun()) {
app_upgrade_ota_restore_stop();
return SF_SUCCESS;
}
return process_cmd_longclick(pMessageBuf);
case SF_EVENT_KEY_HOLD_DOWN:
return process_cmd_holddown(pMessageBuf);
case SF_EVENT_KEY_HOLD_UP:
return process_cmd_holdup(pMessageBuf);
case SF_EVENT_KEY_GROUP:
break;
default:
MLOGE("illegal parameter [%d]!!!\n",enEventkey);
break;
}
return SF_SUCCESS;
}
static SINT32 app_process_cmd_SD(SF_MESSAGE_BUF_S *pMessageBuf)
{
static SINT8 bsdstatus = 0;
static SINT8 bsdoutstatus = 0;
UINT32 status;
MLOGI("[%d,%s]\n",pMessageBuf->arg1,app_process_SD_getstatusstring(pMessageBuf->arg1));
switch(pMessageBuf->arg1)
{
case CMD_SD_STRG_CB_UNKNOWN:
sf_set_card_full(1);
break;
case CMD_SD_STRG_CB_INSERTED:
sf_set_card(1);
break;
case CMD_SD_STRG_CB_REMOVED:
sf_set_card(0);
sf_sys_status_led_set(SF_LED_SYS_STATE_SD_FULL);
break;
case CMD_SD_STRG_CB_MOUNT_FINISH:
status = pMessageBuf->arg3;
switch (status)
{
case FST_STA_OK:
sf_set_card(1);
sf_sys_status_led_set(SF_LED_SYS_STATE_SD_NORMAL);
MLOGI("card-%d mount OK\r\n", pMessageBuf->arg2 + 1);
break;
case FST_STA_DISK_UNFORMAT:
sf_sys_status_led_set(SF_LED_SYS_STATE_SD_ERROR);
MLOGI("^Rcard-%d mount FAIL: Unformat\r\n", pMessageBuf->arg2 + 1);
break;
case FST_STA_DISK_UNKNOWN_FORMAT:
sf_sys_status_led_set(SF_LED_SYS_STATE_SD_FULL);
MLOGI("^Rcard-%d mount FAIL: Unknown Format\r\n", pMessageBuf->arg2 + 1);
break;
case FST_STA_CARD_ERR:
sf_sys_status_led_set(SF_LED_SYS_STATE_SD_ERROR);
MLOGI("^Rcard-%d mount FAIL: Card Error\r\n", pMessageBuf->arg2 + 1);
break;
default:
MLOGI("^Rcard-%d mount FAIL: ErrID=%d\r\n", pMessageBuf->arg2 + 1, status);
break;
}
break;
case CMD_SD_STRG_CB_UNMOUNT_FINISH:
break;
case CMD_SD_SYSTEM_CB_CONFIG:
break;
case CMD_SD_FULL:
sf_set_card_full(1);
/*sf_sd_status_set(SF_SD_FULL);
if(sf_poweron_type_get() == SF_MCU_STARTUP_ONKEY) {
if(!(SF_UPGRADE_ING == sf_upgrade_status_get() || SF_UPGRADE_FAIL == sf_upgrade_status_get()))
sf_led_event_process(LED_STATUS_HOLD_ON,LED_GROUP_SD,LED_TYPE_YELLOW);
}
if(!bsdstatus) {
bsdstatus = 1;
sf_upgrade_ota_param_recover();
sf_statistics_param_load(sf_statistics_param_get());
app_system_param_update();
if((sf_poweron_type_get() != SF_MCU_STARTUP_TIMELAPSE) && (sf_poweron_type_get() != SF_MCU_STARTUP_PIR)) {
app_t110();
}
}*/
break;
/*case CMD_SD_MOUNT_SUCCESS:
sf_sd_status_set(SF_SD_OK);
if(sf_poweron_type_get() == SF_MCU_STARTUP_ONKEY) {
if(!(SF_UPGRADE_ING == sf_upgrade_status_get() || SF_UPGRADE_FAIL == sf_upgrade_status_get()))
sf_led_event_process((sf_customer_param_get()->DebugMode?LED_STATUS_SLOWFLASH_ON:LED_STATUS_HOLD_ON),LED_GROUP_SD,LED_TYPE_GREEN);
}
if(!bsdstatus) {
bsdstatus = 1;
sf_upgrade_ota_param_recover();
sf_statistics_param_load(sf_statistics_param_get());
app_system_param_update();
if((sf_poweron_type_get() != SF_MCU_STARTUP_TIMELAPSE) && (sf_poweron_type_get() != SF_MCU_STARTUP_PIR)) {
app_t110();
}
}
break;
case CMD_SD_ERROR:
sf_sd_status_set(SF_SD_ERROR);
if(sf_poweron_type_get() == SF_MCU_STARTUP_ONKEY) {
if(!(SF_UPGRADE_ING == sf_upgrade_status_get() || SF_UPGRADE_FAIL == sf_upgrade_status_get()))
sf_led_event_process(LED_STATUS_HOLD_ON,LED_GROUP_SD,LED_TYPE_YELLOW);
}
if(!bsdstatus) {
sf_statistics_param_reset(sf_statistics_param_get());
app_system_param_update();
if((sf_poweron_type_get() != SF_MCU_STARTUP_TIMELAPSE) && (sf_poweron_type_get() != SF_MCU_STARTUP_PIR)) {
app_t110();
}
}
break;
case CMD_SD_MOUNT_FAILURE:
case CMD_SD_OUT:
sf_sd_status_set(SF_SD_OUT);
if(sf_poweron_type_get() == SF_MCU_STARTUP_ONKEY) {
if(!(SF_UPGRADE_ING == sf_upgrade_status_get() || SF_UPGRADE_FAIL == sf_upgrade_status_get()))
sf_led_event_process(LED_STATUS_HOLD_ON,LED_GROUP_SD,LED_TYPE_RED);
}
if((sf_poweron_type_get() == SF_MCU_STARTUP_PIR) || (sf_poweron_type_get() == SF_MCU_STARTUP_TIMELAPSE))
{
app_system_poweroff(SF_POWEROFF_NO_SD);
}
if((!bsdoutstatus) && (!bsdstatus)) {
sf_statistics_param_reset(sf_statistics_param_get());
app_system_param_update();
bsdoutstatus = 1;
if((sf_poweron_type_get() != SF_MCU_STARTUP_TIMELAPSE) && (sf_poweron_type_get() != SF_MCU_STARTUP_PIR)) {
app_t110();
}
}
break;
*/
default:
break;
}
return SF_SUCCESS;
}
static SINT32 app_proccess_cmd_file(SF_MESSAGE_BUF_S *pMessageBuf)
{
#ifdef SF_HARDWARE_TEST
app_system_poweroff(SF_POWEROFF_NOT);
return SF_SUCCESS;
#endif
sf_mcu_wdg_set(5);
if(sf_poweron_type_get() != SF_MCU_STARTUP_RING && sf_poweron_type_get() != SF_MCU_STARTUP_ONKEY)
{
app_t110();
}
else
{
app_FileSend_start();
}
return SF_SUCCESS;
}
static SINT32 app_proccess_cmd_poweroff(SF_MESSAGE_BUF_S *pMessageBuf)
{
return app_system_poweroff(pMessageBuf->arg1);
}
static void app_proccess_cmd_led(SF_MESSAGE_BUF_S *pMessageBuf)
{
MLOGI("[%d,%s],[%d,%s],[%d,%s]\n", pMessageBuf->arg1,sf_led_status_getstatusstring(pMessageBuf->arg1),
pMessageBuf->arg2,sf_led_group_getstatusstring(pMessageBuf->arg2),
pMessageBuf->arg3,sf_led_type_getstatusstring(pMessageBuf->arg3));
if(sf_poweron_type_get() == SF_MCU_STARTUP_NORMAL || sf_poweron_type_get() == SF_MCU_STARTUP_ONKEY)
sf_led_event_process(pMessageBuf->arg1,pMessageBuf->arg2,pMessageBuf->arg3);
}
static SINT32 app_proccess_cmd_mcu(SF_MESSAGE_BUF_S *pMessageBuf)
{
MLOGI("ID = %#x\n",pMessageBuf->arg1);
SF_MESSAGE_BUF_S stMessageBuf = {0};
switch(pMessageBuf->arg1)
{
case SF_MCU_CMD_POWERON:
sf_get_power_on_mode();
stMessageBuf.arg1 = SF_MCU_CMD_POWERON;
stMessageBuf.arg2 = (SINT32)sf_convert_power_on_mode();
stMessageBuf.arg3 = (SINT32)sf_mcu_get_irshtter();
stMessageBuf.cmdId = CMD_MCU;
sf_com_message_send_to_cardv(&stMessageBuf);
break;
case SF_MCU_CMD_MODULE_SLEEP:
sf_set_module_sleep_flag(0);
break;
default:
break;
}
return SF_SUCCESS;
}
static SINT32 app_proccess_cmd_para_update(SF_MESSAGE_BUF_S *pMessageBuf)
{
MLOGI("ID = %#x\n",pMessageBuf->arg1);
switch(pMessageBuf->arg1)
{
case SF_PARA_CMD_UPDATE:
sf_share_mem_customer_update();
break;
default:
break;
}
return SF_SUCCESS;
}
#if defined(CFG_LIVE_ENBLE)
static SINT32 app_proccess_cmd_venc(SF_MESSAGE_BUF_S *pMessageBuf)
{
MLOGI("ID = %#x\n",pMessageBuf->arg1);
switch(pMessageBuf->arg1)
{
case CMD_VENC_START_SUCCESS:
sf_venc_stream_start();
break;
case CMD_VENC_START_FAILURE:
break;
case CMD_VENC_STOP_SUCCESS:
sf_venc_stream_stop();
break;
case CMD_VENC_STOP_FAILURE:
break;
case CMD_VENC_STREAM_START:
{
SINT8 value = 1;
sf_4G_status_set(SF_4G_SENDING);
sf_sys_rtoscmd_set(LINUX2RTK_CMD_SET_P2PCTRL,&value);
}
break;
case CMD_VENC_STREAM_STOP:
{
SINT8 value = 0;
sf_venc_stream_stop();
sf_sys_rtoscmd_set(LINUX2RTK_CMD_SET_P2PCTRL,&value);
sf_4G_status_set(SF_4G_FREE);
}
break;
default:
break;
}
return SF_SUCCESS;
}
#endif
void* app_message_recv_thread(void *arg)
{
SINT32 ret = 0;
SF_MESSAGE_BUF_S stMessagebuf = {0};
while(1)
{
ret = sf_com_message_recv_from_app(&stMessagebuf);
if(ret != SF_SUCCESS)
{
continue;
}
MLOGI("cmdId:[%#x,%s]\n",stMessagebuf.cmdId,app_process_message_getstatusstring(stMessagebuf.cmdId));
switch(stMessagebuf.cmdId)
{
case CMD_KEY:
app_process_cmd_keyctrl(&stMessagebuf);
break;
case CMD_SD:
app_process_cmd_SD(&stMessagebuf);
break;
case CMD_LED:
sf_sys_status_led_set(stMessagebuf.arg1);
//app_proccess_cmd_led(&stMessagebuf);
break;
case CMD_FILE:
app_proccess_cmd_file(&stMessagebuf);
break;
case CMD_POWEROFF:
app_proccess_cmd_poweroff(&stMessagebuf);
break;
#if defined(CFG_LIVE_ENBLE)
case CMD_VENC:
app_proccess_cmd_venc(&stMessagebuf);
break;
#endif
case CMD_MCU:
app_proccess_cmd_mcu(&stMessagebuf);
break;
case CMD_PARA:
app_proccess_cmd_para_update(&stMessagebuf);
break;
default:
break;
}
}
}
void app_message_recv_start(void)
{
MLOGD("sf_msgQueueThread.IsRun:%d\n", sf_msgQueueThread.IsRun);
if(!sf_msgQueueThread.IsRun)
{
pthread_create(&sf_msgQueueThread.TskId, NULL, app_message_recv_thread, NULL);
sf_msgQueueThread.IsRun = 1;
}
}
#ifdef __cplusplus
#if __cplusplus
}
#endif
#endif

File diff suppressed because it is too large Load Diff

View File

@ -38,6 +38,9 @@ extern "C" {
#endif #endif
#endif #endif
extern pthread_mutex_t GPIO_mutexLock; extern pthread_mutex_t GPIO_mutexLock;
static SINT32 IsCardFull = 0;
static SINT32 isGoing2Pir = 0;
static SINT32 IsCard = 0;
SF_THREAD_S PirMonitorTskCfg = SF_THREAD_S PirMonitorTskCfg =
{ {
@ -45,6 +48,24 @@ SF_THREAD_S PirMonitorTskCfg =
.TskId = -1, .TskId = -1,
}; };
static char driver_path_prefix[] = "/lib/modules/4.19.91";
static char* usb_host_drivers[] = {
"kernel/drivers/usb/common/usb-common.ko",
"kernel/drivers/usb/core/usbcore.ko",
"kernel/drivers/usb/host/ehci-hcd.ko",
"kernel/drivers/net/mii.ko",
"kernel/drivers/net/usb/usbnet.ko",
"kernel/drivers/usb/serial/usbserial.ko",
"kernel/drivers/usb/serial/usb_wwan.ko",
"kernel/drivers/usb/serial/option.ko",
"kernel/drivers/net/usb/cdc_ether.ko",
"kernel/drivers/usb/class/cdc-wdm.ko",
"kernel/drivers/net/usb/qmi_wwan.ko",
"extra/net/GobiNet/drv_gobi_net.ko",
NULL
};
void* pir_monitoring_thread(void) void* pir_monitoring_thread(void)
{ {
SF_MESSAGE_BUF_S stMessageBuf = {0}; SF_MESSAGE_BUF_S stMessageBuf = {0};
@ -473,15 +494,15 @@ SINT32 app_led_pin_init(void)
// sf_hal_gpio_init(GPIOID_SIM_INSRET, GPIO_DIR_IN); // sf_hal_gpio_init(GPIOID_SIM_INSRET, GPIO_DIR_IN);
// sf_hal_gpio_init(GPIOID_USB_INSERT, GPIO_DIR_IN); // sf_hal_gpio_init(GPIOID_USB_INSERT, GPIO_DIR_IN);
SINT8 halvalue = 0; /*SINT8 halvalue = 0;
SF_MUTEX_LOCK(GPIO_mutexLock); SF_MUTEX_LOCK(GPIO_mutexLock);
sf_hal_gpio_init(SF_KEY_PIN_SYNC,GPIO_DIR_IN); sf_hal_gpio_init(SF_KEY_PIN_SYNC,GPIO_DIR_IN);
sf_hal_gpio_get(SF_KEY_PIN_SYNC,&halvalue); sf_hal_gpio_get(SF_KEY_PIN_SYNC,&halvalue);
sf_hal_gpio_deinit(SF_KEY_PIN_SYNC); sf_hal_gpio_deinit(SF_KEY_PIN_SYNC);
SF_MUTEX_UNLOCK(GPIO_mutexLock); SF_MUTEX_UNLOCK(GPIO_mutexLock);
MLOGI("halvalue: %d\n",halvalue); MLOGI("halvalue: %d\n",halvalue);
if(halvalue == 0) if(halvalue == 1)
return SF_SUCCESS; return SF_SUCCESS;*/
SF_MESSAGE_BUF_S stMessageBuf = {0}; SF_MESSAGE_BUF_S stMessageBuf = {0};
stMessageBuf.cmdId = CMD_LED; stMessageBuf.cmdId = CMD_LED;
@ -493,6 +514,84 @@ SINT32 app_led_pin_init(void)
return SF_SUCCESS; return SF_SUCCESS;
} }
SINT32 sf_in_card_exist(void)
{
SINT8 regValue = 0;
SF_MUTEX_LOCK(GPIO_mutexLock);
sf_hal_gpio_init(SF_GPIO_CARD_DETECT, GPIO_DIR_IN);
sf_hal_gpio_get(SF_GPIO_CARD_DETECT, &regValue);
sf_hal_gpio_deinit(SF_GPIO_CARD_DETECT);
SF_MUTEX_UNLOCK(GPIO_mutexLock);
return (regValue & 0xFF) ? 1:0;
}
SINT32 sf_is_card_full(void)
{
return IsCardFull;
}
void sf_set_card_full(SINT32 vol)
{
IsCardFull = vol;
}
SINT32 sf_is_card(void)
{
return IsCard;
}
void sf_set_card(SINT32 vol)
{
IsCard = vol;
}
SINT32 sf_get_pir_statu_flag(void)
{
return isGoing2Pir;
}
void sf_set_pir_statu_flag(SINT32 flag)
{
isGoing2Pir = flag;
}
BOOL sf_load_ko(void)
{
char** usb_drivers = NULL;
char* driver_path = NULL;
UINT8 cnt = 0;
char cmd[256] = {'\0'};
int ret = 0;
BOOL ret2 = TRUE;
usb_drivers = usb_host_drivers;
while(usb_drivers[cnt++])
{
}
for(int i = 0 ; i < cnt ; i++)
{
driver_path = usb_drivers[i];
if(driver_path){
snprintf(cmd, sizeof(cmd), "insmod %s/%s", driver_path_prefix, driver_path);
printf("[%s:%d] %s\n", __FUNCTION__, __LINE__, cmd);
ret = system(cmd);
if(0 != ret)
{
ret2 = FALSE;
}
}
}
return ret2;
}
#ifdef __cplusplus #ifdef __cplusplus
#if __cplusplus #if __cplusplus
} }

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,854 @@
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>
#include <termios.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/time.h>
#include <sys/stat.h>
#include <sys/vfs.h>
#include <sys/sem.h>
#include <sys/ipc.h>
#include <sys/ioctl.h>
#include "sf_log.h"
#include "sf_module.h"
#include "sf_ledmng.h"
#include "sf_storeMng.h"
#include "sf_systemMng.h"
#include "sf_keymng.h"
#include "sf_otamng.h"
#include "sf_dev_usb.h"
#include "sf_dev_other.h"
#include "sf_message_queue.h"
#include "sf_commu_mcu_reg.h"
#include "sf_system.h"
#include "sf_device.h"
#ifdef __cplusplus
#if __cplusplus
extern "C" {
#endif
#endif
static SINT32 AutoPowerOffTime = 0;
static SINT32 sfusbstatus = 0;
extern SF_PARA_TIME_S rtcTime;
SINT32 bUpdateEnble = 0;
SINT32 s32ThreeWaySwitch = 0;
pthread_mutex_t Param_mutexLock;
pthread_mutex_t GPIO_mutexLock;
SF_THREAD_S AutoPoweroffTskCfg =
{
.IsRun = 0,
.TskId = -1,
};
SF_THREAD_S BatMonitorTskCfg =
{
.IsRun = 0,
.TskId = -1,
};
SF_THREAD_S FunKeySwitchTskCfg =
{
.IsRun = 0,
.TskId = -1,
};
SF_THREAD_S UsbmodeTskCfg =
{
.IsRun = 0,
.TskId = -1,
};
SF_THREAD_S UpgradeRestoreTskCfg =
{
.IsRun = 0,
.TskId = -1,
};
SF_THREAD_S OtaUpgradeRestoreTskCfg =
{
.IsRun = 0,
.TskId = -1,
};
SINT8 debugFlag = 0;
void app_poweroff_time_clear(void)
{
AutoPowerOffTime = 0;
}
static void* auto_poweroff_thread(void)
{
SF_MESSAGE_BUF_S stMessageBuf = {0};
while(AutoPoweroffTskCfg.IsRun)
{
if(bUpdateEnble >= 1 && bUpdateEnble < 6)
{
bUpdateEnble++;
}
else if(bUpdateEnble >= 6) {
app_led_sd_status_return();
bUpdateEnble = 0;
}
// if(s32ThreeWaySwitch == 1) {
// app_pir_monitoring_stop();
// sf_led_event_process(LED_STATUS_SLOWFLASH_ON,LED_GROUP_STATUS,LED_TYPE_GREEN);
// s32ThreeWaySwitch = 2;
// }
// else if(s32ThreeWaySwitch >= 2 && s32ThreeWaySwitch < 7) {
// s32ThreeWaySwitch++;
// }
// else if( s32ThreeWaySwitch >= 7) {
// app_led_all_status_set(LED_STATUS_HOLD_ON,LED_TYPE_OFF);
// app_system_poweroff(SF_POWEROFF_KEYON);
// s32ThreeWaySwitch = 0;
// }
if(debugFlag == 1){
sleep(1);
continue;
}
if(debugFlag == 2) {
AutoPowerOffTime = 175;
debugFlag = 0;
continue;
}
if(AutoPowerOffTime < 180)
{
UINT8 temp = 0;
temp = sf_4G_status_get();
if((temp == SF_4G_SENDING) || (temp == SF_4G_SEARCHING))
AutoPowerOffTime = 0;
else
AutoPowerOffTime++;
}
else if(AutoPowerOffTime == 180)
{
AutoPowerOffTime = 0;
if(sf_usb_IsInsert())
continue;
if(sf_poweron_type_get() == SF_MCU_STARTUP_ONKEY)
{
app_pir_monitoring_stop();
app_led_all_status_set(LED_STATUS_HOLD_ON,LED_TYPE_OFF);
stMessageBuf.cmdId = CMD_LED;
stMessageBuf.arg1 = LED_STATUS_SLOWFLASH_ON;
stMessageBuf.arg2 = LED_GROUP_STATUS;
stMessageBuf.arg3 = LED_TYPE_GREEN;
sf_com_message_send_to_app(&stMessageBuf);
sleep(5);
stMessageBuf.arg1 = SF_POWEROFF_AUTO;
stMessageBuf.cmdId = CMD_POWEROFF;
sf_com_message_send_to_app(&stMessageBuf);
continue;
}
if(sf_upgrade_status_get() == SF_UPGRADE_FAIL)
{
stMessageBuf.arg1 = SF_POWEROFF_NOT;
stMessageBuf.cmdId = CMD_POWEROFF;
sf_com_message_send_to_app(&stMessageBuf);
continue;
}
}
sleep(1);
}
AutoPowerOffTime = 0;
return NULL;
}
SINT8 sf_sys_battery_level_get(SINT32 batValue)
{
if(batValue >= 90)
{
return SF_BATT_LEVEL_4;
}
else if(batValue >= 30)
{
return SF_BATT_LEVEL_3;
}
else if(batValue > 0)
{
return SF_BATT_LEVEL_2;
}
else
{
return SF_BATT_LEVEL_0;
}
}
SINT32 app_auto_poweroff_start(void)
{
SINT32 ret = SF_SUCCESS;
if(AutoPoweroffTskCfg.IsRun)
{
SLOGE("thread has already run !!!\n");
return SF_FAILURE;
}
ret = pthread_create(&AutoPoweroffTskCfg.TskId, NULL, auto_poweroff_thread, NULL);
if(ret != SF_SUCCESS)
{
MLOGD("thread creat fail!\n");
return ret;
}
AutoPoweroffTskCfg.IsRun = 1;
return SF_SUCCESS;
}
static void* battery_monitoring_thread(void)
{
SINT32 batPercentVal = 1;
SINT32 lastbatPercentVal = 1;
UINT8 batLevel = 0;
static UINT16 lastBatLevel = 0;
SF_RTOSINFO_S pstRtosData;
SF_MESSAGE_BUF_S stMessageBuf = {0};
SF_PDT_PARAM_STATISTICS_S *pStaticParam = sf_statistics_param_get();
SF_PDT_PARAM_CFG_S* puiPara = sf_customer_param_get();
sleep(3);
while(1)
{
sf_sys_rtosdata_get(&pstRtosData);
batPercentVal = pstRtosData.BatPer;
pStaticParam->BatRemainCap = batPercentVal;
//SLOGI("batPercentVal = %d\n",batPercentVal);
if(batPercentVal == 0)
{
if(sf_usb_IsInsert())
return NULL;
//SLOGI("batPercentVal = %d,lastbatPercentVal = %d\n",batPercentVal,lastbatPercentVal);
// twice in a row below poweroff value, go to poweroff
if(lastbatPercentVal == 0)
{
if(sf_poweron_type_get() == SF_MCU_STARTUP_ONKEY \
&& (pstRtosData.IsNight == 1) \
&& (puiPara->CamMode) \
&& (sf_cap_status_get() == 2))
{
//batPercentVal = lastbatPer;
//sf_batteryRemain_percent_set((UINT8)batPercentVal);
//send stop record msg
stMessageBuf.cmdId = 0x0111;
sf_com_message_send_to_cardv(&stMessageBuf);
}
else
{
sleep(1);
stMessageBuf.cmdId = CMD_LED;
stMessageBuf.arg1 = LED_STATUS_QUICKFLASH_ON;
stMessageBuf.arg2 = LED_GROUP_BAT;
stMessageBuf.arg3 = LED_TYPE_RED;
sf_com_message_send_to_app(&stMessageBuf);
stMessageBuf.arg1 = SF_POWEROFF_LOW_BAT;
stMessageBuf.cmdId = CMD_POWEROFF;
sf_com_message_send_to_app(&stMessageBuf);
while(1)
sleep(5);
}
}
else
{
lastbatPercentVal = batPercentVal;
}
}
else
{
batLevel = sf_sys_battery_level_get(batPercentVal);
if(batLevel != lastBatLevel)
{
lastBatLevel = batLevel;
stMessageBuf.cmdId = CMD_LED;
stMessageBuf.arg1 = LED_STATUS_HOLD_ON;
stMessageBuf.arg2 = LED_GROUP_BAT;
switch(lastBatLevel) {
case SF_BATT_LEVEL_4:
stMessageBuf.arg3 = LED_TYPE_GREEN;
break;
case SF_BATT_LEVEL_3:
stMessageBuf.arg3 = LED_TYPE_YELLOW;
break;
case SF_BATT_LEVEL_2:
stMessageBuf.arg3 = LED_TYPE_RED;
break;
case SF_BATT_LEVEL_0:
stMessageBuf.arg1 = LED_STATUS_QUICKFLASH_ON;
stMessageBuf.arg3 = LED_TYPE_RED;
break;
default:
break;
}
sf_com_message_send_to_app(&stMessageBuf);
}
}
sleep(3);
}
}
SINT32 app_batmonitoring_start(void)
{
SINT32 ret = SF_SUCCESS;
if(sf_poweron_type_get() != SF_MCU_STARTUP_ONKEY)
{
SLOGE("unsupport startup mode !!!\n");
return SF_FAILURE;
}
if(BatMonitorTskCfg.IsRun)
{
SLOGE("thread has already run !!!\n");
return SF_FAILURE;
}
ret = pthread_create(&BatMonitorTskCfg.TskId, NULL, battery_monitoring_thread, NULL);
if(ret != SF_SUCCESS)
{ MLOGD("thread creat fail!\n");
return ret;
}
BatMonitorTskCfg.IsRun = 1;
return SF_SUCCESS;
}
void* flash_poweroff_thread(void)
{
UINT16 i = 0;
SF_MESSAGE_BUF_S stMessageBuf = {0};
stMessageBuf.cmdId = CMD_LED;
stMessageBuf.arg1 = LED_STATUS_SLOWFLASH_ON;
stMessageBuf.arg2 = LED_GROUP_STATUS;
stMessageBuf.arg3 = LED_TYPE_GREEN;
sf_com_message_send_to_app(&stMessageBuf);
while((i < 10) && (FunKeySwitchTskCfg.IsRun))
{
usleep(500*1000);
i++;
}
if(i == 10) {
stMessageBuf.arg1 = SF_POWEROFF_KEYON;
stMessageBuf.cmdId = CMD_POWEROFF;
sf_com_message_send_to_app(&stMessageBuf);
}
return NULL;
}
SINT32 app_flash_poweroff_start(void)
{
SINT32 ret = SF_FAILURE;
if(FunKeySwitchTskCfg.IsRun)
{
SLOGE("thread has already run !!!\n");
return SF_FAILURE;
}
ret = pthread_create(&FunKeySwitchTskCfg.TskId, NULL, flash_poweroff_thread, NULL);
if(ret != SF_SUCCESS)
{ MLOGD("thread creat fail!\n");
return ret;
}
MLOGI("\n");
FunKeySwitchTskCfg.IsRun = 1;
return SF_SUCCESS;
}
SINT32 app_flash_poweroff_stop(void)
{
SINT32 ret = 0;
FunKeySwitchTskCfg.IsRun = 0;
MLOGD("sf_flash_poweroff_stop\n");
ret = pthread_join(FunKeySwitchTskCfg.TskId, NULL);
if(ret != SF_SUCCESS)
{
MLOGD("thread stop fail!\n");
return ret;
}
return SF_SUCCESS;
}
SINT8 app_flash_poweroff_task_IsRun(void)
{
return FunKeySwitchTskCfg.IsRun;
}
void* upgrade_restore_thread(void)
{
UINT16 i = 0;
SF_MESSAGE_BUF_S stMessageBuf = {0};
stMessageBuf.cmdId = CMD_LED;
stMessageBuf.arg1 = LED_STATUS_QUICKFLASH_ON;
stMessageBuf.arg2 = LED_GROUP_SD;
stMessageBuf.arg3 = LED_TYPE_RED;
sf_com_message_send_to_app(&stMessageBuf);
while(i < 5 && UpgradeRestoreTskCfg.IsRun)
{
sleep(1);
i++;
}
UpgradeRestoreTskCfg.IsRun = 0;
app_led_sd_status_return();
app_batmonitoring_start();
app_RegisterNet_start();
return NULL;
}
SINT32 app_upgrade_restore_start(void)
{
SINT32 ret = SF_FAILURE;
if(UpgradeRestoreTskCfg.IsRun)
{
SLOGE("thread has already run !!!\n");
return SF_FAILURE;
}
ret = pthread_create(&UpgradeRestoreTskCfg.TskId, NULL, upgrade_restore_thread, NULL);
if(ret != SF_SUCCESS)
{ MLOGD("thread creat fail!\n");
return ret;
}
UpgradeRestoreTskCfg.IsRun = 1;
return SF_SUCCESS;
}
SINT32 app_upgrade_restore_stop(void)
{
SINT32 ret = 0;
UpgradeRestoreTskCfg.IsRun = 0;
MLOGD("sf_flash_poweroff_stop\n");
ret = pthread_join(UpgradeRestoreTskCfg.TskId, NULL);
if(ret != SF_SUCCESS)
{
MLOGD("thread stop fail!\n");
return ret;
}
return SF_SUCCESS;
}
SINT8 app_upgrade_restore_IsRun(void)
{
return UpgradeRestoreTskCfg.IsRun;
}
void* upgrade_ota_restore_thread(void)
{
UINT16 i = 0;
SF_MESSAGE_BUF_S stMessageBuf = {0};
stMessageBuf.cmdId = CMD_LED;
stMessageBuf.arg1 = LED_STATUS_QUICKFLASH_ON;
stMessageBuf.arg2 = LED_GROUP_SD;
stMessageBuf.arg3 = LED_TYPE_RED;
sf_com_message_send_to_app(&stMessageBuf);
while(i < 5 && OtaUpgradeRestoreTskCfg.IsRun)
{
sleep(1);
i++;
}
OtaUpgradeRestoreTskCfg.IsRun = 0;
app_led_sd_status_return();
return NULL;
}
SINT32 app_upgrade_ota_restore_start(void)
{
SINT32 ret = SF_FAILURE;
if(OtaUpgradeRestoreTskCfg.IsRun)
{
SLOGE("thread has already run !!!\n");
return SF_FAILURE;
}
ret = pthread_create(&OtaUpgradeRestoreTskCfg.TskId, NULL, upgrade_ota_restore_thread, NULL);
if(ret != SF_SUCCESS)
{ MLOGD("thread creat fail!\n");
return ret;
}
OtaUpgradeRestoreTskCfg.IsRun = 1;
return SF_SUCCESS;
}
SINT32 app_upgrade_ota_restore_stop(void)
{
SINT32 ret = 0;
OtaUpgradeRestoreTskCfg.IsRun = 0;
MLOGD("sf_flash_poweroff_stop\n");
ret = pthread_join(OtaUpgradeRestoreTskCfg.TskId, NULL);
if(ret != SF_SUCCESS)
{
MLOGD("thread stop fail!\n");
return ret;
}
return SF_SUCCESS;
}
SINT8 app_upgrade_ota_restore_IsRun(void)
{
return OtaUpgradeRestoreTskCfg.IsRun;
}
SINT32 app_funkey_switch_check_start(void)
{
SINT32 ret = SF_FAILURE;
app_led_all_status_set(LED_STATUS_HOLD_ON,LED_TYPE_OFF);
app_pir_monitoring_stop();
ret = app_flash_poweroff_start();
return ret;
}
SINT32 app_funkey_switch_check_stop(void)
{
app_flash_poweroff_stop();
sf_poweroff_type_set(SF_POWEROFF_NOT);
SF_MESSAGE_BUF_S stMessageBuf = {0};
stMessageBuf.cmdId = CMD_LED;
stMessageBuf.arg1 = LED_STATUS_HOLD_ON;
stMessageBuf.arg2 = LED_GROUP_SIGNAL;
stMessageBuf.arg3 = LED_TYPE_GREEN;
sf_com_message_send_to_app(&stMessageBuf);
app_pir_monitoring_start();
// sf_4G_signal_level_get(sf_statistics_param_get(),&signalLevel);
return SF_SUCCESS;
}
static void * usb_mode_Task(void * argv)
{
while(1)
{
if(sf_cap_status_get() > 0)
continue;
if(sf_usb_IsInsert() == 0)
sf_usb_app_mode_set(SF_USB_APP_CHARGE);
if(sf_usb_IsInsert() == 1 && sfusbstatus == 0)
{
if(sf_usb_app_mode_get() == SF_USB_APP_CHARGE)
{
if(sf_sd_status_get() == SF_SD_OK || sf_sd_status_get() == SF_SD_FULL)
{
sf_usb_app_mode_set(SF_USB_APP_MSDC);
system("/customer/gadget/udc-msdc.sh");
sfusbstatus = 1;
}
else if(sf_sd_status_get() == SF_SD_UNPLUGED || sf_sd_status_get() == SF_SD_OUT)
{
sf_usb_app_mode_set(SF_USB_APP_UVC);
system("echo uvc 1 > /tmp/cardv_fifo");
sfusbstatus = 2;
}
}
}
else if(sf_usb_IsInsert() != 1 && sfusbstatus != 0)
{
sf_usb_app_mode_set(SF_USB_APP_CHARGE);
sfusbstatus = 0;
SF_MESSAGE_BUF_S stMessageBuf = {0};
stMessageBuf.arg1 = SF_POWEROFF_KEYOFF;
stMessageBuf.cmdId = CMD_POWEROFF;
sf_com_message_send_to_app(&stMessageBuf);
}
sleep(1);
}
}
SINT32 app_usb_mode_start(void)
{
SINT32 ret = SF_FAILURE;
if(UsbmodeTskCfg.IsRun)
{
SLOGE("thread has already run !!!\n");
return SF_FAILURE;
}
ret = pthread_create(&UsbmodeTskCfg.TskId, NULL, usb_mode_Task, NULL);
if(ret != SF_SUCCESS)
{ MLOGD("thread creat fail!\n");
return ret;
}
UsbmodeTskCfg.IsRun = 1;
return SF_SUCCESS;
}
SINT32 app_usb_mode_stop()
{
UINT16 ret = 0;
UsbmodeTskCfg.IsRun = 0;
MLOGD("sf_flash_poweroff_stop\n");
ret = pthread_join(UsbmodeTskCfg.TskId, NULL);
if(ret != SF_SUCCESS)
{
MLOGD("thread stop fail!\n");
return ret;
}
return SF_SUCCESS;
}
SINT32 app_system_time_update(unsigned int rtosBootTime)
{
time_t timep;
struct tm* tm_t;
struct timeval tv;
SF_PARA_TIME_S rtcTime;
tm_t = localtime((time_t*)&rtosBootTime);
rtcTime.Year = tm_t->tm_year + 1900;
rtcTime.Mon = tm_t->tm_mon + 1;
rtcTime.Day = tm_t->tm_mday;
rtcTime.Hour = tm_t->tm_hour;
rtcTime.Min = tm_t->tm_min;
rtcTime.Sec = tm_t->tm_sec;
// SLOGI("%d-%d-%d %d:%d:%d\n",rtcTime.Year,rtcTime.Mon,rtcTime.Day,rtcTime.Hour,rtcTime.Min,rtcTime.Sec);
if(SF_TRUE == sf_sys_rtc_time_check(&rtcTime))
{
sf_sys_rtc_time_set(&rtcTime);
timep = mktime(tm_t);
tv.tv_sec = timep;
tv.tv_usec = 0;
if(settimeofday (&tv, NULL) < 0)
SLOGE("Set system datatime error[%s]!\n",strerror(errno));
}
return SF_SUCCESS;
}
SINT32 app_system_param_update()
{
SF_RTOSINFO_S stRtosData = {0};
sf_sys_rtosdata_get(&stRtosData);
sf_poweron_type_set((SF_STARTUP_TYPE_E)stRtosData.test2);
sf_statistics_param_get()->startup = (SF_STARTUP_TYPE_E)stRtosData.test2;
sf_set_mcu_sub_ver(stRtosData.McuSubVer);
sf_set_mcu_ver(stRtosData.McuVer);
SLOGD("MCUsubver:%d,MCUver:%d\n",stRtosData.McuSubVer,stRtosData.McuVer);
sf_statistics_param_get()->BatRemainCap = (UINT8)stRtosData.BatPer;
sf_statistics_param_get()->FcTemper = (UINT8)stRtosData.Fctemp;
MLOGD("BatRemainCap:%d,FcTemper:%d\n",sf_statistics_param_get()->BatRemainCap,sf_statistics_param_get()->FcTemper);
return SF_SUCCESS;
}
SINT32 app_system_poweroff(SF_POWEROFF_TYPE_E enType )
{
sf_poweroff_type_set(enType);
sf_mcu_reg_set(SF_MCU_POWEROFF,sf_poweroff_type_get());
/*
SF_STORE_ATTR_S storeattrs = {0};
SF_STARTUP_TYPE_E startup = SF_MCU_STARTUP_ONKEY;
SF_PDT_PARAM_CFG_S* pCustomer = sf_customer_param_get();
#if SF_QLOG_ENABLE
if(pCustomer->DebugMode)
{
system("killall qlog");
}
#endif
// sf_sd_remove_file(SF_4G_PIC_THUMB_PATH,50);
// sf_sd_remove_file(SF_4G_SMALL_VIDEO_STREAM_PATH,50);
startup = sf_poweron_type_get();
pCustomer->Lastsetuptype = startup;
MLOGI("poweron type ending:[%d,%s]\n", startup, sf_poweron_type_string(startup));
if((startup != SF_MCU_STARTUP_ONKEY) && (startup != SF_MCU_STARTUP_NORMAL) && (startup != SF_MCU_STARTUP_OFF))
{
if(pCustomer->SdLoop == 1) {
sf_sd_info_get(&storeattrs);
if((storeattrs.SDStatus == 0) & (storeattrs.SDFree < SDLOOP_REMAIN_SPACE)) {
sf_sd_loopremove("/mnt/mmc/DCIM");
MLOGI("loop remove finished!!!\n");
}
}
}
if(pCustomer->DebugMode)
sync();
if(pCustomer->ResetFlag == 1)
{ sf_poweroff_type_set(SF_POWEROFF_SYNC_PARAM);
pCustomer->ResetFlag = 0;
}
else if(pCustomer->SdLoop != 1 && sf_sd_status_get() == SF_SD_FULL) {
sf_poweroff_type_set(SF_POWEROFF_SD_FULL);
}
else
sf_poweroff_type_set(enType);
if(sf_sd_status_get() != SF_SD_OUT)
sf_statistics_param_save(sf_statistics_param_get());
MLOGI("BatRemainCap = %d\n",sf_statistics_param_get()->BatRemainCap);
if(sf_statistics_param_get()->BatRemainCap > 0)
sf_customer_param_save(sf_customer_param_get());
sf_sys_poweroff(sf_poweroff_type_get());
*/
return SF_SUCCESS;
}
SINT32 app_http_time_by_timezone_set(void)
{
UINT32 second = 0;
SF_PDT_PARAM_CFG_S* pSfParam = sf_customer_param_get();
sf_sys_rtc_time_get(&rtcTime);
second = sf_get_seconds(rtcTime);
second -= pSfParam->TimeZone * 3600;
sf_get_date(second, &(sf_statistics_param_get()->httpTime));
return SF_SUCCESS;
}
SINT32 app_upgrade_sd_execute(void)
{
SINT8 halvalue = 0;
SF_MESSAGE_BUF_S stMessageBuf = {0};
SF_MUTEX_LOCK(GPIO_mutexLock);
sf_hal_gpio_init(SF_KEY_PIN_SYNC,GPIO_DIR_IN);
sf_hal_gpio_get(SF_KEY_PIN_SYNC,&halvalue);
sf_hal_gpio_deinit(SF_KEY_PIN_SYNC);
SF_MUTEX_UNLOCK(GPIO_mutexLock);
MLOGI("halvalue: %d\n",halvalue);
if(!(halvalue == 1 && SF_MCU_STARTUP_ONKEY == sf_poweron_type_get()))
goto _normal_deal;
sf_upgrade_status_set(SF_UPGRADE_ING);
if(upgrade_ota_file_IsExsit(SF_OTA_UPGRADE_FILE_PATH) == SF_FALSE) {
MLOGW("[%s] not existed in store!!!\n",SF_OTA_UPGRADE_FILE_PATH);
goto _error_deal_;
}
SF_RTOSINFO_S stRtosData = {0};
sf_sys_rtosdata_get(&stRtosData);
if(stRtosData.BatPer < 40) {
MLOGW("BatRemainCap [%d] is less than 40%\n",stRtosData.BatPer);
goto _error_deal_;
}
SINT32 s32ret = SF_SUCCESS;
// s32ret = sf_upgrade_ota_param_bak();
// if(s32ret != SF_SUCCESS)
// goto _error_deal_;
s32ret = sf_upgrade_ota_env_set();
if(s32ret != SF_SUCCESS)
goto _error_deal_;
sleep(2);
sf_mcu_wdg_off();
sleep(2);
stMessageBuf.arg1 = SF_POWEROFF_SYNC_PARAM;
stMessageBuf.cmdId = CMD_POWEROFF;
sf_com_message_send_to_app(&stMessageBuf);
return SF_SUCCESS;
_normal_deal:
if(!(SF_MCU_STARTUP_ONKEY == sf_poweron_type_get()))
return SF_FAILURE;
stMessageBuf.cmdId = CMD_LED;
stMessageBuf.arg1 = LED_STATUS_HOLD_ON;
stMessageBuf.arg2 = LED_GROUP_STATUS;
stMessageBuf.arg3 = LED_TYPE_GREEN;
sf_com_message_send_to_app(&stMessageBuf);
return SF_SUCCESS;
_error_deal_:
if(!(SF_MCU_STARTUP_ONKEY == sf_poweron_type_get()))
return SF_FAILURE;
sf_upgrade_status_set(SF_UPGRADE_FAIL);
stMessageBuf.cmdId = CMD_LED;
stMessageBuf.arg1 = LED_STATUS_HOLD_ON;
stMessageBuf.arg2 = LED_GROUP_STATUS;
stMessageBuf.arg3 = LED_TYPE_GREEN;
sf_com_message_send_to_app(&stMessageBuf);
if(!app_upgrade_restore_IsRun())
app_upgrade_restore_start();
return SF_SUCCESS;
}
SINT32 app_preinit(void)
{
SINT8 bUsbIsInsert = 0;
SINT8 bSimIsInsert = 0;
SF_STARTUP_TYPE_E startup = SF_MCU_STARTUP_ONKEY;
startup = sf_poweron_type_get();
bUsbIsInsert = sf_usb_IsInsert();
bSimIsInsert = sf_4G_sim_IsInsert();
if((startup == SF_MCU_STARTUP_NORMAL) && (!bUsbIsInsert))
{
app_led_poweroff();
}
if((bSimIsInsert) || (startup == SF_MCU_STARTUP_ONKEY))
{
sf_4G_usb_init();
MLOGD("sim card insert\n");
}
/*if(startup == SF_MCU_STARTUP_ONKEY)
{
app_pir_monitoring_start();
#ifndef SF_HARDWARE_TEST
app_auto_poweroff_start();
#endif
if(!app_upgrade_restore_IsRun())
app_batmonitoring_start();
}*/
return SF_SUCCESS;
}
#ifdef __cplusplus
#if __cplusplus
}
#endif
#endif

View File

@ -61,16 +61,19 @@ static SINT32 message_queue_create(SF_CHAR *pathname,SINT32 *pMsgQueueId)
} }
if((key = ftok(pathname,'z')) < 0) if((key = ftok(pathname,'z')) < 0)
{ {
MLOGI("ftok error"); //MLOGI("ftok error");
printf("[%s:%d] ftok error\n", __FUNCTION__, __LINE__);
return SF_FAILURE; return SF_FAILURE;
} }
if ((*pMsgQueueId = msgget(key, IPC_CREAT | 0660)) == -1) if ((*pMsgQueueId = msgget(key, IPC_CREAT | 0660)) == -1)
{ {
MLOGI("MsgQueueId = %#x\n",*pMsgQueueId); printf("[%s:%d] MsgQueueId = %#x msgget failed errno.%02d is: %s\n", __FUNCTION__, __LINE__,*pMsgQueueId, errno, strerror(errno));
MLOGI("msgget failed errno.%02d is: %s\n", errno, strerror(errno)); //MLOGI("MsgQueueId = %#x\n");
//MLOGI("msgget failed errno.%02d is: %s\n");
return SF_FAILURE; return SF_FAILURE;
} }
MLOGI("MsgQueueId = %#x\n",*pMsgQueueId); printf("[%s:%d] MsgQueueId = %#x\n", __FUNCTION__, __LINE__,*pMsgQueueId);
//MLOGI("\n");
return SF_SUCCESS; return SF_SUCCESS;
} }

View File

@ -22,6 +22,7 @@ extern "C" {
#include "sf_type.h" #include "sf_type.h"
#include "sf_param_common.h" #include "sf_param_common.h"
#include "sf_fileMng.h" #include "sf_fileMng.h"
#include "sf_message_queue.h"
int sf_semId = -1; int sf_semId = -1;
int sf_sharMemId = -1; int sf_sharMemId = -1;
@ -145,6 +146,12 @@ void* share_mem_get(int shmID)
{ {
return shmat(shmID, NULL, 0); return shmat(shmID, NULL, 0);
} }
int share_mem_dt(UIMenuStoreInfo *pSfCustomerPara)
{
return shmdt(pSfCustomerPara);
}
SINT32 sf_share_mem_init(SF_CHAR *pathname,int size,SINT32 *pshmID) SINT32 sf_share_mem_init(SF_CHAR *pathname,int size,SINT32 *pshmID)
{ {
return share_mem_create(pathname,size,pshmID); return share_mem_create(pathname,size,pshmID);
@ -166,33 +173,34 @@ SINT32 sf_share_mem_file_init(void)
pThumbFileCfg = (SF_SRCFILE_ATTR_S *)sf_share_mem_get(sf_sharMemfileId); pThumbFileCfg = (SF_SRCFILE_ATTR_S *)sf_share_mem_get(sf_sharMemfileId);
if(pThumbFileCfg <= 0) if(pThumbFileCfg <= 0)
{ {
MLOGI("creat share mem failed!!!\n"); printf("[%s:%d] creat share mem failed!!!\n", __FUNCTION__, __LINE__);
return SF_FAILURE; return SF_FAILURE;
} }
else else
{ {
sf_file_thumb_cfg_set(pThumbFileCfg); //sf_file_thumb_cfg_set(pThumbFileCfg);
MLOGI("creat share mem succeed!!!\n"); printf("[%s:%d] creat share mem succeed!!!\n", __FUNCTION__, __LINE__);
return SF_SUCCESS; return SF_SUCCESS;
} }
} }
return SF_FAILURE; return SF_FAILURE;
} }
SINT32 sf_share_mem_customer_init(void) SINT32 sf_share_mem_customer_update(void)
{ {
SF_PDT_PARAM_CFG_S *pSfCustomerPara = 0; UIMenuStoreInfo *pSfCustomerPara = 0;
if(SF_SUCCESS == sf_share_mem_init((char*)"/tmp/sf_share",sizeof(SF_PDT_PARAM_CFG_S),&sf_sharMemId)) if(SF_SUCCESS == sf_share_mem_init((char*)"/tmp/sf_share",sizeof(UIMenuStoreInfo),&sf_sharMemId))
{ {
pSfCustomerPara = (SF_PDT_PARAM_CFG_S *)sf_share_mem_get(sf_sharMemId); pSfCustomerPara = (UIMenuStoreInfo *)sf_share_mem_get(sf_sharMemId);
if(pSfCustomerPara <= 0) if(pSfCustomerPara <= 0)
{ {
MLOGI("creat share mem failed!!!\n"); printf("[%s:%d] creat share mem failed!!!\n", __FUNCTION__, __LINE__);
return SF_FAILURE; return SF_FAILURE;
} }
else else
{ {
sf_customer_param_set(pSfCustomerPara); sf_customer_param_set(pSfCustomerPara);
MLOGI("creat share mem succeed!!!\n"); share_mem_dt(pSfCustomerPara);
printf("[%s:%d] creat share mem succeed ID:%d!!!\n", __FUNCTION__, __LINE__, sf_sharMemId);
return SF_SUCCESS; return SF_SUCCESS;
} }
@ -200,6 +208,45 @@ SINT32 sf_share_mem_customer_init(void)
return SF_FAILURE; return SF_FAILURE;
} }
SINT32 sf_share_mem_customer_down(UINT32 to)
{
UIMenuStoreInfo *pSfCustomerPara = 0;
printf("[%s:%d] s\n", __FUNCTION__, __LINE__);
if(SF_SUCCESS == sf_share_mem_init((char*)"/tmp/sf_share",sizeof(UIMenuStoreInfo),&sf_sharMemId))
{
pSfCustomerPara = (UIMenuStoreInfo *)sf_share_mem_get(sf_sharMemId);
if(pSfCustomerPara <= 0)
{
printf("[%s:%d] creat share mem failed!!!\n", __FUNCTION__, __LINE__);
return SF_FAILURE;
}
else
{
sf_customer_param_set_down(pSfCustomerPara);
share_mem_dt(pSfCustomerPara);
SF_MESSAGE_BUF_S stMessageBuf = {0};
stMessageBuf.arg1 = SF_PARA_CMD_UPDATE;
stMessageBuf.cmdId = CMD_PARA;
if(to)//to cardv
{
sf_com_message_send_to_cardv(&stMessageBuf);
}
else //to sf app
{
sf_com_message_send_to_app(&stMessageBuf);
}
printf("[%s:%d] creat share mem succeed ID:%d!!!\n", __FUNCTION__, __LINE__, sf_sharMemId);
return SF_SUCCESS;
}
}
return SF_FAILURE;
}
SINT32 sf_share_mem_file_deinit(void) SINT32 sf_share_mem_file_deinit(void)
{ {
return sf_share_mem_deinit(sf_sharMemfileId); return sf_share_mem_deinit(sf_sharMemfileId);

View File

@ -29,7 +29,6 @@ SINT32 sf_usb_IsInsert(void)
} }
#ifdef __cplusplus #ifdef __cplusplus
#if __cplusplus #if __cplusplus
extern "C" { extern "C" {

View File

@ -191,7 +191,8 @@ SINT32 sf_led_flash_stop(SF_LED_GROUD_E enLedGroupType)
return SF_SUCCESS; return SF_SUCCESS;
} }
SINT32 sf_led_event_process(SINT32 arg1,SINT32 arg2,SINT32 arg3) SINT32 sf_led_event_process(SINT32 arg1,SINT32 arg2,SINT32 arg3)
{ {
return SF_SUCCESS;
SINT32 eventID = 0; SINT32 eventID = 0;
// MLOGI("ARG1:%d,ARG2:%d,ARG3:%d\n",arg1,arg2,arg3); // MLOGI("ARG1:%d,ARG2:%d,ARG3:%d\n",arg1,arg2,arg3);
sf_led_flash_stop(arg2); sf_led_flash_stop(arg2);
@ -230,8 +231,569 @@ SINT32 sf_led_event_process(SINT32 arg1,SINT32 arg2,SINT32 arg3)
return SF_SUCCESS; return SF_SUCCESS;
} }
#if 1
pthread_t ledTskId;
//static BOOL isIrLedOn = FALSE;
static BOOL isGoToPir = FALSE;
static BOOL isUsbIn = FALSE;
#if HW_S530
pthread_t ledRunningTskId;
static BOOL isRunningLedOn = FALSE;
static UINT8 FormatSdFlag = 0;
#endif
LedInfo_t LedInfo[SF_LED_ALL] = {
/* ledId, ledstate, times, gpioNum */
#if HW_S530
{SF_LED_STATUS_R, SF_LED_STATE_OFF, 0, SF_HAL_LED_STATUS_R},
{SF_LED_STATUS_G, SF_LED_STATE_OFF, 0, SF_HAL_LED_STATUS_G},
{SF_LED_SD_G, SF_LED_STATE_OFF, 0, SF_HAL_LED_SD_G},
{SF_LED_SD_R, SF_LED_STATE_OFF, 0, SF_HAL_LED_SD_R},
{SF_LED_WIFI, SF_LED_STATE_OFF, 0, SF_HAL_LED_WIFI},
{SF_LED_BAT1, SF_LED_STATE_OFF, 0, SF_HAL_LED_BAT1},
{SF_LED_BAT2, SF_LED_STATE_OFF, 0, SF_HAL_LED_BAT2},
{SF_LED_BAT3, SF_LED_STATE_OFF, 0, SF_HAL_LED_BAT3},
{SF_LED_BAT4, SF_LED_STATE_OFF, 0, SF_HAL_LED_BAT4},
{SF_LED_SIG1_R, SF_LED_STATE_OFF, 0, SF_HAL_LED_SIG1_R},
{SF_LED_SIG1_G, SF_LED_STATE_OFF, 0, SF_HAL_LED_SIG1_G},
{SF_LED_SIG2, SF_LED_STATE_OFF, 0, SF_HAL_LED_SIG_2},
{SF_LED_SIG3, SF_LED_STATE_OFF, 0, SF_HAL_LED_SIG_3},
{SF_LED_SIG4, SF_LED_STATE_OFF, 0, SF_HAL_LED_SIG_4},
#endif
{SF_LED_BUSY, SF_LED_STATE_OFF, 0, SF_HAL_LED_BUSY},
};
//ID FLG_ID_SF_LED = 0;
// Flag
//#define FLG_SF_LED_IDLE FLGPTN_BIT(0)
//#define FLG_SF_LED FLGPTN_BIT(1)
//#define FLG_SF_LED_ALL 0xFFFFFFFF
static void sf_led_on(LedId_t ledId)
{
//gpio_setPin(LedInfo[ledId].gpioNum);
//printf("[%s:%d] gpioNum:%d ledId:%d\n", __FUNCTION__, __LINE__,LedInfo[ledId].gpioNum,ledId);
sf_hal_gpio_set(LedInfo[ledId].gpioNum, SF_LED_STATE_ON);
}
static void sf_led_off(LedId_t ledId)
{
//gpio_clearPin(LedInfo[ledId].gpioNum);
//printf("[%s:%d] gpioNum:%d ledId:%d\n", __FUNCTION__, __LINE__,LedInfo[ledId].gpioNum,ledId);
sf_hal_gpio_set(LedInfo[ledId].gpioNum, SF_LED_STATE_OFF);
}
#if HW_S530
void sf_set_runningLed(BOOL status)
{
isRunningLedOn = status;
}
void* sf_runningLed_thread(void *arg)
{
UINT8 run = 0;
UINT8 time = 0;
while(1)
{
if(isRunningLedOn)
{
time++;
if(time == 50)
{
time = 0;
switch(run)
{
case 0:
sf_led_set(SF_LED_SIG1_R, SF_LED_STATE_OFF);
sf_led_set(SF_LED_SIG1_G, SF_LED_STATE_OFF);
sf_led_set(SF_LED_SIG2, SF_LED_STATE_OFF);
sf_led_set(SF_LED_SIG3, SF_LED_STATE_OFF);
sf_led_set(SF_LED_SIG4, SF_LED_STATE_OFF);
run++;
break;
case 1:
sf_led_set(SF_LED_SIG1_R, SF_LED_STATE_OFF);
sf_led_set(SF_LED_SIG1_G, SF_LED_STATE_ON);
sf_led_set(SF_LED_SIG2, SF_LED_STATE_OFF);
sf_led_set(SF_LED_SIG3, SF_LED_STATE_OFF);
sf_led_set(SF_LED_SIG4, SF_LED_STATE_OFF);
run++;
break;
case 2:
sf_led_set(SF_LED_SIG1_R, SF_LED_STATE_OFF);
sf_led_set(SF_LED_SIG1_G, SF_LED_STATE_ON);
sf_led_set(SF_LED_SIG2, SF_LED_STATE_ON);
sf_led_set(SF_LED_SIG3, SF_LED_STATE_OFF);
sf_led_set(SF_LED_SIG4, SF_LED_STATE_OFF);
run++;
break;
case 3:
sf_led_set(SF_LED_SIG1_R, SF_LED_STATE_OFF);
sf_led_set(SF_LED_SIG1_G, SF_LED_STATE_ON);
sf_led_set(SF_LED_SIG2, SF_LED_STATE_ON);
sf_led_set(SF_LED_SIG3, SF_LED_STATE_ON);
sf_led_set(SF_LED_SIG4, SF_LED_STATE_OFF);
run++;
break;
case 4:
sf_led_set(SF_LED_SIG1_R, SF_LED_STATE_OFF);
sf_led_set(SF_LED_SIG1_G, SF_LED_STATE_ON);
sf_led_set(SF_LED_SIG2, SF_LED_STATE_ON);
sf_led_set(SF_LED_SIG3, SF_LED_STATE_ON);
sf_led_set(SF_LED_SIG4, SF_LED_STATE_ON);
run = 0;
break;
}
}
}
else
{
run = 0;
time = 0;
}
sf_sleep_ms(10);
}
printf("[%s:%d] e \n", __FUNCTION__, __LINE__);
}
#endif
void* sf_led_thread(void *arg)
{
UINT8 i = 0;
//FLGPTN FlgPtn;
printf("[%s:%d] s\n", __FUNCTION__, __LINE__);
while(1)
{
for(i = 0; i < SF_LED_ALL; i++)
{
if(isUsbIn)
{
if((i == SF_LED_BUSY)/* || (i == SF_LED_STATUS_G)*/)
{
sf_led_on(LedInfo[i].ledId);
}
else
{
sf_led_off(LedInfo[i].ledId);
}
}
else if(isGoToPir)
{
if(i < SF_LED_BUSY)
{
sf_led_off(LedInfo[i].ledId);
}
else
{
if(LedInfo[i].times == 0)
{
sf_led_off(LedInfo[i].ledId);
}
else if(LedInfo[i].times == 25) //50*10ms
{
sf_led_on(LedInfo[i].ledId);
}
else if(LedInfo[i].times == 50) //100*10ms
{
sf_led_off(LedInfo[i].ledId);
LedInfo[i].times = 0;
}
LedInfo[i].times++;
}
}
else if(LedInfo[i].ledstate == SF_LED_STATE_OFF)
{
sf_led_off(LedInfo[i].ledId);
}
else if(LedInfo[i].ledstate == SF_LED_STATE_ON)
{
sf_led_on(LedInfo[i].ledId);
}
#if HW_S530
else if(LedInfo[i].ledstate == SF_LED_STATE_SLOW_FLASHING)
{
if(LedInfo[i].times == 0)
{
sf_led_on(LedInfo[i].ledId);
}
else if(LedInfo[i].times == 50) //50*10ms
{
sf_led_off(LedInfo[i].ledId);
}
else if(LedInfo[i].times == 100) //100*10ms
{
sf_led_on(LedInfo[i].ledId);
LedInfo[i].times = 0;
}
LedInfo[i].times++;
}
else if(LedInfo[i].ledstate == SF_LED_STATE_FLASHING)
{
if(LedInfo[i].times == 0)
{
sf_led_on(LedInfo[i].ledId);
}
else if(LedInfo[i].times == 25) //25*10ms
{
sf_led_off(LedInfo[i].ledId);
}
else if(LedInfo[i].times == 50) //50*10ms
{
sf_led_on(LedInfo[i].ledId);
LedInfo[i].times = 0;
}
LedInfo[i].times++;
}
#endif
}
sf_sleep_ms(10);
}
printf("[%s:%d] e \n", __FUNCTION__, __LINE__);
}
UINT8 sf_led_set(LedId_t ledId, Ledstate_t ledstate)
{
UINT8 i = 0;
if(ledId == SF_LED_ALL)
{
/*printf("led id:ALL, state:%d\n", ledstate);*/
for(i = 0; i < SF_LED_ALL; i++)
{
LedInfo[i].ledstate = ledstate;
LedInfo[i].times = 0;
}
return SUCCESS;
}
else if(ledId < SF_LED_ALL)
{
/*printf("led id:%d, state:%d\n", ledId,ledstate);*/
LedInfo[ledId].ledstate = ledstate;
LedInfo[ledId].times = 0;
return SUCCESS;
}
else
{
return FAIL;
}
}
Ledstate_t sf_led_get(LedId_t ledId)
{
return LedInfo[ledId].ledstate;
}
void sf_led_init(void)
{
UINT8 i = 0;
static UINT8 dofirst = 1;
printf("[%s:%d] s\n", __FUNCTION__, __LINE__);
if((!dofirst) || (SF_MCU_STARTUP_ONKEY != sf_poweron_type_get()))
return;
dofirst = 0;
/*gpio init*/
for(i = 0; i < SF_LED_ALL; i++)
{
//gpio_setDir(LedInfo[i].gpioNum, GPIO_DIR_OUTPUT);
//gpio_setPin(LedInfo[i].gpioNum);
sf_hal_gpio_init(LedInfo[i].gpioNum,GPIO_DIR_OUT);
//gpio_direction_output(LedInfo[i].gpioNum, GPIO_DIR_OUTPUT);
sf_hal_gpio_set(LedInfo[i].gpioNum, LedInfo[i].ledstate);
}
//vos_flag_create(&FLG_ID_SF_LED, NULL, "FLG_ID_SF_LED");
/*thread creat*/
pthread_create(&ledTskId, NULL, sf_led_thread, NULL);
#if HW_S530
/*thread creat*/
pthread_create(&ledRunningTskId, NULL, sf_runningLed_thread, NULL);
#endif
printf("[%s:%d] e SF_LED_ALL:%d\n", __FUNCTION__, __LINE__,SF_LED_ALL);
}
void sf_sys_status_led_set(LedSysState_t ledSysStateId)
{
if((SF_MCU_STARTUP_ONKEY != sf_poweron_type_get()))
return;
//if((ledSysStateId != SF_LED_SYS_STATE_PIR_DETECT) && (ledSysStateId != SF_LED_SYS_STATE_PIR_NOT_DETECT))
printf("SYS LED SET %d\n", ledSysStateId);
switch(ledSysStateId)
{
#if HW_S530
case SF_LED_SYS_STATE_ERROR:
sf_led_set(SF_LED_STATUS_G, SF_LED_STATE_OFF);
sf_led_set(SF_LED_STATUS_R, SF_LED_STATE_FLASHING);
break;
case SF_LED_SYS_STATE_NORMAL:
sf_led_set(SF_LED_STATUS_G, SF_LED_STATE_ON);
sf_led_set(SF_LED_STATUS_R, SF_LED_STATE_OFF);
break;
case SF_LED_SYS_STATE_UPDATE:
sf_led_set(SF_LED_STATUS_G, SF_LED_STATE_FLASHING);
sf_led_set(SF_LED_STATUS_R, SF_LED_STATE_OFF);
break;
case SF_LED_SYS_STATE_SENDING:
sf_led_set(SF_LED_STATUS_G, SF_LED_STATE_SLOW_FLASHING);
sf_led_set(SF_LED_STATUS_R, SF_LED_STATE_OFF);
break;
case SF_LED_SYS_STATE_SEND_FAIL:
sf_led_set(SF_LED_STATUS_G, SF_LED_STATE_OFF);
sf_led_set(SF_LED_STATUS_R, SF_LED_STATE_ON);
break;
case SF_LED_SYS_STATE_SEND_SUCCESS:
sf_led_set(SF_LED_STATUS_G, SF_LED_STATE_ON);
sf_led_set(SF_LED_STATUS_R, SF_LED_STATE_OFF);
break;
case SF_LED_SYS_STATE_SD_NORMAL:
sf_led_set(SF_LED_SD_G, SF_LED_STATE_ON);
sf_led_set(SF_LED_SD_R, SF_LED_STATE_OFF);
break;
case SF_LED_SYS_STATE_SD_ERROR:
sf_led_set(SF_LED_SD_G, SF_LED_STATE_OFF);
sf_led_set(SF_LED_SD_R, SF_LED_STATE_ON);
break;
case SF_LED_SYS_STATE_SD_FULL:
sf_led_set(SF_LED_SD_G, SF_LED_STATE_ON);
sf_led_set(SF_LED_SD_R, SF_LED_STATE_ON);
break;
case SF_LED_SYS_STATE_SD_FORMAT_START:
FormatSdFlag = 1;
sf_led_set(SF_LED_BUSY, SF_LED_STATE_OFF);
sf_set_runningLed(0);
break;
case SF_LED_SYS_STATE_SD_FORMAT_SUCCESS:
FormatSdFlag = 2;
break;
case SF_LED_SYS_STATE_SD_FORMAT_FAIL:
FormatSdFlag = 3;
break;
case SF_LED_SYS_STATE_SD_FORMAT_EXIT:
FormatSdFlag = 0;
sf_led_set(SF_LED_BUSY, SF_LED_STATE_ON);
//sf_set_runningLed(0);
break;
case SF_LED_SYS_STATE_WIFI_DISCONNECT:
sf_led_set(SF_LED_WIFI, SF_LED_STATE_SLOW_FLASHING);
break;
case SF_LED_SYS_STATE_WIFI_CONNECTED:
sf_led_set(SF_LED_WIFI, SF_LED_STATE_ON);
break;
case SF_LED_SYS_STATE_BAT_0:
sf_led_set(SF_LED_BAT1, SF_LED_STATE_FLASHING);
sf_led_set(SF_LED_BAT2, SF_LED_STATE_OFF);
sf_led_set(SF_LED_BAT3, SF_LED_STATE_OFF);
sf_led_set(SF_LED_BAT4, SF_LED_STATE_OFF);
break;
case SF_LED_SYS_STATE_BAT_1:
sf_led_set(SF_LED_BAT1, SF_LED_STATE_ON);
sf_led_set(SF_LED_BAT2, SF_LED_STATE_OFF);
sf_led_set(SF_LED_BAT3, SF_LED_STATE_OFF);
sf_led_set(SF_LED_BAT4, SF_LED_STATE_OFF);
break;
case SF_LED_SYS_STATE_BAT_2:
sf_led_set(SF_LED_BAT1, SF_LED_STATE_ON);
sf_led_set(SF_LED_BAT2, SF_LED_STATE_ON);
sf_led_set(SF_LED_BAT3, SF_LED_STATE_OFF);
sf_led_set(SF_LED_BAT4, SF_LED_STATE_OFF);
break;
case SF_LED_SYS_STATE_BAT_3:
sf_led_set(SF_LED_BAT1, SF_LED_STATE_ON);
sf_led_set(SF_LED_BAT2, SF_LED_STATE_ON);
sf_led_set(SF_LED_BAT3, SF_LED_STATE_ON);
sf_led_set(SF_LED_BAT4, SF_LED_STATE_OFF);
break;
case SF_LED_SYS_STATE_BAT_4:
sf_led_set(SF_LED_BAT1, SF_LED_STATE_ON);
sf_led_set(SF_LED_BAT2, SF_LED_STATE_ON);
sf_led_set(SF_LED_BAT3, SF_LED_STATE_ON);
sf_led_set(SF_LED_BAT4, SF_LED_STATE_ON);
break;
case SF_LED_SYS_STATE_GPRS_NO_SIGNAL:
sf_set_runningLed(0);
sf_led_set(SF_LED_SIG1_R, SF_LED_STATE_ON);
sf_led_set(SF_LED_SIG1_G, SF_LED_STATE_OFF);
sf_led_set(SF_LED_SIG2, SF_LED_STATE_OFF);
sf_led_set(SF_LED_SIG3, SF_LED_STATE_OFF);
sf_led_set(SF_LED_SIG4, SF_LED_STATE_OFF);
break;
case SF_LED_SYS_STATE_GPRS_SIGNAL_0:
sf_set_runningLed(0);
sf_led_set(SF_LED_SIG1_R, SF_LED_STATE_OFF);
sf_led_set(SF_LED_SIG1_G, SF_LED_STATE_OFF);
sf_led_set(SF_LED_SIG2, SF_LED_STATE_OFF);
sf_led_set(SF_LED_SIG3, SF_LED_STATE_OFF);
sf_led_set(SF_LED_SIG4, SF_LED_STATE_OFF);
break;
case SF_LED_SYS_STATE_GPRS_SIGNAL_1:
sf_set_runningLed(0);
sf_led_set(SF_LED_SIG1_R, SF_LED_STATE_OFF);
sf_led_set(SF_LED_SIG1_G, SF_LED_STATE_ON);
sf_led_set(SF_LED_SIG2, SF_LED_STATE_OFF);
sf_led_set(SF_LED_SIG3, SF_LED_STATE_OFF);
sf_led_set(SF_LED_SIG4, SF_LED_STATE_OFF);
break;
case SF_LED_SYS_STATE_GPRS_SIGNAL_2:
sf_set_runningLed(0);
sf_led_set(SF_LED_SIG1_R, SF_LED_STATE_OFF);
sf_led_set(SF_LED_SIG1_G, SF_LED_STATE_ON);
sf_led_set(SF_LED_SIG2, SF_LED_STATE_ON);
sf_led_set(SF_LED_SIG3, SF_LED_STATE_OFF);
sf_led_set(SF_LED_SIG4, SF_LED_STATE_OFF);
break;
case SF_LED_SYS_STATE_GPRS_SIGNAL_3:
sf_set_runningLed(0);
sf_led_set(SF_LED_SIG1_R, SF_LED_STATE_OFF);
sf_led_set(SF_LED_SIG1_G, SF_LED_STATE_ON);
sf_led_set(SF_LED_SIG2, SF_LED_STATE_ON);
sf_led_set(SF_LED_SIG3, SF_LED_STATE_ON);
sf_led_set(SF_LED_SIG4, SF_LED_STATE_OFF);
break;
case SF_LED_SYS_STATE_GPRS_SIGNAL_4:
sf_set_runningLed(0);
sf_led_set(SF_LED_SIG1_R, SF_LED_STATE_OFF);
sf_led_set(SF_LED_SIG1_G, SF_LED_STATE_ON);
sf_led_set(SF_LED_SIG2, SF_LED_STATE_ON);
sf_led_set(SF_LED_SIG3, SF_LED_STATE_ON);
sf_led_set(SF_LED_SIG4, SF_LED_STATE_ON);
break;
case SF_LED_SYS_STATE_GPRS_SEARCH:
sf_set_runningLed(1);
break;
case SF_LED_SYS_STATE_SIM_ERROR:
sf_set_runningLed(0);
sf_led_set(SF_LED_SIG1_R, SF_LED_STATE_FLASHING);
sf_led_set(SF_LED_SIG1_G, SF_LED_STATE_OFF);
sf_led_set(SF_LED_SIG2, SF_LED_STATE_OFF);
sf_led_set(SF_LED_SIG3, SF_LED_STATE_OFF);
sf_led_set(SF_LED_SIG4, SF_LED_STATE_OFF);
break;
case SF_LED_SYS_STATE_SERVER_FAIL:
sf_set_runningLed(0);
sf_led_set(SF_LED_SIG1_R, SF_LED_STATE_SLOW_FLASHING);
sf_led_set(SF_LED_SIG1_G, SF_LED_STATE_OFF);
sf_led_set(SF_LED_SIG2, SF_LED_STATE_OFF);
sf_led_set(SF_LED_SIG3, SF_LED_STATE_OFF);
sf_led_set(SF_LED_SIG4, SF_LED_STATE_OFF);
break;
case SF_LED_SYS_STATE_DEBUG_ON:
sf_led_set(SF_LED_SD_G, SF_LED_STATE_FLASHING);
sf_led_set(SF_LED_SD_R, SF_LED_STATE_OFF);
break;
case SF_LED_SYS_STATE_DEBUG_OFF:
sf_led_set(SF_LED_STATUS_G, SF_LED_STATE_ON);
sf_led_set(SF_LED_STATUS_R, SF_LED_STATE_ON);
break;
case SF_LED_SYS_STATE_RESET:
sf_set_runningLed(0);
sf_led_set(SF_LED_ALL, SF_LED_STATE_ON);
break;
case SF_LED_SYS_STATE_USB_IN:
sf_set_runningLed(0);
sf_led_set(SF_LED_ALL, SF_LED_STATE_OFF);
sf_led_set(SF_LED_BUSY, SF_LED_STATE_ON);
sf_led_set(SF_LED_STATUS_G, SF_LED_STATE_ON);
isUsbIn = TRUE;
break;
#endif
//#if HW_S510
// case SF_LED_SYS_STATE_UPDATE:
// sf_led_set(SF_LED_BUSY, SF_LED_STATE_SLOW_FLASHING);
// break;
//#endif
case SF_LED_SYS_STATE_GOING_TO_PIR:
isGoToPir = TRUE;
sf_led_set(SF_LED_BUSY, SF_LED_STATE_OFF);
break;
case SF_LED_SYS_STATE_EXIT_GO_TO_PIR:
isGoToPir = FALSE;
sf_led_set(SF_LED_BUSY, SF_LED_STATE_ON);
break;
case SF_LED_SYS_STATE_POWER_OFF:
#if HW_S530
sf_set_runningLed(0);
#endif
sf_led_set(SF_LED_ALL, SF_LED_STATE_OFF);
isGoToPir = FALSE;
break;
case SF_LED_SYS_STATE_PIR_DETECT:
sf_led_set(SF_LED_BUSY, SF_LED_STATE_OFF);
break;
case SF_LED_SYS_STATE_PIR_NOT_DETECT:
sf_led_set(SF_LED_BUSY, SF_LED_STATE_ON);
break;
default:
break;
}
}
#endif
#ifdef __cplusplus #ifdef __cplusplus
#if __cplusplus #if __cplusplus

View File

@ -28,6 +28,7 @@
extern "C" { extern "C" {
#endif #endif
#endif #endif
#define GPIO_USB_MUX_S P_GPIO_2 //USB_MUX_S
SINT32 sf_hal_gpio_init(U32 gpio_num, int dir) SINT32 sf_hal_gpio_init(U32 gpio_num, int dir)
{ {
@ -147,6 +148,19 @@ SINT32 sf_hal_gpio_deinit(U32 gpioNum)
return SF_SUCCESS; return SF_SUCCESS;
} }
void sf_usb_mux_s(UINT32 cnt)
{
static UINT8 cntflag = 1;
printf("[%s:%d] s\n", __FUNCTION__, __LINE__);
if(1 == cntflag)
{
cntflag = 0;
gpio_direction_output(GPIO_USB_MUX_S, 1);
}
gpio_set_value(GPIO_USB_MUX_S, cnt);
printf("[%s:%d] e cnt:%d\n", __FUNCTION__, __LINE__,cnt);
}
#ifdef __cplusplus #ifdef __cplusplus
#if __cplusplus #if __cplusplus
} }

View File

@ -29,17 +29,22 @@
extern "C" { extern "C" {
#endif #endif
#endif #endif
#include "sf_log.h"
#include "sf_message_queue.h"
#include "sf_param_common.h"
#include "sf_storeMng.h"
#if 1 #if 1
#include <sf_type.h>
#include <libfdt.h> #include <libfdt.h>
#include <rtosfdt.h> #include <rtosfdt.h>
#include <compiler.h> #include <compiler.h>
#include <MemCheck.h> #include <MemCheck.h>
#include "UIInfo/UIInfo.h" #include "UIInfo/UIInfo.h"
//#include "UIInfo/UICfgDefault.h"
//#include "DCF.h"
#include "sf_log.h"
#include "sf_message_queue.h"
#include "sf_param_common.h"
#include "sf_storeMng.h"
#define MAKE_FDT_PARTITION_PATH(x) "/nor/partition_"#x #define MAKE_FDT_PARTITION_PATH(x) "/nor/partition_"#x
@ -48,11 +53,11 @@ extern "C" {
#define XSTR(X) #X #define XSTR(X) #X
#define STR(X) XSTR(X) #define STR(X) XSTR(X)
UIMenuStoreInfo currentInfo = {0}; //#NT#Init the array to zero. extern UIMenuStoreInfo currentInfo; //#NT#Init the array to zero.
UIMenuStoreInfo origInfo = {0}; /* backup */ extern UIMenuStoreInfo origInfo; /* backup */
BOOL bSysReady = 0; //BOOL bSysReady = 0;
BOOL bAutoSystemReset = FALSE; //BOOL bAutoSystemReset = FALSE;
UINT8 isCapRunning = 0; UINT8 isCapRunning = 0;
static SF_STARTUP_TYPE_E StartMode = SF_MCU_STARTUP_ONKEY; static SF_STARTUP_TYPE_E StartMode = SF_MCU_STARTUP_ONKEY;
@ -189,6 +194,7 @@ static int find_sys_mtd_device(char* result_buf, const UINT32 result_buf_size)
return ret; return ret;
} }
int sf_customer_param_load(void) int sf_customer_param_load(void)
{ {
unsigned long long partition_ofs= 0, partition_size = 0; unsigned long long partition_ofs= 0, partition_size = 0;
@ -199,10 +205,10 @@ int sf_customer_param_load(void)
void *tmpInfo = NULL; void *tmpInfo = NULL;
size_t read_size; size_t read_size;
sectorCnt = (sizeof(currentInfo) / _EMBMEM_BLK_SIZE_) + (sizeof(currentInfo) % _EMBMEM_BLK_SIZE_)? 1 : 0; sectorCnt = (sizeof(UIMenuStoreInfo) / _EMBMEM_BLK_SIZE_) + (sizeof(UIMenuStoreInfo) % _EMBMEM_BLK_SIZE_)? 1 : 0;
ret = sf_UIInfo_GetStrgPartitionInfo(&partition_ofs, &partition_size, PARTITION_PATH_SYS); ret = sf_UIInfo_GetStrgPartitionInfo(&partition_ofs, &partition_size, PARTITION_PATH_SYS);
if ((ret == 0) && (sizeof(currentInfo) < partition_size)) { if ((ret == 0) && (sizeof(UIMenuStoreInfo) < partition_size)) {
char sys_mtd_dev_path[128] = {'\0'}; char sys_mtd_dev_path[128] = {'\0'};
ret = find_sys_mtd_device(sys_mtd_dev_path, sizeof(sys_mtd_dev_path)); ret = find_sys_mtd_device(sys_mtd_dev_path, sizeof(sys_mtd_dev_path));
@ -233,21 +239,21 @@ int sf_customer_param_load(void)
goto EXIT; goto EXIT;
} }
if(((UIMenuStoreInfo*)tmpInfo)->uhInfoSize == sizeof(currentInfo)){ if(((UIMenuStoreInfo*)tmpInfo)->uhInfoSize == sizeof(UIMenuStoreInfo)){
memcpy(&currentInfo, tmpInfo, sizeof(currentInfo)); memcpy(&currentInfo, tmpInfo, sizeof(UIMenuStoreInfo));
} }
else{ else{
printf("menu info size loaded from flash seems incorrect(old:%lu new:%lu), reset menu info\n", printf("menu info size loaded from flash seems incorrect(old:%lu new:%lu), reset menu info\n",
((UIMenuStoreInfo*)tmpInfo)->uhInfoSize, ((UIMenuStoreInfo*)tmpInfo)->uhInfoSize,
sizeof(currentInfo) sizeof(UIMenuStoreInfo)
); );
//SysResetFlag(); //SysResetFlag();
currentInfo.uhInfoSize = sizeof(currentInfo); currentInfo.uhInfoSize = sizeof(UIMenuStoreInfo);
} }
UINT32 sum = MemCheck_CalcCheckSum16Bit((UINT32)tmpInfo, sizeof(currentInfo)); UINT32 sum = MemCheck_CalcCheckSum16Bit((UINT32)tmpInfo, sizeof(UIMenuStoreInfo));
printf("**************size = %lx / mov size = %u / sum = %lx **************\n", printf("**************size = %lx / CamMode = %u / sum = %lx **************\n",
sizeof(currentInfo), sizeof(UIMenuStoreInfo),
//((UIMenuStoreInfo*)tmpInfo)->UIParameter[FL_MOVIE_SIZE], //((UIMenuStoreInfo*)tmpInfo)->UIParameter[FL_MOVIE_SIZE],
((UIMenuStoreInfo*)tmpInfo)->UIParameter[CamMode], ((UIMenuStoreInfo*)tmpInfo)->UIParameter[CamMode],
sum); sum);
@ -257,7 +263,7 @@ EXIT:
if(ret){ if(ret){
//SysResetFlag(); //SysResetFlag();
currentInfo.uhInfoSize = sizeof(currentInfo); currentInfo.uhInfoSize = sizeof(UIMenuStoreInfo);
} }
//SysCheckFlag(); //SysCheckFlag();
origInfo = currentInfo; origInfo = currentInfo;
@ -274,21 +280,509 @@ EXIT:
return ret; return ret;
} }
void SysSetFlag(UINT32 uiFlag, UINT32 uiValue) void sf_sys_set_flag(UINT32 uiFlag, UINT32 uiValue)
{ {
currentInfo.UIParameter[uiFlag] = uiValue; currentInfo.UIParameter[uiFlag] = uiValue;
} }
UINT32 SysGetFlag(UINT32 uiFlag) UINT32 sf_sys_get_flag(UINT32 uiFlag)
{ {
return (currentInfo.UIParameter[uiFlag]); return (currentInfo.UIParameter[uiFlag]);
} }
UIMenuStoreInfo* sf_ui_para_get(void) UIMenuStoreInfo* sf_app_ui_para_get(void)
{ {
return (UIMenuStoreInfo*)&currentInfo; return (UIMenuStoreInfo*)&currentInfo;
} }
#if 0
static void SysLimitFlag(UINT32 uiFlag, UINT32 uiMinId, UINT32 uiMaxId, UINT32 uiDefaultId)
{
UINT32 uiValue = sf_sys_get_flag(uiFlag);
if ((uiValue < uiMinId) || (uiValue > uiMaxId - 1)) {
uiValue = uiDefaultId;
}
sf_sys_set_flag(uiFlag, uiValue);
}
void sf_SysCheckFlag(void)
{
// Check and limit system flag value
// Photo
SysLimitFlag(FL_PHOTO_SIZE, 0, PHOTO_SIZE_ID_MAX, DEFAULT_PHOTO_SIZE);
SysLimitFlag(FL_SCENE, 0, SCENE_ID_MAX, DEFAULT_SCENE);
SysLimitFlag(FL_QUALITY, 0, QUALITY_ID_MAX, DEFAULT_PHOTO_QUALITY);
SysLimitFlag(FL_SELFTIMER, 0, SELFTIMER_ID_MAX, DEFAULT_SELFTIMER);
SysLimitFlag(FL_ANTISHAKE, 0, ANTISHAKE_ID_MAX, DEFAULT_ANTISHAKING);
SysLimitFlag(FL_FD, 0, FD_ID_MAX, DEFAULT_FD);
SysLimitFlag(FL_WB, 0, WB_ID_MAX, DEFAULT_WB);
SysLimitFlag(FL_COLOR_EFFECT, 0, COLOR_EFFECT_ID_MAX, DEFAULT_PHOTO_COLOR);
SysLimitFlag(FL_CONTINUE_SHOT, 0, CONTINUE_SHOT_SETTING_MAX, DEFAULT_CONTINUE_SHOT);
SysLimitFlag(FL_SHARPNESS, 0, SHARPNESS_ID_MAX, DEFAULT_SHARPNESS);
SysLimitFlag(FL_EV, 0, EV_SETTING_MAX, DEFAULT_EV);
SysLimitFlag(FL_ISO, 0, ISO_ID_MAX, DEFAULT_ISO);
SysLimitFlag(FL_METERING, 0, METERING_ID_MAX, DEFAULT_METERING);
// Movie
SysLimitFlag(FL_MOVIE_SIZE, 0, MOVIE_SIZE_ID_MAX, DEFAULT_MOVIE_SIZE);
SysLimitFlag(FL_MOVIE_CYCLIC_REC, 0, MOVIE_CYCLICREC_ID_MAX, DEFAULT_MOVIE_CYCLICREC);
SysLimitFlag(FL_MOVIE_MOTION_DET, 0, MOVIE_MOTIONDET_ID_MAX, DEFAULT_MOVIE_MOTION_DET);
SysLimitFlag(FL_MOVIE_AUDIO, 0, MOVIE_AUDIO_ID_MAX, DEFAULT_MOVIE_AUDIO);
SysLimitFlag(FL_MOVIE_DATEIMPRINT, 0, MOVIE_DATEIMPRINT_ID_MAX, DEFAULT_MOVIE_DATEIMPRINT);
SysLimitFlag(FL_MOVIE_HDR, 0, MOVIE_HDR_ID_MAX, DEFAULT_MOVIE_HDR);
SysLimitFlag(FL_MOVIE_WDR, 0, MOVIE_WDR_ID_MAX, DEFAULT_MOVIE_WDR);
SysLimitFlag(FL_MOVIE_DEFOG, 0, MOVIE_DEFOG_ID_MAX, DEFAULT_MOVIE_DEFOG);
SysLimitFlag(FL_MOVIE_SENSOR_ROTATE, 0, SEN_ROTATE_MAX, DEFAULT_SENSOR_ROTATE);
SysLimitFlag(FL_MovieAudioRecIndex, 0, MOVIE_VOL_MAX, DEFAULT_MOVIE_REC_VOLUME);
SysLimitFlag(FL_MovieAudioRec, 0, MOVIE_AUD_REC_ID_MAX, DEFAULT_MOVIE_REC_AUD);
//#NT#2016/06/14#Charlie Chang -begin
//#NT#support contrast, audio in, audio in sample rate, flip, movie quality set
SysLimitFlag(FL_MOVIE_CONTRAST, 0, MOVIE_CONTRAST_ID_MAX, DEFAULT_MOVIE_CONTRAST);
SysLimitFlag(FL_MOVIE_AUDIOIN, 0, MOVIE_AUDIOIN_ID_MAX, DEFAULT_MOVIE_AUDIOIN);
SysLimitFlag(FL_MOVIE_AUDIOIN_SR, 0, MOVIE_AUDIOIN_SR_ID_MAX, DEFAULT_MOVIE_AUDIOIN_SR);
SysLimitFlag(FL_MOVIE_FLIP_MIRROR, 0, MOVIE_FLIP_MIRROR_ID_MAX, DEFAULT_MOVIE_FLIP_MIRROR);
SysLimitFlag(FL_MOVIE_QUALITY_SET, 0, MOVIE_QUALITY_SET_ID_MAX, DEFAULT_MOVIE_QUALITY_SET);
//#NT#2016/06/14#Charlie Chang -end
//#NT#2017/03/03#Jeah Yen -begin
//#NT# support sbs mode
SysLimitFlag(FL_MOVIE_SBS_MODE, 0, MOVIE_SBS_ID_MAX, DEFAULT_MOVIE_SBS_MODE);
//#NT#2017/03/03#Jeah Yen -end
SysLimitFlag(FL_MOVIE_CODEC, 0, MOVIE_CODEC_ID_MAX, DEFAULT_MOVIE_CODEC);
// Playback
SysLimitFlag(FL_PROTECT, 0, FILE_PROTECT_ID_MAX, DEFAULT_PROTECT);
SysLimitFlag(FL_MovieAudioPlayIndex, 0, MOVIE_AUDIO_VOL_SETTING_MAX, DEFAULT_MOVIE_PLAY_VOLUME);
// System
SysLimitFlag(FL_AudioPlayIndex, 0, AUDIO_VOL_MAX, DEFAULT_AUDIO_PLAY_VOLUME);
SysLimitFlag(FL_LANGUAGE, 0, LANG_ID_MAX, DEFAULT_LANGUAGE);
SysLimitFlag(FL_BEEP, 0, BEEP_ID_MAX, DEFAULT_BEEP);
SysLimitFlag(FL_AUTO_POWER_OFF, 0, POWEROFF_SETTING_MAX, DEFAULT_AUTO_POWER_OFF);
SysLimitFlag(FL_FREQUENCY, 0, FREQUENCY_ID_MAX, DEFAULT_FREQUENCY);
SysLimitFlag(FL_TV_MODE, 0, TV_MODE_ID_MAX, DEFAULT_TV_MODE);
SysLimitFlag(FL_DualDisp, 0, DUALDISP_SETTING_MAX, DEFAULT_DUALDISP);
SysLimitFlag(FL_DATE_FORMAT, 0, DATE_FORMAT_ID_MAX, DEFAULT_DATE_FORMAT);
SysLimitFlag(FL_OPENING_LOGO, 0, OPENING_LOGO_ID_MAX, DEFAULT_OPENING_LOGO);
SysLimitFlag(FL_LCD_DISPLAY, 0, DISPOUT_ID_MAX, DEFAULT_LCD_DISPLAY);
SysLimitFlag(FL_LCD_BRIGHTNESS, 0, LCDBRT_LVL_ID_MAX, DEFAULT_LCD_BRIGHTNESS);
SysLimitFlag(FL_MACRO, 0, MACRO_ID_MAX, DEFAULT_MACRO);
SysLimitFlag(FL_USB_MODE, 0, USB_MODE_ID_MAX, DEFAULT_USB_MODE);
// Sepcial flags
SysLimitFlag(FL_DCF_DIR_ID, MIN_DCF_DIR_NUM, MAX_DCF_DIR_NUM, MIN_DCF_DIR_NUM);
SysLimitFlag(FL_DCF_FILE_ID, MIN_DCF_FILE_NUM, MAX_DCF_FILE_NUM, MIN_DCF_FILE_NUM);
//Wi-Fi
SysLimitFlag(FL_WIFI_AUTO_RECORDING, 0, WIFI_AUTO_RECORDING_ID_MAX, DEFAULT_MOVIE_WIFI_AUTO_RECORDING_OPTION);
SysLimitFlag(FL_NetWorkMode, 0, NET_MODE_SETTING_MAX, DEFAULT_WIFI_MODE);
//#2023/02/10#Payton - begin
//=====================Sifar=============
SysLimitFlag(CamNameSwitch, 0, SF_CAMID_MAX, DEFAULT_SF_CAMID);
SysLimitFlag(CamMode, 0, SF_CAM_MODE_MAX, DEFAULT_BOOT_WORK_MODE);
SysLimitFlag(FlashLed, 0, SF_FLASH_LED_MAX, DEFAULT_FLASH_LED);
//ImgSize
SysLimitFlag(NightMode, 0, SF_NIGHT_MODE_MAX, DEFAULT_NIGHT_MODE);
//Multishot
//VideoSize
//VideoTimeMenu
SysLimitFlag(VideoLenth, VIDEO_LENTH_5, VIDEO_LENTH_MAX, DEFAULT_VIDEO_LENTH);
SysLimitFlag(PirSwitch, 0, SF_ON_OFF_MAX, DEFAULT_PIR_SWITCH);
SysLimitFlag(PirSensitivity, 0, SF_PIR_SENSITIVITY_MAX, DEFAULT_PIR_SENSITIVITY);
SysLimitFlag(PirDelaySwitch, 0, SF_ON_OFF_MAX, DEFAULT_PIR_DELAY_SWITCH);
SysLimitFlag(TimelapseSwitch, 0, SF_ON_OFF_MAX, DEFAULT_TIMELAPSE_SWITCH);
SysLimitFlag(WorkTime1Switch, 0, SF_ON_OFF_MAX, DEFAULT_WORKTIME_SWITCH);
SysLimitFlag(WorkTime2Switch, 0, SF_ON_OFF_MAX, DEFAULT_WORKTIME_SWITCH);
SysLimitFlag(SimAutoSwitch, 0, SF_SIM_SWITCH_MAX, DEFAULT_SIM_AUTO_SWITCH);
SysLimitFlag(SendMaxNum, 0, SF_SEND_MAX_NUM_MAX, DEFAULT_SEND_MAX_NUM);
SysLimitFlag(GprsMode, 0, SF_GPRS_MODE_MAX, DEFAULT_GPRS_MODE);
SysLimitFlag(DailyReportSwitch, 0, SF_ON_OFF_MAX, DEFAULT_DAILY_REPORT_SWITCH);
SysLimitFlag(ReDailyReport, 0, SF_ON_OFF_MAX, DEFAULT_REDAILY_REPORT_SWITCH);
SysLimitFlag(SimPinFlag, 0, SF_ON_OFF_MAX, DEFAULT_SIN_PIN_FLAG);
SysLimitFlag(GpsSwitch, 0, SF_ON_OFF_MAX, DEFAULT_GPS_SWITCH);
SysLimitFlag(Language, 0, LANG_ID_MAX, DEFAULT_LANGUAGE);
//////////////////
SysLimitFlag(DateStyle, 0, SF_DATE_TIME_MAX, DEFAULT_DATE_TIME);
SysLimitFlag(FL_DateFormatIndex, 0, SF_DATE_TIME_MAX, DEFAULT_DATE_TIME);
///////////////
SysLimitFlag(StampSwitch, 0, SF_ON_OFF_MAX, DEFAULT_STAMP_SWITCH);
SysLimitFlag(BatteryType, 0, SF_BATT_MAX, DEFAULT_BATTERY_TYPE);
SysLimitFlag(SdLoopSwitch, 0, SF_ON_OFF_MAX, DEFAULT_SD_LOOP_SWITCH);
SysLimitFlag(PwdSwitch, 0, SF_ON_OFF_MAX, DEFAULT_PWD_SWITCH);
SysLimitFlag(SendPhotoSwitch, 0, SF_ON_OFF_MAX, DEFAULT_SEND_PHOTO_SWITCH);
SysLimitFlag(SendVideoSwitch, 0, SF_ON_OFF_MAX, DEFAULT_SEND_VIDEO_SWITCH);
SysLimitFlag(SendPicSize, 0, SF_SEND_MAX, DEFAULT_SEND_PIC_SIZE);
SysLimitFlag(SendMultishotIndex1, 0, SF_ON_OFF_MAX, DEFAULT_SEND_MULTISHOT_INDEX1);
SysLimitFlag(SendMultishotIndex2, 0, SF_ON_OFF_MAX, DEFAULT_SEND_MULTISHOT_INDEX2);
SysLimitFlag(SendMultishotIndex3, 0, SF_ON_OFF_MAX, DEFAULT_SEND_MULTISHOT_INDEX3);
SysLimitFlag(SendMultishotIndex4, 0, SF_ON_OFF_MAX, DEFAULT_SEND_MULTISHOT_INDEX4);
SysLimitFlag(DateAuto, 0, SF_DATE_MAX, DEFAULT_DATE_AUTO);
//NTPZoneS,
//NTPZoneH,
//NTPZoneM,
SysLimitFlag(CamArmDiable, 0, SF_ON_OFF_MAX, DEFAULT_CAM_ARM_DIABLE);
SysLimitFlag(DebugMode, 0, SF_ON_OFF_MAX, DEFAULT_DEBUG_MODE);
SysLimitFlag(AutoOffSwitch, 0, SF_ON_OFF_MAX, DEFAULT_AUTO_OFF_SWITCH);
SysLimitFlag(AutoLogSwitch, 0, SF_ON_OFF_MAX, DEFAULT_AUTO_LOG_SWITCH);
SysLimitFlag(RawSwitch, 0, SF_ON_OFF_MAX, DEFAULT_RAW_SWITCH);
SysLimitFlag(GprsSwitch, 0, SF_ON_OFF_MAX, DEFAULT_GPRS_SWITCH);
SysLimitFlag(GpsSendFlag, 0, SF_ON_OFF_MAX, DEFAULT_GPS_SEND_FLAG);
SysLimitFlag(FristSendDailyAndGps, 0, SF_ON_OFF_MAX, DEFAULT_FRIST_SEND_DAILY_AND_GPS);
SysLimitFlag(NetGeneration, 0, SF_NET_MAX, DEFAULT_NET_GENERATION);
SysLimitFlag(NeedTimeSyncStartUp, 0, SF_NEED_TIME_SYNC_MAX, DEFAULT_NEED_TIME_SYNC);
SysLimitFlag(NetWorkNeedSearch, 0, SF_ON_OFF_MAX, DEFAULT_NET_WORK_NEED_SEARCH);
SysLimitFlag(QLogSwitch, 0, SF_ON_OFF_MAX, DEFAULT_QLOG_SWITCH);
SysLimitFlag(GpsAntiTheftSwitch, 0, SF_ON_OFF_MAX, DEFAULT_GPS_ANTI_THEFT_SWITCH);
SysLimitFlag(BatteryLogSwitch, 0, SF_ON_OFF_MAX, DEFAULT_BATTRERY_LOG_SWITCH);
SysLimitFlag(GpsNumber, 0, SF_ON_OFF_MAX, DEFAULT_GPS_NUMBER);
SysLimitFlag(TimeSend1Switch, 0, SF_ON_OFF_MAX, DEFAULT_GPS_NUMBER);
SysLimitFlag(TimeSend2Switch, 0, SF_ON_OFF_MAX, DEFAULT_GPS_NUMBER);
SysLimitFlag(TimeSend3Switch, 0, SF_ON_OFF_MAX, DEFAULT_GPS_NUMBER);
SysLimitFlag(TimeSend4Switch, 0, SF_ON_OFF_MAX, DEFAULT_GPS_NUMBER);
printf("%s:%d sifar para e\n", __FUNCTION__, __LINE__);
//#2023/02/10#Payton - end
}
void sf_SysSetFixedFlag(void)
{
// Fixed some system flags as system reset
// Photo
sf_sys_set_flag(FL_CONTINUE_SHOT, DEFAULT_CONTINUE_SHOT);
sf_sys_set_flag(FL_SELFTIMER, DEFAULT_SELFTIMER);
// Movie
// Playback
sf_sys_set_flag(FL_PROTECT, DEFAULT_PROTECT);
// System
sf_sys_set_flag(FL_LCD_DISPLAY, DEFAULT_LCD_DISPLAY);
sf_sys_set_flag(FL_LCD_BRIGHTNESS, DEFAULT_LCD_BRIGHTNESS);
sf_sys_set_flag(FL_MovieDisIndex, MOVIE_DIS_OFF);
sf_sys_set_flag(FL_COMMON_LOCAL, WIFI_OFF);
sf_sys_set_flag(FL_IsCloneRec, CLONE_REC_OFF);
}
void sf_SysResetFlag(void)
{
UIMenuStoreInfo *puiPara = sf_app_ui_para_get();
// Set system flag default value here
// Photo
sf_sys_set_flag(FL_PHOTO_SIZE, DEFAULT_PHOTO_SIZE);
sf_sys_set_flag(FL_QUALITY, DEFAULT_PHOTO_QUALITY);
sf_sys_set_flag(FL_COLOR_EFFECT, DEFAULT_PHOTO_COLOR);
sf_sys_set_flag(FL_SCENE, DEFAULT_SCENE);
sf_sys_set_flag(FL_EV, DEFAULT_EV);
sf_sys_set_flag(FL_ISO, DEFAULT_ISO);
sf_sys_set_flag(FL_WB, DEFAULT_WB);
sf_sys_set_flag(FL_METERING, DEFAULT_METERING);
sf_sys_set_flag(FL_SHARPNESS, DEFAULT_SHARPNESS);
sf_sys_set_flag(FL_SATURATION, DEFAULT_SATURATION);
sf_sys_set_flag(FL_FD, DEFAULT_FD);
sf_sys_set_flag(FL_ANTISHAKE, DEFAULT_ANTISHAKING);
sf_sys_set_flag(FL_RSC, DEFAULT_RSC);
sf_sys_set_flag(FL_WDR, DEFAULT_WDR);
sf_sys_set_flag(FL_DUAL_CAM_MENU, DEFAULT_DUAL_CAM);
sf_sys_set_flag(FL_QUICK_REVIEW, DEFAULT_QUICK_REVIEW);
sf_sys_set_flag(FL_DATE_STAMP, DEFAULT_DATE_STAMP);
sf_sys_set_flag(FL_SELFTIMER, DEFAULT_SELFTIMER);
sf_sys_set_flag(FL_FLASH_MODE, DEFAULT_FLASH_MODE);
sf_sys_set_flag(FL_CONTINUE_SHOT, DEFAULT_CONTINUE_SHOT);
sf_sys_set_flag(FL_SHDR, DEFAULT_SHDR);
//#NT#2016/08/19#Lincy Lin#[0106935] -begin
//#NT# Support change WDR, SHDR, RSC setting will change mode after exit menu
sf_sys_set_flag(FL_RSC_MENU, DEFAULT_RSC);
sf_sys_set_flag(FL_WDR_MENU, DEFAULT_WDR);
sf_sys_set_flag(FL_SHDR_MENU, DEFAULT_SHDR);
//#NT#2016/08/19#Lincy Lin -end
sf_sys_set_flag(FL_DEFOG, DEFAULT_DEFOG);
// Movie
sf_sys_set_flag(FL_MOVIE_SIZE_MENU, DEFAULT_MOVIE_SIZE_DUAL);
sf_sys_set_flag(FL_MOVIE_QUALITY, DEFAULT_MOVIE_QUALITY);
sf_sys_set_flag(FL_MOVIE_COLOR, DEFAULT_MOVIE_COLOR);
sf_sys_set_flag(FL_MOVIE_CYCLIC_REC, DEFAULT_MOVIE_CYCLICREC);
sf_sys_set_flag(FL_MOVIE_MOTION_DET, DEFAULT_MOVIE_MOTION_DET);
sf_sys_set_flag(FL_MOVIE_AUDIO, DEFAULT_MOVIE_AUDIO);
sf_sys_set_flag(FL_MOVIE_DATEIMPRINT, DEFAULT_MOVIE_DATEIMPRINT);
sf_sys_set_flag(FL_MOVIE_HDR_MENU, DEFAULT_MOVIE_HDR);
sf_sys_set_flag(FL_MOVIE_WDR_MENU, DEFAULT_MOVIE_WDR);
sf_sys_set_flag(FL_MOVIE_DEFOG_MENU, DEFAULT_MOVIE_DEFOG);
sf_sys_set_flag(FL_MovieRSCIndex_MENU, DEFAULT_MOVIE_RSC);
sf_sys_set_flag(FL_MOVIE_SENSOR_ROTATE, DEFAULT_SENSOR_ROTATE);
sf_sys_set_flag(FL_MovieMCTFIndex, DEFAULT_MCTFINDEX);
sf_sys_set_flag(FL_MOVIE_PTZ, DEFAULT_MOVIE_PTZ);
sf_sys_set_flag(FL_MOVIE_URGENT_PROTECT_AUTO, DEFAULT_MOVIE_URGENT_PROTECT_AUTO);
sf_sys_set_flag(FL_MOVIE_URGENT_PROTECT_MANUAL, DEFAULT_MOVIE_URGENT_PROTECT_MANUAL);
sf_sys_set_flag(FL_MOVIE_IR_CUT, DEFAULT_IR_CUT);
//#NT#2016/07/26#KCHong#[0105955] -begin
//#NT#If ADAS is ON and timelapse changes to OFF, reopen movie mode
sf_sys_set_flag(FL_MOVIE_TIMELAPSE_REC_MENU, DEFAULT_MOVIE_TIMELAPSE_REC);
//#NT#2016/07/26#KCHong#[0105955] -end
sf_sys_set_flag(FL_MOVIE_PIM, DEFAULT_MOVIE_PIM);
//#NT#2016/07/12#KCHong#[0104994] -begin
//#NT#Use FL_MOVIE_LDWS_MENU & FL_MOVIE_FCW_MENU instead of FL_MOVIE_LDWS & FL_MOVIE_FCW
sf_sys_set_flag(FL_MOVIE_LDWS_MENU, DEFAULT_MOVIE_LDWS);
sf_sys_set_flag(FL_MOVIE_FCW_MENU, DEFAULT_MOVIE_FCWS);
//#NT#2016/07/12#KCHong#[0104994] -end
sf_sys_set_flag(FL_MovieAudioRecIndex, DEFAULT_MOVIE_REC_VOLUME);
sf_sys_set_flag(FL_MovieAudioRec, DEFAULT_MOVIE_REC_AUD);
sf_sys_set_flag(FL_MOVIE_DDD, DEFAULT_MOVIE_DDD);
sf_sys_set_flag(FL_MOVIE_ADAS_CAL, DEFAULT_MOVIE_ADAS_CAL);
sf_sys_set_flag(FL_MOVIE_CODEC, DEFAULT_MOVIE_CODEC);
sf_sys_set_flag(FL_MOVIE_CODEC_MENU, DEFAULT_MOVIE_CODEC);
// Playback
sf_sys_set_flag(FL_PROTECT, DEFAULT_PROTECT);
sf_sys_set_flag(FL_MovieAudioPlayIndex, DEFAULT_MOVIE_PLAY_VOLUME);
// System
sf_sys_set_flag(FL_AudioPlayIndex, DEFAULT_AUDIO_PLAY_VOLUME);
sf_sys_set_flag(FL_AUTO_POWER_OFF, DEFAULT_AUTO_POWER_OFF);
sf_sys_set_flag(FL_LCD_OFF, DEFAULT_LCD_OFF);
sf_sys_set_flag(FL_BEEP, DEFAULT_BEEP);
sf_sys_set_flag(FL_LANGUAGE, DEFAULT_LANGUAGE);
sf_sys_set_flag(FL_FREQUENCY, DEFAULT_FREQUENCY);
sf_sys_set_flag(FL_TV_MODE, DEFAULT_TV_MODE);
sf_sys_set_flag(FL_HDMI_MODE, DEFAULT_HDMI_MODE);
sf_sys_set_flag(FL_DATE_FORMAT, DEFAULT_DATE_FORMAT);
sf_sys_set_flag(FL_OPENING_LOGO, DEFAULT_OPENING_LOGO);
sf_sys_set_flag(FL_CPU2_DEFAULT, 1);
sf_sys_set_flag(FL_LCD_DISPLAY, DEFAULT_LCD_DISPLAY);
sf_sys_set_flag(FL_LCD_BRIGHTNESS, DEFAULT_LCD_BRIGHTNESS);
sf_sys_set_flag(FL_DualDisp, DEFAULT_DUALDISP);
sf_sys_set_flag(FL_MACRO, DEFAULT_MACRO);
sf_sys_set_flag(FL_USB_MODE, DEFAULT_USB_MODE);
sf_sys_set_flag(FL_GSENSOR, DEFAULT_GSENSOR);
sf_sys_set_flag(FL_EDGE, DEFAULT_EDGE);
sf_sys_set_flag(FL_NR, DEFAULT_NR);
//#NT#2016/06/14#Charlie Chang -begin
//#NT#support contrast, two way audio in and sample rate, flip, movie qualiity set
sf_sys_set_flag(FL_MOVIE_CONTRAST, DEFAULT_MOVIE_CONTRAST);
sf_sys_set_flag(FL_MOVIE_AUDIOIN, DEFAULT_MOVIE_AUDIOIN);
sf_sys_set_flag(FL_MOVIE_AUDIOIN_SR, DEFAULT_MOVIE_AUDIOIN_SR);
sf_sys_set_flag(FL_MOVIE_FLIP_MIRROR, DEFAULT_MOVIE_FLIP_MIRROR);
sf_sys_set_flag(FL_MOVIE_QUALITY_SET, DEFAULT_MOVIE_QUALITY_SET);
//#NT#2016/06/14#Charlie Chang -end
//#NT#2017/03/03#Jeah Yen -begin
//#NT# support sbs mode
sf_sys_set_flag(FL_MOVIE_SBS_MODE, DEFAULT_MOVIE_SBS_MODE);
//#NT#2017/03/03#Jeah Yen -end
// Wi-Fi
sf_sys_set_flag(FL_WIFI_AUTO_RECORDING, DEFAULT_MOVIE_WIFI_AUTO_RECORDING_OPTION);
sf_sys_set_flag(FL_NetWorkMode, DEFAULT_WIFI_MODE); // Reset To Wi-Fi mode to AP mode.
//#NT#2023/01/11#Eric - begin //#NT#Support
//=====================Sifar=============///Eric
//Ux_SendEvent(&UISetupObjCtrl, NVTEVT_EXE_BOOTWORKMODE, 1, sf_sys_get_flag(CamMode));
//#NT#2023/01/11#Eric - end
//#2023/02/10#Payton - begin
//=====================Sifar=============
sf_sys_set_flag(CamNameSwitch, DEFAULT_SF_CAMID);
sf_sys_set_flag(CamMode, DEFAULT_BOOT_WORK_MODE);
sf_sys_set_flag(FlashLed, DEFAULT_FLASH_LED);
//ImgSize
sf_sys_set_flag(NightMode, DEFAULT_NIGHT_MODE);
//Multishot
//VideoSize
//VideoTimeMenu
sf_sys_set_flag(VideoLenth, DEFAULT_VIDEO_LENTH);
sf_sys_set_flag(PirSwitch, DEFAULT_PIR_SWITCH);
sf_sys_set_flag(PirSensitivity, DEFAULT_PIR_SENSITIVITY);
sf_sys_set_flag(PirDelaySwitch, DEFAULT_PIR_DELAY_SWITCH);
sf_sys_set_flag(TimelapseSwitch, DEFAULT_TIMELAPSE_SWITCH);
if(sf_sys_get_flag(TimelapseSwitch))
{
puiPara->TimelapseTime.Hour = 0;
puiPara->TimelapseTime.Min = 0;
puiPara->TimelapseTime.Sec = 5;
}
sf_sys_set_flag(WorkTime1Switch, DEFAULT_WORKTIME_SWITCH);
if(sf_sys_get_flag(WorkTime1Switch))
{
puiPara->WorkTime[0].StartTime.Hour = 16;
puiPara->WorkTime[0].StartTime.Min = 0;
puiPara->WorkTime[0].StopTime.Hour = 20;
puiPara->WorkTime[0].StopTime.Min = 0;
}
sf_sys_set_flag(WorkTime2Switch, DEFAULT_WORKTIME_SWITCH);
if(sf_sys_get_flag(WorkTime2Switch))
{
puiPara->WorkTime[1].StartTime.Hour = 5;
puiPara->WorkTime[1].StartTime.Min = 0;
puiPara->WorkTime[1].StopTime.Hour = 8;
puiPara->WorkTime[1].StopTime.Min = 0;
}
sf_sys_set_flag(SimAutoSwitch, DEFAULT_SIM_AUTO_SWITCH);
sf_sys_set_flag(SendMaxNum, DEFAULT_SEND_MAX_NUM);
sf_sys_set_flag(GprsMode, DEFAULT_GPRS_MODE);
sf_sys_set_flag(DailyReportSwitch, DEFAULT_DAILY_REPORT_SWITCH);
sf_sys_set_flag(ReDailyReport, DEFAULT_REDAILY_REPORT_SWITCH);
sf_sys_set_flag(SimPinFlag, DEFAULT_SIN_PIN_FLAG);
sf_sys_set_flag(GpsSwitch, DEFAULT_GPS_SWITCH);
sf_sys_set_flag(Language, DEFAULT_LANGUAGE);
///////////////
sf_sys_set_flag(DateStyle, DEFAULT_DATE_TIME);
sf_sys_set_flag(FL_DateFormatIndex, DEFAULT_DATE_TIME);
/////////////
sf_sys_set_flag(StampSwitch, DEFAULT_STAMP_SWITCH);
sf_sys_set_flag(BatteryType, DEFAULT_BATTERY_TYPE);
sf_sys_set_flag(SdLoopSwitch, DEFAULT_SD_LOOP_SWITCH);
sf_sys_set_flag(PwdSwitch, DEFAULT_PWD_SWITCH);
sf_sys_set_flag(SendPhotoSwitch, DEFAULT_SEND_PHOTO_SWITCH);
sf_sys_set_flag(SendVideoSwitch, DEFAULT_SEND_VIDEO_SWITCH);
sf_sys_set_flag(SendPicSize, DEFAULT_SEND_PIC_SIZE);
sf_sys_set_flag(SendMultishotIndex1, DEFAULT_SEND_MULTISHOT_INDEX1);
sf_sys_set_flag(SendMultishotIndex2, DEFAULT_SEND_MULTISHOT_INDEX2);
sf_sys_set_flag(SendMultishotIndex3, DEFAULT_SEND_MULTISHOT_INDEX3);
sf_sys_set_flag(SendMultishotIndex4, DEFAULT_SEND_MULTISHOT_INDEX4);
sf_sys_set_flag(DateAuto, DEFAULT_DATE_AUTO);
//NTPZoneS,
//NTPZoneH,
//NTPZoneM,
sf_sys_set_flag(CamArmDiable, DEFAULT_CAM_ARM_DIABLE);
sf_sys_set_flag(DebugMode, DEFAULT_DEBUG_MODE);
sf_sys_set_flag(AutoOffSwitch, DEFAULT_AUTO_OFF_SWITCH);
sf_sys_set_flag(AutoLogSwitch, DEFAULT_AUTO_LOG_SWITCH);
sf_sys_set_flag(RawSwitch, DEFAULT_RAW_SWITCH);
sf_sys_set_flag(GprsSwitch, DEFAULT_GPRS_SWITCH);
sf_sys_set_flag(GpsSendFlag, DEFAULT_GPS_SEND_FLAG);
sf_sys_set_flag(FristSendDailyAndGps, DEFAULT_FRIST_SEND_DAILY_AND_GPS);
sf_sys_set_flag(NetGeneration, DEFAULT_NET_GENERATION);
sf_sys_set_flag(NeedTimeSyncStartUp, DEFAULT_NEED_TIME_SYNC);
sf_sys_set_flag(NetWorkNeedSearch, DEFAULT_NET_WORK_NEED_SEARCH);
sf_sys_set_flag(QLogSwitch, DEFAULT_QLOG_SWITCH);
sf_sys_set_flag(GpsAntiTheftSwitch, DEFAULT_GPS_ANTI_THEFT_SWITCH);
sf_sys_set_flag(BatteryLogSwitch, DEFAULT_BATTRERY_LOG_SWITCH);
sf_sys_set_flag(GpsNumber, DEFAULT_GPS_NUMBER);
sf_sys_set_flag(TimeSend1Switch, DEFAULT_TIMESEND1_SWITCH);
sf_sys_set_flag(TimeSend2Switch, DEFAULT_TIMESEND2_SWITCH);
sf_sys_set_flag(TimeSend3Switch, DEFAULT_TIMESEND3_SWITCH);
sf_sys_set_flag(TimeSend4Switch, DEFAULT_TIMESEND4_SWITCH);
//sf_set_pir_sensitivity(7);
printf("%s:%d sifar para e\n", __FUNCTION__, __LINE__);
//#2023/02/10#Payton - end
sf_SysSetFixedFlag();
}
void sf_Save_MenuInfo(void)
{
unsigned long long partition_ofs= 0, partition_size = 0;
int ret = 0;
FILE *sys_mtd_fp = NULL;
INT32 rw_len = 0;
UINT32 sectorCnt;
void* tmpInfo = NULL;
size_t write_size;
char cmd[128] = {'\0'};
printf("%s:%d s\n", __FUNCTION__, __LINE__);
SysCheckFlag();
/* check if sys param changed */
if(memcmp(&currentInfo, &origInfo, sizeof(UIMenuStoreInfo)) == 0){
printf("menu info is not changed\n");
goto EXIT;
}
sectorCnt = (sizeof(UIMenuStoreInfo) / _EMBMEM_BLK_SIZE_) + ((sizeof(UIMenuStoreInfo) % _EMBMEM_BLK_SIZE_)? 1 : 0);
ret = sf_UIInfo_GetStrgPartitionInfo(&partition_ofs, &partition_size, PARTITION_PATH_SYS);
if ((ret == 0) && (sizeof(UIMenuStoreInfo) < partition_size)) {
char sys_mtd_dev_path[128] = {'\0'};
ret = find_sys_mtd_device(sys_mtd_dev_path, sizeof(sys_mtd_dev_path));
if(ret){
goto EXIT;
}
sys_mtd_fp = fopen(sys_mtd_dev_path, "wb");
if(!sys_mtd_fp){
printf("open %s failed!\n", sys_mtd_dev_path);
ret = -1;
goto EXIT;
}
write_size = sectorCnt * _EMBMEM_BLK_SIZE_;
tmpInfo = malloc(write_size);
if(!tmpInfo){
printf("allocate tmpInfo failed!\n");
ret = -1;
goto EXIT;
}
sprintf(cmd, "flash_eraseall -N %s", sys_mtd_dev_path);
printf("%s\n", cmd);
ret = system(cmd);
if(ret){
printf("flash_eraseall failed!\n");
goto EXIT;
}
memset(tmpInfo, 0xFF, write_size);
currentInfo.uhInfoSize = sizeof(UIMenuStoreInfo);
memcpy(tmpInfo, &currentInfo, sizeof(UIMenuStoreInfo));
rw_len = fwrite(tmpInfo, 1, write_size, sys_mtd_fp);
if(rw_len != (INT32)(write_size)) {
printf("fwrite size not matched(%ld / %ld)!\n", rw_len, write_size);
ret = -1;
goto EXIT;
}
fflush(sys_mtd_fp);
UINT32 sum = MemCheck_CalcCheckSum16Bit((UINT32)tmpInfo, sizeof(UIMenuStoreInfo));
printf("**************size = %lx / mov size = %u / sum = %lx **************\n",
sizeof(UIMenuStoreInfo),
((UIMenuStoreInfo*)tmpInfo)->UIParameter[FL_MOVIE_SIZE],
sum);
}
else{
printf("can't get partition info or menu info size exceed partition size!\n");
}
EXIT:
if(sys_mtd_fp){
fclose(sys_mtd_fp);
sys_mtd_fp = NULL;
}
if(tmpInfo){
free(tmpInfo);
tmpInfo = NULL;
}
printf("%s:%d e\n", __FUNCTION__, __LINE__);
}
#endif
#endif #endif
@ -367,11 +861,19 @@ SF_PDT_PARAM_CFG_S* sf_customer_param_get(void)
{ {
return &StCustomerParam; return &StCustomerParam;
} }
void sf_customer_param_set(SF_PDT_PARAM_CFG_S *pSfCustomerPara) void sf_customer_param_set(UIMenuStoreInfo *pSfCustomerPara)
{ {
memcpy(&StCustomerParam,pSfCustomerPara,sizeof(SF_PDT_PARAM_CFG_S)); //currentInfo = *pSfCustomerPara;
memcpy(&currentInfo,pSfCustomerPara,sizeof(UIMenuStoreInfo));
} }
void sf_customer_param_set_down(UIMenuStoreInfo *pSfCustomerPara)
{
//currentInfo = *pSfCustomerPara;
memcpy(pSfCustomerPara,&currentInfo,sizeof(UIMenuStoreInfo));
}
void sf_customer_param_reset(SF_PDT_PARAM_CFG_S *psfpdtparam,UINT8 sysRet) void sf_customer_param_reset(SF_PDT_PARAM_CFG_S *psfpdtparam,UINT8 sysRet)
{ {
@ -385,7 +887,7 @@ SINT32 sf_customer_param_save(SF_PDT_PARAM_CFG_S *pSfCustomerPara)
SINT32 ret = 0; SINT32 ret = 0;
SINT32 fd = 0; SINT32 fd = 0;
UINT32 CheckSum = 0; UINT32 CheckSum = 0;
UINT32 lenth = 0; SINT32 lenth = 0;
lenth = sizeof(SF_PDT_PARAM_CFG_S); lenth = sizeof(SF_PDT_PARAM_CFG_S);
@ -492,7 +994,7 @@ SINT32 sf_statistics_param_save(SF_PDT_PARAM_STATISTICS_S* pStatisticsParam)
SINT32 fd = 0; SINT32 fd = 0;
SINT32 ret = 0; SINT32 ret = 0;
UINT32 CheckSum = 0; UINT32 CheckSum = 0;
UINT32 lenth = 0; SINT32 lenth = 0;
lenth = sizeof(SF_PDT_PARAM_STATISTICS_S); lenth = sizeof(SF_PDT_PARAM_STATISTICS_S);
@ -532,7 +1034,7 @@ SINT32 sf_statistics_param_load(SF_PDT_PARAM_STATISTICS_S* pStatisticsParam)
SINT32 i = 0; SINT32 i = 0;
SINT32 fd = 0; SINT32 fd = 0;
UINT32 CheckSum = 0; UINT32 CheckSum = 0;
UINT32 lenth = 0; SINT32 lenth = 0;
SINT32 ret = SF_SUCCESS; SINT32 ret = SF_SUCCESS;
static SINT32 loadFalg = 0; static SINT32 loadFalg = 0;
SF_PDT_PARAM_CFG_S *pSfCustomerPara = sf_customer_param_get(); SF_PDT_PARAM_CFG_S *pSfCustomerPara = sf_customer_param_get();
@ -646,6 +1148,46 @@ UINT8 sf_cap_status_get(void)
} }
/*************************************************
Function: sf_signal_level_get
Description: get signal level
Input: netFlagG: 4/3/2 G cqSignal:signal val
Output: N/A
Return: signal level
Others: N/A
*************************************************/
UINT8 sf_signal_level_get(UINT8 netFlagG, UINT8 cqSignal)
{
UINT8 signalLevel = 0;
if(netFlagG == 4)
{
if(cqSignal <= 105)
{
signalLevel = 4;
}
else if(cqSignal <= 115)
{
signalLevel = 3;
}
else
{
signalLevel = 2;
}
}
else
{
if (cqSignal < 8)
signalLevel = 2;
else if (cqSignal < 14)
signalLevel = 3;
else
signalLevel = 4;
}
return signalLevel;
}
#ifdef __cplusplus #ifdef __cplusplus
#if __cplusplus #if __cplusplus
} }

View File

@ -845,8 +845,18 @@ unsigned char sf_commu_parse_mcu_data(unsigned char * src, unsigned int len)
stMessageBuf.cmdId = CMD_KEY; stMessageBuf.cmdId = CMD_KEY;
stMessageBuf.arg1 = SF_EVENT_KEY_SHORT_CLICK; stMessageBuf.arg1 = SF_EVENT_KEY_SHORT_CLICK;
stMessageBuf.arg2 = SF_KEY_PIN_DATAREADY; stMessageBuf.arg2 = SF_KEY_PIN_DATAREADY;
sf_com_message_send_to_app(&stMessageBuf); stMessageBuf.arg3 = (val[0] & 0x1F);
sf_com_message_send_to_cardv(&stMessageBuf);
ret = 0x05; ret = 0x05;
if(stMessageBuf.arg3 == 3) //ON
{
sf_set_pir_statu_flag(1);
printf("%s:%d-------PIR Key Pressed.------\n", __FUNCTION__, __LINE__);
}
else if((stMessageBuf.arg3 == 0) || (stMessageBuf.arg3 == 1)) //ON
{//PIR MODE: ON->OFF/ ON->SETUP
sf_set_module_sleep_flag(0);
}
} }
else else
{ {
@ -889,8 +899,6 @@ static void * sf_commu_mcu_task(void * argv)
unsigned char temp_end1 = 0; unsigned char temp_end1 = 0;
unsigned char temp_end2 = 0; unsigned char temp_end2 = 0;
unsigned char copy_size = 0; unsigned char copy_size = 0;
sf_commu_mcu_interface_init(115200, 'N', 8, 1, 'N');
sf_commu_mcu_open();
mcubuf_reset(); mcubuf_reset();
while(sf_commu_mcu_exit == 0) while(sf_commu_mcu_exit == 0)
{ {
@ -1002,8 +1010,10 @@ void sf_commu_mcu_task_start(void)
{ {
if(sf_commu_mcu_exit == 1) if(sf_commu_mcu_exit == 1)
{ {
pthread_create(&sfCommuMcuThread, NULL, sf_commu_mcu_task, NULL);
sf_commu_mcu_exit = 0; sf_commu_mcu_exit = 0;
sf_commu_mcu_interface_init(115200, 'N', 8, 1, 'N');
sf_commu_mcu_open();
pthread_create(&sfCommuMcuThread, NULL, sf_commu_mcu_task, NULL);
} }
} }

View File

@ -27,6 +27,7 @@
#include <sf_storeMng.h> #include <sf_storeMng.h>
#include "sf_commu_mcu.h" #include "sf_commu_mcu.h"
#include "sf_commu_mcu_reg.h" #include "sf_commu_mcu_reg.h"
#include <sf_device.h>
#ifdef __cplusplus #ifdef __cplusplus
@ -40,7 +41,7 @@ static unsigned char McuSubVersion = 0;
static unsigned short McuVersion = 0; static unsigned short McuVersion = 0;
static unsigned char McuProductInfo = 0; static unsigned char McuProductInfo = 0;
unsigned char McuPowerOnMode = 0;//=>PWR_ON_SETUP //unsigned char McuPowerOnMode = 0;//=>PWR_ON_SETUP
unsigned char CameraMode = 0; //bit0~3:1 Picture,2 Video,3 TimeLapse,4 PIC+video; bit7:0 fast capture. bit7:1 Normal capture unsigned char CameraMode = 0; //bit0~3:1 Picture,2 Video,3 TimeLapse,4 PIC+video; bit7:0 fast capture. bit7:1 Normal capture
unsigned char IrLedPercent = 0; unsigned char IrLedPercent = 0;
unsigned char McuBatMode = 0; unsigned char McuBatMode = 0;
@ -50,6 +51,13 @@ unsigned int powerSave_t1 = 0;
unsigned char DailyReportStartMode = 0; unsigned char DailyReportStartMode = 0;
unsigned char POWEROFF = 0; unsigned char POWEROFF = 0;
SF_TIME_S sfMcuTime = { 0 }; SF_TIME_S sfMcuTime = { 0 };
static BOOL ConfigureModeFlag = 0; /* 0: HTC Mode, 1: Nomal Mode */
static UINT8 PowerOnMode = 0; //=>PWR_ON_SETUP
static UINT32 simCardInsert=0;
static UINT8 gModuleSleep = 1;
static UINT8 isSignalReady = 0;
static UINT32 GPRS_ERRNO = 0;
static UINT32 SmsCheck = 0;
UINT8 sf_mcu_read(UINT32 reg, UINT8 *data) UINT8 sf_mcu_read(UINT32 reg, UINT8 *data)
{ {
@ -115,6 +123,7 @@ unsigned char sf_mcu_power_on_para_get (MCUParam_t attrId)
unsigned char mcuReg[REG_SIZE] = { 0 }; unsigned char mcuReg[REG_SIZE] = { 0 };
unsigned char mcuData[REG_SIZE] = { 0 }; unsigned char mcuData[REG_SIZE] = { 0 };
unsigned char i = 0; unsigned char i = 0;
SF_TIME_S time;
if(attrId == SF_MCU_STARTMODE) if(attrId == SF_MCU_STARTMODE)
{ {
@ -144,8 +153,12 @@ unsigned char sf_mcu_power_on_para_get (MCUParam_t attrId)
dataTemp2 = mcuData[i++]; dataTemp2 = mcuData[i++];
IRSHTTER = (dataTemp2 << 8) | dataTemp1; IRSHTTER = (dataTemp2 << 8) | dataTemp1;
} }
printf(" start mode = %d IRSHTTER = %d\n", startMode, IRSHTTER);
sf_mcu_rtc_get(&time);
sf_sys_rtc_time_set(&time);
sf_poweron_type_set(startMode);
McuPowerOnMode = startMode; //McuPowerOnMode = startMode;
return startMode; return startMode;
} }
@ -176,7 +189,7 @@ unsigned char sf_mcu_rtc_get (SF_TIME_S *time)
unsigned char sf_mcu_wdg_off(void) unsigned char sf_mcu_wdg_off(void)
{ {
unsigned char i = 0; unsigned char i = 0;
unsigned char regsize =0; //unsigned char regsize =0;
unsigned char mcuReg[2] = {0}; unsigned char mcuReg[2] = {0};
unsigned char mcuPara[2] = {0}; unsigned char mcuPara[2] = {0};
@ -186,12 +199,13 @@ unsigned char sf_mcu_wdg_off(void)
mcuReg[i] = DSP_WRITE_FLG; mcuReg[i] = DSP_WRITE_FLG;
mcuPara[i++] = 1; mcuPara[i++] = 1;
regsize = i; //regsize = i;
for(i=0; i<regsize; i++) /*for(i=0; i<regsize; i++)
{ {
sf_commu_set_mcu(mcuReg[i], mcuPara[i]); sf_commu_set_mcu(mcuReg[i], mcuPara[i]);
} }*/
sf_mcu_write_multi(mcuReg, mcuPara, i);
return SF_SUCCESS; return SF_SUCCESS;
} }
@ -226,10 +240,11 @@ unsigned char sf_mcu_wdg_set(unsigned char value)
printf("[sf_mcu_watchdog_set],add[%d]---value:%x\n", mcuReg[i], mcuPara[i]); printf("[sf_mcu_watchdog_set],add[%d]---value:%x\n", mcuReg[i], mcuPara[i]);
} }
for(i=0; i<regsize; i++) /*for(i=0; i<regsize; i++)
{ {
sf_commu_set_mcu(mcuReg[i], mcuPara[i]); sf_commu_set_mcu(mcuReg[i], mcuPara[i]);
} }*/
sf_mcu_write_multi(mcuReg, mcuPara, i);
return SF_SUCCESS; return SF_SUCCESS;
} }
@ -291,24 +306,55 @@ UINT8 sf_set_digit_pir_pulse_cnt(UINT8 pirs)
return digPirPulseCnt[pirs]; return digPirPulseCnt[pirs];
} }
/*************************************************
Function: sf_mcu_analog_pir_sen_convert
Description: Analog PIR Sensitivity Convert
Input: digPir sensitivity
Output: N/A
Return: Analog PIR Sensitivity
Others: N/A
*************************************************/
unsigned char sf_mcu_analog_pir_sen_convert(unsigned char pirs)
{
unsigned char pirlevel = 0;
if(pirs > 6)
pirlevel = 0;
else if(pirs > 3)
pirlevel = 1;
else
pirlevel = 2;
return pirlevel;
}
unsigned char sf_mcu_reg_set(MCUParam_t attrId, unsigned char val) unsigned char sf_mcu_reg_set(MCUParam_t attrId, unsigned char val)
{ {
unsigned char mcuReg[70] = {0}; unsigned char mcuReg[70] = {0};
unsigned char mcuData[70] = {0}; unsigned char mcuData[70] = {0};
unsigned char regsize =0; //unsigned char regsize =0;
unsigned char i = 0; unsigned char i = 0;
unsigned char temp = 0; unsigned char temp = 0;
//unsigned char dailyReportFlag = 1; //unsigned char dailyReportFlag = 1;
unsigned char paraSyncFlag = 0; unsigned char paraSyncFlag = 0;
//unsigned char gpsAlwaysFlag = 0; unsigned char gpsAlwaysFlag = 0;
unsigned char DigPirPulseCount = 0; //unsigned char DigPirPulseCount = 0;
unsigned char DigPirWindowTime = 0; //unsigned char DigPirWindowTime = 0;
SF_PDT_PARAM_CFG_S *puiPara = sf_customer_param_get(); UIMenuStoreInfo *puiPara = sf_app_ui_para_get();
SF_PARA_TIME_S date = { 0 }; SF_PARA_TIME_S date = { 0 };
SINT32 isUsb = sf_usb_IsInsert();
SINT32 isCard = sf_in_card_exist();
SINT32 isCardFull = sf_is_card_full();
//CameraBootSetting_t* pCameraBootSetting = CameraBootSettingGetHandle(); //CameraBootSetting_t* pCameraBootSetting = CameraBootSettingGetHandle();
if (attrId > SF_MCU_PARAM_MAX) MLOGI("isUsb = %d isCard = %d isCardFull = %d\n", isUsb, isCard, isCardFull);
if(!isCard)
{
isCard = sf_is_card();
MLOGI("isUsb = %d isCard = %d isCardFull = %d\n", isUsb, isCard, isCardFull);
}
if (attrId > SF_MCU_PARAM_MAX)
{ {
MLOGE("attrId ERROR!\n"); MLOGE("attrId ERROR!\n");
return -1; return -1;
@ -318,8 +364,8 @@ unsigned char sf_mcu_reg_set(MCUParam_t attrId, unsigned char val)
if(attrId == SF_MCU_POWEROFF) if(attrId == SF_MCU_POWEROFF)
{ {
//printf("SynMcuSet = %x\n", statisPara->SynMcuSet); //printf("SynMcuSet = %x\n", statisPara->SynMcuSet);
MLOGI("GPSEnterResetModeFlag = %d\n", puiPara->GPSEnterResetModeFlag); MLOGI("NeedTimeSyncStartUp = %d\n", sf_sys_get_flag(NeedTimeSyncStartUp));
if(puiPara->GPSEnterResetModeFlag == 1) if(sf_sys_get_flag(NeedTimeSyncStartUp) == 1)
{ {
paraSyncFlag = 1; paraSyncFlag = 1;
} }
@ -341,23 +387,58 @@ unsigned char sf_mcu_reg_set(MCUParam_t attrId, unsigned char val)
mcuReg[i] = SF_RTC_SEC; mcuReg[i] = SF_RTC_SEC;
mcuData[i++] = date.Sec; mcuData[i++] = date.Sec;
if((sf_sys_get_flag(GpsSwitch) == 1) && (sf_sys_get_flag(GpsNumber)))
{
gpsAlwaysFlag=1;
}
else
{
gpsAlwaysFlag=0;
}
if(puiPara->PirSwitch) if(sf_sys_get_flag(PirSensitivity))
temp = 0x01; temp = 0x01;
else else
temp = 0x00; temp = 0x00;
if(puiPara->GprsMode == 0)
temp |= 0x20;
if(puiPara->TimelapseSwitch) if(1 == sf_sys_get_flag(TimelapseSwitch))
temp |= 0x02; {
temp |= 0x02;
}
if(1 == sf_sys_get_flag(PirDelaySwitch))
{
temp |= 0x04;
}
if(puiPara->PirDelaySwitch) printf("[%s:%d]paraSyncFlag=%d\n", __FUNCTION__, __LINE__, paraSyncFlag);
temp |= 0x04;
if(paraSyncFlag ) if(paraSyncFlag)
temp |= 0x08; {
temp |= 0x08;
}
//if(puiPara->dailyReport)
if(/*(puiPara->GpsSwitch) && */(paraSyncFlag == 1))
{
temp &= ~0x10;
}
else if(simCardInsert) //dailyreport alway open
{
temp |= 0x10;
}
if(sf_sys_get_flag(TimeSend1Switch) == 1)
temp |= 0x20;
if(sf_sys_get_flag(TimeSend2Switch) == 1)
temp |= 0x40;
if(gpsAlwaysFlag && simCardInsert)
temp |= 0x80;
temp |= 0x10; temp |= 0x10;
@ -366,103 +447,15 @@ unsigned char sf_mcu_reg_set(MCUParam_t attrId, unsigned char val)
temp = 0; temp = 0;
if(sf_sys_get_flag(TimelapseSwitch))
if(paraSyncFlag)
{
mcuReg[i] = GPS_POWER_TIMER_CLEAR;
mcuData[i++] = 1;
mcuReg[i] = GPS_POWER_CTRL;
mcuData[i++] = 1;
}
else
{
mcuReg[i] = GPS_POWER_CTRL;
mcuData[i++] = 0;
}
MLOGI("PirSensitivity=%d\n", puiPara->PirSensitivity);
mcuReg[i] = ANALOG_PIR_SENSITIVITY;
temp = puiPara->PirSensitivity;
// if(paraSyncFlag) {
// temp |= 0x10;
// }
MLOGI("GprsMode:%d\n",puiPara->GprsMode);
// #ifdef SF_HARDWARE_TEST
// temp |= 0x40; //bit 6-bit5: 2 instant, 1 hybird, 0: daily
// #else
if((puiPara->GprsMode < 10))
{
if((puiPara->GprsMode == 1))
temp |= 0x40; //bit 6-bit5: 2 instant, 1 hybird, 0: daily
else
temp |= 0x20; //bit 6-bit5: 2 instant, 1 hybird, 0: daily
}
// #endif
if((puiPara->GprsSwitch))
temp |= 0x80;
if((val == SF_POWEROFF_SYNC_PARAM))
temp &= 0x9F;
mcuData[i++] = temp;
#if 1 //DIGITAL_PIR
MLOGI("DigitPirSensitivity=%d\n", puiPara->DigitPirSensitivity);
DigPirPulseCount = sf_set_digit_pir_pulse_cnt(puiPara->DigitPirSensitivity);
DigPirWindowTime = 0;
mcuReg[i] = DIGITAL_PIR_SENSITIVITY;
mcuData[i++] = sf_set_digit_pir_level(puiPara->DigitPirSensitivity);
mcuReg[i] = DIGITAL_PIR_CFG;
mcuData[i++] = DigPirWindowTime<<4 | DigPirPulseCount;
#endif
//DSP busy/idle
mcuReg[i] = DSP_BUSY_STATUS;
mcuData[i++] = 0;
temp = 1;
if(val == SF_POWEROFF_SD_FULL || SF_SD_FULL == sf_sd_status_get())
temp |= 0x02;
if(val == SF_POWEROFF_NO_SD)
temp &= ~0x01;
mcuReg[i] = SYS_STATUS;
mcuData[i++] = temp;
temp = 0;
if((val == SF_POWEROFF_KEYON) || (val == SF_POWEROFF_SYNC_PARAM))
temp |= 0x01; //bit0-3:1, reboot in A
else if(val == SF_POWEROFF_AUTO)
temp |= 0x81; // bit7:1 auto power when 3min no operation
else if(val == SF_POWEROFF_LOW_BAT)
temp |= 0x40;
mcuReg[i] = POWEROFF_TYPE;
mcuData[i++] = temp;
//battery recovery
mcuReg[i] = VBAT_RECOVER_VAL;
mcuData[i++] = 72; //SF_BATT_RECOVERY;
if(puiPara->TimelapseSwitch)
{ {
mcuReg[i] = TIMELAPSE_HOUR; mcuReg[i] = TIMELAPSE_HOUR;
mcuData[i++] = puiPara->TimelapseTime.Hour; mcuData[i++] = puiPara->TimelapseTime.Hour;
mcuReg[i] = TIMELAPSE_MINUTE; mcuReg[i] = TIMELAPSE_MINUTE;
mcuData[i++] = puiPara->TimelapseTime.Min; mcuData[i++] = puiPara->TimelapseTime.Min;
mcuReg[i] = TIMELAPSE_SEC; mcuReg[i] = TIMELAPSE_SEC;
if((puiPara->TimelapseSwitch)&&(puiPara->TimelapseTime.Hour==0)&&(puiPara->TimelapseTime.Min==0)&&(puiPara->TimelapseTime.Sec==0)) if((sf_sys_get_flag(TimelapseSwitch)) && (puiPara->TimelapseTime.Hour == 0) && (puiPara->TimelapseTime.Min == 0) && (puiPara->TimelapseTime.Sec == 0))
mcuData[i++] = 5; mcuData[i++] = 5;
else else
mcuData[i++] = puiPara->TimelapseTime.Sec; mcuData[i++] = puiPara->TimelapseTime.Sec;
@ -476,217 +469,353 @@ unsigned char sf_mcu_reg_set(MCUParam_t attrId, unsigned char val)
mcuReg[i] = TIMELAPSE_SEC; mcuReg[i] = TIMELAPSE_SEC;
mcuData[i++] = 0; mcuData[i++] = 0;
} }
if(puiPara->PirDelaySwitch) if(sf_sys_get_flag(PirDelaySwitch))
{ {
mcuReg[i] = PIR_DELAY_HOUR; mcuReg[i] = PIR_DELAY_HOUR;
mcuData[i++] = puiPara->PirDelayTime.Hour; mcuData[i++] = puiPara->PirDelayTime.Hour;
mcuReg[i] = PIR_DELAY_MINUTE; mcuReg[i] = PIR_DELAY_MINUTE;
mcuData[i++] = puiPara->PirDelayTime.Min; mcuData[i++] = puiPara->PirDelayTime.Min;
mcuReg[i] = PIR_DELAY_SEC; mcuReg[i] = PIR_DELAY_SEC;
mcuData[i++] = puiPara->PirDelayTime.Sec; mcuData[i++] = puiPara->PirDelayTime.Sec;
} }
else else
{ {
mcuReg[i] = PIR_DELAY_HOUR; mcuReg[i] = PIR_DELAY_HOUR;
mcuData[i++] = 0; mcuData[i++] = 0;
mcuReg[i] = PIR_DELAY_MINUTE; mcuReg[i] = PIR_DELAY_MINUTE;
mcuData[i++] = 0; mcuData[i++] = 0;
mcuReg[i] = PIR_DELAY_SEC; mcuReg[i] = PIR_DELAY_SEC;
mcuData[i++] = 0; mcuData[i++] = 0;
} }
if(paraSyncFlag) if(paraSyncFlag)
{ {
mcuReg[i] = TIME_SYNC_HOUR; mcuReg[i] = TIME_SYNC_HOUR;
mcuData[i++] = 0; mcuData[i++] = 0;
mcuReg[i] = TIME_SYNC_MINUTE; mcuReg[i] = TIME_SYNC_MINUTE;
mcuData[i++] = 1; mcuData[i++] = 0;
mcuReg[i] = TIME_SYNC_SEC; mcuReg[i] = TIME_SYNC_SEC;
mcuData[i++] = 30; mcuData[i++] = 1;
} }
MLOGI("GPSWaitRestartFlag = %d\n", puiPara->GPSWaitRestartFlag);
if(sf_sys_get_flag(DailyReportSwitch))
if(puiPara->GprsMode == 1)
{ {
mcuReg[i] = DAILY_REPORT_HOUR; mcuReg[i] = DAILY_REPORT_HOUR;
mcuData[i++] = (date.Hour + 2) % 24; mcuData[i++] = puiPara->DailyReportTime2.Hour;
mcuReg[i] = DAILY_REPORT_MINUTE; mcuReg[i] = DAILY_REPORT_MINUTE;
mcuData[i++] = date.Min; mcuData[i++] = puiPara->DailyReportTime2.Min;
} }
else else
{ {
// if(puiPara->DailyReportTime.Min == 30) mcuReg[i] = DAILY_REPORT_HOUR;
// { mcuData[i++] =0;
// puiPara->DailyReportTime.Min = 2; mcuReg[i] = DAILY_REPORT_MINUTE;
// } mcuData[i++] =0;
if(puiPara->GPSWaitRestartFlag == 2)
{ puiPara->DailyReportTime.Hour = 0;
puiPara->DailyReportTime.Min = 1;
}
if(puiPara->GprsMode != 2 && puiPara->GPSWaitRestartFlag == 1)
{
mcuReg[i] = DAILY_REPORT_HOUR;
mcuData[i++] = (date.Hour + 1) % 24;
mcuReg[i] = DAILY_REPORT_MINUTE;
mcuData[i++] = (date.Min) % 60;
puiPara->GPSWaitRestartFlag = 0;
}
else
{
puiPara->GPSWaitRestartFlag = 0;
if((date.Min + puiPara->DailyReportTime.Min) > 59)
{
mcuReg[i] = DAILY_REPORT_HOUR;
mcuData[i++] = (date.Hour + puiPara->DailyReportTime.Hour +1) % 24;
}
else
{
mcuReg[i] = DAILY_REPORT_HOUR;
mcuData[i++] = (date.Hour + puiPara->DailyReportTime.Hour) % 24;
}
mcuReg[i] = DAILY_REPORT_MINUTE;
MLOGI("now time =[%02d:%02d:%02d],DailyReportTimer = [%02d:%02d:00]\n",date.Hour,date.Min,date.Sec, puiPara->DailyReportTime.Hour,puiPara->DailyReportTime.Min);
if(puiPara->DailyReportTime.Hour == 24)
mcuData[i++] = (date.Min + puiPara->DailyReportTime.Min - 1) % 60;
else
mcuData[i++] = (date.Min + puiPara->DailyReportTime.Min) % 60;
}
} }
mcuReg[i] = DAILY_SEND1_HOUR;
mcuData[i++] = puiPara->TimeSend1.Hour;
mcuReg[i] = DAILY_SEND1_MINUTE;
mcuData[i++] = puiPara->TimeSend1.Min;
mcuReg[i] = DAILY_SEND2_HOUR;
mcuData[i++] = puiPara->TimeSend2.Hour;
#if 1 //no use
if(puiPara->WorkMode == 1)
{
mcuReg[i] = DAILY_SEND1_HOUR;
mcuData[i++] = puiPara->TimeSend1.Hour;
mcuReg[i] = DAILY_SEND1_MINUTE;
mcuData[i++] = puiPara->TimeSend1.Min;
}
/*
mcuReg[i] = DAILY_SEND2_HOUR;
mcuData[i++] = puiPara->TimeSend2;
mcuReg[i] = DAILY_SEND2_MINUTE; mcuReg[i] = DAILY_SEND2_MINUTE;
mcuData[i++] = puiPara->TimeSend2; mcuData[i++] = puiPara->TimeSend2.Min;
mcuReg[i] = DAILY_SEND3_HOUR; mcuReg[i] = ANALOG_PIR_SENSITIVITY;
mcuData[i++] = puiPara->TimeSend3; temp = sf_mcu_analog_pir_sen_convert(sf_sys_get_flag(PirSensitivity));
//hybrid mode 4G module keep sleep
if((sf_sys_get_flag(NetWorkNeedSearch) != 3) && simCardInsert && gModuleSleep)
{
//bit 5-bit 6, daily mode 0, hybrid mode 1, instant mode 2
if((sf_sys_get_flag(GprsMode) == 1) || (paraSyncFlag))
{
temp |= 0x40;
}
else
{
if ((sf_sys_get_flag(GprsMode) == 2) && isSignalReady && (GPRS_ERRNO == 0))
temp |= 0x20;
//sf_pdp_flg_set(0);
}
}
if(((sf_sys_get_flag(GprsSwitch)) && (simCardInsert) && (sf_sys_get_flag(SendType) == 0)) || (paraSyncFlag))
{
temp |= 0x80;
}
else
{
//sf_pdp_flg_set(0);
}
mcuData[i++] = temp;
mcuReg[i] = DIGITAL_PIR_SENSITIVITY;
mcuData[i++] = sf_sys_get_flag(DigitPirSensitivity);//PirDigtSensRegValue[SysGetFlag(PirSensitivity)];
mcuReg[i] = DIGITAL_PIR_CFG;
mcuData[i++] = (sf_sys_get_flag(DigitPirWindowTime) << 4) | sf_sys_get_flag(DigitPirCnt);
//mcuData[i++] = (PirDigtSensRegValue[SysGetFlag(PirSensitivity)] <= 10 ? 1 : 0);
//DSP busy/idle
mcuReg[i] = DSP_BUSY_STATUS;
mcuData[i++] = 0;
mcuReg[i] = SYS_STATUS;
mcuData[i++] = isUsb << 2 | isCardFull << 1 | isCard << 0;
mcuReg[i] = POWEROFF_TYPE;
temp = 0;
if(simCardInsert && (sf_sys_get_flag(NetWorkNeedSearch))
&& ((PowerOnMode == PWR_ON_AUTO) || (PowerOnMode == PWR_ON_SETUP) || (PowerOnMode == PWR_ON_DAILY_REPORT)))/* SET->ON, OFF->ON*/
temp = 1;
else if(SmsCheck)
temp = 2;
if (!(sf_get_pir_statu_flag() || (PowerOnMode == PWR_ON_AUTO)))
temp |= (val == APP_POWER_OFF_BATT_EMPTY) << 6;
mcuData[i++] = (val==APP_POWER_OFF_APO)<<7 | temp;
//battery recovery
mcuReg[i] = VBAT_RECOVER_VAL;
mcuData[i++] = SF_BATT_RECOVERY;
if(sf_sys_get_flag(WorkTime1Switch))
{
mcuReg[i] = WORKTIME1_SWITCH;
mcuData[i++] = 0xFF;
mcuReg[i] = WORKTIME1_START_HOUR;
mcuData[i++] = puiPara->WorkTime[0].StartTime.Hour;
mcuReg[i] = WORKTIME1_START_MINUTE;
mcuData[i++] = puiPara->WorkTime[0].StartTime.Min;
mcuReg[i] = WORKTIME1_STOP_HOUR;
mcuData[i++] = puiPara->WorkTime[0].StopTime.Hour;
mcuReg[i] = WORKTIME1_STOP_MINUTE;
mcuData[i++] = puiPara->WorkTime[0].StopTime.Min;
}
else
{
mcuReg[i] = WORKTIME1_SWITCH;
mcuData[i++] = 0;
mcuReg[i] = WORKTIME1_START_HOUR;
mcuData[i++] = 0;
mcuReg[i] = WORKTIME1_START_MINUTE;
mcuData[i++] = 0;
mcuReg[i] = WORKTIME1_STOP_HOUR;
mcuData[i++] = 0;
mcuReg[i] = WORKTIME1_STOP_MINUTE;
mcuData[i++] = 0;
}
if(sf_sys_get_flag(WorkTime2Switch))
{
mcuReg[i] = WORKTIME2_SWITCH;
mcuData[i++] = 0xFF;
mcuReg[i] = WORKTIME2_START_HOUR;
mcuData[i++] = puiPara->WorkTime[1].StartTime.Hour;
mcuReg[i] = WORKTIME2_START_MINUTE;
mcuData[i++] = puiPara->WorkTime[1].StartTime.Min;
mcuReg[i] = WORKTIME2_STOP_HOUR;
mcuData[i++] = puiPara->WorkTime[1].StopTime.Hour;
mcuReg[i] = WORKTIME2_STOP_MINUTE;
mcuData[i++] = puiPara->WorkTime[1].StopTime.Min;
}
else
{
mcuReg[i] = WORKTIME2_SWITCH;
mcuData[i++] = 0;
mcuReg[i] = WORKTIME2_START_HOUR;
mcuData[i++] = 0;
mcuReg[i] = WORKTIME2_START_MINUTE;
mcuData[i++] = 0;
mcuReg[i] = WORKTIME2_STOP_HOUR;
mcuData[i++] = 0;
mcuReg[i] = WORKTIME2_STOP_MINUTE;
mcuData[i++] = 0;
}
if((sf_sys_get_flag(GpsSwitch) || sf_sys_get_flag(FristSendDailyAndGps)) && (((SF_MCU_STARTUP_ONKEY == sf_poweron_type_get())) || paraSyncFlag))
{
mcuReg[i] = GPS_POWER_TIMER_CLEAR;
mcuData[i++] = 1;
mcuReg[i] = GPS_POWER_CTRL;
mcuData[i++] = 1;
}
else
{
mcuReg[i] = GPS_POWER_CTRL;
mcuData[i++] = 0;
}
temp = 0;
if(sf_sys_get_flag(TimeSend3Switch) == 1)
temp |= 0x01;
if(sf_sys_get_flag(TimeSend4Switch) == 1)
temp |= 0x02;
mcuReg[i] = FUNCTION_SWTICH1;
mcuData[i++] = temp;
mcuReg[i] = DAILY_SEND3_HOUR;
mcuData[i++] = puiPara->TimeSend3.Hour;
mcuReg[i] = DAILY_SEND3_MINUTE; mcuReg[i] = DAILY_SEND3_MINUTE;
mcuData[i++] = puiPara->TimeSend3; mcuData[i++] = puiPara->TimeSend3.Min;
mcuReg[i] = DAILY_SEND4_HOUR; mcuReg[i] = DAILY_SEND4_HOUR;
mcuData[i++] = puiPara->TimeSend4; mcuData[i++] = puiPara->TimeSend4.Hour;
mcuReg[i] = DAILY_SEND4_MINUTE; mcuReg[i] = DAILY_SEND4_MINUTE;
mcuData[i++] = puiPara->TimeSend4; mcuData[i++] = puiPara->TimeSend4.Min;
*/ }
#endif else if(attrId == SF_MCU_CTRL_MODULE_PIR)
{
mcuReg[i] = ANALOG_PIR_SENSITIVITY;
if(puiPara->WorkTime1Switch) temp = sf_sys_get_flag(PirSensitivity);//sf_mcu_analog_pir_sen_convert(SysGetFlag(DigPirSensitivity));
{
mcuReg[i] = WORKTIME1_SWITCH; if(sf_sys_get_flag(GprsMode))//hybrid mode 4G module keep sleep
{
if(puiPara->WorkTime[0].StartTime.Day > 0) temp |= 0x40;
{ }
mcuData[i++] = puiPara->WorkTime[0].StartTime.Day;
} if((sf_sys_get_flag(GprsMode)) && (val == 1))
else {
{ temp |= 0x80;
mcuData[i++] = 0xFF; }
} else
{
//sf_pdp_flg_set(0);
}
mcuReg[i] = WORKTIME1_START_HOUR; mcuData[i++] = temp;
mcuData[i++] = puiPara->WorkTime[0].StartTime.Hour;
mcuReg[i] = WORKTIME1_START_MINUTE;
mcuData[i++] = puiPara->WorkTime[0].StartTime.Min;
mcuReg[i] = WORKTIME1_STOP_HOUR; if(ConfigureModeFlag)
mcuData[i++] = puiPara->WorkTime[0].StopTime.Hour; {
mcuReg[i] = DIGITAL_PIR_SENSITIVITY;
mcuReg[i] = WORKTIME1_STOP_MINUTE; mcuData[i++] = sf_sys_get_flag(DigitPirSensitivity);//PirDigtSensRegValue[SysGetFlag(PirSensitivity)];
mcuData[i++] = puiPara->WorkTime[0].StopTime.Min; mcuReg[i] = DIGITAL_PIR_CFG;
} mcuData[i++] = (sf_sys_get_flag(DigitPirWindowTime) << 4) | sf_sys_get_flag(DigitPirCnt);
else }
{
mcuReg[i] = WORKTIME1_SWITCH;
mcuData[i++] = 0;
mcuReg[i] = WORKTIME1_START_HOUR; if((sf_sys_get_flag(GpsSwitch) || sf_sys_get_flag(FristSendDailyAndGps)) && (ConfigureModeFlag || paraSyncFlag))
mcuData[i++] = 0; {
mcuReg[i] = WORKTIME1_START_MINUTE; mcuReg[i] = GPS_POWER_TIMER_CLEAR;
mcuData[i++] = 0; mcuData[i++] = 1;
mcuReg[i] = GPS_POWER_CTRL;
mcuData[i++] = 1;
}
else
{
mcuReg[i] = GPS_POWER_CTRL;
mcuData[i++] = 0;
}
}
else if(attrId == SF_MCU_PARA)
{
mcuReg[i] = ANALOG_PIR_SENSITIVITY;
temp = sf_sys_get_flag(PirSensitivity);//sf_mcu_analog_pir_sen_convert(puiPara->PirSensitivity);
if((sf_sys_get_flag(GprsMode)) && (gModuleSleep == 1))//hybrid mode 4G module keep sleep
{
temp |= 0x40;
}
mcuReg[i] = WORKTIME1_STOP_HOUR; if((sf_sys_get_flag(GprsMode)) && (simCardInsert))
mcuData[i++] = 0; {
mcuReg[i] = WORKTIME1_STOP_MINUTE; temp |= 0x80;
mcuData[i++] = 0; }
} else
{
//sf_pdp_flg_set(0);
}
if(puiPara->WorkTime2Switch) mcuData[i++] = temp;
{
mcuReg[i] = WORKTIME2_SWITCH; printf("[%s:%d] temp:0x%02x GprsSwitch:%lu simCardInsert:%lu\n", __FUNCTION__, __LINE__, temp, sf_sys_get_flag(GprsSwitch), simCardInsert);
if(puiPara->WorkTime[1].StartTime.Day > 0) mcuReg[i] = DIGITAL_PIR_SENSITIVITY;
{ mcuData[i++] = sf_sys_get_flag(DigitPirSensitivity);//PirDigtSensRegValue[SysGetFlag(PirSensitivity)];
mcuData[i++] = puiPara->WorkTime[1].StartTime.Day; mcuReg[i] = DIGITAL_PIR_CFG;
} mcuData[i++] = (sf_sys_get_flag(DigitPirWindowTime) << 4) | sf_sys_get_flag(DigitPirCnt);
else
{
mcuData[i++] = 0xFF;
}
mcuReg[i] = WORKTIME2_START_HOUR; mcuReg[i] = SYS_STATUS;
mcuData[i++] = puiPara->WorkTime[1].StartTime.Hour; mcuData[i++] = sf_sys_get_flag(CamArmDiable) << 6 | isUsb << 2 | isCardFull << 1 | isCard << 0;
mcuReg[i] = WORKTIME2_START_MINUTE;
mcuData[i++] = puiPara->WorkTime[1].StartTime.Min;
mcuReg[i] = WORKTIME2_STOP_HOUR; if((sf_sys_get_flag(GpsSwitch) || sf_sys_get_flag(FristSendDailyAndGps)) && (ConfigureModeFlag || paraSyncFlag))
mcuData[i++] = puiPara->WorkTime[1].StopTime.Hour; {
mcuReg[i] = WORKTIME2_STOP_MINUTE; mcuReg[i] = GPS_POWER_TIMER_CLEAR;
mcuData[i++] = puiPara->WorkTime[1].StopTime.Min; mcuData[i++] = 1;
} mcuReg[i] = GPS_POWER_CTRL;
else mcuData[i++] = 1;
{ }
mcuReg[i] = WORKTIME2_SWITCH; else
mcuData[i++] = 0; {
mcuReg[i] = GPS_POWER_CTRL;
mcuReg[i] = WORKTIME2_START_HOUR; mcuData[i++] = 0;
mcuData[i++] = 0; }
mcuReg[i] = WORKTIME2_START_MINUTE; }
mcuData[i++] = 0; else if(attrId == SF_MCU_RESET_MODULE)
{
mcuReg[i] = WORKTIME2_STOP_HOUR; mcuReg[i] = SYS_STATUS;
mcuData[i++] = 0; mcuData[i++] = sf_sys_get_flag(CamArmDiable) << 6 | isUsb << 2 | isCardFull << 1 | isCard << 0 | 0x10;
mcuReg[i] = WORKTIME2_STOP_MINUTE; //sf_pdp_flg_set(0);
mcuData[i++] = 0; }
} else if(attrId == SF_MCU_SOFT_UPDATE)
} {
mcuReg[i] = SYS_STATUS;
mcuReg[i] = DSP_WRITE_FLG; //MCU set end
mcuData[i++] = 1; if(val == 1)
{
regsize = i; mcuData[i++] = sf_sys_get_flag(CamArmDiable) << 6 | isUsb << 2 | isCardFull << 1 | isCard << 0 | 0x08;
}
for(i = 0; i < regsize; i++) else
{ {
sf_commu_set_mcu(mcuReg[i], mcuData[i]); mcuData[i++] = sf_sys_get_flag(CamArmDiable) << 6 | isUsb << 2 | isCardFull << 1 | isCard << 0;
} }
return 0; }
else if(attrId == SF_MCU_POWER_RESTART)
{
mcuReg[i] = SYS_STATUS;
mcuData[i++] = sf_sys_get_flag(CamArmDiable) << 6 | isUsb << 2 | isCardFull << 1 | isCard << 0 | 0x20;
}
else if(attrId == SF_MCU_PIR_RESTART)
{
mcuReg[i] = SYS_STATUS;
mcuData[i++] = sf_sys_get_flag(CamArmDiable) << 6 | isUsb << 2 | isCardFull << 1 | isCard << 0 | 0x80;
}
mcuReg[i] = DSP_WRITE_FLG; //MCU set end
mcuData[i++] = 1;
//printf("[%s:%d] mcuData[%d]0x%02x\n", __FUNCTION__, __LINE__, (i - 1), mcuData[(i - 1)]);
#if 0
if((attrId == SF_MCU_POWEROFF) && puiPara->DebugMode && IS_CARD_EXIST)
{
for(j = 0; j < i; j++)
{
printf("W_addr[%2d]=0x%02x\n",mcuReg[j],mcuData[j]);
}
sf_debug_save_log();
}
#endif
sf_mcu_write_multi(mcuReg, mcuData, i);
return SUCCESS;
} }
SF_TIME_S sf_get_mcu_poweroff_date(void) SF_TIME_S sf_get_mcu_poweroff_date(void)
{ {
return sfMcuTime; return sfMcuTime;
@ -818,10 +947,10 @@ void sf_mcu_version_get(unsigned char *mcuVer)
} }
#endif #endif
unsigned char sf_mcu_start_mode_get(void) //unsigned char sf_mcu_start_mode_get(void)
{ //{
return McuPowerOnMode; // return McuPowerOnMode;
} //}
@ -891,6 +1020,82 @@ unsigned short sf_get_mcu_ver(void)
return McuVersion; return McuVersion;
} }
/*************************************************
Function: sf_get_power_on_mode
Description: get power start mode
Input: N/A
Output: N/A
Return: 0:ON mode 1:OFF mode
Others: N/A
*************************************************/
UINT8 sf_get_power_on_mode(void)
{
static int ModeFlag = 1;
if(ModeFlag)
{
ModeFlag = 0;
PowerOnMode = sf_mcu_power_on_para_get(SF_MCU_POWERON);
PowerOnMode &= 0x0f;
if(1 == PowerOnMode)
{
ConfigureModeFlag = 1;
}
}
return PowerOnMode;
}
UINT8 sf_convert_power_on_mode(void)
{
PowerOnMode &= 0x0f;
//printf("[%s:%d]PowerOnMode=0x%x\n",__FUNCTION__,__LINE__,PowerOnMode);
return PowerOnMode;
}
BOOL sf_get_mode_flag(void)
{
//printf("[%s:%d] ConfigureModeFlag:%d\n",__FUNCTION__,__LINE__,ConfigureModeFlag);
return ConfigureModeFlag;
}
/*************************************************
Function: sf_mcu_get_irshtter
Description: get IRSHTTER.
Input: N/A
Output: N/A
Return: IRSHTTER
Others: N/A
*************************************************/
UINT16 sf_mcu_get_irshtter(void)
{
UINT8 dataTemp1 = 0, dataTemp2 = 0;
UINT8 mcuReg[REG_SIZE] = { 0 };
UINT8 mcuData[REG_SIZE] = { 0 };
UINT8 i = 0;
mcuReg[i++] = LUMINANCE_L;
mcuReg[i++] = LUMINANCE_H;
sf_mcu_read_multi(mcuReg, mcuData, i);
i = 0;
dataTemp1= mcuData[i++];
dataTemp2 = mcuData[i++];
IRSHTTER = (dataTemp2 << 8) | dataTemp1;
printf("IRSHTTER = %d\n", IRSHTTER);
return IRSHTTER;
}
void sf_set_module_sleep_flag(UINT8 flag)
{
gModuleSleep = flag;
}
#ifdef __cplusplus #ifdef __cplusplus
#if __cplusplus #if __cplusplus
} }

View File

@ -30,7 +30,7 @@ extern "C" {
#endif #endif
static SF_OTA_ATTRS stOtaAttrs = {0}; static SF_OTA_ATTRS stOtaAttrs = {0};
static SINT32 packet_log_printf(UINT8 *pbuf,UINT16 lenth) SINT32 packet_log_printf(UINT8 *pbuf,UINT16 lenth)
{ {
UINT16 i= 0; UINT16 i= 0;
for(i = 0;i < lenth;i++) for(i = 0;i < lenth;i++)
@ -241,7 +241,7 @@ static SINT32 upgrade_ota_addfileheader(void)
static SINT32 upgrade_md5_check_code_get(SF_CHAR *filename, UINT8 digest[], UINT32 offset, UINT32 size) static SINT32 upgrade_md5_check_code_get(SF_CHAR *filename, UINT8 digest[], UINT32 offset, UINT32 size)
{ {
MD5_CTX context; MD5_CTX context;
UINT32 len = 0, i = 0; UINT32 len = 0;
UINT32 flieSize = 0; UINT32 flieSize = 0;
UINT8 buffer[1024] = {0}; UINT8 buffer[1024] = {0};
int fd = 0; int fd = 0;

View File

@ -1,11 +0,0 @@
CUR_ROOT := $(shell pwd)
DUAL_OS_EN ?= 1
SF_CS_DIR :=$(CUR_ROOT)/../..
ALKAID_DIR ?=$(SF_CS_DIR)/../../../..
PROJECT_DIR ?=$(ALKAID_DIR)/project
include $(SF_CS_DIR)/build/config.mk
MODULE_NAME :=$(CUR_DIR_NAME)
SRC_DIR := $(CUR_ROOT)/src
include $(SF_CS_DIR)/build/modbuild.mk

Binary file not shown.

Binary file not shown.

View File

@ -214,6 +214,21 @@ typedef enum {
#define A_GPIO_0 (0 + A_GPI_SHIFT_BASE) ///< A_GPIO[0] #define A_GPIO_0 (0 + A_GPI_SHIFT_BASE) ///< A_GPIO[0]
#define A_GPIO_1 (1 + A_GPI_SHIFT_BASE) ///< A_GPIO[1] #define A_GPIO_1 (1 + A_GPI_SHIFT_BASE) ///< A_GPIO[1]
#define A_GPIO_2 (2 + A_GPI_SHIFT_BASE) ///< A_GPIO[2] #define A_GPIO_2 (2 + A_GPI_SHIFT_BASE) ///< A_GPIO[2]
/*GPIO DSI Data register*/
#define DSI_GPIO_SHIFT_BASE 224
#define DSI_GPIO_0 (0 + DSI_GPIO_SHIFT_BASE) ///< DSI_GPIO[0]
#define DSI_GPIO_1 (1 + DSI_GPIO_SHIFT_BASE) ///< DSI_GPIO[1]
#define DSI_GPIO_2 (2 + DSI_GPIO_SHIFT_BASE) ///< DSI_GPIO[2]
#define DSI_GPIO_3 (3 + DSI_GPIO_SHIFT_BASE) ///< DSI_GPIO[3]
#define DSI_GPIO_4 (4 + DSI_GPIO_SHIFT_BASE) ///< DSI_GPIO[4]
#define DSI_GPIO_5 (5 + DSI_GPIO_SHIFT_BASE) ///< DSI_GPIO[5]
#define DSI_GPIO_6 (6 + DSI_GPIO_SHIFT_BASE) ///< DSI_GPIO[6]
#define DSI_GPIO_7 (7 + DSI_GPIO_SHIFT_BASE) ///< DSI_GPIO[7]
#define DSI_GPIO_8 (8 + DSI_GPIO_SHIFT_BASE) ///< DSI_GPIO[8]
#define DSI_GPIO_9 (9 + DSI_GPIO_SHIFT_BASE) ///< DSI_GPIO[9]
#define DSI_GPIO_10 (10+ DSI_GPIO_SHIFT_BASE) ///< DSI_GPIO[10]
//@} //@}

View File

@ -11,6 +11,7 @@ CARDV_DIR = $(APP_DIR)/source/cardv
CARDV_SOURCE_DIR = $(CARDV_DIR)/SrcCode CARDV_SOURCE_DIR = $(CARDV_DIR)/SrcCode
CARDV_SOURCE_UIINFO_DIR = $(CARDV_SOURCE_DIR)/UIWnd/LVGL_SPORTCAM/UIInfo CARDV_SOURCE_UIINFO_DIR = $(CARDV_SOURCE_DIR)/UIWnd/LVGL_SPORTCAM/UIInfo
SIFAR_DIR = $(LIBRARY_DIR)/source/sifar/code SIFAR_DIR = $(LIBRARY_DIR)/source/sifar/code
SIFAR_APP_DIR = $(APP_DIR)/source/sf_app/code/include
SIFAR_OUTPUT_DIR = $(LIBRARY_DIR)/source/sifar/output/ SIFAR_OUTPUT_DIR = $(LIBRARY_DIR)/source/sifar/output/
MEDIA_DIR = $(NVT_HDAL_DIR)/vendor/media MEDIA_DIR = $(NVT_HDAL_DIR)/vendor/media
CARDV_SOURCE_LVGL_SPORTCAM_DIR = $(CARDV_SOURCE_DIR)/UIWnd/LVGL_SPORTCAM CARDV_SOURCE_LVGL_SPORTCAM_DIR = $(CARDV_SOURCE_DIR)/UIWnd/LVGL_SPORTCAM
@ -32,8 +33,11 @@ EXTRA_INCLUDE += \
-I$(CARDV_SOURCE_UIINFO_DIR) \ -I$(CARDV_SOURCE_UIINFO_DIR) \
-I$(CARDV_SOURCE_DIR) \ -I$(CARDV_SOURCE_DIR) \
-I$(SIFAR_DIR)/include \ -I$(SIFAR_DIR)/include \
-I$(SIFAR_APP_DIR) \
-I$(INCLUDE_DIR) \ -I$(INCLUDE_DIR) \
-I$(KDRV_DIR)/include \ -I$(KDRV_DIR)/include \
-I$(KDRV_DIR)/include/plat \
-I$(KDRV_DIR)/include/comm \
-I$(KFLOW_DIR)/include \ -I$(KFLOW_DIR)/include \
-I$(MEDIA_DIR)/include \ -I$(MEDIA_DIR)/include \
-I$(CARDV_SOURCE_LVGL_SPORTCAM_DIR) \ -I$(CARDV_SOURCE_LVGL_SPORTCAM_DIR) \
@ -69,7 +73,12 @@ SRC = \
code/source/common/sf_common.c \ code/source/common/sf_common.c \
code/source/common/sf_led.c \ code/source/common/sf_led.c \
code/source/common/sf_battery.c \ code/source/common/sf_battery.c \
code/source/module/sf_tcp.c code/source/module/sf_tcp.c \
$(APP_DIR)/source/sf_app/code/source/logMng/sf_log.c \
$(APP_DIR)/source/sf_app/code/source/qrcodeMng/sf_base64.c \
$(APP_DIR)/source/sf_app/code/source/paramMng/sf_param_common.c \
$(APP_DIR)/source/sf_app/code/source/commMng/sf_message_queue.c \
$(APP_DIR)/source/sf_app/code/source/commMng/sf_share_mem.c
# code/source/common/sf_message_queue.c \ # code/source/common/sf_message_queue.c \
# code/source/common/sf_share_mem.c \ # code/source/common/sf_share_mem.c \

View File

@ -20,5 +20,7 @@ void sf_battery_thread_init(void);
UINT8 sf_get_night_led_flag(void); UINT8 sf_get_night_led_flag(void);
void sf_set_night_led_flag(UINT8 flag); void sf_set_night_led_flag(UINT8 flag);
UINT32 sf_battery_level_get(void); UINT32 sf_battery_level_get(void);
void sf_view_osd_battery_draw(UINT8 bShow);
UINT8 sf_battery_value_get(UINT8 nightMode);
#endif #endif

View File

@ -65,6 +65,7 @@ BOOL sf_cmd_mcu_power_on_para_get(unsigned char argc, char **argv);
UINT32 sf_set_pir_sensitivity(UINT8 pirs); UINT32 sf_set_pir_sensitivity(UINT8 pirs);
void sf_usb_mux_s(UINT32 cnt); void sf_usb_mux_s(UINT32 cnt);
BOOL sf_cmd_usb_mux_s(unsigned char argc, char **argv); BOOL sf_cmd_usb_mux_s(unsigned char argc, char **argv);
void sf_cardv_message_thread_init(void);
#define SF_SD_DISK "A:" #define SF_SD_DISK "A:"
#define SF_SD_ROOT "/mnt/sd/" #define SF_SD_ROOT "/mnt/sd/"

View File

@ -17,6 +17,9 @@
//#include <sf_log.h> //#include <sf_log.h>
//#include <sf_message_queue.h> //#include <sf_message_queue.h>
//#include <sf_share_mem.h> //#include <sf_share_mem.h>
#include <sf_param_enum.h>
#include <sf_message_queue.h>
#include <sf_commMng.h>
#endif #endif

View File

@ -21,9 +21,26 @@
#ifndef __SF_LED_H__ #ifndef __SF_LED_H__
#define __SF_LED_H__ #define __SF_LED_H__
#include "UIInfo/UIInfo.h"
typedef enum LedId_e typedef enum LedId_e
{ {
#if HW_S530
SF_LED_STATUS_R,
SF_LED_STATUS_G,
SF_LED_SD_G,
SF_LED_SD_R,
SF_LED_WIFI,
SF_LED_BAT1,
SF_LED_BAT2,
SF_LED_BAT3,
SF_LED_BAT4,
SF_LED_SIG1_R,
SF_LED_SIG1_G,
SF_LED_SIG2,
SF_LED_SIG3,
SF_LED_SIG4,
#endif
SF_LED_BUSY, SF_LED_BUSY,
SF_LED_ALL, SF_LED_ALL,
}LedId_t; }LedId_t;
@ -47,21 +64,25 @@ typedef enum LedSysState_e
SF_LED_SYS_STATE_SD_NORMAL,/*6*/ SF_LED_SYS_STATE_SD_NORMAL,/*6*/
SF_LED_SYS_STATE_SD_ERROR, SF_LED_SYS_STATE_SD_ERROR,
SF_LED_SYS_STATE_SD_FULL, SF_LED_SYS_STATE_SD_FULL,
SF_LED_SYS_STATE_WIFI_DISCONNECT,/*9*/ SF_LED_SYS_STATE_SD_FORMAT_START,
SF_LED_SYS_STATE_SD_FORMAT_SUCCESS,
SF_LED_SYS_STATE_SD_FORMAT_FAIL,
SF_LED_SYS_STATE_SD_FORMAT_EXIT,
SF_LED_SYS_STATE_WIFI_DISCONNECT,/*13*/
SF_LED_SYS_STATE_WIFI_CONNECTED, SF_LED_SYS_STATE_WIFI_CONNECTED,
SF_LED_SYS_STATE_BAT_0,/*11*/ SF_LED_SYS_STATE_BAT_0,/*15*/
SF_LED_SYS_STATE_BAT_1, SF_LED_SYS_STATE_BAT_1,
SF_LED_SYS_STATE_BAT_2, SF_LED_SYS_STATE_BAT_2,
SF_LED_SYS_STATE_BAT_3, SF_LED_SYS_STATE_BAT_3,
SF_LED_SYS_STATE_BAT_4, SF_LED_SYS_STATE_BAT_4,
/*SF_LED_SYS_STATE_BAT_LOW,*/ /*SF_LED_SYS_STATE_BAT_LOW,*/
SF_LED_SYS_STATE_GPRS_NO_SIGNAL,/*16*/ SF_LED_SYS_STATE_GPRS_NO_SIGNAL,/*20*/
SF_LED_SYS_STATE_GPRS_SIGNAL_0, SF_LED_SYS_STATE_GPRS_SIGNAL_0,
SF_LED_SYS_STATE_GPRS_SIGNAL_1, SF_LED_SYS_STATE_GPRS_SIGNAL_1,
SF_LED_SYS_STATE_GPRS_SIGNAL_2, SF_LED_SYS_STATE_GPRS_SIGNAL_2,
SF_LED_SYS_STATE_GPRS_SIGNAL_3, SF_LED_SYS_STATE_GPRS_SIGNAL_3,
SF_LED_SYS_STATE_GPRS_SIGNAL_4, SF_LED_SYS_STATE_GPRS_SIGNAL_4,
SF_LED_SYS_STATE_GPRS_SEARCH,/*22*/ SF_LED_SYS_STATE_GPRS_SEARCH,/*26*/
SF_LED_SYS_STATE_SIM_ERROR, SF_LED_SYS_STATE_SIM_ERROR,
SF_LED_SYS_STATE_SERVER_FAIL, SF_LED_SYS_STATE_SERVER_FAIL,
SF_LED_SYS_STATE_DEBUG_ON, SF_LED_SYS_STATE_DEBUG_ON,
@ -71,7 +92,7 @@ typedef enum LedSysState_e
SF_LED_SYS_STATE_GOING_TO_PIR, SF_LED_SYS_STATE_GOING_TO_PIR,
SF_LED_SYS_STATE_EXIT_GO_TO_PIR, SF_LED_SYS_STATE_EXIT_GO_TO_PIR,
SF_LED_SYS_STATE_POWER_OFF, SF_LED_SYS_STATE_POWER_OFF,
SF_LED_SYS_STATE_PIR_DETECT, SF_LED_SYS_STATE_PIR_DETECT,/*36*/
SF_LED_SYS_STATE_PIR_NOT_DETECT, SF_LED_SYS_STATE_PIR_NOT_DETECT,
}LedSysState_t; }LedSysState_t;

View File

@ -26,7 +26,7 @@
#define SUCCESS 0 #define SUCCESS 0
#define FAIL 1 #define FAIL 1
#define SF_MCU_NIGHT_MODE_LUMINANCE 380 #define SF_MCU_NIGHT_MODE_LUMINANCE 600
#define DIGITAL_PIR 1 #define DIGITAL_PIR 1
@ -420,6 +420,10 @@ void sf_set_sim_insert(UINT8 sim);
UINT8 sf_get_mcu_rtc_set_sys(void); UINT8 sf_get_mcu_rtc_set_sys(void);
unsigned short sf_get_mcu_ver(void); unsigned short sf_get_mcu_ver(void);
UINT16 sf_mcu_get_irshtter(void); UINT16 sf_mcu_get_irshtter(void);
void sf_mcu_set_irshtter(UINT16 data);
UINT16 sf_get_irshtter(void);
void sf_set_power_on_mode(UINT8 data);
void sf_set_module_sleep_flag(UINT8 flag);
#endif #endif

View File

@ -237,6 +237,48 @@ UINT32 sf_battery_adc_value_get_once(void)
} }
} }
#if HW_S530
/*************************************************
Function: sf_battery_level_update
Description: Get battery Voltage with Level.
Input: N/A
Output: N/A
Return: N/A
Others: N/A
*************************************************/
void sf_battery_level_update(void)
{
UINT8 batteryVal = 0;
UINT8 batteryLevel = SF_BATT_LEVEL_0;
batteryVal = sf_battery_value_get(sf_get_night_led_flag());
if(batteryVal >= 70)
{
batteryLevel = SF_BATT_LEVEL_4;
}
else if(batteryVal >= 40)
{
batteryLevel = SF_BATT_LEVEL_3;
}
else if(batteryVal >= 20)
{
batteryLevel = SF_BATT_LEVEL_2;
}
else if(batteryVal >= 1)
{
batteryLevel = SF_BATT_LEVEL_1;
}
else
{
batteryLevel = SF_BATT_LEVEL_0;
}
sf_LatestBattLevel = batteryLevel;
}
#else
/************************************************* /*************************************************
Function: sf_battery_level_update Function: sf_battery_level_update
Description: Get battery Voltage with Level. Description: Get battery Voltage with Level.
@ -250,7 +292,7 @@ void sf_battery_level_update(void)
UINT8 batteryVal = 0; UINT8 batteryVal = 0;
UINT8 batteryLevel = SF_BATT_LEVEL_0; UINT8 batteryLevel = SF_BATT_LEVEL_0;
if(IsNightLedOn) if(sf_get_night_led_flag())
{ {
return; return;
} }
@ -353,7 +395,7 @@ void sf_battery_level_update(void)
printf("battery levle=%d\n", sf_LatestBattLevel); printf("battery levle=%d\n", sf_LatestBattLevel);
} }
} }
#endif
/************************************************* /*************************************************
Function: sf_check_low_battery Function: sf_check_low_battery
Description: check is low battery in auto mode. Description: check is low battery in auto mode.
@ -373,7 +415,7 @@ BOOL sf_check_low_battery(void)
sf_battery_level_update(); sf_battery_level_update();
if(IsNightLedOn) if(sf_get_night_led_flag())
{ {
if(SysGetFlag(BatteryType) == SF_BATT_ALKALINE) if(SysGetFlag(BatteryType) == SF_BATT_ALKALINE)
{ {
@ -658,6 +700,8 @@ void sf_battery_level_polling(void)
} }
} }
} }
sf_battery_level_update();
ret = sf_check_low_battery(); ret = sf_check_low_battery();
@ -668,16 +712,22 @@ void sf_battery_level_polling(void)
if(batTempLevel != sf_LatestBattLevel) if(batTempLevel != sf_LatestBattLevel)
{ {
//sp5kHostMsgSend(APP_UI_MSG_TRANSFER_REFLUSH, 0, 0, 0);
batTempLevel = sf_LatestBattLevel; batTempLevel = sf_LatestBattLevel;
#if HW_S530
sf_view_osd_battery_draw(TRUE);
#endif
} }
if(ret == TRUE) if(ret == TRUE)
{ {
if(IsNightLedOn) if(sf_get_night_led_flag())
{ {
//sf_ir_led_set(0, 0, 0); sf_ir_led_set(0, 0, 0, 0);
} }
//the Module not need sleep.
//gModuleSleep = 0;
sf_set_module_sleep_flag(0);
if(battEmpty == 0) if(battEmpty == 0)
{ {
@ -686,6 +736,22 @@ void sf_battery_level_polling(void)
//Ux_PostEvent(NVTEVT_SYSTEM_SHUTDOWN, 1, APP_POWER_OFF_BATT_EMPTY); //shutdown start //Ux_PostEvent(NVTEVT_SYSTEM_SHUTDOWN, 1, APP_POWER_OFF_BATT_EMPTY); //shutdown start
} }
} }
else if(sf_LatestBattLevel == SF_BATT_LEVEL_1)
{
if((sf_battery_value_get(sf_get_night_led_flag()) < 10) && (sf_led_get(SF_LED_BAT1) != SF_LED_STATE_SLOW_FLASHING))
{
printf("[%s:%d] SF_LED_BAT1 SF_LED_STATE_SLOW_FLASHING\n", __FUNCTION__, __LINE__);
sf_led_set(SF_LED_BAT1, SF_LED_STATE_SLOW_FLASHING);
}
else if((sf_battery_value_get(sf_get_night_led_flag()) == 10) && (sf_led_get(SF_LED_BAT1) != SF_LED_STATE_ON))
{
printf("[%s:%d] SF_LED_BAT1 SF_LED_STATE_SLOW_FLASHING\n", __FUNCTION__, __LINE__);
sf_led_set(SF_LED_BAT1, SF_LED_STATE_ON);
}
}
else
{
}
} }
THREAD_RETTYPE sf_battery_check_thread(void *arg) THREAD_RETTYPE sf_battery_check_thread(void *arg)
{ {
@ -740,4 +806,291 @@ UINT32 sf_battery_level_get(void)
return (UINT32)sf_LatestBattLevel; return (UINT32)sf_LatestBattLevel;
} }
void sf_view_osd_battery_draw(UINT8 bShow)
{
printf("[%s:%d] s\n", __FUNCTION__, __LINE__);
#if HW_S530
if(!sf_get_mode_flag())
{
return;
}
if(bShow)
{
switch(sf_battery_level_get())
{
case SF_BATT_LEVEL_0:
sf_sys_status_led_set(SF_LED_SYS_STATE_BAT_0);
break;
case SF_BATT_LEVEL_1:
sf_sys_status_led_set(SF_LED_SYS_STATE_BAT_1);
break;
case SF_BATT_LEVEL_2:
sf_sys_status_led_set(SF_LED_SYS_STATE_BAT_2);
break;
case SF_BATT_LEVEL_3:
sf_sys_status_led_set(SF_LED_SYS_STATE_BAT_3);
break;
case SF_BATT_LEVEL_4:
sf_sys_status_led_set(SF_LED_SYS_STATE_BAT_4);
break;
default:
break;
}
}
#endif
printf("[%s:%d] e\n", __FUNCTION__, __LINE__);
}
/*************************************************
Function: sf_battery_value_get
Description: get battery value x%
Input: nightMode or no
Output: N/A
Return: battery value x%
Others: N/A
*************************************************/
UINT8 sf_battery_value_get(UINT8 nightMode)
{
UINT8 value = 0;
UINT8 batteryVal = 0;
if(IsPowerDcIn == 0)
{
//printf("BatMedian:%d\n", BatMedian);
if(LiPolymerVoltageVal)
{
batteryVal = LiPolymerVoltageVal;
if(batteryVal < 65)
{
if(nightMode && (batteryVal >= 43))
value = 1;
else
value = 0;
}
else if(batteryVal < 71)
{
value = 1;
}
else if(batteryVal < 72)
{
value = 10;
}
else if(batteryVal < 73)
{
value = 20;
}
else if(batteryVal < 74)
{
value = 30;
}
else if(batteryVal < 75)
{
value = 40;
}
else if(batteryVal < 76)
{
value = 50;
}
else if(batteryVal < 77)
{
value = 60;
}
else if(batteryVal < 78)
{
value = 70;
}
else if(batteryVal < 79)
{
value = 80;
}
else if(batteryVal < 81)
{
value = 90;
}
else
{
value = 100;
}
}
else
{
batteryVal = BatVoltageVal;
if(SysGetFlag(BatteryType) == SF_BATT_ALKALINE) //ALK
{
if(batteryVal < 62)
{
if(nightMode && (batteryVal >= 43))
value = 1;
else
value = 0;
}
else if(batteryVal < 65)
{
value = 1;
}
else if(batteryVal < 69)
{
value = 10;
}
else if(batteryVal < 71)
{
value = 20;
}
else if(batteryVal < 72)
{
value = 30;
}
else if(batteryVal < 73)
{
value = 40;
}
else if(batteryVal < 75)
{
value = 50;
}
else if(batteryVal < 76)
{
value = 60;
}
else if(batteryVal < 78)
{
value = 70;
}
else if(batteryVal < 80)
{
value = 80;
}
else if(batteryVal < 83)
{
value = 90;
}
else
{
value = 100;
}
}
else if(SysGetFlag(BatteryType) == SF_BATT_NI_MH) //NIH
{
if(batteryVal < 60)
{
if(nightMode && (batteryVal >= 43))
value = 1;
else
value = 0;
}
else if(batteryVal < 61)
{
value = 1;
}
else if(batteryVal < 62)
{
value = 10;
}
else if(batteryVal < 64)
{
value = 20;
}
else if(batteryVal < 65)
{
value = 30;
}
else if(batteryVal < 67)
{
value = 40;
}
else if(batteryVal < 68)
{
value = 50;
}
else if(batteryVal < 70)
{
value = 60;
}
else if(batteryVal < 71)
{
value = 70;
}
else if(batteryVal < 73)
{
value = 80;
}
else if(batteryVal < 75)
{
value = 90;
}
else
{
value = 100;
}
}
else
{
if(batteryVal < 62)
{
if(nightMode && (batteryVal >= 43))
value = 1;
else
value = 0;
}
else if(batteryVal < 75)
{
value = 1;
}
else if(batteryVal < 80)
{
value = 10;
}
else if(batteryVal < 82)
{
value = 20;
}
else if(batteryVal < 83)
{
value = 30;
}
else if(batteryVal < 84)
{
value = 40;
}
else if(batteryVal < 86)
{
value = 50;
}
else if(batteryVal < 91)
{
value = 60;
}
else if(batteryVal < 92)
{
value = 70;
}
else if(batteryVal < 93)
{
value = 80;
}
else if(batteryVal < 94)
{
value = 90;
}
else
{
value = 100;
}
}
}
}
else
{
value = 100;
}
return value;
}
#endif #endif

View File

@ -29,6 +29,7 @@
#include <sys/ioctl.h> #include <sys/ioctl.h>
#include <unistd.h> #include <unistd.h>
#include <stdlib.h> #include <stdlib.h>
#include <pthread.h>
#include <kwrap/util.h> #include <kwrap/util.h>
#include <sys/wait.h> #include <sys/wait.h>
@ -53,6 +54,10 @@
#include "UIFlowPhoto/UIFlowPhotoFuncs.h" #include "UIFlowPhoto/UIFlowPhotoFuncs.h"
#include "UIFlowMovie/UIFlowMovieFuncs.h" #include "UIFlowMovie/UIFlowMovieFuncs.h"
#include <sf_message_queue.h>
#include <sf_param_enum.h>
#include <sf_keymng.h>
#include <sf_param_struct.h>
BOOL isGoing2PowerOff = FALSE; BOOL isGoing2PowerOff = FALSE;
UINT16 AutoOfftime = 0; UINT16 AutoOfftime = 0;
@ -1096,4 +1101,200 @@ BOOL sf_cmd_usb_mux_s(unsigned char argc, char **argv)
return TRUE; return TRUE;
} }
/*************************************************
Function: sf_signal_led_show
Description: signal led show
Input: signal level
Output: N/A
Return: N/A
Others: N/A
*************************************************/
void sf_signal_led_show(UINT8 signalLevel)
{
if(signalLevel == 0)
sf_sys_status_led_set(SF_LED_SYS_STATE_GPRS_SIGNAL_0);
else if (signalLevel == 1)
sf_sys_status_led_set(SF_LED_SYS_STATE_GPRS_SIGNAL_1);
else if (signalLevel == 2)
sf_sys_status_led_set(SF_LED_SYS_STATE_GPRS_SIGNAL_2);
else if (signalLevel == 3)
sf_sys_status_led_set(SF_LED_SYS_STATE_GPRS_SIGNAL_3);
else
sf_sys_status_led_set(SF_LED_SYS_STATE_GPRS_SIGNAL_4);
}
static SINT32 sf_cardv_proccess_cmd_mcu(SF_MESSAGE_BUF_S *pMessageBuf)
{
printf("[%s:%d] ID = %#x\n", __FUNCTION__, __LINE__,pMessageBuf->arg1);
//SF_MESSAGE_BUF_S stMessageBuf = {0};
switch(pMessageBuf->arg1)
{
case SF_MCU_CMD_POWERON:
sf_set_power_on_mode(pMessageBuf->arg2);
sf_mcu_set_irshtter(pMessageBuf->arg3);
break;
default:
break;
}
return SF_SUCCESS;
}
static SINT32 sf_cardv_proccess_cmd_key(SF_MESSAGE_BUF_S *pMessageBuf)
{
printf("[%s:%d] ID = %#x\n", __FUNCTION__, __LINE__,pMessageBuf->arg1);
//SF_MESSAGE_BUF_S stMessageBuf = {0};
switch(pMessageBuf->arg1)
{
case SF_EVENT_KEY_SHORT_CLICK:
if(SF_KEY_PIN_DATAREADY == pMessageBuf->arg2)
{
sf_mcu_dataready_ck(pMessageBuf->arg3);
}
break;
default:
break;
}
return SF_SUCCESS;
}
static SINT32 app_proccess_cmd_para_update(SF_MESSAGE_BUF_S *pMessageBuf)
{
printf("[%s:%d] ID = %#x\n", __FUNCTION__, __LINE__,pMessageBuf->arg1);
switch(pMessageBuf->arg1)
{
case SF_PARA_CMD_UPDATE:
sf_share_mem_customer_update();
break;
default:
break;
}
return SF_SUCCESS;
}
void sf_cardv_proccess_cmd_gprs(SF_MESSAGE_BUF_S *pMessageBuf)
{
UINT8 netSearchStep = pMessageBuf->arg1;
UINT8 cq_Signal = pMessageBuf->arg2;
UINT32 simCardInsert = ((pMessageBuf->arg3) >> 0) & 1;
UINT8 gGPRSNoRespone = ((pMessageBuf->arg3) >> 1) & 1;
UINT32 FtpOpenOk = ((pMessageBuf->arg3) >> 2) & 1;
if (sf_get_fw_update())
return;
if(SysGetFlag(GprsSwitch) == SF_ON)
{
printf("simCardInsert=%d gprs_search_process=%d cq_Signal=%d gGPRSNoRespone=%d ", simCardInsert, netSearchStep, cq_Signal, gGPRSNoRespone);
if(!simCardInsert)
{
sf_sys_status_led_set(SF_LED_SYS_STATE_SIM_ERROR);
}
else
{
if(netSearchStep == GPRS_SEARCH_STEP_IDLE)
{
sf_sys_status_led_set(SF_LED_SYS_STATE_GPRS_SEARCH);
}
/*else if(gprs_search_process == GPRS_SEARCH_STEP_INIT)
{
appOsdLib_TextIDDraw(0, 32, SP5K_GFX_ALIGN_TOP_LEFT, ID_STR_MODULE_INIT);
}*/
else if(netSearchStep == GPRS_SEARCH_STEP_SEARCH)
{
sf_sys_status_led_set(SF_LED_SYS_STATE_GPRS_SEARCH);
}
else if(netSearchStep == GPRS_SEARCH_STEP_SYNC_TIME)
{
//sf_signal_led_show(sf_signal_level_get(puiPara->NetFlagG, cq_Signal));
}
else if(netSearchStep == GPRS_SEARCH_STEP_GPS_LOCATE)
{
//sf_signal_led_show(sf_signal_level_get(puiPara->NetFlagG, cq_Signal));
}
/*else if(gprs_search_process == GPRS_SEARCH_STEP_INIT_FAILED)
{
appOsdLib_TextIDDraw(0, 32, SP5K_GFX_ALIGN_TOP_LEFT, ID_STR_MODULE_ERROR);
}*/
else
{
if((cq_Signal == 0) && (gGPRSNoRespone == 0))
{
if(!sf_get_fw_update())
{
sf_sys_status_led_set(SF_LED_SYS_STATE_SIM_ERROR);
sf_sys_status_led_set(SF_LED_SYS_STATE_ERROR);
}
}
else if(cq_Signal == 0)
{
sf_sys_status_led_set(SF_LED_SYS_STATE_GPRS_NO_SIGNAL);
}
else if(FtpOpenOk == FAIL)
{
sf_sys_status_led_set(SF_LED_SYS_STATE_SERVER_FAIL);
}
else //if(cq_Signal < 32)
{
sf_signal_led_show(sf_signal_level_get(SysGetFlag(NetGeneration), cq_Signal));
}
}
}
}
}
void* sf_cardv_message_thread(void *argv)
{
SINT32 ret = 0;
SF_MESSAGE_BUF_S stMessagebuf = {0};
while(1)
{
ret = sf_com_message_recv_from_cardv(&stMessagebuf);
if(ret !=SF_SUCCESS)
{
continue;
}
printf("cmdId:%#x,paramBuf[%d]\n",stMessagebuf.cmdId,stMessagebuf.arg1);
switch(stMessagebuf.cmdId)
{
case CMD_MCU:
sf_cardv_proccess_cmd_mcu(&stMessagebuf);
break;
case CMD_KEY:
sf_cardv_proccess_cmd_key(&stMessagebuf);
break;
case CMD_PARA:
app_proccess_cmd_para_update(&stMessagebuf);
break;
case CMD_GPRS:
sf_cardv_proccess_cmd_gprs(&stMessagebuf);
break;
default:
break;
}
}
}
void sf_cardv_message_thread_init(void)
{
signed int s32Ret = 0;
pthread_t cardv_tStartUpThread = 0;
s32Ret = pthread_create(&cardv_tStartUpThread, NULL, sf_cardv_message_thread, NULL);
if (0 != s32Ret)
{
printf("%s:%d thread create failed\n", __FUNCTION__, __LINE__);
}
return;
}

View File

@ -48,18 +48,39 @@
static BOOL isGoToPir = FALSE; static BOOL isGoToPir = FALSE;
static BOOL isUsbIn = FALSE; static BOOL isUsbIn = FALSE;
#if HW_S530
static BOOL isRunningLedOn = FALSE;
static UINT8 FormatSdFlag = 0;
#endif
LedInfo_t LedInfo[SF_LED_ALL] = { LedInfo_t LedInfo[SF_LED_ALL] = {
/* ledId, ledstate, times, gpioNum */ /* ledId, ledstate, times, gpioNum */
{SF_LED_BUSY, SF_LED_STATE_ON, 0, GPIO_GREEN_LED}, #if HW_S530
{SF_LED_STATUS_R, SF_LED_STATE_OFF, 0, GPIO_LED_STATUS_R},
{SF_LED_STATUS_G, SF_LED_STATE_OFF, 0, GPIO_LED_STATUS_G},
{SF_LED_SD_G, SF_LED_STATE_OFF, 0, GPIO_LED_SD_G},
{SF_LED_SD_R, SF_LED_STATE_OFF, 0, GPIO_LED_SD_R},
{SF_LED_WIFI, SF_LED_STATE_OFF, 0, GPIO_LED_WIFI_B},
{SF_LED_BAT1, SF_LED_STATE_OFF, 0, GPIO_LED_BAT_1},
{SF_LED_BAT2, SF_LED_STATE_OFF, 0, GPIO_LED_BAT_2},
{SF_LED_BAT3, SF_LED_STATE_OFF, 0, GPIO_LED_BAT_3},
{SF_LED_BAT4, SF_LED_STATE_OFF, 0, GPIO_LED_BAT_4},
{SF_LED_SIG1_R, SF_LED_STATE_OFF, 0, GPIO_LED_SIG_1_R},
{SF_LED_SIG1_G, SF_LED_STATE_OFF, 0, GPIO_LED_SIG_1_G},
{SF_LED_SIG2, SF_LED_STATE_OFF, 0, GPIO_LED_SIG_2},
{SF_LED_SIG3, SF_LED_STATE_OFF, 0, GPIO_LED_SIG_3},
{SF_LED_SIG4, SF_LED_STATE_OFF, 0, GPIO_LED_SIG_4},
#endif
{SF_LED_BUSY, SF_LED_STATE_OFF, 0, GPIO_GREEN_LED},
}; };
ID FLG_ID_SF_LED = 0; //ID FLG_ID_SF_LED = 0;
// Flag // Flag
#define FLG_SF_LED_IDLE FLGPTN_BIT(0) //#define FLG_SF_LED_IDLE FLGPTN_BIT(0)
#define FLG_SF_LED FLGPTN_BIT(1) //#define FLG_SF_LED FLGPTN_BIT(1)
#define FLG_SF_LED_ALL 0xFFFFFFFF //#define FLG_SF_LED_ALL 0xFFFFFFFF
static void sf_led_on(LedId_t ledId) static void sf_led_on(LedId_t ledId)
{ {
@ -75,6 +96,90 @@ static void sf_led_off(LedId_t ledId)
//printf("[%s:%d] gpioNum:%d ledId:%d\n", __FUNCTION__, __LINE__,LedInfo[ledId].gpioNum,ledId); //printf("[%s:%d] gpioNum:%d ledId:%d\n", __FUNCTION__, __LINE__,LedInfo[ledId].gpioNum,ledId);
gpio_set_value(LedInfo[ledId].gpioNum, SF_LED_STATE_OFF); gpio_set_value(LedInfo[ledId].gpioNum, SF_LED_STATE_OFF);
} }
#if HW_S530
void sf_set_runningLed(BOOL status)
{
isRunningLedOn = status;
}
THREAD_RETTYPE sf_runningLed_thread(void *arg)
{
THREAD_ENTRY();
UINT8 run = 0;
UINT8 time = 0;
while(1)
{
if(isRunningLedOn)
{
time++;
if(time == 50)
{
time = 0;
switch(run)
{
case 0:
sf_led_set(SF_LED_SIG1_R, SF_LED_STATE_OFF);
sf_led_set(SF_LED_SIG1_G, SF_LED_STATE_OFF);
sf_led_set(SF_LED_SIG2, SF_LED_STATE_OFF);
sf_led_set(SF_LED_SIG3, SF_LED_STATE_OFF);
sf_led_set(SF_LED_SIG4, SF_LED_STATE_OFF);
run++;
break;
case 1:
sf_led_set(SF_LED_SIG1_R, SF_LED_STATE_OFF);
sf_led_set(SF_LED_SIG1_G, SF_LED_STATE_ON);
sf_led_set(SF_LED_SIG2, SF_LED_STATE_OFF);
sf_led_set(SF_LED_SIG3, SF_LED_STATE_OFF);
sf_led_set(SF_LED_SIG4, SF_LED_STATE_OFF);
run++;
break;
case 2:
sf_led_set(SF_LED_SIG1_R, SF_LED_STATE_OFF);
sf_led_set(SF_LED_SIG1_G, SF_LED_STATE_ON);
sf_led_set(SF_LED_SIG2, SF_LED_STATE_ON);
sf_led_set(SF_LED_SIG3, SF_LED_STATE_OFF);
sf_led_set(SF_LED_SIG4, SF_LED_STATE_OFF);
run++;
break;
case 3:
sf_led_set(SF_LED_SIG1_R, SF_LED_STATE_OFF);
sf_led_set(SF_LED_SIG1_G, SF_LED_STATE_ON);
sf_led_set(SF_LED_SIG2, SF_LED_STATE_ON);
sf_led_set(SF_LED_SIG3, SF_LED_STATE_ON);
sf_led_set(SF_LED_SIG4, SF_LED_STATE_OFF);
run++;
break;
case 4:
sf_led_set(SF_LED_SIG1_R, SF_LED_STATE_OFF);
sf_led_set(SF_LED_SIG1_G, SF_LED_STATE_ON);
sf_led_set(SF_LED_SIG2, SF_LED_STATE_ON);
sf_led_set(SF_LED_SIG3, SF_LED_STATE_ON);
sf_led_set(SF_LED_SIG4, SF_LED_STATE_ON);
run = 0;
break;
}
}
}
else
{
run = 0;
time = 0;
}
vos_util_delay_ms(10);
}
printf("[%s:%d] e \n", __FUNCTION__, __LINE__);
THREAD_RETURN(0);
}
#endif
THREAD_RETTYPE sf_led_thread(void *arg) THREAD_RETTYPE sf_led_thread(void *arg)
@ -82,18 +187,18 @@ THREAD_RETTYPE sf_led_thread(void *arg)
THREAD_ENTRY(); THREAD_ENTRY();
UINT8 i = 0; UINT8 i = 0;
FLGPTN FlgPtn; //FLGPTN FlgPtn;
printf("[%s:%d] s\n", __FUNCTION__, __LINE__); printf("[%s:%d] s\n", __FUNCTION__, __LINE__);
while((!sf_is_usb_flag()) && (sf_get_power_off_flag() != 1)) while((!sf_is_usb_flag()) && (sf_get_power_off_flag() != 1))
{ {
if((!isGoToPir) && (!isUsbIn)) /*if((!isGoToPir) && (!isUsbIn))
{ {
vos_flag_set(FLG_ID_SF_LED, FLG_SF_LED_IDLE); vos_flag_set(FLG_ID_SF_LED, FLG_SF_LED_IDLE);
//PROFILE_TASK_IDLE(); //PROFILE_TASK_IDLE();
vos_flag_wait(&FlgPtn, FLG_ID_SF_LED, FLG_SF_LED, TWF_ORW | TWF_CLR); vos_flag_wait(&FlgPtn, FLG_ID_SF_LED, FLG_SF_LED, TWF_ORW | TWF_CLR);
//PROFILE_TASK_BUSY(); //PROFILE_TASK_BUSY();
vos_flag_clr(FLG_ID_SF_LED, FLG_SF_LED_IDLE); vos_flag_clr(FLG_ID_SF_LED, FLG_SF_LED_IDLE);
} }*/
for(i = 0; i < SF_LED_ALL; i++) for(i = 0; i < SF_LED_ALL; i++)
{ {
@ -139,13 +244,49 @@ THREAD_RETTYPE sf_led_thread(void *arg)
else if(LedInfo[i].ledstate == SF_LED_STATE_ON) else if(LedInfo[i].ledstate == SF_LED_STATE_ON)
{ {
sf_led_on(LedInfo[i].ledId); sf_led_on(LedInfo[i].ledId);
} }
#if HW_S530
else if(LedInfo[i].ledstate == SF_LED_STATE_SLOW_FLASHING)
{
if(LedInfo[i].times == 0)
{
sf_led_on(LedInfo[i].ledId);
}
else if(LedInfo[i].times == 50) //50*10ms
{
sf_led_off(LedInfo[i].ledId);
}
else if(LedInfo[i].times == 100) //100*10ms
{
sf_led_on(LedInfo[i].ledId);
LedInfo[i].times = 0;
}
LedInfo[i].times++;
}
else if(LedInfo[i].ledstate == SF_LED_STATE_FLASHING)
{
if(LedInfo[i].times == 0)
{
sf_led_on(LedInfo[i].ledId);
}
else if(LedInfo[i].times == 25) //25*10ms
{
sf_led_off(LedInfo[i].ledId);
}
else if(LedInfo[i].times == 50) //50*10ms
{
sf_led_on(LedInfo[i].ledId);
LedInfo[i].times = 0;
}
LedInfo[i].times++;
}
#endif
} }
vos_util_delay_ms(10); vos_util_delay_ms(10);
} }
vos_flag_destroy(FLG_ID_SF_LED); /*vos_flag_destroy(FLG_ID_SF_LED);
FLG_ID_SF_LED = 0; FLG_ID_SF_LED = 0;*/
printf("[%s:%d] e \n", __FUNCTION__, __LINE__); printf("[%s:%d] e \n", __FUNCTION__, __LINE__);
THREAD_RETURN(0); THREAD_RETURN(0);
} }
@ -187,6 +328,7 @@ Ledstate_t sf_led_get(LedId_t ledId)
void sf_led_init(void) void sf_led_init(void)
{ {
return;
UINT8 i = 0; UINT8 i = 0;
static UINT8 dofirst = 1; static UINT8 dofirst = 1;
printf("[%s:%d] s\n", __FUNCTION__, __LINE__); printf("[%s:%d] s\n", __FUNCTION__, __LINE__);
@ -206,11 +348,16 @@ void sf_led_init(void)
} }
vos_flag_create(&FLG_ID_SF_LED, NULL, "FLG_ID_SF_LED"); //vos_flag_create(&FLG_ID_SF_LED, NULL, "FLG_ID_SF_LED");
/*thread creat*/ /*thread creat*/
s_handle_led = vos_task_create(sf_led_thread, NULL, "sf_led_thread", 25, 2048); s_handle_led = vos_task_create(sf_led_thread, NULL, "sf_led_thread", 25, 2048);
vos_task_resume(s_handle_led); vos_task_resume(s_handle_led);
printf("[%s:%d] e\n", __FUNCTION__, __LINE__); #if HW_S530
/*thread creat*/
s_handle_led = vos_task_create(sf_runningLed_thread, NULL, "sf_runningLed_thread", 25, 2048);
vos_task_resume(s_handle_led);
#endif
printf("[%s:%d] e SF_LED_ALL:%d\n", __FUNCTION__, __LINE__,SF_LED_ALL);
} }
@ -218,10 +365,230 @@ void sf_led_init(void)
void sf_sys_status_led_set(LedSysState_t ledSysStateId) void sf_sys_status_led_set(LedSysState_t ledSysStateId)
{ {
if((ledSysStateId != SF_LED_SYS_STATE_PIR_DETECT) && (ledSysStateId != SF_LED_SYS_STATE_PIR_NOT_DETECT)) SF_MESSAGE_BUF_S stMessageBuf = {0};
stMessageBuf.arg1 = ledSysStateId;
stMessageBuf.cmdId = CMD_LED;
sf_com_message_send_to_app(&stMessageBuf);
return;
//if((ledSysStateId != SF_LED_SYS_STATE_PIR_DETECT) && (ledSysStateId != SF_LED_SYS_STATE_PIR_NOT_DETECT))
printf("SYS LED SET %d\n", ledSysStateId); printf("SYS LED SET %d\n", ledSysStateId);
switch(ledSysStateId) switch(ledSysStateId)
{ {
#if HW_S530
case SF_LED_SYS_STATE_ERROR:
sf_led_set(SF_LED_STATUS_G, SF_LED_STATE_OFF);
sf_led_set(SF_LED_STATUS_R, SF_LED_STATE_FLASHING);
break;
case SF_LED_SYS_STATE_NORMAL:
sf_led_set(SF_LED_STATUS_G, SF_LED_STATE_ON);
sf_led_set(SF_LED_STATUS_R, SF_LED_STATE_OFF);
break;
case SF_LED_SYS_STATE_UPDATE:
sf_led_set(SF_LED_STATUS_G, SF_LED_STATE_FLASHING);
sf_led_set(SF_LED_STATUS_R, SF_LED_STATE_OFF);
break;
case SF_LED_SYS_STATE_SENDING:
sf_led_set(SF_LED_STATUS_G, SF_LED_STATE_SLOW_FLASHING);
sf_led_set(SF_LED_STATUS_R, SF_LED_STATE_OFF);
break;
case SF_LED_SYS_STATE_SEND_FAIL:
sf_led_set(SF_LED_STATUS_G, SF_LED_STATE_OFF);
sf_led_set(SF_LED_STATUS_R, SF_LED_STATE_ON);
break;
case SF_LED_SYS_STATE_SEND_SUCCESS:
sf_led_set(SF_LED_STATUS_G, SF_LED_STATE_ON);
sf_led_set(SF_LED_STATUS_R, SF_LED_STATE_OFF);
break;
case SF_LED_SYS_STATE_SD_NORMAL:
sf_led_set(SF_LED_SD_G, SF_LED_STATE_ON);
sf_led_set(SF_LED_SD_R, SF_LED_STATE_OFF);
break;
case SF_LED_SYS_STATE_SD_ERROR:
sf_led_set(SF_LED_SD_G, SF_LED_STATE_OFF);
sf_led_set(SF_LED_SD_R, SF_LED_STATE_ON);
break;
case SF_LED_SYS_STATE_SD_FULL:
sf_led_set(SF_LED_SD_G, SF_LED_STATE_ON);
sf_led_set(SF_LED_SD_R, SF_LED_STATE_ON);
break;
case SF_LED_SYS_STATE_SD_FORMAT_START:
FormatSdFlag = 1;
sf_led_set(SF_LED_BUSY, SF_LED_STATE_OFF);
sf_set_runningLed(0);
break;
case SF_LED_SYS_STATE_SD_FORMAT_SUCCESS:
FormatSdFlag = 2;
break;
case SF_LED_SYS_STATE_SD_FORMAT_FAIL:
FormatSdFlag = 3;
break;
case SF_LED_SYS_STATE_SD_FORMAT_EXIT:
FormatSdFlag = 0;
sf_led_set(SF_LED_BUSY, SF_LED_STATE_ON);
//sf_set_runningLed(0);
break;
case SF_LED_SYS_STATE_WIFI_DISCONNECT:
sf_led_set(SF_LED_WIFI, SF_LED_STATE_SLOW_FLASHING);
break;
case SF_LED_SYS_STATE_WIFI_CONNECTED:
sf_led_set(SF_LED_WIFI, SF_LED_STATE_ON);
break;
case SF_LED_SYS_STATE_BAT_0:
sf_led_set(SF_LED_BAT1, SF_LED_STATE_FLASHING);
sf_led_set(SF_LED_BAT2, SF_LED_STATE_OFF);
sf_led_set(SF_LED_BAT3, SF_LED_STATE_OFF);
sf_led_set(SF_LED_BAT4, SF_LED_STATE_OFF);
break;
case SF_LED_SYS_STATE_BAT_1:
sf_led_set(SF_LED_BAT1, SF_LED_STATE_ON);
sf_led_set(SF_LED_BAT2, SF_LED_STATE_OFF);
sf_led_set(SF_LED_BAT3, SF_LED_STATE_OFF);
sf_led_set(SF_LED_BAT4, SF_LED_STATE_OFF);
break;
case SF_LED_SYS_STATE_BAT_2:
sf_led_set(SF_LED_BAT1, SF_LED_STATE_ON);
sf_led_set(SF_LED_BAT2, SF_LED_STATE_ON);
sf_led_set(SF_LED_BAT3, SF_LED_STATE_OFF);
sf_led_set(SF_LED_BAT4, SF_LED_STATE_OFF);
break;
case SF_LED_SYS_STATE_BAT_3:
sf_led_set(SF_LED_BAT1, SF_LED_STATE_ON);
sf_led_set(SF_LED_BAT2, SF_LED_STATE_ON);
sf_led_set(SF_LED_BAT3, SF_LED_STATE_ON);
sf_led_set(SF_LED_BAT4, SF_LED_STATE_OFF);
break;
case SF_LED_SYS_STATE_BAT_4:
sf_led_set(SF_LED_BAT1, SF_LED_STATE_ON);
sf_led_set(SF_LED_BAT2, SF_LED_STATE_ON);
sf_led_set(SF_LED_BAT3, SF_LED_STATE_ON);
sf_led_set(SF_LED_BAT4, SF_LED_STATE_ON);
break;
case SF_LED_SYS_STATE_GPRS_NO_SIGNAL:
sf_set_runningLed(0);
sf_led_set(SF_LED_SIG1_R, SF_LED_STATE_ON);
sf_led_set(SF_LED_SIG1_G, SF_LED_STATE_OFF);
sf_led_set(SF_LED_SIG2, SF_LED_STATE_OFF);
sf_led_set(SF_LED_SIG3, SF_LED_STATE_OFF);
sf_led_set(SF_LED_SIG4, SF_LED_STATE_OFF);
break;
case SF_LED_SYS_STATE_GPRS_SIGNAL_0:
sf_set_runningLed(0);
sf_led_set(SF_LED_SIG1_R, SF_LED_STATE_OFF);
sf_led_set(SF_LED_SIG1_G, SF_LED_STATE_OFF);
sf_led_set(SF_LED_SIG2, SF_LED_STATE_OFF);
sf_led_set(SF_LED_SIG3, SF_LED_STATE_OFF);
sf_led_set(SF_LED_SIG4, SF_LED_STATE_OFF);
break;
case SF_LED_SYS_STATE_GPRS_SIGNAL_1:
sf_set_runningLed(0);
sf_led_set(SF_LED_SIG1_R, SF_LED_STATE_OFF);
sf_led_set(SF_LED_SIG1_G, SF_LED_STATE_ON);
sf_led_set(SF_LED_SIG2, SF_LED_STATE_OFF);
sf_led_set(SF_LED_SIG3, SF_LED_STATE_OFF);
sf_led_set(SF_LED_SIG4, SF_LED_STATE_OFF);
break;
case SF_LED_SYS_STATE_GPRS_SIGNAL_2:
sf_set_runningLed(0);
sf_led_set(SF_LED_SIG1_R, SF_LED_STATE_OFF);
sf_led_set(SF_LED_SIG1_G, SF_LED_STATE_ON);
sf_led_set(SF_LED_SIG2, SF_LED_STATE_ON);
sf_led_set(SF_LED_SIG3, SF_LED_STATE_OFF);
sf_led_set(SF_LED_SIG4, SF_LED_STATE_OFF);
break;
case SF_LED_SYS_STATE_GPRS_SIGNAL_3:
sf_set_runningLed(0);
sf_led_set(SF_LED_SIG1_R, SF_LED_STATE_OFF);
sf_led_set(SF_LED_SIG1_G, SF_LED_STATE_ON);
sf_led_set(SF_LED_SIG2, SF_LED_STATE_ON);
sf_led_set(SF_LED_SIG3, SF_LED_STATE_ON);
sf_led_set(SF_LED_SIG4, SF_LED_STATE_OFF);
break;
case SF_LED_SYS_STATE_GPRS_SIGNAL_4:
sf_set_runningLed(0);
sf_led_set(SF_LED_SIG1_R, SF_LED_STATE_OFF);
sf_led_set(SF_LED_SIG1_G, SF_LED_STATE_ON);
sf_led_set(SF_LED_SIG2, SF_LED_STATE_ON);
sf_led_set(SF_LED_SIG3, SF_LED_STATE_ON);
sf_led_set(SF_LED_SIG4, SF_LED_STATE_ON);
break;
case SF_LED_SYS_STATE_GPRS_SEARCH:
sf_set_runningLed(1);
break;
case SF_LED_SYS_STATE_SIM_ERROR:
sf_set_runningLed(0);
sf_led_set(SF_LED_SIG1_R, SF_LED_STATE_FLASHING);
sf_led_set(SF_LED_SIG1_G, SF_LED_STATE_OFF);
sf_led_set(SF_LED_SIG2, SF_LED_STATE_OFF);
sf_led_set(SF_LED_SIG3, SF_LED_STATE_OFF);
sf_led_set(SF_LED_SIG4, SF_LED_STATE_OFF);
break;
case SF_LED_SYS_STATE_SERVER_FAIL:
sf_set_runningLed(0);
sf_led_set(SF_LED_SIG1_R, SF_LED_STATE_SLOW_FLASHING);
sf_led_set(SF_LED_SIG1_G, SF_LED_STATE_OFF);
sf_led_set(SF_LED_SIG2, SF_LED_STATE_OFF);
sf_led_set(SF_LED_SIG3, SF_LED_STATE_OFF);
sf_led_set(SF_LED_SIG4, SF_LED_STATE_OFF);
break;
case SF_LED_SYS_STATE_DEBUG_ON:
sf_led_set(SF_LED_SD_G, SF_LED_STATE_FLASHING);
sf_led_set(SF_LED_SD_R, SF_LED_STATE_OFF);
break;
case SF_LED_SYS_STATE_DEBUG_OFF:
sf_led_set(SF_LED_STATUS_G, SF_LED_STATE_ON);
sf_led_set(SF_LED_STATUS_R, SF_LED_STATE_ON);
break;
case SF_LED_SYS_STATE_RESET:
sf_set_runningLed(0);
sf_led_set(SF_LED_ALL, SF_LED_STATE_ON);
break;
case SF_LED_SYS_STATE_USB_IN:
sf_set_runningLed(0);
sf_led_set(SF_LED_ALL, SF_LED_STATE_OFF);
sf_led_set(SF_LED_BUSY, SF_LED_STATE_ON);
sf_led_set(SF_LED_STATUS_G, SF_LED_STATE_ON);
isUsbIn = TRUE;
break;
#endif
//#if HW_S510
// case SF_LED_SYS_STATE_UPDATE:
// sf_led_set(SF_LED_BUSY, SF_LED_STATE_SLOW_FLASHING);
// break;
//#endif
case SF_LED_SYS_STATE_GOING_TO_PIR: case SF_LED_SYS_STATE_GOING_TO_PIR:
isGoToPir = TRUE; isGoToPir = TRUE;
sf_led_set(SF_LED_BUSY, SF_LED_STATE_OFF); sf_led_set(SF_LED_BUSY, SF_LED_STATE_OFF);
@ -233,6 +600,9 @@ void sf_sys_status_led_set(LedSysState_t ledSysStateId)
break; break;
case SF_LED_SYS_STATE_POWER_OFF: case SF_LED_SYS_STATE_POWER_OFF:
#if HW_S530
sf_set_runningLed(0);
#endif
sf_led_set(SF_LED_ALL, SF_LED_STATE_OFF); sf_led_set(SF_LED_ALL, SF_LED_STATE_OFF);
isGoToPir = FALSE; isGoToPir = FALSE;
break; break;
@ -248,8 +618,8 @@ void sf_sys_status_led_set(LedSysState_t ledSysStateId)
default: default:
break; break;
} }
if(FLG_ID_SF_LED) //if(FLG_ID_SF_LED)
vos_flag_set(FLG_ID_SF_LED, FLG_SF_LED); // vos_flag_set(FLG_ID_SF_LED, FLG_SF_LED);
} }
void sf_trigger_time_led_cb(UINT32 cnt) void sf_trigger_time_led_cb(UINT32 cnt)

View File

@ -74,6 +74,11 @@ UINT32 sf_check_card_full(void)
if(0 == SysGetFlag(SdLoopSwitch)) if(0 == SysGetFlag(SdLoopSwitch))
{ {
IsCardFull = TRUE; IsCardFull = TRUE;
SF_MESSAGE_BUF_S stMessageBuf = {0};
stMessageBuf.arg1 = CMD_SD_FULL;
stMessageBuf.cmdId = CMD_SD;
sf_com_message_send_to_app(&stMessageBuf);
} }
printf("%s:%d sd card is full diskFree=%d\r\n",__FUNCTION__,__LINE__,diskFree); printf("%s:%d sd card is full diskFree=%d\r\n",__FUNCTION__,__LINE__,diskFree);
} }

View File

@ -803,7 +803,8 @@ void sf_mcu_dataready_get(void)
if(startMode == 0) //OFF if(startMode == 0) //OFF
{ {
sf_set_power_off_flag(1); sf_set_power_off_flag(1);
gModuleSleep = 0; //gModuleSleep = 0;
sf_set_module_sleep_flag(0);
//LCD_BACKLIGHT_OFF; //LCD_BACKLIGHT_OFF;
//profLogPrintf(0,"[sf_mcu_dataready_get],APP_POWER_OFF_NORMAL"); //profLogPrintf(0,"[sf_mcu_dataready_get],APP_POWER_OFF_NORMAL");
printf("[power off] %s(%d)\n", __FUNCTION__, __LINE__); printf("[power off] %s(%d)\n", __FUNCTION__, __LINE__);
@ -825,6 +826,7 @@ void sf_mcu_dataready_get(void)
{ {
if((startMode == 0) || (startMode == 1)) //PIR MODE: ON->OFF/ ON->SETUP if((startMode == 0) || (startMode == 1)) //PIR MODE: ON->OFF/ ON->SETUP
{ {
sf_set_module_sleep_flag(0);
gModuleSleep = 0; //power off 4G module gModuleSleep = 0; //power off 4G module
sf_set_power_off_flag(1); sf_set_power_off_flag(1);
printf("[power off] %s(%d)\n", __FUNCTION__, __LINE__); printf("[power off] %s(%d)\n", __FUNCTION__, __LINE__);
@ -2017,8 +2019,16 @@ unsigned short sf_get_mcu_ver(void)
*************************************************/ *************************************************/
UINT16 sf_mcu_get_irshtter(void) UINT16 sf_mcu_get_irshtter(void)
{ {
UINT8 dataTemp1 = 0, dataTemp2 = 0; SF_MESSAGE_BUF_S stMessageBuf = {0};
stMessageBuf.arg1 = SF_MCU_CMD_POWERON;
stMessageBuf.cmdId = CMD_MCU;
sf_com_message_send_to_app(&stMessageBuf);
printf("IRSHTTER = %d\n", IRSHTTER);
return IRSHTTER;
/*
UINT8 dataTemp1 = 0, dataTemp2 = 0;
#if HUNTING_MCU_I2C == ENABLE #if HUNTING_MCU_I2C == ENABLE
sf_mcu_read(LUMINANCE_L, &dataTemp1); sf_mcu_read(LUMINANCE_L, &dataTemp1);
sf_mcu_read(LUMINANCE_H, &dataTemp2); sf_mcu_read(LUMINANCE_H, &dataTemp2);
@ -2040,7 +2050,70 @@ UINT16 sf_mcu_get_irshtter(void)
printf("IRSHTTER = %d\n", IRSHTTER); printf("IRSHTTER = %d\n", IRSHTTER);
return IRSHTTER;*/
}
/*************************************************
Function: sf_get_irshtter
Description: get IRSHTTER.
Input: N/A
Output: N/A
Return: IRSHTTER
Others: N/A
*************************************************/
UINT16 sf_get_irshtter(void)
{
return IRSHTTER; return IRSHTTER;
} }
/*************************************************
Function: sf_mcu_set_irshtter
Description: get IRSHTTER.
Input: N/A
Output: N/A
Return: IRSHTTER
Others: N/A
*************************************************/
void sf_mcu_set_irshtter(UINT16 data)
{
IRSHTTER = data;
printf("IRSHTTER = %d\n", IRSHTTER);
}
/*************************************************
Function: sf_set_power_on_mode
Description: set power start mode
Input: N/A
Output: N/A
Return: 0:ON mode 1:OFF mode
Others: N/A
*************************************************/
void sf_set_power_on_mode(UINT8 data)
{
static int ModeFlag = 1;
if(ModeFlag)
{
ModeFlag = 0;
PowerOnMode = data;
PowerOnMode &= 0x0f;
if(1 == PowerOnMode)
{
ConfigureModeFlag = 1;
}
}
printf("start mode = %d\n", PowerOnMode);
}
void sf_set_module_sleep_flag(UINT8 flag)
{
gModuleSleep = flag;
#if HUNTING_CAMERA_4G == ENABLE
SF_MESSAGE_BUF_S stMessageBuf = {0};
stMessageBuf.arg2 = (SINT32)gModuleSleep;
stMessageBuf.arg1 = SF_MCU_CMD_MODULE_SLEEP;
stMessageBuf.cmdId = CMD_MCU;
sf_com_message_send_to_app(&stMessageBuf);
#endif
}

View File

@ -16,7 +16,7 @@
pwm2{pinmux = <0x000000>;}; pwm2{pinmux = <0x000000>;};
ccnt{pinmux = <0x0>;}; ccnt{pinmux = <0x0>;};
audio{pinmux = <0x0>;}; audio{pinmux = <0x0>;};
lcd{pinmux = <0x10000000>;}; lcd{pinmux = <0x0>;};
tv{pinmux = <0x0>;}; tv{pinmux = <0x0>;};
eth{pinmux = <0x0>;}; eth{pinmux = <0x0>;};
misc{pinmux = <0x0>;}; misc{pinmux = <0x0>;};

View File

@ -156,6 +156,8 @@ UINT32 DrvGPIO_GetPhotoMovieModeFromMonitor(void)
switch(value) switch(value)
{ {
case 0: case 0:
sf_mcu_reg_set(SF_MCU_POWEROFF,0);
break;
case 1: case 1:
g_uiBootMode = DX_HUNTING_MODE_OTHER; g_uiBootMode = DX_HUNTING_MODE_OTHER;
break; break;

View File

@ -1042,8 +1042,6 @@ void flow_preview_uninit_module(void)
} }
#if 1 //for pre set ae #if 1 //for pre set ae
static UINT32 ae_adc_tbl[57][3] = { static UINT32 ae_adc_tbl[57][3] = {
#if 1 //for S530 200K RSS photodie #if 1 //for S530 200K RSS photodie
{980, 44, 1000}, {980, 44, 1000},
@ -1068,11 +1066,11 @@ static UINT32 ae_adc_tbl[57][3] = {
{813, 8333, 1280}, {813, 8333, 1280},
{809, 8333, 2380}, {809, 8333, 2380},
{799, 16666, 4300}, {799, 16666, 4300},
{787, 16666, 6390}, {787, 16666, 4300},//6390},
{735, 16666, 7990}, {735, 16666, 4300},// 7990},
{686, 16666, 8460}, {686, 16666, 6390},//8460},
{652, 16666, 9530}, {652, 16666, 6390},//9530},
{613, 16666, 10690}, {613, 16666, 7990},//10690},
{576, 16666, 2310},//night {576, 16666, 2310},//night
{541, 16666, 2310}, {541, 16666, 2310},
{509, 16666, 2310}, {509, 16666, 2310},
@ -1082,19 +1080,19 @@ static UINT32 ae_adc_tbl[57][3] = {
{399, 16666, 2310}, {399, 16666, 2310},
{363, 16666, 2310}, {363, 16666, 2310},
{322, 16666, 2310},// 12190}, {322, 16666, 2310},// 12190},
{288, 16666, 2310},// 26600}, {288, 33333, 4300},// 26600},
{246, 16666, 2310}, //45770}, {246, 33333, 4300}, //45770},
{216, 16666, 2310}, {216, 33333, 4300},
{188, 16666, 1000}, {188, 33333, 4300},
{162, 16666, 1000}, {162, 33333, 4300},
{151, 16666, 1000}, {151, 33333, 5300},
{138, 16666, 1000}, {138, 33333, 5300},
{118, 16666, 1000}, {118, 33333, 5300},
{96, 16666, 1280}, {96, 33333, 5300},
{80, 16666, 2000}, {80, 33333, 5300},
{62, 16666, 2000}, {62, 33333, 5300},
{48, 20000, 2000}, {48, 33333, 5300},
{35, 20000, 2000}, {35, 33333, 2000},
{26, 33333, 1100}, {26, 33333, 1100},
{19, 33333, 1100}, {19, 33333, 1100},
{13, 33333, 1100}, {13, 33333, 1100},
@ -1165,12 +1163,12 @@ static UINT32 ae_adc_tbl[57][3] = {
#endif #endif
}; };
void ae_adc_get_exp_photo(UINT16 adc_value, UINT32 *exptime, UINT32 *isogain) void ae_adc_get_exp_photo(UINT16 adc_value, UINT32 *exptime, UINT32 *isogain)
{ {
UINT32 idx0=0, idx1=0; UINT32 idx0=0, idx1=0;
UINT32 exptime0, exptime1, isogain0, isogain1; UINT32 exptime0, isogain0;
UINT32 adc_ev, ev0, ev1; //UINT32 exptime1, isogain1;
//UINT32 adc_ev, ev0, ev1;
for(idx1=1; idx1<57; idx1++) { for(idx1=1; idx1<57; idx1++) {
//if(adc_value > ae_adc_tbl[idx1][0]) //if(adc_value > ae_adc_tbl[idx1][0])
@ -1188,15 +1186,15 @@ void ae_adc_get_exp_photo(UINT16 adc_value, UINT32 *exptime, UINT32 *isogain)
exptime0 = ae_adc_tbl[idx0][1]; exptime0 = ae_adc_tbl[idx0][1];
isogain0 = (ae_adc_tbl[idx0][2]); isogain0 = (ae_adc_tbl[idx0][2]);
exptime1 = ae_adc_tbl[idx1][1]; //exptime1 = ae_adc_tbl[idx1][1];
isogain1 = (ae_adc_tbl[idx1][2]); //isogain1 = (ae_adc_tbl[idx1][2]);
ev0 = (exptime0 * isogain0); ///ev0 = (exptime0 * isogain0);
ev1 = (exptime1 * isogain1); //ev1 = (exptime1 * isogain1);
adc_ev = ((ev1 - ev0) * (adc_value - ae_adc_tbl[idx1][0]))/(ae_adc_tbl[idx0][0] - ae_adc_tbl[idx1][0]) + ev0; //adc_ev = ((ev1 - ev0) * (adc_value - ae_adc_tbl[idx1][0]))/(ae_adc_tbl[idx0][0] - ae_adc_tbl[idx1][0]) + ev0;
*exptime = exptime0; *exptime = exptime0;
*isogain = (adc_ev / exptime0); *isogain = isogain0;//(adc_ev / exptime0);
} }
DBG_WRN("idx = %d, %d, adc = %d, fast open preset exp = %d, %d\r\n", idx0, idx1, adc_value, *exptime, *isogain); DBG_WRN("idx = %d, %d, adc = %d, fast open preset exp = %d, %d\r\n", idx0, idx1, adc_value, *exptime, *isogain);
} }

View File

@ -98,7 +98,7 @@
#define POWERON_TRACE DISABLE //stop and wait for user enter cmd: "dsc boot" #define POWERON_TRACE DISABLE //stop and wait for user enter cmd: "dsc boot"
#define POWERON_BOOT_REPORT ENABLE #define POWERON_BOOT_REPORT ENABLE
#define POWERON_FAST_BOOT DISABLE #define POWERON_FAST_BOOT DISABLE
#define POWERON_FAST_BOOT_MSG ENABLE//DISABLE // disable boot msg for fast boot, but hard to debug #define POWERON_FAST_BOOT_MSG DISABLE // disable boot msg for fast boot, but hard to debug
#define POWERON_FAST_CPU2_BOOT DISABLE #define POWERON_FAST_CPU2_BOOT DISABLE
#define POWERON_FAST_RECORD DISABLE #define POWERON_FAST_RECORD DISABLE
#define POWERON_FAST_WIFI DISABLE //NOTE: need to enable POWERON_FAST_CPU2_BOOT too #define POWERON_FAST_WIFI DISABLE //NOTE: need to enable POWERON_FAST_CPU2_BOOT too
@ -936,6 +936,7 @@
#define HUNTING_CAMERA_SYS_PARTITION_NAME sys #define HUNTING_CAMERA_SYS_PARTITION_NAME sys
#define HUNTING_CAMERA_BOOT_LINUX ENABLE #define HUNTING_CAMERA_BOOT_LINUX ENABLE
#define HUNTING_CAMERA_MCU ENABLE #define HUNTING_CAMERA_MCU ENABLE
#define HUNTING_CAMERA_4G ENABLE//DISABLE
#define PHOTO_STAMP_ISP_STATUS ENABLE #define PHOTO_STAMP_ISP_STATUS ENABLE
#define PHOTO_PREVIEW_SLICE_ENC_FUNC ENABLE #define PHOTO_PREVIEW_SLICE_ENC_FUNC ENABLE
#define PHOTO_PREVIEW_SLICE_ENC_VER2_FUNC ENABLE #define PHOTO_PREVIEW_SLICE_ENC_VER2_FUNC ENABLE

View File

@ -390,9 +390,16 @@ static void insmod_sensor(void)
static void sie_vd_cb(const UINT32 vd_cnt) static void sie_vd_cb(const UINT32 vd_cnt)
{ {
if(vd_cnt == (PHOTOFAST_CAP_FRAME_CNT-1)){ /*if(vd_cnt == 0){
vos_perf_list_mark("sie_vd", __LINE__, vd_cnt); vos_perf_list_mark("sie_vd", __LINE__, vd_cnt);
} }
else if(vd_cnt == 1){
vos_perf_list_mark("sie_vd", __LINE__, vd_cnt);
}
else if(vd_cnt == (PHOTOFAST_CAP_FRAME_CNT-1)){
vos_perf_list_mark("sie_vd", __LINE__, vd_cnt);
}*/
vos_perf_list_mark("sie_vd", __LINE__, vd_cnt);
//if(vd_cnt == 3) //if(vd_cnt == 3)
// sf_trigger_time_led_cb(vd_cnt); // sf_trigger_time_led_cb(vd_cnt);
} }

View File

@ -1309,8 +1309,8 @@ THREAD_RETTYPE PhotoFast_FlowPreviewThread(void *arg)
HD_PATH_ID vprc_path = 0, vout_path = 0, vcap_path = 0; HD_PATH_ID vprc_path = 0, vout_path = 0, vcap_path = 0;
UINT32 max_cnt = 0; UINT32 max_cnt = 0;
BOOL start_cap = FALSE; BOOL start_cap = FALSE;
//IQT_SHARPNESS_LV sharpness_lv = {0}; IQT_SHARPNESS_LV sharpness_lv = {0};
//IQT_NR_LV nr_lv = {0}; IQT_NR_LV nr_lv = {0};
AET_STATUS_INFO ae_status = {0}; AET_STATUS_INFO ae_status = {0};
flow_preview_get_path(&vcap_path, FLOW_PREIVEW_VCAP_PATH, 0); flow_preview_get_path(&vcap_path, FLOW_PREIVEW_VCAP_PATH, 0);
@ -1363,14 +1363,14 @@ THREAD_RETTYPE PhotoFast_FlowPreviewThread(void *arg)
nvt_cmdsys_runcmd("ae set_speed 0 128 600 600 100 "); nvt_cmdsys_runcmd("ae set_speed 0 128 600 600 100 ");
//nvt_cmdsys_runcmd("iq dbg 0 0 "); //nvt_cmdsys_runcmd("iq dbg 0 0 ");
//nvt_cmdsys_runcmd("iq dbg 0 8 "); //nvt_cmdsys_runcmd("iq dbg 0 8 ");
/*
nr_lv.id = 0; nr_lv.id = 0;
nr_lv.lv = 200; nr_lv.lv = 175;
vendor_isp_set_iq(IQT_ITEM_NR_LV, &nr_lv); //50~200 vendor_isp_set_iq(IQT_ITEM_NR_LV, &nr_lv); //50~200
sharpness_lv.id = 0; sharpness_lv.id = 0;
sharpness_lv.lv = 50; sharpness_lv.lv = 70;
vendor_isp_set_iq(IQT_ITEM_SHARPNESS_LV, &sharpness_lv); vendor_isp_set_iq(IQT_ITEM_SHARPNESS_LV, &sharpness_lv);
*/
} }
#endif #endif
@ -1439,7 +1439,19 @@ THREAD_RETTYPE PhotoFast_FlowPreviewThread(void *arg)
//if(g_bFrmCnt < PHOTOFAST_CAP_FRAME_CNT){ //if(g_bFrmCnt < PHOTOFAST_CAP_FRAME_CNT){
// vos_perf_list_mark("yuv", __LINE__, 0); // vos_perf_list_mark("yuv", __LINE__, 0);
//} //}
/* if(0){//++g_bFrmCnt >= 5){//PHOTOFAST_CAP_FRAME_CNT){ if(capturcnt==1){//++g_bFrmCnt >= 5){//PHOTOFAST_CAP_FRAME_CNT){
nr_lv.id = 0;
nr_lv.lv = 125;
vendor_isp_set_iq(IQT_ITEM_NR_LV, &nr_lv); //50~200
sharpness_lv.id = 0;
sharpness_lv.lv = 90;
vendor_isp_set_iq(IQT_ITEM_SHARPNESS_LV, &sharpness_lv);
}
if(capturcnt==2){//++g_bFrmCnt >= 5){//PHOTOFAST_CAP_FRAME_CNT){
nr_lv.id = 0; nr_lv.id = 0;
nr_lv.lv = 100; nr_lv.lv = 100;
@ -1448,9 +1460,9 @@ THREAD_RETTYPE PhotoFast_FlowPreviewThread(void *arg)
sharpness_lv.lv = 100; sharpness_lv.lv = 100;
vendor_isp_set_iq(IQT_ITEM_SHARPNESS_LV, &sharpness_lv); vendor_isp_set_iq(IQT_ITEM_SHARPNESS_LV, &sharpness_lv);
}*/ }
if (captureflag) capturcnt++; if (captureflag) capturcnt++;
if (capturcnt>6) { if (capturcnt>4) {
// DBG_ERR(">>>>>>>>>>>>capture adj:%d capcnt:%d frmcnt:%d\r\n",ae_status.status_info.state_adj,capturcnt,g_bFrmCnt); // DBG_ERR(">>>>>>>>>>>>capture adj:%d capcnt:%d frmcnt:%d\r\n",ae_status.status_info.state_adj,capturcnt,g_bFrmCnt);
//if(++g_bFrmCnt >= 10){//PHOTOFAST_CAP_FRAME_CNT){ //if(++g_bFrmCnt >= 10){//PHOTOFAST_CAP_FRAME_CNT){
#if HUNTING_PHOTO_FAST_AE_60_FPS == ENABLE #if HUNTING_PHOTO_FAST_AE_60_FPS == ENABLE
@ -1627,8 +1639,15 @@ static void PhotoFast_ShutDown(void)
vos_perf_list_dump(); vos_perf_list_dump();
PhotoFast_TriggerFrm_Dump(); PhotoFast_TriggerFrm_Dump();
#endif #endif
#if HUNTING_CAMERA_MCU #if HUNTING_CAMERA_MCU == ENABLE
sf_mcu_reg_set(SF_MCU_POWEROFF,0);
#if HUNTING_CAMERA_4G == ENABLE
fastboot_set_done(BOOT_FLOW_BOOT);
flow_wait_linux();
#else
sf_mcu_reg_set(SF_MCU_POWEROFF,0);
#endif
#else #else
fastboot_set_done(BOOT_FLOW_BOOT); fastboot_set_done(BOOT_FLOW_BOOT);
flow_wait_linux(); flow_wait_linux();
@ -1640,7 +1659,7 @@ static void PhotoFast_ShutDown(void)
PhotoFast_TriggerFrm_Dump(); PhotoFast_TriggerFrm_Dump();
#endif #endif
#if HUNTING_CAMERA_MCU #if HUNTING_CAMERA_MCU == ENABLE
sf_mcu_reg_set(SF_MCU_POWEROFF,0); sf_mcu_reg_set(SF_MCU_POWEROFF,0);
#endif #endif
hwpower_set_power_key(POWER_ID_PSW1, 0xFF); hwpower_set_power_key(POWER_ID_PSW1, 0xFF);
@ -1658,6 +1677,8 @@ void Set_NIGHTMODE(UINT32 id, UINT8 isSnapVideo)
AWBT_MANUAL awb_manual = {0}; AWBT_MANUAL awb_manual = {0};
HD_RESULT hd_ret; HD_RESULT hd_ret;
//IQT_EDGE_PARAM edge = {0};
if(sf_is_night_mode(0) ==TRUE) if(sf_is_night_mode(0) ==TRUE)
{ {
if ((hd_ret = vendor_isp_init()) != HD_OK) { if ((hd_ret = vendor_isp_init()) != HD_OK) {
@ -1674,11 +1695,22 @@ void Set_NIGHTMODE(UINT32 id, UINT8 isSnapVideo)
awb_manual.manual.g_gain= 256; awb_manual.manual.g_gain= 256;
awb_manual.manual.b_gain= 256; awb_manual.manual.b_gain= 256;
vendor_isp_set_awb(AWBT_ITEM_MANUAL, &awb_manual); vendor_isp_set_awb(AWBT_ITEM_MANUAL, &awb_manual);
night_mode.id = 0; night_mode.id = 0;
night_mode.mode = 1; night_mode.mode = 1;
vendor_isp_set_iq(IQT_ITEM_NIGHT_MODE, &night_mode); vendor_isp_set_iq(IQT_ITEM_NIGHT_MODE, &night_mode);
/*
edge.id =0;
vendor_isp_get_iq(IQT_ITEM_EDGE_PARAM, &edge);
edge.edge.es_map_lut[8] = 64;
edge.edge.es_map_lut[9] = 72;
edge.edge.es_map_lut[10] = 80;
edge.edge.es_map_lut[12] = 84;
edge.edge.es_map_lut[13] = 84;
edge.edge.es_map_lut[14] = 84;
edge.edge.es_map_lut[15] = 84;
vendor_isp_set_iq(IQT_ITEM_EDGE_PARAM, &edge);
*/
if ((hd_ret = vendor_isp_uninit()) != HD_OK) { if ((hd_ret = vendor_isp_uninit()) != HD_OK) {
DBG_ERR("vendor_isp_uninit() fail(%d)\r\n", hd_ret); DBG_ERR("vendor_isp_uninit() fail(%d)\r\n", hd_ret);
} }

View File

@ -51,6 +51,86 @@ extern UINT32 Cap_cnt;
extern UINT32 ae_preset_exp; extern UINT32 ae_preset_exp;
extern UINT32 ae_preset_iso; extern UINT32 ae_preset_iso;
void PhotoStamp_get_isp_status_jpg(UINT32 id, char* Buf, UINT32 BufLen)
{
AET_STATUS_INFO ae_status = {0};
AWBT_STATUS awb_status = {0};
IQT_WDR_PARAM wdr = {0};
//IQT_3DNR_PARAM nr_3d = {0};
//IQT_DEFOG_PARAM defog = {0};
id = 0;
ae_status.id = id;
if(vendor_isp_init()== HD_ERR_NG)
DBG_ERR("init error\r\n");
vendor_isp_get_ae(AET_ITEM_STATUS, &ae_status);
awb_status.id = id;
vendor_isp_get_awb(AWBT_ITEM_STATUS, &awb_status);
wdr.id = id;
vendor_isp_get_iq(IQT_ITEM_WDR_PARAM, &wdr);
//nr_3d.id= id;
//vendor_isp_get_iq(IQT_ITEM_3DNR_PARAM, &nr_3d);
//defog.id = id;
//vendor_isp_get_iq(IQT_ITEM_DEFOG_PARAM, &defog);
struct tm Curr_gsDateTime ={0};
Curr_gsDateTime = hwclock_get_time(TIME_ID_CURRENT);
//sprintf(strStampDateTime, "%04d/%02d/%02d %02d:%02d:%02d", Curr_gsDateTime.tm_year, Curr_gsDateTime.tm_mon, Curr_gsDateTime.tm_mday, Curr_gsDateTime.tm_hour, Curr_gsDateTime.tm_min, Curr_gsDateTime.tm_sec);
#if 1
//snprintf(Buf, BufLen, "%d %d %3d %4d %4d %4d %4d %d %4d %4d %4d %4d %04d/%02d/%02d %02d:%02d:%02d %d%c",
//snprintf(Buf, BufLen, "6 %d %d %3d %4d %4d %d %d %d %4d %4d %4d %4d %4d%c",// %d%c",
/*snprintf(Buf, BufLen, "%d %d %3d %4d %4d %d %d %d %4d %4d %4d %4d %4d%c %04d/%02d/%02d %02d:%02d:%02d",
(INT)(ae_status.status_info.iso_gain[0]),
(INT)(ae_status.status_info.expotime[0]),
(INT)(ae_status.status_info.lv/100000),
(INT)(ae_status.status_info.lum),
(INT)(ae_status.status_info.expect_lum),
(INT)(ae_status.status_info.overexp_adj),
(INT)(ae_status.status_info.overexp_cnt),
(INT)(wdr.wdr.enable),
(INT)(awb_status.status.cur_r_gain),
(INT)(awb_status.status.cur_g_gain),
(INT)(awb_status.status.cur_b_gain),
(INT)(awb_status.status.cur_ct),
(INT)(IRSHTTER),
Curr_gsDateTime.tm_year,
Curr_gsDateTime.tm_mon,
Curr_gsDateTime.tm_mday,
Curr_gsDateTime.tm_hour,
Curr_gsDateTime.tm_min,
Curr_gsDateTime.tm_sec,
//(INT)(Init_Adc),
//(INT)(nr_3d._3dnr.enable),
'\0'
);*/
//DBG_DUMP("isp Buf=%s\r\n",Buf);
snprintf(Buf, BufLen, "%d %d %3d %d %d %3d %3d %3d %4d %d %d %d %d %02d/%02d %02d:%02d:%02d",
(INT)(ae_status.status_info.state_adj),
(INT)(ae_status.status_info.lum),
(INT)(ae_status.status_info.expect_lum),
(INT)(ae_status.status_info.iso_gain[0]),
(INT)(ae_status.status_info.expotime[0]),
(INT)(ae_status.status_info.lv/100000),
(INT)(awb_status.status.cur_r_gain),
(INT)(awb_status.status.cur_b_gain),
(INT)(awb_status.status.cur_ct),
IRSHTTER,
Cap_cnt,
ae_preset_exp,
ae_preset_iso,
//Curr_gsDateTime.tm_year,
Curr_gsDateTime.tm_mon,
Curr_gsDateTime.tm_mday,
Curr_gsDateTime.tm_hour,
Curr_gsDateTime.tm_min,
Curr_gsDateTime.tm_sec);
printf("%s:%d Buf=%s\r\n",__FUNCTION__,__LINE__,Buf);
#endif
vendor_isp_uninit();
return;
}
void PhotoStamp_get_isp_status(UINT32 id, char* Buf, UINT32 BufLen) void PhotoStamp_get_isp_status(UINT32 id, char* Buf, UINT32 BufLen)
{ {
AET_STATUS_INFO ae_status = {0}; AET_STATUS_INFO ae_status = {0};
@ -104,7 +184,7 @@ void PhotoStamp_get_isp_status(UINT32 id, char* Buf, UINT32 BufLen)
'\0' '\0'
);*/ );*/
//DBG_DUMP("isp Buf=%s\r\n",Buf); //DBG_DUMP("isp Buf=%s\r\n",Buf);
snprintf(Buf, BufLen, "%d %d %3d %d %d %3d %3d %3d %4d %d %d %d %d %04d/%02d/%02d %02d:%02d:%02d", snprintf(Buf, BufLen, "ae_adj:%d cur_lum:%d target_lum:%3d iso:%d exp:%d lv:%3d awbrg:%3d awbbg:%3d ct:%4d adc:%d aecnt:%d preae_exp:%d preae_iso:%d %04d/%02d/%02d %02d:%02d:%02d",
(INT)(ae_status.status_info.state_adj), (INT)(ae_status.status_info.state_adj),
(INT)(ae_status.status_info.lum), (INT)(ae_status.status_info.lum),
(INT)(ae_status.status_info.expect_lum), (INT)(ae_status.status_info.expect_lum),
@ -177,7 +257,7 @@ void PhotoFastCapDateImprint_InitBuff(void)
#if PHOTO_STAMP_ISP_STATUS == ENABLE #if PHOTO_STAMP_ISP_STATUS == ENABLE
memset(photo_aesteam, '\0', sizeof(photo_aesteam)); memset(photo_aesteam, '\0', sizeof(photo_aesteam));
PhotoStamp_get_isp_status(0,&photo_aesteam[0],64); PhotoStamp_get_isp_status_jpg(0,&photo_aesteam[0],64);
#endif #endif
lv_user_font_conv_draw_cfg_init(&stamp_text.draw_cfg); lv_user_font_conv_draw_cfg_init(&stamp_text.draw_cfg);

View File

@ -8,7 +8,7 @@
#define CFG_PHOTOFAST_SLICE_ENC_PRIMARY_BUF_HEIGHT 1080 #define CFG_PHOTOFAST_SLICE_ENC_PRIMARY_BUF_HEIGHT 1080
#define CFG_PHOTOFAST_SLICE_ENC_PRIMARY_BUF_SIZE VDO_YUV_BUFSIZE(CFG_PHOTOFAST_SLICE_ENC_PRIMARY_BUF_WIDTH, CFG_PHOTOFAST_SLICE_ENC_PRIMARY_BUF_HEIGHT, HD_VIDEO_PXLFMT_YUV420) #define CFG_PHOTOFAST_SLICE_ENC_PRIMARY_BUF_SIZE VDO_YUV_BUFSIZE(CFG_PHOTOFAST_SLICE_ENC_PRIMARY_BUF_WIDTH, CFG_PHOTOFAST_SLICE_ENC_PRIMARY_BUF_HEIGHT, HD_VIDEO_PXLFMT_YUV420)
#define CFG_PHOTOFAST_SLICE_ENC_BS_BUF_RATIO 8 /* (yuv size / ratio) + header = bs buf size */ #define CFG_PHOTOFAST_SLICE_ENC_BS_BUF_RATIO 8 /* (yuv size / ratio) + header = bs buf size */
#define CFG_PHOTOFAST_SLICE_ENC_INIT_QUALITY_PRIMARY 85 #define CFG_PHOTOFAST_SLICE_ENC_INIT_QUALITY_PRIMARY 75
#define CFG_PHOTOFAST_SLICE_ENC_INIT_QUALITY_THUMBNAIL 70 #define CFG_PHOTOFAST_SLICE_ENC_INIT_QUALITY_THUMBNAIL 70
#define CFG_PHOTOFAST_SLICE_ENC_INIT_QUALITY_SCREENNAIL 70 #define CFG_PHOTOFAST_SLICE_ENC_INIT_QUALITY_SCREENNAIL 70
#define CFG_PHOTOFAST_SLICE_ENC_QUALITY_DOWN_STEP 3 #define CFG_PHOTOFAST_SLICE_ENC_QUALITY_DOWN_STEP 3

View File

@ -6,6 +6,7 @@
#include <WiFiIpc/nvtwifi.h> #include <WiFiIpc/nvtwifi.h>
#endif #endif
//============Sifar==============///Payton
#ifndef SF_DATA_UI_TYPE #ifndef SF_DATA_UI_TYPE
#define SF_DATA_UI_TYPE #define SF_DATA_UI_TYPE
@ -16,9 +17,9 @@ typedef struct sf_PARA_TIME_S
UINT16 Mon; UINT16 Mon;
UINT16 Day; UINT16 Day;
UINT8 Hour; UINT16 Hour;
UINT8 Min; UINT16 Min;
UINT8 Sec; UINT16 Sec;
} SF_PARA_TIME_S; } SF_PARA_TIME_S;
typedef struct sf_WORKTIME_S typedef struct sf_WORKTIME_S

View File

@ -39,7 +39,7 @@
#endif #endif
//#endif //#endif
#define SF_MCU_NIGHT_MODE_LUMINANCE 80 #define SF_MCU_NIGHT_MODE_LUMINANCE 600
#define DIGITAL_PIR 1 #define DIGITAL_PIR 1

View File

@ -681,7 +681,7 @@ unsigned char sf_commu_parse_mcu_data(unsigned char * src, unsigned int len)
//stMessageBuf.arg1 = SF_EVENT_KEY_SHORT_CLICK; //stMessageBuf.arg1 = SF_EVENT_KEY_SHORT_CLICK;
//stMessageBuf.arg2 = SF_KEY_PIN_DATAREADY; //stMessageBuf.arg2 = SF_KEY_PIN_DATAREADY;
//sf_com_message_send_to_app(&stMessageBuf); //sf_com_message_send_to_app(&stMessageBuf);
ret = 0x05; ret = 0x05;
Ux_PostEvent(NVTEVT_SYSTEM_SHUTDOWN, 1, APP_POWER_OFF_APO); Ux_PostEvent(NVTEVT_SYSTEM_SHUTDOWN, 1, APP_POWER_OFF_APO);
} }
else else

View File

@ -23,7 +23,7 @@
}; };
ae_curve_gen_movie { ae_curve_gen_movie {
size = [10 01 00 00]; size = [10 01 00 00];
data = [f4 01 00 00 00 00 00 00 2c 00 00 00 64 00 00 00 00 00 00 00 00 00 00 00 1a 41 00 00 90 01 00 00 00 00 00 00 00 00 00 00 35 82 00 00 90 01 00 00 00 00 00 00 00 00 00 00 35 82 00 00 40 06 00 00 00 00 00 00 00 00 00 00 35 82 00 00 00 32 00 00 00 00 00 00 00 00 00 00 80 38 01 00 00 19 00 00 00 00 00 00 00 00 00 00 20 4e 00 00 c8 00 00 00 00 00 00 00 00 00 00 00 20 4e 00 00 c8 00 00 00 00 00 00 00 00 00 00 00 20 4e 00 00 c8 00 00 00 00 00 00 00 00 00 00 00 20 4e 00 00 c8 00 00 00 00 00 00 00 00 00 00 00 20 4e 00 00 c8 00 00 00 00 00 00 00 00 00 00 00 20 4e 00 00 c8 00 00 00 00 00 00 00 00 00 00 00 04 00 00 00 00 19 00 00 01 00 00 00 10 00 00 00 01 00 00 00 b8 0b 00 00 b8 0b 00 00 60 09 00 00 e2 04 00 00 d0 07 00 00 d0 07 00 00 dc 05 00 00 dc 05 00 00 b0 04 00 00 b0 04 00 00 00 00 00 00 f6 ec 00 00 00 00 00 00]; data = [f4 01 00 00 01 00 00 00 2c 00 00 00 64 00 00 00 00 00 00 00 00 00 00 00 1a 41 00 00 90 01 00 00 00 00 00 00 00 00 00 00 35 82 00 00 90 01 00 00 00 00 00 00 00 00 00 00 35 82 00 00 40 06 00 00 00 00 00 00 00 00 00 00 35 82 00 00 00 32 00 00 00 00 00 00 00 00 00 00 80 38 01 00 00 19 00 00 00 00 00 00 00 00 00 00 20 4e 00 00 c8 00 00 00 00 00 00 00 00 00 00 00 20 4e 00 00 c8 00 00 00 00 00 00 00 00 00 00 00 20 4e 00 00 c8 00 00 00 00 00 00 00 00 00 00 00 20 4e 00 00 c8 00 00 00 00 00 00 00 00 00 00 00 20 4e 00 00 c8 00 00 00 00 00 00 00 00 00 00 00 20 4e 00 00 c8 00 00 00 00 00 00 00 00 00 00 00 04 00 00 00 00 19 00 00 01 00 00 00 10 00 00 00 01 00 00 00 b8 0b 00 00 b8 0b 00 00 60 09 00 00 e2 04 00 00 d0 07 00 00 d0 07 00 00 dc 05 00 00 dc 05 00 00 b0 04 00 00 b0 04 00 00 00 00 00 00 f6 ec 00 00 00 00 00 00];
}; };
ae_meter_window { ae_meter_window {
size = [00 01 00 00]; size = [00 01 00 00];

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long