Paul Sokolovsky | 40f5ecd | 2016-04-12 00:37:04 +0300 | [diff] [blame] | 1 | import uos |
| 2 | import network |
| 3 | from flashbdev import bdev |
| 4 | |
| 5 | def wifi(): |
| 6 | import ubinascii |
| 7 | ap_if = network.WLAN(network.AP_IF) |
Paul Sokolovsky | 5e94f0b | 2016-05-03 02:16:42 +0300 | [diff] [blame] | 8 | essid = b"MicroPython-%s" % ubinascii.hexlify(ap_if.config("mac")[-3:]) |
Paul Sokolovsky | 260b839 | 2016-04-12 00:46:04 +0300 | [diff] [blame] | 9 | ap_if.config(essid=essid, authmode=network.AUTH_WPA_WPA2_PSK, password=b"micropythoN") |
Paul Sokolovsky | 40f5ecd | 2016-04-12 00:37:04 +0300 | [diff] [blame] | 10 | |
| 11 | def 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 | |
| 23 | def fs_corrupted(): |
| 24 | import time |
| 25 | while 1: |
| 26 | print("""\ |
| 27 | FAT filesystem appears to be corrupted. If you had important data there, you |
| 28 | may want to make a flash snapshot to try to recover it. Otherwise, perform |
| 29 | factory reprogramming of MicroPython firmware (completely erase flash, followed |
| 30 | by firmware programming). |
| 31 | """) |
| 32 | time.sleep(3) |
Paul Sokolovsky | d86d65f | 2016-04-29 20:02:59 +0300 | [diff] [blame] | 33 | |
| 34 | def setup(): |
| 35 | check_bootsec() |
| 36 | print("Performing initial setup") |
| 37 | wifi() |
| 38 | uos.VfsFat.mkfs(bdev) |
| 39 | vfs = uos.VfsFat(bdev, "") |
Paul Sokolovsky | 6ddd9f3 | 2016-04-29 20:11:48 +0300 | [diff] [blame] | 40 | with open("/boot.py", "w") as f: |
| 41 | f.write("""\ |
| 42 | # This file is executed on every boot (including wake-boot from deepsleep) |
Paul Sokolovsky | 6de3786 | 2016-08-06 15:27:38 +0300 | [diff] [blame] | 43 | #import esp |
| 44 | #esp.osdebug(None) |
Paul Sokolovsky | 686367d | 2016-07-02 19:20:13 +0300 | [diff] [blame] | 45 | import gc |
Paul Sokolovsky | 8db61e5 | 2016-05-07 20:04:45 +0300 | [diff] [blame] | 46 | #import webrepl |
| 47 | #webrepl.start() |
Paul Sokolovsky | 686367d | 2016-07-02 19:20:13 +0300 | [diff] [blame] | 48 | gc.collect() |
Paul Sokolovsky | 6ddd9f3 | 2016-04-29 20:11:48 +0300 | [diff] [blame] | 49 | """) |
Paul Sokolovsky | d86d65f | 2016-04-29 20:02:59 +0300 | [diff] [blame] | 50 | return vfs |