6.5.2. LIRC write()¶
6.5.2.1. 名称¶
lirc-write - 写入LIRC设备
6.5.2.2. 概要¶
#include <unistd.h>
-
ssize_t write(int fd, void *buf, size_t count)¶
6.5.2.3. 参数¶
fd
由
open()
返回的文件描述符。buf
包含要写入的数据的缓冲区
count
缓冲区中的字节数
6.5.2.4. 描述¶
write()
从 buf
开始的缓冲区,向文件描述符 fd
引用的设备写入最多 count
个字节。
数据的确切格式取决于驱动程序所处的模式,使用 ioctl LIRC_GET_FEATURES 获取支持的模式,并使用 ioctls LIRC_GET_SEND_MODE 和 LIRC_SET_SEND_MODE 设置模式。
当处于 LIRC_MODE_PULSE 模式时,写入字符设备的数据是整数值的脉冲/间隔序列。脉冲和间隔仅通过它们的位置隐式标记。数据必须以脉冲开始和结束,因此,数据必须始终包含奇数个样本。写入函数会阻塞,直到数据被硬件传输。如果提供的数据量超过硬件可以发送的数据量,则驱动程序返回 EINVAL
。
当处于 LIRC_MODE_SCANCODE 模式时,必须一次将一个 struct lirc_scancode
写入字符设备,否则会返回 EINVAL
。在 scancode
成员中设置所需的扫描码,并在 rc_proto
成员中设置 IR协议。所有其他成员必须设置为0,否则返回 EINVAL
。如果协议没有协议编码器,或者扫描码对于指定的协议无效,则返回 EINVAL
。写入函数会阻塞,直到扫描码被硬件传输。
6.5.2.5. 返回值¶
成功时,返回写入的字节数。如果此数字小于请求的字节数,或者小于一个帧所需的数据量,则不是错误。发生错误时,返回 -1,并适当地设置 errno
变量。通用错误代码在 通用错误代码 章节中描述。