Exemplo n.º 1
0
def menu_item_highlight(menu_item):
    global menu_item_highlighted
    oled.oleds_system_use(True)
    menu_item_write(menu_item_highlighted)
    menu_item_highlighted = menu_item
    menu_item_write(menu_item_highlighted, highlighted=True)
    oled.oleds_show()
    oled.oleds_system_use(False)
Exemplo n.º 2
0
def menu_item_select(menu_item):
    global menu_item_selected
    oled.oleds_system_use(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)
Exemplo n.º 3
0
def system_features_menu():
    oled.oleds_system_use(True)
    aiko.button.add_slider_handler(slider_handler, 12, 15)
    oled.set_system_title(save=True)
    oled.oleds_clear(write=False)
    menu_show()
    menu_item_select(0)
    oled.oleds_system_use(False)
Exemplo n.º 4
0
def console_log_feature():
    oled.oleds_system_use(True)
    oled.oleds_show_log()
    oled.oleds_system_use(False)
Exemplo n.º 5
0
def hugs_feature():
    oled.oleds_system_use(True)
    oled.oleds_show_log(hugs_message)
    oled.oleds_system_use(False)
Exemplo n.º 6
0
def upgrade_thread():
    global in_progress
    global file_count, manifest_checksum, manifest_size, manifest_url, version
    try:
        oled.oleds_system_use(True)
        oled.oleds_log("Firmware upgrade start")
        gc.collect()

        manifest_pathname = "manifest"
        shutil.path_remove(manifest_pathname)
        # TODO: Remove all "*_new" and "*_old"

        aiko.web_client.http_get_file(manifest_url, manifest_pathname)
        # TODO: Verify "manifest_pathname" actual file size versus "manifest_size"
        # TODO: Verify "manifest_pathname" checksum

        top_level_files = []
        url_prefix = manifest_url.rpartition("/")[0]
        with open(manifest_pathname, "r") as manifest_file:
            file_index = 0
            for line in manifest_file.readlines():
                file_index += 1
                file_checksum, file_size, filepath = line.split()
                url_suffix = filepath.partition("/")[-1]
                file_url = "/".join([url_prefix, url_suffix])

                pathname = url_suffix.partition("/")
                if not pathname[0] in top_level_files:
                    top_level_files.append(pathname[0])
                pathname = "".join([pathname[0] + "_new"] + list(pathname[1:]))

                print(file_url + " --> " + pathname)
                oled.oleds_log("Firmware get ... %d of %d" %
                               (file_index, file_count))
                aiko.web_client.http_get_file(file_url, pathname)


# TODO: Verify actual file size versus size stated in the "manifest"
# TODO: Verify actual file checksum

        shutil.path_remove(manifest_pathname)
        shutil.file_copy("configuration/net.py", "configuration_new/net.py")
        shutil.file_copy("configuration/keys.db", "configuration_new/keys.db")

        oled.oleds_log("Firmware install")
        for file in top_level_files:
            try:
                print("Rename %s to %s" % (file + "_new", file))
                shutil.path_remove(file)
                os.rename(file + "_new", file)
            except OSError:
                print("OSError")

        oled.oleds_log("Firmware upgrade success !")
        oled.oleds_log("Please reboot :)")
    except Exception as exception:
        oled.oleds_log("Firmware upgrade failed :(")
        import sys
        sys.print_exception(exception)
    finally:
        oled.oleds_system_use(False)
        in_progress = False
        version = None