summaryrefslogtreecommitdiff
path: root/ports/esp32/modules
diff options
context:
space:
mode:
authorDan Halbert <halbert@halwitz.org>2018-07-11 16:45:30 -0400
committerDan Halbert <halbert@halwitz.org>2018-07-11 16:45:30 -0400
commit7c219600a246d8956d0b23ea3f5d125a820e6b6a (patch)
tree4cf793a66284322d48a8f430815c31cd1c9ffa1d /ports/esp32/modules
parent4962468ffffac9ec4e36b2b1fc3f132516df3127 (diff)
parent25ae98f07cb3c4488cb955403dfe56b8bb8db6f0 (diff)
WIP: after merge; before testing
Diffstat (limited to 'ports/esp32/modules')
-rw-r--r--ports/esp32/modules/_boot.py12
-rw-r--r--ports/esp32/modules/apa106.py8
l---------ports/esp32/modules/dht.py1
l---------ports/esp32/modules/ds18x20.py1
-rw-r--r--ports/esp32/modules/flashbdev.py34
-rw-r--r--ports/esp32/modules/inisetup.py42
-rw-r--r--ports/esp32/modules/neopixel.py33
l---------ports/esp32/modules/ntptime.py1
l---------ports/esp32/modules/onewire.py1
l---------ports/esp32/modules/umqtt/robust.py1
l---------ports/esp32/modules/umqtt/simple.py1
l---------ports/esp32/modules/upip.py1
l---------ports/esp32/modules/upip_utarfile.py1
l---------ports/esp32/modules/upysh.py1
l---------ports/esp32/modules/urequests.py1
l---------ports/esp32/modules/webrepl.py1
l---------ports/esp32/modules/webrepl_setup.py1
l---------ports/esp32/modules/websocket_helper.py1
18 files changed, 142 insertions, 0 deletions
diff --git a/ports/esp32/modules/_boot.py b/ports/esp32/modules/_boot.py
new file mode 100644
index 000000000..bf40ea3a9
--- /dev/null
+++ b/ports/esp32/modules/_boot.py
@@ -0,0 +1,12 @@
+import gc
+import uos
+from flashbdev import bdev
+
+try:
+ if bdev:
+ uos.mount(bdev, '/')
+except OSError:
+ import inisetup
+ vfs = inisetup.setup()
+
+gc.collect()
diff --git a/ports/esp32/modules/apa106.py b/ports/esp32/modules/apa106.py
new file mode 100644
index 000000000..ef971d78b
--- /dev/null
+++ b/ports/esp32/modules/apa106.py
@@ -0,0 +1,8 @@
+# APA106driver for MicroPython on ESP32
+# MIT license; Copyright (c) 2016 Damien P. George
+
+from neopixel import NeoPixel
+
+
+class APA106(NeoPixel):
+ ORDER = (0, 1, 2, 3)
diff --git a/ports/esp32/modules/dht.py b/ports/esp32/modules/dht.py
new file mode 120000
index 000000000..2aa2f5cbf
--- /dev/null
+++ b/ports/esp32/modules/dht.py
@@ -0,0 +1 @@
+../../../drivers/dht/dht.py \ No newline at end of file
diff --git a/ports/esp32/modules/ds18x20.py b/ports/esp32/modules/ds18x20.py
new file mode 120000
index 000000000..9721929a3
--- /dev/null
+++ b/ports/esp32/modules/ds18x20.py
@@ -0,0 +1 @@
+../../esp8266/modules/ds18x20.py \ No newline at end of file
diff --git a/ports/esp32/modules/flashbdev.py b/ports/esp32/modules/flashbdev.py
new file mode 100644
index 000000000..935f5342f
--- /dev/null
+++ b/ports/esp32/modules/flashbdev.py
@@ -0,0 +1,34 @@
+import esp
+
+class FlashBdev:
+
+ SEC_SIZE = 4096
+ START_SEC = esp.flash_user_start() // SEC_SIZE
+
+ def __init__(self, blocks):
+ self.blocks = blocks
+
+ def readblocks(self, n, buf):
+ #print("readblocks(%s, %x(%d))" % (n, id(buf), len(buf)))
+ esp.flash_read((n + self.START_SEC) * self.SEC_SIZE, buf)
+
+ def writeblocks(self, n, buf):
+ #print("writeblocks(%s, %x(%d))" % (n, id(buf), len(buf)))
+ #assert len(buf) <= self.SEC_SIZE, len(buf)
+ esp.flash_erase(n + self.START_SEC)
+ esp.flash_write((n + self.START_SEC) * self.SEC_SIZE, buf)
+
+ def ioctl(self, op, arg):
+ #print("ioctl(%d, %r)" % (op, arg))
+ if op == 4: # BP_IOCTL_SEC_COUNT
+ return self.blocks
+ if op == 5: # BP_IOCTL_SEC_SIZE
+ return self.SEC_SIZE
+
+size = esp.flash_size()
+if size < 1024*1024:
+ # flash too small for a filesystem
+ bdev = None
+else:
+ # for now we use a fixed size for the filesystem
+ bdev = FlashBdev(2048 * 1024 // FlashBdev.SEC_SIZE)
diff --git a/ports/esp32/modules/inisetup.py b/ports/esp32/modules/inisetup.py
new file mode 100644
index 000000000..0e9c72fe8
--- /dev/null
+++ b/ports/esp32/modules/inisetup.py
@@ -0,0 +1,42 @@
+import uos
+from flashbdev import bdev
+
+def check_bootsec():
+ buf = bytearray(bdev.SEC_SIZE)
+ bdev.readblocks(0, buf)
+ empty = True
+ for b in buf:
+ if b != 0xff:
+ empty = False
+ break
+ if empty:
+ return True
+ fs_corrupted()
+
+def fs_corrupted():
+ import time
+ while 1:
+ print("""\
+FAT filesystem appears to be corrupted. If you had important data there, you
+may want to make a flash snapshot to try to recover it. Otherwise, perform
+factory reprogramming of MicroPython firmware (completely erase flash, followed
+by firmware programming).
+""")
+ time.sleep(3)
+
+def setup():
+ check_bootsec()
+ print("Performing initial setup")
+ uos.VfsFat.mkfs(bdev)
+ vfs = uos.VfsFat(bdev)
+ uos.mount(vfs, '/flash')
+ uos.chdir('/flash')
+ with open("boot.py", "w") as f:
+ f.write("""\
+# This file is executed on every boot (including wake-boot from deepsleep)
+#import esp
+#esp.osdebug(None)
+#import webrepl
+#webrepl.start()
+""")
+ return vfs
diff --git a/ports/esp32/modules/neopixel.py b/ports/esp32/modules/neopixel.py
new file mode 100644
index 000000000..86c1586cd
--- /dev/null
+++ b/ports/esp32/modules/neopixel.py
@@ -0,0 +1,33 @@
+# NeoPixel driver for MicroPython on ESP32
+# MIT license; Copyright (c) 2016 Damien P. George
+
+from esp import neopixel_write
+
+
+class NeoPixel:
+ ORDER = (1, 0, 2, 3)
+
+ def __init__(self, pin, n, bpp=3, timing=0):
+ self.pin = pin
+ self.n = n
+ self.bpp = bpp
+ self.buf = bytearray(n * bpp)
+ self.pin.init(pin.OUT)
+ self.timing = timing
+
+ def __setitem__(self, index, val):
+ offset = index * self.bpp
+ for i in range(self.bpp):
+ self.buf[offset + self.ORDER[i]] = val[i]
+
+ def __getitem__(self, index):
+ offset = index * self.bpp
+ return tuple(self.buf[offset + self.ORDER[i]]
+ for i in range(self.bpp))
+
+ def fill(self, color):
+ for i in range(self.n):
+ self[i] = color
+
+ def write(self):
+ neopixel_write(self.pin, self.buf, self.timing)
diff --git a/ports/esp32/modules/ntptime.py b/ports/esp32/modules/ntptime.py
new file mode 120000
index 000000000..e90900d5a
--- /dev/null
+++ b/ports/esp32/modules/ntptime.py
@@ -0,0 +1 @@
+../../esp8266/modules/ntptime.py \ No newline at end of file
diff --git a/ports/esp32/modules/onewire.py b/ports/esp32/modules/onewire.py
new file mode 120000
index 000000000..091629488
--- /dev/null
+++ b/ports/esp32/modules/onewire.py
@@ -0,0 +1 @@
+../../esp8266/modules/onewire.py \ No newline at end of file
diff --git a/ports/esp32/modules/umqtt/robust.py b/ports/esp32/modules/umqtt/robust.py
new file mode 120000
index 000000000..6bfbbcf55
--- /dev/null
+++ b/ports/esp32/modules/umqtt/robust.py
@@ -0,0 +1 @@
+../../../../../micropython-lib/umqtt.robust/umqtt/robust.py \ No newline at end of file
diff --git a/ports/esp32/modules/umqtt/simple.py b/ports/esp32/modules/umqtt/simple.py
new file mode 120000
index 000000000..6419a4664
--- /dev/null
+++ b/ports/esp32/modules/umqtt/simple.py
@@ -0,0 +1 @@
+../../../../../micropython-lib/umqtt.simple/umqtt/simple.py \ No newline at end of file
diff --git a/ports/esp32/modules/upip.py b/ports/esp32/modules/upip.py
new file mode 120000
index 000000000..130eb6901
--- /dev/null
+++ b/ports/esp32/modules/upip.py
@@ -0,0 +1 @@
+../../../tools/upip.py \ No newline at end of file
diff --git a/ports/esp32/modules/upip_utarfile.py b/ports/esp32/modules/upip_utarfile.py
new file mode 120000
index 000000000..d9653d6a6
--- /dev/null
+++ b/ports/esp32/modules/upip_utarfile.py
@@ -0,0 +1 @@
+../../../tools/upip_utarfile.py \ No newline at end of file
diff --git a/ports/esp32/modules/upysh.py b/ports/esp32/modules/upysh.py
new file mode 120000
index 000000000..12d100c29
--- /dev/null
+++ b/ports/esp32/modules/upysh.py
@@ -0,0 +1 @@
+../../../../micropython-lib/upysh/upysh.py \ No newline at end of file
diff --git a/ports/esp32/modules/urequests.py b/ports/esp32/modules/urequests.py
new file mode 120000
index 000000000..76661112e
--- /dev/null
+++ b/ports/esp32/modules/urequests.py
@@ -0,0 +1 @@
+../../../../micropython-lib/urequests/urequests.py \ No newline at end of file
diff --git a/ports/esp32/modules/webrepl.py b/ports/esp32/modules/webrepl.py
new file mode 120000
index 000000000..2a3987a72
--- /dev/null
+++ b/ports/esp32/modules/webrepl.py
@@ -0,0 +1 @@
+../../esp8266/modules/webrepl.py \ No newline at end of file
diff --git a/ports/esp32/modules/webrepl_setup.py b/ports/esp32/modules/webrepl_setup.py
new file mode 120000
index 000000000..999888bf1
--- /dev/null
+++ b/ports/esp32/modules/webrepl_setup.py
@@ -0,0 +1 @@
+../../esp8266/modules/webrepl_setup.py \ No newline at end of file
diff --git a/ports/esp32/modules/websocket_helper.py b/ports/esp32/modules/websocket_helper.py
new file mode 120000
index 000000000..4bcf3bcb6
--- /dev/null
+++ b/ports/esp32/modules/websocket_helper.py
@@ -0,0 +1 @@
+../../esp8266/modules/websocket_helper.py \ No newline at end of file