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 { |
(anonymous) |
|
|
由 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)。