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 &b[0x1A..0x1E] != b"Butl" { return None; }
|
||||
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];
|
||||
Some((d[0] == 0xAA, d))
|
||||
}
|
||||
|
|
|
|||
17
src/main.rs
17
src/main.rs
|
|
@ -170,11 +170,22 @@ fn main() {
|
|||
return;
|
||||
}
|
||||
"hostdemo" => {
|
||||
// hostdemo [目标IP] [秒] — 主机侧等效示例: 认领真机 + RDM 发现 + 加密 DMX 控制
|
||||
// 源 IP 固定 192.168.123.113 (真机 .1 的 AECH 固件过滤); 秒=0 只做认领+RDM 不发 DMX
|
||||
// hostdemo [目标IP] [秒] [源IP] — 主机侧等效示例: 认领真机 + 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 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;
|
||||
}
|
||||
"analyze" => {
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user