2.9. ioctl CEC_DQEVENT¶
2.9.1. 名称¶
CEC_DQEVENT - 出队一个 CEC 事件
2.9.2. 概要¶
-
CEC_DQEVENT¶
int ioctl(int fd, CEC_DQEVENT, struct cec_event *argp)
2.9.3. 参数¶
fd
由
open()
返回的文件描述符。
argp
2.9.4. 描述¶
CEC 设备可以发送异步事件。这些可以通过调用 CEC_DQEVENT()
来检索。如果文件描述符处于非阻塞模式并且没有待处理的事件,那么它将返回 -1 并将 errno 设置为 EAGAIN
错误代码。
内部事件队列是每个文件句柄和每个事件类型的。如果队列中没有更多空间,那么最后一个事件将被新事件覆盖。这意味着中间结果可能会被丢弃,但是最新的事件始终可用。这也意味着可以读取两个具有相同值的连续事件(例如,两个具有相同状态的 CEC_EVENT_STATE_CHANGE 事件)。在这种情况下,中间状态更改会丢失,但可以保证状态在两个事件之间确实发生了更改。
-
type cec_event_state_change¶
__u16 |
|
当前物理地址。如果未设置有效的物理地址,则为 |
__u16 |
|
当前声明的逻辑地址集。如果未声明逻辑地址,或者 |
__u16 |
|
如果非零,则 HDMI 连接器信息可用。仅当设置了 |
-
type cec_event_lost_msgs¶
__u32 |
|
设置为自文件句柄打开以来或自上次为此文件句柄出队此事件以来丢失的消息数。丢失的消息是最旧的消息。因此,当新消息到达并且没有更多空间时,将丢弃最旧的消息以为新消息腾出空间。消息队列的内部大小保证最近两秒内接收到的所有消息都将被存储。由于根据 CEC 规范,消息应在一秒钟内回复,因此这绰绰有余。 |
-
type cec_event¶
__u64 |
|
事件的时间戳,单位为纳秒。 时间戳取自 要从用户空间访问同一时钟,请使用 |
__u32 |
|
CEC 事件类型,请参阅 CEC 事件类型。 |
__u32 |
|
事件标志,请参阅 CEC 事件标志。 |
union { |
(匿名) |
|
|
由 CEC_EVENT_STATE_CHANGE 事件发送的新适配器状态。 |
|
|
由 CEC_EVENT_LOST_MSGS 事件发送的丢失消息数。 |
|
} |
|
1 |
当 CEC 适配器的状态更改时生成。当调用 |
|
2 |
如果由于应用程序没有足够快地出队 CEC 消息而丢失了一条或多条 CEC 消息,则生成此事件。 |
|
3 |
如果 CEC 引脚从高电压变为低电压,则生成此事件。仅适用于设置了 |
|
4 |
如果 CEC 引脚从低电压变为高电压,则生成此事件。仅适用于设置了 |
|
5 |
如果 HPD 引脚从高电压变为低电压,则生成此事件。仅适用于设置了 |
|
6 |
如果 HPD 引脚从低电压变为高电压,则生成此事件。仅适用于设置了 |
|
6 |
如果 5V 引脚从高电压变为低电压,则生成此事件。仅适用于设置了 |
|
7 |
如果 5V 引脚从低电压变为高电压,则生成此事件。仅适用于设置了 |
|
1 |
为打开设备时生成的初始事件设置。请参阅上表了解哪些事件执行此操作。这允许应用程序在 |
|
2 |
如果已丢弃给定事件类型的一个或多个事件,则设置此标志。这表明应用程序无法跟上。 |
2.9.5. 返回值¶
成功时返回 0,错误时返回 -1,并会相应地设置 errno
变量。通用错误代码在 通用错误代码 章节中描述。
ioctl CEC_DQEVENT 可以返回以下错误代码
- EAGAIN
当文件句柄处于非阻塞模式且没有待处理的事件时返回此错误。
- ERESTARTSYS
当处于阻塞模式等待事件到达时,接收到了中断(例如 Ctrl-C)。