explication sur controltransfer dans android pour configurer la communication USB

J’essaie d’écrire du code Java pour permettre à mon XOOM de communiquer avec notre périphérique intégré via un câble USB vers série.

J’ai utilisé ce tronçon de code:

connection.controlTransfer(0x21, 34, 0, 0, null, 0, 0); connection.controlTransfer(0x21, 32, 0, 0, new byte[] { (byte) 0x80, 0x25, 0x00, 0x00, 0x00, 0x00, 0x08 }, 7, 0); 

Je sais que cela consiste à envoyer la demande d’installation au périphérique USB. Je ne comprends pas pourquoi le requestType est 0x21, pourquoi requestID est 32, 34, etc.

Selon les spécifications suivantes: http://www.beyondlogic.org/usbnutshell/usb6.shtml#SetupPacket , dans la demande de périphérique standard, la demande d’interface standard et la demande de point d’extrémité standard, aucun des types requestType n’est 0x21 et aucun des ID de demande n’est 32 ou 34. Existe-t-il une explication pour ces parameters, y compris le tampon de date transmis?

Le premier octet (bmRequestType) du paquet d’installation comprend 3 champs. Le premier (le moins significatif) 5 bits est le destinataire, les 2 prochains bits sont le type et le dernier bit est la direction.

Si vous avez la valeur 0x21, sa représentation binary est 100001. Si vous la divisez en champs individuels, il s’agit de 0 01 00001, ce qui correspond à l’hôte à l’équipement, à la classe et à l’interface, pour la direction. champs de type et de destinataire, respectivement.

Il s’agit donc d’un message de contrôle envoyé à une interface particulière, définie par une classe usb standard.

Étant donné que vous avez indiqué qu’il s’agissait d’une communication USB / série, je présume que cette information est probablement envoyée à une interface de communication, conformément à la définition de classe USB des périphériques de communication.

Selon ce document, une valeur bRequest de 34 (0x22) correspond à un message SET_CONTROL_LINE_STATE, tandis que 32 (0x20) correspond à un message SET_LINE_CODING (pages 51 et 53), ce qui semble logique dans le cadre de la configuration / initialisation d’un numéro de série. dispositif.

Les détails de chacun de ces messages sont définis plus bas, aux pages 57 et 58.