AM Daemon ライブラリリファレンス
SwitchOutput.h
[詳解]
1 /// @file
2 /// @brief OutputUnit クラスにスイッチ出力値を設定するラッパクラス SwitchOutput のヘッダ。
3 ///
4 /// Copyright(C)SEGA
5 
6 #ifndef AMDAEMON_SWITCHOUTPUT_H
7 #define AMDAEMON_SWITCHOUTPUT_H
8 
9 #include "amdaemon/env.h"
10 #include "amdaemon/OutputId.h"
11 
12 #include <cstddef>
13 
14 namespace amdaemon
15 {
16 /// @addtogroup g_io
17 /// @{
18 
19  // OutputUnit クラスの前方宣言
20  class OutputUnit;
21 
22  /// @brief OutputUnit クラスにスイッチ出力値を設定するラッパクラス。
23  /// @see Output, OutputUnit
24  ///
25  /// 出力をビット単位で行いたい場合等に用いる。
26  ///
27  /// @code
28  /// #include "amdaemon/Output.h"
29  ///
30  /// namespace outputs
31  /// {
32  /// // 定数宣言(実値は任意のソースファイルで定義する)
33  /// extern const amdaemon::OutputId Led1;
34  /// extern const amdaemon::OutputId Led2;
35  /// }
36  ///
37  /// void foo()
38  /// {
39  /// amdaemon::Output output;
40  ///
41  /// // OutputUnit インスタンスから取得
42  /// auto led1 = output.getSystem().getSwitch(outputs::Led1);
43  ///
44  /// // LEDを先頭から2つ点灯
45  /// led1.set(true, 0);
46  /// led1.set(true, 1);
47  ///
48  /// // OutputUnit インスタンスから直接構築
49  /// amdaemon::SwitchOutput led2(output.getSystem(), outputs::Led2);
50  ///
51  /// // LEDを先頭から2つ消灯
52  /// led2.reset(0);
53  /// led2.reset(1);
54  /// }
55  /// @endcode
57  {
58  public:
59  /// @brief コンストラクタ。
60  /// @param[in] unit OutputUnit インスタンス参照。
61  /// @param[in] id 出力識別ID。
62  ///
63  /// 引数 id に存在しない出力識別IDを指定した場合でも例外は発生しない。
64  /// ただしメンバ関数 #exists は false を返す。
65  SwitchOutput(OutputUnit& unit, const OutputId& id)
66  :
67  _unit(&unit),
68  _id(id)
69  {
70  }
71 
72  // 下記は暗黙の定義を用いる。
73  //SwitchOutput(const SwitchOutput&) = default;
74  //‾SwitchOutput() = default;
75  //SwitchOutput& operator=(const SwitchOutput&) = default;
76 
77  /// @brief 出力が存在するか否かを取得する。
78  /// @retval true 存在する場合。
79  /// @retval false 存在しない場合。
80  bool exists() const;
81 
82  /// @brief スイッチ出力のON/OFF状態を設定する。
83  /// @param[in] bitIndex 対象ビットインデックス。
84  /// @param[in] on ON状態にするならば true 。OFF状態にするならば false 。
85  /// @param[in] forceUpdate
86  /// 値が変化しない場合も更新要求するならば true 。既定値は false 。
87  ///
88  /// @exception Exception
89  /// 引数 bitIndex に有効ビット範囲外の値を指定した場合。
90  ///
91  /// 出力が存在しない場合は何もしない。
92  void set(std::size_t bitIndex, bool on, bool forceUpdate = false);
93 
94  /// @brief スイッチ出力をOFF状態に設定する。
95  /// @param[in] bitIndex 対象ビットインデックス。
96  /// @param[in] forceUpdate
97  /// 値が変化しない場合も更新要求するならば true 。既定値は false 。
98  ///
99  /// @exception Exception
100  /// 引数 bitIndex に有効ビット範囲外の値を指定した場合。
101  ///
102  /// 出力が存在しない場合は何もしない。
103  inline void reset(std::size_t bitIndex, bool forceUpdate = false)
104  {
105  set(bitIndex, false, forceUpdate);
106  }
107 
108  /// @brief 現在のスイッチ出力設定がON状態であるか否かを取得する。
109  /// @param[in] bitIndex 対象ビットインデックス。
110  /// @retval true 現在のスイッチ出力設定がON状態である場合。
111  /// @retval false 現在のスイッチ出力設定がOFF状態であるか、出力が存在しない場合。
112  ///
113  /// 現在ライブラリ内で保持している値を返す。
114  /// 起動直後などは、実デバイスにこの値が設定されているとは限らない。
115  bool isCurrentOn(std::size_t bitIndex) const;
116 
117  private:
118  OutputUnit* _unit; ///< OutputUnit インスタンス参照。
119  OutputId _id; ///< 出力識別ID。
120  };
121 
122 /// @}
123 } // namespace amdaemon
124 
125 #endif // AMDAEMON_SWITCHOUTPUT_H
void reset(std::size_t bitIndex, bool forceUpdate=false)
スイッチ出力をOFF状態に設定する。
Definition: SwitchOutput.h:103
bool exists() const
出力が存在するか否かを取得する。
カテゴリ単位のID付けされた出力処理を行うクラス。
Definition: OutputUnit.h:52
抽象出力の識別ID型 OutputId のヘッダ。
Daemonライブラリの環境定義を行うヘッダ。
AM Daemon ライブラリクラス群の基底名前空間。
Definition: Log.h:13
SwitchOutput(OutputUnit &unit, const OutputId &id)
コンストラクタ。
Definition: SwitchOutput.h:65
OutputUnit クラスにスイッチ出力値を設定するラッパクラス。
Definition: SwitchOutput.h:56
bool isCurrentOn(std::size_t bitIndex) const
現在のスイッチ出力設定がON状態であるか否かを取得する。