Nouveau SDK de télécommande réseau

Posté par: | Le 12 octobre 2011 à 15:18 | Catégorie: Freebox Player, SDK | 15 commentaires »

Une nouvelle interface de commande permet de piloter le Freebox Player par le réseau. Cette API vient en plus de l’API HTTP actuelle, qu’elle remplacera progressivement.

Les nouvelles possibilités apportées par cette évolution sont le support:

  • des touches multimédia,
  • de la souris,
  • des appuis simultanés,
  • plus tard, des manettes de jeu.

Ce SDK s’adresse avant tout aux développeurs d’applications tierces, il a été déjà intégré dans différents projets. Son utilisation est libre (licence BSD).

Disponible depuis la version 1.1.0 du Freebox Player, cette nouvelle API se base sur la norme régissant les périphériques d’entrée utilisateur, ou Human Interface Devices (HID). À l’origine, cette norme a été conçue pour l’USB, mais a été reprise Verbatim pour le Bluetooth. Dans le contexte de la Freebox, la norme HID a été portée sur un transport UDP, donc réseau.
La définition d’un périphérique doit être faite à l’aide de descripteurs, comme si il s’agissait d’un périphérique USB. Un périphérique réseau est traité de la même manière que les périphériques USB par la plupart des interfaces du Freebox Player. Toutefois, le support de ces périphériques dans les jeux viendra par la suite.

Un ensemble de bibliothèques pouvant servir de briques de base à la construction d’un client pour ce protocole est fourni sur GitHub:

  • Libela permet d’intégrer le reste des bibliothèques sur des boucles d’événements. Elle a été portée sur libevent (GNU/Linux, MacOS) et CoreFoundation (MacOS, iOS);
  • Librudp fournit le transport UDP avec une possibilité de transmettre certains messages de manière pérenne;
  • Foils_Hid fournit à la fois une bibliothèque implémentant le transport de HID sur UDP, et des programmes d’exemple.

En dernier lieu, le Freebox Player annonce localement le service _hid._udp en mDNS. La configuration de l’adresse et du port à utiliser sont donc transparents pour l’utilisateur.

Une page dédiée aux SDK sur ce site fournit les documentations des bibliothèques, ainsi que la définition des protocoles sous-jacents.

 


15 Comments on “Nouveau SDK de télécommande réseau”

  1. 1 OlivierL dit à 15:42 le octobre 12th, 2011:

    Est-ce qu’une telle API permet les fonctions suivantes ?
    – découverte de la liste de chaines disponibles
    – découverte des services SVOD/VOD/Catchup dispo
    – découverte/recherche des contenus SVOD/VOD/Catchup
    – accès direct à une chaine ou un service SVOD/VOD/Catchup ou un contenu SVOD/VOD/Catchup

    Simuler une télécommande avec une série d’impulsion, c’est bien. Accéder à une plateforme de façon intelligente, ce serait mieux. Je pense notament à une application sur smartphone/tablette qui permette de naviguer dans le contenu disponible sur la Freebox de façon plus rapide et naturelle qu’une interface qui n’est pas différente d’un menu DVD.

  2. 2 Nicolas dit à 15:47 le octobre 12th, 2011:

    Ce genre d’API est prévu, mais reste à venir. C’est juste un autre sujet.

  3. 3 loïc dit à 16:08 le octobre 12th, 2011:

    Chapeau les devs Free ! Comme Olivier j’ai hâte de voir des APIs encore plus poussé . (une archi en REST serait top)

  4. 4 sebclick dit à 16:27 le octobre 12th, 2011:

    J’ai hâte de voir les applications qui en découleront ;-)

  5. 5 belette dit à 16:48 le octobre 12th, 2011:

    Existe t’il une librairie .net pour les Windows Phone ?

  6. 6 Nicolas dit à 17:02 le octobre 12th, 2011:

    Existe t’il une librairie .net pour les Windows Phone ?

    Non, cependant les bibliothèques sont censées être portables. Je ne sais pas dans quelle mesure les API .net diffèrent des API socket usuelles.

  7. 7 Oumar dit à 18:22 le octobre 12th, 2011:

    Quelqu’un a un nom d’appli qui permet de piloter la freebox depuis un mac. Un genre de MyFreebox version MacOS X

  8. 8 Nicolas dit à 00:24 le octobre 13th, 2011:

    Quelqu’un a un nom d’appli qui permet de piloter la freebox depuis un mac. Un genre de MyFreebox version MacOS X

    A ma connaissance, il n’y en a pas encore. Mais ça viendra surement. Jusqu’à présent, les applications de pilotages tournaient depuis un navigateur.

  9. 9 Freuk dit à 21:02 le octobre 12th, 2011:

    on trouve sur codeplex un truc ressamblant
    mais ca doit etre different au niveau de la structure des packets:
    http://rudp.codeplex.com/
    et ce n’est qu’une partie de l’iceberg ;-)

  10. 10 Nicolas dit à 00:22 le octobre 13th, 2011:

    on trouve sur codeplex un truc ressamblant
    mais ca doit etre different au niveau de la structure des packets

    Je confirme, il n’y a probablement rien en commun entre les deux bibliothèques… mis à part une partie du nom :)

  11. 11 alain dit à 22:26 le octobre 12th, 2011:

    Chapeau les gars, beau boulot.
    Ill y en a qui vont passer des nuit blanche :D

  12. 12 Thierry dit à 11:34 le octobre 25th, 2011:

    Et les codes alphanum, ils ne sont pas supportés ?
    http://dev.freebox.fr/sdk/freebox_player_1.1.1_codes.html
    ne liste pas les lettres, mais ça serait super pratique de pouvoir taper dans des zones de recherche depuis son PC via le gadget telecommande / Freebox par exemple.

  13. 13 nipo dit à 17:56 le octobre 26th, 2011:

    mais ça serait super pratique de pouvoir taper dans des zones de recherche depuis son PC via le gadget telecommande / Freebox par exemple.

    Envoyer des scancodes de clavier fonctionnera, mais ce n’est probablement pas ce que vous voulez faire: les scancodes sont soumis au passage par une keymap.
    Envoyer directement du texte est beaucoup plus simple d’un côté comme de l’autre. C’est d’ailleurs décrit dans la doc: http://dev.freebox.fr/sdk/foils_hid/#_Keyboard_and_text

  14. 14 Thomas dit à 12:07 le novembre 17th, 2011:

    question en passant : Cette possibilité d’envoyer du texte existe-t-elle avec l’API HTTP actuelle ? Si oui, comment ?

    Merci

  15. 15 nipo dit à 23:21 le novembre 24th, 2011:

    question en passant : Cette possibilité d’envoyer du texte existe-t-elle avec l’API HTTP actuelle ?

    Pas directement. L’API HTTP permet d’envoyer des appuis de touches clavier. Cependant, ceci passe par la keymap une fois arrivé dans la box (comme si c’était un clavier USB).
    Ça rend la gestion des caractères spéciaux compliquée, sans parler des choses hasardeuses à émuler (deadkeys, etc).