AM Daemon ライブラリリファレンス
AnalogInput.h
[詳解]
1 /// @file
2 /// @brief InputUnit クラスからアナログ入力を取得するラッパクラス AnalogInput のヘッダ。
3 ///
4 /// Copyright(C)SEGA
5 
6 #ifndef AMDAEMON_ANALOGINPUT_H
7 #define AMDAEMON_ANALOGINPUT_H
8 
9 #include "amdaemon/env.h"
10 #include "amdaemon/InputId.h"
11 
12 namespace amdaemon
13 {
14 /// @addtogroup g_io
15 /// @{
16 
17  // InputUnit クラスの前方宣言
18  class InputUnit;
19 
20  /// @brief InputUnit クラスからアナログ入力を取得するラッパクラス。
21  /// @see Input, InputUnit
22  ///
23  /// I/Oボードアナログ入力等、入力値の線形変換を行いたい入力に対して用いる。
24  ///
25  /// @code
26  /// #include "amdaemon/Input.h"
27  ///
28  /// namespace inputs
29  /// {
30  /// // 定数宣言(実値は任意のソースファイルで定義する)
31  /// extern const amdaemon::InputId AnalogX;
32  /// extern const amdaemon::InputId AnalogY;
33  /// extern const amdaemon::InputId AnalogZ;
34  /// }
35  ///
36  /// void foo()
37  /// {
38  /// amdaemon::Input input;
39  ///
40  /// // InputUnit インスタンスから取得
41  /// // 0.0 以上 1.0 以下に線形変換する
42  /// const auto x = input.getPlayer(0).getAnalog(inputs::AnalogX);
43  ///
44  /// // AnalogX のアナログ値を取得
45  /// double valueX = x.getValue();
46  ///
47  /// // InputUnit インスタンスから取得
48  /// // -100.0 以上 100.0 以下に線形変換する
49  /// const auto y = input.getPlayer(0).getAnalog(inputs::AnalogY, -100, 100);
50  ///
51  /// // AnalogY のアナログ差分値を取得
52  /// double deltaY = y.getDelta();
53  ///
54  /// // InputUnit インスタンスから直接構築
55  /// // 0.0 以上 10.0 以下に線形変換する
56  /// const amdaemon::AnalogInput z(input.getPlayer(0), inputs::AnalogZ, 10);
57  ///
58  /// // AnalogZ のアナログ値を取得
59  /// double valueZ = z.getValue();
60  /// }
61  /// @endcode
63  {
64  public:
65  /// @brief コンストラクタ。
66  /// @param[in] unit InputUnit インスタンス参照。
67  /// @param[in] id 入力識別ID。
68  /// @param[in] minValue 最小値を線形変換した時の値。
69  /// @param[in] maxValue 最大値を線形変換した時の値。
70  ///
71  /// @exception Exception
72  /// 引数 minValue または maxValue に非数値(NAN等)を指定した場合。
73  ///
74  /// 引数 id に存在しない入力識別IDを指定した場合でも例外は発生しない。
75  /// ただしメンバ関数 #exists は false を返す。
76  ///
77  /// (minValue >= maxValue) となるような値も指定可能である。
78  /// その場合、元の値の単調増加に比例して単調減少するような線形変換が行われる。
80  const InputUnit& unit,
81  const InputId& id,
82  double minValue,
83  double maxValue);
84 
85  /// @brief コンストラクタ。
86  /// @param[in] unit InputUnit インスタンス参照。
87  /// @param[in] id 入力識別ID。
88  /// @param[in] maxValue 最大値を線形変換した時の値。既定値は 1.0 。
89  ///
90  /// @exception Exception
91  /// 引数 maxValue に非数値(NAN等)を指定した場合。
92  ///
93  /// @ref #AnalogInput "AnalogInput(unit, id, 0, maxValue)" と同義。
94  AnalogInput(const InputUnit& unit, const InputId& id, double maxValue = 1);
95 
96  // 下記は暗黙の定義を用いる。
97  //AnalogInput(const AnalogInput&) = default;
98  //‾AnalogInput() = default;
99  //AnalogInput& operator=(const AnalogInput&) = default;
100 
101  /// @brief 入力が存在するか否かを取得する。
102  /// @retval true 存在する場合。
103  /// @retval false 存在しない場合。
104  bool exists() const;
105 
106  /// @brief 線形変換された入力値を取得する。
107  /// @return 線形変換された入力値。入力が存在しない場合は最小値。
108  double getValue() const;
109 
110  /// @brief 線形変換された入力差分値を取得する。
111  /// @return 線形変換された入力差分値。入力が存在しない場合は 0.0 。
112  double getDelta() const;
113 
114  /// @brief 最小値を線形変換した時の値を取得する。
115  /// @return 最小値を線形変換した時の値。
116  ///
117  /// メンバ関数 #getMaxValue の戻り値より大きい値になりうる。
118  double getMinValue() const
119  {
120  return _minValue;
121  }
122 
123  /// @brief 最大値を線形変換した時の値を取得する。
124  /// @return 最大値を線形変換した時の値。
125  ///
126  /// メンバ関数 #getMinValue の戻り値より小さい値になりうる。
127  double getMaxValue() const
128  {
129  return _maxValue;
130  }
131 
132  private:
133  const InputUnit* _unit; ///< InputUnit インスタンス参照。
134  InputId _id; ///< 入力識別ID。
135  double _minValue; ///< 最小値を線形変換した時の値。
136  double _maxValue; ///< 最大値を線形変換した時の値。
137  };
138 
139 /// @}
140 } // namespace amdaemon
141 
142 #endif // AMDAEMON_ANALOGINPUT_H
抽象入力の識別ID型 InputId のヘッダ。
Daemonライブラリの環境定義を行うヘッダ。
AM Daemon ライブラリクラス群の基底名前空間。
Definition: Log.h:13
double getValue() const
線形変換された入力値を取得する。
double getDelta() const
線形変換された入力差分値を取得する。
bool exists() const
入力が存在するか否かを取得する。
double getMaxValue() const
最大値を線形変換した時の値を取得する。
Definition: AnalogInput.h:127
InputUnit クラスからアナログ入力を取得するラッパクラス。
Definition: AnalogInput.h:62
カテゴリ単位のID付けされた入力情報を提供するクラス。
Definition: InputUnit.h:50
double getMinValue() const
最小値を線形変換した時の値を取得する。
Definition: AnalogInput.h:118
AnalogInput(const InputUnit &unit, const InputId &id, double minValue, double maxValue)
コンストラクタ。