Skip to content

Commit

Permalink
System features menu now invokes a firmware upgrade when requested.
Browse files Browse the repository at this point in the history
  • Loading branch information
geekscape committed Jan 22, 2021
1 parent 8cdb5f2 commit 97c9fd7
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 23 deletions.
40 changes: 22 additions & 18 deletions lib/aiko/system_ui.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,18 +15,19 @@

system_ui_active = False

menu_item_highlighted = 0
menu_item_selected = 0

def system_features_handler(pin_numbers):
global system_ui_active
system_ui_active = not system_ui_active

if system_ui_active:
aiko.button.add_button_handler(button_handler, [14, 27])
aiko.button.add_slider_handler(slider_handler, 12, 15)
oled.set_system_title(save=True)
oled.oleds_clear(write=False)
menu_show()
menu_item_highlight(0)
menu_item_select(0)
oled.oleds_enable(False)
else:
aiko.button.remove_handler(slider_handler)
Expand All @@ -40,25 +41,30 @@ def initialise(settings=configuration.system_ui.settings):
aiko.button.initialise()
aiko.button.add_multibutton_handler(system_features_handler, system_ui_pins)

def button_handler(number, state):
global menu_item_selected
if state and number == 14:
features[menu_item_selected][HANDLER]()

def slider_handler(number, state, value):
if value:
menu_item = menu_items - int(map_value(value, 0, 100, 0, menu_items-1)) - 1
menu_item_highlight(menu_item)
menu_item_select(menu_item)

def menu_item_highlight(menu_item):
global menu_item_highlighted
def menu_item_select(menu_item):
global menu_item_selected
oled.oleds_system_use(True)
menu_item_write(menu_item_highlighted)
menu_item_highlighted = menu_item
menu_item_write(menu_item_highlighted, highlighted=True)
menu_item_write(menu_item_selected)
menu_item_selected = menu_item
menu_item_write(menu_item_selected, selected=True)
oled.oleds_show()
oled.oleds_system_use(False)

def menu_item_write(menu_item, highlighted=False):
feature_name = features[menu_item][FEATURE_NAME]
color = oled.FG if highlighted else oled.BG
def menu_item_write(menu_item, selected=False):
feature_name = features[menu_item][NAME]
color = oled.FG if selected else oled.BG
oled.oleds[0].fill_rect(0, menu_item * 10 + 10, 128, 10, color)
color = oled.BG if highlighted else oled.FG
color = oled.BG if selected else oled.FG
oled.oleds_text(feature_name, 0, menu_item * 10 + 11, color)

def menu_show():
Expand All @@ -70,16 +76,14 @@ def menu_show():
oled.oleds[1].text("Version: " + version, 0, 21, oled.FG)

def console_log_feature():
pass

def firmware_upgrade_feature():
pass
print("console_log_feature")

features = [
("Console log", console_log_feature),
("Firmware upgrade", firmware_upgrade_feature)
("Firmware upgrade", aiko.upgrade.upgrade_handler)
]

FEATURE_NAME = 0
NAME = 0
HANDLER = 1

menu_items = len(features)
8 changes: 3 additions & 5 deletions lib/aiko/upgrade.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,10 +36,9 @@ def get_version():
def upgrade_handler():
global in_progress, version

if common.touch_pins_check([12, 14]):
if version and not in_progress:
in_progress = True
Thread(target=upgrade_thread).start()
if version and not in_progress:
in_progress = True
Thread(target=upgrade_thread).start()

def upgrade_thread():
global in_progress
Expand Down Expand Up @@ -120,4 +119,3 @@ def initialise(settings=configuration.mqtt.settings):
import aiko.mqtt
upgrade_topic = settings["upgrade_topic"]
aiko.mqtt.add_message_handler(on_upgrade_message, upgrade_topic)
# aiko.event.add_timer_handler(upgrade_handler, 5000)

0 comments on commit 97c9fd7

Please sign in to comment.