HDMI CEC 流程解析

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解析

HDMI CEC 解析opcode操作码-CSDN博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值