[][src]Module librobot::transmission

Ensemble des types, fonctions et traits qui permettent la communication electronique <-> informatique.

Le code qui permet de transformer des octets en structures et inversemment est écrit en C. Pour chaque type de messages, il y a une structure C (que vous ne voyez pas car elle est cachée) et une structure Rust qui correspond exactement à celle en C.

Au niveau de la librairie vous ne voyez ni l'une, ni l'autre car on expose une structure encore Rust plus idiomatique.Par exemple, pour transmettre des servomoteurs l'informatique enverra des messages contenant des servo::ServoGroup.

Forme d'une Frame

TODO

Exemple

Voici un exemple de communication PC-Elec :

+----------------+           +--------------------+
|                |           |                    |
|  Raspberry PI  |           |  Microcontrolleur  |
|                |           |                    |
+--------+-------+           +----------+---------+
         |                              |
         |  AC DC AB BA 01 05 06 00     |
         | +--------------------------> |
         |                              |
         |  AC DC AB BB 01 00 00        |
         | <--------------------------+ |
         |                              |
         |  AC DC AB BA 05 46 02 11 77  |
         | <--------------------------+ |
         |                              |
         v(t)                           v(t)

Voici comment lire des messages et renvoyer des informations vers l'informatique pour les servomoteurs.

 +--------------------------+                  +---------------------+
|                          |                  |                     |
|       Conversion en      |                  | Conversion en Frame |
|          Octets          +----------------->+                     |
|                          |    ServoGroup    |    Frame::new()     |
| ServoGroup::into_bytes() |                  |                     |
|                          |                  +------+--------------+
+--------------------------+                         |
                                                     |
                                                     |
                                       Connexion     |Donnée
                                         Série       |à émettre
                                           +         |
                                           |         |
                                           v         v
                     +----------------+RX      TX+---+------------+-------------------+
                     |                +-<-<-<-<-<+Emission        |  Périphérique     |
                     | Raspberry PI   |          +----------------+      UART         |
                     |                +->->->->->+Réception       |                   |
                     +----------------+TX      RX+---+------------+-------------------+
                                                     |
                                                     | Donnée
                                                     | Reçue
                                                     |
                                                     v
+---------------------+                  +------------+-----------+
|                     |                  |                        |
|   Conversion de     |        Frame     | Extraction des données |
|    la Frame en      +<-----------------+  FrameReader.step()    |
|     ServoGroup      |                  |                        |
|                     |                  +------------------------+
|  ServoGroup::new()  |
|                     |
+---------+-----------+
         |
         |
         |ServoGroup
         |
         v
    +----+----+
    |         |
    | Gestion |
    |   du    |
    | Message |
    |         |
    +---------+

Modules

eth

Module pour la communication ethernet

id

Regroupe les identifiants des cartes qui sont utilisés pour calculer les ports d'écoute et d'envoi lors de la communication par UPD

io

Décrit l'API pour interagir avec la carte IO

navigation

Décrit l'API pour interagir avec la carte déplacement

servo

Représentation haut-niveau d'un servo-moteur.

Enums

MessageKind

Le type de message

Constants

FRAME_MAX_SIZE

Taille maximale du message véhiculé par la frame

Traits

Jsonizable

Traits utilitaires implémentés par toutes les structures que l'on envoie/récupère du réseau

Type Definitions

Message

Un message est un tableau de 256 octets.