Outils pour utilisateurs

Outils du site


projets:archnetbc

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
projets:archnetbc [2025/07/29 14:46] floprojets:archnetbc [2025/07/31 09:54] (Version actuelle) 176.145.87.215
Ligne 1: Ligne 1:
-====== Architecture réseau Bridge-Command ======+======= Architecture réseau Bridge-Command =======
  
 Cette section définit l'architecture réseau qui régit le logiciel Bridge-Command (BC) Cette section définit l'architecture réseau qui régit le logiciel Bridge-Command (BC)
  
-===== Protocole/Librairie =====+====== Protocole/Librairie ======
  
 La librairie utilisée dans BC est Enet(http://enet.bespin.org/) sur UDP. La librairie utilisée dans BC est Enet(http://enet.bespin.org/) sur UDP.
  
-===== Flux =====+====== Flux ======
  
 Chaque entité logiciel au sein de BC est un client qui communique vers un seul et unique server : //bridgecommand-es//. Chaque message possède une entête qui lui est propre, voir la table ci-dessous : Chaque entité logiciel au sein de BC est un client qui communique vers un seul et unique server : //bridgecommand-es//. Chaque message possède une entête qui lui est propre, voir la table ci-dessous :
Ligne 21: Ligne 21:
 | //WindInject// (utilitaire permettant d'injecter une grille de vent)  | "WI" | Message contenant uniquement une valeur de vent vrai |Bridge-Command secondaire (//bridgecommand-bc//) et Map Controller (//bridgecommand-mc//) | | //WindInject// (utilitaire permettant d'injecter une grille de vent)  | "WI" | Message contenant uniquement une valeur de vent vrai |Bridge-Command secondaire (//bridgecommand-bc//) et Map Controller (//bridgecommand-mc//) |
  
 +
 +====== Diagramme ======
 +
 +On peut représenter schématiquement les communications comme sur l'exemple suivant : 
 +
 +{{ :projets:diagenetserver.png?400 |}}
 +
 +====== Interface ======
 +
 +Cette section renseignera chaque champs des messages indiqué dans le tableau de la section [[#Flux]].
 +
 +===== Message MC =====
 +
 +L'intégralité du message est formaté au format ASCII, chaque champ est séparé par une virgule "," et le caractère de fin de message est un dièse "#"
 +
 +==== Modifier le "leg" d'un bateau ====
 +
 +^ Entête ^ Champs ^ Description ^ 
 +| "MC" | "CL"    | Change Leg  |
 +| :::  | ship | numéro du bateau |  
 +| :::  | leg    | numéro du leg | 
 +| :::  | legCourse | cap du bateau |  
 +| :::  | legSpeed | vitesse du bateau |
 +| :::  | legDistance | distance du leg |
 +
 +//Exemple : MCCL,1,2,90,12,10#//
 +
 +==== Supprimer le "leg" d'un bateau ====
 +
 +^ Entête ^ Champs ^ Description ^ 
 +| "MC" | "DL"    | Delete Leg  |
 +| :::  | ship | numéro du bateau |  
 +| :::  | leg    | numéro du leg | 
 +
 +//Exemple : MCDL,1,2#//
 +
 +==== Ajout d'un "leg" à un bateau ====
 +
 +^ Entête ^ Champs ^ Description ^ 
 +| "MC" | "AL"    | Add Leg  |
 +| :::  | ship | numéro du bateau |  
 +| :::  | leg    | numéro du leg | 
 +| :::  | legCourse | cap du bateau |  
 +| :::  | legSpeed | vitesse du bateau |
 +| :::  | legDistance | distance du leg |
 +
 +//Exemple : MCAL,1,2,90,12,10#//
 +
 +==== Changer la position d'un bateau ====
 +
 +^ Entête ^ Champs ^ Description ^ 
 +| "MC" | "RS"    | Replace Ship  |
 +| :::  | ship | numéro du bateau |  
 +| :::  | posX   | position en X du bateau | 
 +| :::  | posY | position en Y du bateau |  
 +
 +//Exemple : MCRS,1,100,200#//
 +
 +==== Modifier le MMSI d'un bateau ====
 +
 +^ Entête ^ Champs ^ Description ^ 
 +| "MC" | "MM"    | Modify Mmsi  |
 +| :::  | ship | numéro du bateau |  
 +| :::  | mmsi   | Numéro MMSI  | 
 +
 +//Exemple : MCMM,1,123456789#//
 +
 +==== Signaler un homme à la mer ====
 +
 +^ Entête ^ Champs ^ Description ^ 
 +| "MC" | "MO"    | Man Overboard  |
 +| :::  | mob | 1 : homme à la mer \\ -1 : homme récupéré |   
 +
 +//Exemple : MCMO,-1#//
 +
 +==== Mettre en défaut/Réparer la pompe du rudder ====
 +
 +^ Entête ^ Champs ^ Description ^ 
 +| "MC" | "RW"    | Rudder Working  |
 +| :::  | rudder | numéro de la pompe (1 ou 2) |   
 +| :::  | state | état de la pompe (0:défaillance/1:fonctionnel) | 
 +
 +//Exemple : MCRW,2,0#//
 +
 +==== Mettre en défaut/Réparer le retour de position rudder ====
 +
 +^ Entête ^ Champs ^ Description ^ 
 +| "MC" | "RF"    | Rudder Followup 
 +| :::  | state | état du followup (0:défaillance/1:fonctionnel) | 
 +
 +//Exemple : MCRF,0#//
 +
 +==== Modifier la météo ====
 +
 +^ Entête ^ Champs ^ Description ^ 
 +| "MC" | "SW"    | Set Weather 
 +| :::  | weather | Niveau de vagues (entre 0 et 1) |  
 +| :::  | rain | Intensité de la pluie (entre 0 et 1) | 
 +| :::  | visibility | Visibilité (entre 0 et 1) |  
 +| :::  | windDirection | Direction du vent vrai (entre 0 et 360°) |  
 +| :::  | windSpeed | Vitesse du vent vrai (entre 0 et 50 knts) |
 +| :::  | streamDirection | Direction des vagues  |
 +| :::  | streamSpeed | Vitesse des vagues |
 +| :::  | streamOverride | ??? (0 ou 1) |
 + 
 +
 +//Exemple : MCSW,0,0,1,90,25,20,2,0#//
 +
 +===== Message BC =====
 +
 +L'intégralité du message est formaté au format ASCII, chaque champ est séparé par une virgule "," (sauf pour les legs ou ça sera ":") et chaque bloc de message par un dièse "#"
 +
 +==== Informations de la simulation en cours ====
 +
 +^ Entête ^ Champs ^ Description ^ Bloc ^
 +| "BC" | timeStamp | Date courante (en sec POSIX) | Bloc "TimeStamp" |
 +| :::  | timeOffset | Date du jour du scénario (en sec POSIX) | ::: |
 +| :::  | timeDelta |  Temps écoulé depuis le début du jour du scénario (en sec) | ::: |
 +| :::  | accel | Coefficient d'accélération du temps | ::: |
 +| :::  | "#" | Fin du bloc "Time" | ::: |
 +| :::  | posX | position en X du bateau | Bloc "ShipInfos" |
 +| :::  | posY | position en Y du bateau | ::: |
 +| :::  | heading | Cap du bateau | ::: |
 +| :::  | rot | Rate of Turn | ::: |
 +| :::  | pitch | Tangage du bateau | ::: |
 +| :::  | roll | Roulis du bateau | ::: |
 +| :::  | sog | Vitesse sur terre | ::: |
 +| :::  | cog | Cap sur terre | ::: |
 +| :::  | rudder | Angle du rudder | ::: |
 +| :::  | wheel | Consigne du rudder | ::: |
 +| :::  | portRPM | Vitesse de rotation du moteur babord | ::: |
 +| :::  | stbdRPM | Vitesse de rotation du moteur tribord | ::: |
 +| :::  | "#" | Fin du bloc "ShipInfos" | ::: |
 +| :::  | otherships | Nombre d'autres bateau | Bloc "Number" |
 +| :::  | otherbuoys | Nombre de de bouées | ::: |
 +| :::  | mobVisible| Aficher le mob ? (0 ou 1) | ::: |
 +| :::  | nLines| Nombre de lignes | ::: |
 +| :::  | "#" | Fin du bloc "Number" | ::: |
 +| :::  | posX | position en X du bateau | Bloc "Other Ships"\\ Répété autant de fois qu'il y a de bateau |
 +| :::  | posY | position en Y du bateau | ::: |
 +| :::  | heading | Cap du bateau | ::: |
 +| :::  | speed | Vitesse du bateau | ::: |
 +| :::  | "0" | Vide | ::: |
 +| :::  | "0" | Vide | ::: |
 +| :::  | mmsi | Numéro MMSI  | ::: |
 +| :::  | legs | Nombre de legs du bateau  | ::: |
 +| :::  | legCourse | cap du bateau | Bloc "legs"\\ Répété autant de fois qu'il y a de leg |
 +| :::  | legSpeed | vitesse du bateau | ::: |
 +| :::  | legDistance | distance du leg | ::: |
 +| :::  | "/" | Séparateur de fin de leg | ::: |
 +| :::  | "!" | Séparateur de fin d'other ships | ::: |
 +| :::  | "#" | Fin du bloc "Other Ships" |    |
 +| :::  | posX | position en X de la bouée | Bloc "Buoys"\\ Répété autant de fois qu'il y a de bouée |
 +| :::  | posY | position en Y de la bouée | ::: |
 +| :::  | "!" | Séparateur de fin de bouée | ::: |
 +| :::  | "#" | Fin du bloc "Buoys" |     |
 +| :::  | mobX | position en X du mob | Bloc "MOB" |
 +| :::  | mobY | position en Y du mob| ::: |
 +| :::  | "#" | Fin du bloc "MOB" | ::: |
 +| :::  | loop | Compteur de boucle du thread principal | Bloc "Loop" |
 +| :::  | "#" | Fin du bloc "Loop" | ::: |
 +| :::  | weather | Niveau de vagues (entre 0 et 1) | Bloc "Weather" |
 +| :::  | visibility | Visibilité (entre 0 et 1) | ::: |
 +| :::  | windDirection | Direction du vent vrai (entre 0 et 360°) | ::: |
 +| :::  | rain | Intensité de la pluie (entre 0 et 1) | ::: |
 +| :::  | windSpeed | Vitesse du vent vrai (entre 0 et 50 knts) | ::: |
 +| :::  | streamDirection | Direction des vagues  | ::: |
 +| :::  | streamSpeed | Vitesse des vagues | ::: |
 +| :::  | streamOverride | ??? (0 ou 1) | ::: |
 +| :::  | "#" | Fin du bloc "Weather" | ::: |
 +| :::  | "0" | Vide | Bloc vide |
 +| :::  | "0" | Vide | ::: |
 +| :::  | "0" | Vide | ::: |
 +| :::  | "#" | Fin du bloc vide | ::: |
 +| :::  | view | Numéro de la vue caméra | Bloc "Camera View" |
 +| :::  | "#" | Fin du bloc "Camera View" | ::: |
 +| :::  | "0" | Vide | Bloc vide |
 +| :::  | "#" | Fin du bloc vide | ::: |
 +| :::  | lineStartX | Position du début en X de la ligne | Bloc "Lines"\\ Répété autant de fois qu'il y a de ligne |
 +| :::  | lineStartY | Position du début en Y de la ligne | ::: |
 +| :::  | lineStartZ | Position du début en Z de la ligne | ::: |
 +| :::  | lineEndX | Position de fin en X de la ligne | ::: |
 +| :::  | lineEndY | Position de fin en Y de la ligne | ::: |
 +| :::  | lineEndZ | Position de fin en Z de la ligne | ::: |
 +| :::  | lineStartType | Type de la ligne (début) | ::: |
 +| :::  | lineEndType | Type de la ligne (fin) | ::: |
 +| :::  | lineStartID | ID de la ligne (début) | ::: |
 +| :::  | lineEndID | ID de la ligne (fin) | ::: |
 +| :::  | lineLength | Longueur de la ligne | ::: |
 +| :::  | lineStrain | Tension de rupture de la ligne | ::: |
 +| :::  | lineTension | Tension de rupture de la ligne | ::: |
 +| :::  | shipMass | Masse du bateau | ::: |
 +| :::  | keepSlack | ??? (0 ou 1) | ::: |
 +| :::  | heaveIn | ??? (0 ou 1) | ::: |
 +| :::  | "!" | Séparateur de fin de ligne | ::: |
 +| :::  | "#" | Fin du bloc "Lines" |     |
 +| :::  | wheel | Consigne du rudder | Bloc "Controls" |
 +| :::  | rudder| Position du rudder | ::: |
 +| :::  | portEngine | puissance du moteur babord | ::: |
 +| :::  | stbdEngine | puissance du moteur tribord | ::: |
 +| :::  | portAngSchottel | angle du schottel babord | ::: |
 +| :::  | stbdAngSchottel | angle du schottel tribord | ::: |
 +| :::  | portThrustSchottel | puissance du schottel babord | ::: |
 +| :::  | stbdThrustSchottel | puissance du schottel tribord | ::: |
 +| :::  | bowThrust | puissance du thruster avant | ::: |
 +| :::  | sternThrust| puissance du thruster arrière | ::: |
 +
 +===== Message SD =====
 +
 +L'intégralité du message est formaté au format ASCII
 +
 +==== Fermer les bridgecommand-bc secondaires ====
 +
 +^ Entête ^ Champs ^ Description ^ 
 +| "SD" | "" | Envoi du signal ShutDown  |
 +
 +//Exemple : SD//
 +
 +===== Message SCN =====
 +
 +L'intégralité du message est formaté au format ASCII, chaque champ est séparé par un dièse "#" 
 +
 +==== Envoyer les infos du scénario ====
 +
 +^ Entête ^ Champs ^ Description ^ 
 +| "SCN" | "3" | Scenario au format 3 |
 +|  :::  | scenarioName | Nom du scénario à jouer |
 +|  :::  | worldName | Nom de la map |
 +|  :::  | startTime | Heure de début du scénario |
 +|  :::  | startDay | Jour de début du scénario |
 +|  :::  | startMonth | Mois de début du scénario |
 +|  :::  | startYear | Année de début du scénario |
 +|  :::  | sunRise | Lever de soleil |
 +|  :::  | sunSet | Coucher de soleil |
 +| :::  | weather | Niveau de vagues (entre 0 et 1) |
 +| :::  | rain | Intensité de la pluie (entre 0 et 1) | 
 +| :::  | visibility | Visibilité (entre 0 et 1) | 
 +| :::  | windDirection | Direction du vent vrai (entre 0 et 360°) |
 +| :::  | windSpeed | Vitesse du vent vrai (entre 0 et 50 knts) |
 +| :::  | "0" | Vide |
 +| :::  | "0" | Vide (Répété autant de fois qu'il y a de bateau dans le scénario) |
 +
 +===== Message MPF =====
 +
 +L'intégralité du message est formaté au format ASCII, chaque champ est séparé par un dièse "#" sauf pour le bloc "Lines" ou ça sera ","
 +
 +==== Envoyer un feedback multijoueur ====
 +
 +^ Entête ^ Champs ^ Description ^ Bloc ^
 +| "MPF" | posX | position en X du bateau | Bloc "ShipInfos" |
 +| :::  | posY | position en Y du bateau | ::: |
 +| :::  | heading | Cap du bateau | ::: |
 +| :::  | rot | Rate of Turn | ::: |
 +| :::  | sog | Vitesse sur terre | ::: |
 +| :::  | timeDelta |  Temps écoulé depuis le début du jour du scénario (en sec) | ::: |
 +| :::  | lineStartX | Position du début en X de la ligne | Bloc "Lines"\\ Répété autant de fois qu'il y a de ligne |
 +| :::  | lineStartY | Position du début en Y de la ligne | ::: |
 +| :::  | lineStartZ | Position du début en Z de la ligne | ::: |
 +| :::  | lineEndX | Position de fin en X de la ligne | ::: |
 +| :::  | lineEndY | Position de fin en Y de la ligne | ::: |
 +| :::  | lineEndZ | Position de fin en Z de la ligne | ::: |
 +| :::  | lineStartType | Type de la ligne (début) | ::: |
 +| :::  | lineEndType | Type de la ligne (fin) | ::: |
 +| :::  | lineStartID | ID de la ligne (début) | ::: |
 +| :::  | lineEndID | ID de la ligne (fin) | ::: |
 +| :::  | lineLength | Longueur de la ligne | ::: |
 +| :::  | lineStrain | Tension de rupture de la ligne | ::: |
 +| :::  | lineTension | Tension de rupture de la ligne | ::: |
 +| :::  | shipMass | Masse du bateau | ::: |
 +| :::  | keepSlack | ??? (0 ou 1) | ::: |
 +| :::  | heaveIn | ??? (0 ou 1) | ::: |
 +| :::  | "!" | Séparateur de fin de ligne | ::: |
 +
 +===== Message MH =====
 +
 +L'intégralité du message est formaté au format ASCII, chaque champ est séparé par une virgule "," et chaque bloc de message par un dièse "#"
 +
 +==== Envoyer des infos minimalistes au hub multiplayer ====
 +
 +^ Entête ^ Champs ^ Description ^ Bloc ^
 +| "MH" | timeStamp | Date courante (en sec POSIX) | Bloc "TimeStamp" |
 +| :::  | timeOffset | Date du jour du scénario (en sec POSIX) | ::: |
 +| :::  | timeDelta | Temps écoulé depuis le début du jour du scénario (en sec) | ::: |
 +| :::  | accel | Coefficient d'accélération du temps | ::: |
 +| :::  | "#" | Fin du bloc "Time" | ::: |
 +| :::  | "0" | vide | Bloc vide |
 +| :::  | "#" | Fin du bloc vide | ::: |
 +| :::  | otherships | Nombre d'autres bateau | Bloc "Number" |
 +| :::  | "0" | vide | ::: |
 +| :::  | "0" | vide | ::: |
 +| :::  | nLines| Nombre de lignes | ::: |
 +| :::  | "#" | Fin du bloc "Number" | ::: |
 +| :::  | posX | position en X du bateau | Bloc "Other Ships"\\ Répété autant de fois qu'il y a de bateau |
 +| :::  | posY | position en Y du bateau | ::: |
 +| :::  | heading | Cap du bateau | ::: |
 +| :::  | speed | Vitesse du bateau | ::: |
 +| :::  | rot | Rate of Turn | ::: |
 +| :::  | "0" | vide | ::: |
 +| :::  | "0" | vide | ::: |
 +| :::  | "0" | vide | ::: |
 +| :::  | "0!" | vide | ::: |
 +| :::  | "#" | Fin du bloc "Other Ships" |     |
 +| :::  | "4" | vide | Bloc 4 vide |
 +| :::  | "#" | Fin du bloc 4 vide | ::: |
 +| :::  | "5" | vide | Bloc 5 vide |
 +| :::  | "#" | Fin du bloc 5 vide | ::: |
 +| :::  | "6" | vide | Bloc 6 vide |
 +| :::  | "#" | Fin du bloc 6 vide | ::: |
 +| :::  | "7" | vide | Bloc 7 vide |
 +| :::  | "#" | Fin du bloc 7 vide | ::: |
 +| :::  | "8" | vide | Bloc 8 vide |
 +| :::  | "#" | Fin du bloc 8 vide | ::: |
 +| :::  | "9" | vide | Bloc 9 vide |
 +| :::  | "#" | Fin du bloc 9 vide | ::: |
 +| :::  | "10" | vide | Bloc 10 vide |
 +| :::  | "#" | Fin du bloc 10 vide | ::: |
 +| :::  | lineStartX | Position du début en X de la ligne | Bloc "Lines"\\ Répété autant de fois qu'il y a de ligne |
 +| :::  | lineStartY | Position du début en Y de la ligne | ::: |
 +| :::  | lineStartZ | Position du début en Z de la ligne | ::: |
 +| :::  | lineEndX | Position de fin en X de la ligne | ::: |
 +| :::  | lineEndY | Position de fin en Y de la ligne | ::: |
 +| :::  | lineEndZ | Position de fin en Z de la ligne | ::: |
 +| :::  | lineStartType | Type de la ligne (début) | ::: |
 +| :::  | lineEndType | Type de la ligne (fin) | ::: |
 +| :::  | lineStartID | ID de la ligne (début) | ::: |
 +| :::  | lineEndID | ID de la ligne (fin) | ::: |
 +| :::  | lineLength | Longueur de la ligne | ::: |
 +| :::  | lineStrain | Tension de rupture de la ligne | ::: |
 +| :::  | lineTension | Tension de rupture de la ligne | ::: |
 +| :::  | shipMass | Masse du bateau | ::: |
 +| :::  | keepSlack | ??? (0 ou 1) | ::: |
 +| :::  | heaveIn | ??? (0 ou 1) | ::: |
 +| :::  | "!" | Séparateur de fin de ligne | ::: |
 +| :::  | "#" | Fin du bloc "Lines" |     |
 +| :::  | "12" | vide | Bloc 12 vide |
 +
 +===== Message OS =====
 +
 +L'intégralité du message est formaté au format ASCII, chaque champ est séparé par une virgule "," 
 +
 +==== Envoyer des infos minimalistes à des outils tiers (ex : PolarManagement) ====
 +
 +^ Entête ^ Champs ^ Description ^ 
 +| "OS" | lat | latitude du bateau |
 +| :::  | long | longitude du bateau |
 +| :::  | heading | Cap du bateau |
 +| :::  | rot | Rate of Turn |
 +| :::  | stw | Vitesse du bateau sur l'eau |
 +| :::  | twa | Direction du vent vrai (entre 0 et 360°) |  
 +| :::  | tws | Vitesse du vent vrai (entre 0 et 50 knts) |
 +| :::  | awa | Direction du vent apparent |  
 +| :::  | aws | Vitesse du vent apparent |
 +
 +===== Message WI =====
 +
 +L'intégralité du message est formaté au format ASCII, chaque champ est séparé par une virgule "," 
 +
 +==== Envoyer les infos de vent vrai ====
 +
 +^ Entête ^ Champs ^ Description ^ 
 +| "WI" | twa | Direction du vent vrai (entre 0 et 360°) |  
 +| :::  | tws | Vitesse du vent vrai (entre 0 et 50 knts) |
projets/archnetbc.1753793187.txt.gz · Dernière modification : de flo