mirror of
https://github.com/klzgrad/naiveproxy.git
synced 2024-11-28 08:16:09 +03:00
245 lines
11 KiB
Plaintext
245 lines
11 KiB
Plaintext
// Copyright 2017 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.
|
|
|
|
module bluetooth.mojom;
|
|
|
|
import "device/bluetooth/public/interfaces/uuid.mojom";
|
|
|
|
// FakeBluetooth and its related interfaces allow clients to control the global
|
|
// Bluetooth State as well as simulate Bluetooth events including finding new
|
|
// devices, simulating GATT attributes and its descendants, and simulating
|
|
// success and error responses.
|
|
|
|
// Indicates the various states of Central.
|
|
enum CentralState {
|
|
ABSENT,
|
|
POWERED_ON,
|
|
POWERED_OFF,
|
|
};
|
|
|
|
// FakeBluetooth allows clients to control the global Bluetooth state.
|
|
interface FakeBluetooth {
|
|
// Set it to indicate whether the platform supports BLE. For example, Windows
|
|
// 7 is a platform that doesn't support Low Energy. On the other hand Windows
|
|
// 10 is a platform that does support LE, even if there is no Bluetooth radio
|
|
// available.
|
|
SetLESupported(bool available) => ();
|
|
|
|
// Initializes a fake Central with |state| as the initial state.
|
|
SimulateCentral(CentralState state) => (FakeCentral fake_central);
|
|
|
|
// Evaluates whether all responses set by this API have been consumed by this
|
|
// central or otherwise. This includes responses set by:
|
|
// - SetNextGATTConnectionResponse
|
|
// - SetNextGATTDiscoveryResponse
|
|
// - SetNextReadCharacteristicResponse
|
|
// - SetNextWriteCharacteristicResponse
|
|
// - SetNextSubscribeToNotificationsResponse
|
|
// - SetNextUnsubscribeFromNotificationsResponse
|
|
// - SetNextReadDescriptorResponse
|
|
// - SetNextWriteDescriptorResponse
|
|
// The callback is called with |consumed| set to true if there are no pending
|
|
// responses.
|
|
AllResponsesConsumed() => (bool consumed);
|
|
};
|
|
|
|
// HCI Error Codes from BT 4.2 Vol 2 Part D 1.3 List Of Error Codes.
|
|
const uint16 kHCISuccess = 0x0000;
|
|
const uint16 kHCIConnectionTimeout = 0x0008;
|
|
|
|
// GATT Error codes from BT 4.2 Vol 3 Part F 3.4.1.1 Error Response.
|
|
const uint16 kGATTSuccess = 0x0000;
|
|
const uint16 kGATTInvalidHandle = 0x0001;
|
|
|
|
// Defined in BT 4.2 Vol 3 Part G 3.3.1. Characteristic Properties
|
|
struct CharacteristicProperties {
|
|
bool broadcast;
|
|
bool read;
|
|
bool write_without_response;
|
|
bool write;
|
|
bool notify;
|
|
bool indicate;
|
|
bool authenticated_signed_writes;
|
|
bool extended_properties;
|
|
};
|
|
|
|
// FakeCentral allows clients to simulate events that a device in the
|
|
// Central/Observer role would receive as well as monitor the operations
|
|
// performed by the device in the Central/Observer role.
|
|
//
|
|
// A "Central" interface would allow its clients to receive advertising events
|
|
// and initiate connections to peripherals i.e. operations of two roles
|
|
// defined by the Bluetooth Spec: Observer and Central.
|
|
// See Bluetooth 4.2 Vol 3 Part C 2.2.2 "Roles when Operating over an
|
|
// LE Physical Transport".
|
|
interface FakeCentral {
|
|
// Simulates a peripheral with |address|, |name| and |known_service_uuids|
|
|
// that has already been connected to the system. If the peripheral existed
|
|
// already it updates its name and known UUIDs.
|
|
//
|
|
// Platforms offer methods to retrieve devices that have already been
|
|
// connected to the system or weren't connected through the UA e.g. a user
|
|
// connected a peripheral through the system's settings. This method is
|
|
// intended to simulate peripherals that those methods would return.
|
|
// Even though these devices are already connected to the OS, clients
|
|
// need to call the respective connect functions to signal they intend to keep
|
|
// the connection alive.
|
|
SimulatePreconnectedPeripheral(string address,
|
|
string name,
|
|
array<UUID> known_service_uuids) => ();
|
|
|
|
// Sets the next GATT Connection request response for peripheral with
|
|
// |address| to |code|. |code| could be an HCI Error Code from
|
|
// BT 4.2 Vol 2 Part D 1.3 List Of Error Codes or a number outside that range
|
|
// returned by specific platforms e.g. Android returns 0x101 to signal a GATT
|
|
// failure
|
|
// https://developer.android.com/reference/android/bluetooth/BluetoothGatt.html#GATT_FAILURE
|
|
// Calls callback with false if there was any error when simulating the next
|
|
// response.
|
|
SetNextGATTConnectionResponse(string address, uint16 code) => (bool success);
|
|
|
|
// Sets the next GATT Discovery request response for peripheral with
|
|
// |address| to |code|. |code| could be an HCI Error Code from
|
|
// BT 4.2 Vol 2 Part D 1.3 List Of Error Codes or a number outside that range
|
|
// returned by specific platforms e.g. Android returns 0x101 to signal a GATT
|
|
// failure
|
|
// https://developer.android.com/reference/android/bluetooth/BluetoothGatt.html#GATT_FAILURE
|
|
// Calls callback with false if there was any error when simulating the next
|
|
// response.
|
|
//
|
|
// The following procedures defined at BT 4.2 Vol 3 Part G Section 4.
|
|
// "GATT Feature Requirements" are used to discover attributes of the
|
|
// GATT Server:
|
|
// - Primary Service Discovery
|
|
// - Relationship Discovery
|
|
// - Characteristic Discovery
|
|
// - Characteristic Descriptor Discovery
|
|
// This method aims to simulate the response once all of these procedures
|
|
// have completed or if there was an error during any of them.
|
|
SetNextGATTDiscoveryResponse(string address, uint16 code) => (bool success);
|
|
|
|
// Simulates a GATT disconnection from the peripheral with |address|.
|
|
// Calls callback with false if there was any error when simulating the GATT
|
|
// disconnection.
|
|
SimulateGATTDisconnection(string address) => (bool success);
|
|
|
|
// Simulates an Indication from the peripheral's GATT `Service Changed`
|
|
// Characteristic from BT 4.2 Vol 3 Part G 7.1. This Indication is signaled
|
|
// when services, characteristics, or descriptors are changed, added, or
|
|
// removed.
|
|
//
|
|
// The value for `Service Changed` is a range of attribute handles that have
|
|
// changed. However, this testing specification works at an abstracted
|
|
// level and does not expose setting attribute handles when adding
|
|
// attributes. Consequently, this simulate method should include the full
|
|
// range of all the peripheral's attribute handle values.
|
|
SimulateGATTServicesChanged(string address) => (bool success);
|
|
|
|
// Adds a fake GATT Service with |service_uuid| to |peripheral_address|
|
|
// peripheral. The service will be found found when discovering the
|
|
// peripheral's GATT Attributes. Runs its callback with the fake service's Id.
|
|
// Runs its callback with nullopt if it failed to add the fake service.
|
|
AddFakeService(string peripheral_address, UUID service_uuid)
|
|
=> (string? service_id);
|
|
|
|
// Adds a fake GATT Characteristic with |characteristic_uuid| and |properties|
|
|
// to the fake service with |service_id| in |peripheral_address| peripheral.
|
|
// The characteristic will be found when discovering the peripheral's GATT
|
|
// Attributes. Runs its callback with the fake characteristic's Id. Runs its
|
|
// callback with nullopt if it failed to add the fake characteristic.
|
|
AddFakeCharacteristic(
|
|
UUID characteristic_uuid,
|
|
CharacteristicProperties properties,
|
|
string service_id,
|
|
string peripheral_address) => (string? characteristic_id);
|
|
|
|
// Removes a fake GATT Characteristic with |identifier| to the fake service
|
|
// with |service_id| in |peripheral_address| peripheral.
|
|
RemoveFakeCharacteristic(
|
|
string identifier,
|
|
string service_id,
|
|
string peripheral_address) => (bool success);
|
|
|
|
// Adds a fake GATT Descriptor with |descriptor_uuid| to the fake service with
|
|
// |service_id| in |peripheral_address| peripheral. The descriptor will be
|
|
// found when discovering the peripheral's GATT Attributes. Runs its callback
|
|
// with the fake descriptor's Id. Runs its callback with nullopt if it failed
|
|
// to add the fake descriptor.
|
|
AddFakeDescriptor(UUID descriptor_uuid,
|
|
string characteristic_id,
|
|
string service_id,
|
|
string peripheral_address) => (string? descriptor_id);
|
|
|
|
// Sets the next read response for characteristic with |characteristics_id|
|
|
// in |service_id| and in |peripheral_address| to |code| and |value|.
|
|
// |code| could be a GATT Error Response from
|
|
// BT 4.2 Vol 3 Part F 3.4.1.1 Error Response or a number outside that range
|
|
// returned by specific platforms e.g. Android returns 0x101 to signal a GATT
|
|
// failure.
|
|
// https://developer.android.com/reference/android/bluetooth/BluetoothGatt.html#GATT_FAILURE
|
|
// Calls callback with false if there was any error when simulating the next
|
|
// response.
|
|
SetNextReadCharacteristicResponse(uint16 gatt_code, array<uint8>? value,
|
|
string characteristic_id, string service_id,
|
|
string peripheral_address) => (bool success);
|
|
|
|
// Sets the next write response for characteristic with |characteristics_id|
|
|
// in |service_id| and in |peripheral_address| to |code|. |code| could be a
|
|
// GATT Error Response from BT 4.2 Vol 3 Part F 3.4.1.1 Error Response or a
|
|
// number outside that range returned by specific platforms e.g. Android
|
|
// returns 0x101 to signal a GATT failure.
|
|
// https://developer.android.com/reference/android/bluetooth/BluetoothGatt.html#GATT_FAILURE
|
|
// Calls callback with false if there was any error when simulating the next
|
|
// response.
|
|
//
|
|
// Note that if the client performs a write without response procedure the set
|
|
// response will be ignored.
|
|
SetNextWriteCharacteristicResponse(
|
|
uint16 gatt_code,
|
|
string characteristic_id,
|
|
string service_id,
|
|
string peripheral_address) => (bool success);
|
|
|
|
// Sets the next subscribe to notifications response for characteristic with
|
|
// |characteristic_id| in |service_id| and in |peripheral_address| to |code|.
|
|
// |code| could be a GATT Error Response from BT 4.2 Vol 3 Part F 3.4.1.1
|
|
// Error Response or a number outside that range returned by specific
|
|
// platforms e.g. Android returns 0x101 to signal a GATT failure.
|
|
// https://developer.android.com/reference/android/bluetooth/BluetoothGatt.html#GATT_FAILURE
|
|
// Calls callback with false if there was any error when simulating the next
|
|
// response.
|
|
SetNextSubscribeToNotificationsResponse(
|
|
uint16 gatt_code,
|
|
string characteristic_id,
|
|
string service_id,
|
|
string peripheral_address) => (bool success);
|
|
|
|
// Gets the last successfully written value to the characteristic with
|
|
// |characteristics_id| in |service_id| and in |peripheral_address|.
|
|
// If the value can't be retrieved calls its callback with false. Calls its
|
|
// callback with null value if no value has been written to the
|
|
// characteristic.
|
|
GetLastWrittenValue(
|
|
string characteristic_id,
|
|
string service_id,
|
|
string peripheral_address) => (bool success, array<uint8>? value);
|
|
|
|
// Sets the next read response for descriptor with |descriptor_id| in
|
|
// |characteristics_id| in |service_id| and in |peripheral_address| to |code|
|
|
// and |value|. |code| could be a GATT Error Response from
|
|
// BT 4.2 Vol 3 Part F 3.4.1.1 Error Response or a number outside that range
|
|
// returned by specific platforms e.g. Android returns 0x101 to signal a GATT
|
|
// failure.
|
|
// https://developer.android.com/reference/android/bluetooth/BluetoothGatt.html#GATT_FAILURE
|
|
// Calls callback with false if there was any error when simulating the next
|
|
// response.
|
|
SetNextReadDescriptorResponse(
|
|
uint16 gatt_code,
|
|
array<uint8>? value,
|
|
string descriptor_id,
|
|
string characteristic_id,
|
|
string service_id,
|
|
string peripheral_address) => (bool success);
|
|
};
|