ATCFS
 全て クラス 名前空間 ファイル 関数 変数 型定義 マクロ定義 ページ
AtsP.h
[詳解]
1 // Copyright 2018 S520
2 // All rights reserved.
3 //
4 // Redistribution and use in source and binary forms, with or without
5 // modification, are permitted provided that the following conditions are met :
6 //
7 // 1. Redistributions of source code must retain the above copyright notice,
8 // this list of conditions and the following disclaimer.
9 // 2. Redistributions in binary form must reproduce the above copyright notice,
10 // this list of conditions and the following disclaimer in the documentation
11 // and / or other materials provided with the distribution.
12 //
13 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
14 // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
15 // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
16 // DISCLAIMED.IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
17 // ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
18 // (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
19 // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
20 // ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
21 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
22 // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
23 
24 #ifndef ATSP_H_
25 #define ATSP_H_
26 #include <boost/container/vector.hpp>
27 #include <boost/array.hpp>
28 #include <boost/scoped_ptr.hpp>
29 #include "Base.h"
30 
31 #define LOGARGS __FILE__, __FUNCTION__, __LINE__ // For Debug
32 #define ALL_PATTERN_P 7
33 #define USR_PATTERN_P 5
34 
35 class Atsp :private Base {
39  private:
42  boost::container::vector<double>pattern_list_;
44  boost::array<float, ALL_PATTERN_P>pattern_end_loc_list_;
45  boost::array<int, ALL_PATTERN_P>pattern_is_valid_list_;
46  boost::array<int, ALL_PATTERN_P>pattern_tget_spd_list_;
47  boost::array<int, ALL_PATTERN_P>pattern_pre_spd_list_;
48  boost::array<int, ALL_PATTERN_P>pattern_aprch_list_;
52 
53  void SetPatternList(void);
54  void AdjDeceleration(int deceleration);
55  int SearchPattern(float distance);
56  void ValidPattern(int& tget_spd, int pattern_status);
57  int CalcPatternSpd(int tget_spd, float pattern_end_loc);
58  int IsAprchPattern(int tget_spd, float pattern_end_loc);
59  void CollectPattern(void);
60  void CalcPattern(void);
61  void AtspCheck(void);
62  void Reset(void);
63  void BrakeExe(void);
64  void DisplayLamp(void);
65  void PlaySound(void);
66 
68 
72  class SectionP {
73  private:
74  const Atsp *atsp_;
76 
77  public:
86 
87  explicit SectionP(Atsp *atsp);
88  virtual ~SectionP(void);
89  void Init(void);
90  void GetSection(float distance);
91  void PassedStopEb(float distance);
92  void PassedStopSvc(float distance);
93  void CalcSection(void);
94  };
96 
100  class PatternP {
101  private:
102  const Atsp *atsp_;
103 
104  public:
105  boost::array<float, USR_PATTERN_P>pattern_end_loc_;
106  boost::array<int, USR_PATTERN_P>pattern_is_valid_;
107  boost::array<int, USR_PATTERN_P>pattern_tget_spd_;
108 
109  explicit PatternP(Atsp *atsp);
110  virtual ~PatternP(void);
111  void Init(void);
112  void RegPattern(int type, int optional);
113  void DelPattern(int type);
114  };
116  boost::scoped_ptr<SectionP>section_p_;
117  boost::scoped_ptr<PatternP>pattern_p_;
118 
119  public:
122  int AtsNotch;
123  const float *TrainSpeed;
124  const int *Time;
125  const int *ManualBrakeNotch;
126  double Location;
129  int atsp_use_;
137 
138  Atsp(void);
139  virtual ~Atsp(void);
140  void InitP(void);
141  void StartP(void);
142  void ExitP(void);
143  void PassedBeaconP(int index, int signal, float distance, int optional);
144  void ResetSwDownP(void);
145  void ExeP(void);
146 };
147 
148 #endif // ATSP_H_
double Location
列車位置[m]
Definition: AtsP.h:126
int ServiceNotch
常用最大ブレーキノッチ(HBを含む)
Definition: AtsP.h:121
void PassedStopSvc(float distance)
即時停止(常用)地上子を通過した際に実行する関数
Definition: AtsP.cpp:218
boost::array< int, ALL_PATTERN_P > pattern_aprch_list_
全パターンのパターン接近警報の状態(0: 無効, 1: 有効)
Definition: AtsP.h:48
int default_notch_
標準ブレーキノッチ
Definition: AtsP.h:41
int atsp_max_spd_
車両ATS-P最高速度[km/h]
Definition: AtsP.h:130
int atsp_use_
ATS-P(0: 消灯, 1: 点灯)
Definition: AtsP.h:129
void Reset(void)
復帰扱いの判定を行う関数
Definition: AtsP.cpp:402
boost::array< int, ALL_PATTERN_P > pattern_tget_spd_list_
全パターンの目標速度[km/h]
Definition: AtsP.h:46
テンプレートを記述する基底クラス
Definition: Base.h:33
boost::scoped_ptr< PatternP > pattern_p_
Definition: AtsP.h:117
int pattern_is_valid_
パターンの状態(0: 無効, 1: 有効)
Definition: AtsP.h:84
int atsp_brake_lamp_
ブレーキ作動(0: 消灯, 1: 点灯)
Definition: AtsP.h:134
int debug_timer_
Debug出力する次のゲーム内時刻[ms].
Definition: AtsP.h:51
int is__brake_reset_
ブレーキ開放フラグ
Definition: AtsP.h:82
void AtspCheck(void)
フラグのON, OFFを行う関数
Definition: AtsP.cpp:389
void Init(void)
Initializeで実行する関数
Definition: AtsP.cpp:88
virtual ~PatternP(void)
Definition: AtsP.cpp:53
int pattern_tget_spd_
目標速度[km/h]
Definition: AtsP.h:85
boost::array< float, ALL_PATTERN_P > pattern_end_loc_list_
全パターンの減速完了地点[m]
Definition: AtsP.h:44
int atsp_aprch_lamp_
パターン接近(0: 消灯, 1: 点灯)
Definition: AtsP.h:133
void RegPattern(int type, int optional)
速度制限パターンの登録を行う関数
Definition: AtsP.cpp:256
boost::array< int, ALL_PATTERN_P > pattern_pre_spd_list_
全パターンのパターン照査速度[km/h]
Definition: AtsP.h:47
PatternP(Atsp *atsp)
Definition: AtsP.cpp:43
float red_signal_loc_
停止信号地点[m]
Definition: AtsP.h:75
void DelPattern(int type)
速度制限パターンの消去を行う関数
Definition: AtsP.cpp:269
double adj_deceleration_
各ブレーキノッチの減速度補正値[m/s^2]
Definition: AtsP.h:43
boost::array< float, USR_PATTERN_P > pattern_end_loc_
減速完了地点[m]
Definition: AtsP.h:105
int IsAprchPattern(int tget_spd, float pattern_end_loc)
パターン接近警報を発信する関数
Definition: AtsP.cpp:348
ATS-Pを再現するクラス
Definition: AtsP.h:38
boost::container::vector< double > pattern_list_
速度照査パターン
Definition: AtsP.h:42
void ValidPattern(int &tget_spd, int pattern_status)
パターンが無効の場合に目標速度を車両ATS-P最高速度に修正する関数
Definition: AtsP.cpp:315
void Init(void)
Initializeで実行する関数
Definition: AtsP.cpp:103
virtual ~SectionP(void)
Definition: AtsP.cpp:50
void AdjDeceleration(int deceleration)
勾配補正設定を行う関数
Definition: AtsP.cpp:277
void PassedBeaconP(int index, int signal, float distance, int optional)
SetBeaconDataで実行される関数
Definition: AtsP.cpp:148
int is_immediate_stop_
即時停止(非常, 常用)フラグ
Definition: AtsP.h:80
float max_deceleration_
常用最大減速度[km/h/s]
Definition: AtsP.h:127
int is_immediate_stop_svc_
即時停止(常用)フラグ
Definition: AtsP.h:79
int max_brake_notch_
常用最大ブレーキノッチ(HBを含まない)
Definition: AtsP.h:40
int atsp_reset_lamp_
ブレーキ解放(0: 消灯, 1: 点灯)
Definition: AtsP.h:135
void CalcSection(void)
停止信号パターンを生成する関数
Definition: AtsP.cpp:229
float pattern_end_loc_
減速完了地点[m]
Definition: AtsP.h:83
const float * TrainSpeed
列車速度[km/h]
Definition: AtsP.h:123
停止信号パターン関連を記述するクラス
Definition: AtsP.h:72
virtual ~Atsp(void)
Definition: AtsP.cpp:47
int atsp_power_
ATS-P電源(0: 消灯, 1: 点灯)
Definition: AtsP.h:128
float atsp_deceleration_
ATS-Pブレーキ減速度[km/h/s].
Definition: AtsP.h:131
SectionP(Atsp *atsp)
Definition: AtsP.cpp:39
boost::array< int, ALL_PATTERN_P > pattern_is_valid_list_
全パターンの状態(0: 無効, 1: 有効)
Definition: AtsP.h:45
void SetPatternList(void)
速度照査パターンを作成する関数
Definition: AtsP.cpp:114
void ResetSwDownP(void)
復帰ボタンが押下された際に実行する関数
Definition: AtsP.cpp:422
void CollectPattern(void)
パターン情報を集約する関数
Definition: AtsP.cpp:361
boost::scoped_ptr< SectionP > section_p_
Definition: AtsP.h:116
void DisplayLamp(void)
ランプの点灯, 消灯を行う関数
Definition: AtsP.cpp:444
void StartP(void)
ATS-Pを投入する際に実行する関数
Definition: AtsP.cpp:123
int prev_aprch_lamp_
以前のパターン接近灯(0: 消灯, 1: 点灯)
Definition: AtsP.h:50
int next_atsp_ding_
1フレーム後のATS-Pベルの状態
Definition: AtsP.h:49
void BrakeExe(void)
ブレーキノッチを出力する関数
Definition: AtsP.cpp:429
void GetSection(float distance)
停止信号地点を取得する関数
Definition: AtsP.cpp:198
int AtsNotch
ATS確認ノッチ(B1)
Definition: AtsP.h:122
int CalcPatternSpd(int tget_spd, float pattern_end_loc)
パターン照査速度を算出する関数
Definition: AtsP.cpp:326
const int * Time
ゲーム内時刻[ms]
Definition: AtsP.h:124
void CalcPattern(void)
各パターン情報からパターン照査速度を算出し、パターン接近警報の状態を取得する関数
Definition: AtsP.cpp:378
int EmergencyNotch
非常ブレーキノッチ(HBを含む)
Definition: AtsP.h:120
boost::array< int, USR_PATTERN_P > pattern_tget_spd_
目標速度[km/h]
Definition: AtsP.h:107
void ExitP(void)
ATS-Pを遮断する際に実行する関数
Definition: AtsP.cpp:134
const int * ManualBrakeNotch
手動ブレーキノッチ(HBを含む)
Definition: AtsP.h:125
int is_immediate_stop_eb_
即時停止(非常)フラグ
Definition: AtsP.h:78
制限速度パターン関連を記述するクラス
Definition: AtsP.h:100
void ExeP(void)
Elapseで実行する関数
Definition: AtsP.cpp:479
int atsp_brake_notch_
ATS-P出力ブレーキノッチ(HBを含まない)
Definition: AtsP.h:132
Atsp(void)
Definition: AtsP.cpp:34
const Atsp * atsp_
Atspクラスのオブジェクトを格納するポインタ
Definition: AtsP.h:74
void PassedStopEb(float distance)
即時停止(非常)地上子を通過した際に実行する関数
Definition: AtsP.cpp:206
int atsp_ding_
ATS-Pベルの状態
Definition: AtsP.h:136
void InitP(void)
Initializeで実行する関数
Definition: AtsP.cpp:59
int is_stop_svc_
パターン接触フラグ
Definition: AtsP.h:81
const Atsp * atsp_
Atspクラスのオブジェクトを格納するポインタ
Definition: AtsP.h:102
void PlaySound(void)
サウンドを再生する関数
Definition: AtsP.cpp:471
boost::array< int, USR_PATTERN_P > pattern_is_valid_
パターンの状態(0: 無効, 1: 有効)
Definition: AtsP.h:106
int SearchPattern(float distance)
距離に対応する速度を返す関数
Definition: AtsP.cpp:294