# Projet/Tutorat système

Le but de ce tutorat est d'apprendre à utiliser et configurer une Atmega32U4 pour l'interfacer avec l'USB. Pour terminer nous devions montrer un jeu vidéo qui fonctionne avec notre manette, en utilisant en plus du joystick et des bouttons (HID), des leds et deux vibreurs.

Nous avons réussi à faire communiquer un micro-logiciel en C avec la manette pour contrôler les 4 leds implémentées, et à utiliser l'interface HID de la manette comprenant le Joystick et les boutons (S2, S3, S4 et S5).

Pour ce qui est des vibreurs, sur le micro-controlleur l'interface est configuré, mais le code n'est pas implémenté par manque de temps, mais ils se controllent comme les leds (sur PORTD).

## Organisation du repertoire

Le projet est décomposé en 2 parties/dossiers:
* 'Software' pour la gestion par l'OS avec libusb de la manettes USB
* 'Hardware' pour le programme qui sera téléversé sur le 32U4, avec

### Software

* Dossier src/ et include/ contenant les sources
* Dossier obj/ et bin/ pour les fichiers de compilations
* L'executable final est bin/main.exe
* Un fichier Makefile pour la compilation
* Un utilitaire pour convertir un nombre héxadecimale en base décimale, hexToDec.sh

### Hardware

* Le driver crée pour la manette se situe dans Hardware/LUFA/Drivers/Board/AVR8/PINGUI
* On y trouve le Driver pour les LEDS, pour le JOYSTICK et pour les BOUTONS


* Dans le dossier Hardware/PolytechLille/Manette on trouve le fichier Manette.c, ainsi que tous les fichiers Manette.*
* On y retouve aussi les fichiers Descriptors.c et Descriptors.h (qui contiennent les interfaces entre autres)
* On y trouve également le Makefile qui permet de compiler Manette.c et de le lier aux drivers.
On peut upload directement ce qui a été make sur la manette en utilisant "make " puis "make upload".


## Compiler

### Software

Il faut installer les dépendances pour la partie software : libusb avec `apt-get install libusb-1.0`

Dans le dossier Software/ il faut lancer la commande `make`. Pour avoir un niveau haut de verbosité (libusb en très verbeux), on peut lancer la commande `make DEBUG=1`.

### Hardware

Il faut installer les dépendances pour la partie hardware : `apt-get install dfu-programmer`
Pour compiler il faut être dans le dossier Hardware/PolytechLille/Manette, lancer la commande `make`, puis pour téléverser `make upload`




## Utiliser

On peut tester l'interface HID avec `jstest-gtk`.

Pour lancer le micro-logiciel dans le dossier Software, il faut exécuter `bin/main.exe`.

Par défaut le logiciel cherche dans l'énumération des périphériques USB la manette avec le *vendor-id* et le *product-id* correspondant à la manette. On peut aussi lancer `bin/main.exe demo4.1`, `bin/main.exe demo4.1plus` qui requiert plus de droits, et `bin/main.exe demo4.2 <VID> <PID>` .
