Commment proposer une surcouche à un firmware

Le problème exposé dans ce sujet a été résolu.

Bonjour,

Je souhaiterais me lancer dans la création d'une surcouche, d'une interface (je ne sais pas trop comment appeler ça) du Cleanflight Firmware en Ruby. En Python si c'est vraiment trop compliqué en Ruby.

Le problème, c'est que je ne sais pas du tout comment m'y prendre… Par où commencer ? J'imagine que j'ai de la documentation à lire… Est-ce possible de faire ça en Ruby ou en Python ?

Merci de vos réponses !

Salut,

Tu essaies d'ajouter des fonctionnalités au contrôleur de ton quadricoptère, c'est ça ? J'ai du mal à voir ce que tu veux faire avec une surcouche, tu pourrais expliquer plus en détail ? La surcouche doit tourner sur le contrôleur ou sur un PC ? Elle doit faire quoi ?

Si c'est pour faire ta propre GUI de configuration apparemment les contrôleurs sont accessibles via une connexion série. Ensuite il y a des commandes utilisables. Ça doit pouvoir se faire en Python. Par contre, il y a une GUI officielle, pourquoi ne pas y participer ?

+0 -0

En effet c'est bien pour faire une GUI.

Pourquoi ne pas y participer ? Parce qu'elle nous oblige à passer par le Google Chrome Store… Ce qui n'est pas top du tout, à mon goût. Donc j'aimerais juste créer une petite GUI qui rassemble les fonctionnalités dont j'ai besoin. À voir si je l'étend ensuite à plus de fonctionnalités si ça intéresse.

Donc si je traduit, il suffit que je connecte les boutons de ma GUI aux différentes commandes proposées par le firmware ? Ça me semble être dans mes cordes ! :-° Je vais regarder d'abord comment importer du code d'un autre langage en Ruby.

Merci de ton aide!

Ah oui c'est vrai que c'est chiant d'avoir à utiliser Chrome pour ça. Je préfère de loin l'approche d'OpenTX: une interface GUI sous Qt.

Apparemment, même si il y a une interface CLI qui propose plus de réglages que la GUI, certains paramètres de l'interface CLI ne sont pas documentés. Tu vas devoir fouiller dans le code pour comprendre comment les utiliser, c'est pénible. Même si ils voulaient pas le documenter parce que c'est pas "human-friendly" comme dit la doc, ça aurait pu servir à d'autres personnes… Si tu coinces, tu dois pouvoir envoyer un mail aux devs pour qu'ils te filent quelques tuyaux.

Tu veux réutiliser quel code ? Si c'est du C, c'est probablement possible avec la FFI de Ruby mais ça doit être pas évident.

En tout cas je dois dire que j'aime beaucoup cette tendance aux firmwares open source en aéromodélisme, c'est ultra-bidouillable.

Ouip j'avais rapidement lu la doc (et notamment la partie dont tu parlais) et en effet tout n'est pas documenté, ce qui est un poil embêtant. Mais bon je connais rapidement le C++, je devrais m'en sortir pour ça. Et au pire, comme tu le dis, je peux toujours les contacter.

Tu veux réutiliser quel code ? Si c'est du C, c'est probablement possible avec la FFI de Ruby mais ça doit être pas évident.

Grimur

Non effectivement ça n'a pas l'air aussi simple qu'en Python.. Je pense que je vais m'orienter vers lui alors. Mais justement, c'est là que je bloque… J'importe quoi ? Comment savoir où commencer, le firmware est assez complet et propose plein de fonctionnalités donc je m'y perd un peu… Surtout que c'est la première fois que je me lance dans quelque chose comme ça !

En tout cas je dois dire que j'aime beaucoup cette tendance aux firmwares open source en aéromodélisme, c'est ultra-bidouillable.

Grimur

Oui c'est vraiment génial, ça ouvre à plein de possibilités!

Importe rien du tout pour l'instant. Il faut commencer par un PoC: écrire un code minimal qui ouvre un port série, vitesse 115200 bauds, puis qui envoie le caractère #. Ensuite pour vérifier que ça marche envoie-lui help\n et affiche le résultat.

C'est le même principe que pour les scripts qui interagissent avec une Arduino via le port série, tu devrais trouver plein d'infos.

Donc l'objectif c'est de faire un script qui sert d'émulateur de terminal basique pour ta carte. Ensuite tu garderais ce script dans un coin pour le debug et tu factoriserais le code pour avoir des fonctions qui utilisent les commandes dont tu as besoin.

Personnellement je trouve ça très pénible à faire, comme je suis un peu feignant j'utiliserais l'application Cleanflight Configurator tout en maugréant entre mes dents contre ces gens qui utilisent du HTML/CSS/JS partout, même quand une application native fonctionne. Ceci dit j'imagine qu'ils ont fait ça pour assurer la portabilité, ce qui est loin d'être une mauvaise idée.

Tu peux toujours commencer à faire ton projet mais je prendrais surtout ça comme un moyen d'apprendre un truc nouveau et de m'amuser un peu.

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte