# PM_GetAmp

## 構文

      #include <nitro/spi.h>

      u32 PM_GetAmp( PMAmpSwitch* swBuf );

## 引数

swBuf | アンプスイッチの設定の取得結果を格納するバッファ

## 返り値

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

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

## 説明

プログラマブルゲインアンプのスイッチの、現在の設定を取得します。

swBuf には `PMAmpSwitch` 列挙型の値が格納されます。以下のいずれかの値です。

`swBuf 先に格納される値` | アンプの状態
--- | ---
`PM_AMP_ON` | アンプはオンになっています。
`PM_AMP_OFF` | アンプはオフになっています。

この関数はARM7に該当動作を行うコマンドをPXIで送り、それを受け取ったARM7側がPMICを操作することで実行されます。従って関数を呼び出して即時に動作されるわけではありません。

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

PM_RESULT_BUSY について

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

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

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

## 内部動作

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

## 参照

`PM_Init, `PM_SetAmp`*
`

## 履歴

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 初版