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 15:13] floprojets:archnetbc [2026/07/28 13:24] (Version actuelle) – [Diagramme] flo
Ligne 1: Ligne 1:
-====== Architecture réseau Bridge-Command ======+======= Architecture réseau du simulateur =======
  
-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 simulateur SOMOS.
  
-===== Protocole/Librairie =====+====== Protocole/Librairie ======
  
-La librairie utilisée dans BC est Enet(http://enet.bespin.org/) sur UDP.+La librairie utilisée dans BridgeCommand (BCest 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 du simulateur 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 :
  
 ^ Emmeteur      ^ Entête      ^ Description          ^Consommateur ^ ^ Emmeteur      ^ Entête      ^ Description          ^Consommateur ^
Ligne 22: Ligne 22:
  
  
-===== Diagramme =====+====== Diagramme ======
  
 On peut représenter schématiquement les communications comme sur l'exemple suivant :  On peut représenter schématiquement les communications comme sur l'exemple suivant : 
  
-{{ :projets:diagenetserver.png?400 |}}+{{ :projets:enet_schema_1_.png?600 |}} 
 + 
 +====== 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.1753794783.txt.gz · Dernière modification : de flo