Commit Graph

90 Commits

Author SHA1 Message Date
561d2fd7ea Restart timing: bbctrl.Trace, /api/diag/timing, UI marks
Add a lightweight, self-contained phase tracer for measuring end-to-end
bbctrl restart and Pi boot time. Disabled by setting BBCTRL_TRACE=0.

- src/py/bbctrl/Trace.py: monotonic-anchored event log + sd_notify helper.
- bbctrl/__init__.py: marks for imports, args parsed, ioloop, web init,
  listen, and an sd_notify READY=1 once HTTP is bound.
- bbctrl/Ctrl.py: spans around each subsystem (avr, i2c, lcd, mach,
  preplanner, jog, pwr, hooks, aux, mach.connect).
- bbctrl/Comm.py: avr.firmware_rebooted mark.
- bbctrl/Web.py: TimingHandler (GET /api/diag/timing) and
  UITimingHandler (PUT /api/diag/timing/ui), plus a ws.first_open mark.
- src/js/restart-timing.js + app.js: UI-side performance.now() marks
  (script.load, ws.open, ws.first_msg, ui.first_state, window.load),
  posted once to the controller.
- scripts/bbctrl.service: stdout/stderr -> journal so TRACE lines are
  visible via journalctl -u bbctrl. (Was StandardOutput=null.)

Revert: git revert this commit. To disable at runtime without
reverting, set BBCTRL_TRACE=0 in the bbctrl service environment.
2026-05-01 09:48:10 +02:00
Claude
c7cf9483b3 Add W axis integration via auxcnc ESP32 over /dev/ttyUSB0
Rather than rebuild gplan + the AVR firmware to add a true 7th axis,
we treat W as a synchronous out-of-band axis that moves between G-code
blocks. The pipeline:

  upload -> AuxPreprocessor rewrites W tokens into (MSG,HOOK:aux:N)
  comments -> planner sees only XYZ + messages -> Hooks fires the
  registered internal handler -> AuxAxis sends STEPS/HOME over serial
  to the ESP and blocks the planner until done.

New files:
  src/py/bbctrl/AuxAxis.py       serial worker + RPC layer
  src/py/bbctrl/AuxPreprocessor.py  G-code rewriter
  docs/AUX_W_AXIS.md             design + ops notes

Changed:
  Hooks.py        register_internal(); fix the (MSG,HOOK:...) listener
                  to read the 'messages' state list (was broken before)
  Ctrl.py         instantiate AuxAxis, register aux/aux_rel/aux_home/
                  aux_setzero hooks
  FileHandler.py  rewrite uploads in place when they use W
  Mach.py         rewrite W tokens in MDI input the same way
  Web.py          REST endpoints under /api/aux/*

The ESP firmware in ../auxcnc was extended in lockstep: HOME, HOMECFG
(NVS-persisted), WPOS, HOMED?, LIMIT?, abortable STEPS with
limit-aware abort, trapezoidal ramps, deterministic [topic] reply
tokens, [boot] banner.

Real-time decisions (limit switch, step pulses) live on the ESP. The
host owns mm units, soft limits, and aux_homed bookkeeping. ESP
reboot mid-job clears aux_homed and surfaces a message; per design
manual jogs are still allowed without homing.
2026-04-30 16:51:24 +02:00
7d0755c55b Hooks v2: block unpause until hook completes
- Blocking hooks (block_unpause: true, default for tool-change) run
  in a background thread and gate Mach.unpause() via can_unpause()
- Machine stays in HOLDING state while hook runs — AVR steppers idle,
  spindle state preserved, position locked
- auto_resume option to unpause automatically after hook completes
- E-stop cancels any running hook immediately
- Hook status pushed to frontend via state (hook_busy, hook_event)
- GET /api/hooks/status endpoint for polling
- Non-blocking hooks (program-start, program-end, etc.) fire-and-forget
2026-04-21 08:10:07 +02:00
7f8fd23615 Add hooks system for external triggers during G-code execution
- New Hooks module (src/py/bbctrl/Hooks.py) that watches controller state
  and fires webhooks or scripts on events:
  - tool-change (M6), program-start, program-end, pause, estop,
    homing-start, homing-end, custom (via MSG comments)
- API endpoints:
  - GET /api/hooks - get current hook config
  - PUT /api/hooks/save - save hook config
  - PUT /api/hooks/fire/<event> - manually fire a hook (for testing)
- Hook config stored in hooks.json with two types:
  - webhook: HTTP POST/PUT to external URL with JSON context
  - script: run local command with env vars (HOOK_OLD_TOOL, etc.)
- Fix tornado.web.asynchronous deprecation in Camera.py
- Wired into Ctrl initialization and state listener system
2026-04-20 17:43:02 +02:00
sanjayk03-dev
4ef4943ce9 fixed modal opening on each refresh 2025-09-21 01:06:42 +05:30
sanjayk03-dev
91f8860320 removed logs 2025-08-31 17:53:08 +05:30
sanjayk03-dev
243b23827e removed f strings 2025-08-31 17:42:28 +05:30
sanjayk03-dev
7e0739eea3 trying to fix microsteps fix 2025-08-31 17:35:38 +05:30
sanjayk03-dev
961a54bf65 fixed state notify 2025-08-31 16:50:00 +05:30
sanjayk03-dev
61e1c4ceff fixed logging 2025-07-09 01:02:42 +05:30
sanjayk03-dev
935c064f47 [bug-fix] Missed key error 2025-07-08 22:17:40 +05:30
sanjayk03-dev
7f18f0a573 revised motor 2 config for rotary mode 2025-06-24 22:05:34 +05:30
sanjayk03-dev
0adae739af removed logs 2025-06-11 01:08:54 +05:30
sanjayk03-dev
dc6e3b958e fixing _populate_issues 2025-06-10 23:31:50 +05:30
sanjayk03-dev
f567a9c772 changed logstring 2025-06-10 23:10:34 +05:30
sanjayk03-dev
b09639160a fixing RotaryHandler 2025-06-10 22:51:05 +05:30
sanjayk03-dev
1076a88801 added loggers 2025-06-10 22:13:57 +05:30
bsaravanan783
61bbc05925 fix 2025-06-10 21:59:05 +05:30
bsaravanan783
6fa749e36b fix 2025-06-10 21:48:49 +05:30
bsaravanan783
2f3aaaca7e fix 2025-06-10 21:44:17 +05:30
bsaravanan783
568e7bb393 log 2025-06-10 21:39:56 +05:30
bsaravanan783
70989c40cd added loggers 2025-06-10 19:09:18 +05:30
bsaravanan783
e0a809de12 removed loggers 2025-06-10 19:06:16 +05:30
bsaravanan783
9313ffc9d8 addded loggers 2025-06-10 01:47:03 +05:30
bsaravanan783
a468e61463 added loggers 2025-06-10 01:43:59 +05:30
bsaravanan783
602eae10f9 added loggers 2025-06-10 01:37:27 +05:30
bsaravanan783
937d591495 added loggers 2025-06-10 01:31:20 +05:30
bsaravanan783
e4ccffe571 added loggers 2025-06-10 01:26:06 +05:30
bsaravanan783
cf5d08c8a1 added loggers 2025-06-10 01:09:13 +05:30
bsaravanan783
b810b94fe1 added loggers 2025-06-10 00:46:53 +05:30
bsaravanan783
5a55ca0445 added loggers 2025-06-10 00:42:59 +05:30
bsaravanan783
34e1875bc4 added loggers 2025-06-10 00:16:46 +05:30
sanjayk03-dev
a49bf15da5 fixing validationError 2025-06-05 01:27:33 +05:30
sanjayk03-dev
f6bff7176c logging config data 2025-06-05 00:57:55 +05:30
sanjayk03-dev
e938aa24c3 fixed key 2025-06-05 00:37:58 +05:30
sanjayk03-dev
eaf5c2a1e2 storing motors backup 2025-06-04 22:00:12 +05:30
sanjayk03-dev
295eecfa6d removed loggers 2025-05-23 20:11:49 +05:30
sanjayk03-dev
7ca04d70d8 fixed loggers 2025-05-23 20:02:48 +05:30
sanjayk03-dev
f3422e54d0 adding logs to debug 2025-05-23 19:58:44 +05:30
sanjayk03-dev
d486094373 backup values 2025-05-23 19:34:26 +05:30
sanjayk03-dev
19f362c2f8 add conditional checks 2025-05-23 19:11:25 +05:30
sanjayk03-dev
6999aca997 changing config values for rotary axis 2025-05-15 21:11:33 +05:30
sanjayk03-dev
e17a30d19d toggling min and max soft limit on switching rotary 2025-01-19 23:57:26 +05:30
sanjayk03-dev
a271360d1c fixing edgecase 2024-12-05 16:07:17 +05:30
sanjayk03-dev
39534595c2 RotaryHandler 2024-12-05 15:42:11 +05:30
sanjayk03-dev
1ad8bb6cbc moving the toggle_rotary to backend 2024-12-04 14:24:29 +05:30
sanjayk03-dev
e14454838c storing in config only from user input 2024-09-18 23:38:23 +05:30
sanjayk03-dev
9f63358f08 log change 2024-09-09 19:33:20 +05:30
sanjayk03-dev
ee9fa4749a minor fixes 2024-09-09 19:23:23 +05:30
sanjayk03-dev
4e65135a9a changing timezone 2024-09-09 15:19:52 +05:30