1.kernel側のドライバにBLN用のsysfsファイルを用意して基本はここで制御。
2.lights.*****.soをこのsysfsを呼び出すように変更したものに置き換える。
3.アプリでenable/disableの切り替えやblinkの設定などが行える。
今回はあくまでもテストで実装しているので、Marketにあるneldarさん作のBLN Appがそのまま使えるようにBLNのsysfsとlights.*****.soが準備できるかとうことろですね。
#blinkを試すには有料版買う必要があるか。。
まず、SC-02Cのliblightsですが、
/system/lib/hw/lights.SC-02C.soがそれです、まずこれをadbで抜き出してバックアップしておきます。
adb pull /system/lib/hw/lights.SC-02C.soちなみにこのファイルをstringsとかobjdumpでながめてみると、下記のようなsysfsを呼び出しているのがわかります。DDMSなどでログをながめているとlightsのライブラリのデバッグログが出てますが、下記のsysfsのうち/sys/class/leds以下のものは、そもそもS2には/sys/class/ledsのファイルエントリ自体が存在していないので、無意味な呼び出しになってます。有効なのはmelfas_touchkeyとpwm-backlightだけっぽいです。
strins lights.SC-02C.so ... .. . /sys/class/leds/jogball-backlight/brightness /sys/class/leds/red/brightness /sys/class/leds/green/brightness /sys/class/leds/blue/brightness /sys/class/leds/amber/brightness /sys/class/leds/red/device/grpfreq /sys/class/leds/red/device/grppwm /sys/class/leds/red/device/blink /sys/class/leds/amber/blink /sys/devices/virtual/misc/melfas_touchkey/brightness /sys/class/leds/keyboard-backlight/brightness /sys/class/backlight/pwm-backlight/brightness /sys/class/power_supply/battery/temp QCT MSM7K lights Module Google, Inc. ... .. .lightsをダンプしてみた結果とDDMSのログからわかるのは、このshared-libraryはmsm7kのもので、ほとんど手が加えられていなそうだということです。じっさいAndroidのソースをrepo syncしてmsm7k以下のliblights/lights.cを見ればだいたい推測できます(完全にカンですけどね)。ただ1点だけ、これがわからない。
/sys/class/power_supply/battery/tempバッテリの温度を読み取れるsysfsで、S2にも存在しているファイルなんですが、lightsからこれをreadする意味がわからない。既存のlights.cをいろいろあたってみてもTEMPERATURE_READを処理してるのは皆無。。lightsの役割を考えると、通知LEDがそもそも存在しないS2には必要なしと考えwこいつはサポートしない方向で。とはいえ時間に余裕ができたら、disassembleしてみますわ。
というわけで、msm7kのものをBLNのsysfsがコールできるように、それからneldarさんのBLN Appが認識可能なように手を入れる方針でいきます。
あーそれにしても、repo syncおわんね。
0 コメント:
コメントを投稿