tenfourfox/dom/bluetooth/ipc/PBluetooth.ipdl
Cameron Kaiser c9b2922b70 hello FPR
2017-04-19 00:56:45 -07:00

607 lines
11 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::BluetoothAddress
from "mozilla/dom/bluetooth/BluetoothCommon.h";
using mozilla::dom::bluetooth::BluetoothObjectType
from "mozilla/dom/bluetooth/BluetoothCommon.h";
using mozilla::dom::bluetooth::BluetoothPinCode
from "mozilla/dom/bluetooth/BluetoothCommon.h";
using mozilla::dom::bluetooth::ControlPlayStatus
from "mozilla/dom/bluetooth/BluetoothCommon.h";
namespace mozilla {
namespace dom {
namespace bluetooth {
/**
* Bluetooth request types.
*/
struct GetAdaptersRequest
{ };
struct StartBluetoothRequest
{
};
struct StopBluetoothRequest
{
};
struct SetPropertyRequest
{
BluetoothObjectType type;
BluetoothNamedValue value;
};
struct GetPropertyRequest
{
BluetoothObjectType type;
BluetoothAddress address;
};
struct StartDiscoveryRequest
{
};
struct StopDiscoveryRequest
{
};
struct StartLeScanRequest
{
BluetoothUuid[] serviceUuids;
};
struct StopLeScanRequest
{
BluetoothUuid scanUuid;
};
struct PairRequest
{
BluetoothAddress address;
uint32_t timeoutMS;
};
struct UnpairRequest
{
BluetoothAddress address;
};
struct PinReplyRequest
{
BluetoothAddress address;
bool accept;
BluetoothPinCode pinCode;
};
struct SspReplyRequest
{
BluetoothAddress address;
BluetoothSspVariant variant;
bool accept;
};
struct SetPinCodeRequest
{
BluetoothAddress address;
BluetoothPinCode pincode;
};
struct SetPasskeyRequest
{
BluetoothAddress address;
uint32_t passkey;
};
struct ConfirmPairingConfirmationRequest
{
BluetoothAddress address;
};
struct DenyPairingConfirmationRequest
{
BluetoothAddress address;
};
struct PairedDevicePropertiesRequest
{
BluetoothAddress[] addresses;
};
struct ConnectedDevicePropertiesRequest
{
uint16_t serviceUuid;
};
struct FetchUuidsRequest
{
BluetoothAddress address;
};
struct ConnectRequest
{
BluetoothAddress address;
uint32_t cod;
uint16_t serviceUuid;
};
struct DisconnectRequest
{
BluetoothAddress address;
uint16_t serviceUuid;
};
struct SendFileRequest
{
BluetoothAddress address;
PBlob blob;
};
struct StopSendingFileRequest
{
BluetoothAddress address;
};
struct ConfirmReceivingFileRequest
{
BluetoothAddress address;
};
struct DenyReceivingFileRequest
{
BluetoothAddress address;
};
struct ConnectScoRequest
{
};
struct DisconnectScoRequest
{
};
struct IsScoConnectedRequest
{
};
struct SetObexPasswordRequest
{
nsString password;
};
struct RejectObexAuthRequest
{
};
struct ReplyTovCardPullingRequest
{
PBlob blob;
};
struct ReplyToPhonebookPullingRequest
{
PBlob blob;
uint16_t phonebookSize;
};
struct ReplyTovCardListingRequest
{
PBlob blob;
uint16_t phonebookSize;
};
struct ReplyToFolderListingRequest
{
uint16_t masId;
nsString folderList;
};
struct ReplyToMessagesListingRequest
{
uint16_t masId;
PBlob blob;
bool newMessage;
nsString timeStamp;
uint16_t size;
};
struct ReplyToGetMessageRequest
{
uint16_t masId;
PBlob blob;
};
struct ReplyToSetMessageStatusRequest
{
uint16_t masId;
bool messageStatus;
};
struct ReplyToSendMessageRequest
{
uint16_t masId;
nsString handleId;
bool messageStatus;
};
struct ReplyToMessageUpdateRequest
{
uint16_t masId;
bool messageStatus;
};
struct AnswerWaitingCallRequest
{
};
struct IgnoreWaitingCallRequest
{
};
struct ToggleCallsRequest
{
};
struct SendMetaDataRequest
{
nsString title;
nsString artist;
nsString album;
int64_t mediaNumber;
int64_t totalMediaCount;
int64_t duration;
};
struct SendPlayStatusRequest
{
int64_t duration;
int64_t position;
ControlPlayStatus playStatus;
};
struct ConnectGattClientRequest
{
BluetoothUuid appUuid;
BluetoothAddress deviceAddress;
};
struct DisconnectGattClientRequest
{
BluetoothUuid appUuid;
BluetoothAddress deviceAddress;
};
struct DiscoverGattServicesRequest
{
BluetoothUuid appUuid;
};
struct GattClientStartNotificationsRequest
{
BluetoothUuid appUuid;
BluetoothGattServiceId servId;
BluetoothGattId charId;
};
struct GattClientStopNotificationsRequest
{
BluetoothUuid appUuid;
BluetoothGattServiceId servId;
BluetoothGattId charId;
};
struct UnregisterGattClientRequest
{
int clientIf;
};
struct GattClientReadRemoteRssiRequest
{
int clientIf;
BluetoothAddress deviceAddress;
};
struct GattClientReadCharacteristicValueRequest
{
BluetoothUuid appUuid;
BluetoothGattServiceId serviceId;
BluetoothGattId charId;
};
struct GattClientWriteCharacteristicValueRequest
{
BluetoothUuid appUuid;
BluetoothGattServiceId serviceId;
BluetoothGattId charId;
BluetoothGattWriteType writeType;
uint8_t[] value;
};
struct GattClientReadDescriptorValueRequest
{
BluetoothUuid appUuid;
BluetoothGattServiceId serviceId;
BluetoothGattId charId;
BluetoothGattId descId;
};
struct GattClientWriteDescriptorValueRequest
{
BluetoothUuid appUuid;
BluetoothGattServiceId serviceId;
BluetoothGattId charId;
BluetoothGattId descId;
uint8_t[] value;
};
struct GattServerConnectPeripheralRequest
{
BluetoothUuid appUuid;
BluetoothAddress address;
};
struct GattServerDisconnectPeripheralRequest
{
BluetoothUuid appUuid;
BluetoothAddress address;
};
struct UnregisterGattServerRequest
{
int serverIf;
};
struct GattServerAddServiceRequest
{
BluetoothUuid appUuid;
BluetoothGattServiceId serviceId;
uint16_t handleCount;
};
struct GattServerAddIncludedServiceRequest
{
BluetoothUuid appUuid;
BluetoothAttributeHandle serviceHandle;
BluetoothAttributeHandle includedServiceHandle;
};
struct GattServerAddCharacteristicRequest
{
BluetoothUuid appUuid;
BluetoothAttributeHandle serviceHandle;
BluetoothUuid characteristicUuid;
BluetoothGattAttrPerm permissions;
BluetoothGattCharProp properties;
};
struct GattServerAddDescriptorRequest
{
BluetoothUuid appUuid;
BluetoothAttributeHandle serviceHandle;
BluetoothAttributeHandle characteristicHandle;
BluetoothUuid descriptorUuid;
BluetoothGattAttrPerm permissions;
};
struct GattServerRemoveServiceRequest
{
BluetoothUuid appUuid;
BluetoothAttributeHandle serviceHandle;
};
struct GattServerStartServiceRequest
{
BluetoothUuid appUuid;
BluetoothAttributeHandle serviceHandle;
};
struct GattServerStopServiceRequest
{
BluetoothUuid appUuid;
BluetoothAttributeHandle serviceHandle;
};
struct GattServerSendResponseRequest
{
BluetoothUuid appUuid;
BluetoothAddress address;
uint16_t status;
int32_t requestId;
BluetoothGattResponse response;
};
struct GattServerSendIndicationRequest
{
BluetoothUuid appUuid;
BluetoothAddress address;
BluetoothAttributeHandle characteristicHandle;
bool confirm;
uint8_t[] value;
};
union Request
{
GetAdaptersRequest;
StartBluetoothRequest;
StopBluetoothRequest;
SetPropertyRequest;
GetPropertyRequest;
StartDiscoveryRequest;
StopDiscoveryRequest;
StartLeScanRequest;
StopLeScanRequest;
PairRequest;
UnpairRequest;
PinReplyRequest;
SspReplyRequest;
SetPinCodeRequest;
SetPasskeyRequest;
ConfirmPairingConfirmationRequest;
DenyPairingConfirmationRequest;
ConnectedDevicePropertiesRequest;
PairedDevicePropertiesRequest;
FetchUuidsRequest;
ConnectRequest;
DisconnectRequest;
SendFileRequest;
StopSendingFileRequest;
ConfirmReceivingFileRequest;
DenyReceivingFileRequest;
ConnectScoRequest;
DisconnectScoRequest;
IsScoConnectedRequest;
SetObexPasswordRequest;
RejectObexAuthRequest;
ReplyTovCardPullingRequest;
ReplyToPhonebookPullingRequest;
ReplyTovCardListingRequest;
ReplyToFolderListingRequest;
ReplyToMessagesListingRequest;
ReplyToGetMessageRequest;
ReplyToSetMessageStatusRequest;
ReplyToSendMessageRequest;
ReplyToMessageUpdateRequest;
AnswerWaitingCallRequest;
IgnoreWaitingCallRequest;
ToggleCallsRequest;
SendMetaDataRequest;
SendPlayStatusRequest;
ConnectGattClientRequest;
DisconnectGattClientRequest;
DiscoverGattServicesRequest;
GattClientStartNotificationsRequest;
GattClientStopNotificationsRequest;
UnregisterGattClientRequest;
GattClientReadRemoteRssiRequest;
GattClientReadCharacteristicValueRequest;
GattClientWriteCharacteristicValueRequest;
GattClientReadDescriptorValueRequest;
GattClientWriteDescriptorValueRequest;
GattServerConnectPeripheralRequest;
GattServerDisconnectPeripheralRequest;
UnregisterGattServerRequest;
GattServerAddServiceRequest;
GattServerAddIncludedServiceRequest;
GattServerAddCharacteristicRequest;
GattServerAddDescriptorRequest;
GattServerRemoveServiceRequest;
GattServerStartServiceRequest;
GattServerStopServiceRequest;
GattServerSendResponseRequest;
GattServerSendIndicationRequest;
};
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