Files
gobot/i2c-hub/uart-adapter/src/uart_interface/pares_packages.py
2025-01-12 00:16:00 +01:00

38 lines
1.2 KiB (Stored with Git LFS)
Python

from uart_interface import CI_Package, CI_ParserError, CI_ParserErrorTooFewBytes
from uart_interface import GobotRPC_Ctrl_Interface_Command as CMDS
from uart_interface.ci_packages import CI_TX_Package, \
CI_HEARTBEAT_Package, CI_RX_Package, CI_ERROR_TRANMISSION_Package, \
CI_SUCESS_TRANSMISSION_Package, CI_INFO_RESET_Package
import enum
def ci_package_from_bytes(data: bytes) -> CI_Package:
if len(data) < 1:
raise CI_ParserErrorTooFewBytes(data)
try:
cmd = CMDS(data[0])
except ValueError:
raise CI_ParserError(f"Invalid Command {data[0]:02x}", data)
match cmd:
case CMDS.TX_PACKAGE:
package = CI_TX_Package()
case CMDS.RX_PACKAGE:
package = CI_RX_Package()
case CMDS.HEARTBEAT:
package = CI_HEARTBEAT_Package()
case CMDS.ERROR_TRANMISSION:
package = CI_ERROR_TRANMISSION_Package()
case CMDS.SUCESS_TRANMISSION:
package = CI_SUCESS_TRANSMISSION_Package()
case CMDS.INFO_RESET:
package = CI_INFO_RESET_Package()
case _:
raise ValueError(f"Invalid Command {data[0]}")
package.from_bytes(data)
return package