API hôte USB Android: taille du tampon de transfert en bloc

Je suis en train d'écrire un logiciel pour communiquer entre tablette (Motorola Xoom avec la version Android 4.0.3 et la version du Noyau 2.6.39.4) et un périphérique USB, Hôte de l'API fournis par Android. Je n'utilise que deux types de communication:

  • contrôle: controlTransfer(int requestType, int request, int value, int index, byte[] buffer, int length, int timeout)
  • en vrac: bulkTransfer(UsbEndpoint endpoint, byte[] buffer, int length, int timeout)

De contrôle de transfert fonctionne très bien, mais j'ai un problème avec le transfert en bloc. Je peux utiliser seulement 32768 comme la taille de la mémoire tampon pour bulkTransfer fonction. Il n'est pas possible d'utiliser moins ou plus. Je sais que je ne peux pas utiliser de plus en raison de la limite de la mémoire tampon de tuyau (taille: 32769 octets).

Ce périphérique flux de données qui n'est pas lu correctement par bulkTranfer fonction. Je suppose que certaines données sont perdues.

J'ai trouver ceci: sous Linux Si un processus tente de lire à partir d'un tuyau vide (tampon), la lecture(2) bloque jusqu'à ce que les données sont disponibles. Si un processus tente d'écrire dans un complet de la pipe , puis d'écrire(2) bloque jusqu'à ce que suffisamment de données a été lu à partir du tuyau pour permettre l'écriture complète.

Et sur cette base, mon explication du problème, c'est que certaines données ne sont pas écrites à la pipe (tampon) en raison d'un blocage drapeau fait par write(2) de la fonction. Suis-je la corriger? Si cela est vrai, je pouvais changer la pipe de la mémoire tampon.

  1. Ma première solution de ce problème réside dans davantage de mémoire tampon. Pour
    noyau >= 2.6.35, vous pouvez modifier la taille du tuyau avec fcntl(fd, F_SETPIPE_SZ, taille)
    mais comment puis-je trouver fd (descripteur de fichier) pour
    USB tuyaux?
  2. Deuxième option est d'utiliser ulimit -p SIZE mais paramètre p pour mon noyau n'est pas pour le tuyau mais processus.

Quelqu'un a connu le même problème, toutes les solutions?

source d'informationauteur syntagma