Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8949bfb9 authored by Hemant Gupta's avatar Hemant Gupta Committed by Mike Lockwood
Browse files

Bluetooth: Support MAP Client role on Bluedroid.

Implementation changes to support MAP client and PBAP client
role on Bluedroid stack.

Change-Id: I1733a67bf5256bd7b181bd5e68e40b476994ebfd
parent e19a4fe3
Loading
Loading
Loading
Loading
+22 −2
Original line number Diff line number Diff line
@@ -306,6 +306,11 @@ public final class BluetoothDevice implements Parcelable {
    public static final String ACTION_UUID =
            "android.bluetooth.device.action.UUID";

    /** @hide */
    @SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION)
    public static final String ACTION_MAS_INSTANCE =
            "android.bluetooth.device.action.MAS_INSTANCE";

    /**
     * Broadcast Action: Indicates a failure to retrieve the name of a remote
     * device.
@@ -530,6 +535,9 @@ public final class BluetoothDevice implements Parcelable {
     */
    public static final int TRANSPORT_LE = 2;

    /** @hide */
    public static final String EXTRA_MAS_INSTANCE =
        "android.bluetooth.device.extra.MAS_INSTANCE";

    /**
     * Lazy initialization. Guaranteed final after first object constructed, or
@@ -995,6 +1003,18 @@ public final class BluetoothDevice implements Parcelable {
            return false;
    }

     /** @hide */
     public boolean fetchMasInstances() {
         if (sService == null) {
             Log.e(TAG, "BT not enabled. Cannot query remote device for MAS instances");
             return false;
         }
         try {
             return sService.fetchRemoteMasInstances(this);
         } catch (RemoteException e) {Log.e(TAG, "", e);}
         return false;
     }

    /** @hide */
    public int getServiceChannel(ParcelUuid uuid) {
        //TODO(BT)
+103 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2014 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package android.bluetooth;

import android.os.Parcel;
import android.os.Parcelable;

/** @hide */
public final class BluetoothMasInstance implements Parcelable {
    private final int mId;
    private final String mName;
    private final int mChannel;
    private final int mMsgTypes;

    public BluetoothMasInstance(int id, String name, int channel, int msgTypes) {
        mId = id;
        mName = name;
        mChannel = channel;
        mMsgTypes = msgTypes;
    }

    @Override
    public boolean equals(Object o) {
        if (o instanceof BluetoothMasInstance) {
            return mId == ((BluetoothMasInstance)o).mId;
        }
        return false;
    }

    @Override
    public int hashCode() {
        return mId + (mChannel << 8) + (mMsgTypes << 16);
    }

    @Override
    public String toString() {
        return Integer.toString(mId) + ":" + mName + ":" + mChannel + ":" +
                Integer.toHexString(mMsgTypes);
    }

    public int describeContents() {
        return 0;
    }

    public static final Parcelable.Creator<BluetoothMasInstance> CREATOR =
            new Parcelable.Creator<BluetoothMasInstance>() {
        public BluetoothMasInstance createFromParcel(Parcel in) {
            return new BluetoothMasInstance(in.readInt(), in.readString(),
                    in.readInt(), in.readInt());
        }
        public BluetoothMasInstance[] newArray(int size) {
            return new BluetoothMasInstance[size];
        }
    };

    public void writeToParcel(Parcel out, int flags) {
        out.writeInt(mId);
        out.writeString(mName);
        out.writeInt(mChannel);
        out.writeInt(mMsgTypes);
    }

    public static final class MessageType {
        public static final int EMAIL    = 0x01;
        public static final int SMS_GSM  = 0x02;
        public static final int SMS_CDMA = 0x04;
        public static final int MMS      = 0x08;
    }

    public int getId() {
        return mId;
    }

    public String getName() {
        return mName;
    }

    public int getChannel() {
        return mChannel;
    }

    public int getMsgTypes() {
        return mMsgTypes;
    }

    public boolean msgSupported(int msg) {
        return (mMsgTypes & msg) != 0;
    }
}
+1 −0
Original line number Diff line number Diff line
@@ -67,6 +67,7 @@ interface IBluetooth
    int getRemoteClass(in BluetoothDevice device);
    ParcelUuid[] getRemoteUuids(in BluetoothDevice device);
    boolean fetchRemoteUuids(in BluetoothDevice device);
    boolean fetchRemoteMasInstances(in BluetoothDevice device);

    boolean setPin(in BluetoothDevice device, boolean accept, int len, in byte[] pinCode);
    boolean setPasskey(in BluetoothDevice device, boolean accept, int len, in byte[]
+10 −0
Original line number Diff line number Diff line
@@ -99,6 +99,7 @@
    <protected-broadcast android:name="android.bluetooth.adapter.action.LOCAL_NAME_CHANGED" />
    <protected-broadcast android:name="android.bluetooth.adapter.action.CONNECTION_STATE_CHANGED" />
    <protected-broadcast android:name="android.bluetooth.device.action.UUID" />
    <protected-broadcast android:name="android.bluetooth.device.action.MAS_INSTANCE" />
    <protected-broadcast android:name="android.bluetooth.device.action.ALIAS_CHANGED" />
    <protected-broadcast android:name="android.bluetooth.device.action.FOUND" />
    <protected-broadcast android:name="android.bluetooth.device.action.DISAPPEARED" />
@@ -396,6 +397,15 @@
        android:label="@string/permlab_receiveWapPush"
        android:description="@string/permdesc_receiveWapPush" />

    <!-- Allows an application to monitor incoming Bluetooth MAP messages, to record
         or perform processing on them. -->
    <!-- @hide -->
    <permission android:name="android.permission.RECEIVE_BLUETOOTH_MAP"
        android:permissionGroup="android.permission-group.MESSAGES"
        android:protectionLevel="dangerous"
        android:label="@string/permlab_receiveBluetoothMap"
        android:description="@string/permdesc_receiveBluetoothMap" />

    <!-- =============================================================== -->
    <!-- Permissions for accessing social info (contacts and social) -->
    <!-- =============================================================== -->
+7 −0
Original line number Diff line number Diff line
@@ -760,6 +760,13 @@
     WAP messages.  This permission includes the ability to monitor or delete
     messages sent to you without showing them to you.</string>

    <!-- Title of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
    <string name="permlab_receiveBluetoothMap">receive Bluetooth messages (MAP)</string>
    <!-- Description of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
    <string name="permdesc_receiveBluetoothMap">Allows the app to receive and process Bluetooth MAP
      messages. This means the app could monitor or delete messages sent to your
      device without showing them to you.</string>

    <!-- Title of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
    <string name="permlab_getTasks">retrieve running apps</string>
    <!-- Description of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
Loading