Replaces the legacy side-menu chrome with a 4-tab top header. - index.pug: tablet/kiosk fit-to-viewport script, header tab nav, estop/state badges in header. - app.js: route hash to (control|program|console|<settings-family>), multi-section settings shell. - control-view: header DRO, jog grid, MDI/probe/macros panels. - program-view + program-mixin: file browser + toolpath preview + run/pause/stop, replaces the legacy 'macros' tab content. - console-view: MDI shell, message log, indicators. - settings-shell-view: rail-driven inner pages (Display & Units, Probing, G-code & Motion, Macros, Network, etc.). - settings-view: filter Svelte SettingsView to one rail section. - SettingsView.svelte: tag every section with data-sec=… so the filter above can hide non-matching ones. - style.styl: ~2700 lines of V09 layout, DRO, jog grid, status strip, and tablet/kiosk variants. No A-axis / auxiliary-axis content lives on this branch.
111 lines
3.3 KiB
Markdown
111 lines
3.3 KiB
Markdown
# OneFinity CNC Controller Firmware (community fork)
|
|
|
|
This is the OneFinity / Buildbotics bbctrl firmware with a redesigned
|
|
UI (V09), Font Awesome 6, faster cold boot, and a streamlined macOS
|
|
dev / deploy workflow.
|
|
|
|
## Layout
|
|
|
|
```
|
|
src/avr/ AVR firmware (motion controller, AtxMega)
|
|
src/boot/ AVR bootloader
|
|
src/bbserial/ Linux kernel module for the bbserial driver
|
|
src/py/bbctrl/ Python control daemon (Tornado + websockets)
|
|
src/js/ Vue.js UI (legacy)
|
|
src/svelte-components/ Newer Svelte UI for dialogs and settings
|
|
src/pug/ Pug templates compiled into build/http/index.html
|
|
src/resources/ Static assets and config templates
|
|
scripts/ Install / update / RPi build helpers
|
|
docs/ Architecture, dev setup
|
|
```
|
|
|
|
## Build & flash (quick path, macOS or Linux)
|
|
|
|
The full build (`make`) requires `avr-gcc`, but the controller and UI
|
|
only depend on the Python + web parts. If you're shipping a UI/Python
|
|
change you don't need the AVR toolchain.
|
|
|
|
### Prerequisites
|
|
|
|
- Node.js (any recent LTS) with npm
|
|
- Python 3 with setuptools
|
|
- `npm install` once at the project root (this is wired into the
|
|
`node_modules` Make target, but on a fresh checkout it's clearer to
|
|
do it explicitly)
|
|
|
|
```bash
|
|
npm install
|
|
(cd src/svelte-components && npm install)
|
|
```
|
|
|
|
#### macOS gotcha: esbuild platform pin
|
|
|
|
The Pi build leaves `node_modules/esbuild` pinned to
|
|
`linux-arm64`, which won't run on Darwin. If `npm run build` inside
|
|
`src/svelte-components` complains about esbuild, reinstall it for the
|
|
host:
|
|
|
|
```bash
|
|
cd src/svelte-components
|
|
rm -rf node_modules/esbuild
|
|
npm install esbuild@0.14.49 --no-save
|
|
```
|
|
|
|
(Use the version that matches `package-lock.json`.)
|
|
|
|
### Build the web UI + Python sdist
|
|
|
|
```bash
|
|
# Build the Svelte components
|
|
(cd src/svelte-components && npm run build)
|
|
|
|
# Render pug templates and copy assets into build/http
|
|
make all # AVR step will fail without avr-gcc; safe to ignore
|
|
# if you didn't change anything under src/avr or src/boot
|
|
|
|
# Package
|
|
./setup.py sdist
|
|
ls dist/bbctrl-*.tar.bz2
|
|
```
|
|
|
|
`make pkg` is the canonical target but it tries to build AVR first. On
|
|
hosts without avr-gcc, run the steps above directly.
|
|
|
|
If `bbctrl-*.tar.bz2` is missing `src/bbserial/bbserial.ko`, copy the
|
|
prebuilt `.ko` from a previous official release into `src/bbserial/`
|
|
before running `setup.py sdist` (the install script on the controller
|
|
just installs the existing module if a newer one isn't shipped).
|
|
|
|
### Flash to a controller
|
|
|
|
```bash
|
|
curl -X PUT -H "Content-Type: multipart/form-data" \
|
|
-F "firmware=@dist/bbctrl-1.6.7.tar.bz2" \
|
|
-F "password=onefinity" \
|
|
http://onefinity.local/api/firmware/update
|
|
```
|
|
|
|
…or use the Make target:
|
|
|
|
```bash
|
|
make update HOST=onefinity.local PASSWORD=onefinity
|
|
```
|
|
|
|
The controller stops bbctrl, untars the package, runs
|
|
`scripts/install.sh`, and brings the service back up. Total downtime
|
|
is ~30-45s. Watch progress at `http://<host>/` (you'll get 404s while
|
|
bbctrl restarts, then the new UI).
|
|
|
|
### Verify the flash
|
|
|
|
```bash
|
|
curl -s http://onefinity.local/ | grep -c "OneFinity"
|
|
curl -s http://onefinity.local/api/diag/timing | head
|
|
```
|
|
|
|
## Build & flash (full path, Debian/Linux)
|
|
|
|
For AVR + GPlan rebuilds, see [docs/development.md](docs/development.md).
|
|
That path uses qemu + chroot to cross-compile gplan for ARM and needs
|
|
the `gcc-avr` / `avr-libc` toolchain.
|