Nouveau SDK de télécommande réseau
Posté par: nipo | 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.
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.
Ce genre d’API est prévu, mais reste à venir. C’est juste un autre sujet.
Chapeau les devs Free ! Comme Olivier j’ai hâte de voir des APIs encore plus poussé . (une archi en REST serait top)
J’ai hâte de voir les applications qui en découleront ;-)
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.
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.
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 ;-)
Je confirme, il n’y a probablement rien en commun entre les deux bibliothèques… mis à part une partie du nom :)
Chapeau les gars, beau boulot.
Ill y en a qui vont passer des nuit blanche :D
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.
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
question en passant : Cette possibilité d’envoyer du texte existe-t-elle avec l’API HTTP actuelle ? Si oui, comment ?
Merci
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).