la mia idea: gamepad bluetooth hid, alcune delucidazioni

Salve a tutti, sono nuovo di qui, vorrei approcciarmi ad arduino per creare un gamepad bluetooth (HID) da utilizzare con tutti i pc.

Ho alcune idee abbastanza chiare, su come dovrò strutturare il mio pprogetto, tranne per il fatto della comunicazione bluetooth.
Certamente, il progetto comprenderà un modulo bluetooth in comunicazione con arduino pro mini (scelto il medesimo per utlilizzare i bassi voltaggi e occupare poco spazio), il modulo dovrà avere il firmware HID, grazie ad esso dovrebbe essere possibile far riconoscere automaricamente la periferica ai pc senza bisogno di un "driver" installato che interpreti la comunicazione gamepad-pc.

Tuttavia non ho trovato degli esempi chiari sull'utilizzo del bluetooth hid, non riesco a capirne il funzionamento, come definire la periferica e come inviare i dati.

Potete darmi una mano?
Grazie in anticipo. XD

Ciao,
facendo una rapida ricerca con san Google ho trovato questo:

http://www.kobakant.at/DIY/?p=3310
e questo:
http://www.circuitsathome.com/mcu/hid-joystick-code-sample

Mi sembrano degli ottimi punti di partenza.

Per l'utilizzo dei moduli bluetooth puoi sempre fare affidamento all'ottima guida di Pitusso [HOWTO] Guida (più o meno) completa all'utilizzo di Moduli Bluetooth - Megatopic - Arduino Forum

Grazie entrambi i link mi sono molto utili specialmente quello dove spiega l'utilizzo del modulo BlueSMiRF HID lo stesso che andrò a utilizzare io. In poche parole questo modulo viene visto da arduino sempre come se fosse una comunicazione seriale, e successivamente il modulo é incaricato di inoltrare la comunicazione bluetooth.
Quindi se devo cambiare i descrittori per il mio device HID, ad esempio da tastiera (default) a gamepad questa operazione devo farla programmando il modulo bluetooth, non arduino, dico bene?

Si, da come puoi evincere dal manuale che ti allego:

il comando SH,#### mi permette in modalità comandi ($$$) di cambiare le HID flags che sono un registro di 2Byte tuttavia non capisco il descrittore hid come posso darlo in pasto al BlueSMiRF

Non ho capito la domanda :sweat_smile:
Premetto che non ho il modulo e non ho voglia di leggermi tutta la documentazione ma da quello che ho capito basta entrare in modalità "command mode" inviando da terminale $$$
e poi il comando SH, xxxx dove xxxx è la configurazione dei registri (Tra l'altro sulla documentazione c'è scritto tutto)

mi rispondo quasi da solo.
Visto che devo fare un gamepad, oltre ad impostare le flag del registro sul modulo bluetooth, devo far capire la struttura del mio gamepad al pc o chi per lui riceve i dati, cioè numero di tasti e valori massimi/minimi per ogni comando.
Di quel che ho capito io, questo descrittore va allegato nella prima parte del "messaggio" inviato dal device all'host, seguito da i dati relativi ai bottoni premuti e via dicendo.
Tutto questo per ogni messaggio inviato. Io pensavo bastasse impostare il descrittore sul modulo bluetooth una volta sola e che questo sarebbe bastato al riconoscimento della periferica durante lo stabilirsi della connessione.

Quindi l'HID DESCRIPTOR é contenuto in ogni HID REPORT inviato dal device all'host.

A questo punto il compito di arduino sta nel formare l'intero raw input (preambolo, lunghezza, descrittore, dati)bit a bit e demandarli al modulo bluetooth.

assolutamente non ne salto fuori da solo, concettualmente non riesco a capire..
Un HID Descriptor é praticamente una descrizione completa del device, per esempio indica tutti i tasti presenti, eventuali controlli per gli assi e così via.
Un hid descriptor consiste in molti byte, ci sono gli appositi tool per generarli oppure si possono scrivere a mano.

Nella documentazione del modulo bluetooth, nella sezione RAW INPUT, il campo HID descriptor é indicato solo come un piccolo byte che indica che tipo di device: nel mio caso 0100 per il mio gamepad. Evinco che non sono la stessa cosa.

Quindi del mio HID descriptor (sono 48 bytes il mio) che descrivono il mio gamepad non so dove usarlo.