Skip to content

Commit 8810aa0

Browse files
committed
Add FP LED v1 support
1 parent 1fc4b94 commit 8810aa0

File tree

4 files changed

+58
-15
lines changed

4 files changed

+58
-15
lines changed

yafi/leds.py

Lines changed: 50 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,11 @@ class LedsPage(Gtk.Box):
2828
__gtype_name__ = 'LedsPage'
2929

3030
first_run = True
31+
fp_led_version = 1
3132

3233
led_pwr = Gtk.Template.Child()
3334
led_pwr_scale = Gtk.Template.Child()
35+
led_pwr_scale_adj = Gtk.Template.Child()
3436

3537
led_kbd = Gtk.Template.Child()
3638
led_kbd_scale = Gtk.Template.Child()
@@ -42,24 +44,60 @@ def __init__(self, **kwargs):
4244

4345
def setup(self, app):
4446
# Power LED
47+
fp_led_level_text = ["High", "Medium", "Low", "Ultra Low"]
4548
try:
4649
def handle_led_pwr(scale):
47-
value = int(abs(scale.get_value() - 2))
48-
ec_commands.framework_laptop.set_fp_led_level(app.cros_ec, value)
49-
self.led_pwr.set_subtitle(["High", "Medium", "Low"][value])
50+
match self.fp_led_version:
51+
case 0:
52+
value = int(abs(scale.get_value() - 2))
53+
ec_commands.framework_laptop.set_fp_led_level(
54+
app.cros_ec, value
55+
)
56+
self.led_pwr.set_subtitle(fp_led_level_text[value])
57+
case 1:
58+
value = int(scale.get_value())
59+
ec_commands.framework_laptop.set_fp_led_percent(
60+
app.cros_ec, value
61+
)
62+
self.led_pwr.set_subtitle(f"{value}%")
63+
64+
if self.fp_led_version == 1:
65+
try:
66+
current_fp_levels = (
67+
ec_commands.framework_laptop.get_fp_led_levels_v1(
68+
app.cros_ec
69+
).value
70+
)
71+
self.led_pwr_scale.set_value(current_fp_levels["percentage"])
72+
if current_fp_levels["level"] < len(fp_led_level_text):
73+
self.led_pwr.set_subtitle(
74+
f"{fp_led_level_text[current_fp_levels['level']]} ({current_fp_levels['percentage']}%)"
75+
)
76+
else:
77+
self.led_pwr.set_subtitle(f"{current_fp_levels['percentage']}%")
5078

51-
try:
79+
except ec_exceptions.ECError as e:
80+
if e.ec_status == ec_exceptions.EcStatus.EC_RES_INVALID_VERSION:
81+
self.fp_led_version = 0
82+
else:
83+
raise e
84+
85+
if self.fp_led_version == 0:
5286
current_fp_level = ec_commands.framework_laptop.get_fp_led_level(
5387
app.cros_ec
5488
).value
55-
self.led_pwr_scale.set_value(abs(current_fp_level - 2))
56-
self.led_pwr.set_subtitle(["High", "Medium", "Low"][current_fp_level])
57-
except ValueError:
58-
# LED isn't a normal value
59-
current_fp_level = ec_commands.framework_laptop.get_fp_led_level_int(
60-
app.cros_ec
61-
)
62-
self.led_pwr.set_subtitle(f"Custom ({current_fp_level}%)")
89+
if current_fp_level < len(fp_led_level_text):
90+
self.led_pwr_scale_adj.set_upper(2)
91+
self.led_pwr_scale.set_value(abs(current_fp_level - 2))
92+
self.led_pwr.set_subtitle(f"{fp_led_level_text[current_fp_level]}")
93+
else:
94+
# Disable if an unsupported level is set
95+
self.led_pwr_scale.set_sensitive(False)
96+
current_fp_percent = (
97+
ec_commands.framework_laptop.get_fp_led_percent(app.cros_ec)
98+
)
99+
self.led_pwr_scale.set_value(current_fp_percent)
100+
self.led_pwr.set_subtitle(f"Custom {current_fp_percent}%")
63101

64102
self.led_pwr_scale.connect("value-changed", handle_led_pwr)
65103
except ec_exceptions.ECError as e:

yafi/ui/leds.cmb

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
<?xml version='1.0' encoding='UTF-8' standalone='no'?>
2+
<!DOCTYPE cambalache-project SYSTEM "cambalache-project.dtd">
3+
<!-- Created with Cambalache 0.96.1 -->
4+
<cambalache-project version="0.96.0" target_tk="gtk-4.0">
5+
<ui template-class="LedsPage" filename="leds.ui" sha256="a52e82a54a64ff7e5ca5a83af2ee096c1be44c379cc286c65fbee8eaf2400324"/>
6+
</cambalache-project>

yafi/ui/leds.ui

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,10 @@
2626
<child>
2727
<object class="GtkScale" id="led_pwr_scale">
2828
<property name="adjustment">
29-
<object class="GtkAdjustment">
29+
<object class="GtkAdjustment" id="led_pwr_scale_adj">
3030
<property name="page-increment">1.0</property>
3131
<property name="step-increment">1.0</property>
32-
<property name="upper">2.0</property>
33-
<property name="value">2.0</property>
32+
<property name="upper">100.0</property>
3433
</object>
3534
</property>
3635
<property name="hexpand">True</property>

yafi/yafi.gresource

-8 Bytes
Binary file not shown.

0 commit comments

Comments
 (0)