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

CANボードから送信されたアクノリッジパケット情報を提供するクラス。 [詳解]

#include <CanAck.h>

公開メンバ関数

 CanAck (InnerIndexHolder, InnerIndexHolder, std::uint8_t)
 コンストラクタ。 [詳解]
 
bool exists () const
 パケットが存在するか否かを取得する。 [詳解]
 
std::uint8_t getCommand () const
 命令コードを取得する。 [詳解]
 
bool isError () const
 このインスタンスがコマンド処理結果ではなく エラーレポート情報を保持しているか否かを取得する。 [詳解]
 
CanErrorReport getErrorReport () const
 エラーレポート種別を取得する。 [詳解]
 
const void * getData () const
 パケットデータを取得する。 [詳解]
 
template<class Data >
auto getDataAs () const -> typename std::enable_if< ::amdaemon::util::IsBinaryCopyable< Data >::value, const typename std::remove_cv< Data >::type & >::type
 パケットデータを指定した型の参照として取得する。 [詳解]
 
std::size_t getDataSize () const
 パケットデータサイズを取得する。 [詳解]
 

詳解

CANボードから送信されたアクノリッジパケット情報を提供するクラス。

参照
CanTarget

このクラスのインスタンスをアプリ側で直接生成することはできない。 CanTarget クラスのメンバ関数 CanTarget::getAck から取得すること。

CanTarget クラスから同じ命令コードのリクエストパケットを送信したり、 Core クラスのメンバ関数 Core::execute 呼び出しによって新しいアクノリッジパケットを 受け取った時点で、インスタンスの各メンバ関数が返す情報は更新される。 ある時点における情報を保持したい場合、各メンバ関数の戻り値をコピーしておくこと。

メンバ関数 isError が true を返す場合、 そのインスタンスは当該コマンドのアクノリッジパケット情報ではなく、 エラーレポート取得コマンド(命令コード値は CanErrorReportCommand)の アクノリッジパケット情報を返す。

構築子と解体子

amdaemon::CanAck::CanAck ( InnerIndexHolder  ,
InnerIndexHolder  ,
std::uint8_t   
)

コンストラクタ。

覚え書き
アプリ側からは利用できない。

関数詳解

bool amdaemon::CanAck::exists ( ) const
inline

パケットが存在するか否かを取得する。

戻り値
true存在する場合。
false存在しない場合。

この関数が false を返す場合、他のメンバ関数の返す値を利用してはならない。

std::uint8_t amdaemon::CanAck::getCommand ( ) const
inline

命令コードを取得する。

戻り値
命令コード。
bool amdaemon::CanAck::isError ( ) const
inline

このインスタンスがコマンド処理結果ではなく エラーレポート情報を保持しているか否かを取得する。

戻り値
trueエラーレポート情報を保持している場合。
falseコマンド処理結果を保持している場合。(正常時)
CanErrorReport amdaemon::CanAck::getErrorReport ( ) const

エラーレポート種別を取得する。

戻り値
エラーレポート種別。エラーが発生していない場合は CanErrorReport::None
const void* amdaemon::CanAck::getData ( ) const

パケットデータを取得する。

戻り値
パケットデータ。パケットが存在しない場合は nullptr 。
  • メンバ関数 isError が false を返す場合、 この関数は当該コマンドのパケットデータを返す。
  • メンバ関数 isError が true を返す場合、 この関数はエラーレポート取得コマンド(命令コード値は CanErrorReportCommand)の アクノリッジパケットデータを返す。
    • 特に加工せずパケットデータをそのまま返すため、 1バイト目はメンバ関数 getCommand の戻り値と等しくなり、 2バイト目はメンバ関数 getErrorReport の戻り値と等しくなる。
template<class Data >
auto amdaemon::CanAck::getDataAs ( ) const -> typename std::enable_if< ::amdaemon::util::IsBinaryCopyable<Data>::value, const typename std::remove_cv<Data>::type&>::type
inline

パケットデータを指定した型の参照として取得する。

テンプレート引数
Dataパケットデータ型。後述の要件を満たす型でなければならない。
戻り値
パケットデータ。
参照
getData
例外
Exceptionパケットが存在しない場合。

メンバ関数 getData の戻り値を単純にキャストし、 const Data& 型として返す。 型 Data の const 修飾および volatile 修飾は取り除かれる。

型 Data は下記の要件をすべて満たす必要がある。

  • オブジェクト型(スカラ型、配列、クラス&構造体、共用体のいずれか)である。
  • トリビアルコピー可能な型である。
  • ポインタ型ではない。
  • std::nullptr_t 型ではない。

要するに、安全に std::memcpy によるコピーが可能な型である必要がある。 1つでも満たしていない場合はコンパイルエラーとなる。

std::size_t amdaemon::CanAck::getDataSize ( ) const

パケットデータサイズを取得する。

戻り値
パケットデータサイズ。コマンドによっては 0 の場合もある。

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