USB I/O のユニーク出力処理を行うクラス。
[詳解]
#include <UsbIOUniqueOutput.h>
USB I/O のユニーク出力処理を行うクラス。
- 参照
- UsbIO, UsbIONode
このクラスのインスタンスをアプリ側で直接生成することはできない。 UsbIONode クラスのメンバ関数 UsbIONode::getUniqueOutput から取得すること。
ユニークコマンドによる USB I/O のインタラプト出力を行う。 Daemonプロセスの設定ファイルで指定した命令コードのみがサポートされる。
amdaemon::UsbIOUniqueOutput::UsbIOUniqueOutput |
( |
InnerIndexHolder |
| ) |
|
|
explicit |
コンストラクタ。
- 覚え書き
- アプリ側からは利用できない。
bool amdaemon::UsbIOUniqueOutput::isSupported |
( |
std::uint8_t |
command | ) |
const |
指定した命令コードがサポートされているか否かを取得する。
- 引数
-
- 戻り値
-
true | サポートされている場合。 |
false | サポートされていない場合。 |
Daemonプロセスの設定ファイルで指定した命令コードであれば true を返す。
RequestState amdaemon::UsbIOUniqueOutput::set |
( |
std::uint8_t |
command, |
|
|
const void * |
data, |
|
|
std::size_t |
dataSize |
|
) |
| |
ユニークコマンドの出力値を設定する。
- 引数
-
[in] | command | 命令コード。 |
[in] | data | 出力データ。不要ならば nullptr を指定可能。 |
[in] | dataSize | 出力データサイズ。 MaxDataSize 以下。データが不要ならば 0 。 |
- 戻り値
- 要求状態値。
- 例外
-
Exception |
- 引数 command にサポートされていない命令コードを指定した場合。
- 引数 data に nullptr を指定した上で引数 dataSize に 0 以外の値を指定した場合。
- 引数 dataSize に MaxDataSize より大きい値を指定した場合。
|
この関数を呼び出しても即座に出力されるわけではない。 反映状況は戻り値の要求状態値で確認できる。
この関数を同一フレーム内で複数回呼びだした場合、 最後の呼び出し時に指定した値のみが実際の更新要求に使われる。
RequestState amdaemon::UsbIOUniqueOutput::set |
( |
std::uint8_t |
command, |
|
|
const std::vector< std::uint8_t > & |
data, |
|
|
std::size_t |
dataSize = SIZE_MAX |
|
) |
| |
|
inline |
ユニークコマンドの出力値を設定する。
- 引数
-
[in] | command | 命令コード。 |
[in] | data | 出力データ。 |
[in] | dataSize | 出力データサイズ。既定値は SIZE_MAX (std::size_t 型の最大値)。 この値と data.size() のうち小さい方の値が実際のサイズとして利用される。 |
- 戻り値
- 要求状態値。
- 例外
-
出力データを可変長配列型で指定するオーバロード。 挙動は set(std::uint8_t, const void*, std::size_t) オーバロードに準ずる。
template<class Data >
auto amdaemon::UsbIOUniqueOutput::set |
( |
std::uint8_t |
command, |
|
|
Data && |
data, |
|
|
std::size_t |
dataSize = sizeof(Data) |
|
) |
| -> typename std::enable_if<
::amdaemon::util::IsBinaryCopyable<
typename std::remove_reference<Data>::type>::value,
RequestState>::type
|
|
inline |
ユニークコマンドの出力値を設定する。
- テンプレート引数
-
Data | 出力データ型。後述の要件を満たす型でなければならない。 |
- 引数
-
[in] | command | 命令コード。 |
[in] | data | 出力データ。 |
[in] | dataSize | 出力データサイズ。既定値は sizeof(Data) 。 この値と sizeof(data) のうち小さい方の値が実際のサイズとして利用される。 |
- 戻り値
- 要求状態値。
- 例外
-
出力データを任意のデータ型(固定長配列等)で指定するオーバロード。 挙動は set(std::uint8_t, const void*, std::size_t) オーバロードに準ずる。
型 Data から参照性を取り除いた型(例えば型 Data が int& ならば int)は 下記の要件をすべて満たす必要がある。
- オブジェクト型(スカラ型、配列、クラス&構造体、共用体のいずれか)である。
- トリビアルコピー可能な型である。
- ポインタ型ではない。
- std::nullptr_t 型ではない。
要するに、安全に std::memcpy によるコピーが可能な型である必要がある。 1つでも満たしていない場合はコンパイルエラーとなる。
RequestState amdaemon::UsbIOUniqueOutput::set |
( |
std::uint8_t |
command | ) |
|
|
inline |
const void* amdaemon::UsbIOUniqueOutput::getCurrent |
( |
std::uint8_t |
command | ) |
const |
現在設定されている出力データを取得する。
- 引数
-
- 戻り値
- 現在設定されている出力データ。データサイズは MaxDataSize 。
- 例外
-
現在ライブラリ内で保持している出力データを返す。 起動直後などは、実デバイスにこの値が設定されているとは限らない。
const std::size_t amdaemon::UsbIOUniqueOutput::MaxDataSize |
|
static |
このクラス詳解は次のファイルから抽出されました: