Skip to main content

Module zeroing_token

Module zeroing_token 

Source
Expand description

关节归零确认令牌

安全机制:关节归零是危险操作,可能导致机械臂撞击限位或损坏设备。 因此引入确认令牌机制,强制用户明确确认此操作。

§三种构造方式

  1. confirm_from_env()(推荐用于 CLI 应用)

    • 从环境变量 PIPER_ZEROING_CONFIRM 读取确认
    • 值必须是 “I_CONFIRM_ZEROING_IS_DANGEROUS”
    • 推荐用于生产环境
  2. unsafe fn new_unchecked()(供 GUI 应用使用)

    • 不检查任何条件,直接创建令牌
    • 用户必须在 UI 中已经确认
    • 安全性由 GUI 应用层保证
  3. confirm_for_test()(仅测试可用)

    • 仅在 cfg(test) 下可用
    • 用于单元测试和集成测试

§使用示例

§CLI 应用

use piper_client::control::ZeroingConfirmToken;

// 用户需要在命令行明确确认:
// export PIPER_ZEROING_CONFIRM=I_CONFIRM_ZEROING_IS_DANGEROUS
let token = ZeroingConfirmToken::confirm_from_env()?;

§GUI 应用

use piper_client::control::ZeroingConfirmToken;
use std::io;

fn main() -> Result<(), Box<dyn std::error::Error>> {
    // 显示确认对话框,用户点击"我确认"
    if show_confirmation_dialog() {
        // ⚠️ 用户已在 UI 中确认,这里使用 unsafe 跳过检查
        let token = unsafe { ZeroingConfirmToken::new_unchecked() };
    } else {
        return Err(Box::new(io::Error::new(
            io::ErrorKind::Other,
            "User cancelled"
        )) as Box<dyn std::error::Error>);
    }
    Ok(())
}

§测试代码

use piper_client::control::ZeroingConfirmToken;

#[test]
fn test_zeroing() {
    let token = ZeroingConfirmToken::confirm_for_test();
    // 执行归零操作...
}

Structs§

ZeroingConfirmToken
关节归零确认令牌(Zero-token 类型模式)

Enums§

ZeroingTokenError
ZeroingToken 错误