/sys/class/timed_output/vibrator
読み:スラ-シス-スラ-クラス-スラ-タイムドアウトプット-バイブレーター
外語:/sys/class/timed_output/vibrator
Linux、特にAndroidのsysfsで、バイブレーターに関するデバイスファイルやシンボリックリンクが配置されることが多いディレクトリ。
概要
時間指定するデバイスのうち、特にバイブレーターの制御に用いられるディレクトリである。
但し、機種によってはバイブが搭載されていてもこのディレクトリを用いていないこともある。全てはメーカーの設計方針次第である。
操作
バイブレーターを稼動させるには、このディレクトリ下にあるenableプロパティに対してミリ秒単位で時間をwriteすればよい。
例えば500を書き込めば、500ミリ秒つまり0.5秒間稼動し、自動で止まる。
echo 500 > /sys/class/timed_output/vibrator/enable
また、稼働中に残時間を参照することもできる。
cat /sys/class/timed_output/vibrator/enable
ioctlなどの面倒なものを使わなくても簡単に制御できるのがsysfsの特徴である。
特徴
パラメーター
多くの場合、少なくとも次のようなパラメーターがあるだろう。
- enable
- power/autosuspend_delay_ms
- power/control
- power/runtime_active_time
- power/runtime_status
- power/runtime_suspended_time
- uevent
追加
timed_outputデバイスは、enableに時間を書き込むだけで動作できる、シンプルなデバイスが登録される。しかし時には、振動の強さ、振動の周波数といったパラメーターを追加したい場合もある。このような場合は、device_create_file()関数などを使用して追加できる。
例えばprobe処理内で実施するならば、次の手順である。
- timed_output_dev_register()を実行して標準的な /sys/class/timed_output/vibrator 以下をsysfsに登録
- この関数実行後はstruct timed_output_devのstruct device *devに値が入る
- この dev.dev を device_create_file()の第一引数に使用して任意のパラメーターを登録
もし、周波数を設定する /sys/class/timed_output/vibrator/freq を追加したいならば、次のようにする。
まず、定義を用意する。
static DEVICE_ATTR(freq, S_IRUGO | S_IWUSR, freq_show, freq_store);
ここで指定する、readおよびwrite処理の関数であるfreq_show/freq_storeも別途用意する。こうして、次のようにする(timed_output_dev_registerを呼んだ時の構造体をdevとする)。
ret = device_create_file(dev.dev, &dev_attr_freq);
これで、vibratorディレクトリ以下にfreqが追加される。
再検索