AM Daemon ライブラリリファレンス
CanPort.h
[詳解]
1 /// @file
2 /// @brief CAN通信ポートの情報を提供するクラス CanPort のヘッダ。
3 ///
4 /// Copyright(C)SEGA
5 
6 #ifndef AMDAEMON_CANPORT_H
7 #define AMDAEMON_CANPORT_H
8 
9 #include "amdaemon/env.h"
10 #include "amdaemon/CanTarget.h"
11 
12 #include <functional>
13 #include <vector>
14 #include <cstddef>
15 
16 namespace amdaemon
17 {
18 /// @addtogroup g_can
19 /// @{
20 
21  // 内部クラスの前方宣言
22  class InnerIndexHolder;
23 
24  /// @brief CAN通信ポートの情報を提供するクラス。
25  /// @see Can
26  ///
27  /// このクラスのインスタンスをアプリ側で直接生成することはできない。
28  /// Can クラスのメンバ関数 Can#getPort から取得すること。
29  class CanPort
30  {
31  public:
32  /// @brief コンストラクタ。
33  /// @note アプリ側からは利用できない。
34  CanPort(InnerIndexHolder);
35 
36  // 下記は暗黙の定義を用いる。
37  //‾CanPort() = default;
38 
39  /// @brief
40  /// 設定ファイルのポート定義内に記述したターゲット定義数(CANボード数)を取得する。
41  /// @return ターゲット定義数(CANボード数)。
42  std::size_t getTargetCount() const;
43 
44  /// @brief ターゲット操作インスタンスを取得する。
45  /// @param[in] targetIndex ポート定義内のターゲット定義インデックス。
46  /// @return ターゲット操作インスタンス。
47  ///
48  /// @exception Exception
49  /// 引数 targetIndex にポート定義内のターゲット定義数以上の値を指定した場合。
50  /// ターゲット定義数はメンバ関数 #getTargetCount で取得できる。
51  CanTarget& getTarget(std::size_t targetIndex);
52 
53  /// @copydoc getTarget(std::size_t)
54  const CanTarget& getTarget(std::size_t targetIndex) const;
55 
56  /// @brief ターゲット操作インスタンス配列を取得する。
57  /// @return ターゲット操作インスタンス配列。
58  ///
59  /// 範囲for文や各種アルゴリズム関数に渡すことを想定している。
60  ///
61  /// - ターゲット定義数を知りたいだけならばメンバ関数 #getTargetCount を用いること。
62  /// - 特定ターゲットを取得したいだけならばメンバ関数 #getTarget を用いること。
63  std::vector<std::reference_wrapper<CanTarget>> getTargets()
64  {
65  return
66  ::amdaemon::util::toContainer<decltype(getTargets())>(
68  [this](std::size_t i) -> CanTarget& { return getTarget(i); });
69  }
70 
71  /// @copydoc getTargets
72  std::vector<std::reference_wrapper<const CanTarget>> getTargets() const
73  {
74  return
75  ::amdaemon::util::toContainer<decltype(getTargets())>(
77  [this](std::size_t i) -> const CanTarget& { return getTarget(i); });
78  }
79 
80  private:
81  std::size_t _index; ///< ポート定義インデックス。
82 
83  private:
84  // コピー禁止
85  CanPort(const CanPort&); // 宣言のみ
86  CanPort& operator=(const CanPort&); // 宣言のみ
87  };
88 
89 /// @}
90 } // namespace amdaemon
91 
92 #endif // AMDAEMON_CANPORT_H
CanPort(InnerIndexHolder)
コンストラクタ。
CanTarget & getTarget(std::size_t targetIndex)
ターゲット操作インスタンスを取得する。
Daemonライブラリの環境定義を行うヘッダ。
CAN通信ポートの情報を提供するクラス。
Definition: CanPort.h:29
AM Daemon ライブラリクラス群の基底名前空間。
Definition: Log.h:13
CANボード単体の通信処理を提供するクラス。
Definition: CanTarget.h:75
CANボード単体の通信処理を提供するクラス CanTarget のヘッダ。
std::vector< std::reference_wrapper< CanTarget > > getTargets()
ターゲット操作インスタンス配列を取得する。
Definition: CanPort.h:63
std::vector< std::reference_wrapper< const CanTarget > > getTargets() const
ターゲット操作インスタンス配列を取得する。
Definition: CanPort.h:72
std::size_t getTargetCount() const
設定ファイルのポート定義内に記述したターゲット定義数(CANボード数)を取得する。