___________________________________________________________________________
Etat des threads :

THREAD_STATE_NONE              : #
THREAD_STATE_RUNNING           : |
THREAD_STATE_READY             : _
THREAD_STATE_AWAITING_RESOURCE : ~
THREAD_STATE_AWAITING_RETURN   : *
THREAD_STATE_SUSPENDED         : .

___________________________________________________________________________
- Periodic: à intervalles fixes déterminés par la période.
nota: on pourra ultérieurement ajouter un "Dispatch_Offset"

- Aperiodic: à l'appel d'un de ses sous-programmes ou à la présence d'au moins un évènement sur un de ses ports.
nota: on pourra ultérieurement spécifier une combinaison logique sur les ports
nota2: ce comportement est celui de notre sporadic actuel, me semble t il

- Sporadic: idem que Aperiodic mais la propriété Period définit un intervalle minimum entre deux dispatchs successifs. On peut donc rester "Suspended" quelque temps même si les ports ne sont pas vides et que l'on est prioritaire.

- Timed: idem que Aperiodic mais la propriété Period définit un intervalle de temps maximun entre deux dispatchs successifs. Le timeout déclence le dispatch.
nota: si on ne reçoit jamais d'évènement, on a le comportement d'un Periodic.

- Hybrid: combinaison de Aperiodic et de Periodic: on dispatche à intervalles fixes spécifiés par la propriété Period et aussi lorsque au moins un des ports est non vide ou que un des sous-programmes est appelé.

- Background: tout le temps
nota: prévoir un code pour WCET infini (valeur -1 ?)
nota2: on pourra ultérieurement traiter le cas de la présence de la propriété Dispatch_Trigger, où le thread ne devient "ready" pour toujours qu'après réception d'un événement (ports spécifiés par la propriété)

___________________________________________________________________________
COMMUNICATION :

Base de temps simulateur
 récupération de la valeur de la base de temps :
  echo "get_timetick" > pipe_read
 réglage de la valeur de la base de temps : 
  echo "set_timetick 400" > pipe_read


Pause simulateur
 pause :
  echo "simulator p" > pipe_read ou echo "simulator pause" > pipe_read
 reprise :
  echo "simulator r" > pipe_read ou echo "simulator resume" > pipe_read

Arrêt du simulateur (Définitif)
 echo "simulator e" > pipe_read ou echo "simulator exit" > pipe_read

Version du simulateur :
 echo "simulator v" > pipe_read ou echo "simulator version" > pipe_read

Chargement fichier d'entrée
 echo "simulator load <nom du fichier>" > pipe_read 

Erreurs
 envoi actif des erreurs : 
  echo "send_error on" > pipe_read
 envoi inactif des erreurs : 
  echo "send_error off" > pipe_read

Propriétés :
 récupération de la liste des propriétés des entités :
  echo "get_entity_all_properties root.process1.thread1" > pipe_read
 récupération de la valeur d'une liste de propriétés :
  echo "get_entity_properties root.process1.thread1 CET period" > pipe_read
 Modification de la valeur d'une propriété :
  echo "set_entity_property root.process1.thread1 period 10 CET 2" > pipe_read

Changement états :
 envoi actif des changements d'état de toutes les entités 
  echo "send_state on all" > pipe_read
 envoi inactif des changements d'état de toutes les entités 
  echo "send_state off all" > pipe_read
 envoi actif du changement d'état sur une entité particulière 
  echo "send_state on root.process1.thread1 on" > pipe_read
 envoi inactif du changement d'état sur une entité particulière 
  echo "send_state off root.process1.thread1 off" > pipe_read

Propriétés d'affichage (mode chronogramme texte) :
 réglage du padding des noms d'entity avant le chronogramme (défault=25 ou configuration dans main.xml)
  echo "set_text_display_padding 50" > pipe_read 
 Affichage information des unités d'exécution.
  echo "set_text_display_exec_unit on" > pipe_read
  echo "set_text_display_exec_unit off" > pipe_read
___________________________________________________________________________
cat < pipe_write
mkfifo pipe_write
