[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: battery and PIU's A/D output



> NetBSDでサスペンドしているとき,ACアダプタをつないでもチャージ分より
> 消費する分が大きくて充電されてないような感じです.
やっぱり PCMCIAとか電気入りっぱなしだとつらいですかね。
ほかにもリークがあるのかなぁ。電気きれるところで切り忘れないかな。
hybernateが戻りがresetのためつかいものにならないのもつらい。

そういえば、充電池は純正のバッテリーではなく、一般の充電池ですよね?
単三電池系であるか、純正バッテリーかはセンサーあるようで、
一般の充電池をいれても充電されなで放電されていくようなんですが、
電池に細工してあるんですか?

> MG2 DoCoMoだと
>   ch 0: 一次電池(乾電池,充電池)
>   ch 1: 二次電池(CR2032)
>   ch 2: 不明
> となっているようです.
> 
> 場合ごとのA/D値を挙げておきます.
> ゆらぎがあるのでおおよその平均です.値は10進数.
>   充電池 ... 1.2V, 1550mAh (メーカ 東芝) x 2本
>   乾電池 ... 1.5V,アルカリ(メーカ デュラセル) x 2本
>   2次電池 .. 3V, CR2032
> また,ACアダプタを付けている/いない によってもA/D値が変わってくる
> ようなので,いずれもACアダプタを外した状態の値を採っています.
ACアダプタ接続状態での値もほしいですね..(理由は最後に)

> いきなりapmdevに電圧を見て自動的にサスペンドする仕組みを入れたり
> するのはしんどそうなので,せめてPIUのA/D値をuserlandで参照できれば
> もう少しで電池切れそうだな,シャットダウンさせなきゃ,ぐらいは
> 分かると思うのですが,どうやったらいいものでしょう.
> PIUに対してioctlとか作っちゃっていいんでしょうか? あるいはapmdev
> を経由してというのがふさわしいんでしょうか?
i386とかとの動作の共通性からいうと、apmdevのuserland interfaceをちゃんとして、
apmdとかちゃんと移植してあげるのがいいかと。ここらへん手付かず。
あとはデバイスから
	config_hook(CONFIG_HOOK_PMEVENT, CONFIG_HOOK_PMEVENT_BATTERY,
		   CONFIG_HOOK_BATT_LOW);
などなどイベントを発生すればapmっぽくうごくようになっています。
また、suspendさせたいだけなら
	config_hook(CONFIG_HOOK_PMEVENT, CONFIG_HOOK_PMEVENT_SUSPENDREQ,0);
だせばよいです。
くわしくはhpcapm.cのhpcapm_hook()あたりをみてください。
adhocには危ない値がわかっていれば適当にpiuにでも埋め込めばよいでしょう。
mgl2もapm interfaceでやってるんだろうとおもうので、以上のことをやってから
mgl2のNetBSD/hpcmips対応コードをかくことになるとおもいます。

実は、電圧値を集計して、platformごとにtableを引きながら
この手のイベントをつくる部分は作りかけではあるのですが、
未完。データもMC/R530, z50しかないし。
なかなかcommitできるようにならない。

sato