#include <twl/spi.h>
u32 PM_GetACAdapter( BOOL *isConnectedBuf );
| isConnectedBuf | ACアダプタで電源が供給されているかどうかを格納する領域 |
PM_RESULT_SUCCESS ならば、コマンドの実行が成功したことを表します。
PM_RESULT_BUSY ならば、SPI が他の処理に占有されており処理できなかったことを示します。
PM_RESULT_ERROR ならば、この関数が使用できないことを示します。これは、NITRO モードで動作中に呼ばれたことを示します。それ以外で返ることはありません。
成功した場合、isConnectedBuf で示されるアドレスに、ACアダプタがDCコネクタに接続されていて通電状態かどうかを格納します。この値は BOOL 値で、TRUE ならば接続されていることを表し、FALSE ならば接続されていないことを表します。
ACアダプタがDCコネクタに接続されて通電状態かどうかを調べます。
isConnectedBuf は BOOL 型へのポインタで、ここに結果が格納されます。この値が TRUE ならばACアダプタが接続されて通電されている状態であることを表しますが、接続されて通電されていることを知ることが出来るだけで現在充電しているかどうかを知ることは出来ません。接続されていてもすでに満充電で充電されていない場合も TRUE となります。また、本体にACアダプタが接続されているが、それが通電状態でない(コンセントに差し込まれていない)
場合は FALSE となります。
この関数はARM7に該当動作を行うコマンドをPXIで送り、それを受け取ったARM7側がPMICを操作することで実行されます。
この関数は TWL のハードウェア上でTWLモードで動作しているときのみ動作します。TWL ハードウェア上でNITROモードで動作している場合や、NITRO ハードウェア上で動作している場合は使用することが出来ません。この場合、PM_RESULT_ERROR を返します。
PM_RESULT_BUSY について
SPI はPM以外にも様々な処理で使用されています。そのようなときに本関数を呼び出すと、ARM7
までコマンドを送り、そこで BUSY という判定が行われ、処理は行われずに ARM9
へ PM_RESULT_BUSY が通知されます。また他の PM 処理を行っている最中に本関数を呼び出すと、ARM9 側でそれを判断し PM_RESULT_BUSY を返します。(この場合は ARM7 への通知を行う前に判断します。)
従って、確実に本関数を成功させようとすれば、次のように成功するまでループするようにしてください。(引数が間違っているというようなミスは考慮していません。)
(例)
while( PM_GetACAdapter( ... ) != PM_RESULT_SUCCESS )
{
}
PM_Init, PM_GetBattery, PM_GetBatteryLevel
2009/06/03 PM_Init() についての記述を削除 (OS_Init() が必須となったため)
2008/08/23 PM_RESULT_BUSY について追記
2008/01/24 初版