AM Daemon ライブラリリファレンス
公開メンバ関数 | 静的公開変数類 | 全メンバ一覧
amdaemon::UsbIOUniqueOutput クラス

USB I/O のユニーク出力処理を行うクラス。 [詳解]

#include <UsbIOUniqueOutput.h>

公開メンバ関数

 UsbIOUniqueOutput (InnerIndexHolder)
 コンストラクタ。 [詳解]
 
bool isSupported (std::uint8_t command) const
 指定した命令コードがサポートされているか否かを取得する。 [詳解]
 
RequestState set (std::uint8_t command, const void *data, std::size_t dataSize)
 ユニークコマンドの出力値を設定する。 [詳解]
 
RequestState set (std::uint8_t command, const std::vector< std::uint8_t > &data, std::size_t dataSize=SIZE_MAX)
 ユニークコマンドの出力値を設定する。 [詳解]
 
template<class Data >
auto 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
 ユニークコマンドの出力値を設定する。 [詳解]
 
RequestState set (std::uint8_t command)
 ユニークコマンドの出力値を設定する。 [詳解]
 
const void * getCurrent (std::uint8_t command) const
 現在設定されている出力データを取得する。 [詳解]
 

静的公開変数類

static const std::size_t MaxDataSize
 最大データサイズ。 [詳解]
 

詳解

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

指定した命令コードがサポートされているか否かを取得する。

引数
[in]command命令コード。
戻り値
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() のうち小さい方の値が実際のサイズとして利用される。
戻り値
要求状態値。
例外
Exception
  • 引数 command にサポートされていない命令コードを指定した場合。
  • 引数 dataSize に MaxDataSize より大きい値を指定し、 かつ引数 data の要素数も MaxDataSize より大きい場合。

出力データを可変長配列型で指定するオーバロード。 挙動は 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) のうち小さい方の値が実際のサイズとして利用される。
戻り値
要求状態値。
例外
Exception
  • 引数 command にサポートされていない命令コードを指定した場合。
  • 引数 dataSize に MaxDataSize より大きい値を指定し、 かつ sizeof(data) も MaxDataSize より大きい場合。

出力データを任意のデータ型(固定長配列等)で指定するオーバロード。 挙動は 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

ユニークコマンドの出力値を設定する。

引数
[in]command命令コード。
戻り値
要求状態値。
例外
Exception引数 command にサポートされていない命令コードを指定した場合。

出力データを持たないユニークコマンド用のオーバロード。 挙動は set(std::uint8_t, const void*, std::size_t) オーバロードに準ずる。

const void* amdaemon::UsbIOUniqueOutput::getCurrent ( std::uint8_t  command) const

現在設定されている出力データを取得する。

引数
[in]command命令コード。
戻り値
現在設定されている出力データ。データサイズは MaxDataSize
例外
Exception引数 command にサポートされていない命令コードを指定した場合。

現在ライブラリ内で保持している出力データを返す。 起動直後などは、実デバイスにこの値が設定されているとは限らない。

メンバ詳解

const std::size_t amdaemon::UsbIOUniqueOutput::MaxDataSize
static

最大データサイズ。


このクラス詳解は次のファイルから抽出されました: