|
|
@@ -3,7 +3,7 @@
|
|
|
#include "shark_xl.h"
|
|
|
#include "app.h"
|
|
|
|
|
|
-shark_bool shark_charger_detected;
|
|
|
+shark_charger_state_t shark_charger_state;
|
|
|
shark_bool shark_charger_enabled;
|
|
|
shark_u16 shark_charge_times;
|
|
|
|
|
|
@@ -49,6 +49,8 @@ void shark_charger_disable(void)
|
|
|
{
|
|
|
if (shark_charge_times > SHARK_CHG_TIME_DETECT) {
|
|
|
shark_charger_set_enable(shark_false);
|
|
|
+ shark_charger_insert = 0;
|
|
|
+ shark_charger_state = SHARK_CHG_DETECT;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -57,29 +59,31 @@ void shark_charge_tick(void)
|
|
|
if (gpio_input_bit_get(GPIO_PORT_CHG_DET, GPIO_PIN_CHG_DET) == RESET) {
|
|
|
shark_charger_remove = 0;
|
|
|
|
|
|
- if (shark_charger_insert < 50) {
|
|
|
- shark_charger_insert++;
|
|
|
- } else if (shark_xl_check_with_qd() == shark_false) {
|
|
|
- shark_charger_detected = shark_true;
|
|
|
+ if (shark_charger_insert > SHARK_CHG_INSERT_MIN) {
|
|
|
+ if (shark_xl_check_with_qd() == shark_false) {
|
|
|
+ shark_charger_state = SHARK_CHG_INSERT;
|
|
|
|
|
|
- if (shark_charger_enabled && shark_charge_times < SHARK_CHG_TIME_MAX) {
|
|
|
- shark_charge_times++;
|
|
|
+ if (shark_charger_enabled && shark_charge_times < SHARK_CHG_TIME_MAX) {
|
|
|
+ shark_charge_times++;
|
|
|
+ }
|
|
|
}
|
|
|
+ } else {
|
|
|
+ shark_charger_insert++;
|
|
|
}
|
|
|
} else {
|
|
|
shark_charger_insert = 0;
|
|
|
|
|
|
- if (shark_charger_remove < 2000) {
|
|
|
- shark_charger_remove++;
|
|
|
+ if (shark_charger_remove > SHARK_CHG_REMOVE_MIN) {
|
|
|
+ shark_charger_state = SHARK_CHG_REMOVE;
|
|
|
} else {
|
|
|
- shark_charger_detected = shark_false;
|
|
|
+ shark_charger_remove++;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
void shark_charge_poll(void)
|
|
|
{
|
|
|
- if (shark_charger_detected) {
|
|
|
+ if (shark_charger_state == SHARK_CHG_INSERT) {
|
|
|
if (shark_charger_enabled) {
|
|
|
switch (cb_operate_state) {
|
|
|
case CB_BAT1:
|