src.model.validators 源代码

"""设备验证模块。

本模块提供设备地址验证功能。
"""

from .types.dlt645_type import CtrlCode, PASSWORD_LEN


[文档] def validate_device(address: bytearray, ctrl_code: CtrlCode, addr: bytes) -> bool: """验证设备地址是否匹配。 以下情况验证通过: 1. 读/写通讯地址命令的响应帧(控制码带 0x80 应答标志) 2. 广播地址(0xAA AA AA AA AA AA) 3. 广播校时地址(0x99 99 99 99 99 99) 4. 地址与预期地址完全匹配 :param address: 预期的设备地址(6字节)。 :type address: bytearray :param ctrl_code: 帧的控制码。 :type ctrl_code: CtrlCode :param addr: 帧中的实际地址(6字节)。 :type addr: bytes :return: 验证通过返回 True,否则返回 False。 :rtype: bool """ if ( ctrl_code == CtrlCode.ReadAddress | 0x80 or ctrl_code == CtrlCode.WriteAddress | 0x80 ): # 读通讯地址命令 return True # 广播地址和广播时间同步地址 if addr == bytearray([0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA]) or addr == bytearray( [0x99, 0x99, 0x99, 0x99, 0x99, 0x99] ): return True return address == addr