adding server status messages

origin
steffen 6 years ago
parent 12441ee0fb
commit 3009c38ac9

@ -1,4 +1,4 @@
2020-02-09: 2020-02-09:
- Reverse funktioniert nicht immer. - Reverse funktioniert nicht immer?

@ -1,3 +1,6 @@
2020-03-22:
- adding server status messages
2020-03-06: 2020-03-06:
- fixed: speed and stepcoding - fixed: speed and stepcoding

@ -138,7 +138,6 @@ void Network::ChangeListPushToAll(string changes) {
}; };
int Network::ServerLoop() { int Network::ServerLoop() {
UNIX *u = NULL; UNIX *u = NULL;
@ -255,11 +254,17 @@ int Network::ClientLoop(UNIX *client) {
je.Clear(); je.Clear();
je.Set("success", 1); je.Set("success", 1);
jsonout.AddObject(je); jsonout.AddObject(je);
je.Clear();
je.Set("serverstatus", server->GetStatus());
jsonout.AddObject(je);
} }
else { else {
je.Clear(); je.Clear();
je.Set("success", 0); je.Set("success", 0);
jsonout.AddObject(je); jsonout.AddObject(je);
je.Clear();
je.Set("serverstatus", "ERROR");
jsonout.AddObject(je);
} }
s = jsonout.ToString(); s = jsonout.ToString();
client->Write((char*)s.c_str(), strlen(s.c_str())); client->Write((char*)s.c_str(), strlen(s.c_str()));

@ -44,6 +44,7 @@ Server::Server() {
thread = 0; thread = 0;
thread_running = 0; thread_running = 0;
railways.SetSize(200, 200); railways.SetSize(200, 200);
status_text = "init server";
Load (); Load ();
}; };
@ -66,13 +67,11 @@ void Server::ThreadProcess() {
void Server::LockThread() { void Server::LockThread() {
debug(DEBUG_INFO, "%s:%d Server::LockThread", __FILE__, __LINE__);
pthread_mutex_lock (&mtx); pthread_mutex_lock (&mtx);
}; };
void Server::UnLockThread() { void Server::UnLockThread() {
debug (DEBUG_INFO, "%s:%d Server::UnLockThreads", __FILE__, __LINE__);
pthread_mutex_unlock (&mtx); 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;
};

@ -29,7 +29,7 @@
#include "sensor.h" #include "sensor.h"
#include "interface.h" #include "interface.h"
enum { enum SSTATUS {
SSTATUS_STARTUP, SSTATUS_STARTUP,
SSTATUS_RESET, SSTATUS_RESET,
SSTATUS_MANUAL, SSTATUS_MANUAL,
@ -38,7 +38,7 @@ enum {
SSTATUS_MAX SSTATUS_MAX
}; };
enum { enum MRESET {
MRESET_STEP_INTERFACES, MRESET_STEP_INTERFACES,
MRESET_STEP_LOCOMOTIVES, MRESET_STEP_LOCOMOTIVES,
MRESET_STEP_TURNOUTS, MRESET_STEP_TURNOUTS,
@ -47,8 +47,8 @@ enum {
MRESET_STEP_MAX MRESET_STEP_MAX
}; };
struct { struct s_ModeResetData{
int mr_step; // current step int mr_step; // current step
int mr_timestamp; // timestamp ( needed for times ) int mr_timestamp; // timestamp ( needed for times )
int mr_idx; // mode index int mr_idx; // mode index
} typedef ModeResetData; } typedef ModeResetData;
@ -57,8 +57,8 @@ struct {
class Server { class Server {
private: private:
int status; // holds the current mode int mode; // holds the current mode
int status_progress; // to return a value from 0-100 int mode_progress; // to return a value from 0-100
string status_text; // some text string status_text; // some text
ModeResetData data_reset; ModeResetData data_reset;
@ -119,10 +119,11 @@ public:
// FIXME: // FIXME:
// FIXME: // FIXME:
JSONParse GetJSONServerStatus(); JSONParse GetJSONServerStatus();
void ModeReset(); // mode Reset if finished will go to Manual void ModeReset(); // mode Reset if finished will go to Manual
void ModeManual(); // Manual Mode void ModeManual(); // Manual Mode
void ModeAuto(); // only allowed if Manual was set void ModeAuto(); // only allowed if Manual was set
void ModeError(); // will cut power and keep this mode, until reset or Mode Manual void ModeError(string text); // will cut power and keep this mode, until reset or Mode Manual
string GetStatus(); // return status
///////////////////////////////////////// /////////////////////////////////////////
// Railway // Railway
@ -139,7 +140,6 @@ public:
int TurnoutDelete(string name) { return turnouts.Delete(name); }; int TurnoutDelete(string name) { return turnouts.Delete(name); };
int TurnoutSet(string name, int active) { return turnouts.Set(name, active); }; int TurnoutSet(string name, int active) { return turnouts.Set(name, active); };
///////////////////////////////////////// /////////////////////////////////////////
// Interface // Interface
int InterfaceChange(Interface *i) { return interfaces.Change(i); }; int InterfaceChange(Interface *i) { return interfaces.Change(i); };

@ -72,7 +72,7 @@ int Session::ProcessData(JSONParse *jin, JSONParse *jout) {
AddJSONTurnout(jin); AddJSONTurnout(jin);
} }
else if (command.compare("delturnout") == 0) { else if (command.compare("delturnout") == 0) {
debug (0, "* Session del Turnout"); debug (0, "* Session Del Turnout");
DelJSONTurnout(jin); DelJSONTurnout(jin);
} }
else if (command.compare("addlocomotive") == 0) { else if (command.compare("addlocomotive") == 0) {
@ -113,8 +113,7 @@ int Session::ProcessData(JSONParse *jin, JSONParse *jout) {
} }
else if (command.compare("resetdata") == 0) { else if (command.compare("resetdata") == 0) {
debug (0, "* Reset All Data"); debug (0, "* Reset All Data");
#warning FIXME: continue here server->ModeReset();
// server->ResetData();
} }
else if (command.compare("getall") == 0) { else if (command.compare("getall") == 0) {
json.Clear(); json.Clear();

@ -43,8 +43,8 @@
<a href="#" onclick="blockdetail_show(this);">Block</a> <a href="#" onclick="blockdetail_show(this);">Block</a>
</div> </div>
</div> </div>
<div id="infoserverstatus" style="float:right; padding: 8px 8px;">notconnected</div> <div id="infoclient" style="float:right; padding: 8px 8px;">infoclient</div>
<div id="infoline" style="float:right; padding: 8px 8px;">editinfo</div> <div id="infoserver" style="float:right; padding: 8px 8px;">infoserver</div>
</div> </div>
<div class="page_side"> <div class="page_side">
@ -100,7 +100,7 @@ $(document).ready(function() {
var client = document.getElementById("page_main"); var client = document.getElementById("page_main");
var canvas = trackCreate(5, 5); var canvas = trackCreate(5, 5);
var text = document.getElementById("infoline"); var text = document.getElementById("infoserver");
text.innerHTML = "---"; text.innerHTML = "---";
client.appendChild (canvas); client.appendChild (canvas);

@ -39,23 +39,23 @@ function serverinout(request, callback) {
jsonData = JSON.parse(response); jsonData = JSON.parse(response);
if (jsonData.success == "1") if (jsonData.success == "1")
{ {
var serverstatus = document.getElementById("infoserverstatus"); var clientstatus = document.getElementById("infoclient");
serverstatus.innerHTML = "connected"; clientstatus.innerHTML = "connected";
callback(jsonData); callback(jsonData);
} }
else else
{ {
var serverstatus = document.getElementById("infoserverstatus"); var clientstatus = document.getElementById("infoclient");
serverstatus.innerHTML = "-trying-"; clientstatus.innerHTML = "-trying-";
} }
// ENABLE LATER } catch(err) { // 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 serverstatus.innerHTML = "-error-";
// ENABLE LATER } // ENABLE LATER }
}, },
error: function(error) { error: function(error) {
var serverstatus = document.getElementById("infoserverstatus"); var status = document.getElementById("infoclient");
serverstatus.innerHTML = "ajax error"; status.innerHTML = "ajax error";
} }
}); });
}; };
@ -92,7 +92,7 @@ function serverinout_Save(data) {
function serverinout_defaultCallback(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.info) {
} }
if (data.sid && data.rid) { if (data.sid && data.rid) {
@ -105,9 +105,10 @@ function serverinout_defaultCallback(data) {
for (var i = 0; i < data.changes.length; i++) { for (var i = 0; i < data.changes.length; i++) {
// //
// infoline // infoline
if (data.changes[i].infoline) { if (data.serverstatus) {
var text = document.getElementById("infoline"); var text = document.getElementById("infoserver");
text.innerHTML = data.changes[i].infoline; debug ("SERVER STATUS");
text.innerHTML = data.serverstatus;
} }
// //

Loading…
Cancel
Save