12263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood/*
22263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood * Copyright (C) 2009 The Android Open Source Project
32263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood *
42263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood * Licensed under the Apache License, Version 2.0 (the "License");
52263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood * you may not use this file except in compliance with the License.
62263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood * You may obtain a copy of the License at
72263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood *
82263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood *      http://www.apache.org/licenses/LICENSE-2.0
92263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood *
102263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood * Unless required by applicable law or agreed to in writing, software
112263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood * distributed under the License is distributed on an "AS IS" BASIS,
122263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
132263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood * See the License for the specific language governing permissions and
142263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood * limitations under the License.
152263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood */
162263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood
172263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwoodpackage android.bluetooth;
182263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood
192263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwoodimport android.os.Parcel;
202263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwoodimport android.os.Parcelable;
212263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood
222263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood/**
232263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood * Represents the audio configuration for a Bluetooth A2DP source device.
242263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood *
252263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood * {@see BluetoothA2dpSink}
262263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood *
272263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood * {@hide}
282263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood */
292263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwoodpublic final class BluetoothAudioConfig implements Parcelable {
302263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood
312263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood    private final int mSampleRate;
322263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood    private final int mChannelConfig;
332263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood    private final int mAudioFormat;
342263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood
352263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood    public BluetoothAudioConfig(int sampleRate, int channelConfig, int audioFormat) {
362263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood        mSampleRate = sampleRate;
372263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood        mChannelConfig = channelConfig;
382263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood        mAudioFormat = audioFormat;
392263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood    }
402263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood
412263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood    @Override
422263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood    public boolean equals(Object o) {
432263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood        if (o instanceof BluetoothAudioConfig) {
442263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood            BluetoothAudioConfig bac = (BluetoothAudioConfig)o;
452263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood            return (bac.mSampleRate == mSampleRate &&
462263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood                    bac.mChannelConfig == mChannelConfig &&
472263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood                    bac.mAudioFormat == mAudioFormat);
482263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood        }
492263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood        return false;
502263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood    }
512263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood
522263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood    @Override
532263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood    public int hashCode() {
542263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood        return mSampleRate | (mChannelConfig << 24) | (mAudioFormat << 28);
552263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood    }
562263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood
572263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood    @Override
582263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood    public String toString() {
592263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood        return "{mSampleRate:" + mSampleRate + ",mChannelConfig:" + mChannelConfig
602263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood                + ",mAudioFormat:" + mAudioFormat + "}";
612263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood    }
622263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood
632263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood    public int describeContents() {
642263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood        return 0;
652263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood    }
662263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood
672263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood    public static final Parcelable.Creator<BluetoothAudioConfig> CREATOR =
682263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood            new Parcelable.Creator<BluetoothAudioConfig>() {
692263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood        public BluetoothAudioConfig createFromParcel(Parcel in) {
702263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood            int sampleRate = in.readInt();
712263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood            int channelConfig = in.readInt();
722263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood            int audioFormat = in.readInt();
732263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood            return new BluetoothAudioConfig(sampleRate, channelConfig, audioFormat);
742263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood        }
752263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood        public BluetoothAudioConfig[] newArray(int size) {
762263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood            return new BluetoothAudioConfig[size];
772263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood        }
782263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood    };
792263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood
802263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood    public void writeToParcel(Parcel out, int flags) {
812263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood        out.writeInt(mSampleRate);
822263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood        out.writeInt(mChannelConfig);
832263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood        out.writeInt(mAudioFormat);
842263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood    }
852263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood
862263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood    /**
872263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood     * Returns the sample rate in samples per second
882263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood     * @return sample rate
892263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood     */
902263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood    public int getSampleRate() {
912263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood        return mSampleRate;
922263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood    }
932263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood
942263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood    /**
952263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood     * Returns the channel configuration (either {@link android.media.AudioFormat#CHANNEL_IN_MONO}
962263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood     * or {@link android.media.AudioFormat#CHANNEL_IN_STEREO})
972263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood     * @return channel configuration
982263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood     */
992263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood    public int getChannelConfig() {
1002263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood        return mChannelConfig;
1012263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood    }
1022263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood
1032263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood    /**
1042263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood     * Returns the channel audio format (either {@link android.media.AudioFormat#ENCODING_PCM_16BIT}
1052263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood     * or {@link android.media.AudioFormat#ENCODING_PCM_8BIT}
1062263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood     * @return audio format
1072263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood     */
1082263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood    public int getAudioFormat() {
1092263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood        return mAudioFormat;
1102263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood    }
1112263dd1ddd1a8ac828c25d34000c85165cad21efMike Lockwood}
112