Contact

Contact

L'interface de contrôle Contact permet de modifier l'état des contacts de sortie (VP330 / EVP380) et d'obtenir l'état des contacts d'entrée.

Cette API est asynchrone et utilise Promise.
Pour utiliser cette API, vous devez dans un premier temps obtenir l'interface de contrôle Contact à l'aide de IDAL.getControlInterfaces().

Méthodes

getInputByName(name) → {Promise.<Contact~InputContactInfo>|Promise.<ErrorStatus>}

Obtenir l'état actuel des contacts d'entrée.

Les contacts d'entrée sont identifiés par un nom:

  • "standalone" pour le contact unique disponible sur tous les lecteurs vidéo.
  • "combined" pour les 8 contacts d'entrée disponibles sur les VP330 et EVP380.

Vous pouvez également récupérer l'état des contacts en temps réel grâce aux événements InputContactEvent.

Paramètres:
Nom Type Description
name string

Le nom des contacts d'entrée ("standalone" ou "combined").

Valeur de retour:

setInputConfiguration(config) → {Promise.<boolean>|Promise.<ErrorStatus>}

Définir la configuration des contacts d'entrée (mode de contrôle).

Les combinaisons des contacts d'entrée sont associées à des actions (par défaut "Lire le dossier") qui sont automatiquement gérées par le moteur de lecture vidéo.
Si vous souhaitez modifier ce comportement et contrôler les contacts d'entrée à partir de la couche HTML / JavaScript, vous devez appeler cette méthode en donnant au paramètre config.controller la valeur 'browser'.

Suivant la valeur du paramètre config.lifetime, la configuration est automatiquement réinitialisée à sa valeur par défaut.

Cette méthode peut également être utilisée pour associer des événements de de type clavier aux contacts d'entrée. Cela permet d'utiliser les contacts d'entrée comme un clavier standard et donc d'utiliser des écouteurs d'événements génériques tels que keyup et keydown.

Exemple

Configuration des contacts d'entrée pour générer des événements de type clavier.

// Dans cet exemple, 'contact' est la variable qui référence l'interface de contrôle des contacts.
// Configuration des contacts d'entrée de sorte qu'ils se comportent en touches de direction, Entrée et Echap.
// La configuration est conservée tant jusqu'au chargement d'une nouvelle page.
var config = {
    controller: "browser",
    lifetime: "url",
    keymaps: {
        combined: [
            "ArrowLeft",
            "ArrowRight",
            "ArrowUp",
            "ArrowDown",
            "Enter",
            "Escape"
        ]
    }
};
contact.setInputConfiguration(config)
    .then(function(e) {
         // Faire quelque chose
     })
    .catch(function(e) {
         // Gérer l'erreur
    });

// Installation d'un écouteur d'événements clavier
window.addEventListener("keydown", function(e) {
    console.log("Key down: key=" + e.key + ", code=" + e.code + ", keyCode=" + e.keyCode);
});
Paramètres:
Nom Type Description
config Contact~InputContactConfig

Configuration à utiliser pour les contacts d'entrée.

Valeur de retour:
  • Une promesse résolue avec une valeur de type boolean.

    Type
    Promise.<boolean>
  • Une promesse rejetée avec une valeur de type ErrorStatus.

    Type
    Promise.<ErrorStatus>

setOutputById(id, value) → {Promise.<boolean>|Promise.<ErrorStatus>}

Positionner l'état d'un contact se sortie.

Paramètres:
Nom Type Description
id number

L'identifiant du contact, valeur comprise entre 0 et 7.

value number | boolean

Le nouvel état du contact:

  • 0 ou false pour ouvrir le contact.
  • non zéro ou true pour fermer le contact.
Valeur de retour:
  • Une promesse résolue avec une valeur de type boolean.

    Type
    Promise.<boolean>
  • Une promesse rejetée avec une valeur de type ErrorStatus.

    Type
    Promise.<ErrorStatus>

setOutputByMask(value, mask) → {Promise.<boolean>|Promise.<ErrorStatus>}

Positionner simultanément l'état de plusieurs contacts de sortie.

Paramètres:
Nom Type Description
value number

Le masque de bit correspondant aux états de tous les contacts.
Un bit par contact.
Le bit le moins significatif est le contact numéro 0.

mask number

Le masque de bit correspondant aux contacts à positionner.
Un bit par contact.
Le bit le moins significatif est le contact numéro 0.
Ne sont modifiés que les contacts ayant un bit à 1.

Valeur de retour:
  • Une promesse résolue avec une valeur de type boolean.

    Type
    Promise.<boolean>
  • Une promesse rejetée avec une valeur de type ErrorStatus.

    Type
    Promise.<ErrorStatus>

Définition des types

InputContactConfig

Configuration à appliquer sur les contacts d'entrée.
Cette configuration définit l'entité responsable de la gestion des contacts d'entrée : le navigateur Web ou le moteur de lecture vidéo.
Il est également possible d'activer la conversion d'événements contacts en événements clavier.

Propriétés:
Nom Type Attributs Par défaut Description
controller 'browser' | 'videoplayer'

Le nom de l'entité gérant les contacts d'entrée.
Il doit avoir pour valeur 'browser' pour permettre à la couche HTML de contrôler les entrées ou 'videoplayer' pour laisser la gestion au moteur de lecture.

lifetime 'url' | 'site' | 'session' | 'scenario' <optionnel>
'url'

La durée de vie de la configuration peut être précisée lorsque le contrôleur est le navigateur web.
Ce paramètre définit le moment où la configuration est automatiquement réinitialisée à sa valeur par défaut (contrôle par le moteur de lecture).

ValeurDescription
'url' La configuration est uniquement appliquée à l'URL courante et est réinitialisée lorsque :
  • l'adresse de la page a changé suite à un clic sur un hyperlien ou un changement programmatique tel qu'une modification de window.location.
  • la page a été rechargée suite à un changement programmatique tel qu'un appel à window.location.reload().
  • le moteur de lecture a traité une balise [WEBS x] ou [WEBE x].
  • le navigateur web a été fermé avec une balise [WEBS OFF] ou [WEBE OFF].
'site' La configuration est uniquement appliquée au site courant et est réinitialisée lorsque :
  • le moteur de lecture a traité une balise [WEBS x] ou [WEBE x].
  • le navigateur web a été fermé avec une balise [WEBS OFF] ou [WEBE OFF].
Ici, il est fait référence à un site au sens du moteur de lecture (pas une URL). Ce site est chargé par une balise [WEBS x] ou [WEBE x]...
'session' La configuration est uniquement appliquée à la session du navigateur web.
Une session démarre avec une balise [WEBS x] ou [WEBE x] et se termine avec une balise [WEBS OFF] ou [WEBE OFF].
La configuration est réinitialisée lorsque la session du navigateur web se termine.
'scenario' La configuration est appliquée sur le scénario courant.
Elle reste active au changement de session (lorsque le navigateur est fermé), sites et URLs.
Pour faire simple : la configuration reste active tant qu'une autre configuration n'est pas explicitement donnée.
keymaps Object <optionnel>

Utilisable uniquement lorsque controller a pour valeur 'browser'.
Cet objet contient les noms des touches clavier associées à chaque contact d'entrée.
Cela permet de gérer les événements de contact d'entrée comme des événements clavier standards, en utilisant les gestionnaires keyup et keydown.

Propriétés
Nom Type Attributs Description
combined Array.<string> <optionnel>

Touches à utiliser sur les contacts d'entrée combinés. Ce tableau doit contenir un maximum de 8 noms de touches, un pour chaque contact.

standalone Array.<string> <optionnel>

Touches à utiliser sur le contact d'entrée autonome. Ce tableau doit contenir un seul nom de touche.


Liste des touches disponibles

Passez la curseur de la souris sur les touches pour voir leurs noms.

InputContactInfo

Un InputContactInfo contient l'état d'un ou plusieurs contacts d'entrée.

Propriétés:
Nom Type Description
name string

Nom logique du groupe de contacts d'entrée.

values Array.<boolean>

Tableau d'état des contacts d'entrée.

Événements

InputContactEvent

Cet événement est envoyé lorsque l'état des contacts d'entrée est modifié.

Propriétés:
Nom Type Description
type 'idal-contact-event'

Type correspondant à aux événements relatifs aux contacts d'entrée.

detail Contact~InputContactInfo

L'état des contacts d'entrée.

Cet événement doit être enregistré en utilisant l'API window.addEventListener() définie par la spécification DOM.

Type:
Exemple
window.addEventListener('idal-contact-event', function(e) {
    var info = e.detail;
    console.log("Input contact name: " + info.name);
    for (var i = 0 ; i < info.values.length ; i++) {
        console.log("Contact " + i + ": " + info.values[i]);
    }
});