17c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet/*
27c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet * Copyright (C) 2009 Google Inc.  All rights reserved.
37c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *
47c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet * Licensed under the Apache License, Version 2.0 (the "License");
57c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet * you may not use this file except in compliance with the License.
67c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet * You may obtain a copy of the License at
77c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *
87c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *      http://www.apache.org/licenses/LICENSE-2.0
97c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet *
107c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet * Unless required by applicable law or agreed to in writing, software
117c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet * distributed under the License is distributed on an "AS IS" BASIS,
127c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
137c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet * See the License for the specific language governing permissions and
147c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet * limitations under the License.
157c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet */
167c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
177c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetpackage com.google.polo.pairing;
187c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
197c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetimport com.google.polo.exception.PoloException;
207c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
217c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet/**
227c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet * Listener interface for handling events within a pairing session.
237c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet */
247c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichetpublic interface PairingListener {
257c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
267c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  public static enum LogLevel {
277c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    LOG_DEBUG,
287c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    LOG_INFO,
297c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet    LOG_ERROR
307c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  }
317c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
327c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  /**
337c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet   * Called at the start of a new pairing session. The session object can be
347c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet   * inspected to determine whether in client or server mode.
357c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet   *
367c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet   * @param session  the pairing session
377c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet   */
387c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  void onSessionCreated(PairingSession session);
397c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
407c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  /**
417c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet   * Called when the session calls for the local entity to act as the input
427c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet   * device.
437c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet   *
447c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet   * @param session  the pairing session
457c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet   * @throws PoloException  on error receiving the input
467c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet   */
477c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  void onPerformInputDeviceRole(PairingSession session) throws PoloException;
487c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
497c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  /**
507c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet   * Called when the session calls for the local entity to act as the display
517c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet   * device.
527c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet   *
537c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet   * @param session         the pairing session
547c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet   * @throws PoloException  on error displaying the secret
557c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet   */
567c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  void onPerformOutputDeviceRole(PairingSession session, byte[] gamma)
577c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet      throws PoloException;
587c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
597c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  /**
607c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet   * Called at the end of a pairing session.  The session object can be
617c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet   * inspected to determine success or failure.
627c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet   *
637c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet   * @param session  the pairing session
647c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet   */
657c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  void onSessionEnded(PairingSession session);
667c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
677c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  /**
687c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet   * Receives various log messages from the protocol.
697c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet   *
707c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet   * @param level    the severity of the message
717c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet   * @param message  the message to log
727c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet   */
737c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet  void onLogMessage(LogLevel level, String message);
747c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet
757c9978567a202d6aa98beac5da5e1b3b34792862Jerome Poichet}
76