From 1b86ddf2013c4efbd9bf21dac68bded82af60856 Mon Sep 17 00:00:00 2001 From: penglei <1624952103@qq.com> Date: Wed, 26 Jun 2024 19:38:14 +0800 Subject: [PATCH] =?utf8?q?=E4=BC=98=E5=8C=96=E7=94=B5=E6=B1=A0=E5=85=85?= =?utf8?q?=E7=94=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../battery/service/battery_driver.cpp | 47 +++++++++++-------- .../drivers/peripheral/cywee/src/main_dml.c | 2 +- 2 files changed, 29 insertions(+), 20 deletions(-) diff --git a/code/sdk/application/battery/service/battery_driver.cpp b/code/sdk/application/battery/service/battery_driver.cpp index 3f458c56a..cd83fd74b 100644 --- a/code/sdk/application/battery/service/battery_driver.cpp +++ b/code/sdk/application/battery/service/battery_driver.cpp @@ -264,9 +264,11 @@ static uint32_t g_adc_sample_stick = 0; #define MAXIMUM_VOLTAGE_RANGE 17 static int history_percent = 0; -static int sum_percent = 0; -static int percent_num=0; -static int history_data[5]={0}; + +static float sum_vol = 0; +static int vol_num=0; + +static float history_data[5]={0}; static int left = 0; static int right = -1; static uint32_t history_time = 0; @@ -436,6 +438,18 @@ static int battery_get_power_percentage(float voltage) } + if (voltage <= batteryservice_VOLTAGE_MIN) + percent = 0; + + if (voltage >= batteryservice_VOLTAGE_MAX) + percent = 100; + + return percent; +} + +static void get_avg_voltage(float *vol) +{ + uint32_t current_time = 0; uapi_get_timestampe_ss(¤t_time); if(history_time == 0) history_time = current_time; @@ -445,33 +459,27 @@ static int battery_get_power_percentage(float voltage) if(sample_time >= 10) { sample_time = 0; - if(percent_num == 5) + if(vol_num == 5) { - sum_percent -= history_data[left]; + sum_vol -= history_data[left]; history_data[left] = 0; left++; left = left % 5; - percent_num--; + vol_num--; } - percent_num++; + vol_num++; right++; right = right % 5; - history_data[right] = percent; - sum_percent += history_data[right]; - } - - percent = sum_percent / percent_num; - - if (voltage <= batteryservice_VOLTAGE_MIN) - percent = 0; + history_data[right] = *vol; + sum_vol += history_data[right]; + } + if(vol_num != 0) + *vol = sum_vol / vol_num; - if (voltage >= batteryservice_VOLTAGE_MAX) - percent = 100; - - return percent; } + static bool adc_get_sample_result(float *voltage, uint8_t channel) { uint32_t sample_number = 0; @@ -525,6 +533,7 @@ static bool adc_get_sample_result(float *voltage, uint8_t channel) if(channel == 2) { *voltage = adc_trans_systick_to_battery_voltage(stick); + get_avg_voltage(voltage); } else if (channel == 0){ *voltage = adc_trans_systick_to_battery_ntc(stick); diff --git a/code/sdk/drivers/peripheral/cywee/src/main_dml.c b/code/sdk/drivers/peripheral/cywee/src/main_dml.c index d498411a2..6af8472b4 100644 --- a/code/sdk/drivers/peripheral/cywee/src/main_dml.c +++ b/code/sdk/drivers/peripheral/cywee/src/main_dml.c @@ -1081,7 +1081,7 @@ int cywee_main_dml(void) cywee_activity_mode_change(SPORT_ACTIVE_MODE_NORMAL); - cywee_inactivity_mode_change(INACTIVITY_MODE_SEDENTARY); + cywee_inactivity_mode_change(INACTIVITY_MODE_SEDENTARY_AND_NAP); //cywee_inactivity_mode_change(INACTIVITY_MODE_SLEEPING); -- 2.17.1