Commit Iniziale
This commit is contained in:
113
shared/roboglue_shared.cpp
Normal file
113
shared/roboglue_shared.cpp
Normal file
@@ -0,0 +1,113 @@
|
||||
#include "roboglue_shared.h"
|
||||
|
||||
RoboGlue_SHARED::RoboGlue_SHARED(QSettings *set){
|
||||
settings=set;
|
||||
|
||||
robotVariables.insert(std::pair<std::string, int>("RDY",1));
|
||||
|
||||
|
||||
}
|
||||
////////////////////////////////////////////////////////////////
|
||||
/////////////////////// RESTORE FUNCTIONS /////////////////////
|
||||
/////////////////////////////////////////////////////////////
|
||||
void RoboGlue_SHARED::restoreInitSettings(){
|
||||
settings->beginGroup("init");
|
||||
initSettings.size=settings->value("size").toSize();
|
||||
initSettings.pos=settings->value("pos").toPoint();
|
||||
initSettings.autoMain=settings->value("automain").toBool();
|
||||
initSettings.autoCom=settings->value("autocom").toBool();
|
||||
initSettings.autoTrack=settings->value("autotrack").toBool();
|
||||
initSettings.autoGui=settings->value("autogui").toBool();
|
||||
settings->endGroup();
|
||||
}
|
||||
|
||||
void RoboGlue_SHARED::restoreComSettings() {
|
||||
settings->beginGroup("robot");
|
||||
// connection parameters
|
||||
settings->beginGroup("connection");
|
||||
comSettings.connection.robotIp=settings->value("robotip").toString().toStdString();
|
||||
comSettings.connection.robotPort=settings->value("robotport").toUInt();
|
||||
comSettings.connection.retry=static_cast<uchar>(settings->value("robotretry").toUInt());
|
||||
comSettings.connection.autoConnect=settings->value("autoconnect").toBool();
|
||||
comSettings.connection.prefix=settings->value("prefix").toChar().toLatin1();
|
||||
comSettings.connection.suffix=settings->value("suffix").toChar().toLatin1();
|
||||
settings->endGroup();
|
||||
// kinematic parameters
|
||||
settings->beginGroup("kine");
|
||||
int ksize=settings->beginReadArray("dhtable");
|
||||
for(int i=0; i<ksize; i++){
|
||||
settings->setArrayIndex(i);
|
||||
comSettings.kine.DHtable.DHa[i] = settings->value("dha").toDouble();
|
||||
comSettings.kine.DHtable.DHd[i] = settings->value("dhd").toDouble();
|
||||
comSettings.kine.DHtable.DHalpha[i] = settings->value("dhaplha").toDouble();
|
||||
comSettings.kine.DHtable.DHtheta[i] = settings->value("dhtheta").toDouble();
|
||||
}
|
||||
settings->endArray();
|
||||
comSettings.kine.maxReach = settings->value("maxreach").toFloat();
|
||||
settings->endGroup();
|
||||
// exchange variables
|
||||
settings->beginGroup("variables");
|
||||
// TODO something
|
||||
settings->endGroup();
|
||||
settings->endGroup();
|
||||
}
|
||||
|
||||
void RoboGlue_SHARED::restoreGuiSettings() {
|
||||
settings->beginGroup("gui");
|
||||
guiSettings.namePath=settings->value("namepath").toString().toStdString();
|
||||
settings->endGroup();
|
||||
}
|
||||
|
||||
void RoboGlue_SHARED::restoreMainSettings() {
|
||||
settings->beginGroup("main");
|
||||
settings->endGroup();
|
||||
}
|
||||
|
||||
void RoboGlue_SHARED::restoreTrackSettings() {
|
||||
settings->beginGroup("track");
|
||||
settings->endGroup();
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////
|
||||
/////////////////////// SAVE FUNCTIONS ////////////////////////
|
||||
//////////////////////////////////////////////////////////////
|
||||
void RoboGlue_SHARED::saveCommonSettings(){
|
||||
settings->beginGroup("common");
|
||||
settings->endGroup();
|
||||
|
||||
}
|
||||
|
||||
void RoboGlue_SHARED::saveInitSettings() {
|
||||
settings->beginGroup("init");
|
||||
settings->setValue("autocom",initSettings.autoCom);
|
||||
settings->setValue("autogui",initSettings.autoGui);
|
||||
settings->setValue("autotrack",initSettings.autoTrack);
|
||||
settings->setValue("automain",initSettings.autoMain);
|
||||
settings->endGroup();
|
||||
}
|
||||
|
||||
void RoboGlue_SHARED::saveComSettings() {
|
||||
settings->beginGroup("robot");
|
||||
settings->beginGroup("kine");
|
||||
settings->setValue("maxreach", comSettings.kine.maxReach);
|
||||
settings->setValue("prefix", comSettings.connection.prefix);
|
||||
settings->setValue("suffix", comSettings.connection.suffix);
|
||||
settings->endGroup();
|
||||
settings->endGroup();
|
||||
}
|
||||
|
||||
void RoboGlue_SHARED::saveGuiSettings() {
|
||||
settings->beginGroup("gui");
|
||||
settings->setValue("namepath", QString(guiSettings.namePath.c_str()));
|
||||
settings->endGroup();
|
||||
}
|
||||
|
||||
void RoboGlue_SHARED::saveMainSettings() {
|
||||
settings->beginGroup("main");
|
||||
settings->endGroup();
|
||||
}
|
||||
|
||||
void RoboGlue_SHARED::saveTrackSettings() {
|
||||
settings->beginGroup("track");
|
||||
settings->endGroup();
|
||||
}
|
||||
129
shared/roboglue_shared.h
Normal file
129
shared/roboglue_shared.h
Normal file
@@ -0,0 +1,129 @@
|
||||
#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.
|
||||
*
|
||||
*/
|
||||
|
||||
#include <QMutex>
|
||||
#include <QSettings>
|
||||
#include <QPoint>
|
||||
#include <QSize>
|
||||
#include <stdexcept>
|
||||
#include <libJson/json.hpp>
|
||||
#include <libURcom/URCLinterface.h>
|
||||
|
||||
using namespace nlohmann;
|
||||
|
||||
class RoboGlue_SHARED : public QObject{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
RoboGlue_SHARED(QSettings *set);
|
||||
QMutex mutex;
|
||||
|
||||
//////////// COMMON MODULES STATUS ///////////////
|
||||
struct {
|
||||
bool isRecording = false;
|
||||
bool isPlaying = false;
|
||||
bool isRealtime = false;
|
||||
bool isFileOpen = false;
|
||||
} 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("192.168.0.31");
|
||||
uint robotPort = 30002;
|
||||
unsigned char retry = 5;
|
||||
bool autoConnect = false;
|
||||
char prefix = '{';
|
||||
char suffix = '}';
|
||||
} connection;
|
||||
struct{
|
||||
kineDH_t DHtable;
|
||||
float maxReach = 1.2;
|
||||
} kine;
|
||||
std::vector<std::string> subList {
|
||||
{"roboglue_com/ros2com/commands"},
|
||||
{"roboglue_com/ros2com/coordinates"},
|
||||
{"roboglue_com/ros2com/state"}
|
||||
};
|
||||
std::vector<std::string> pubList {
|
||||
{"roboglue_com/com2ros/commands"},
|
||||
{"roboglue_com/com2ros/coordinates"},
|
||||
{"roboglue_com/com2ros/state"}
|
||||
};
|
||||
enum {
|
||||
COMM, COORD, STAT
|
||||
} tList;
|
||||
} 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);
|
||||
};
|
||||
|
||||
#endif // ROBOGLUE_SHARED_H
|
||||
Reference in New Issue
Block a user