Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
ns_p:header<br />
Type<br />
ns_p:HeaderType<br />
ns_p:HeaderType<br />
specificationVersion<br />
Type ns_p:SpecificationVersionType<br />
addressSource<br />
Type ns_p:FeatureAddressType<br />
addressDestination<br />
Type ns_p:FeatureAddressType<br />
addressOriginator<br />
Type ns_p:FeatureAddressType<br />
msgCounter<br />
Type ns_p:MsgCounterType<br />
msgCounterReference<br />
Type ns_p:MsgCounterType<br />
cmdClassifier<br />
Type ns_p:CmdClassifierType<br />
Le rôle des deux paramètres MessageCounter est intéressant.<br />
Le paramètre msgCounter est incrémenté à chaque envoi de<br />
paquets – il s’agit d’un ID de message qui identifie clairement<br />
chaque « message envoyé au cours d’une courte période ». Le<br />
paramètre MsgCounterRef permet la corrélation entre message<br />
et déclencheur – un message de réponse (reply) peut ainsi se<br />
référer à la commande traitée par celui-ci.<br />
Les protocoles de communication spécifient souvent leur propre<br />
format pour les adresses : dans le cas de SPINE, le deuxpoints<br />
sert de séparateur des différents éléments. La chaîne de<br />
caractères d: sert d’entête de protocole, le _i suivant permet<br />
de stocker d’autres informations spécifiques au fabricant. Le<br />
but de la structure d’adressage est de produire une chaîne<br />
globalement unique qui identifie un appareil en particulier.<br />
Figure 2. Entête SPINE de plus près.<br />
ackRequest<br />
Type xs:boolean<br />
timestamp<br />
Type ns_p:AbsoluteOrRelativeTimeType<br />
Fonctions et filtres<br />
La seconde partie de la trame est le contenu à proprement<br />
parler du message : elle est normalement disponible sous la<br />
forme d’un élément payload. Sa déclaration commence par un<br />
piège : même si le protocole permet la présence de plusieurs<br />
balises cmd dans un message, les implémentations n’évaluent<br />
normalement que la couche supérieure.<br />
<br />
1.0.0<br />
<br />
d:_i: <strong>469</strong>25_TestTempSensor_1<br />
2<br />
1<br />
1<br />
1<br />
<br />
<br />
d:_i:<strong>469</strong>25_TestSHM_1<br />
1< /entity><br />
1<br />
<br />
15<br />
8<br />
reply<br />
<br />
SPINE Class defines set of functions<br />
e.g. ActuatorLevel<br />
SPINE Function defines set of functions<br />
e.g. ActuatorLevelData<br />
SPINE Elements are<br />
function specific datapoints<br />
e.g. actuatorLevelData −> value<br />
Element<br />
1<br />
Function<br />
1<br />
Element<br />
n<br />
Class<br />
Element<br />
1<br />
Function<br />
n<br />
Figure 3. Fonctions et éléments sont rassemblés en classes.<br />
Element<br />
n<br />
<br />
<br />
measurementListData<br />
<br />
<br />
<br />
<br />
<br />
Tableau : CmdClassifier<br />
CmdClassifier<br />
fixe le rôle du message en transfert.<br />
Désignation Rôle<br />
Commande qui pousse le destinataire à livrer<br />
read des données placées sous sa gestion, p. ex.<br />
« Combien de glaçons avons-nous ? ».<br />
Commande qui contraint le destinataire à<br />
write<br />
traiter une valeur.<br />
Commande qui pousse le destinataire à<br />
traiter la commande ou l’exécution d’une<br />
call<br />
action, p. ex. « Jeter cinq glaçons en forme<br />
d’étoile ».<br />
Message qui représente la réponse à une<br />
reply commande read, p. ex. « J’ai six glaçons en<br />
forme d’étoile ».<br />
Message envoyé par le propriétaire des<br />
notify données à un client intéressé, p. ex.<br />
« Attention, quatre glaçons ont été retirés ».<br />
Message qui confirme la réception réussie<br />
ou non réussie ou le traitement d’une<br />
result<br />
commande, p. ex. « Non, je ne peux pas<br />
traiter le message précédent ».<br />
26 janvier/février <strong>2<strong>01</strong>8</strong> www.elektormagazine.fr<br />
vu sur www.frboard.com