diff --git a/code/application/source/cardv/SrcCode/Mode/UIModeTranscode.c b/code/application/source/cardv/SrcCode/Mode/UIModeTranscode.c index 46452535e..1614ed0a7 100644 --- a/code/application/source/cardv/SrcCode/Mode/UIModeTranscode.c +++ b/code/application/source/cardv/SrcCode/Mode/UIModeTranscode.c @@ -10,7 +10,9 @@ #include "UIFrameworkExt.h" #include "UIWnd/UIFlow.h" #include "UIApp/Transcode/UIAppTranscode.h" - +#if HUNTING_CAMERA_MCU == ENABLE +#include +#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"); } diff --git a/code/application/source/cardv/SrcCode/System/SysMain_Exe.c b/code/application/source/cardv/SrcCode/System/SysMain_Exe.c index f5b963686..91a812607 100755 --- a/code/application/source/cardv/SrcCode/System/SysMain_Exe.c +++ b/code/application/source/cardv/SrcCode/System/SysMain_Exe.c @@ -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 diff --git a/code/application/source/cardv/SrcCode/System/SysUsb_CB.c b/code/application/source/cardv/SrcCode/System/SysUsb_CB.c index 8553161b3..448c1c338 100755 --- a/code/application/source/cardv/SrcCode/System/SysUsb_CB.c +++ b/code/application/source/cardv/SrcCode/System/SysUsb_CB.c @@ -33,10 +33,10 @@ void USB_CB(UINT32 event, UINT32 param1, UINT32 param2) { switch (event) { case SYSTEM_CB_CONFIG: - //1.³]©winit­È - //2.³]©wCB­È, - //3.µù¥USxJobªA°È ---------> System Job - //4.µù¥USxTimerªA°È ---------> Detect Job + //1.�]�winit�� + //2.�]�wCB��, + //3.���USxJob�A�� ---------> System Job + //4.���USxTimer�A�� ---------> 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) } } /* -¥H¤U3­ÓUSB mode +�H�U3��USB mode MSDC - »Ý­n©T©wªº Size 128K Bytes - ¦³­ÓÅܼƴN¬O Vendor Commands, - ¦³¶}Vendor Command­n 142KB >> check define MSDCNVT_REQUIRE_MIN_SIZE + �ݭn�T�w�� Size 128K Bytes + �����ܼƴN�O Vendor Commands, + ���}Vendor Command�n 142KB >> check define MSDCNVT_REQUIRE_MIN_SIZE SIDC - ¨â¶ô¡Atotal»Ý­nªºbuffer¤½¦¡¦p¤U: + ����Atotal�ݭn��buffer�����p�U: 2930KB(x 1024) + Object Num x 108 Byte PCC: - 2¶ô * M. - M = ((JPEG bitstream + header + 2 )¨ú32 byte align) + 64 - JPEG bitstream ¦bHD mode ¥²©w¤£¤p©ó0x80000B - JPEG bitstream ¦b¨ä¥Lmode¥²©w¤£¤p©ó0x40000B + 2�� * M. + M = ((JPEG bitstream + header + 2 )��32 byte align) + 64 + JPEG bitstream �bHD mode ���w���p��0x80000B + JPEG bitstream �b��Lmode���w���p��0x40000B */ diff --git a/code/application/source/cardv/SrcCode/System/SysUsb_Exe.c b/code/application/source/cardv/SrcCode/System/SysUsb_Exe.c index aeab3f047..b4fbc560c 100755 --- a/code/application/source/cardv/SrcCode/System/SysUsb_Exe.c +++ b/code/application/source/cardv/SrcCode/System/SysUsb_Exe.c @@ -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); diff --git a/code/application/source/cardv/SrcCode/System/main.c b/code/application/source/cardv/SrcCode/System/main.c index 5869ed1cb..68571cfcd 100755 --- a/code/application/source/cardv/SrcCode/System/main.c +++ b/code/application/source/cardv/SrcCode/System/main.c @@ -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 diff --git a/code/application/source/cardv/SrcCode/UIApp/Network/UIAppNetwork.c b/code/application/source/cardv/SrcCode/UIApp/Network/UIAppNetwork.c index 263c5a962..c36c20ed1 100644 --- a/code/application/source/cardv/SrcCode/UIApp/Network/UIAppNetwork.c +++ b/code/application/source/cardv/SrcCode/UIApp/Network/UIAppNetwork.c @@ -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; } diff --git a/code/application/source/sf_app/code/include/sf_battery.h b/code/application/source/sf_app/code/include/sf_battery.h index 15d29645f..e94f50002 100644 --- a/code/application/source/sf_app/code/include/sf_battery.h +++ b/code/application/source/sf_app/code/include/sf_battery.h @@ -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 diff --git a/code/application/source/sf_app/code/source/app/sf_app.c b/code/application/source/sf_app/code/source/app/sf_app.c index 818ddf18c..73aecf1db 100644 --- a/code/application/source/sf_app/code/source/app/sf_app.c +++ b/code/application/source/sf_app/code/source/app/sf_app.c @@ -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(); } diff --git a/code/application/source/sf_app/code/source/app/sf_common.c b/code/application/source/sf_app/code/source/app/sf_common.c index 69f8529ac..caafc606e 100644 --- a/code/application/source/sf_app/code/source/app/sf_common.c +++ b/code/application/source/sf_app/code/source/app/sf_common.c @@ -55,6 +55,7 @@ extern "C" { #include #include #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: diff --git a/code/application/source/sf_app/code/source/battery/sf_battery.c b/code/application/source/sf_app/code/source/battery/sf_battery.c index 106356b2a..cf8913541 100644 --- a/code/application/source/sf_app/code/source/battery/sf_battery.c +++ b/code/application/source/sf_app/code/source/battery/sf_battery.c @@ -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 { @@ -312,7 +324,14 @@ UINT32 sf_battery_adc_value_get_once(void) if(puiPara->BatteryLogSwitch) 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,7 +613,8 @@ 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) { printf("%s:%d [%d]DC ADC Value=%d,After Convert:%d(%d.%dV)\n", __FUNCTION__, __LINE__, readBatCnt + 1, sf_battery_convert_to_adc(10, 100, dcValueList[readBatCnt]), @@ -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 diff --git a/code/application/source/sf_app/code/source/systemMng/sf_commu_mcu_reg.c b/code/application/source/sf_app/code/source/systemMng/sf_commu_mcu_reg.c index 3f28ec6b6..bf619f9e7 100644 --- a/code/application/source/sf_app/code/source/systemMng/sf_commu_mcu_reg.c +++ b/code/application/source/sf_app/code/source/systemMng/sf_commu_mcu_reg.c @@ -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; diff --git a/code/lib/source/sifar/code/include/sf_common.h b/code/lib/source/sifar/code/include/sf_common.h index f1c944312..d7ba03fb8 100644 --- a/code/lib/source/sifar/code/include/sf_common.h +++ b/code/lib/source/sifar/code/include/sf_common.h @@ -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 diff --git a/code/lib/source/sifar/code/source/common/sf_common.c b/code/lib/source/sifar/code/source/common/sf_common.c index 7d392edaf..cb488d33f 100644 --- a/code/lib/source/sifar/code/source/common/sf_common.c +++ b/code/lib/source/sifar/code/source/common/sf_common.c @@ -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) { @@ -2308,4 +2191,19 @@ 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; } \ No newline at end of file diff --git a/rtos/code/driver/na51089/include/sf_battery.h b/rtos/code/driver/na51089/include/sf_battery.h index e27af3e54..fd8741eb0 100644 --- a/rtos/code/driver/na51089/include/sf_battery.h +++ b/rtos/code/driver/na51089/include/sf_battery.h @@ -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 diff --git a/rtos/code/driver/na51089/source/mcu/sf_battery.c b/rtos/code/driver/na51089/source/mcu/sf_battery.c index 883111522..5fd372f74 100644 --- a/rtos/code/driver/na51089/source/mcu/sf_battery.c +++ b/rtos/code/driver/na51089/source/mcu/sf_battery.c @@ -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); @@ -316,6 +331,13 @@ UINT32 sf_battery_adc_value_get_once(void) } + if(sf_adc_value_get(SF_ADC_TEMP, &batAdc) == SUCCESS) + { + _TemperAdc = batAdc; + if(puiPara->BatteryLogSwitch) + printf("_TemperAdc:%lu \n",batAdc); + } + _DcVoltageVal = dcVoltageVal; if ((liPolymerVoltageVal > batVoltageVal)) @@ -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,7 +605,8 @@ 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) { printf("%s:%d [%d]DC ADC Value=%lu,After Convert:%lu(%lu.%luV)\n", __FUNCTION__, __LINE__, readBatCnt + 1, sf_battery_convert_to_adc(10, 100, dcValueList[readBatCnt]), @@ -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 diff --git a/rtos/code/driver/na51089/source/mcu/sf_mcu.c b/rtos/code/driver/na51089/source/mcu/sf_mcu.c index 2262b5046..8e054b080 100644 --- a/rtos/code/driver/na51089/source/mcu/sf_mcu.c +++ b/rtos/code/driver/na51089/source/mcu/sf_mcu.c @@ -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;