AM Daemon ライブラリリファレンス
CreditSpecialDevice.h
[詳解]
1 /// @file
2 /// @brief
3 /// ビデオゲームのクレジット処理に統合された特殊デバイスを操作するクラス
4 /// CreditSpecialDevice のヘッダ。
5 ///
6 /// Copyright(C)SEGA
7 
8 #ifndef AMDAEMON_CREDITSPECIALDEVICE_H
9 #define AMDAEMON_CREDITSPECIALDEVICE_H
10 
11 #include "amdaemon/env.h"
12 
13 namespace amdaemon
14 {
15 /// @addtogroup g_credit
16 /// @{
17 
18  // 内部クラスの前方宣言
19  class InnerIndexHolder;
20 
21  /// @brief ビデオゲームのクレジット処理に統合された特殊デバイスを操作するクラス。
22  ///
23  /// このクラスのインスタンスをアプリ側で直接生成することはできない。
24  /// Credit クラスのメンバ関数 Credit#getSpecialDevice から取得すること。
25  ///
26  /// 一部の関数は処理完了まで呼び出し元スレッドをブロックする。
27  ///
28  /// 現実装では、電子コインセレクター AS-6DB-S1 の操作のみをサポートする。
29  ///
30  /// @par 電子コインセレクター AS-6DB-S1 利用時の注意事項
31  /// - Daemonプロセスの初期化完了時点ではロックアウトが有効になっている。
32  /// - 適宜メンバ関数 #lockout でロックアウト設定を行うこと。
33  /// - デバイスエラー発生中、自動的にロックアウトが有効になる。
34  /// - デバイスエラーの中には進行停止エラーとはならないものも含まれる。
35  /// 現在のロックアウト状態はメンバ関数 #isLockoutOn で確認すること。
36  /// - デバイスエラー発生中はメンバ関数 #lockout でのロックアウト設定が必ず失敗する。
37  /// - デバイスエラーが内部でリセットされ、ロックアウト設定が成功するまで、
38  /// 毎フレーム試行することが望ましい。
40  {
41  public:
42  /// @brief コンストラクタ。
43  /// @note アプリ側からは利用できない。
44  explicit CreditSpecialDevice(InnerIndexHolder);
45 
46  // 下記は暗黙の定義を用いる。
47  //‾CreditSpecialDevice() = default;
48 
49  /// @brief 特殊デバイス機能を利用可能であるか否かを取得する。
50  /// @retval true 利用可能である場合。
51  /// @retval false 機能が無効である場合。
52  ///
53  /// 現実装では、電子コインセレクター AS-6DB-S1 の操作をサポートするか否かを返す。
54  bool isAvailable() const;
55 
56  /// @brief 現在ロックアウトが有効であるか否かを取得する。
57  /// @retval true ロックアウトが有効である場合。
58  /// @retval false ロックアウトが無効であるか、機能が無効である場合。
59  ///
60  /// デバイスの仕様により自動的にロックアウトが有効になる場合がある。
61  /// 進行停止エラーとはならない場合もあるため、
62  /// アプリからは突然ロックアウトされたように見える。
63  ///
64  /// この関数の戻り値を毎フレーム確認し、アプリの想定するロックアウト状態と
65  /// 異なっている場合はメンバ関数 #lockout を用いてロックアウト設定を行うこと。
66  /// その際、内部状態次第ではロックアウト設定に失敗する場合があるため、
67  /// 成功するまで毎フレーム試行し続けること。
68  bool isLockoutOn() const;
69 
70  /// @brief ロックアウト設定を行う。
71  /// @param[in] on ロックアウトを有効にするならば true 。無効にするならば false 。
72  /// @retval true 処理に成功した場合。
73  /// @retval false 処理に失敗したか、機能が無効である場合。
74  ///
75  /// 毎フレーム呼び出されることを想定した設計になっている。
76  ///
77  /// 一度呼び出すと数フレームの間はロックアウト設定処理中となり、
78  /// 処理中に再度呼び出した場合は何もせずに false を返す。
79  ///
80  /// ロックアウト設定処理中以外でも、
81  /// 内部状態次第でロックアウト設定に失敗する場合があるため、
82  /// 必ずこの関数の戻り値やメンバ関数 #isLockoutOn の戻り値を確認すること。
83  bool lockout(bool on);
84 
85  private:
86  // コピー禁止
87  CreditSpecialDevice(const CreditSpecialDevice&); // 宣言のみ
88  CreditSpecialDevice& operator=(const CreditSpecialDevice&); // 宣言のみ
89  };
90 
91 /// @}
92 } // namespace amdaemon
93 
94 #endif // AMDAEMON_CREDITSPECIALDEVICE_H
bool isAvailable() const
特殊デバイス機能を利用可能であるか否かを取得する。
Daemonライブラリの環境定義を行うヘッダ。
AM Daemon ライブラリクラス群の基底名前空間。
Definition: Log.h:13
bool isLockoutOn() const
現在ロックアウトが有効であるか否かを取得する。
CreditSpecialDevice(InnerIndexHolder)
コンストラクタ。
bool lockout(bool on)
ロックアウト設定を行う。
ビデオゲームのクレジット処理に統合された特殊デバイスを操作するクラス。
Definition: CreditSpecialDevice.h:39