Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • flow3r/flow3r-firmware
  • Vespasian/flow3r-firmware
  • alxndr42/flow3r-firmware
  • pl/flow3r-firmware
  • Kari/flow3r-firmware
  • raimue/flow3r-firmware
  • grandchild/flow3r-firmware
  • mu5tach3/flow3r-firmware
  • Nervengift/flow3r-firmware
  • arachnist/flow3r-firmware
  • TheNewCivilian/flow3r-firmware
  • alibi/flow3r-firmware
  • manuel_v/flow3r-firmware
  • xeniter/flow3r-firmware
  • maxbachmann/flow3r-firmware
  • yGifoom/flow3r-firmware
  • istobic/flow3r-firmware
  • EiNSTeiN_/flow3r-firmware
  • gnudalf/flow3r-firmware
  • 999eagle/flow3r-firmware
  • toerb/flow3r-firmware
  • pandark/flow3r-firmware
  • teal/flow3r-firmware
  • x42/flow3r-firmware
  • alufers/flow3r-firmware
  • dos/flow3r-firmware
  • yrlf/flow3r-firmware
  • LuKaRo/flow3r-firmware
  • ThomasElRubio/flow3r-firmware
  • ai/flow3r-firmware
  • T_X/flow3r-firmware
  • highTower/flow3r-firmware
  • beanieboi/flow3r-firmware
  • Woazboat/flow3r-firmware
  • gooniesbro/flow3r-firmware
  • marvino/flow3r-firmware
  • kressnerd/flow3r-firmware
  • quazgar/flow3r-firmware
  • aoid/flow3r-firmware
  • jkj/flow3r-firmware
  • naomi/flow3r-firmware
41 results
Show changes
Commits on Source (10)
# Changelog
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
## [Unreleased]
### Added
- Added _Comic Mono_ font.
- Added a setting for automatically connecting to Camp WiFi.
- Added `ApplicationContext.bundle_path` so apps can find out what directory
they live in. This should be used for loading app assets from the correct
path.
- Added TLS support for MicroPython.
- Added modules for `.tar.gz` extraction.
- Added `aioble` module (Bluetooth Low Energy).
- Added pronoun support in the Nick app.
- Added color options in the Nick app.
- Added IMU-based rotation in the Nick app.
### Changed
- `ctx.get_font_name()` now raises an exception for unknown fonts.
- Raised umber of concurrent textures to 32.
### Fixed
- Fixed PNG without alpha and JPEG support by enabling `CTX_FORMAT_RGB8`.
- Fixed image cache eviction by introducing a ctx frameclock.
- Fixed incorrect merging of settings dicts in `st3m.settings`.
## [1.0.0] - 2023-08-13
Initial Release
[unreleased]: https://git.flow3r.garden/flow3r/flow3r-firmware/-/compare/v1.0.0...main
[1.0.0]: https://git.flow3r.garden/flow3r/flow3r-firmware/-/tags/v1.0.0
...@@ -145,16 +145,6 @@ void st3m_gfx_splash(const char *c); ...@@ -145,16 +145,6 @@ void st3m_gfx_splash(const char *c);
// Called by st3m_usb_cdc when it has the opportunity to send some data to the // Called by st3m_usb_cdc when it has the opportunity to send some data to the
// host. // host.
size_t st3m_console_cdc_on_txpoll(uint8_t *buffer, size_t bufsize) { size_t st3m_console_cdc_on_txpoll(uint8_t *buffer, size_t bufsize) {
// I have no idea why this is needed, but it is. Otherwise a large backlog
// of data cuases the IN endpoint to get stuck.
//
// I've spend three days debugging this.
//
// No, I'm not fine. Thanks for asking, though. I appreciate it.
if (bufsize > 0) {
bufsize -= 1;
}
int64_t now = esp_timer_get_time(); int64_t now = esp_timer_get_time();
xSemaphoreTake(_state.mu, portMAX_DELAY); xSemaphoreTake(_state.mu, portMAX_DELAY);
...@@ -400,4 +390,4 @@ static esp_vfs_t _vfs = { ...@@ -400,4 +390,4 @@ static esp_vfs_t _vfs = {
.open = &_console_open, .open = &_console_open,
.read = &_console_read, .read = &_console_read,
.write = &_console_write, .write = &_console_write,
}; };
\ No newline at end of file
...@@ -46,6 +46,7 @@ void st3m_usb_cdc_txpoll(void) { ...@@ -46,6 +46,7 @@ void st3m_usb_cdc_txpoll(void) {
for (;;) { for (;;) {
uint32_t space = tud_cdc_n_write_available(st3m_usb_interface_app_cdc); uint32_t space = tud_cdc_n_write_available(st3m_usb_interface_app_cdc);
if (space == 0) { if (space == 0) {
tud_cdc_n_write_flush(st3m_usb_interface_app_cdc);
return; return;
} }
......
...@@ -5,4 +5,5 @@ ...@@ -5,4 +5,5 @@
esp-llvm = super.callPackage ./esp-llvm.nix {}; esp-llvm = super.callPackage ./esp-llvm.nix {};
esp-gdb = super.callPackage ./esp-gdb.nix {}; esp-gdb = super.callPackage ./esp-gdb.nix {};
run-clang-tidy = super.callPackage ./run-clang-tidy {}; run-clang-tidy = super.callPackage ./run-clang-tidy {};
mpremote = super.python310Packages.callPackage ./mpremote {};
}) })
{ python3
, fetchPypi
}:
python3.pkgs.buildPythonApplication rec {
pname = "mpremote";
version = "1.20.0";
format = "pyproject";
src = fetchPypi {
inherit pname version;
hash = "sha256-XDQnYqBHkTCd1JvOY8cKB1qnxUixwAdiYrlvnMw5jKI=";
};
doCheck = false;
nativeBuildInputs = with python3.pkgs; [
hatchling
hatch-requirements-txt
hatch-vcs
];
propagatedBuildInputs = with python3.pkgs; [
pyserial
importlib-metadata
];
}
...@@ -35,5 +35,6 @@ in with nixpkgs; rec { ...@@ -35,5 +35,6 @@ in with nixpkgs; rec {
emscripten emscripten
ncurses5 ncurses5
esp-gdb esp-gdb
mpremote
]; ];
} }
...@@ -5,7 +5,7 @@ These are the sources for the Python part of st3m, which implements the core fun ...@@ -5,7 +5,7 @@ These are the sources for the Python part of st3m, which implements the core fun
You're either seeing this in our git repository (in `python_payload`) or on a badge itself (in `/flash/sys`). You're either seeing this in our git repository (in `python_payload`) or on a badge itself (in `/flash/sys`).
On the badge, these files are required for the badge to function, and are extracted on first startup. You can edit these to your heart's conent, but this generally shouldn't be necessary. On the badge, these files are required for the badge to function, and are extracted on first startup. You can edit these to your heart's content, but this generally shouldn't be necessary.
If you break something, the badge will probably not boot. In this case, start it in recovery mode and remove the `sys` directory fully. This will cause the badge to re-extract the files on next startup. If you break something, the badge will probably not boot. In this case, start it in recovery mode and remove the `sys` directory fully. This will cause the badge to re-extract the files on next startup.
......
...@@ -26,19 +26,17 @@ class HarmonicApp(Application): ...@@ -26,19 +26,17 @@ class HarmonicApp(Application):
self.color_intensity = 0.0 self.color_intensity = 0.0
self.chord_index = 0 self.chord_index = 0
self.chord: List[int] = [] self.chord: List[int] = []
self.synths = [blm.new(bl00mbox.patches.tinysynth_fm) for i in range(5)] self.synths = [blm.new(bl00mbox.patches.tinysynth) for i in range(5)]
self.cp_prev = captouch.read() self.cp_prev = captouch.read()
for i, synth in enumerate(self.synths): for i, synth in enumerate(self.synths):
synth.signals.decay = 500 synth.signals.decay = 500
synth.signals.waveform = -32767 synth.signals.waveform = 0
synth.signals.attack = 50 synth.signals.attack = 50
synth.signals.volume = 0.3 * 32767 synth.signals.volume = 0.3 * 32767
synth.signals.sustain = 0.9 * 32767 synth.signals.sustain = 0.9 * 32767
synth.signals.release = 800 synth.signals.release = 800
synth.signals.fm_waveform = -32767
synth.signals.output = blm.mixer synth.signals.output = blm.mixer
# synth.fm = 1.5
self._set_chord(3) self._set_chord(3)
self.prev_captouch = [0] * 10 self.prev_captouch = [0] * 10
......
...@@ -10,7 +10,7 @@ from st3m.ui.view import ViewManager ...@@ -10,7 +10,7 @@ from st3m.ui.view import ViewManager
from ctx import Context from ctx import Context
octave = 0 octave = 0
synths: List[bl00mbox.patches.tinysynth_fm] = [] synths: List[bl00mbox.patches.tinysynth] = []
scale = [0, 2, 4, 5, 7, 9, 11] scale = [0, 2, 4, 5, 7, 9, 11]
...@@ -79,7 +79,7 @@ def run(input: InputController) -> None: ...@@ -79,7 +79,7 @@ def run(input: InputController) -> None:
def init() -> None: def init() -> None:
global synths global synths
for i in range(1): for i in range(1):
synth = blm.new(bl00mbox.patches.tinysynth_fm) synth = blm.new(bl00mbox.patches.tinysynth)
synth.signals.output = blm.mixer synth.signals.output = blm.mixer
synths += [synth] synths += [synth]
for synth in synths: for synth in synths:
......
...@@ -70,6 +70,7 @@ class Configuration: ...@@ -70,6 +70,7 @@ class Configuration:
"pronouns": self.pronouns, "pronouns": self.pronouns,
"pronouns_size": self.pronouns_size, "pronouns_size": self.pronouns_size,
"color": self.color, "color": self.color,
"mode": self.mode,
} }
jsondata = json.dumps(d) jsondata = json.dumps(d)
with open(path, "w") as f: with open(path, "w") as f:
......
...@@ -105,7 +105,9 @@ class sampler(_Patch): ...@@ -105,7 +105,9 @@ class sampler(_Patch):
def __init__(self, chan, filename): def __init__(self, chan, filename):
super().__init__(chan) super().__init__(chan)
if filename.startswith("/"): if filename.startswith("/flash/") or filename.startswith("/sd/"):
f = wave.open(filename, "r")
elif filename.startswith("/"):
f = wave.open("/flash/" + filename, "r") f = wave.open("/flash/" + filename, "r")
else: else:
f = wave.open("/flash/sys/samples/" + filename, "r") f = wave.open("/flash/sys/samples/" + filename, "r")
......
#!/usr/bin/env bash #!/usr/bin/env bash
set -e set -e -u
if [ ! -f sdkconfig.defaults ] || [ ! -f recovery/sdkconfig.defaults ]; then if [ ! -f sdkconfig.defaults ] || [ ! -f recovery/sdkconfig.defaults ]; then
echo >/dev/stderr "Run this script for the root of the repository (ie. tools/mypy.sh)." echo >/dev/stderr "Run this script for the root of the repository (ie. tools/mypy.sh)."
...@@ -28,7 +28,7 @@ _mypy python_payload/main.py ...@@ -28,7 +28,7 @@ _mypy python_payload/main.py
for f in python_payload/apps/*/flow3r.toml; do for f in python_payload/apps/*/flow3r.toml; do
app_name="$(basename $(dirname $f))" app_name="$(basename $(dirname $f))"
echo "Checking ${app_name}..." echo "Checking ${app_name}..."
_mypy python_payload/apps/${app} _mypy python_payload/apps/${app_name}
done done
if [ $failed ]; then if [ $failed ]; then
......