blob: 1cb9f0dd95824b4cbd3b696e471f26457c3d990d [file] [log] [blame]
Paul Sokolovsky40f5ecd2016-04-12 00:37:04 +03001import uos
2import network
3from flashbdev import bdev
4
5def wifi():
6 import ubinascii
7 ap_if = network.WLAN(network.AP_IF)
Paul Sokolovsky5e94f0b2016-05-03 02:16:42 +03008 essid = b"MicroPython-%s" % ubinascii.hexlify(ap_if.config("mac")[-3:])
Paul Sokolovsky260b8392016-04-12 00:46:04 +03009 ap_if.config(essid=essid, authmode=network.AUTH_WPA_WPA2_PSK, password=b"micropythoN")
Paul Sokolovsky40f5ecd2016-04-12 00:37:04 +030010
11def check_bootsec():
12 buf = bytearray(bdev.SEC_SIZE)
13 bdev.readblocks(0, buf)
14 empty = True
15 for b in buf:
16 if b != 0xff:
17 empty = False
18 break
19 if empty:
20 return True
21 fs_corrupted()
22
23def fs_corrupted():
24 import time
25 while 1:
26 print("""\
27FAT filesystem appears to be corrupted. If you had important data there, you
28may want to make a flash snapshot to try to recover it. Otherwise, perform
29factory reprogramming of MicroPython firmware (completely erase flash, followed
30by firmware programming).
31""")
32 time.sleep(3)
Paul Sokolovskyd86d65f2016-04-29 20:02:59 +030033
34def setup():
35 check_bootsec()
36 print("Performing initial setup")
37 wifi()
38 uos.VfsFat.mkfs(bdev)
39 vfs = uos.VfsFat(bdev, "")
Paul Sokolovsky6ddd9f32016-04-29 20:11:48 +030040 with open("/boot.py", "w") as f:
41 f.write("""\
42# This file is executed on every boot (including wake-boot from deepsleep)
Paul Sokolovsky6de37862016-08-06 15:27:38 +030043#import esp
44#esp.osdebug(None)
Paul Sokolovsky686367d2016-07-02 19:20:13 +030045import gc
Paul Sokolovsky8db61e52016-05-07 20:04:45 +030046#import webrepl
47#webrepl.start()
Paul Sokolovsky686367d2016-07-02 19:20:13 +030048gc.collect()
Paul Sokolovsky6ddd9f32016-04-29 20:11:48 +030049""")
Paul Sokolovskyd86d65f2016-04-29 20:02:59 +030050 return vfs