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 模式時,寫入字元裝置的資料是整數值的脈衝/間隔序列。脈衝和間隔僅透過它們的位置隱式標記。資料必須以脈衝開始和結束,因此,資料必須始終包含奇數個樣本。write 函式會阻塞,直到硬體傳輸資料。如果提供的資料超過硬體可以傳送的資料,則驅動程式返回 EINVAL。
當處於 LIRC_MODE_SCANCODE 模式時,必須一次向字元裝置寫入一個 struct lirc_scancode,否則返回 EINVAL。在 scancode 成員中設定所需的掃描碼,並在 rc_proto:成員中設定 IR 協議。所有其他成員必須設定為 0,否則返回 EINVAL。如果協議沒有協議編碼器,或者掃描碼對於指定的協議無效,則返回 EINVAL。write 函式會阻塞,直到硬體傳輸掃描碼。
6.5.2.5. 返回值¶
成功時,返回寫入的位元組數。如果此數字小於請求的位元組數,或者一個幀所需的資料量,則不是錯誤。如果發生錯誤,則返回 -1,並且會適當地設定 errno 變數。通用錯誤程式碼在 通用錯誤程式碼 章節中描述。