Home | History | Annotate | Download | only in binder
      1 //
      2 //  Copyright (C) 2015 Google, Inc.
      3 //
      4 //  Licensed under the Apache License, Version 2.0 (the "License");
      5 //  you may not use this file except in compliance with the License.
      6 //  You may obtain a copy of the License at:
      7 //
      8 //  http://www.apache.org/licenses/LICENSE-2.0
      9 //
     10 //  Unless required by applicable law or agreed to in writing, software
     11 //  distributed under the License is distributed on an "AS IS" BASIS,
     12 //  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13 //  See the License for the specific language governing permissions and
     14 //  limitations under the License.
     15 //
     16 
     17 #pragma once
     18 
     19 #include <base/macros.h>
     20 #include <binder/IBinder.h>
     21 #include <binder/IInterface.h>
     22 
     23 namespace ipc {
     24 namespace binder {
     25 
     26 // This class defines the Binder IPC interface for receiving callbacks related
     27 // to Bluetooth GATT client-role operations.
     28 // TODO(armansito): This class was written based on a new design doc proposal.
     29 // We need to add an AIDL for this to the framework code.
     30 //
     31 // NOTE: KEEP THIS FILE UP-TO-DATE with the corresponding AIDL, otherwise this
     32 // won't be compatible with the Android framework.
     33 /* oneway */ class IBluetoothGattClientCallback : public android::IInterface {
     34  public:
     35   DECLARE_META_INTERFACE(BluetoothGattClientCallback);
     36 
     37   static const char kServiceName[];
     38 
     39   // Transaction codes for interface methods.
     40   enum {
     41     ON_CLIENT_REGISTERED_TRANSACTION = android::IBinder::FIRST_CALL_TRANSACTION,
     42     ON_GET_SERVICE_TRANSACTION,
     43     ON_GET_INCLUDED_SERVICE_TRANSACTION,
     44     ON_GET_CHARACTERISTIC_TRANSACTION,
     45     ON_GET_DESCRIPTOR_TRANSACTION,
     46     ON_SEARCH_COMPLETE_TRANSACTION,
     47     ON_CHARACTERISTIC_READ_TRANSACTION,
     48     ON_CHARACTERISTIC_WRITE_TRANSACTION,
     49     ON_EXECUTE_WRITE_TRANSACTION,
     50     ON_DESCRIPTOR_READ_TRANSACTION,
     51     ON_DESCRIPTOR_WRITE_TRANSACTION,
     52     ON_NOTIFY_TRANSACTION,
     53   };
     54 
     55   virtual void OnClientRegistered(int status, int client_id) = 0;
     56 
     57   // TODO(armansito): Complete interface definition.
     58 
     59  private:
     60   DISALLOW_COPY_AND_ASSIGN(IBluetoothGattClientCallback);
     61 };
     62 
     63 // The Binder server interface to IBluetoothGattClientCallback. A class that
     64 // implements IBluetoothGattClientCallback must inherit from this class.
     65 class BnBluetoothGattClientCallback
     66     : public android::BnInterface<IBluetoothGattClientCallback> {
     67  public:
     68   BnBluetoothGattClientCallback() = default;
     69   virtual ~BnBluetoothGattClientCallback() = default;
     70 
     71  private:
     72   virtual android::status_t onTransact(
     73       uint32_t code,
     74       const android::Parcel& data,
     75       android::Parcel* reply,
     76       uint32_t flags = 0);
     77 
     78   DISALLOW_COPY_AND_ASSIGN(BnBluetoothGattClientCallback);
     79 };
     80 
     81 // The Binder client interface to IBluetoothGattClientCallback.
     82 class BpBluetoothGattClientCallback
     83     : public android::BpInterface<IBluetoothGattClientCallback> {
     84  public:
     85   explicit BpBluetoothGattClientCallback(
     86       const android::sp<android::IBinder>& impl);
     87   virtual ~BpBluetoothGattClientCallback() = default;
     88 
     89   // IBluetoothGattClientCallback overrides:
     90   void OnClientRegistered(int status, int server_if) override;
     91 
     92  private:
     93   DISALLOW_COPY_AND_ASSIGN(BpBluetoothGattClientCallback);
     94 };
     95 
     96 }  // namespace binder
     97 }  // namespace ipc
     98