Club robotique de Sophia-Antipolis

Accueil > Projets, études > Nos réalisations > Youpi > Youpi 2.0 > Le shell

Le shell

dimanche 27 novembre 2016, par Eric P.

Présentation générale

Le shell est l’application lancée au démarrage de Youpi et qui prend en change la gestion de l’interface utilisateur et le lancement des autres applications fournissant les fonctionnalités proposés. Il fonctionne à ce titre de la même manière qu’un shell bash par exemple, ou qu’un bureau graphique.

Il utilise le panneau de contrôle pour la navigation au sein de l’arborescence des fonctions, en généralisant l’usage des touches qui l’encadrent selon le schéma suivant :

Un pictogramme est affiché en regard de la touche pour en donner la signification. La LED d’une touche est allumée si celle-ci est active, afin de fournir une indication intuitive des actions possibles.

En date de rédaction, l’arborescence des différents écrans est la suivante :

Un peu de technique

Le shell, comme d’ailleurs tous les composants de Youpi en date de rédaction est implémenté en Python. On ne change pas une équipe qui gagne :)

Hormis les actions "légères" (infos, à propos, calibrage,...) la plupart des commandes est implémentée par une application externe. Celle-ci est alors lancée par le shell, en tant que sous-process.

Afin de reprendre le contrôle en cas d’application en difficulté, l’équivalent du Ctrl-C est implémenté sous forme de l’appui simultané des deux touches supérieures (même si leur LED respective est éteintes). Le shell surveille en permanence cet "accord majeur" et envoie alors le signal de terminaison au sous-process. Les applications filles doivent donc s’assurer de capturer les signaux impliqués (SIGINT) afin de garantir de ne jamais bloquer le système en cas de problème. Dans le cas d’une implémentation Python, ceci est obtenu grâce à la fonction signal qui permet de définir un handler pour un signal donné.

Il n’y a pas grand-chose de plus à dire à son sujet. Le module principal ne totalise que 230 lignes, commentaires et lignes blanches réglementaires comprises.

Le code source est disponible sous GitHub.

Le lancement du shell est intégré dans l’init système, en tant que service systemd faisant partie de la target youpi2. Reportez-vous à l’article sur le panneau de commande pour les détails concernant systemd.

Un message, un commentaire ?

modération a priori

Attention, votre message n’apparaîtra qu’après avoir été relu et approuvé.

Qui êtes-vous ?

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.