mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-31 22:25:30 +00:00
253 lines
4.8 KiB
Plaintext
253 lines
4.8 KiB
Plaintext
/* -*- Mode: c++; c-basic-offset: 2; indent-tabs-mode: nil; tab-width: 40 -*- */
|
|
/* vim: set ts=2 et sw=2 tw=80: */
|
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
|
* You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
include protocol PBlob;
|
|
include protocol PBluetoothRequest;
|
|
include protocol PContent;
|
|
|
|
include BluetoothTypes;
|
|
|
|
include "mozilla/dom/bluetooth/ipc/BluetoothMessageUtils.h";
|
|
|
|
using mozilla::dom::bluetooth::BluetoothObjectType;
|
|
|
|
namespace mozilla {
|
|
namespace dom {
|
|
namespace bluetooth {
|
|
|
|
/**
|
|
* Bluetooth request types.
|
|
*/
|
|
|
|
struct DefaultAdapterPathRequest
|
|
{ };
|
|
|
|
struct SetPropertyRequest
|
|
{
|
|
BluetoothObjectType type;
|
|
nsString path;
|
|
BluetoothNamedValue value;
|
|
};
|
|
|
|
struct GetPropertyRequest
|
|
{
|
|
BluetoothObjectType type;
|
|
nsString path;
|
|
};
|
|
|
|
struct StartDiscoveryRequest
|
|
{
|
|
nsString path;
|
|
};
|
|
|
|
struct StopDiscoveryRequest
|
|
{
|
|
nsString path;
|
|
};
|
|
|
|
struct PairRequest
|
|
{
|
|
nsString path;
|
|
nsString address;
|
|
uint32_t timeoutMS;
|
|
};
|
|
|
|
struct UnpairRequest
|
|
{
|
|
nsString path;
|
|
nsString address;
|
|
};
|
|
|
|
struct SetPinCodeRequest
|
|
{
|
|
nsString path;
|
|
nsString pincode;
|
|
};
|
|
|
|
struct SetPasskeyRequest
|
|
{
|
|
nsString path;
|
|
uint32_t passkey;
|
|
};
|
|
|
|
struct ConfirmPairingConfirmationRequest
|
|
{
|
|
nsString path;
|
|
};
|
|
|
|
struct DenyPairingConfirmationRequest
|
|
{
|
|
nsString path;
|
|
};
|
|
|
|
struct ConfirmAuthorizationRequest
|
|
{
|
|
nsString path;
|
|
};
|
|
|
|
struct DenyAuthorizationRequest
|
|
{
|
|
nsString path;
|
|
};
|
|
|
|
struct DevicePropertiesRequest
|
|
{
|
|
nsString[] addresses;
|
|
};
|
|
|
|
struct ConnectHeadsetRequest
|
|
{
|
|
nsString address;
|
|
nsString adapterPath;
|
|
};
|
|
|
|
struct ConnectObjectPushRequest
|
|
{
|
|
nsString address;
|
|
nsString adapterPath;
|
|
};
|
|
|
|
struct DisconnectHeadsetRequest
|
|
{};
|
|
|
|
struct DisconnectObjectPushRequest
|
|
{};
|
|
|
|
struct SendFileRequest
|
|
{
|
|
nsString devicePath;
|
|
PBlob blob;
|
|
};
|
|
|
|
struct StopSendingFileRequest
|
|
{
|
|
nsString devicePath;
|
|
};
|
|
|
|
union Request
|
|
{
|
|
DefaultAdapterPathRequest;
|
|
SetPropertyRequest;
|
|
GetPropertyRequest;
|
|
StartDiscoveryRequest;
|
|
StopDiscoveryRequest;
|
|
PairRequest;
|
|
UnpairRequest;
|
|
SetPinCodeRequest;
|
|
SetPasskeyRequest;
|
|
ConfirmPairingConfirmationRequest;
|
|
DenyPairingConfirmationRequest;
|
|
ConfirmAuthorizationRequest;
|
|
DenyAuthorizationRequest;
|
|
DevicePropertiesRequest;
|
|
ConnectHeadsetRequest;
|
|
ConnectObjectPushRequest;
|
|
DisconnectHeadsetRequest;
|
|
DisconnectObjectPushRequest;
|
|
SendFileRequest;
|
|
StopSendingFileRequest;
|
|
};
|
|
|
|
protocol PBluetooth
|
|
{
|
|
manager PContent;
|
|
manages PBluetoothRequest;
|
|
|
|
/**
|
|
* The potential exists for a racy shutdown so the following sequence of
|
|
* messages is used to shutdown safely:
|
|
*
|
|
* 1. [BeginShutdown] (Parent -> Child [Optional])
|
|
* 2. StopNotifying (Child -> Parent)
|
|
* 3. NotificationsStopped (Parent -> Child)
|
|
* 4. __delete__() (Child -> Parent)
|
|
*/
|
|
|
|
child:
|
|
/**
|
|
* Sent when a settings change has enabled or disabled the bluetooth firmware.
|
|
*/
|
|
Enabled(bool enabled);
|
|
|
|
/**
|
|
* Sent when a bluetooth signal is broadcasted to child processes.
|
|
*/
|
|
Notify(BluetoothSignal signal);
|
|
|
|
/**
|
|
* Sent when the parent process is about to be shut down. See shutdown note
|
|
* above.
|
|
*/
|
|
BeginShutdown();
|
|
|
|
/**
|
|
* Sent to inform the child process that it will no longer receive any
|
|
* messages from the parent. See shutdown note above.
|
|
*/
|
|
NotificationsStopped();
|
|
|
|
parent:
|
|
/**
|
|
* Sent when the child no longer needs to use bluetooth. See shutdown note
|
|
* above.
|
|
*/
|
|
__delete__();
|
|
|
|
/**
|
|
* Sent when the child needs to receive signals related to the given node.
|
|
*/
|
|
RegisterSignalHandler(nsString node);
|
|
|
|
/**
|
|
* Sent when the child no longer needs to receive signals related to the given
|
|
* node.
|
|
*/
|
|
UnregisterSignalHandler(nsString node);
|
|
|
|
/**
|
|
* Sent when the child no longer needs to receive any messages from the
|
|
* parent. See shutdown note above.
|
|
*/
|
|
StopNotifying();
|
|
|
|
/**
|
|
* Sent when the child makes an asynchronous request to the parent.
|
|
*/
|
|
PBluetoothRequest(Request request);
|
|
|
|
/**
|
|
* FIXME: Bug 547703.
|
|
*
|
|
* This is the state machine we want:
|
|
*
|
|
* start state NOTIFYING:
|
|
* send Enabled goto NOTIFYING;
|
|
* send Notify goto NOTIFYING;
|
|
* recv RegisterSignalHandler goto NOTIFYING;
|
|
* recv UnregisterSignalHandler goto NOTIFYING;
|
|
* send BeginShutdown goto PARENT_DONE;
|
|
* recv StopNotifying goto CHILD_DONE;
|
|
*
|
|
* state PARENT_DONE:
|
|
* recv RegisterSignalHandler goto PARENT_DONE;
|
|
* recv UnregisterSignalHandler goto PARENT_DONE;
|
|
* recv StopNotifying goto CHILD_DONE;
|
|
*
|
|
* state CHILD_DONE:
|
|
* send Enabled goto CHILD_DONE;
|
|
* send Notify goto CHILD_DONE;
|
|
* send BeginShutdown goto CHILD_DONE;
|
|
* send NotificationsStopped goto DONE;
|
|
*
|
|
* state DONE:
|
|
* recv __delete__;
|
|
*/
|
|
};
|
|
|
|
} // namespace bluetooth
|
|
} // namespace dom
|
|
} // namespace mozilla
|