AM Daemon ライブラリリファレンス
UsbIOUniqueInput.h
[詳解]
1 /// @file
2 /// @brief USB I/O のユニーク入力情報を提供するクラス UsbIOUniqueInput のヘッダ。
3 ///
4 /// Copyright(C)SEGA
5 
6 #ifndef AMDAEMON_USBIOUNIQUEINPUT_H
7 #define AMDAEMON_USBIOUNIQUEINPUT_H
8 
9 #include "amdaemon/env.h"
10 
11 #include <cstdint>
12 #include <cstddef>
13 
14 namespace amdaemon
15 {
16 /// @addtogroup g_usbio
17 /// @{
18 
19  // 内部クラスの前方宣言
20  class InnerIndexHolder;
21 
22  /// @brief USB I/O のユニーク入力情報を提供するクラス。
23  /// @see UsbIO, UsbIONode
24  ///
25  /// このクラスのインスタンスをアプリ側で直接生成することはできない。
26  /// UsbIONode クラスのメンバ関数 UsbIONode#getAnalogInput から取得すること。
27  ///
28  /// ユニークコマンドによる USB I/O のインタラプト入力情報を提供する。
29  /// Daemonプロセスの設定ファイルで指定した命令コードのみがサポートされる。
31  {
32  public:
33  /// RESERVE 領域サイズ。
34  static const std::size_t RawDataSize = 29;
35 
36  public:
37  /// @brief コンストラクタ。
38  /// @note アプリ側からは利用できない。
39  explicit UsbIOUniqueInput(InnerIndexHolder);
40 
41  // 下記は暗黙の定義を用いる。
42  //‾UsbIOUniqueInput() = default;
43 
44  /// @brief 指定した命令コードがサポートされているか否かを取得する。
45  /// @param[in] command 命令コード。
46  /// @retval true サポートされている場合。
47  /// @retval false サポートされていない場合。
48  ///
49  /// Daemonプロセスの設定ファイルで指定した命令コードであれば true を返す。
50  bool isSupported(std::uint8_t command) const;
51 
52  /// @brief ユニークコマンドによる入力データを取得する。
53  /// @param[in] command 命令コード。
54  /// @param[out] dataSize 入力データサイズの設定先。不要ならば nullptr 。
55  /// @return 入力データ。データが存在しない場合は nullptr 。
56  ///
57  /// @exception Exception
58  /// 引数 command にサポートされていない命令コードを指定した場合。
59  ///
60  /// USB I/O 入力情報の RESERVE 領域値を解析し、命令コードに対応する入力データを返す。
61  ///
62  /// サポートされているが入力データの存在しない命令コードを指定した場合は
63  /// nullptr を返し、引数 dataSize には 0 が設定される。
64  ///
65  /// サポートされていない命令コードを指定した場合は、
66  /// 実際の入力データが存在するか否かに関わらず例外が送出される。
67  const void* get(std::uint8_t command, std::size_t* dataSize = nullptr) const;
68 
69  /// @brief 生の RESERVE 領域値を取得する。
70  /// @return 生の RESERVE 領域値。データサイズは #RawDataSize 。
71  ///
72  /// USB I/O 入力情報の RESERVE 領域値を加工せずそのまま返す。
73  /// ユニークコマンドによる入力機能を提供する基板は、この領域に入力情報を返す。
74  ///
75  /// 通常は、この関数ではなくメンバ関数 #get を用いること。
76  const void* getRaw() const;
77 
78  private:
79  std::size_t _nodeIndex; ///< ノードインデックス。
80 
81  private:
82  // コピー禁止
83  UsbIOUniqueInput(const UsbIOUniqueInput&); // 宣言のみ
84  UsbIOUniqueInput& operator=(const UsbIOUniqueInput&); // 宣言のみ
85  };
86 
87 /// @}
88 } // namespace amdaemon
89 
90 #endif // AMDAEMON_USBIOUNIQUEINPUT_H
static const std::size_t RawDataSize
RESERVE 領域サイズ。
Definition: UsbIOUniqueInput.h:34
Daemonライブラリの環境定義を行うヘッダ。
const void * getRaw() const
生の RESERVE 領域値を取得する。
AM Daemon ライブラリクラス群の基底名前空間。
Definition: Log.h:13
UsbIOUniqueInput(InnerIndexHolder)
コンストラクタ。
USB I/O のユニーク入力情報を提供するクラス。
Definition: UsbIOUniqueInput.h:30
bool isSupported(std::uint8_t command) const
指定した命令コードがサポートされているか否かを取得する。