@@ -56,6 +56,8 @@ static int sustainer_upper = 100;
5656
5757static uint8_t charging_maximum_level = EC_CHARGE_LIMIT_RESTORE ;
5858static uint8_t old_charger_limit ;
59+ extern int sustain3_slot ;
60+ extern struct sustain_soc3 sustain_soc3 [4 ];
5961
6062static void extender_init (void )
6163{
@@ -80,11 +82,30 @@ void charger_sustainer_reset(void)
8082{
8183 old_charger_limit = 0 ;
8284 //battery_sustainer_set(-1, -1);
83- int rv = set_chg_ctrl_mode (CHARGE_CONTROL_NORMAL );
84- CPRINTS ("%s: %s control mode to %s, rv=%d" , __func__ ,
85- rv == EC_SUCCESS ? "Switched" : "Failed to switch" ,
86- mode_text [CHARGE_CONTROL_NORMAL ],
87- rv );
85+ sustain3_slot = 0 ;
86+ //int rv = set_chg_ctrl_mode(CHARGE_CONTROL_NORMAL);
87+ //CPRINTS("%s: %s control mode to %s, rv=%d", __func__,
88+ // rv == EC_SUCCESS ? "Switched" : "Failed to switch",
89+ // mode_text[CHARGE_CONTROL_NORMAL],
90+ // rv);
91+ }
92+
93+ int battery_extender_sustain3_set (int slot , int lower , int upper , int discharge );
94+
95+ int battery_extender_sustain3_set (int slot , int lower , int upper , int discharge ) {
96+ if ((slot < 2 ) || (slot >=4 )) return 0 ;
97+ sustain_soc3 [slot ].lower = lower ;
98+ sustain_soc3 [slot ].upper = upper ;
99+ sustain_soc3 [slot ].discharge = discharge ;
100+ return 1 ;
101+ }
102+
103+ int battery_extender_sustain3_set_slot (int slot );
104+
105+ int battery_extender_sustain3_set_slot (int slot ) {
106+ if ((slot < 2 ) || (slot >=4 )) return 0 ;
107+ sustain3_slot = slot ;
108+ return 1 ;
88109}
89110
90111static void battery_percentage_control (void )
@@ -159,12 +180,16 @@ void battery_extender(void)
159180 timestamp_expired (batt_extender_deadline_stage2 , & now )) {
160181 batt_extender_deadline_stage2 .val = 0 ;
161182 stage = BATT_EXTENDER_STAGE_2 ;
162- battery_sustainer_set (MIN (85 , sustainer_lower ), MIN (87 , sustainer_upper ));
183+ battery_extender_sustain3_set (3 , MIN (83 , sustainer_lower ), MIN (85 , sustainer_upper ), MIN (87 , sustainer_upper ));
184+ battery_extender_sustain3_set_slot (3 );
185+ //battery_sustainer_set(MIN(85, sustainer_lower), MIN(87, sustainer_upper));
163186 } else if (batt_extender_deadline .val &&
164187 timestamp_expired (batt_extender_deadline , & now )) {
165188 batt_extender_deadline .val = 0 ;
166189 stage = BATT_EXTENDER_STAGE_1 ;
167- battery_sustainer_set (MIN (90 , sustainer_lower ), MIN (95 , sustainer_upper ));
190+ battery_extender_sustain3_set (2 , MIN (90 , sustainer_lower ), MIN (93 , sustainer_upper ), MIN (95 , sustainer_upper ));
191+ battery_extender_sustain3_set_slot (2 );
192+ //battery_sustainer_set(MIN(90, sustainer_lower), MIN(95, sustainer_upper));
168193 }
169194}
170195DECLARE_HOOK (HOOK_SECOND , battery_extender , HOOK_PRIO_DEFAULT );
0 commit comments