fonctionnement server - client, avec des socket
2 niveaux de routages des données : 1er niveau premièrement on reçois des infos par radio tranmise au serveur, chaque data est labellé d'une manière unique. Les différente interface peuvent s'abonner à des donnée en faisant une requête. Lorsque qu'une données reçu par le serveur de la radio esr reçu elle regarde pour chacun des clients si il a des données auxquel il était abonnée. Si c'est le cas, les données sont transmisent en Json.
2ème niveau: les données reçu doivent être update les bons champs sur l'UI, avec le ClientManager, lorsqu'un panneau est crée il peut s'abonner a certains champs de données et passe une callback qui est un setter pour ce champ de données
note pour les requête :
get :
getSerialStatus => response = "serialNameUsed", "serialStatus" (fields expected)
when adding stuff to res make sure to compile the qrc with the following command :
rcc -binary resources.qrc -o resources.rcc
In order to compile the 2 parts of the software you need to install qt6 base dev, on ubuntu it gives the following:
sudo apt install qt6-base-dev
Then some other dependencies required need to be installed:
sudo apt install libqt6svg6-dev libqt6serialport6-dev qtbase5-dev-tools libboost-all-dev libgtest-dev
Then you must compile the resources by going:
rcc -binary GUI/res/resources.qrc -o GUI/res/resources.rcc
After this you can install create a build directory at the root of the project:
mkdir build && cd build
And build all the targets:
cmake .. && make
The executable of the server and the GUI would appear in build/Server/FirehornServer and build/GUI/FirehornGUI. Alternatively you can do the following command to run autoamtically the server along the gui:
make run_gui
QTSvg : sudo apt-get -y install libqt6svg6-dev
Rcc command : fedora : sudo dnf install qt-devel
SerialPort : ubuntu : sudo apt-get install libqt5serialport5-dev
Boost : ubuntu : sudo apt install libboost-all-dev
install gtest : sudo apt-get install libgtest-dev
communication from client to server :
{
header: post | get | internal,
payload: {
source : <client-ip>,
args*...
}
}
communication from sever to client :
{
header: post | get | internal,
payload: {
source : GSE | AV,
args*...
}
}
get :
getSerialStatus => response = "serialNameUsed", "serialStatus" (fields expected)
-
Server respond and make command from clients
-
Stress tests
-
authentication
-
multiple concurrent input handler
-
separate data handling in a different thread
-
Mettre le AV data pannels sur des cards