# PM_SetAutoExit

## 構文

      #include <twl/spi.h>

      void PM_SetAutoExit( BOOL sw );

## 引数

sw | 自動終了するかどうか

## 返り値

なし。

## 説明

終了処理後に自動的にハードウェアリセットまたは電源オフを行うかどうかを設定します。

TWL では電源スイッチを押したり(押す時間によってハードウェアリセットや電源オフとなります) 、電池残量の低下を検知して(この場合は電源オフ) 終了処理へと移行します。電源スイッチの押下や電池残量低下のイベントが起こるとマイコンから ARM7 に割り込みがかかり、それを ARM9 に通達します。そしてARM9では終了コールバックを呼び、終了する準備が出来たことをARM7に通達し、ARM7 がハードウェアリセットや電源オフを行う、という流れになっています。

なお、ARM7からARM9への通達は一度しか行われません。すなわち、ARM9 が終了準備が出来たという通達を ARM7 に送る前にもう一度電源ボタンが押しなおされたとしても、その分の通知は ARM7 から送られてきません。従って、どのようなタイミングで電源ボタンを押しても終了コールバック処理がニ度行われることはありません。

`PM_SetAutoExit()` では、ARM9 が終了コールバックを呼んだ後に、終了する準備が出来たことをARM7 に通達するのをシステムが行うか、アプリ側で行うかを指定します。引数 sw の値によって次のようになります。

`引数swの値` | 動作
--- | ---
`TRUE` | コールバックを呼んだ後、システム内で終了処理を続けてハードウェアリセットまたは電源オフします。(デフォルト)
`FALSE` | コールバックを呼んだ後、ARM7に終了準備が出来たことを通達しません。アプリが行う必要があります。

`PM_SetAutoExit( FALSE )` をしていた場合、アプリ側から明示的に ARM7 に終了準備が出来たことを通達する必要があります。出来るだけ速やかに `PM_ReadyToExit()` を呼んでください。ユーザが電源ボタンを押し続けている場合はハードの仕様として数秒で強制的に電源がオフされますし、電池残量の低下で終了処理に入った場合も猶予がないはずです。

設定値を取得する関数は `PM_GetAutoExit()` です。

## 参照

`PM_GetAutoExit, PM_ReadyToExit
`

## 履歴

2009/06/03 `PM_Init()` についての記述を削除 (`OS_Init()` が必須となったため)
2008/12/11 終了コールバックは二度呼ばれないことを追記
2008/02/07 初版