Carte shield Usb + Bibliotheque v2 Oleg sur Circuit@Home

Bonjour,

Je sais qu'il n'est guère poli ni sympa de s'inscrire uniquement pour poser une question mais je sèche un peu depuis une semaine sur le sujet.
Pour me présenter et situer, étant plutôt originaire industrie le C n'est pas ma tasse de thé donc désolé si je défonce des portes ouvertes. Quand a l'Arduino en lui même disons niveau débutant +.

Donc pour rappel mes questions portent sur ce produit : Usb Host Shield

Première question :
Si la doc est complète au niveau hardware et ne me pose pas de soucis, je n'ai rien trouvé au niveau bibliothèque de détaillé sur les appels de fonction, j'essaie de retrouver leur fonctionnement avec les nombreux exemples en reprenant a l'envers les bibliothèques mais en étant franc je patauge un peu.

Donc cette documentation existe elle a l'instar des fonctions standard Arduino sur le site et suis je passé a coté (rien vu dans le paquet lib dispo sur github) ?

Seconde question :
J'ai débuté par le plus facile, c'est a dire la gestion des périphériques HID (claviers, souris) et commencé a regarder de plus près.

Le décodage des informations provenant du clavier ou de la souris se fait par des collections déclarées dans la section déclarative du fichier .ino, chaque void traitant chaque evenement matériel en provenance du périphérique.

class MouseRptParser : public MouseReportParser
{
protected:
	void OnMouseMove	(MOUSEINFO *mi);
	void OnLeftButtonUp	(MOUSEINFO *mi);
	void OnLeftButtonDown	(MOUSEINFO *mi);
	void OnRightButtonUp	(MOUSEINFO *mi);
	void OnRightButtonDown	(MOUSEINFO *mi);
	void OnMiddleButtonUp	(MOUSEINFO *mi);
	void OnMiddleButtonDown	(MOUSEINFO *mi);
};


void MouseRptParser::OnLeftButtonUp	(MOUSEINFO *mi)
{
    Serial.println("L Butt Up");
};

Jusqu'ici cela ne me pose pas trop de soucis.

Les objets Usb et Hub sont déclarés plus loin, si le USB ne me choque pas, les USBHub Hub1(&Usb) un peu plus je ne vois pas comment ils s'utilisent ultérieurement. Si j'ai réussi a faire passer un périphérique par un hub (auto-alimenté) je n'ai pas réussi a en faire reconnaitre 2.

USB     Usb;	//Déclaration objet de type USB avec le nom Usb 

USBHub  Hub1(&Usb);	//Déclaration optionnelle des objets pour le hub
USBHub  Hub2(&Usb);
//USBHub  Hub3(&Usb);

Ensuite toujours dans la section déclaration les deux lignes suivantes apparaissent, je ne comprend pas trop ni leur syntaxe, ni leur but exact, surtout que dans l'exemple avec clavier et souris non seulement les lignes respectives aux exemple clavier et souris sont présentes (ce qui est logique) mais en plus un ajout est fait avec un mix des deux.

Exemple Souris seule

HIDBoot<USB_HID_PROTOCOL_MOUSE>    HidMouse(&Usb);
MouseRptParser                               Prs;

Exemple souris + clavier

HIDBoot < USB_HID_PROTOCOL_KEYBOARD | USB_HID_PROTOCOL_MOUSE > HidComposite(&Usb);
HIDBoot<USB_HID_PROTOCOL_KEYBOARD>    HidKeyboard(&Usb);
HIDBoot<USB_HID_PROTOCOL_MOUSE>    HidMouse(&Usb);


KbdRptParser KbdPrs;
MouseRptParser MousePrs;

Enfin, en dernier dans la section boucle du programme principal se trouve la fonction d'appel et de polling du chipset USB, cela ne me choque pas mais comment peut être fait dans la compilation sa liaison avec les collections des périphériques (MouseRptParser par ex)

void loop()
{
  Usb.Task();
}

Voila, cela a ete un peu long, si j'arrive a trouver toutes mes explications je mettrais en ligne un tuto dont voila le debut Brouillon USB