dom/bluetooth/ipc/PBluetooth.ipdl

Thu, 22 Jan 2015 13:21:57 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Thu, 22 Jan 2015 13:21:57 +0100
branch
TOR_BUG_9701
changeset 15
b8a032363ba2
permissions
-rw-r--r--

Incorporate requested changes from Mozilla in review:
https://bugzilla.mozilla.org/show_bug.cgi?id=1123480#c6

     1 /* -*- Mode: c++; c-basic-offset: 2; indent-tabs-mode: nil; tab-width: 40 -*- */
     2 /* vim: set ts=2 et sw=2 tw=80: */
     3 /* This Source Code Form is subject to the terms of the Mozilla Public
     4  * License, v. 2.0. If a copy of the MPL was not distributed with this file,
     5  * You can obtain one at http://mozilla.org/MPL/2.0/. */
     7 include protocol PBlob;
     8 include protocol PBluetoothRequest;
     9 include protocol PContent;
    11 include BluetoothTypes;
    13 include "mozilla/dom/bluetooth/ipc/BluetoothMessageUtils.h";
    15 using mozilla::dom::bluetooth::BluetoothObjectType from "mozilla/dom/bluetooth/BluetoothCommon.h";
    17 namespace mozilla {
    18 namespace dom {
    19 namespace bluetooth {
    21 /**
    22  * Bluetooth request types.
    23  */
    25 struct DefaultAdapterPathRequest
    26 { };
    28 struct SetPropertyRequest
    29 {
    30   BluetoothObjectType type;
    31   BluetoothNamedValue value;
    32 };
    34 struct GetPropertyRequest
    35 {
    36   BluetoothObjectType type;
    37   nsString path;
    38 };
    40 struct StartDiscoveryRequest
    41 {
    42 };
    44 struct StopDiscoveryRequest
    45 {
    46 };
    48 struct PairRequest
    49 {
    50   nsString address;
    51   uint32_t timeoutMS;
    52 };
    54 struct UnpairRequest
    55 {
    56   nsString address;
    57 };
    59 struct SetPinCodeRequest
    60 {
    61   nsString path;
    62   nsString pincode;
    63 };
    65 struct SetPasskeyRequest
    66 {
    67   nsString path;
    68   uint32_t passkey;
    69 };
    71 struct ConfirmPairingConfirmationRequest
    72 {
    73   nsString path;
    74 };
    76 struct DenyPairingConfirmationRequest
    77 {
    78   nsString path;
    79 };
    81 struct PairedDevicePropertiesRequest
    82 {
    83   nsString[] addresses;
    84 };
    86 struct ConnectedDevicePropertiesRequest
    87 {
    88   uint16_t serviceUuid;
    89 };
    91 struct ConnectRequest
    92 {
    93   nsString address;
    94   uint32_t cod;
    95   uint16_t serviceUuid;
    96 };
    98 struct DisconnectRequest
    99 {
   100   nsString address;
   101   uint16_t serviceUuid;
   102 };
   104 struct SendFileRequest
   105 {
   106   nsString devicePath;
   107   PBlob blob;
   108 };
   110 struct StopSendingFileRequest
   111 {
   112   nsString devicePath;
   113 };
   115 struct ConfirmReceivingFileRequest
   116 {
   117   nsString devicePath;
   118 };
   120 struct DenyReceivingFileRequest
   121 {
   122   nsString devicePath;
   123 };
   125 struct ConnectScoRequest
   126 {
   127 };
   129 struct DisconnectScoRequest
   130 {
   131 };
   133 struct IsScoConnectedRequest
   134 {
   135 };
   137 struct AnswerWaitingCallRequest
   138 {
   139 };
   141 struct IgnoreWaitingCallRequest
   142 {
   143 };
   145 struct ToggleCallsRequest
   146 {
   147 };
   149 struct SendMetaDataRequest
   150 {
   151   nsString title;
   152   nsString artist;
   153   nsString album;
   154   int64_t mediaNumber;
   155   int64_t totalMediaCount;
   156   int64_t duration;
   157 };
   159 struct SendPlayStatusRequest
   160 {
   161   int64_t duration;
   162   int64_t position;
   163   nsString playStatus;
   164 };
   166 union Request
   167 {
   168   DefaultAdapterPathRequest;
   169   SetPropertyRequest;
   170   GetPropertyRequest;
   171   StartDiscoveryRequest;
   172   StopDiscoveryRequest;
   173   PairRequest;
   174   UnpairRequest;
   175   SetPinCodeRequest;
   176   SetPasskeyRequest;
   177   ConfirmPairingConfirmationRequest;
   178   DenyPairingConfirmationRequest;
   179   ConnectedDevicePropertiesRequest;
   180   PairedDevicePropertiesRequest;
   181   ConnectRequest;
   182   DisconnectRequest;
   183   SendFileRequest;
   184   StopSendingFileRequest;
   185   ConfirmReceivingFileRequest;
   186   DenyReceivingFileRequest;
   187   ConnectScoRequest;
   188   DisconnectScoRequest;
   189   IsScoConnectedRequest;
   190   AnswerWaitingCallRequest;
   191   IgnoreWaitingCallRequest;
   192   ToggleCallsRequest;
   193   SendMetaDataRequest;
   194   SendPlayStatusRequest;
   195 };
   197 protocol PBluetooth
   198 {
   199   manager PContent;
   200   manages PBluetoothRequest;
   202   /**
   203    * The potential exists for a racy shutdown so the following sequence of
   204    * messages is used to shutdown safely:
   205    *
   206    *   1. [BeginShutdown]       (Parent -> Child [Optional])
   207    *   2. StopNotifying         (Child  -> Parent)
   208    *   3. NotificationsStopped  (Parent -> Child)
   209    *   4. __delete__()          (Child  -> Parent)
   210    */
   212 child:
   213   /**
   214    * Sent when a settings change has enabled or disabled the bluetooth firmware.
   215    */
   216   Enabled(bool enabled);
   218   /**
   219    * Sent when a bluetooth signal is broadcasted to child processes.
   220    */
   221   Notify(BluetoothSignal signal);
   223   /**
   224    * Sent when the parent process is about to be shut down. See shutdown note
   225    * above.
   226    */
   227   BeginShutdown();
   229   /**
   230    * Sent to inform the child process that it will no longer receive any
   231    * messages from the parent. See shutdown note above.
   232    */
   233   NotificationsStopped();
   235 parent:
   236   /**
   237    * Sent when the child no longer needs to use bluetooth. See shutdown note
   238    * above.
   239    */
   240   __delete__();
   242   /**
   243    * Sent when the child needs to receive signals related to the given node.
   244    */
   245   RegisterSignalHandler(nsString node);
   247   /**
   248    * Sent when the child no longer needs to receive signals related to the given
   249    * node.
   250    */
   251   UnregisterSignalHandler(nsString node);
   253   /**
   254    * Sent when the child no longer needs to receive any messages from the
   255    * parent. See shutdown note above.
   256    */
   257   StopNotifying();
   259   /**
   260    * Sent when the child makes an asynchronous request to the parent.
   261    */
   262   PBluetoothRequest(Request request);
   264   /**
   265    * FIXME: Bug 547703.
   266    *
   267    * This is the state machine we want:
   268    *
   269    * start state NOTIFYING:
   270    *   send Enabled goto NOTIFYING;
   271    *   send Notify goto NOTIFYING;
   272    *   recv RegisterSignalHandler goto NOTIFYING;
   273    *   recv UnregisterSignalHandler goto NOTIFYING;
   274    *   send BeginShutdown goto PARENT_DONE;
   275    *   recv StopNotifying goto CHILD_DONE;
   276    *
   277    * state PARENT_DONE:
   278    *   recv RegisterSignalHandler goto PARENT_DONE;
   279    *   recv UnregisterSignalHandler goto PARENT_DONE;
   280    *   recv StopNotifying goto CHILD_DONE;
   281    *
   282    * state CHILD_DONE:
   283    *   send Enabled goto CHILD_DONE;
   284    *   send Notify goto CHILD_DONE;
   285    *   send BeginShutdown goto CHILD_DONE;
   286    *   send NotificationsStopped goto DONE;
   287    *
   288    * state DONE:
   289    *   recv __delete__;
   290    */
   291 };
   293 } // namespace bluetooth
   294 } // namespace dom
   295 } // namespace mozilla

mercurial