Skip to content

Commit b388b81

Browse files
committed
feat: alvik _battery_is_charging info
1 parent 48db6a3 commit b388b81

File tree

1 file changed

+13
-7
lines changed

1 file changed

+13
-7
lines changed

arduino_alvik/arduino_alvik.py

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ def __init__(self):
4242
self.right_led = self.DL2 = _ArduinoAlvikRgbLed(self._packeter, 'right', self._led_state,
4343
rgb_mask=[0b00100000, 0b01000000, 0b10000000])
4444
self._battery_perc = None
45+
self._battery_is_charging = None
4546
self._touch_byte = None
4647
self._move_byte = None
4748
self._behaviour = None
@@ -92,18 +93,20 @@ def is_on() -> bool:
9293
return CHECK_STM32.value() == 1
9394

9495
@staticmethod
95-
def _progress_bar(percentage: float) -> None:
96+
def _print_battery_status(percentage: float, is_charging) -> None:
9697
"""
97-
Prints a progressbar
98-
:param percentage:
98+
Pretty prints the battery status
99+
:param percentage: SOC of the battery
100+
:param is_charging: True if the battery is charging
99101
:return:
100102
"""
101103
sys.stdout.write(bytes('\r'.encode('utf-8')))
102104
if percentage > 97:
103105
marks_str = ' \U0001F50B'
104106
else:
105107
marks_str = ' \U0001FAAB'
106-
word = marks_str + f" {percentage}% \t"
108+
charging_str = f' \U0001F50C' if is_charging else ' \U000026A0WARNING: battery is discharging!'
109+
word = marks_str + f" {percentage}%" + charging_str + " \t"
107110
sys.stdout.write(bytes((word.encode('utf-8'))))
108111

109112
def _lenghty_op(self, iterations=10000000) -> int:
@@ -140,8 +143,9 @@ def _idle(self, delay_=1, check_on_thread=False, blocking=False) -> None:
140143

141144
soc_raw = struct.unpack('h', self.i2c.readfrom(0x36, 2))[0]
142145
soc_perc = soc_raw * 0.00390625
143-
self._battery_perc = soc_perc
144-
self._progress_bar(round(soc_perc))
146+
self._battery_is_charging = soc_perc > 0
147+
self._battery_perc = abs(soc_perc)
148+
self._print_battery_status(round(soc_perc), self._battery_is_charging)
145149
if blocking:
146150
self._lenghty_op(10000)
147151
else:
@@ -671,7 +675,9 @@ def _parse_message(self) -> int:
671675
_, self._ax, self._ay, self._az, self._gx, self._gy, self._gz = self._packeter.unpacketC6F()
672676
elif code == ord('p'):
673677
# battery percentage
674-
_, self._battery_perc = self._packeter.unpacketC1F()
678+
_, battery_perc = self._packeter.unpacketC1F()
679+
self._battery_is_charging = battery_perc > 0
680+
self._battery_perc = abs(battery_perc)
675681
elif code == ord('d'):
676682
# distance sensor
677683
_, self._left_tof, self._center_tof, self._right_tof = self._packeter.unpacketC3I()

0 commit comments

Comments
 (0)