硬件代理访问控制方法说明
更新时间: 2025/10/15
在Gitcode上查看源码

硬件代理访问控制方法说明

1. 功能概述

硬件代理提供对硬件设备及链路的访问控制能力,支持在特定场景(如器件升级、维护等)下临时禁止或恢复访问,避免因不稳定状态导致的错误(如脏数据读取、操作失败等)。

2. 器件访问控制

2.1 接口定义

方法名SetAccessibility
路径/bmc/kepler/Chip/设备类型/设备实例
参数

  • Status(布尔型):
    • true:启用器件访问(DisableDuration无效)
    • false:禁用器件访问(需配合DisableDuration指定禁用时长)
  • DisableDuration(整型,单位:秒):
    • 取值范围:1 ≤ DisableDuration ≤ 1800,超出范围时返回错误
    • 仅在Status=false时生效,禁用时间结束后自动恢复访问

2.2 操作逻辑

  • 禁用访问
    • 禁用期间阻断所有操作(扫描、块读、块写、比特读、比特写)
    • 可通过再次调用SetAccessibility(Status=true)提前恢复
  • 自动恢复:禁用时长结束后,器件访问状态自动重置为启用

2.3 使用示例

bash
# 启用器件访问
busctl --user call bmc.kepler.hwproxy /bmc/kepler/Chip/Eeprom/Eeprom_3_10_01 bmc.kepler.Chip SetAccessibility a{ss}bq 0 true 1

# 禁用器件访问(持续60秒)
busctl --user call bmc.kepler.hwproxy /bmc/kepler/Chip/Eeprom/Eeprom_3_10_01 bmc.kepler.Chip SetAccessibility a{ss}bq 0 false 60

3. 链路(总线)访问控制

3.1 接口定义

方法名SetAccessibility
路径/bmc/kepler/Bus/总线类型/总线实例
参数

  • Status(布尔型):
    • true:启用链路访问
    • false:禁用链路访问(需配合DisableDuration指定禁用时长)
  • DisableDuration(整型,单位:秒):
    • 同器件访问控制参数规则(范围1-1800s

3.2 关键特性

  • 状态优先级
    • 链路被禁用时,无法对所属链路下的器件进行访问状态设置
  • 超时恢复
    • 禁用时间结束后自动恢复访问
    • 可通过AccessEnabled接口查询当前链路状态
    • Timeout参数显示剩余恢复时间(每10秒刷新一次)

3.3 使用示例

bash
# 禁用I2C总线访问(持续30秒)
busctl --user call bmc.kepler.hwproxy /bmc/kepler/Bus/I2c/I2c_1 bmc.kepler.Bus SetAccessibility a{ss}bq 0 false 30

# 恢复I2C总线访问
busctl --user call bmc.kepler.hwproxy /bmc/kepler/Bus/I2c/I2c_1 bmc.kepler.Bus SetAccessibility a{ss}bq 0 true 1

4. 注意事项

  1. 参数校验
    • DisableDuration超出1-1800s范围时,接口返回错误
  2. 状态冲突
    • 链路被禁用时,其下所有器件的访问控制接口不可调用
  3. 超时机制
    • 禁用时间结束后,系统自动解除限制,无需额外操作
  4. 命令格式
    • busctl命令中的a{ss}bq为固定参数类型声明,需保留不变

提示:建议通过链路级控制覆盖器件级配置,以实现更高优先级的访问限制。