def battery(vUsb, vBatt, charging): vMin = badge.nvs_get_u16('batt', 'vmin', 3500) # mV vMax = badge.nvs_get_u16('batt', 'vmax', 4100) # mV if charging and vUsb > 4000: try: badge.eink_png(0, 0, '/lib/resources/chrg.png') except: ugfx.string(0, 0, "CHRG", 'Roboto_Regular12', ugfx.BLACK) elif vUsb > 4000: try: badge.eink_png(0, 0, '/lib/resources/usb.png') except: ugfx.string(0, 0, "USB", 'Roboto_Regular12', ugfx.BLACK) else: width = round((vBatt - vMin) / (vMax - vMin) * 44) if width < 0: width = 0 elif width > 38: width = 38 ugfx.box(2, 2, 46, 18, ugfx.BLACK) ugfx.box(48, 7, 2, 8, ugfx.BLACK) ugfx.area(3, 3, width, 16, ugfx.BLACK)
def getDefault(): return ugfx.orientation( badge.nvs_get_u16('badge', 'orientation', version.default_orientation))
def default(): ugfx.orientation( badge.nvs_get_u16('badge', 'orientation', version.default_orientation))
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)
# File: powermanagement.py # Version: 2 # Description: Power management task, puts the badge to sleep when idle # License: MIT # Authors: Renze Nicolai <*****@*****.**> import virtualtimers, deepsleep, badge, sys requestedStandbyTime = 0 onSleepCallback = None userResponseTime = badge.nvs_get_u16('splash', 'urt', 5000) def usb_attached(): return badge.usb_volt_sense() > 4500 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...")
def onSleep(idleTime): draw(False, True) services.force_draw(True) draw(True, True) ### PROGRAM # Calibrate battery voltage drop if badge.battery_charge_status() == False and pm.usb_attached( ) and badge.battery_volt_sense() > 2500: badge.nvs_set_u16('splash', 'bat.volt.drop', 5200 - badge.battery_volt_sense()) # mV print('Set vDrop to: ' + str(4200 - badge.battery_volt_sense())) vDrop = badge.nvs_get_u16('splash', 'bat.volt.drop', 1000) - 1000 # mV splash_input_init() # post ota script import post_ota setupState = badge.nvs_get_u8('badge', 'setup.state', 0) if setupState == 0: #First boot print("[SPLASH] First boot (start setup)...") appglue.start_app("setup") #elif setupState == 1: # Second boot: Show sponsors # print("[SPLASH] Second boot (show sponsors)...") # badge.nvs_set_u8('badge', 'setup.state', 2) # spoc.show(True) #elif setupState == 2: # Third boot: force OTA check
import virtualtimers, deepsleep, badge, sys requestedStandbyTime = 0 onSleepCallback = None timeout = badge.nvs_get_u16('badge', 'sleep', 10000) #Default to 10 seconds disabled = False enabled = False def disable(): global disabled, enabled disabled = True enabled = False kill() def enable(): global disabled, enabled, timeout if timeout < 1: #Disabled by setting return disabled = False enabled = True feed() def resume(): global disabled, enabled if disabled and enabled: enable()