Outils pour utilisateurs

Outils du site


projets:archnetbc

Ceci est une ancienne révision du document !


Architecture réseau Bridge-Command

Cette section définit l'architecture réseau qui régit le logiciel Bridge-Command (BC)

Protocole/Librairie

La librairie utilisée dans BC est Enet(http://enet.bespin.org/) sur UDP.

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 :

Emmeteur Entête Description Consommateur
Map Controller (bridgecommand-mc) “MC” Message permettant d'influer sur certains paramêtre de la simulation (position du bateau, météo,…) Bridge-Command principal (bridgecommand-bc)
Bridge-Command principal (bridgecommand-bc) “BC” Message contenant les infos principales du bateau (position, vitesse, cap,…) Bridge-Command secondaire (bridgecommand-bc) et Map Controller (bridgecommand-mc)
Bridge-Command principal (bridgecommand-bc) “SD” Message permettant de mettre fin à la simulation Bridge-Command secondaire (bridgecommand-bc) et Map Controller (bridgecommand-mc)
Bridge-Command principal (bridgecommand-bc) “SCN” Message définissant le scenario initial qui sera chargé (map, autres bateaux, coordonées GPS,…) Bridge-Command secondaire (bridgecommand-bc), Bridge-Command principal en mode MultiJoueur uniquement(bridgecommand-bc) et Map Controller (bridgecommand-mc)
Bridge-Command principal en mode MultiJoueur uniquement (bridgecommand-bc) “MPF” Message contenant les infos minimalistes du bateau (position, vitesse, cap et RoT) Bridge-Command MultiJoueur Hub (bridgecommand-mh)
Bridge-Command MultiJoueur Hub (bridgecommand-mh) “MH” Message contenant les infos minimalistes du bateau (position, vitesse, cap et RoT) Bridge-Command principal en mode MultiJoueur uniquement (bridgecommand-bc)
Bridge-Command principal (bridgecommand-bc) OS Message contenant des infos minimalistes du bateau (position, vitesse, cap et météo) WindInject (utilitaire permettant d'injecter une grille de vent) ou PolarManagement (permet de lire la puissance générée par un système vélique)
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 :

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 “,” 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 “Time”
projets/archnetbc.1753868541.txt.gz · Dernière modification : de flo