summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTomasz Moń <desowin@gmail.com>2011-11-24 18:55:11 +0000
committerTomasz Moń <desowin@gmail.com>2011-11-24 18:55:11 +0000
commit62f5027650b79ee35162f465165ab30e38442651 (patch)
tree2f5f6e42b9e7e4c342a2475ed8e841db877bd8b0
parente1949696d900448f94243d148dc8aceb20d19cd5 (diff)
downloadrockbox-62f5027650b79ee35162f465165ab30e38442651.tar.gz
rockbox-62f5027650b79ee35162f465165ab30e38442651.zip
Fix battery meter on Sansa Connect.
Use the battery capacity percents reported by AVR. Internally fake linear voltage scale is used (1 mV = 1%). git-svn-id: svn://svn.rockbox.org/rockbox/trunk@31049 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--firmware/target/arm/tms320dm320/sansa-connect/avr-sansaconnect.c8
-rw-r--r--firmware/target/arm/tms320dm320/sansa-connect/powermgmt-sansaconnect.c17
2 files changed, 20 insertions, 5 deletions
diff --git a/firmware/target/arm/tms320dm320/sansa-connect/avr-sansaconnect.c b/firmware/target/arm/tms320dm320/sansa-connect/avr-sansaconnect.c
index 3a6a748621..62a25e879f 100644
--- a/firmware/target/arm/tms320dm320/sansa-connect/avr-sansaconnect.c
+++ b/firmware/target/arm/tms320dm320/sansa-connect/avr-sansaconnect.c
@@ -297,6 +297,8 @@ void avr_hid_init(void)
297 avr_hid_sync(); 297 avr_hid_sync();
298} 298}
299 299
300/* defined in powermgmt-sansaconnect.c */
301void set_battery_level(unsigned int level);
300 302
301static void avr_hid_get_state(void) 303static void avr_hid_get_state(void)
302{ 304{
@@ -309,6 +311,12 @@ static void avr_hid_get_state(void)
309 311
310 spi_txrx(cmd, buf, sizeof(cmd)); 312 spi_txrx(cmd, buf, sizeof(cmd));
311 313
314 /*
315 * buf[8] contains some battery/charger related information (unknown)
316 * buf[9] contains battery level in percents (0-100)
317 */
318 set_battery_level((unsigned int)buf[9]);
319
312 spi_txrx(cmd_empty, NULL, 1); /* request interrupt on button press */ 320 spi_txrx(cmd_empty, NULL, 1); /* request interrupt on button press */
313 321
314 parse_button_state(buf); 322 parse_button_state(buf);
diff --git a/firmware/target/arm/tms320dm320/sansa-connect/powermgmt-sansaconnect.c b/firmware/target/arm/tms320dm320/sansa-connect/powermgmt-sansaconnect.c
index bd90c51072..9085679b32 100644
--- a/firmware/target/arm/tms320dm320/sansa-connect/powermgmt-sansaconnect.c
+++ b/firmware/target/arm/tms320dm320/sansa-connect/powermgmt-sansaconnect.c
@@ -24,9 +24,10 @@
24#include "powermgmt.h" 24#include "powermgmt.h"
25#include "kernel.h" 25#include "kernel.h"
26 26
27/* THIS CONTAINS CURRENTLY DUMMY CODE! */ 27/* Use fake linear scale as AVR does the voltage to percentage conversion */
28
29static unsigned int current_battery_level = 100;
28 30
29static const unsigned short current_voltage = 3910;
30const unsigned short battery_level_dangerous[BATTERY_TYPES_COUNT] = 31const unsigned short battery_level_dangerous[BATTERY_TYPES_COUNT] =
31{ 32{
32 0 33 0
@@ -40,17 +41,23 @@ const unsigned short battery_level_shutoff[BATTERY_TYPES_COUNT] =
40/* voltages (millivolt) of 0%, 10%, ... 100% when charging disabled */ 41/* voltages (millivolt) of 0%, 10%, ... 100% when charging disabled */
41const unsigned short percent_to_volt_discharge[BATTERY_TYPES_COUNT][11] = 42const unsigned short percent_to_volt_discharge[BATTERY_TYPES_COUNT][11] =
42{ 43{
43 { 100, 300, 400, 500, 600, 700, 800, 900, 1000, 1200, 1320 }, 44 { 0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100 },
44}; 45};
45 46
46/* voltages (millivolt) of 0%, 10%, ... 100% when charging enabled */ 47/* voltages (millivolt) of 0%, 10%, ... 100% when charging enabled */
47const unsigned short percent_to_volt_charge[11] = 48const unsigned short percent_to_volt_charge[11] =
48{ 49{
49 100, 300, 400, 500, 600, 700, 800, 900, 1000, 1200, 1320, 50 0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100,
50}; 51};
51 52
52/* Returns battery voltage from ADC [millivolts] */ 53/* Returns battery voltage from ADC [millivolts] */
53unsigned int battery_adc_voltage(void) 54unsigned int battery_adc_voltage(void)
54{ 55{
55 return current_voltage; 56 return current_battery_level;
56} 57}
58
59void set_battery_level(unsigned int level)
60{
61 current_battery_level = level;
62}
63