|
2587 | 2587 | let statusResolve = null; |
2588 | 2588 |
|
2589 | 2589 | // Map BLE status JSON keys to slider definitions |
| 2590 | + function setSlider(s, v) { s.el.value = v; s.val.textContent = v.toFixed(s.fmt) + (s.suffix || ''); } |
2590 | 2591 | function updateSlidersFromData(data) { |
2591 | | - if (data.A !== undefined) { sliders.k1.el.value = data.A; sliders.k1.val.textContent = data.A.toFixed(2); } |
2592 | | - if (data.B !== undefined) { sliders.k2.el.value = data.B; sliders.k2.val.textContent = data.B.toFixed(3); } |
2593 | | - if (data.V !== undefined) { sliders.k3.el.value = data.V; sliders.k3.val.textContent = data.V.toFixed(2); } |
2594 | | - if (data.Vb !== undefined) { sliders.k3Brake.el.value = data.Vb; sliders.k3Brake.val.textContent = data.Vb.toFixed(2); } |
2595 | | - if (data.W !== undefined) { sliders.k4.el.value = data.W; sliders.k4.val.textContent = data.W.toFixed(2); } |
2596 | | - if (data.T !== undefined) { sliders.maxTorque.el.value = data.T; sliders.maxTorque.val.textContent = data.T.toFixed(1); } |
2597 | | - if (data.S !== undefined) { sliders.slew.el.value = data.S; sliders.slew.val.textContent = data.S.toFixed(0); } |
2598 | | - if (data.G !== undefined) { sliders.steerGain.el.value = data.G; sliders.steerGain.val.textContent = data.G.toFixed(3); } |
2599 | | - if (data.I !== undefined) { sliders.steerKi.el.value = data.I; sliders.steerKi.val.textContent = data.I.toFixed(4); } |
2600 | | - if (data.X !== undefined) { sliders.steerScale.el.value = data.X; sliders.steerScale.val.textContent = data.X.toFixed(2); } |
2601 | | - if (data.Q !== undefined) { sliders.steerLpf.el.value = data.Q; sliders.steerLpf.val.textContent = data.Q.toFixed(2); } |
2602 | | - if (data.M !== undefined) { sliders.moveSpeed.el.value = data.M; sliders.moveSpeed.val.textContent = data.M.toFixed(1); } |
2603 | | - if (data.C !== undefined) { sliders.ctrlFreq.el.value = data.C; sliders.ctrlFreq.val.textContent = data.C.toFixed(0); } |
| 2592 | + if (data.A !== undefined) setSlider(sliders.k1, data.A); |
| 2593 | + if (data.B !== undefined) setSlider(sliders.k2, data.B); |
| 2594 | + if (data.V !== undefined) setSlider(sliders.k3, data.V); |
| 2595 | + if (data.Vb !== undefined) setSlider(sliders.k3Brake, data.Vb); |
| 2596 | + if (data.W !== undefined) setSlider(sliders.k4, data.W); |
| 2597 | + if (data.T !== undefined) setSlider(sliders.maxTorque, data.T); |
| 2598 | + if (data.S !== undefined) setSlider(sliders.slew, data.S); |
| 2599 | + if (data.G !== undefined) setSlider(sliders.steerGain, data.G); |
| 2600 | + if (data.I !== undefined) setSlider(sliders.steerKi, data.I); |
| 2601 | + if (data.X !== undefined) setSlider(sliders.steerScale, data.X); |
| 2602 | + if (data.Q !== undefined) setSlider(sliders.steerLpf, data.Q); |
| 2603 | + if (data.M !== undefined) setSlider(sliders.moveSpeed, data.M); |
| 2604 | + if (data.C !== undefined) setSlider(sliders.ctrlFreq, data.C); |
2604 | 2605 | if (data.O !== undefined) { |
2605 | | - sliders.pitchOffset.el.value = data.O; |
2606 | | - sliders.pitchOffset.val.textContent = data.O.toFixed(2); |
| 2606 | + setSlider(sliders.pitchOffset, data.O); |
2607 | 2607 | lastOffset = data.O; |
2608 | 2608 | ctrlOffsetVal.textContent = (data.O >= 0 ? '+' : '') + data.O.toFixed(2) + '\u00B0'; |
2609 | 2609 | } |
2610 | | - if (data.J !== undefined) { sliders.kSwing.el.value = data.J; sliders.kSwing.val.textContent = data.J.toFixed(2); } |
2611 | | - if (data.K !== undefined) { sliders.kVel.el.value = data.K; sliders.kVel.val.textContent = data.K.toFixed(2); } |
2612 | | - if (data.H !== undefined) { sliders.swingMax.el.value = data.H; sliders.swingMax.val.textContent = data.H.toFixed(1); } |
2613 | | - if (data.su !== undefined) { sliders.swingUpMs.el.value = data.su; sliders.swingUpMs.val.textContent = data.su.toFixed(0) + 'ms'; } |
2614 | | - if (data.c !== undefined) { sliders.crawlVelGain.el.value = data.c; sliders.crawlVelGain.val.textContent = data.c.toFixed(3); } |
2615 | | - if (data.o !== undefined) { sliders.crawlMaxTorque.el.value = data.o; sliders.crawlMaxTorque.val.textContent = data.o.toFixed(2); } |
2616 | | - if (data.e !== undefined) { sliders.standUpTorque.el.value = data.e; sliders.standUpTorque.val.textContent = data.e.toFixed(2); } |
2617 | | - if (data.n !== undefined) { sliders.standUpMs.el.value = data.n; sliders.standUpMs.val.textContent = data.n.toFixed(0) + 'ms'; } |
| 2610 | + if (data.J !== undefined) setSlider(sliders.kSwing, data.J); |
| 2611 | + if (data.K !== undefined) setSlider(sliders.kVel, data.K); |
| 2612 | + if (data.H !== undefined) setSlider(sliders.swingMax, data.H); |
| 2613 | + if (data.su !== undefined) setSlider(sliders.swingUpMs, data.su); |
| 2614 | + if (data.c !== undefined) setSlider(sliders.crawlVelGain, data.c); |
| 2615 | + if (data.o !== undefined) setSlider(sliders.crawlMaxTorque, data.o); |
| 2616 | + if (data.e !== undefined) setSlider(sliders.standUpTorque, data.e); |
| 2617 | + if (data.n !== undefined) setSlider(sliders.standUpMs, data.n); |
2618 | 2618 | if (data.ra !== undefined) { lastRollAngle = data.ra; } |
2619 | 2619 | if (data.i1 !== undefined || data.i2 !== undefined) { |
2620 | 2620 | const i1 = data.i1 !== undefined ? data.i1.toFixed(3) : '--'; |
|
2623 | 2623 | if (el) el.textContent = i1 + ' / ' + i2 + ' A'; |
2624 | 2624 | } |
2625 | 2625 | if (data.ps !== undefined) highlightProgStep(data.ps); |
2626 | | - if (data.v !== undefined) { sliders.steerMaxTorque.el.value = data.v; sliders.steerMaxTorque.val.textContent = data.v.toFixed(2); } |
2627 | | - if (data.p !== undefined) { sliders.movePitchGain.el.value = data.p; sliders.movePitchGain.val.textContent = data.p.toFixed(1); } |
2628 | | - if (data.Vf !== undefined) { sliders.velMaxRads.el.value = data.Vf; sliders.velMaxRads.val.textContent = data.Vf.toFixed(1); } |
2629 | | - if (data.kv !== undefined) { sliders.kvForce.el.value = data.kv; sliders.kvForce.val.textContent = data.kv.toFixed(2); } |
2630 | | - if (data.wg !== undefined) { sliders.velFfGate.el.value = data.wg; sliders.velFfGate.val.textContent = data.wg.toFixed(1); } |
| 2626 | + if (data.v !== undefined) setSlider(sliders.steerMaxTorque, data.v); |
| 2627 | + if (data.p !== undefined) setSlider(sliders.movePitchGain, data.p); |
| 2628 | + if (data.Vf !== undefined) setSlider(sliders.velMaxRads, data.Vf); |
| 2629 | + if (data.kv !== undefined) setSlider(sliders.kvForce, data.kv); |
| 2630 | + if (data.wg !== undefined) setSlider(sliders.velFfGate, data.wg); |
2631 | 2631 | if (data.armed !== undefined) { |
2632 | 2632 | isArmed = data.armed === 1; |
2633 | 2633 | updateArmUI(); |
|
0 commit comments