diff options
author | Aidan MacDonald <amachronic@protonmail.com> | 2021-11-30 19:18:10 +0000 |
---|---|---|
committer | Aidan MacDonald <amachronic@protonmail.com> | 2021-12-23 11:39:58 +0000 |
commit | 1a313dc9bff109d155e35bac79c475ea65198aea (patch) | |
tree | 034772dd7c6cbe3858fc1d3015256b69ad375bc5 | |
parent | fc678bd001937f4a218e57db629c7dae8648bf4a (diff) | |
download | rockbox-1a313dc9bff109d155e35bac79c475ea65198aea.tar.gz rockbox-1a313dc9bff109d155e35bac79c475ea65198aea.zip |
Report battery current on all X1000 native targets
This allows battery run time to be calculated from the
actual battery usage on the FiiO M3K and Shanling Q1.
This isn't very good for the time being and the estimate
tends to go all over the place due to small variations
in current or voltage.
The Eros Q can support this feature as well, but since
it already has fixed estimates defined and the quality
of the "real time" estimate is low I am not enabling it
there.
Change-Id: Id34a93ee4b7d66f9f7e56ef0f5149f67e8e72039
-rw-r--r-- | firmware/export/config/erosqnative.h | 2 | ||||
-rw-r--r-- | firmware/export/config/fiiom3k.h | 2 | ||||
-rw-r--r-- | firmware/export/config/shanlingq1.h | 2 | ||||
-rw-r--r-- | firmware/target/mips/ingenic_x1000/erosqnative/power-erosqnative.c | 10 | ||||
-rw-r--r-- | firmware/target/mips/ingenic_x1000/fiiom3k/power-fiiom3k.c | 10 | ||||
-rw-r--r-- | firmware/target/mips/ingenic_x1000/shanlingq1/power-shanlingq1.c | 10 |
6 files changed, 33 insertions, 3 deletions
diff --git a/firmware/export/config/erosqnative.h b/firmware/export/config/erosqnative.h index f68830e211..17a2b250f2 100644 --- a/firmware/export/config/erosqnative.h +++ b/firmware/export/config/erosqnative.h | |||
@@ -83,7 +83,7 @@ | |||
83 | #define STORAGE_NEEDS_BOUNCE_BUFFER | 83 | #define STORAGE_NEEDS_BOUNCE_BUFFER |
84 | 84 | ||
85 | /* Power management */ | 85 | /* Power management */ |
86 | #define CONFIG_BATTERY_MEASURE VOLTAGE_MEASURE | 86 | #define CONFIG_BATTERY_MEASURE (VOLTAGE_MEASURE/*|CURRENT_MEASURE*/) |
87 | #define CONFIG_CHARGING CHARGING_MONITOR | 87 | #define CONFIG_CHARGING CHARGING_MONITOR |
88 | #define HAVE_SW_POWEROFF | 88 | #define HAVE_SW_POWEROFF |
89 | 89 | ||
diff --git a/firmware/export/config/fiiom3k.h b/firmware/export/config/fiiom3k.h index 61b6123a67..558ff41dd7 100644 --- a/firmware/export/config/fiiom3k.h +++ b/firmware/export/config/fiiom3k.h | |||
@@ -88,7 +88,7 @@ | |||
88 | /* TODO: implement HAVE_RTC_ALARM */ | 88 | /* TODO: implement HAVE_RTC_ALARM */ |
89 | 89 | ||
90 | /* Power management */ | 90 | /* Power management */ |
91 | #define CONFIG_BATTERY_MEASURE VOLTAGE_MEASURE | 91 | #define CONFIG_BATTERY_MEASURE (VOLTAGE_MEASURE|CURRENT_MEASURE) |
92 | #define CONFIG_CHARGING CHARGING_MONITOR | 92 | #define CONFIG_CHARGING CHARGING_MONITOR |
93 | #define HAVE_SW_POWEROFF | 93 | #define HAVE_SW_POWEROFF |
94 | 94 | ||
diff --git a/firmware/export/config/shanlingq1.h b/firmware/export/config/shanlingq1.h index 16ce888958..18786e9a4b 100644 --- a/firmware/export/config/shanlingq1.h +++ b/firmware/export/config/shanlingq1.h | |||
@@ -76,7 +76,7 @@ | |||
76 | /* TODO: implement HAVE_RTC_ALARM */ | 76 | /* TODO: implement HAVE_RTC_ALARM */ |
77 | 77 | ||
78 | /* Power management */ | 78 | /* Power management */ |
79 | #define CONFIG_BATTERY_MEASURE (VOLTAGE_MEASURE) | 79 | #define CONFIG_BATTERY_MEASURE (VOLTAGE_MEASURE|CURRENT_MEASURE) |
80 | #define CONFIG_CHARGING CHARGING_MONITOR | 80 | #define CONFIG_CHARGING CHARGING_MONITOR |
81 | #define HAVE_SW_POWEROFF | 81 | #define HAVE_SW_POWEROFF |
82 | 82 | ||
diff --git a/firmware/target/mips/ingenic_x1000/erosqnative/power-erosqnative.c b/firmware/target/mips/ingenic_x1000/erosqnative/power-erosqnative.c index 5573919aa2..a1a4d2c2b2 100644 --- a/firmware/target/mips/ingenic_x1000/erosqnative/power-erosqnative.c +++ b/firmware/target/mips/ingenic_x1000/erosqnative/power-erosqnative.c | |||
@@ -111,3 +111,13 @@ int _battery_voltage(void) | |||
111 | { | 111 | { |
112 | return axp_adc_read(ADC_BATTERY_VOLTAGE); | 112 | return axp_adc_read(ADC_BATTERY_VOLTAGE); |
113 | } | 113 | } |
114 | |||
115 | #if CONFIG_BATTERY_MEASURE & CURRENT_MEASURE | ||
116 | int _battery_current(void) | ||
117 | { | ||
118 | if(charging_state()) | ||
119 | return axp_adc_read(ADC_CHARGE_CURRENT); | ||
120 | else | ||
121 | return axp_adc_read(ADC_DISCHARGE_CURRENT); | ||
122 | } | ||
123 | #endif | ||
diff --git a/firmware/target/mips/ingenic_x1000/fiiom3k/power-fiiom3k.c b/firmware/target/mips/ingenic_x1000/fiiom3k/power-fiiom3k.c index 5c92fa81e2..2d28ad0975 100644 --- a/firmware/target/mips/ingenic_x1000/fiiom3k/power-fiiom3k.c +++ b/firmware/target/mips/ingenic_x1000/fiiom3k/power-fiiom3k.c | |||
@@ -106,3 +106,13 @@ int _battery_voltage(void) | |||
106 | { | 106 | { |
107 | return axp_adc_read(ADC_BATTERY_VOLTAGE); | 107 | return axp_adc_read(ADC_BATTERY_VOLTAGE); |
108 | } | 108 | } |
109 | |||
110 | #if CONFIG_BATTERY_MEASURE & CURRENT_MEASURE | ||
111 | int _battery_current(void) | ||
112 | { | ||
113 | if(charging_state()) | ||
114 | return axp_adc_read(ADC_CHARGE_CURRENT); | ||
115 | else | ||
116 | return axp_adc_read(ADC_DISCHARGE_CURRENT); | ||
117 | } | ||
118 | #endif | ||
diff --git a/firmware/target/mips/ingenic_x1000/shanlingq1/power-shanlingq1.c b/firmware/target/mips/ingenic_x1000/shanlingq1/power-shanlingq1.c index 17fbe1cede..75f8031dd9 100644 --- a/firmware/target/mips/ingenic_x1000/shanlingq1/power-shanlingq1.c +++ b/firmware/target/mips/ingenic_x1000/shanlingq1/power-shanlingq1.c | |||
@@ -121,6 +121,16 @@ int _battery_voltage(void) | |||
121 | return axp_adc_read(ADC_BATTERY_VOLTAGE); | 121 | return axp_adc_read(ADC_BATTERY_VOLTAGE); |
122 | } | 122 | } |
123 | 123 | ||
124 | #if CONFIG_BATTERY_MEASURE & CURRENT_MEASURE | ||
125 | int _battery_current(void) | ||
126 | { | ||
127 | if(charging_state()) | ||
128 | return axp_adc_read(ADC_CHARGE_CURRENT); | ||
129 | else | ||
130 | return axp_adc_read(ADC_DISCHARGE_CURRENT); | ||
131 | } | ||
132 | #endif | ||
133 | |||
124 | #if defined(HAVE_CW2015) && (CONFIG_BATTERY_MEASURE & PERCENTAGE_MEASURE) != 0 | 134 | #if defined(HAVE_CW2015) && (CONFIG_BATTERY_MEASURE & PERCENTAGE_MEASURE) != 0 |
125 | int _battery_level(void) | 135 | int _battery_level(void) |
126 | { | 136 | { |