Merge pull request 'fix(main): Make upgrade from tag directories more ergonomical' (#47) from fix-no-db into main
All checks were successful
Build RPi Pico firmware image / Build-Firmware (push) Successful in 3m20s
Check code formatting / Check-C-Format (push) Successful in 7s
Check code formatting / Check-Python-Flake8 (push) Successful in 10s
Check code formatting / Check-Bash-Shellcheck (push) Successful in 5s
Run unit tests on host / Run-Unit-Tests (push) Successful in 8s
Run pytests / Check-Pytest (push) Successful in 11s
All checks were successful
Build RPi Pico firmware image / Build-Firmware (push) Successful in 3m20s
Check code formatting / Check-C-Format (push) Successful in 7s
Check code formatting / Check-Python-Flake8 (push) Successful in 10s
Check code formatting / Check-Bash-Shellcheck (push) Successful in 5s
Run unit tests on host / Run-Unit-Tests (push) Successful in 8s
Run pytests / Check-Pytest (push) Successful in 11s
Reviewed-on: #47 Reviewed-by: Stefan Kratochwil <kratochwil-la@gmx.de>
This commit was merged in pull request #47.
This commit is contained in:
@@ -3,9 +3,11 @@
|
|||||||
|
|
||||||
import aiorepl # type: ignore
|
import aiorepl # type: ignore
|
||||||
import asyncio
|
import asyncio
|
||||||
|
from errno import ENOENT
|
||||||
import machine
|
import machine
|
||||||
import micropython
|
import micropython
|
||||||
import network
|
import network
|
||||||
|
import os
|
||||||
import time
|
import time
|
||||||
from math import pi, sin, pow
|
from math import pi, sin, pow
|
||||||
|
|
||||||
@@ -62,6 +64,9 @@ def setup_wifi():
|
|||||||
wlan.active(True)
|
wlan.active(True)
|
||||||
|
|
||||||
|
|
||||||
|
DB_PATH = '/sd/tonberry.db'
|
||||||
|
|
||||||
|
|
||||||
def run():
|
def run():
|
||||||
asyncio.new_event_loop()
|
asyncio.new_event_loop()
|
||||||
# Setup LEDs
|
# Setup LEDs
|
||||||
@@ -73,27 +78,36 @@ def run():
|
|||||||
|
|
||||||
# Setup MP3 player
|
# Setup MP3 player
|
||||||
with SDContext(mosi=hwconfig.SD_DI, miso=hwconfig.SD_DO, sck=hwconfig.SD_SCK, ss=hwconfig.SD_CS,
|
with SDContext(mosi=hwconfig.SD_DI, miso=hwconfig.SD_DO, sck=hwconfig.SD_SCK, ss=hwconfig.SD_CS,
|
||||||
baudrate=hwconfig.SD_CLOCKRATE), \
|
baudrate=hwconfig.SD_CLOCKRATE):
|
||||||
BTreeFileManager('/sd/tonberry.db') as playlistdb, \
|
# Temporary hack: build database from folders if no database exists
|
||||||
AudioContext(hwconfig.I2S_DIN, hwconfig.I2S_DCLK, hwconfig.I2S_LRCLK) as audioctx:
|
# Can be removed once playlists can be created via API
|
||||||
|
try:
|
||||||
|
_ = os.stat(DB_PATH)
|
||||||
|
except OSError as ex:
|
||||||
|
if ex.errno == ENOENT:
|
||||||
|
print("No playlist DB found, trying to build DB from tag dirs")
|
||||||
|
builddb()
|
||||||
|
|
||||||
# Setup NFC
|
with BTreeFileManager(DB_PATH) as playlistdb, \
|
||||||
reader = MFRC522(spi_id=hwconfig.RC522_SPIID, sck=hwconfig.RC522_SCK, miso=hwconfig.RC522_MISO,
|
AudioContext(hwconfig.I2S_DIN, hwconfig.I2S_DCLK, hwconfig.I2S_LRCLK) as audioctx:
|
||||||
mosi=hwconfig.RC522_MOSI, cs=hwconfig.RC522_SS, rst=hwconfig.RC522_RST, tocard_retries=20)
|
|
||||||
|
|
||||||
# Setup app
|
# Setup NFC
|
||||||
deps = app.Dependencies(mp3player=lambda the_app: MP3Player(audioctx, the_app),
|
reader = MFRC522(spi_id=hwconfig.RC522_SPIID, sck=hwconfig.RC522_SCK, miso=hwconfig.RC522_MISO,
|
||||||
nfcreader=lambda the_app: Nfc(reader, the_app),
|
mosi=hwconfig.RC522_MOSI, cs=hwconfig.RC522_SS, rst=hwconfig.RC522_RST, tocard_retries=20)
|
||||||
buttons=lambda the_app: Buttons(the_app, pin_volup=hwconfig.BUTTON_VOLUP,
|
|
||||||
pin_voldown=hwconfig.BUTTON_VOLDOWN,
|
|
||||||
pin_next=hwconfig.BUTTON_NEXT),
|
|
||||||
playlistdb=lambda _: playlistdb)
|
|
||||||
the_app = app.PlayerApp(deps)
|
|
||||||
|
|
||||||
# Start
|
# Setup app
|
||||||
asyncio.create_task(aiorepl.task({'timer_manager': TimerManager(),
|
deps = app.Dependencies(mp3player=lambda the_app: MP3Player(audioctx, the_app),
|
||||||
'app': the_app}))
|
nfcreader=lambda the_app: Nfc(reader, the_app),
|
||||||
asyncio.get_event_loop().run_forever()
|
buttons=lambda the_app: Buttons(the_app, pin_volup=hwconfig.BUTTON_VOLUP,
|
||||||
|
pin_voldown=hwconfig.BUTTON_VOLDOWN,
|
||||||
|
pin_next=hwconfig.BUTTON_NEXT),
|
||||||
|
playlistdb=lambda _: playlistdb)
|
||||||
|
the_app = app.PlayerApp(deps)
|
||||||
|
|
||||||
|
# Start
|
||||||
|
asyncio.create_task(aiorepl.task({'timer_manager': TimerManager(),
|
||||||
|
'app': the_app}))
|
||||||
|
asyncio.get_event_loop().run_forever()
|
||||||
|
|
||||||
|
|
||||||
def builddb():
|
def builddb():
|
||||||
@@ -101,10 +115,11 @@ def builddb():
|
|||||||
For testing, build a playlist db based on the previous tag directory format.
|
For testing, build a playlist db based on the previous tag directory format.
|
||||||
Can be removed once uploading files / playlist via the web api is possible.
|
Can be removed once uploading files / playlist via the web api is possible.
|
||||||
"""
|
"""
|
||||||
import os
|
try:
|
||||||
|
os.unlink(DB_PATH)
|
||||||
os.unlink('/sd/tonberry.db')
|
except OSError:
|
||||||
with BTreeFileManager('/sd/tonberry.db') as db:
|
pass
|
||||||
|
with BTreeFileManager(DB_PATH) as db:
|
||||||
for name, type_, _, _ in os.ilistdir(b'/sd'):
|
for name, type_, _, _ in os.ilistdir(b'/sd'):
|
||||||
if type_ != 0x4000:
|
if type_ != 0x4000:
|
||||||
continue
|
continue
|
||||||
|
|||||||
Reference in New Issue
Block a user