149 lines
4.4 KiB
C++
149 lines
4.4 KiB
C++
#ifndef ROBOGLUE_SHARED_H
|
|
#define ROBOGLUE_SHARED_H
|
|
|
|
/*
|
|
* Created on: Jan 22, 2019
|
|
* Author: emanuele
|
|
*
|
|
* Modulo di memoria condivisa tra i thread per lo scambio di strutture dati che non è permesso
|
|
* nell'invio di segnali.
|
|
* Conterrà anche le funzioni che si occupano di salvare e ripristinare le configurazioni del software.
|
|
*
|
|
* 20190122 - Prima Scittura
|
|
* 20190123 - Implementate le funzioni che leggono il file di configurazione e ripristinano
|
|
* le impostazioni ad ogni avvio.
|
|
* Le impostazioni persistenti sono raggruppate in strutture accessibili ai vari moduli.
|
|
* le funzioni in questa classe si occupano solo di ripristinare i valori salvati
|
|
* ogni modulo è responsabile di aggiornare i valori nella sua struttra e nel file
|
|
* di configurazione che viene salvato alla chiusura del programma.
|
|
* Questo perchè gli eventi che modificano le configurazioni sono molteplici e sparsi in
|
|
* tutti i moduli
|
|
* QUESTA COSA VA GIÀ CAMBIATA PERCHÈ È TROPPO CONFUSIONARIA!!
|
|
* 20190124 - Implementati tutti i metodi che salvano e ripristinano le configurazioni.
|
|
* 20190311 - Aggiunta la struttura che tiene gli stati che devono rimanere comuni ai moduli.
|
|
* 20191030 - Documentazione spostata in GIT
|
|
*/
|
|
|
|
#include <QMutex>
|
|
#include <QSettings>
|
|
#include <QPoint>
|
|
#include <QSize>
|
|
#include <QTimer>
|
|
#include <stdexcept>
|
|
#include <ctime>
|
|
#include <libJson/json.hpp>
|
|
#include <libURcom/URCLinterface.h>
|
|
#include <boost/algorithm/string.hpp>
|
|
|
|
using namespace nlohmann;
|
|
|
|
class RoboGlue_SHARED : public QObject{
|
|
Q_OBJECT
|
|
|
|
public:
|
|
RoboGlue_SHARED(QSettings *set);
|
|
virtual ~RoboGlue_SHARED();
|
|
QMutex mutex;
|
|
QTimer* statusTimer;
|
|
|
|
//////////// COMMON MODULES STATUS ///////////////
|
|
struct {
|
|
bool isRecording = false;
|
|
bool isPlaying = false;
|
|
bool isRealtime = false;
|
|
bool isFileOpen = false;
|
|
// ROS node status
|
|
bool relayRunning = false;
|
|
bool followerRunning = false;
|
|
bool recorderRunning = false;
|
|
bool broadcasterRunning = false;
|
|
// ROS node last seen
|
|
double relayLast = static_cast<double>(time(NULL));
|
|
double followerLast = static_cast<double>(time(NULL));
|
|
double recorderLast = static_cast<double>(time(NULL));
|
|
double broadcasterLast = static_cast<double>(time(NULL));
|
|
double relayTime = static_cast<double>(time(NULL));
|
|
double followerTime = static_cast<double>(time(NULL));
|
|
double recorderTime = static_cast<double>(time(NULL));
|
|
double broadcasterTime = static_cast<double>(time(NULL));
|
|
} commonStatus;
|
|
|
|
/////////// PERMANENT SETTINGS VARIABLES /////////
|
|
struct{
|
|
json baseMessage;
|
|
} commonSettings;
|
|
|
|
struct {
|
|
QPoint pos;
|
|
QSize size;
|
|
std::string version;
|
|
bool autoMain;
|
|
bool autoGui;
|
|
bool autoTrack;
|
|
bool autoCom;
|
|
} initSettings;
|
|
|
|
struct {
|
|
struct {
|
|
std::string robotIp = std::string("localhost");
|
|
uint robotPort = 30002;
|
|
unsigned char retry = 5;
|
|
bool autoConnect = false;
|
|
char prefix = '{';
|
|
char suffix = '}';
|
|
} connection;
|
|
struct{
|
|
kineDH_t DHtable;
|
|
float maxReach = 1.2;
|
|
} kine;
|
|
double deadTime = 1.0; //default value
|
|
std::map<std::string, std::string> subMap;
|
|
std::map<std::string, std::string> pubMap;
|
|
std::map<std::string, std::string> nodeNames;
|
|
enum {
|
|
COMM, COORD, STAT
|
|
} tList;
|
|
enum {
|
|
TYPE, NODE, TS
|
|
};
|
|
} comSettings;
|
|
|
|
struct {
|
|
std::string namePath = "../RoboGlue/names.json";
|
|
} guiSettings;
|
|
|
|
struct {
|
|
|
|
} mainSettings;
|
|
|
|
struct {
|
|
|
|
} trackSettings;
|
|
|
|
QSettings *settings;
|
|
clientData_t robotData;
|
|
std::map<std::string,int> robotVariables;
|
|
|
|
void restoreCommonSettings();
|
|
void restoreInitSettings();
|
|
void restoreComSettings();
|
|
void restoreGuiSettings();
|
|
void restoreMainSettings();
|
|
void restoreTrackSettings();
|
|
|
|
void saveCommonSettings();
|
|
void saveInitSettings();
|
|
void saveComSettings();
|
|
void saveGuiSettings();
|
|
void saveMainSettings();
|
|
void saveTrackSettings();
|
|
|
|
signals:
|
|
void commonStatusChange(void);
|
|
|
|
private slots:
|
|
void on_statusTimer(void);
|
|
};
|
|
|
|
#endif // ROBOGLUE_SHARED_H
|