1.修改3启动和usb启动处理

2.升级相关
3.温度部分修改
4.代码优化,开机模式
This commit is contained in:
payton 2023-07-14 19:50:31 +08:00
parent f73c4090e1
commit a28f87ec9c
16 changed files with 506 additions and 280 deletions

View File

@ -10,7 +10,9 @@
#include "UIFrameworkExt.h"
#include "UIWnd/UIFlow.h"
#include "UIApp/Transcode/UIAppTranscode.h"
#if HUNTING_CAMERA_MCU == ENABLE
#include <sf_common.h>
#endif
///////////////////////////////////////////////////////////////////////////////
#define __MODULE__ UIModeTranscode
#define __DBGLVL__ 2 // 0=FATAL, 1=ERR, 2=WRN, 3=UNIT, 4=FUNC, 5=IND, 6=MSG, 7=VALUE, 8=USER
@ -38,6 +40,11 @@ void ModeTranscode_Open(void)
}
}
#endif
#if HUNTING_CAMERA_MCU == ENABLE
if((1 == sf_get_fw_update())){
sf_do_upgrade_thread();//update
}
#endif
DBG_FUNC_END("\r\n");
}

View File

@ -153,7 +153,11 @@ INT32 System_GetBootFirstMode(void)
UINT8 PowerOnMode = sf_cardv_convert_power_on_mode();
printf("%s:%d CamMode :%d\n", __FUNCTION__, __LINE__,puiPara->CamMode);
if(PWR_ON_SETUP != PowerOnMode)
if(GxUSB_GetIsUSBPlug())
{
return PRIMARY_MODE_PHOTO;
}
else if((PWR_ON_SETUP != PowerOnMode) || (sf_get_fw_update()))
{
return PRIMARY_MODE_TRANSCODE;
}
@ -229,6 +233,9 @@ INT32 System_OnBoot(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray)
Load_MenuInfo();
#else
Load_MenuInfo(); //reset value cause the FL_FSStatus as '0', we do so before NVTEVT_STRG_ATTACH finish
#if HUNTING_CAMERA_MCU == ENABLE
sf_cardv_para_check_start();
#endif
#endif
#endif
#endif
@ -383,6 +390,14 @@ INT32 System_OnBoot(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray)
}
DBG_DUMP("^MOn Boot end\r\n");
#if 0//HUNTING_CAMERA_MCU == ENABLE
if((0 == sf_get_fw_update()) && (sf_get_mode_flag()))
{
Ux_SendEvent(0, NVTEVT_EXE_WIFI_START, 0);
//sleep(2);
//sf_apinfo_thread_init();
}
#endif
return NVTEVT_CONSUME;
}
@ -450,9 +465,10 @@ INT32 System_OnShutdown(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray)
#endif
}
#if HUNTING_CAMERA_MCU == ENABLE
sf_cardv_para_check_stop();
if(sf_is_flash_voltage_abnormal() != TRUE)
Save_MenuInfo();
sf_cardv_para_check_stop();
#else
Save_MenuInfo();
#endif

View File

@ -33,10 +33,10 @@ void USB_CB(UINT32 event, UINT32 param1, UINT32 param2)
{
switch (event) {
case SYSTEM_CB_CONFIG:
//1.設定init值
//2.設定CB值,
//3.註冊SxJob服務 ---------> System Job
//4.註冊SxTimer服務 ---------> Detect Job
//1.<EFBFBD>]<5D>winit<69><74>
//2.<EFBFBD>]<5D>wCB<43><42>,
//3.<EFBFBD><EFBFBD><EFBFBD>USxJob<EFBFBD>A<EFBFBD><EFBFBD> ---------> System Job
//4.<EFBFBD><EFBFBD><EFBFBD>USxTimer<EFBFBD>A<EFBFBD><EFBFBD> ---------> Detect Job
//#if (USBINSERT_FUNCTION == ENABLE)
//SX_TIMER_DET_USB_ID = System_AddSxTimer(UI_DetUSB, 5,"GxUSB");
//#endif
@ -62,22 +62,22 @@ void USB_CB(UINT32 event, UINT32 param1, UINT32 param2)
}
}
/*
3USB mode
<EFBFBD>H<EFBFBD>U3<EFBFBD><EFBFBD>USB mode
MSDC
Size 128K Bytes
Vendor Commands,
Vendor Command要 142KB >> check define MSDCNVT_REQUIRE_MIN_SIZE
<EFBFBD>ݭn<EFBFBD>T<EFBFBD>w<EFBFBD><EFBFBD> Size 128K Bytes
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܼƴN<EFBFBD>O Vendor Commands,
<EFBFBD><EFBFBD><EFBFBD>}Vendor Command<EFBFBD>n 142KB >> check define MSDCNVT_REQUIRE_MIN_SIZE
SIDC
total需要的buffer公式如下:
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Atotal<EFBFBD>ݭn<EFBFBD><EFBFBD>buffer<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>p<EFBFBD>U:
2930KB(x 1024) + Object Num x 108 Byte
PCC:
2 * M.
M = ((JPEG bitstream + header + 2 )32 byte align) + 64
JPEG bitstream HD mode 0x80000B
JPEG bitstream mode必定不小於0x40000B
2<EFBFBD><EFBFBD> * M.
M = ((JPEG bitstream + header + 2 )<EFBFBD><EFBFBD>32 byte align) + 64
JPEG bitstream <EFBFBD>bHD mode <EFBFBD><EFBFBD><EFBFBD>w<EFBFBD><EFBFBD><EFBFBD>p<EFBFBD><EFBFBD>0x80000B
JPEG bitstream <EFBFBD>b<EFBFBD><EFBFBD>Lmode<EFBFBD><EFBFBD><EFBFBD>w<EFBFBD><EFBFBD><EFBFBD>p<EFBFBD><EFBFBD>0x40000B
*/

View File

@ -51,8 +51,8 @@ static char* usb_host_drivers[] = {
};
static char* usb_dev_drivers[] = {
"hdal/comm/uvcp/nvt_uvcp.ko",
"hdal/comm/usb2dev/nvt_usb2dev.ko",
"hdal/comm/uvcp/nvt_uvcp.ko",
NULL
};
@ -142,7 +142,7 @@ static BOOL System_InsmodUsb(BOOL isHost)
if(driver_path){
memset(cmd, '\0', sizeof(cmd));
snprintf(cmd, sizeof(cmd), "insmod %s/%s/%s", isHost ? "" : "" /* ramdisk */, driver_path_prefix, driver_path);
snprintf(cmd, sizeof(cmd), "insmod %s/%s", driver_path_prefix, driver_path);
//DBG_DUMP("%s\n", cmd);
printf("[%s:%d] %s\n", __FUNCTION__, __LINE__, cmd);
system(cmd);
@ -152,6 +152,7 @@ static BOOL System_InsmodUsb(BOOL isHost)
if(isHost == FALSE){
#if HUNTING_CAMERA_MCU == ENABLE
sf_usb_mux_s(0);
vos_util_delay_ms(200);
#endif
is_usb_dev_driver_inserted = TRUE;
@ -350,9 +351,13 @@ INT32 System_OnUsbInsert(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray)
{
//usb plug in
DBG_IND("USB plug - begin\r\n");
#if (HW_S530 == ENABLE) && (HUNTING_CAMERA_MCU == ENABLE)
sf_sys_status_led_set(SF_LED_SYS_STATE_USB_IN);
sf_4g_usb_remove();
#endif
System_RmmodUsb(TRUE); /* rmmod usb host ko */
System_InsmodUsb(FALSE); /* insmod usb dev ko */
//vos_util_delay_ms(1000);
GxUSB_SetChargerType(FALSE);
USB_UpdateSource();
@ -366,6 +371,7 @@ INT32 System_OnUsbInsert(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray)
#else
#if HUNTING_CAMERA_MCU == ENABLE //temporally support MSDC only
//vos_util_delay_ms(1000);
Ux_SendEvent(0, NVTEVT_SYSTEM_MODE, 1, PRIMARY_MODE_USBMSDC);
#else
Ux_SendEvent(0, NVTEVT_SYSTEM_MODE, 1, PRIMARY_MODE_USBMENU);

View File

@ -355,67 +355,59 @@ int NvtMain(void)
nvt_hdal_init();
nvt_user_init();
#if HUNTING_CAMERA_MCU == ENABLE
if(!GxUSB_GetIsUSBPlug())//(!sf_gpio_get_status(GPIO_INT_USBPLUGIN))
BOOL inUsb = GxUSB_GetIsUSBPlug();
if(TRUE == inUsb)//(!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_cardv_para_check_start();
SF_MESSAGE_BUF_S stMessageBuf = {0};
if(!sf_gpio_get_status(GPIO_KEY_TEST)){
sf_set_fw_update(1);//update
}
stMessageBuf.arg1 = SF_MCU_CMD_POWERON;
stMessageBuf.cmdId = CMD_MCU;
sf_com_message_send_to_app(&stMessageBuf);
//sf_sys_status_led_set(SF_LED_SYS_STATE_PIR_NOT_DETECT);
#if 0
if(sf_get_mode_flag())
{
GOIO_Turn_Onoff_IRCUT(1);
/*wifi init*/
stMessageBuf.arg1 = SF_WIFI_CMD_START;
stMessageBuf.cmdId = CMD_WIFI;
sf_com_message_send_to_cardv(&stMessageBuf);
}
#endif
stMessageBuf.arg1 = SF_DEV_CMD_BAT;
stMessageBuf.cmdId = CMD_DEV;
sf_com_message_send_to_app(&stMessageBuf);
#else
sf_mcu_init();
sf_get_power_on_mode();
sf_mcu_wdg_set(30);
sf_usb_mux_s(1);
/*led init*/
sf_led_init();
#endif
sf_sd_exist_reg_cb(DrvCARD_DetStrgCard);
}
else
{
sf_usb_mux_s(0);
sf_sys_status_led_set(SF_LED_SYS_STATE_USB_IN);
}
#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};
if(!sf_gpio_get_status(GPIO_KEY_TEST)){
sf_set_fw_update(1);//update
}
if(TRUE != inUsb)
{
stMessageBuf.arg1 = SF_MCU_CMD_POWERON;
stMessageBuf.cmdId = CMD_MCU;
sf_com_message_send_to_app(&stMessageBuf);
stMessageBuf.arg1 = SF_DEV_CMD_BAT;
stMessageBuf.cmdId = CMD_DEV;
sf_com_message_send_to_app(&stMessageBuf);
stMessageBuf.arg1 = SF_DEV_CMD_TEMPER;
stMessageBuf.cmdId = CMD_DEV;
sf_com_message_send_to_app(&stMessageBuf);
}
#else
sf_mcu_init();
sf_get_power_on_mode();
sf_mcu_wdg_set(30);
sf_usb_mux_s(1);
/*led init*/
sf_led_init();
#endif
sf_sd_exist_reg_cb(DrvCARD_DetStrgCard);
#endif

View File

@ -1610,7 +1610,7 @@ INT32 UINet_WifiInit(UINT32 mode, UINT32 security)
//#NT#2016/08/05#Niven Cho -end
//Ux_PostEvent(NVTEVT_WIFI_STATE, 2, NET_STATE_WIFI_START, result);
sf_wifi_app_start();
//sf_wifi_app_start();
return result;
}

View File

@ -32,6 +32,9 @@ BOOL sf_battery_check_init(void);
void sf_set_need_check_first(void);
BOOL sf_is_enough_power_to_update(void);
void sf_adc_init(void);
BOOL sf_is_battery_low(UINT8 refresh, UINT8 nightMode);
INT16 sf_adc2Temperature(UINT16 adcValue, UINT8 type);/*type: 0:F 1:C*/
void sf_stamp_temperature_get(INT16 *fTem,INT16 *cTem); /*0:F 1:C*/
void sf_temper_update(void);
INT16 sf_celsius_change_to_fahrenheit(INT16 cTemper);
#endif

View File

@ -170,7 +170,7 @@ int main(int argc, char *argv[])
sf_mcu_flag_init();
sf_mcu_init();
startup = sf_poweron_type_get();
if(SF_MCU_STARTUP_NORMAL != startup){
if((SF_MCU_STARTUP_NORMAL != startup) && (!isUsb)){
sf_get_power_on_mode();
sf_mcu_wdg_set(30);
}
@ -188,10 +188,11 @@ int main(int argc, char *argv[])
//sf_usb_mux_s(1);
//sf_load_ko();
sf_mcu_reg_set(SF_MCU_CTRL_MODULE_PIR, 1);
sf_app_battery_start();
}
//sf_battery_check_init();
sf_app_battery_start();
//sf_app_data_ready_start();
//sf_set_fw_update(isUpdate);
@ -234,7 +235,7 @@ int main(int argc, char *argv[])
}
}
if((0 == sf_get_fw_update()) && (SF_MCU_STARTUP_NORMAL != startup) && (SF_ON == puiPara->GprsSwitch))
if((!isUsb) && (0 == sf_get_fw_update()) && (SF_MCU_STARTUP_NORMAL != startup) && (SF_ON == puiPara->GprsSwitch))
{
app_RegisterNet_start();
}

View File

@ -55,6 +55,7 @@ extern "C" {
#include <sf_file.h>
#include <sf_commMng.h>
#include "sf_battery.h"
#include "sf_hal_ttyusb.h"
extern pthread_mutex_t Param_mutexLock;
SINT8 longClickhold = 0;
SINT8 bmoduleupdate = 0;
@ -839,11 +840,18 @@ static SINT32 sf_app_proccess_cmd_dev(SF_MESSAGE_BUF_S *pMessageBuf)
{
MLOGD("ID = %#x\n",pMessageBuf->arg1);
SF_MESSAGE_BUF_S stMessageBuf = {0};
SINT16 fTemper = 0, cTemper = 0;
switch(pMessageBuf->arg1)
{
case SF_DEV_CMD_TEMPER:
sf_app_set_temper(pMessageBuf->arg2);
sf_stamp_temperature_get(&fTemper,&cTemper);
stMessageBuf.cmdId = CMD_DEV;
stMessageBuf.arg1 = SF_DEV_CMD_TEMPER;
stMessageBuf.arg2 = cTemper;
stMessageBuf.arg3 = fTemper;
printf("[%s:%d]cTemper=%d fTemper:%d\n",__FUNCTION__,__LINE__,stMessageBuf.arg2, stMessageBuf.arg3);
sf_com_message_send_to_cardv(&stMessageBuf);
break;
case SF_DEV_CMD_BAT:
stMessageBuf.cmdId = CMD_DEV;
@ -854,6 +862,11 @@ static SINT32 sf_app_proccess_cmd_dev(SF_MESSAGE_BUF_S *pMessageBuf)
sf_com_message_send_to_cardv(&stMessageBuf);
//sf_app_set_battery(pMessageBuf->arg2, pMessageBuf->arg3);
break;
case SF_DEV_CMD_4G_USB_RM:
if (sf_hal_ttyusb2_deinit() != 0) {
MLOGE("-------ttyUSB deinit fail!\n");
}
break;
default:
break;
}
@ -871,7 +884,8 @@ void* app_message_recv_thread(void *arg)
{
continue;
}
MLOGD("cmdId:[%#x,%s]\n",stMessagebuf.cmdId,app_process_message_getstatusstring(stMessagebuf.cmdId));
if(CMD_LED != stMessagebuf.cmdId)
MLOGD("cmdId:[%#x,%s]\n",stMessagebuf.cmdId,app_process_message_getstatusstring(stMessagebuf.cmdId));
switch(stMessagebuf.cmdId)
{
case CMD_KEY:

View File

@ -56,6 +56,7 @@ typedef signed int SINT32;
UINT32 _DcVoltageVal = 0;
UINT32 _LiPolymerVoltageVal = 0; /*4.0P no use*/
UINT32 _BatVoltageVal = 45;
UINT32 _TemperAdc = 0;
UINT32 IsPowerDcIn = 1;
UINT32 BatVoltageVal = 45;
SF_BatteryLevel_e sf_LatestBattLevel = SF_BATT_LEVEL_0;
@ -63,11 +64,26 @@ UINT8 needCheckFirst = TRUE;
UINT32 DcVoltageVal = 0;
UINT32 LiPolymerVoltageVal = 0; /*4.0P no use*/
UINT32 batTempLevel = 0xff;
static UINT32 TemperAdc = 0;
static INT16 fTemper = 0;
static INT16 cTemper = 0;
#define SF_READ_BAT_MAX 10
#define SF_DC_IN_VOLATAGE 70
#define SF_LI_IN_VOLATAGE 99
const UINT16 Adc2TempTable[]=
{
0,1648,1721,1794,1867,1940,2013,2086,2159, 2232,2305, 2378,2451,2524,2597,2670,2743, 2816, 2889, 2968,
3047,3126,3205,3284,3363,3442,3521,3600/*-15*/,3679,3758,3837,3916,3995,4074,4153,4232,4321/*-10*/, 4427,4533,4639,
4745,4851,4957,5063,5169,5275,5381,5487,5593,5699,5805,5911,6017,6123,6238/*0*/,6334,6430,6526,6622,6718,
6814,6910,7006,7102,7198,7294,7390,7486,7582,7678,7774,7870,7996,8063/*10*/,8182,8301,8420,8539,8658,8777,
8896,9015,9134,9253,9372,9491,9610,9729,9848,9967,10128/*20*/,10221,10314,10407,10500,10593,10686,10779,10872,10965,
11058,11151,11244,11337,11430,11480,11530,11580,11630/*30*/,11680,11730,11780,11830,11880,11930,11980,12032,12097,12162,12232,
12302,12372,12442,12512,12582,12652,12722/*40*/,12769,12816,12863,12910,12957,13004,13051,13098,13145,13192,13239,13286,13333,
13380,13427,13474,13521/*50*/,13591,13661,13731,13801,13871,13941,14011,14081,14151,14221,14291,14361,14431,14501,14571,14641,
14711,14781,14851/*60*/,14941,15031,15111,15181,15251,15321,15391,15461,15531,15601,15671,15741,15811
};
/*************************************************
Function: sf_battery_voltage_convert
Description: battery voltage convert
@ -130,11 +146,13 @@ void sf_adc_init(void)
// Enable adc control logic
adc_setEnable(TRUE);
gpio_direction_output(P_GPIO_0,0);
gpio_direction_output(P_GPIO_1,0);
}
/*************************************************
Function: sf_adc_value_get
Description: get battery adc only once
Description: get battery adc
Input: N/A
Output: N/A
Return: SUCCESS/FAIL
@ -143,7 +161,7 @@ void sf_adc_init(void)
UINT32 sf_adc_value_get(UINT32 mux, UINT32 *pval)
{
static UINT8 getAdcFlg = 0;
static UINT8 outputflag = 1;
//static UINT8 outputflag = 1;
*pval = 0;
if(getAdcFlg)
@ -152,12 +170,6 @@ UINT32 sf_adc_value_get(UINT32 mux, UINT32 *pval)
}
getAdcFlg = 1;
if(outputflag)
{
outputflag = 0;
gpio_direction_output(P_GPIO_0,0);
gpio_direction_output(P_GPIO_1,0);
}
if(SF_ADC_BATT == mux)//bat_det
{
@ -313,6 +325,13 @@ UINT32 sf_battery_adc_value_get_once(void)
printf("Bat ADC Value:%d After Convert:%d(%d.%dV)\n",batAdc,batVoltageVal,batVoltageVal/10,batVoltageVal%10);
}
if(sf_adc_value_get(SF_ADC_TEMP, &batAdc) == SUCCESS)
{
_TemperAdc = batAdc;
if(puiPara->BatteryLogSwitch)
printf("_TemperAdc:%d \n",batAdc);
}
_DcVoltageVal = dcVoltageVal;
if ((liPolymerVoltageVal > batVoltageVal))
@ -578,6 +597,8 @@ signed int sf_battery_value_fast_get(void)
UINT8 readBatCnt = 0;
UINT32 dcValueList[12] = { 0 };
UINT32 batValueList[12] = { 0 };
UINT32 temperValueList[12] = { 0 };
UIMenuStoreInfo *puiPara = sf_app_ui_para_get();
SINT32 ret = FAIL;
@ -592,6 +613,7 @@ signed int sf_battery_value_fast_get(void)
if(sf_battery_adc_value_get_once() == SUCCESS)
{
dcValueList[readBatCnt] = _DcVoltageVal;
temperValueList[readBatCnt] = _TemperAdc;
if(puiPara->BatteryLogSwitch)
{
@ -626,7 +648,7 @@ signed int sf_battery_value_fast_get(void)
}
DcVoltageVal = sf_get_max_value(dcValueList);
TemperAdc = sf_get_max_value(temperValueList);
if(_LiPolymerVoltageVal)
{
LiPolymerVoltageVal = sf_get_max_value(batValueList);
@ -664,6 +686,10 @@ signed int sf_battery_value_fast_get(void)
ret = SUCCESS;
}
cTemper = sf_adc2Temperature((UINT16)TemperAdc, 1);
fTemper = sf_celsius_change_to_fahrenheit(cTemper);
return ret;
}
@ -683,6 +709,7 @@ void sf_battery_level_polling(void)
UINT32 LibatTemp = 0;
UINT8 LibatCnt = 0;
UINT8 batCnt = 0;
UINT32 temperValue = 0;
UIMenuStoreInfo *puiPara = sf_app_ui_para_get();
static UINT32 prePowerDcStatus = 0;
@ -697,6 +724,8 @@ void sf_battery_level_polling(void)
sf_sleep_ms(100);
dcTemp += _DcVoltageVal;
temperValue += _TemperAdc;
if(_LiPolymerVoltageVal)
{
LibatTemp += _LiPolymerVoltageVal;
@ -712,6 +741,8 @@ void sf_battery_level_polling(void)
if(readBatCnt >= 100)
{
_DcVoltageVal = dcTemp / 100;
_TemperAdc = temperValue/100;
if(LibatCnt)
_LiPolymerVoltageVal = LibatTemp / LibatCnt;
if(batCnt)
@ -736,12 +767,13 @@ void sf_battery_level_polling(void)
}
DcVoltageVal = _DcVoltageVal;
TemperAdc = _TemperAdc;
LiPolymerVoltageVal = _LiPolymerVoltageVal;
BatVoltageVal = _BatVoltageVal;
if(puiPara->BatteryLogSwitch)
{
printf("\n[average]DC Adc:%d After Convert:(%d.%dV),Is Dc In=%s\n", sf_battery_convert_to_adc(10, 100, DcVoltageVal), DcVoltageVal / 10, DcVoltageVal % 10, IsPowerDcIn == 1? "Yes" : "No");
printf("\n[average]DC Adc:%d After Convert:(%d.%dV),Is Dc In=%s, TemperAdc:%d \n", sf_battery_convert_to_adc(10, 100, DcVoltageVal), DcVoltageVal / 10, DcVoltageVal % 10, IsPowerDcIn == 1? "Yes" : "No", TemperAdc);
if(LiPolymerVoltageVal)
{
@ -757,7 +789,7 @@ void sf_battery_level_polling(void)
}
sf_battery_level_update();
sf_temper_update();
//ret = sf_check_low_battery();
if(puiPara->BatteryLogSwitch)
@ -1303,6 +1335,122 @@ BOOL sf_is_enough_power_to_update(void)
return TRUE;
}
INT16 sf_celsius_change_to_fahrenheit(INT16 cTemper)
{
INT16 fTemper = 0;
fTemper = cTemper*9/5 + 32;
//printf("fTemper=%d%s\n",fTemper,"`F");
return fTemper;
}
void sf_stamp_temperature_get(INT16 *fTem,INT16 *cTem) /*0:F 1:C*/
{
*fTem = fTemper;
*cTem = cTemper;
}
INT16 sf_adc2Temperature(UINT16 adcValue, UINT8 type)/*type: 0:F 1:C*/
{
UINT16 lowIndex = 0, highIndex = 175, keyIndex = 77, midIndex = 0;
UINT16 tmp = 0;
INT16 Temper = 0;
while(lowIndex < highIndex)
{
if((lowIndex == highIndex) || (lowIndex == (highIndex - 1)))
{
keyIndex = lowIndex;
break;
}
else if( (adcValue < Adc2TempTable[lowIndex]) || (adcValue > Adc2TempTable[highIndex]))
{
keyIndex = 255;
break;
}
else
{
midIndex = (lowIndex + highIndex) / 2;
if(adcValue < Adc2TempTable[midIndex])
highIndex = midIndex;
else
lowIndex = midIndex;
}
//printf("low=%bx,high=%bx\r",lowIndex,highIndex);
}
if(keyIndex == 255)
tmp = 176;
else
tmp = keyIndex;
if(tmp > 176)
tmp = 176;
if(type == 1)
{
if(tmp >= 22)
{
tmp = tmp-22;
if( tmp >= 32)
{
tmp = (tmp - 32) * 5 / 9;
Temper = (INT16)tmp;
}
else
{
tmp = (32 - tmp) * 5 / 9;
Temper = -(INT16)tmp;
}
}
else
{
tmp = 22 - tmp;
tmp = (32 + tmp) * 5 / 9;
Temper = -(INT16)tmp;
}
}
else
{
if (tmp > 22)
{
Temper = tmp - 22;
}
else
{
Temper = 22 - tmp;
Temper = -Temper;
}
}
//printf("TemperAdc:%d Temper = %d%s\n", TemperAdc, Temper, (type ? "`C" : "`F"));
return Temper;
}
/*************************************************
Function: sf_temper_update
Description: Get temper Voltage.
Input: N/A
Output: N/A
Return: N/A
Others: N/A
*************************************************/
void sf_temper_update(void)
{
static INT16 ctemper_tmp = 0;
SF_MESSAGE_BUF_S stMessageBuf = {0};
cTemper = sf_adc2Temperature((UINT16)TemperAdc, 1);
fTemper = sf_celsius_change_to_fahrenheit(cTemper);
if(cTemper != ctemper_tmp){
stMessageBuf.cmdId = CMD_DEV;
stMessageBuf.arg1 = SF_DEV_CMD_TEMPER;
stMessageBuf.arg2 = cTemper;
stMessageBuf.arg3 = fTemper;
printf("[%s:%d]cTemper=%d fTemper:%d TemperAdc:%d\n",__FUNCTION__,__LINE__,stMessageBuf.arg2, stMessageBuf.arg3, TemperAdc);
sf_com_message_send_to_cardv(&stMessageBuf);
ctemper_tmp = cTemper;
}
}
#endif

View File

@ -380,7 +380,7 @@ unsigned char sf_mcu_reg_set(MCUParam_t attrId, unsigned char val)
if(attrId == SF_MCU_POWEROFF)
{
//printf("SynMcuSet = %x\n", statisPara->SynMcuSet);
MLOGI("NeedTimeSyncStartUp = %d\n", puiPara->NeedTimeSyncStartUp);
MLOGI("NeedTimeSyncStartUp = %d NetWorkNeedSearch= %d\n", puiPara->NeedTimeSyncStartUp, puiPara->NetWorkNeedSearch);
if(puiPara->NeedTimeSyncStartUp == 1)
{
paraSyncFlag = 1;
@ -542,21 +542,21 @@ unsigned char sf_mcu_reg_set(MCUParam_t attrId, unsigned char val)
mcuReg[i] = ANALOG_PIR_SENSITIVITY;
temp = sf_mcu_analog_pir_sen_convert(puiPara->PirSensitivity);
//hybrid mode 4G module keep sleep
if(((puiPara->NetWorkNeedSearch) != 3) && simCardInsert && gModuleSleep)
if(simCardInsert && (puiPara->NetWorkNeedSearch))
{
//bit 5-bit 6, daily mode 0, hybrid mode 1, instant mode 2
if(((puiPara->GprsMode) == 1) || (paraSyncFlag))
{
temp |= 0x40;
}
else
{
if (((puiPara->GprsMode) == 2) && isSignalReady && (sf_get_gprs_errno() == 0))
temp |= 0x20;
//sf_pdp_flg_set(0);
}
//4.0PCG, first to PIR mode, will power on in A,search net. so 4G mode should power down
//instant mode ,dp power on, 4G mode should power down
temp &= ~0x60; /*bit5&bit6=0,daily mode*/
}
else if(simCardInsert && (puiPara->GprsMode == 1) && gModuleSleep)
{
temp |= 0x40; /*bit6=1,instant mode*/
}
else if(simCardInsert && (puiPara->GprsMode == 2) && gModuleSleep)
{
temp |= 0x20; /*bit5=1,hybrid mode*/
}
if((PowerOnMode == PWR_ON_AUTO) || (PowerOnMode == PWR_ON_SETUP) || (PowerOnMode == PWR_ON_GPRS_INIT) || ((PowerOnMode == PWR_ON_DAILY_REPORT) && (drNoResetTimeSync != SF_TRUE)))
{
temp |= 0x10; /*bit4 rest*/
@ -1280,24 +1280,9 @@ void sf_dailyReport_set(void)
UIMenuStoreInfo *puiPara = sf_app_ui_para_get();
extern UINT8 DailyReportFtpSendSucess;
if((sf_get_mode_flag()) || (PWR_ON_GPRS_INIT == sf_poweron_type_get()))//if reset cam, cam software update, mode software udate
if(PWR_ON_TIME_SYNC == sf_poweron_type_get())
{
if (puiPara->FristSendDailyAndGps)
{
puiPara->NeedTimeSyncStartUp = 1;
}
puiPara->ReDailyReport = 0;
sf_dailyReport_refresh();
}
else if(PWR_ON_DAILY_REPORT == sf_poweron_type_get())
{
if (puiPara->FristSendDailyAndGps)
{
puiPara->FristSendDailyAndGps = 0;
puiPara->ReDailyReport = 0;
}
else if (DailyReportFtpSendSucess == 0)
if (DailyReportFtpSendSucess == 0)
{
if(puiPara->ReDailyReport==0)
puiPara->ReDailyReport = 1;

View File

@ -89,8 +89,6 @@ BOOL sf_is_movie_preview(void);
BOOL sf_is_cap_preview(void);
BOOL sf_is_preview(void);
UINT8 sf_cardv_get_cq_signal(void);
INT16 sf_adc2Temperature(UINT16 adcValue, UINT8 type);/*type: 0:°F 1:°C */
void sf_stamp_temperature_get(INT16 *fTemper,INT16 *cTemper); /*0:F 1:C*/
void sf_set_send_statu(BOOL is);
BOOL sf_get_send_statu(void);
void sf_cardv_set_mcu_rtc_flag(void);
@ -109,4 +107,6 @@ UINT32 sf_cardv_battery_level_get(void);
UINT8 sf_cardv_battery_value_get(void);
UINT8 sf_cardv_battery_type_get(void);
BOOL sf_is_flash_voltage_abnormal(void);
void sf_4g_usb_remove(void);
void sf_stamp_temperature_get(INT16 *fTem,INT16 *cTem);
#endif

View File

@ -72,7 +72,6 @@ static BOOL IsMenu = FALSE;
static BOOL IsCap = FALSE;
static BOOL IsSend = FALSE;
static UINT8 cq_Signal = 0;
static UINT32 TemperAdc = 0;
static ID sf_hd_flag_id = 0;
static UINT8 hdFlagInit = 0;
static char HdflieName[32] = {0};
@ -82,7 +81,8 @@ static UINT8 IsNightLedOn = 0;
static SF_BatteryLevel_e sf_LatestBattLevel = SF_BATT_LEVEL_0;
static UINT8 batteryVal = 0;
static UINT8 batteryType = 0;
static SINT16 fTemper = 0;
static SINT16 cTemper = 0;
static SF_THREAD_S UpgradeTskParam =
{
.IsRun = 0,
@ -100,18 +100,6 @@ static SF_THREAD_S ParaTskCfg =
.IsRun = 0,
.TskId = -1,
};
const UINT16 Adc2TempTable[]=
{
0,1648,1721,1794,1867,1940,2013,2086,2159, 2232,2305, 2378,2451,2524,2597,2670,2743, 2816, 2889, 2968,
3047,3126,3205,3284,3363,3442,3521,3600/*-15*/,3679,3758,3837,3916,3995,4074,4153,4232,4321/*-10*/, 4427,4533,4639,
4745,4851,4957,5063,5169,5275,5381,5487,5593,5699,5805,5911,6017,6123,6238/*0*/,6334,6430,6526,6622,6718,
6814,6910,7006,7102,7198,7294,7390,7486,7582,7678,7774,7870,7996,8063/*10*/,8182,8301,8420,8539,8658,8777,
8896,9015,9134,9253,9372,9491,9610,9729,9848,9967,10128/*20*/,10221,10314,10407,10500,10593,10686,10779,10872,10965,
11058,11151,11244,11337,11430,11480,11530,11580,11630/*30*/,11680,11730,11780,11830,11880,11930,11980,12032,12097,12162,12232,
12302,12372,12442,12512,12582,12652,12722/*40*/,12769,12816,12863,12910,12957,13004,13051,13098,13145,13192,13239,13286,13333,
13380,13427,13474,13521/*50*/,13591,13661,13731,13801,13871,13941,14011,14081,14151,14221,14291,14361,14431,14501,14571,14641,
14711,14781,14851/*60*/,14941,15031,15111,15181,15251,15321,15391,15461,15531,15601,15671,15741,15811
};
int sf_pir_statu_read(void)
{
@ -1351,14 +1339,6 @@ UINT8 sf_cardv_get_cq_signal(void)
return cq_Signal;
}
INT16 sf_celsius_change_to_fahrenheit(INT16 cTemper)
{
INT16 fTemper = 0;
fTemper = cTemper*9/5 + 32;
printf("fTemper=%d%s\n",fTemper,"`F");
return fTemper;
}
/*************************************************
Function: sf_cardv_adc_value_get
Description: get battery adc only once
@ -1420,32 +1400,6 @@ UINT32 sf_cardv_adc_value_get(UINT32 mux, UINT32 *pval)
return SUCCESS;
}
void sf_stamp_temperature_get(INT16 *fTemper,INT16 *cTemper) /*0:F 1:C*/
{
UINT8 readBatCnt = 0;
UINT32 pValue = 0;
UINT32 temperValueList[6] = {0};
UINT32 maxValue = 0;
for(readBatCnt=0; readBatCnt<5; readBatCnt++) //get max value of 5 times.
{
if(sf_cardv_adc_value_get(SF_ADC_TEMP, &TemperAdc) == SUCCESS)
{
temperValueList[readBatCnt] = pValue;
}
}
for(readBatCnt = 0; readBatCnt < 5; readBatCnt++)
{
maxValue = (maxValue > temperValueList[readBatCnt]? maxValue : temperValueList[readBatCnt]);
}
TemperAdc = maxValue;
//*fTemper = sf_adc2Temperature((UINT16)TemperAdc, 0);
*cTemper = sf_adc2Temperature((UINT16)TemperAdc, 1);
*fTemper = sf_celsius_change_to_fahrenheit(*cTemper);
}
void sf_transcode_bs_ready_cb(void* bitstream_va, UINT32 size)
{
@ -1475,85 +1429,6 @@ static BOOL sf_cmd_transcode_start(char **argv)
return TRUE;
}
INT16 sf_adc2Temperature(UINT16 adcValue, UINT8 type)/*type: 0:°F 1:°C */
{
UINT16 lowIndex = 0, highIndex = 175, keyIndex = 77, midIndex = 0;
UINT16 tmp = 0;
INT16 Temper = 0;
while(lowIndex < highIndex)
{
if((lowIndex == highIndex) || (lowIndex == (highIndex - 1)))
{
keyIndex = lowIndex;
break;
}
else if( (adcValue < Adc2TempTable[lowIndex]) || (adcValue > Adc2TempTable[highIndex]))
{
keyIndex = 255;
break;
}
else
{
midIndex = (lowIndex + highIndex) / 2;
if(adcValue < Adc2TempTable[midIndex])
highIndex = midIndex;
else
lowIndex = midIndex;
}
//printf("low=%bx,high=%bx\r",lowIndex,highIndex);
}
if(keyIndex == 255)
tmp = 176;
else
tmp = keyIndex;
if(tmp > 176)
tmp = 176;
if(type == 1)
{
if(tmp >= 22)
{
tmp = tmp-22;
if( tmp >= 32)
{
tmp = (tmp - 32) * 5 / 9;
Temper = (SINT16)tmp;
}
else
{
tmp = (32 - tmp) * 5 / 9;
Temper = -(SINT16)tmp;
}
}
else
{
tmp = 22 - tmp;
tmp = (32 + tmp) * 5 / 9;
Temper = -(SINT16)tmp;
}
}
else
{
if (tmp > 22)
{
Temper = tmp - 22;
}
else
{
Temper = 22 - tmp;
Temper = -Temper;
}
}
printf("Temper = %d%s\n", Temper, (type ? "`C" : "`F"));
return Temper;
}
static const SF_CHAR* sf_process_message_getstatusstring(SF_MESSAGE_TYPE_E enType)
{
switch(enType)
@ -1610,6 +1485,9 @@ static SINT32 sf_cardv_proccess_cmd_mcu(SF_MESSAGE_BUF_S *pMessageBuf)
//sf_com_message_send_to_cardv(&stMessageBuf);
UINet_AppIpc_Init();
sf_net_wifi_init(NET_AP_MODE, NET_AUTH_WPA2);
//Ux_SendEvent(0, NVTEVT_EXE_WIFI_START, 0);
//sleep(2);
//sf_apinfo_thread_init();
}
break;
case SF_MCU_CMD_MCU_RTC:
@ -1809,19 +1687,14 @@ static SINT32 sf_cardv_proccess_cmd_dev(SF_MESSAGE_BUF_S *pMessageBuf)
{
//printf("[%s:%d] ID = %#x\n", __FUNCTION__, __LINE__,pMessageBuf->arg1);
MLOGI("ID = %#x\n",pMessageBuf->arg1);
SF_MESSAGE_BUF_S stMessageBuf = {0};
//SF_MESSAGE_BUF_S stMessageBuf = {0};
switch(pMessageBuf->arg1)
{
case SF_DEV_CMD_TEMPER:
if(sf_cardv_adc_value_get(SF_ADC_TEMP, &TemperAdc) == SUCCESS)
{
sf_adc2Temperature((UINT16)TemperAdc, 1);
}
cTemper = pMessageBuf->arg2;
fTemper = pMessageBuf->arg3;
MLOGI("cTemper:%d fTemper:%d\n",cTemper,fTemper);
stMessageBuf.cmdId = CMD_DEV;
stMessageBuf.arg1 = SF_DEV_CMD_TEMPER;
stMessageBuf.arg2 = (SINT32)sf_adc2Temperature((UINT16)TemperAdc, pMessageBuf->arg2);
sf_com_message_send_to_app(&stMessageBuf);
break;
case SF_DEV_CMD_BAT:
batteryVal = pMessageBuf->arg2;
@ -2182,8 +2055,18 @@ UINT32 sf_cardv_para_check_stop(void)
{
SINT32 ret = 1;
MLOGD("stop\n");
if(0 == ParaTskCfg.IsRun){
return SF_SUCCESS;
}
ParaTskCfg.IsRun = 0;
MLOGD("sf_flash_poweroff_stop\n");
if(TRUE == sf_get_cardv_para_check_flag()){
MLOGI("menu info is changed\n");
sf_share_mem_customer_down(0);
}
ret = pthread_join(ParaTskCfg.TskId, NULL);
if(ret != SF_SUCCESS)
{
@ -2309,3 +2192,18 @@ BOOL sf_is_flash_voltage_abnormal(void)
return FALSE;
}
void sf_4g_usb_remove(void)
{
SF_MESSAGE_BUF_S stMessageBuf = {0};
stMessageBuf.arg1 = SF_DEV_CMD_4G_USB_RM;
stMessageBuf.cmdId = CMD_DEV;
sf_com_message_send_to_app(&stMessageBuf);
vos_util_delay_ms(400);
}
void sf_stamp_temperature_get(INT16 *fTem,INT16 *cTem) /*0:F 1:C*/
{
*fTem = fTemper;
*cTem = cTemper;
}

View File

@ -32,6 +32,11 @@ UINT8 sf_battery_type_get(void);
BOOL sf_battery_check_init(void);
void sf_set_need_check_first(void);
BOOL sf_is_enough_power_to_update(void);
void sf_adc_init(void);
BOOL sf_is_battery_low(UINT8 refresh, UINT8 nightMode);
INT16 sf_adc2Temperature(UINT16 adcValue, UINT8 type);/*type: 0:F 1:C*/
void sf_stamp_temperature_get(INT16 *fTem,INT16 *cTem); /*0:F 1:C*/
void sf_temper_update(void);
INT16 sf_celsius_change_to_fahrenheit(INT16 cTemper);
void sf_BatteryInfoSave(char *name);
#endif

View File

@ -56,6 +56,7 @@ UINT32 _DcVoltageVal = 0;
UINT32 _LiPolymerVoltageVal = 0; /*4.0P no use*/
UINT32 _BatVoltageVal = 45;
UINT8 IsNightLedOn = 0;
UINT32 _TemperAdc = 0;
UINT32 IsPowerDcIn = 1;
UINT32 BatVoltageVal = 45;
SF_BatteryLevel_e sf_LatestBattLevel = SF_BATT_LEVEL_0;
@ -63,12 +64,27 @@ UINT8 needCheckFirst = TRUE;
UINT32 DcVoltageVal = 0;
UINT32 LiPolymerVoltageVal = 0; /*4.0P no use*/
UINT32 batTempLevel = 0xff;
static UINT32 TemperAdc = 0;
static INT16 fTemper = 0;
static INT16 cTemper = 0;
#define SF_READ_BAT_MAX 10
ID FLG_ID_SF_BSTTERY = 0;
#define SF_DC_IN_VOLATAGE 70
#define SF_LI_IN_VOLATAGE 99
const UINT16 Adc2TempTable[]=
{
0,1648,1721,1794,1867,1940,2013,2086,2159, 2232,2305, 2378,2451,2524,2597,2670,2743, 2816, 2889, 2968,
3047,3126,3205,3284,3363,3442,3521,3600/*-15*/,3679,3758,3837,3916,3995,4074,4153,4232,4321/*-10*/, 4427,4533,4639,
4745,4851,4957,5063,5169,5275,5381,5487,5593,5699,5805,5911,6017,6123,6238/*0*/,6334,6430,6526,6622,6718,
6814,6910,7006,7102,7198,7294,7390,7486,7582,7678,7774,7870,7996,8063/*10*/,8182,8301,8420,8539,8658,8777,
8896,9015,9134,9253,9372,9491,9610,9729,9848,9967,10128/*20*/,10221,10314,10407,10500,10593,10686,10779,10872,10965,
11058,11151,11244,11337,11430,11480,11530,11580,11630/*30*/,11680,11730,11780,11830,11880,11930,11980,12032,12097,12162,12232,
12302,12372,12442,12512,12582,12652,12722/*40*/,12769,12816,12863,12910,12957,13004,13051,13098,13145,13192,13239,13286,13333,
13380,13427,13474,13521/*50*/,13591,13661,13731,13801,13871,13941,14011,14081,14151,14221,14291,14361,14431,14501,14571,14641,
14711,14781,14851/*60*/,14941,15031,15111,15181,15251,15321,15391,15461,15531,15601,15671,15741,15811
};
#if SF_BATTERY_TEST == ENABLE
UINT32 LiPolymerVoltageValTest = 0;
UINT32 BatVoltageValTest = 0;
@ -101,7 +117,6 @@ UINT32 sf_battery_convert_to_adc(UINT32 resistanceGnd, UINT32 resistanceVin, UIN
//adcVal = volt * resistanceGnd * 511 / 27 / (resistanceGnd + resistanceVin);
adcVal = volt * resistanceGnd * 2696 / 27 / (resistanceGnd + resistanceVin);
return adcVal;
}
@ -140,6 +155,7 @@ void sf_adc_init(void)
gpio_direction_output(P_GPIO_0,0);
gpio_direction_output(P_GPIO_1,0);
}
/*************************************************
Function: sf_adc_value_get
Description: get battery adc
@ -187,7 +203,6 @@ UINT32 sf_adc_value_get(UINT32 mux, UINT32 *pval)
gpio_set_value(P_GPIO_1, 1);//adc_muxb
}
//vos_util_delay_us(400);
vos_util_delay_ms(1);
*pval = adc_readVoltage(0);
@ -314,6 +329,13 @@ UINT32 sf_battery_adc_value_get_once(void)
if(puiPara->BatteryLogSwitch)
printf("Bat ADC Value:%lu After Convert:%lu(%lu.%luV)\n",batAdc,batVoltageVal,batVoltageVal/10,batVoltageVal%10);
}
if(sf_adc_value_get(SF_ADC_TEMP, &batAdc) == SUCCESS)
{
_TemperAdc = batAdc;
if(puiPara->BatteryLogSwitch)
printf("_TemperAdc:%lu \n",batAdc);
}
_DcVoltageVal = dcVoltageVal;
@ -567,6 +589,8 @@ signed int sf_battery_value_fast_get(void)
UINT8 readBatCnt = 0;
UINT32 dcValueList[12] = { 0 };
UINT32 batValueList[12] = { 0 };
UINT32 temperValueList[12] = { 0 };
UIMenuStoreInfo *puiPara = sf_ui_para_get();
SINT32 ret = FAIL;
@ -581,6 +605,7 @@ signed int sf_battery_value_fast_get(void)
if(sf_battery_adc_value_get_once() == SUCCESS)
{
dcValueList[readBatCnt] = _DcVoltageVal;
temperValueList[readBatCnt] = _TemperAdc;
if(puiPara->BatteryLogSwitch)
{
@ -615,7 +640,7 @@ signed int sf_battery_value_fast_get(void)
}
DcVoltageVal = sf_get_max_value(dcValueList);
TemperAdc = sf_get_max_value(temperValueList);
if(_LiPolymerVoltageVal)
{
LiPolymerVoltageVal = sf_get_max_value(batValueList);
@ -652,6 +677,11 @@ signed int sf_battery_value_fast_get(void)
ret = SUCCESS;
}
cTemper = sf_adc2Temperature((UINT16)TemperAdc, 1);
fTemper = sf_celsius_change_to_fahrenheit(cTemper);
#if SF_BATTERY_TEST == ENABLE
LiPolymerVoltageValTest = LiPolymerVoltageVal;
BatVoltageValTest = BatVoltageVal;
@ -675,6 +705,7 @@ void sf_battery_level_polling(void)
UINT32 LibatTemp = 0;
UINT8 LibatCnt = 0;
UINT8 batCnt = 0;
UINT32 temperValue = 0;
UIMenuStoreInfo *puiPara = sf_ui_para_get();
static UINT32 prePowerDcStatus = 0;
@ -689,6 +720,8 @@ void sf_battery_level_polling(void)
vos_util_delay_ms(100);
dcTemp += _DcVoltageVal;
temperValue += _TemperAdc;
if(_LiPolymerVoltageVal)
{
LibatTemp += _LiPolymerVoltageVal;
@ -704,6 +737,8 @@ void sf_battery_level_polling(void)
if(readBatCnt >= 100)
{
_DcVoltageVal = dcTemp / 100;
_TemperAdc = temperValue/100;
if(LibatCnt)
_LiPolymerVoltageVal = LibatTemp / LibatCnt;
if(batCnt)
@ -733,7 +768,7 @@ void sf_battery_level_polling(void)
if(puiPara->BatteryLogSwitch)
{
printf("\n[average]DC,After Convert:(%lu.%luV),Is Dc In=%s\n", DcVoltageVal / 10, DcVoltageVal % 10, IsPowerDcIn == 1? "Yes" : "No");
printf("\n[average]DC,After Convert:(%lu.%luV),Is Dc In=%s, TemperAdc:%lu\n", DcVoltageVal / 10, DcVoltageVal % 10, IsPowerDcIn == 1? "Yes" : "No", TemperAdc);
if(LiPolymerVoltageVal)
{
@ -749,7 +784,7 @@ void sf_battery_level_polling(void)
}
sf_battery_level_update();
sf_temper_update();
//ret = sf_check_low_battery();
if(puiPara->BatteryLogSwitch)
@ -1282,7 +1317,111 @@ BOOL sf_is_enough_power_to_update(void)
return TRUE;
}
INT16 sf_celsius_change_to_fahrenheit(INT16 cTemper)
{
INT16 fTemper = 0;
fTemper = cTemper*9/5 + 32;
printf("fTemper=%d%s\n",fTemper,"`F");
return fTemper;
}
void sf_stamp_temperature_get(INT16 *fTem,INT16 *cTem) /*0:F 1:C*/
{
*fTem = fTemper;
*cTem = cTemper;
}
INT16 sf_adc2Temperature(UINT16 adcValue, UINT8 type)/*type: 0:F 1:C*/
{
UINT16 lowIndex = 0, highIndex = 175, keyIndex = 77, midIndex = 0;
UINT16 tmp = 0;
INT16 Temper = 0;
while(lowIndex < highIndex)
{
if((lowIndex == highIndex) || (lowIndex == (highIndex - 1)))
{
keyIndex = lowIndex;
break;
}
else if( (adcValue < Adc2TempTable[lowIndex]) || (adcValue > Adc2TempTable[highIndex]))
{
keyIndex = 255;
break;
}
else
{
midIndex = (lowIndex + highIndex) / 2;
if(adcValue < Adc2TempTable[midIndex])
highIndex = midIndex;
else
lowIndex = midIndex;
}
//printf("low=%bx,high=%bx\r",lowIndex,highIndex);
}
if(keyIndex == 255)
tmp = 176;
else
tmp = keyIndex;
if(tmp > 176)
tmp = 176;
if(type == 1)
{
if(tmp >= 22)
{
tmp = tmp-22;
if( tmp >= 32)
{
tmp = (tmp - 32) * 5 / 9;
Temper = (INT16)tmp;
}
else
{
tmp = (32 - tmp) * 5 / 9;
Temper = -(INT16)tmp;
}
}
else
{
tmp = 22 - tmp;
tmp = (32 + tmp) * 5 / 9;
Temper = -(INT16)tmp;
}
}
else
{
if (tmp > 22)
{
Temper = tmp - 22;
}
else
{
Temper = 22 - tmp;
Temper = -Temper;
}
}
printf("Temper = %d%s\n", Temper, (type ? "`C" : "`F"));
return Temper;
}
/*************************************************
Function: sf_temper_update
Description: Get temper Voltage.
Input: N/A
Output: N/A
Return: N/A
Others: N/A
*************************************************/
void sf_temper_update(void)
{
cTemper = sf_adc2Temperature((UINT16)TemperAdc, 1);
fTemper = sf_celsius_change_to_fahrenheit(cTemper);
}
#if SF_BATTERY_TEST == ENABLE

View File

@ -687,14 +687,22 @@ UINT8 sf_get_power_on_mode(void)
if(ModeFlag)
{
ModeFlag = 0;
//PowerOnMode = sf_mcu_power_on_para_get(SF_MCU_POWERON);
PowerOnMode = sf_mcu_power_on_para_get(SF_MCU_STARTMODE);
PowerOnMode &= 0x0f;
//sf_is_night_mode(1);
if(1 == PowerOnMode)
if(gpio_getIntStatus(GPIO_INT_USBPLUGIN))
{
ConfigureModeFlag = 1;
PowerOnMode = PWR_ON_USB;
}
else{
//PowerOnMode = sf_mcu_power_on_para_get(SF_MCU_POWERON);
PowerOnMode = sf_mcu_power_on_para_get(SF_MCU_STARTMODE);
PowerOnMode &= 0x0f;
//sf_is_night_mode(1);
if(1 == PowerOnMode)
{
ConfigureModeFlag = 1;
}
}
}
return PowerOnMode;
}
@ -1997,6 +2005,10 @@ UINT16 sf_mcu_get_irshtter(void)
UINT8 mcuReg[REG_SIZE] = { 0 };
UINT8 mcuData[REG_SIZE] = { 0 };
UINT8 i = 0;
if(gpio_getIntStatus(GPIO_INT_USBPLUGIN))
{
return IRSHTTER;
}
if(isRefresh){
isRefresh = 0;
mcuReg[i++] = LUMINANCE_L;