Merge remote-tracking branch 'origin/master'
This commit is contained in:
commit
a1d709a62a
|
|
@ -200,7 +200,8 @@ fn rdm_region(b: &[u8]) -> Option<(bool, &[u8])> {
|
||||||
if g16(b, 0x18) != 0x0002 { return None; }
|
if g16(b, 0x18) != 0x0002 { return None; }
|
||||||
if &b[0x1A..0x1E] != b"Butl" { return None; }
|
if &b[0x1A..0x1E] != b"Butl" { return None; }
|
||||||
let rlen = g16(b, 0x28) as usize;
|
let rlen = g16(b, 0x28) as usize;
|
||||||
if b.len() < 0x2A + rlen { return None; }
|
// rlen=0 = 42B 事件计数遥测帧 (真机有事件时 ~115ms 一帧), 非 RDM 载荷
|
||||||
|
if rlen == 0 || b.len() < 0x2A + rlen { return None; }
|
||||||
let d = &b[0x2A..0x2A + rlen];
|
let d = &b[0x2A..0x2A + rlen];
|
||||||
Some((d[0] == 0xAA, d))
|
Some((d[0] == 0xAA, d))
|
||||||
}
|
}
|
||||||
|
|
|
||||||
17
src/main.rs
17
src/main.rs
|
|
@ -170,11 +170,22 @@ fn main() {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
"hostdemo" => {
|
"hostdemo" => {
|
||||||
// hostdemo [目标IP] [秒] — 主机侧等效示例: 认领真机 + RDM 发现 + 加密 DMX 控制
|
// hostdemo [目标IP] [秒] [源IP] — 主机侧等效示例: 认领真机 + RDM 发现 + 加密 DMX 控制
|
||||||
// 源 IP 固定 192.168.123.113 (真机 .1 的 AECH 固件过滤); 秒=0 只做认领+RDM 不发 DMX
|
// 源 IP: 第4参 > HOSTDEMO_SRC env > 自动探测 (UDP connect 本地地址) > 0.0.0.0。
|
||||||
|
// 旧台架固定 192.168.123.113 (真机 .1 的 AECH 固件过滤); 仿真端不过滤, 自动探测即可
|
||||||
let ip = std::env::args().nth(2).unwrap_or_else(|| "192.168.123.1".into());
|
let ip = std::env::args().nth(2).unwrap_or_else(|| "192.168.123.1".into());
|
||||||
let secs: u64 = std::env::args().nth(3).and_then(|s| s.parse().ok()).unwrap_or(30);
|
let secs: u64 = std::env::args().nth(3).and_then(|s| s.parse().ok()).unwrap_or(30);
|
||||||
hostdemo::run(&ip, "192.168.123.113", secs);
|
let bind_ip = std::env::args().nth(4)
|
||||||
|
.or_else(|| std::env::var("HOSTDEMO_SRC").ok())
|
||||||
|
.unwrap_or_else(|| {
|
||||||
|
if let Ok(s) = std::net::UdpSocket::bind("0.0.0.0:0") {
|
||||||
|
if s.connect(format!("{}:31772", ip)).is_ok() {
|
||||||
|
if let Ok(a) = s.local_addr() { return a.ip().to_string(); }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
"0.0.0.0".into()
|
||||||
|
});
|
||||||
|
hostdemo::run(&ip, &bind_ip, secs);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
"analyze" => {
|
"analyze" => {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user