コード例 #1
0
def available(update=False, show=False):
    if update:
        if not wifi.status():
            return badge.nvs_get_u8('badge', 'OTA.ready', 0)

        info = download_info(show)
        if info:
            if info["build"] > version.build:
                badge.nvs_set_u8('badge', 'OTA.ready', 1)
                return True

        badge.nvs_set_u8('badge', 'OTA.ready', 0)
    return badge.nvs_get_u8('badge', 'OTA.ready', 0)
コード例 #2
0
def available(update=False, show=False):
    if update:
        if not wifi.status():
            return badge.nvs_get_u8('badge', 'OTA.ready', 0)

        info = download_info(show)
        if info:
            if info["build"] > consts.INFO_FIRMWARE_BUILD:
                badge.nvs_set_u8('badge', 'OTA.ready', 1)
                return True

        badge.nvs_set_u8('badge', 'OTA.ready', 0)
    return badge.nvs_get_u8('badge', 'OTA.ready', 0)
コード例 #3
0
def pm_task():
    ''' The power management task [internal function] '''
    global requestedStandbyTime
    global timeout
    global disabled

    if disabled:
        return timeout

    idleTime = virtualtimers.idle_time()

    if idleTime > 30000 and not badge.safe_mode() and not (
            usb_attached()
            and badge.nvs_get_u8('badge', 'usb_stay_awake', 0) != 0):
        global onSleepCallback
        if not onSleepCallback == None:
            print("[Power management] Running onSleepCallback...")
            try:
                onSleepCallback(idleTime)
            except BaseException as e:
                print("[ERROR] An error occured in the on sleep callback.")
                sys.print_exception(e)
        deepsleep.start_sleeping(idleTime)

    return timeout
コード例 #4
0
def pm_task():
    ''' The power management task [internal function] '''
    global requestedStandbyTime

    idleTime = virtualtimers.idle_time()
    #print("[Power management] Next task wants to run in "+str(idleTime)+" ms.")

    if idleTime > 30000 and not badge.safe_mode() and not (
            usb_attached()
            and badge.nvs_get_u8('badge', 'usb_stay_awake', 0) != 0):
        global onSleepCallback
        if not onSleepCallback == None:
            print("[Power management] Running onSleepCallback...")
            try:
                onSleepCallback(idleTime)
            except BaseException as e:
                print("[ERROR] An error occured in the on sleep callback.")
                sys.print_exception(e)

        if idleTime >= 86400000:  # One day
            print("[Power management] Sleeping forever...")
            deepsleep.start_sleeping()
        else:
            print("[Power management] Sleeping for " + str(idleTime) +
                  " ms...")
            deepsleep.start_sleeping(idleTime)

    global userResponseTime
    return userResponseTime
コード例 #5
0
ファイル: __init__.py プロジェクト: mhueni/LarsonPride
def settings_get(key, default=0):
    try:
        value = badge.nvs_get_u8(LARSON_NAMESPACE, key, default)
        print('get', key, value, 'default', default)
        return value
    except:
        return default
コード例 #6
0
def enable(showStatus=True):
    global failed, state, nw
    if not state:
        if not nw.isconnected():
            nw.active(True)
            ssid = badge.nvs_get_str('system', 'wifi.ssid', 'hackerhotel-insecure')
            password = badge.nvs_get_str('system', 'wifi.password')
            if showStatus:
                easydraw.msg("Connecting to '"+ssid+"'...")
            nw.connect(ssid, password) if password else nw.connect(ssid)
            timeout = badge.nvs_get_u8('system', 'wifi.timeout', 5)
            while not nw.isconnected():
                time.sleep(1)
                timeout = timeout - 1
                if (timeout<1):
                    if showStatus:
                        easydraw.msg("Error: could not connect!")
                    disable()
                    failed = True
                    return False
            state = True
            failed = False
            if showStatus:
                easydraw.msg("Connected!")
    return True
コード例 #7
0
ファイル: service.py プロジェクト: daangoumans/sha2017badges
def loop():
    global interval, seeded, message, swearing
    enabled = badge.nvs_get_u8("sweary","enable", 0)
    if enabled:
	if not seeded:
	    seed = sum(c << (i*8) for i, c in enumerate(os.urandom(4)))
	    random.seed(seed)
	    seeded = True
	# Do this here so that we don't choose a new message as soon as we redraw for sleep
	message = random.choice(swearing);
        return interval

    return 9999999999
コード例 #8
0
ファイル: service.py プロジェクト: leftshift/angelshifts
def loop():
    print("> angelshifts loop")
    last_update = int(badge.nvs_get_str("engel", "update", "0"))
    print("last update: ", last_update)
    if api_key:
        # Perform update if update_interval has passed
        if last_update + update_interval < easyrtc.time.time():
            print("angelshifts: updating...")
            wifi.init()
            tries = 0
            while not wifi.sta_if.isconnected():
                time.sleep(0.1)
                tries += 1
                if tries >= wifi_tries:
                    return wakeup_interval
            next_shift = get_next_shift(api_key)
            if next_shift:
                badge.nvs_set_str("engel", "shift_name", next_shift["name"])
                badge.nvs_set_str("engel", "shift_loc", next_shift["Name"])
                badge.nvs_set_str("engel", "shift_start", next_shift["start"])
                badge.nvs_set_str("engel", "shift_end", next_shift["end"])
                badge.nvs_set_u8("engel", "notified", 0)
            else:
                badge.nvs_set_str("engel", "shift_name", "")
            badge.nvs_set_str("engel", "update", str(easyrtc.time.time()))
        else:
            print("angelshifts: no update needed")

        # Notify about upcoming shift if it starts in less than notify_time
        if badge.nvs_get_str("engel", "shift_name", "") and not bool(
                badge.nvs_get_u8("engel", "notified")):
            start = int(badge.nvs_get_str("engel", "shift_start", ""))
            now = easyrtc.time.time()
            if start > now and start < now + notify_time:
                global notified
                badge.vibrator_init()
                badge.vibrator_activate(200)
                ugfx.string(
                    0, 0,
                    "NEXT SHIFT IN {} MINUTES!".format(notify_time // 60),
                    "PermanentMarker22", ugfx.BLACK)
                ugfx.flush()

        return wakeup_interval
    else:
        print("no api key set up")
        return 0
コード例 #9
0
ファイル: service.py プロジェクト: daangoumans/sha2017badges
def draw(y, sleep=2):
    global message
    enabled = badge.nvs_get_u8("sweary","enable", 0)
    if enabled and seeded and sleep:
        nick = badge.nvs_get_str("owner", "name", 'Offensive Owner')

	ugfx.clear(ugfx.BLACK)
	ugfx.flush()
	ugfx.clear(ugfx.WHITE)
	ugfx.flush()

	ugfx.string_box(0,10,296,26, nick + " says:", "Roboto_BlackItalic24", ugfx.BLACK, ugfx.justifyLeft)
	ugfx.string_box(0,45,296,38, message, "PermanentMarker36", ugfx.BLACK, ugfx.justifyCenter)

	return [interval, 0]

    return [9999999999, 0]
コード例 #10
0
ファイル: setup.py プロジェクト: markbirss/micropython-esp32
def asked_nickname(value):
    if value:
        badge.nvs_set_str("owner", "name", value)

        # Do the firstboot magic
        newState = 1 if badge.nvs_get_u8('badge', 'setup.state', 0) == 0 else 3
        badge.nvs_set_u8('badge', 'setup.state', newState)

        # Show the user that we are done
        easydraw.msg("Hi " + value + "!",
                     'Your nick has been stored to flash!')
        time.sleep(0.5)
    else:
        badge.nvs_set_u8('badge', 'setup.state', 2)  # Skip the sponsors
        badge.nvs_set_u8('sponsors', 'shown', 1)

    appglue.home()
コード例 #11
0
def show(force=False):
    if (not badge.nvs_get_u8('sponsors', 'shown', 0)) or force:
        needToInstall = True
        version = 0
        try:
            with open("/lib/sponsors/version", "r") as f:
                version = int(f.read(99))
            print("[SPONSORS] Current version: "+str(version))
        except:
            print("[SPONSORS] Not installed!")
        if version>=14:
            needToInstall = False
        if needToInstall:
            install()
        try:
            with open("/lib/sponsors/version", "r") as f:
                version = int(f.read(99))
            # Now we know for sure that a version of the sponsors app has been installed
            badge.nvs_set_u8('sponsors', 'shown', 1)
            appglue.start_app("sponsors")
        except:
            pass
コード例 #12
0
ファイル: easywifi.py プロジェクト: moonbadge/ESP32-Firmware
def enable(showStatus=True):
    global failed
    global state
    if not state:
        nw = network.WLAN(network.STA_IF)
        if not nw.isconnected():
            nw.active(True)
            ssid = badge.nvs_get_str('badge', 'wifi.ssid', '')
            password = badge.nvs_get_str('badge', 'wifi.password', '')
            if showStatus:
                easydraw.msg("Connecting to '" + ssid + "'...")
            result = "?"
            if password:
                nw.connect(ssid, password)
            else:
                nw.connect(ssid)
            timeout = badge.nvs_get_u8('badge', 'wifi.timeout', 30)
            show = round(timeout / 5)
            while not nw.isconnected():
                newShow = round(timeout / 5)
                if show != newShow:
                    easydraw.msg("(" + str(round(timeout / 2)) + " seconds)")
                    show = newShow
                time.sleep(0.5)
                timeout = timeout - 1
                if (timeout < 1):
                    if showStatus:
                        easydraw.msg("Error: could not connect!")
                    disable()
                    failed = True
                    return False
            state = True
            failed = False
            if showStatus:
                easydraw.msg("Connected!")
    return True
コード例 #13
0
def start():
    if badge.safe_mode():
        splash = 'splash'
    else:
        splash = badge.nvs_get_str('boot', 'splash', 'splash')
        if splash.startswith('bpp '):
            splash = splash[4:len(splash)]
            badge.mount_bpp()
        elif splash.startswith('sdcard '):
            splash = splash[7:len(splash)]
            badge.mount_sdcard()
        __import__(splash)


setupState = badge.nvs_get_u8('badge', 'setup.state', 0)
if setupState == 0:  #First boot
    print("First boot (start setup)...")
    __import__("setup")
elif setupState == 1:  # Second boot: Show sponsors
    print("Second boot (show sponsors)...")
    badge.nvs_set_u8('badge', 'setup.state', 2)
    spoc.show(True)
elif setupState == 2:  # Third boot: force OTA check
    print("Third boot (force ota check)...")
    badge.nvs_set_u8('badge', 'setup.state', 3)
    if not easywifi.failure():
        otac.available(True)
    start()
else:  # Normal boot
    print("Normal boot... (" + str(machine.reset_cause()) + ")")
コード例 #14
0
def enable():
    if badge.nvs_get_u8('badge','evrt',0)==0:
        virtualtimers.new(1, ber_task)
コード例 #15
0
ファイル: splash.py プロジェクト: moonbadge/ESP32-Firmware
import ugfx, time, badge, machine, deepsleep, gc, appglue, virtualtimers, easydraw, wifi, rtc, term, term_menu, orientation, tasks.powermanagement as pm, uos, json, sys, tasks.otacheck as otacheck

# Default values
default_logo = '/media/hackerhotel.png'

# Read splashscreen configuration from NVS
cfg_disabled = badge.nvs_get_u8('splash', 'disabled', False)
cfg_term_menu = badge.nvs_get_u8('splash', 'term_menu', True)
cfg_wifi = badge.nvs_get_u8('splash', 'wifi', True)
cfg_shell = badge.nvs_get_u8('splash', 'shell', False)
cfg_services = badge.nvs_get_u8('splash', 'services', True)
cfg_logo = badge.nvs_get_str('splash', 'logo', default_logo)
cfg_nickname = badge.nvs_get_u8('splash', 'nickname', True)
cfg_led_animation = badge.nvs_get_str('splash', 'ledApp', None)

# Small hack to install logo if needed
try:
    media = uos.listdir("/media")
    if not "hackerhotel.png" in media:
        raise (BaseException("Logo not available"))
except:
    import install_hh_logo

# If the user holds down the START button during boot we skip this app and go straight into the launcher
if badge.safe_mode() or cfg_disabled:
    appglue.start_app("launcher", False)

# Drop directly into uPython shell if requested
if cfg_shell:
    appglue.start_app("shell", False)
コード例 #16
0
# Home menu application

import ugfx, time, badge, machine, gc, system, virtualtimers, easydraw, wifi, rtc, term, term_menu, orientation, tasks.powermanagement as pm, uos, json, sys, tasks.otacheck as otacheck, display

# Default values
default_logo = '/media/hackerhotel.png'

# Read splashscreen configuration from NVS
cfg_term_menu = badge.nvs_get_u8('splash', 'term_menu', True)
cfg_wifi = badge.nvs_get_u8('splash', 'wifi', True)
cfg_services = badge.nvs_get_u8('splash', 'services', True)
cfg_logo = badge.nvs_get_str('splash', 'logo', default_logo)
cfg_nickname = badge.nvs_get_u8('splash', 'nickname', True)
cfg_led_animation = badge.nvs_get_str('splash', 'ledApp', None)

# Small hack to install logo if needed
try:
    media = uos.listdir("/media")
    if not "hackerhotel.png" in media:
        raise (BaseException("Logo not available"))
except:
    import dashboard.resources.png_hackerhotel

try:
    media = uos.listdir("/media")
    icons = [
        "alert", "bell", "bug", "busy", "charge", "crown", "earth", "flag",
        "music", "ok", "wifi", "usb"
    ]
    for icon in icons:
        if not icon + ".png" in media:
コード例 #17
0
import badge, easydraw, woezel, wifi

lvl = badge.nvs_get_u8('ota', 'fixlvl', 0)
if lvl < 3:
    if not badge.nvs_get_u16("modaudio", "mixer_ctl_0"):
        badge.nvs_set_u16("modaudio", "mixer_ctl_0",
                          (0 << 15) + (0 << 8) + (1 << 7) + (32 << 0))
        badge.nvs_set_u16("modaudio", "mixer_ctl_1",
                          (0 << 15) + (32 << 8) + (0 << 7) + (32 << 0))
    badge.nvs_set_u8('ota', 'fixlvl', 3)

if lvl < 5:
    wifi.connect()
    if wifi.wait(30, True):
        for bloatware in [
                'event_schedule', 'de_rode_hack', 'hacker_gallery',
                'angry_nerds_podcast'
        ]:
            # This is ugly, but if 1 app is already up to date we just try to fill the device with the rest
            try:
                easydraw.messageCentered("Updating...\n" + bloatware, True,
                                         '/media/flag.png')
                woezel.install(bloatware)
            except:
                pass
        badge.nvs_set_u8('ota', 'fixlvl', 5)
コード例 #18
0
def splash_about_countdown_reset():
    global splashAboutCountdown
    splashAboutCountdown = badge.nvs_get_u8('splash', 'about.amount', 10)
コード例 #19
0
ファイル: __init__.py プロジェクト: daangoumans/sha2017badges
import badge, easydraw, time, appglue

easydraw.msg("", "Sweary", True)

enabled = badge.nvs_get_u8("sweary", "enable", 0)
if enabled:
    enabled = 0
    easydraw.msg("Sweary disabled!")
else:
    enabled = 1
    easydraw.msg("Sweary enabled!")
    easydraw.msg("Go back to the splash and wait...")
enabled = badge.nvs_set_u8("sweary", "enable", enabled)

time.sleep(5)
appglue.home()