1.关于DC 7V低电关机修改

This commit is contained in:
payton 2024-02-04 20:39:35 +08:00
parent 9c46bc33f6
commit b2f005bf21
4 changed files with 63 additions and 13 deletions

View File

@ -38,4 +38,5 @@ void sf_stamp_temperature_get(INT16 *fTem,INT16 *cTem); /*0:F 1:C*/
void sf_temper_update(void); void sf_temper_update(void);
INT16 sf_celsius_change_to_fahrenheit(INT16 cTemper); INT16 sf_celsius_change_to_fahrenheit(INT16 cTemper);
UINT16 sf_battery_val_get(void); UINT16 sf_battery_val_get(void);
void sf_app_set_battery_level(unsigned long Val);
#endif #endif

View File

@ -1469,11 +1469,13 @@ UINT8 sf_check_power_on_mode(void)
char *pStrUpFw = "UpFw="; char *pStrUpFw = "UpFw=";
char *pStrUpMcu = "mcu="; char *pStrUpMcu = "mcu=";
char *pStrOtsOk = "ota_flag=0x1"; char *pStrOtsOk = "ota_flag=0x1";
char *pStrSF = "sf=";
char *temp = NULL; char *temp = NULL;
UINT8 startup = 0; UINT8 startup = 0;
UINT8 UpFw = 0; UINT8 UpFw = 0;
UINT8 Upmcu = 0; UINT8 Upmcu = 0;
unsigned long sftmp = 0;
system("cat /proc/cmdline > /tmp/Mode.txt"); system("cat /proc/cmdline > /tmp/Mode.txt");
fp = fopen("/tmp/Mode.txt","r"); fp = fopen("/tmp/Mode.txt","r");
@ -1512,6 +1514,14 @@ UINT8 sf_check_power_on_mode(void)
SLOGI(": ota upgrade success\r\n"); SLOGI(": ota upgrade success\r\n");
sf_cmd_camera_restart(1); sf_cmd_camera_restart(1);
} }
temp = strstr(pStrSrc, pStrSF);
if ( temp != NULL) {
temp += strlen("sf=");
// sscanf(temp, "%hhd", &sftmp);
sftmp = strtoul(temp, NULL, 10);
sf_app_set_battery_level(sftmp);
// sf_cardv_battery_level_set(sftmp);
}
SLOGI("StartMode=%d,UpFw=%d Upmcu=%d ota=%d\r\n", startup, UpFw, Upmcu, sf_get_camera_restart()); SLOGI("StartMode=%d,UpFw=%d Upmcu=%d ota=%d\r\n", startup, UpFw, Upmcu, sf_get_camera_restart());
free(pStrSrc); free(pStrSrc);

View File

@ -788,7 +788,7 @@ signed int sf_battery_value_fast_get(void)
LiPolymerVoltageVal = 0; LiPolymerVoltageVal = 0;
} }
if((DcVoltageVal > LiPolymerVoltageVal) && (DcVoltageVal >= BatVoltageVal) && (DcVoltageVal >= SF_DC_IN_VOLATAGE)) if((DcVoltageVal > LiPolymerVoltageVal) && (DcVoltageVal >= BatVoltageVal))
{ {
IsPowerDcIn = 1; IsPowerDcIn = 1;
} }
@ -877,7 +877,7 @@ SINT32 sf_battery_adc_value_get(void)
if(batCnt) if(batCnt)
_BatVoltageVal = batTemp / batCnt; _BatVoltageVal = batTemp / batCnt;
if((_DcVoltageVal > _LiPolymerVoltageVal) && (_DcVoltageVal >= _BatVoltageVal) && (_DcVoltageVal >= SF_DC_IN_VOLATAGE)) if((_DcVoltageVal > _LiPolymerVoltageVal) && (_DcVoltageVal >= _BatVoltageVal))
{ {
IsPowerDcIn = 1; IsPowerDcIn = 1;
} }
@ -967,7 +967,7 @@ void sf_battery_level_polling(void)
if(batCnt) if(batCnt)
_BatVoltageVal = (UINT32)round(batTemp / batCnt); _BatVoltageVal = (UINT32)round(batTemp / batCnt);
if((_DcVoltageVal > _LiPolymerVoltageVal) && (_DcVoltageVal >= _BatVoltageVal) && (_DcVoltageVal >= SF_DC_IN_VOLATAGE)) if((_DcVoltageVal > _LiPolymerVoltageVal) && (_DcVoltageVal >= _BatVoltageVal))
{ {
IsPowerDcIn = 1; IsPowerDcIn = 1;
} }
@ -1438,7 +1438,10 @@ UINT8 sf_battery_value_get(UINT8 nightMode)
} }
else else
{ {
value = 100; if(DcVoltageVal > SF_DC_IN_VOLATAGE)
{
value = 100;
}
} }
return value; return value;
@ -1506,11 +1509,11 @@ BOOL sf_is_battery_low(UINT8 refresh, UINT8 nightMode)
UINT8 batteryVal = 0; UINT8 batteryVal = 0;
UINT8 batteryLevel = 0; UINT8 batteryLevel = 0;
if(refresh) // if(refresh)
{ // {
sf_battery_value_fast_get(); // sf_battery_value_fast_get();
//printf("DC=%d Custom=%d bat=%d\n", dcValue, CustomValue, batli8v); // //printf("DC=%d Custom=%d bat=%d\n", dcValue, CustomValue, batli8v);
} // }
batteryVal = sf_battery_value_get(nightMode); batteryVal = sf_battery_value_get(nightMode);
@ -1720,4 +1723,28 @@ void sf_temper_update(void)
} }
} }
void sf_app_set_battery_level(unsigned long Val)
{
// UINT16 batteryVal = 0;
UINT16 powerVal = 0;
UINT16 batteryType = 0;
// batteryVal = (Val>>18) & 0x7F;//0~100
batteryType = (Val>>16) & 0x03;
powerVal = Val & 0xFF;
if(batteryType == SF_POWER_TYPE_DC)
{
IsPowerDcIn = 1;
DcVoltageVal = powerVal;
}
else if (batteryType == SF_POWER_TYPE_LI_POLYER) {
LiPolymerVoltageVal = powerVal;
}
else {
BatVoltageVal = powerVal;
}
// MLOGI("batteryVal:%d batteryType:%d powerVal:%d p:%d\n",batteryVal, batteryType, powerVal,Val);
}
#endif #endif

View File

@ -359,6 +359,10 @@ UINT32 sf_battery_adc_value_get_once(void)
if(sf_adc_value_get(SF_ADC_DC, &batAdc) == SUCCESS) if(sf_adc_value_get(SF_ADC_DC, &batAdc) == SUCCESS)
{ {
dcVoltageVal = sf_battery_voltage_convert(24, 100, batAdc); dcVoltageVal = sf_battery_voltage_convert(24, 100, batAdc);
if(dcVoltageVal)
{
dcVoltageVal += 1;
}
//dcVoltageVal += 4; //dcVoltageVal += 4;
if(puiPara->BatteryLogSwitch) if(puiPara->BatteryLogSwitch)
printf("DC ADC Value:%lu After Convert:%lu(%lu.%luV)\n",batAdc,dcVoltageVal,dcVoltageVal/10,dcVoltageVal%10); printf("DC ADC Value:%lu After Convert:%lu(%lu.%luV)\n",batAdc,dcVoltageVal,dcVoltageVal/10,dcVoltageVal%10);
@ -731,7 +735,7 @@ signed int sf_battery_value_fast_get(void)
LiPolymerVoltageVal = 0; LiPolymerVoltageVal = 0;
} }
if((DcVoltageVal > LiPolymerVoltageVal) && (DcVoltageVal >= BatVoltageVal) && (DcVoltageVal >= SF_DC_IN_VOLATAGE)) if((DcVoltageVal > LiPolymerVoltageVal) && (DcVoltageVal >= BatVoltageVal))
{ {
IsPowerDcIn = 1; IsPowerDcIn = 1;
} }
@ -823,7 +827,7 @@ void sf_battery_level_polling(void)
if(batCnt) if(batCnt)
_BatVoltageVal = batTemp / batCnt; _BatVoltageVal = batTemp / batCnt;
if((_DcVoltageVal > _LiPolymerVoltageVal) && (_DcVoltageVal >= _BatVoltageVal) && (_DcVoltageVal >= SF_DC_IN_VOLATAGE)) if((_DcVoltageVal > _LiPolymerVoltageVal) && (_DcVoltageVal >= _BatVoltageVal))
{ {
IsPowerDcIn = 1; IsPowerDcIn = 1;
} }
@ -936,6 +940,11 @@ THREAD_RETTYPE sf_battery_check_thread(void *arg)
sf_set_power_off_flag(APP_POWER_OFF_BATT_EMPTY); sf_set_power_off_flag(APP_POWER_OFF_BATT_EMPTY);
flow_preview_set_stop_flag(TRUE); flow_preview_set_stop_flag(TRUE);
#endif #endif
while(1)
{
vos_util_delay_ms(1000);
printf("[%s:%d] cnt power off because low battery\n", __FUNCTION__, __LINE__);
}
} }
else { else {
@ -1298,7 +1307,10 @@ UINT8 sf_battery_value_get(UINT8 nightMode)
} }
else else
{ {
value = 100; if(DcVoltageVal > SF_DC_IN_VOLATAGE)
{
value = 100;
}
} }
return value; return value;