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

@ -552,6 +552,7 @@ int Locomotives::Loop() {
Locomotive *loco = NULL;
string block;
string sensor;
JSONParse jp;
for (lnum = 0; lnum < max; lnum++) if (locomotives[lnum].name[0] != 0) {
loco = &locomotives[lnum];
@ -630,6 +631,13 @@ int Locomotives::Loop() {
loco->auto_onroute = LOCO_OR_STOPWAIT;
server->railways.UnLockWay(loco->auto_way, loco->name);
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;
timer_start(&loco->auto_timenext);
}

Loading…
Cancel
Save