# WM_SetLifeTime

## 構文

      #include <nitro/wm.h>

      WMErrCode WM_SetLifeTime(
              WMCallbackFunc  callback
              u16             tableNumber ,
              u16             camLifeTime ,
              u16             frameLifeTime ,
              u16             mpLifeTime
      );

## 引数

callback | 非同期処理が完了した時に呼び出されるコールバック関数を指定します。 このコールバックは割り込みハンドラ内から呼び出されます。
tableNumber | ライフタイムを設定するCAMテーブル番号を指定します。 CAMテーブルとは、通信相手端末それぞれについて状態管理されているテーブルです。 通常は全てのCAMテーブルに対するタイムアウト時間を一括設定するために、0xFFFFを指定して下さい。
camLifeTime | CAMテーブルのライフタイムを100ms単位で指定します。 0xFFFFを指定すると、ライフタイムは無効となります。初期値は 40（4秒）です。
frameLifeTime | 接続・切断に関する管理用通信とインフラストラクチャモード時のデータ通信のライフタイムをビーコン間隔単位で指定します。1 〜 63 の値、もしくは 0xFFFF を指定して下さい。 0xFFFFを指定すると、ライフタイムは無効となります。初期値は 5 です。
mpLifeTime | 親機の場合はMP通信で子機がNull応答を返しつづけた際に許容する時間を、 子機の場合はMP通信で親機からのMPフレームを受信できない状態が続いた際に許容する時間を100ms単位で指定します。 0xFFFFを指定すると、ライフタイムは無効となります。初期値は 40（4秒）です。

## 返り値

WMErrCode列挙型の処理結果を返します。

## 説明

通信時のライフタイム( タイムアウトまでの時間 )を設定します。WMステートがIDLEステートの場合に実行可能です。 APIの戻り値がWM_ERRCODE_OPERATINGであった場合、ライフタイム設定処理が完了した後にコールバックが発生します。 この関数を呼んでいない場合のデフォルトは、CAMライフタイムが 4 秒、フレームライフタイムがビーコン 5 回分、MP通信ライフタイムが 4 秒という状態です。

CAMライフタイムは通信状態の悪化による通信途絶時間の許容値を示します。 CAMライフタイムは何らかの通信を受信すれば切れることはありません。
一方、MP通信ライフタイムはMP通信の途絶時間の許容値を示します。 意味のあるMP通信を相手から受信したときにライフタイムが更新されます。
いずれにせよ、ライフタイムが切れると自動的に通信が切断されます。

ワイヤレス通信ハードウェアが MP 通信を行っている状況で、CPU が暴走してしまった場合などに、 CAMライフタイムだけでは正常に切断できないことがあります。 例えば、親機であればビーコンが出つづける状態になることがあり、 子機であれば親機のMPフレームに自動的にNull応答を返しつづける状態になることがあります。 このような状況でも正常に切断できるためにMP通信ライフタイムが用意されています。

フレームライフタイムは他の2つのライフタイムとは少々毛色が異なります。 MP通信を行っている場合は接続と切断時の通信にのみ影響します。 また、インフラストラクチャモードでは、全てのフレームのライフタイムに影響しますが、 特殊な事情がない限りはデフォルト値から変更しないようにしてください。 特に、フレームライフタイムを無効にしてしまった場合、 状況によっては切断処理のコールバックが呼び出されなくなることがあります。

## 履歴

2006/01/13 説明の書き直しとフレームライフライムを0xFFFFに設定しないように追記
2005/12/06 フレームライフタイムの説明に追記
2005/10/03 フレームライフタイムのデフォルト値の記述を修正
2005/06/08 コールバックが割り込みハンドラから呼び出される旨を補足
2005/03/02 framLifeTime引数について指定可能範囲を追記
2004/11/19 mpLifeTimeの説明を変更
2004/11/09 引数に mpLifeTime を追加
2004/10/22 返り値の型を変更
2004/08/11 初版