Palm OS Programmer’s Companion Volume I/11-5 - project-enigma

Palm OS Programmer’s Companion Volume I/11-5

>> Site top >> Misc >> In my palm >> Palm開発ドキュメントの和訳 >> Palm OS Programmer’s Companion Volume I >> Palm OS Programmer’s Companion Volume I/11-5

最終更新日付:2014/01/01 00:00:00

← 4 節に戻る ↑11 章トップへ 6 節に進む →

11-5 ハードウェアとのやりとり

 

Palm OS は本当の意味では決して電源オフにはならないという点で従来のデスクトップシステムとは異なっています。電力は常に主要サブシステムに供給されており、オン/オフボタンはハンドヘルドの低電力モードの状態を切り替えるためのものに過ぎません。オン/オフボタンの押下による明らかな効果は LCD のオン/オフです。電源ボタンを押してハンドヘルドをオフにすると、LCD が消灯するためにデバイス全体の電源がオフになったように見えます。実際には、少量の電力しか消費しませんが、メモリシステムやリアルタイムクロック、割込み生成回路などは動き続けています。

このセクションでは Palm OS の電源管理について、以下のトピックを説明します。

 

Palm OS の電源モード

電力消費を最小限に抑えるために、オペレーティングシステムは3つの異なる操作モード —— スリープ(sleep)モード、休止(doze)モード、動作(running)モード —— を動的に切り替えます。システムマネージャはこれらの電源モードの切換えを制御し、電源管理の一部をコントロールするための API を提供します。

バッテリの持続時間を最大にするために、Palm ハンドヘルドのプロセッサは可能な限り動作モードに入りません。そのため、ハンドヘルドで生成される割込みはプロセッサを"ウェイクアップ"させることができなければなりません。プロセッサはシリアルポート、ハードボタン、クレードルのボタン、プログラマブルタイマー、メモリモジュールスロット、リアルタイムクロック、低電力検出器、ページャやモデムなどのその他内蔵周辺機器からの割込みを受け取ることができます。

 

アプリケーション開発者のためのガイドライン

通常、アプリケーションはいくつかのシンプルなガイドラインを除いて電源管理を気にする必要はありません。アプリケーションが EvtGetEvent をコールして次に処理すべきイベントをシステムに問い合わせる時、システムは処理すべきイベントが発生するまで自動的に休止モードに入ります。アプリケーションが EvtGetEvent を使用している限り、電源管理は自動的に行なわれます。ユーザー操作がないままオートオフのプリファレンスで設定されている時間が過ぎると、システムはアプリケーションが介在することなく自動的にスリープモードに入ります。

アプリケーションは独自の遅延ループを避けるべきです。そのかわり、SysTaskDelay を使用します。これは待ち時間の間システムを休止モードにすることでできるだけ電力を節約するものです。アプリケーションが周期的な処理を必要とする場合、EvtGetEvent にタイムアウト時間を与えることもできます。これはタイムアウトが発生した時点で処理すべきイベントがなくても強制的に休止モードからウェイクアップしてアプリケーションに復帰させます。このメカニズムを使用することでバッテリの持続時間を最大限にすることができます。

 

電源管理の関数

システムコールである SysSleep は、システムをただちにスリープモードに移行します。通常、システムはオートオフに設定された時間だけユーザー操作がなかった場合や、ユーザーが電源ボタンを押下した場合にスリープモードに移行します。

SysSetAutoOffTime 関数は、オートオフの設定値を変更します。この関数は通常、ブート時にシステムによって、あるいはプリファレンスアプリケーションによってのみ使用されます。プリファレンスアプリケーションはオートオフ時間に関するユーザープリファレンスをプリファレンスデータベースに保存し、システムはブート時にプリファレンスデータベースに保存されている値でオートオフ時間を設定します。オートオフ機能はタイムアウト時間に 0 を指定して SysSetAutoOffTime をコールすることで無効にできますが、これはバッテリを使い果たすことになります。

現在のバッテリレベルやその他の情報は、SysBatteryInfo 関数を通して取得することができます。この関数はバッテリに関する情報を返します。これには現在のバッテリ電圧(小数点第2位まで)、低電力警告の閾値、バッテリタイプ、外部電源に接続されているかどうか、などが含まれます。この関数はバッテリ警告の閾値やバッテリタイプを変更することもできます。

 

 

 

← 4 節に戻る ↑11 章トップへ 6 節に進む →

 

 


Copyright(C) 2005-2017 project-enigma.
Generated by CL-PREFAB.