|
|
|
|
@ -859,7 +859,6 @@ int Locomotives::Loco_OnRoute(Locomotive *loco) {
|
|
|
|
|
string s_enter;
|
|
|
|
|
string s_slow;
|
|
|
|
|
string s_stop;
|
|
|
|
|
string s_shortstop;
|
|
|
|
|
int dir_reverse = 0;
|
|
|
|
|
char *tmpc = NULL;
|
|
|
|
|
string way;
|
|
|
|
|
@ -874,18 +873,16 @@ int Locomotives::Loco_OnRoute(Locomotive *loco) {
|
|
|
|
|
if (loco->blocknext[0] == '-') dir_reverse = 1;
|
|
|
|
|
else dir_reverse = 0;
|
|
|
|
|
|
|
|
|
|
s_shortstop = server->blocks.GetSensorShortStop(dir_reverse, block);
|
|
|
|
|
s_stop = server->blocks.GetSensorStop(dir_reverse, block);
|
|
|
|
|
s_slow = server->blocks.GetSensorSlow(dir_reverse, block);
|
|
|
|
|
s_enter = server->blocks.GetSensorEnter(dir_reverse, block);
|
|
|
|
|
s_stop = server->blocks.GetSensorStop(dir_reverse, block, loco->flags);
|
|
|
|
|
s_slow = server->blocks.GetSensorSlow(dir_reverse, block, loco->flags);
|
|
|
|
|
s_enter = server->blocks.GetSensorEnter(dir_reverse, block, loco->flags);
|
|
|
|
|
|
|
|
|
|
if ( server->sensors.GetActive(s_enter) == 1 || server->sensors.GetActive(s_stop) == 1 ||
|
|
|
|
|
server->sensors.GetActive(s_slow) == 1 || server->sensors.GetActive(s_shortstop) == 1) { // entering block?
|
|
|
|
|
server->sensors.GetActive(s_slow) == 1) { // entering block?
|
|
|
|
|
|
|
|
|
|
debug (0, "* Locomotive '%s' EnterBlock '%s'", loco->name, loco->blocknext);
|
|
|
|
|
debug (0, "* %s,%d Sensor Enter '%s' = %d", __FILE__, __LINE__, s_enter.c_str(), server->sensors.GetActive(s_enter));
|
|
|
|
|
debug (0, "* %s,%d Sensor Slow '%s' = %d", __FILE__, __LINE__, s_slow.c_str(), server->sensors.GetActive(s_slow));
|
|
|
|
|
debug (0, "* %s,%d Sensor Sh.Stop '%s' = %d", __FILE__, __LINE__, s_shortstop.c_str(), server->sensors.GetActive(s_shortstop));
|
|
|
|
|
debug (0, "* %s,%d Sensor Stop '%s' = %d", __FILE__, __LINE__, s_stop.c_str(), server->sensors.GetActive(s_stop));
|
|
|
|
|
|
|
|
|
|
// assignment <-- next, the assignment has to be checked
|
|
|
|
|
@ -943,7 +940,6 @@ int Locomotives::Loco_BlockEnterStop(Locomotive *loco) {
|
|
|
|
|
string s_enter;
|
|
|
|
|
string s_slow;
|
|
|
|
|
string s_stop;
|
|
|
|
|
string s_shortstop;
|
|
|
|
|
int dir_reverse = 0;
|
|
|
|
|
string way;
|
|
|
|
|
|
|
|
|
|
@ -955,14 +951,11 @@ int Locomotives::Loco_BlockEnterStop(Locomotive *loco) {
|
|
|
|
|
if (loco->blockassign[0] == '-') dir_reverse = 1;
|
|
|
|
|
else dir_reverse = 0;
|
|
|
|
|
|
|
|
|
|
s_shortstop = server->blocks.GetSensorShortStop(dir_reverse, block);
|
|
|
|
|
s_stop = server->blocks.GetSensorStop(dir_reverse, block);
|
|
|
|
|
s_slow = server->blocks.GetSensorSlow(dir_reverse, block);
|
|
|
|
|
s_enter = server->blocks.GetSensorEnter(dir_reverse, block);
|
|
|
|
|
|
|
|
|
|
if ( server->sensors.GetActive(s_stop) == 1 ||
|
|
|
|
|
((loco->flags & LOCO_F_SHORTTRAIN) && server->sensors.GetActive(s_shortstop) == 1)) {
|
|
|
|
|
s_stop = server->blocks.GetSensorStop(dir_reverse, block, loco->flags);
|
|
|
|
|
s_slow = server->blocks.GetSensorSlow(dir_reverse, block, loco->flags);
|
|
|
|
|
s_enter = server->blocks.GetSensorEnter(dir_reverse, block, loco->flags);
|
|
|
|
|
|
|
|
|
|
if (server->sensors.GetActive(s_stop) == 1) {
|
|
|
|
|
debug (0, "Locomotives::Loop EnterBlockStop '%s' UnLockWay\n", loco->name);
|
|
|
|
|
SetSpeed(loco->name, 0);
|
|
|
|
|
loco->auto_onroute = LOCO_OR_STOPWAIT;
|
|
|
|
|
@ -996,13 +989,11 @@ int Locomotives::Loco_BlockEnterNext(Locomotive *loco) {
|
|
|
|
|
if (loco->blockassign[0] == '-') dir_reverse = 1;
|
|
|
|
|
else dir_reverse = 0;
|
|
|
|
|
|
|
|
|
|
s_shortstop = server->blocks.GetSensorShortStop(dir_reverse, block);
|
|
|
|
|
s_stop = server->blocks.GetSensorStop(dir_reverse, block);
|
|
|
|
|
s_slow = server->blocks.GetSensorSlow(dir_reverse, block);
|
|
|
|
|
s_enter = server->blocks.GetSensorEnter(dir_reverse, block);
|
|
|
|
|
s_stop = server->blocks.GetSensorStop(dir_reverse, block, loco->flags);
|
|
|
|
|
s_slow = server->blocks.GetSensorSlow(dir_reverse, block, loco->flags);
|
|
|
|
|
s_enter = server->blocks.GetSensorEnter(dir_reverse, block, loco->flags);
|
|
|
|
|
|
|
|
|
|
if ( server->sensors.GetActive(s_stop) == 1 ||
|
|
|
|
|
((loco->flags & LOCO_F_SHORTTRAIN) && server->sensors.GetActive(s_shortstop) == 1)) {
|
|
|
|
|
if (server->sensors.GetActive(s_stop) == 1) {
|
|
|
|
|
|
|
|
|
|
if (loco->auto_timenext.tv_sec > 0) {
|
|
|
|
|
//
|
|
|
|
|
|