Set and Get IBI event¶
User can get IBI event by a self-defined event function.
For instance,
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([]) # reset all 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)
# target send IBI
i3c_target.ibi_request(
mdb_value=b"\xAA",
additional_data=b"\x10\x30\x50"
)
time.sleep(1) # Wait for the IBI request to be received and printed