Paso 2: Configurar el repositorio
Módulos de Tessel todos tienen el mismo directorio básico. Se puede ver una plantilla para módulos Tessel en general en nuestra guía de estilo aquí. Usted puede comprobar hacia fuera el repo PIR para desarrollo aquí.
Aquí hay notas sobre algunos de los archivos de clave:
index.js (plantilla) este archivo es el controlador para el hardware. Esta es la configuración básica:
- Requieren util y el emisor de eventos, junto con otras dependencias. Estos permiten escribir APIs por eventos.
- Hacer una función de constructor que crea el hardware como un objeto. Sus dos argumentos son "hardware" y una devolución de llamada. La función debe emitir un evento "listo" que devuelve el objeto cuando esté listo. Para el PIR, está "listo" tan pronto como se crea una instancia el objeto. Para algo más complejo, por ejemplo, el módulo ambiental, no es "listo" hasta que comprueba que tiene la versión de firmware correcta.
- 'hardware' especifica que el hardware está conectado Tessel. Para los módulos, es un puerto. Para hardware externo, muy probablemente será un puerto y un pin (p. ej. tessel.port['GPIO'].pin['A3']). Usted debe probablemente también agregar tratamiento de errores en caso de que el tipo de hardware mal se pasa en (por ejemplo, sólo un puerto cuando sea necesario un pin) o para la especificación del tipo equivocado de pin (se puede ver que pines son digital, analógica y PWM en los ejemplos aquí). Puede chequear el código PIR para ejemplos de esta gestión de errores.
- ' callback(err, obj)' debe devolver un error si hay algún error de conexión, o si no hay ningún error, debe devolver el objeto como su segundo argumento.
- Funciones: esta es la parte! ¿Qué quiere como la API de su hardware? ¿Qué es útil? ¿Quieres exponer? Para el detector de movimiento PIR, sólo tengo una función que lee el pin. La mayoría de la información útil está mejor expuesta como eventos de "movimiento", "quietud" y "cambio".
- función: el estándar requiere un módulo Tessel es require('module').use(tessel.port['PORT']). La función de "uso" Especificación de hardware y una devolución de llamada y pasa a la constructor.exports del objeto: la función del objeto y la función del uso de la exportación.
package.json (plantilla) uso 'MNP init' para generar la mayor parte de este archivo.
Otros artículos de la Nota:
No es necesario el paquete de MNP tessel como dependencia.
- Agregar una sección de "hardware". Por defecto, Tessel empuja todo el directorio para que las dependencias se incluyen. Con una sección de "hardware", puede especificar los archivos y carpetas a ignorar cuando empujar para dispositivos embebidos. Para nuestros módulos, listamos ". / test"y". / ejemplos".
carpeta de ejemplos (plantilla) Necesita al menos un ejemplo. Esto debe mostrar el funcionamiento básico del hardware. Mina espera un evento listo, entonces registra un mensaje en la emisión de "movimiento" y "quietud" eventos. Si se necesita el módulo, consulte '... /' en lugar del nombre del módulo.
carpeta de prueba (plantilla) Utilizamos el módulo de nodo "tinytap" para la prueba. Cada funcionalidad que puede ser probada sin interacción física debe ser comprobable con ' tessel ejecutar prueba / * JS.
README.md (plantilla) el readme es su documentación. Para consistencia con módulos Tessel, revisa la plantilla. Utilizamos el módulo de nodo "marktype" para hacer bastante documentación API enlazable.