Étape 2: Configurer le repo
Modules de Tessel tous ont le même répertoire de base. Vous pouvez voir un modèle pour les modules de Tessel en général sur notre guide de style ici. Vous pouvez aller sur le repo PIR mis en place pour le développement ici.
Voici les notes sur certains de ces fichiers :
index.js (modèle) ce fichier est le pilote pour le matériel. Voici la configuration de base :
- Besoin d’util et l’émetteur de l’événement, ainsi que ses autres dépendances. Il permettent d’écrire API événementielle.
- Rendre une fonction constructeur qui instancie le matériel comme un objet. Ses deux arguments sont « matériel » et un rappel. La fonction doit émettre un événement « ready » qui renvoie l’objet lorsqu’il est prêt. Pour le PIR, il est « prêt » dès que l’objet est instancié. Pour quelque chose de plus complexe, par exemple le module ambiant, il n’est pas « prêt » jusqu'à ce qu’il vérifie qu’il a la version de microprogramme approprié.
- « matériel » spécifie où le matériel est connecté à Tessel. Pour les modules, c’est un port. Pour les périphériques externes, ce sera très probablement un port et un code pin (par exemple tessel.port['GPIO'].pin['A3']). Vous devriez probablement aussi ajouter la gestion des erreurs dans le cas où le type de matériel incorrect est passé à (par exemple juste un port lorsque vous avez besoin d’un code pin) ou pour la spécification du type de code pin incorrect (vous pouvez voir quelles broches sont numériques, analogiques et PWM dans les exemples ici). Vous pouvez vérifier le code de PIR pour obtenir des exemples de cette gestion des erreurs.
- ' callback(err, obj)' doit retourner une erreur si il y a des erreurs de connexion, ou s’il n’y a pas d’erreurs, doit retourner l’objet comme second argument.
- Fonctions : c’est le fun partie ! Que voulez-vous comme l’API pour votre matériel ? Ce qui est utile ? Ce que vous voulez exposer ? Pour le détecteur de mouvement PIR, je n’ai qu’une seule fonction, qui se lit de la broche. La plupart des informations utiles sont mieux exposés comme des événements pour le « mouvement », « calme » et « changer ».
- Utilisez la fonction : la norme exige pour un module de Tessel est require('module').use(tessel.port['PORT']). La fonction « utiliser » prend des spécifications de matériel et un rappel, puis les passe à la constructor.exports de l’objet : la fonction de l’objet et la fonction de l’utilisation de l’exportation.
package.json (modèle), utilisation 'npm init' pour générer la majeure partie de ce fichier.
Autres éléments de la note :
Vous n’avez pas besoin de l’emballage du npm tessel comme une dépendance.
- Ajouter une section « matériel ». Par défaut, Tessel pousse tout le répertoire pour que toutes les dépendances sont inclus. Avec une section « matériel », vous pouvez spécifier les fichiers et dossiers d’ignorer lorsque vous appuyez sur pour les appareils embarqués. Pour nos modules, nous listons ". / test « et ». / exemples".
dossier examples (modèle) Vous avez besoin d’au moins un exemple. Cela devrait montrer les fonctionnalités de base du matériel. Mien attend un événement prêt, puis enregistre un message sur l’émission de « mouvement » et les événements de « silence ». Lorsque vous avez besoin du module, se référer à '... /' plutôt que le nom du module.
dossier de test (modèle) Nous utilisons le module node « tinytap » pour les tests. Chaque fonctionnalité pouvant être testé sans interaction physique devrait être testable avec ' tessel exécuter test / *.js'.
README.md (modèle) votre fichier Lisezmoi est votre documentation. Par souci de cohérence avec les modules de Tessel, Découvrez le modèle. Nous utilisons le module node « marktype » pour faire jolie, linkable documentation de l’API.