diff --git a/Bugs.txt b/Bugs.txt index b5f09e5..49d9c38 100644 --- a/Bugs.txt +++ b/Bugs.txt @@ -1,4 +1,4 @@ 2020-02-09: -- Reverse funktioniert nicht immer. +- Reverse funktioniert nicht immer? diff --git a/ChangeLog b/ChangeLog index 0b49d79..f7edded 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,6 @@ +2020-03-22: +- adding server status messages + 2020-03-06: - fixed: speed and stepcoding diff --git a/server/network.cc b/server/network.cc index dcbcb7e..557e974 100644 --- a/server/network.cc +++ b/server/network.cc @@ -138,7 +138,6 @@ void Network::ChangeListPushToAll(string changes) { }; - int Network::ServerLoop() { UNIX *u = NULL; @@ -255,11 +254,17 @@ int Network::ClientLoop(UNIX *client) { je.Clear(); je.Set("success", 1); jsonout.AddObject(je); + je.Clear(); + je.Set("serverstatus", server->GetStatus()); + jsonout.AddObject(je); } else { je.Clear(); je.Set("success", 0); jsonout.AddObject(je); + je.Clear(); + je.Set("serverstatus", "ERROR"); + jsonout.AddObject(je); } s = jsonout.ToString(); client->Write((char*)s.c_str(), strlen(s.c_str())); diff --git a/server/server.cc b/server/server.cc index 0b5d258..015e9f8 100644 --- a/server/server.cc +++ b/server/server.cc @@ -44,6 +44,7 @@ Server::Server() { thread = 0; thread_running = 0; railways.SetSize(200, 200); + status_text = "init server"; Load (); }; @@ -66,13 +67,11 @@ void Server::ThreadProcess() { void Server::LockThread() { - debug(DEBUG_INFO, "%s:%d Server::LockThread", __FILE__, __LINE__); pthread_mutex_lock (&mtx); }; void Server::UnLockThread() { - debug (DEBUG_INFO, "%s:%d Server::UnLockThreads", __FILE__, __LINE__); pthread_mutex_unlock (&mtx); }; @@ -101,4 +100,42 @@ bool Server::IsChanged() { } +// +// Set Mode Auto +void Server::ModeAuto() { + debug (0, "%s:%d * Mode Auto", __FILE__, __LINE__); + status_text = "Mode Auto"; +} + +// +// Set Mode Manual +void Server::ModeManual() { + debug (0, "%s:%d * Mode Manual", __FILE__, __LINE__); + status_text = "Mode Manual"; +} + +// +// Set Mode Error +// FIXME: maybe adding error text as parameter? +void Server::ModeError(string text) { + debug (0, "%s:%d * Mode Error :'%s'", __FILE__, __LINE__, text.c_str()); + status_text = "Error:'" + text + "'"; +} +// +// Set Mode Reset +void Server::ModeReset() { + debug (0, "%s:%d * Reset Data", __FILE__, __LINE__); + status_text = "Mode Reset"; +}; + + +string Server::GetStatus(void) { + string retval; + + LockThread(); + retval = status_text; + UnLockThread(); + + return retval; +}; diff --git a/server/server.h b/server/server.h index 2b829a6..4e530ed 100644 --- a/server/server.h +++ b/server/server.h @@ -29,7 +29,7 @@ #include "sensor.h" #include "interface.h" -enum { +enum SSTATUS { SSTATUS_STARTUP, SSTATUS_RESET, SSTATUS_MANUAL, @@ -38,7 +38,7 @@ enum { SSTATUS_MAX }; -enum { +enum MRESET { MRESET_STEP_INTERFACES, MRESET_STEP_LOCOMOTIVES, MRESET_STEP_TURNOUTS, @@ -47,8 +47,8 @@ enum { MRESET_STEP_MAX }; -struct { - int mr_step; // current step +struct s_ModeResetData{ + int mr_step; // current step int mr_timestamp; // timestamp ( needed for times ) int mr_idx; // mode index } typedef ModeResetData; @@ -57,8 +57,8 @@ struct { class Server { private: - int status; // holds the current mode - int status_progress; // to return a value from 0-100 + int mode; // holds the current mode + int mode_progress; // to return a value from 0-100 string status_text; // some text ModeResetData data_reset; @@ -119,10 +119,11 @@ public: // FIXME: // FIXME: JSONParse GetJSONServerStatus(); - void ModeReset(); // mode Reset if finished will go to Manual - void ModeManual(); // Manual Mode - void ModeAuto(); // only allowed if Manual was set - void ModeError(); // will cut power and keep this mode, until reset or Mode Manual + void ModeReset(); // mode Reset if finished will go to Manual + void ModeManual(); // Manual Mode + void ModeAuto(); // only allowed if Manual was set + void ModeError(string text); // will cut power and keep this mode, until reset or Mode Manual + string GetStatus(); // return status ///////////////////////////////////////// // Railway @@ -139,7 +140,6 @@ public: int TurnoutDelete(string name) { return turnouts.Delete(name); }; int TurnoutSet(string name, int active) { return turnouts.Set(name, active); }; - ///////////////////////////////////////// // Interface int InterfaceChange(Interface *i) { return interfaces.Change(i); }; diff --git a/server/session.cc b/server/session.cc index def98e5..6b13e37 100644 --- a/server/session.cc +++ b/server/session.cc @@ -72,7 +72,7 @@ int Session::ProcessData(JSONParse *jin, JSONParse *jout) { AddJSONTurnout(jin); } else if (command.compare("delturnout") == 0) { - debug (0, "* Session del Turnout"); + debug (0, "* Session Del Turnout"); DelJSONTurnout(jin); } else if (command.compare("addlocomotive") == 0) { @@ -113,8 +113,7 @@ int Session::ProcessData(JSONParse *jin, JSONParse *jout) { } else if (command.compare("resetdata") == 0) { debug (0, "* Reset All Data"); -#warning FIXME: continue here -// server->ResetData(); + server->ModeReset(); } else if (command.compare("getall") == 0) { json.Clear(); diff --git a/webinterface/index.html b/webinterface/index.html index 5dd92f7..c0dc5f4 100644 --- a/webinterface/index.html +++ b/webinterface/index.html @@ -43,8 +43,8 @@ Block -
notconnected
-
editinfo
+
infoclient
+
infoserver
@@ -100,7 +100,7 @@ $(document).ready(function() { var client = document.getElementById("page_main"); var canvas = trackCreate(5, 5); - var text = document.getElementById("infoline"); + var text = document.getElementById("infoserver"); text.innerHTML = "---"; client.appendChild (canvas); diff --git a/webinterface/serverinout.js b/webinterface/serverinout.js index e560534..863493a 100644 --- a/webinterface/serverinout.js +++ b/webinterface/serverinout.js @@ -39,23 +39,23 @@ function serverinout(request, callback) { jsonData = JSON.parse(response); if (jsonData.success == "1") { - var serverstatus = document.getElementById("infoserverstatus"); - serverstatus.innerHTML = "connected"; + var clientstatus = document.getElementById("infoclient"); + clientstatus.innerHTML = "connected"; callback(jsonData); } else { - var serverstatus = document.getElementById("infoserverstatus"); - serverstatus.innerHTML = "-trying-"; + var clientstatus = document.getElementById("infoclient"); + clientstatus.innerHTML = "-trying-"; } // ENABLE LATER } catch(err) { -// ENABLE LATER var serverstatus = document.getElementById("infoserverstatus"); +// ENABLE LATER var serverstatus = document.getElementById("infoserver"); // ENABLE LATER serverstatus.innerHTML = "-error-"; // ENABLE LATER } }, error: function(error) { - var serverstatus = document.getElementById("infoserverstatus"); - serverstatus.innerHTML = "ajax error"; + var status = document.getElementById("infoclient"); + status.innerHTML = "ajax error"; } }); }; @@ -92,7 +92,7 @@ function serverinout_Save(data) { function serverinout_defaultCallback(data) { -// if (data.changes) if (data.changes.length > 0) debug ("From Server :" + JSON.stringify(data)); + if (data.changes) if (data.changes.length > 0) debug ("From Server :" + JSON.stringify(data)); if (data.info) { } if (data.sid && data.rid) { @@ -105,9 +105,10 @@ function serverinout_defaultCallback(data) { for (var i = 0; i < data.changes.length; i++) { // // infoline - if (data.changes[i].infoline) { - var text = document.getElementById("infoline"); - text.innerHTML = data.changes[i].infoline; + if (data.serverstatus) { + var text = document.getElementById("infoserver"); + debug ("SERVER STATUS"); + text.innerHTML = data.serverstatus; } //