Bonjour,
Je suis en train de développer une couche d'abstraction matériel sur PIC18f qui doit gérer les communications entres 2 PIC par exemple en SPI, I2C, CAN, ......
Je m'explique :
Aujourd'hui j'ai un code applicatif qui, entre autre chose, communique avec un autre PIC par liaison SPI. Le code applicatif appel directement le driver, avec des commandes spécifiques.
Mon but est d'ajouter une couche logiciel entre le driver et l'applicatif afin de pouvoir utiliser seulement des commandes génériques dans mon applicatif .
Par exemple: Ecrire(périphérique_1,Donnée_a _écrire);
Par la suite je voudrai aussi que ma couche logiciel soit réutilisable par d'autre projet pour gérer d'autre type de communication ; RS232,CAN,I2C,USB......
Mon problème est donc de trouver une solution qui me permet d'associer un nom quelconque de périphérique à un type de communication pour ensuite retrouver les bons paramètres à envoyer au driver. Tous cela en faisant en sorte que, pour ajouter un périphérique avec un type de communication différentes, le code soit simple à reprendre.
Pour assigner un type de communication à un périphérique je pensais simplement utilisé les #define : #DEFINE périph_1 N , puis avec une structure en Switch->case je peux décider quel protocole lancer.
Mais justement pour lancer le protocole il faut des arguments qui sont différents en nombre et en type suivant si c'est de l'I2C, du SPI ou autre.
Je pensais ici utiliser une structure, si je fais une structure "Périphérique" déclaré en globale, avec plein de champs différent, typiquement ; nom_périphérique,adresse-périphérique,donnée,vitesse, longueur, etc.... est ce que cela peut fonctionner??? Et-ce possible de l'envoyer en arguments au driver?
Je me dit que du coup pour rajouter un périphérique a la couche d'abstraction, il suffira de compléter la structure, lui rajouter des champs si cela est utiles, et juste rajouter un switch->case avec les assignations des champs de la structure. Cela vous semble-t-il cohérent??
Je doit faire attention a la place mémoire, je suis sur PIC donc je n'ai pas non plus énormément de ressource! Les structures ne demandent-t-elle pas bcp de place???? Est-ce que je dois allouer de la mémoire avant leur exécution? ou au contraire en libérer a la fin de chaque utilisation ???
Voila je voudrai bien avoir des avis la dessus ! Dsl pour le roman, j'espère au moins avoir été clair !!
-----