Voici ce qui le projet en date du 28 juillet supporte:
- Classe de gestion du graph de l'arbre
- Classe visiteur pour naviguer l'arbre
- Désérialisation a partir de la mémoire Flash et en RAM
- Banque de sous-arbre pour facilité la désérialisation
- Affichage de l'état de l'arbre via le lien série
- Noeuds de composition: sequence, selector, random, parallel et loop
- Noeud de décoration: Success, Failure, Inverter
- Noeud de désérialisation: Proxy
- Noeud de débogage: Delay et Print
- Noeud spécifique au projet: setLED
- Quelque méthodes pour effectuer différent tests.
- Classe utilitaire pour la gestion de DEL, boutons et alarmes
La sérialisation utilise 4 octets par noeud selon le schéma:
Octet 0 - type du noeud
Octet 1 - octet data 0
Octet 2 - octet data 1
Octet 3 - déplacement du prochain noeud
Le déplacement utilise les constantes suivantes:
0: Fin de l'arbre
1: Ajout à la suite
2: Ajout en tant qu'enfant
-X : remonte de X dans l'arbre
L'utilisation d'une valeur négative évite d'encoder la fin d'une branche ou de détecter selon le type si un enfant est possible ou non. C'est un peu plus pointilleux sur la désérialisation mais moins gourmand en mémoire.
Ce qui reste à implémenter:
- Compilation pour Arduino d'architecture SAMD .
- Meilleur gestion des type de base ( utiliser uint_8 au lieu de byte, etc. )
- Utilisation d'un "Blackboard" dont les clés sont une valeur entre 0 et 254.
- Permettre le déclenchement de sous-arbre selon un système d'évènements.
- Désérialisation à partir d'une carte SD ou via une réception ( Série, RF) et stockage en EEPROM
- Transfert du code d'exécution des noeuds de base hors du fichier de projet ( .ino ).
- Soit par une surcharge de la classe ou d'appel de méthode recevant en paramètre les objets nécessaire.
- Permettre d'interrompre le parcours après un certains délais et reprendre au prochain tick.
- Gestion de la priorité des sous-arbre afin d'être réclamé par une sérialisation plus importante .
- Optimisation!
- Code python pour facilité la création de sous-arbre.
- Code python + Web pour afficher les sous-arbre.
- Aide à l'édition.
- Au runtime en lisant le contenu de la connexion série..