fix: Use correct index for combo/KO/leader creation
Index 255 does not mean "auto-assign" in the firmware. Must use combo_data.len() as next index (matching egui behavior). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
ca21a6766d
commit
33adcc5aa4
1 changed files with 7 additions and 3 deletions
10
src/main.rs
10
src/main.rs
|
|
@ -1062,7 +1062,8 @@ fn main() {
|
||||||
w.global::<AppState>().set_status_text("Pick both keys first".into());
|
w.global::<AppState>().set_status_text("Pick both keys first".into());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
let cmd = logic::protocol::cmd_comboset(255, r1, c1, r2, c2, result);
|
let next_idx = adv.get_combos().row_count() as u8;
|
||||||
|
let cmd = logic::protocol::cmd_comboset(next_idx, r1, c1, r2, c2, result);
|
||||||
let serial = serial.clone();
|
let serial = serial.clone();
|
||||||
let tx = tx.clone();
|
let tx = tx.clone();
|
||||||
std::thread::spawn(move || {
|
std::thread::spawn(move || {
|
||||||
|
|
@ -1083,11 +1084,13 @@ fn main() {
|
||||||
let window_weak = window.as_weak();
|
let window_weak = window.as_weak();
|
||||||
|
|
||||||
window.global::<AdvancedBridge>().on_create_ko(move |trig_code, trig_mod_idx, result_code, res_mod_idx| {
|
window.global::<AdvancedBridge>().on_create_ko(move |trig_code, trig_mod_idx, result_code, res_mod_idx| {
|
||||||
|
let Some(w) = window_weak.upgrade() else { return };
|
||||||
let trig = trig_code as u8;
|
let trig = trig_code as u8;
|
||||||
let trig_mod = mod_idx_to_byte(trig_mod_idx);
|
let trig_mod = mod_idx_to_byte(trig_mod_idx);
|
||||||
let result = result_code as u8;
|
let result = result_code as u8;
|
||||||
let res_mod = mod_idx_to_byte(res_mod_idx);
|
let res_mod = mod_idx_to_byte(res_mod_idx);
|
||||||
let cmd = logic::protocol::cmd_koset(255, trig, trig_mod, result, res_mod);
|
let next_idx = w.global::<AdvancedBridge>().get_key_overrides().row_count() as u8;
|
||||||
|
let cmd = logic::protocol::cmd_koset(next_idx, trig, trig_mod, result, res_mod);
|
||||||
let serial = serial.clone();
|
let serial = serial.clone();
|
||||||
let tx = tx.clone();
|
let tx = tx.clone();
|
||||||
std::thread::spawn(move || {
|
std::thread::spawn(move || {
|
||||||
|
|
@ -1120,7 +1123,8 @@ fn main() {
|
||||||
if count > 3 { sequence.push(adv.get_new_leader_seq3_code() as u8); }
|
if count > 3 { sequence.push(adv.get_new_leader_seq3_code() as u8); }
|
||||||
let result = result_code as u8;
|
let result = result_code as u8;
|
||||||
let result_mod = mod_idx_to_byte(mod_idx);
|
let result_mod = mod_idx_to_byte(mod_idx);
|
||||||
let cmd = logic::protocol::cmd_leaderset(255, &sequence, result, result_mod);
|
let next_idx = adv.get_leaders().row_count() as u8;
|
||||||
|
let cmd = logic::protocol::cmd_leaderset(next_idx, &sequence, result, result_mod);
|
||||||
let serial = serial.clone();
|
let serial = serial.clone();
|
||||||
let tx = tx.clone();
|
let tx = tx.clone();
|
||||||
std::thread::spawn(move || {
|
std::thread::spawn(move || {
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue