PM_GetBattery

# PM_GetBackLight

## 構文

      #include <nitro/spi.h>

      u32 PM_GetBackLight( PMBackLightSwitch* top, PMBackLightSwitch* bottom );

## 引数

top | 上画面のバックライトの状態を書き込むバッファ
bottom | 下画面のバックライトの状態を書き込むバッファ

## 返り値

PM_RESULT_SUCCESS ならば、コマンドの実行が成功したことを表します。

PM_RESULT_BUSY ならば、 SPI が他の処理に占有されており処理できなかったことを示します。

top および bottom で示されるアドレスにバックライトの状態を取得して書き込みます。格納される値は以下の通りです。

格納される値 | バックライトの状態
--- | ---
`PM_BACKLIGHT_ON` | バックライトは点灯しています。
`PM_BACKLIGHT_OFF` | バックライトは消灯しています。

## 説明

バックライトの状態を調べます。

top 及び bottom は `PMBackLightSwitch` 型 へのポインタで、ここに結果が格納されます。NULLポインタが指定された場合はそこに対応するバックライトの状態は書き込みません。

この関数はARM7に該当動作を行うコマンドをPXIで送り、それを受け取ったARM7側がPMICを操作することで実行されます。

割込みハンドラからこの関数を使用することは可能です。割込みハンドラ以外の割込み禁止状態でこの関数を使用することは出来ません。

PM_RESULT_BUSY について

SPI はPM以外にも様々な処理で使用されています。そのようなときに本関数を呼び出すと、ARM7 までコマンドを送り、そこで BUSY という判定が行われ、処理は行われずに ARM9 へ `PM_RESULT_BUSY` が通知されます。また他の PM 処理を行っている最中に本関数を呼び出すと、ARM9 側でそれを判断し `PM_RESULT_BUSY` を返します。(この場合は ARM7 への通知を行う前に判断します。)

従って、確実に本関数を成功させようとすれば、次のように成功するまでループするようにしてください。(引数が間違っているというようなミスは考慮していません。)

> (例)
> `while( PM_GetBackLight( ... ) != PM_RESULT_SUCCESS )
> {
> }`

## 内部動作

PMIC のレジスタ PMIC_CTL の値を読み込みます。

## 参照

`PM_Init, PM_SetBackLight`

## 履歴

2009/06/03 `PM_Init()` についての記述を削除 (`OS_Init()` が必須となったため)
2008/12/05 割込み禁止状態での使用に関する注意を追記
2008/08/23 PM_RESULT_BUSY について言及
2005/07/07 返り値 PM_RESULT_ERRORについて言及した
2004/08/09 初版