Rockbox open source high quality audio player as a Music Player Daemon
mpris rockbox mpd libadwaita audio rust zig deno
2
fork

Configure Feed

Select the types of activity you want to include in your feed.

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

+20 -5
+8
firmware/target/arm/tms320dm320/sansa-connect/avr-sansaconnect.c
··· 297 297 avr_hid_sync(); 298 298 } 299 299 300 + /* defined in powermgmt-sansaconnect.c */ 301 + void set_battery_level(unsigned int level); 300 302 301 303 static void avr_hid_get_state(void) 302 304 { ··· 308 310 static unsigned char cmd_empty[1] = {0xCC}; 309 311 310 312 spi_txrx(cmd, buf, sizeof(cmd)); 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]); 311 319 312 320 spi_txrx(cmd_empty, NULL, 1); /* request interrupt on button press */ 313 321
+12 -5
firmware/target/arm/tms320dm320/sansa-connect/powermgmt-sansaconnect.c
··· 24 24 #include "powermgmt.h" 25 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 + 29 + static unsigned int current_battery_level = 100; 28 30 29 - static const unsigned short current_voltage = 3910; 30 31 const unsigned short battery_level_dangerous[BATTERY_TYPES_COUNT] = 31 32 { 32 33 0 ··· 40 41 /* voltages (millivolt) of 0%, 10%, ... 100% when charging disabled */ 41 42 const 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 47 /* voltages (millivolt) of 0%, 10%, ... 100% when charging enabled */ 47 48 const 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 53 /* Returns battery voltage from ADC [millivolts] */ 53 54 unsigned int battery_adc_voltage(void) 54 55 { 55 - return current_voltage; 56 + return current_battery_level; 56 57 } 58 + 59 + void set_battery_level(unsigned int level) 60 + { 61 + current_battery_level = level; 62 + } 63 +