跳转至

设置与获取 IBI 事件

用户可用自定义事件函数获取 IBI 事件。

例如:

import time
from aqpxlib import AqProtocolExerciser
from aqpxlib.i3c import (
    ACUTE_DEFAULT_PID,
    PxI3CBus,
    PxI3CBaseController,
    PxI3C32BitRegisterTarget,
)
from aqpxlib.exceptions import PxAPIError


with AqProtocolExerciser.connect(host="localhost", port=60600) as exerciser_session:
    exerciser_session.set_handles([]) # 重置所有句柄
    i3c_bus = PxI3CBus(exerciser_session, scl=0, sda=1)

    i3c_controller = PxI3CBaseController(exerciser_session)
    i3c_controller.attach_to_bus(i3c_bus)

    i3c_target = PxI3C32BitRegisterTarget(exerciser_session, static_addr=0x12, bcr=0x06)
    i3c_target.attach_to_bus(i3c_bus)

    i3c_controller.init_bus()

    def event_handler(event):
        print(event)

    i3c_controller.add_event_handler("i3_c_controller_recv_ibi_data", event_handler)

    # 目标器件发送 IBI
    i3c_target.ibi_request(
        mdb_value=b"\xAA",
        additional_data=b"\x10\x30\x50"
    )
    time.sleep(1) # 等待 IBI 请求被接收并打印