LED 瞬態觸發¶
leds 定時器觸發器當前沒有啟用一次性定時器的介面。 目前的支援允許設定兩個定時器,一個用於指定狀態保持開啟的時間,另一個用於指定狀態保持關閉的時間。 delay_on 值指定 LED 應保持在開啟狀態的時間段,然後是 delay_off 值,指定 LED 應保持在關閉狀態的時間段。 開啟和關閉週期重複,直到觸發器被停用。 沒有一次性啟用的規定來實現需要保持一次開啟或關閉狀態然後永遠保持在原始狀態的功能。
如果沒有一次性定時器介面,使用者空間仍然可以使用定時器觸發器來設定定時器以保持狀態,但是當用戶空間應用程式崩潰或消失而沒有停用定時器時,硬體將永久保持在該狀態。
瞬態觸發解決了對一次性定時器啟用的需求。 可以像其他 leds 觸發器一樣啟用和停用瞬態觸發器。
當 led 類裝置驅動程式註冊自身時,它可以指定其支援的所有 leds 觸發器和預設觸發器。 在註冊期間,將呼叫預設觸發器的啟用例程。 在註冊 led 類裝置期間,LED 狀態不會改變。
當驅動程式登出時,將呼叫當前活動觸發器的停用例程,並且 LED 狀態將更改為 LED_OFF。
驅動程式掛起將 LED 狀態更改為 LED_OFF,恢復不會更改狀態。 請注意,掛起和恢復操作與當前啟用的觸發器之間沒有明確的互動。 當驅動程式處於掛起狀態時,LED 狀態更改將被掛起。 在驅動程式掛起時處於活動狀態的任何定時器將繼續執行,但無法實際更改 LED 狀態。 驅動程式恢復後,觸發器將再次開始工作。
LED 狀態更改使用亮度控制,亮度是常見的 led 類裝置屬性。 當從使用者空間透過 echo 0 > brightness 將亮度設定為 0 時,將導致停用當前觸發器。
瞬態觸發使用標準註冊和登出介面。 在觸發器註冊期間,對於每個指定此觸發器作為其預設觸發器的 led 類裝置,將呼叫觸發器啟用例程。 在註冊期間,LED 狀態不會改變,除非有另一個觸發器處於活動狀態,在這種情況下,LED 狀態將更改為 LED_OFF。
在觸發器登出期間,LED 狀態將更改為 LED_OFF。
瞬態觸發啟用例程不會改變 LED 狀態。 它建立其屬性並執行其初始化。 瞬態觸發停用例程將取消在清理和刪除其建立的屬性之前的任何活動定時器。 它會將 LED 狀態恢復為非瞬態狀態。 當驅動程式被掛起時,無論瞬態狀態如何,LED 狀態都會變為 LED_OFF。
可以從使用者空間在支援此觸發器的 led 類裝置上啟用和停用瞬態觸發器,如下所示
echo transient > trigger
echo none > trigger
- 注意
新增一個新的屬性 trigger state 來控制狀態。
此觸發器匯出三個屬性:activate、state 和 duration。 當啟用瞬態觸發器時,這些屬性設定為預設值。
duration 允許以毫秒為單位設定定時器值。 初始值為 0。
activate 允許根據需要啟用和停用由 duration 指定的定時器。 初始值和預設值為 0。 這將允許在觸發器啟用後設置 duration。
state 允許使用者指定要保持指定持續時間的瞬態狀態。
- activate
一次性定時器啟用機制。 啟用時為 1,停用時為 0。 啟用瞬態觸發器時,預設值為零,以允許設定 duration。
activate 狀態表示具有指定 duration 值的定時器正在執行。 停用狀態表示沒有活動的定時器正在執行。
- duration
一次性定時器值。 設定 activate 時,duration 值用於啟動執行一次的定時器。 除非使用者透過 echo new_value > duration 進行設定,否則觸發器不會更改此值
- state
要保持的瞬態狀態。 它有兩個值 0 或 1。 0 對映到 LED_OFF,1 對映到 LED_FULL。 指定的狀態保持一次性定時器的持續時間,然後狀態更改為非瞬態狀態,即瞬態狀態的逆狀態。 如果 state = LED_FULL,當定時器耗盡時,狀態將返回到 LED_OFF。 如果 state = LED_OFF,當定時器耗盡時,狀態將返回到 LED_FULL。 請注意,在將狀態更改為指定狀態之前,不會檢查當前的 LED 狀態。 驅動程式可以根據其在 brightness_set() 介面中為 LED 定義的預設狀態將這些值對映為反轉,該介面從 led brightness_set() 介面呼叫以控制 LED 狀態。
當定時器到期時,activate 返回到停用狀態,duration 保持在設定的值,以便在將來設定 activate 時使用。 這將允許使用者應用程式設定一次時間,並根據需要啟用它以執行指定值一次。 當定時器到期時,狀態將恢復為非瞬態狀態,即瞬態狀態的逆狀態
echo 1 > activate
啟動定時器 = duration,當 duration 不為 0 時。
echo 0 > activate
取消當前正在執行的定時器。
echo n > duration
儲存定時器值,以便在下次啟用時使用。 當前活動的定時器(如果有)將繼續執行指定的時間。
echo 0 > duration
儲存定時器值,以便在下次啟用時使用。 當前活動的定時器(如果有)將繼續執行指定的時間。
echo 1 > state
儲存所需的瞬態狀態 LED_FULL,以便保持指定的持續時間。
echo 0 > state
儲存所需的瞬態狀態 LED_OFF,以便保持指定的持續時間。
不支援什麼¶
定時器啟用是一次性的,不支援擴充套件和/或縮短定時器。
示例¶
用例 1
echo transient > trigger
echo n > duration
echo 1 > state
根據需要重複以下步驟
echo 1 > activate - start timer = duration to run once
echo 1 > activate - start timer = duration to run once
echo none > trigger
此觸發器旨在用於以下示例用例
使用者空間應用程式使用 LED 作為活動指示器。
使用者空間應用程式使用 LED 作為一種看門狗指示器 - 只要應用程式處於活動狀態,它就可以保持 LED 點亮,如果它死亡,LED 將自動熄滅。
任何需要瞬態 GPIO 輸出的使用者空間應用程式使用。