first automode is working

origin
steffen 5 years ago
parent c0eb61ed8b
commit 39ff08c896

@ -98,6 +98,7 @@ Block Blocks::GetBlockFromJSON(JSONParse *j) {
bl.name[0] = 0; bl.name[0] = 0;
bl.flags = 0; bl.flags = 0;
bl.lockedby[0] = 0;
j->GetValue("name", &s); j->GetValue("name", &s);
strncpy (bl.name, s.c_str(), REFERENCENAME_LEN); strncpy (bl.name, s.c_str(), REFERENCENAME_LEN);
@ -211,11 +212,13 @@ int Blocks::SetLockedby (string blname, string lockedby, int lock_onoff) {
JSONParse jp; JSONParse jp;
int res = -1; int res = -1;
debug (0, "Blocks:SetLockedby block:'%s' locked for '%s' locked:%d", blname.c_str(), lockedby.c_str(), lock_onoff);
Lock(); Lock();
if ((bl = FindBlock(blname)) != NULL) { if ((bl = FindBlock(blname)) != NULL) {
if (lockedby.compare (bl->lockedby) == 0) res = 1; if (lockedby.compare (bl->lockedby) == 0 || bl->lockedby[0] == 0) {
else if (bl->lockedby[0] == 0) { if (lock_onoff) strncpy (bl->lockedby, lockedby.c_str(), REFERENCENAME_LEN);
strncpy (bl->lockedby, lockedby.c_str(), REFERENCENAME_LEN); else bl->lockedby[0] = 0;
jp.AddObject("block",_GetJSON(bl)); jp.AddObject("block",_GetJSON(bl));
if(network) network->ChangeListPushToAll(jp.ToString()); if(network) network->ChangeListPushToAll(jp.ToString());
res = 1; res = 1;

@ -552,6 +552,7 @@ int Locomotives::Loop() {
Locomotive *loco = NULL; Locomotive *loco = NULL;
string block; string block;
string sensor; string sensor;
JSONParse jp;
for (lnum = 0; lnum < max; lnum++) if (locomotives[lnum].name[0] != 0) { for (lnum = 0; lnum < max; lnum++) if (locomotives[lnum].name[0] != 0) {
loco = &locomotives[lnum]; loco = &locomotives[lnum];
@ -630,6 +631,13 @@ int Locomotives::Loop() {
loco->auto_onroute = LOCO_OR_STOPWAIT; loco->auto_onroute = LOCO_OR_STOPWAIT;
server->railways.UnLockWay(loco->auto_way, loco->name); server->railways.UnLockWay(loco->auto_way, loco->name);
strncpy (loco->blockassign, loco->blocknext, REFERENCENAME_LEN); strncpy (loco->blockassign, loco->blocknext, REFERENCENAME_LEN);
if (strncmp (loco->blockassign, loco->blockdest, REFERENCENAME_LEN) == 0) {
loco->blockdest[0] = 0;
jp.Clear();
jp.AddObject("locomotive",_GetJSON(lnum));
if(network) network->ChangeListPushToAll(jp.ToString());
}
loco->blocknext[0] = 0; loco->blocknext[0] = 0;
timer_start(&loco->auto_timenext); timer_start(&loco->auto_timenext);
} }

Loading…
Cancel
Save