# TwePacketPal

`TwePacketPal`クラスは、TWELITE PALのパケットデータを解釈したものです。このクラスはTWELITE PAL（センサーデータなど上り方向）共通に取り扱います。

```cpp
class TwePacketPal : public TwePacket, public DataPal { ... };
```

PAL共通データは[`DataPal`](https://mwm5.twelite.info/0.9-1/references/parser/twefmt/packet-types/twepacketpal/datapal)に定義されています。

PALの各センサー基板特有のデータを取り出すためのジェネレータ関数を用意しています。

### spTwePacketからの参照

```cpp
TwePacketPal& refTwePacketPal(spTwePacket& p)
```

`spTwePacket`オブジェクトから`TwePacketPal`オブジェクトを参照します。`spTwePacket`に`TwePacketPal`以外が格納されている場合は、未解釈のオブジェクトを戻します。

### 実行例

```cpp
if (parse_ascii) { // アスキー形式のパーサーの解釈完了
  if (identify_packet_type(parse_ascii.get_payload()) == E_PKT::PKT_PAL) {
    auto&& pkt = newTwePacket(parse_ascii.get_payload(), E_PKT::PKT_PAL);
    
    if (pkt == E_PKT::PKT_PAL) { // パケット解釈成功時
      auto&& pal = refTwePacketPal(pkt);
      
      // 開閉センサーパル
      if (pal.u8palpcb == E_PAL_PCB::MAG) {
        PalMag mag = pal.get_PalMag();
        if (mag.u8MagStat == 0) {
          // OPEN
        } else {
          // CLOSE
        }
      }
    }
  }
}
```

## ジェネレータ関数

センサーPALの各種データを取り出すためのジェネレータ関数です。

### get\_PalMag()

```cpp
PalMag get_PalMag()
```

`.u8palpcb==E_PAL_PCB::MAG`の場合、開閉センサーパルのデータ[`PalMag`](https://mwm5.twelite.info/0.9-1/references/parser/twefmt/packet-types/twepacketpal/palbase/palmag)を取り出します。

### get\_PalAmb()

```
PalAmb get_PalAmb()
```

`.u8palpcb==E_PAL_PCB::AMB`の場合、環境センサーパルのデータ[`PalAmb`](https://mwm5.twelite.info/0.9-1/references/parser/twefmt/packet-types/twepacketpal/palbase/palamb)を取り出します。

### get\_PalMot()

```
PalMot get_PalMot()
```

`.u8palpcb==E_PAL_PCB::MOT`の場合、動作センサーパルのデータ[`PalMot`](https://mwm5.twelite.info/0.9-1/references/parser/twefmt/packet-types/twepacketpal/palbase/palmot)を取り出します。

### get\_PalEvent()

```
PalEvent get_PalEvent()
```

`.is_PalEvent()`が`true`の場合`PalEvent`(PALイベント)を取り出します。
