1.环境:RK3588 HDMI RX <==== 播放设备 playback
主要解析收发流程链路
2.收数据
04-18 17:34:07.710 419 488 D hdmicec : poll receive msg
04-18 17:34:07.710 419 488 D hdmicec : poll receive msg[0]:40
04-18 17:34:07.710 419 488 D hdmicec : poll receive msg[1]:44
04-18 17:34:07.710 419 488 D hdmicec : poll receive msg[2]:41
04-18 17:34:07.820 419 488 D hdmicec : poll receive msg
04-18 17:34:07.820 419 488 D hdmicec : poll receive msg[0]:40
04-18 17:34:07.820 419 488 D hdmicec : poll receive msg[1]:45
kernel/drivers/media/cec/cec-adap.c
cec_received_msg_ts
cec_receive
hardware\rockchip\hdmicec\hdmicec_event.cpp
static void *uevent_loop(void *param) ret = ioctl(pfd[0].fd, CEC_RECEIVE, &cecframe);
ctx->event_callback(&cec_event, ctx->cec_arg);
hardware\interfaces\tv\cec\1.0\default\HdmiCec.h
eventCallback
mCallback->onCecMessage(cecMessage);
frameworks/base/services/core/java/com/android/server/hdmi/HdmiCecController.java
onCecMessage
handleIncomingCecCommand
onReceiveCommand
frameworks\base\services\core\java\com\android\server\hdmi\HdmiControlService.java
handleCecCommand
dispatchMessageToLocalDevice
dispatchMessage
frameworks\base\services\core\java\com\android\server\hdmi\HdmiCecLocalDevice.java
onMessage
handleUserControlPressed
injectKeyEvent
3.发数据
04-18 17:49:10.862 419 419 I hdmicec : send msg LEN:3,opcode:44,addr:04, keycode:02
frameworks\base\services\core\java\com\android\server\hdmi\SendKeyAction.java
void sendKeyDown(int keycode)sendCommand
frameworks\base\services\core\java\com\android\server\hdmi\HdmiCecController.java
sendCommand
nativeSendCecCommand
mHdmiCec.sendMessage(message);
hardware\interfaces\tv\cec\1.0\default\HdmiCec.cpp
Return<SendMessageResult> HdmiCec::sendMessage(const CecMessage& message)
mDevice->send_message
hardware\rockchip\hdmicec\hdmi_cec.cpp
hdmi_cec_send_message
ioctl(ctx->fd, CEC_TRANSMIT, &cecframe);
kernel-5.10\drivers\media\cec\core\cec-api.c
cec_transmit
cec_transmit_msg_fh
4. debug节点解析
cat /d/cec/cec0/status
configured: 1
configuring: 0
phys_addr: 0.0.0.0
number of LAs: 1
LA mask: 0x0001
has CEC follower (in passthrough mode)
pending transmits: 0
LA mask: 0x0001
1往右移0位,说明本机logic addr 是0
5.opcode解析