feat: HOSTDEMO_KNOWN env to override show-mode fixture UID list (for emulated-Butler interop tests)

This commit is contained in:
Tony Cao 2026-09-11 21:17:46 +08:00
parent 3351bf3776
commit ac2fed8ee4

View File

@ -503,11 +503,27 @@ pub fn run(target: &str, bind_ip: &str, secs: u64) {
println!("[{}] 认领完成 B12=0x{:08x}; {}", label, bc,
if is_show { "地址1-32 炫彩呼吸 (零模板纯自构造 DMX+RDM)" } else { "verbatim DMX + 模板 RDM" });
let rdm_t: Option<Vec<u8>> = base_rdm;
let known: [[u8; 6]; 3] = [
[0x01, 0x07, 0x34, 0x67, 0x01, 0x25],
[0x01, 0x07, 0x34, 0x88, 0x09, 0x00],
[0x08, 0x99, 0x50, 0x00, 0x26, 0xc9],
];
// HOSTDEMO_KNOWN=uid12hex[,uid12hex...] 覆盖默认灯具清单
// (用于对测仿真 Butler/其他 UID 的设备; 默认 = 台架 3 台真灯)
let known: Vec<[u8; 6]> = match std::env::var("HOSTDEMO_KNOWN") {
Ok(v) if !v.trim().is_empty() => v
.split(',')
.filter_map(|s| {
let s = s.trim();
if s.len() != 12 { return None; }
let mut u = [0u8; 6];
for i in 0..6 {
u[i] = u8::from_str_radix(&s[i * 2..i * 2 + 2], 16).ok()?;
}
Some(u)
})
.collect(),
_ => vec![
[0x01, 0x07, 0x34, 0x67, 0x01, 0x25],
[0x01, 0x07, 0x34, 0x88, 0x09, 0x00],
[0x08, 0x99, 0x50, 0x00, 0x26, 0xc9],
],
};
let start = Instant::now();
let mut di = 0usize;
let mut qseq: u16 = 0;