|
Technote 1099
Power Management & PC Card Manager 3.0
PowerBook の節電
(スリープ/スリープ解除) と PC Card Manager 3.0
PowerBook では、バッテリーの寿命を伸ばすためにスリープ状態がサポートされています。PC
カードはかなりの電力を消費するため (もちろん比較的という話ですが)、PC Card Manager
3.0 は Mac OS と協調して動作し、コンピュータがスリープ状態に入るときに PC カードの電源をオフにします。その結果、PC
カードドライバとカードイネーブラのデベロッパにはある種のチャンスと責任が発生することになります。
PC Card Manager 3.0 の働き
PowerBook がスリープ状態に入るとき
- PC Card Manager 3.0 はクライアントに通知します (
kPCCardPMSuspendMessage
を使って)。
- PC Card Manager 3.0 はカードのジェネリックな状態 (設定レジスタ、ウインドウマッピングなど)
を保存します。
- PC Card Manager 3.0 はソケットへの電力の供給をオフにします。
PowerBook のスリープ状態を解除するとき
- PC Card Manager 3.0 はソケットへの電力の供給をオンにします。
- PC Card Manager 3.0 はカードのジェネリックな状態を元に戻します。
- PC Card Manager 3.0 は
kPCCardPMResumeMessage による通知をクライアントに送信します。
PowerBook がアイドル状態にあるとき
- “PowerBook”コントロールパネルの設定により、一定の時間が経過すると、Mac OS はスリープリクエストを発行して、マシンをスリープ状態にしても安全かどうか判断します。
- PC Card Manager 3.0 はこのリクエストを受け取って、すべてのクライアントに
kPCCardPMSuspendRequest
通知を送信します。
- 任意のクライアントがスリープ状態に入ることに難色を示す場合 (たとえば、ネットワーク接続を中断する場合など)、そのコールバック関数から
noErr 以外の値を返すことになります。
- 誰も (PC カードクライアントまたは非クライアントが) このスリープリクエストに反対しない場合、マシンはスリープ状態に入り、PC
カードクライアントは
kPCCardPMSuspendMessage を受け取ります。
- スリープを要求する呼び出しが発行されるとき、PC カードはこの呼び出しを拒絶することはできません。ただしこれは、システムがスリープ状態に入ることをカードに通知するだけで、スリープを要求するものではありません。詳細については、『Inside
Macintosh:Devices』の「Power
Manager」の章を参照してください。
カードのデベロッパに要求されること
デバイス固有のダイナミックデータの保存
- 電力の供給がオフになると失われてしまうデータをカード上に保持する PC カードデバイスに対応するドライバを開発する場合は、そのデータの保存と復元を行う必要があります。
- このようなデータの保存と復元はデバイスドライバまたはカスタムカードイネーブラの中で行うことができます。
- このデータをデバイスドライバの中で保存したい場合は、
- ドライバをカードサービスクライアントとして登録します。
kPCCardPMSuspendMessage を受け取るとき、デバイス固有のデータを保存します。
kPCCardPMResumeMessage を受け取るとき、デバイス固有のデータを復元します。
- このデータをカスタムカードイネーブラの中で保存したい場合は (多機能カードの場合はこれが最善の選択です)、
setPCCardPowerLevel をオーバーライドします。
- カード上にあるデバイス固有のデータを保存します。
CEPowerManagement を呼び出します。
- スリープ状態を解除するとき、
CEPowerManagement を呼び出します。
- デバイス固有のデータをカード上に復元します。
低電力モードのインプリメント
- Apple では、PC Card Manager に 3 つの状態 (
kPCCardPowerOn、kPCCardPowerOff、および
kPCCardLowPower) を定義しています。
- PC Card Manager 3.0 では、On と Off のみがサポートされています (Low は On であると見なされます)。
- カードが低電力モードをサポートする場合、低電力モードへの移行をサポートするカスタムカードイネーブラが必要になります。これを行うためには
setPCCardPowerLevel をオーバーライドする必要があります。
- 注意: Apple では PC Card Manager の将来のバージョンで、
PCCardSetPowerLevel
という名前の関数をインプリメントする予定です。この関数はドライバによって呼び出され、低電力の
On/Off を切り替えることができるようになるはずです。これによりドライバとバッテリとの関係がより良好なものになります。
参考文献
|