// Copyright 2020 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// Next min version: 1

module cros.mojom;

import "mojo/sensor.mojom";

// The CrOS sensor HAL Mojo server.
//
// Next method ID: 1
interface SensorHalServer {
  // A caller calls CreateChannel to create a new Mojo channel to the sensor
  // HAL adapter.  Upon successfully binding of |sensor_context_request|, the
  // caller will have an established Mojo channel to the sensor HAL adapter
  // process.
  CreateChannel@0(pending_receiver<SensorService> sensor_service_request);
};

// The CrOS sensor HAL Mojo client.
//
// Next method ID: 1
interface SensorHalClient {
  // A caller calls SetUpChannel to dispatch the established Mojo channel
  // |sensor_context_ptr| to the client.  The SensorHalClient can create a
  // Mojo channel to the sensor HAL adapter process with |sensor_context_ptr|.
  // SetUpChannel may be called multiple times.  In cases such as the
  // SensorHalServer which holds the original Mojo channel crashes,
  // SensorHalDispatcher will call SetUpChannel again once a new SensorHalServer
  // reconnects.
  SetUpChannel@0(pending_remote<SensorService> sensor_service_ptr);
};
