1238e0f934f1f47263b384bc745ae0678c777130dCasper Bonde/* 2238e0f934f1f47263b384bc745ae0678c777130dCasper Bonde* Copyright (C) 2015 Samsung System LSI 3238e0f934f1f47263b384bc745ae0678c777130dCasper Bonde* Licensed under the Apache License, Version 2.0 (the "License"); 4238e0f934f1f47263b384bc745ae0678c777130dCasper Bonde* you may not use this file except in compliance with the License. 5238e0f934f1f47263b384bc745ae0678c777130dCasper Bonde* You may obtain a copy of the License at 6238e0f934f1f47263b384bc745ae0678c777130dCasper Bonde* 7238e0f934f1f47263b384bc745ae0678c777130dCasper Bonde* http://www.apache.org/licenses/LICENSE-2.0 8238e0f934f1f47263b384bc745ae0678c777130dCasper Bonde* 9238e0f934f1f47263b384bc745ae0678c777130dCasper Bonde* Unless required by applicable law or agreed to in writing, software 10238e0f934f1f47263b384bc745ae0678c777130dCasper Bonde* distributed under the License is distributed on an "AS IS" BASIS, 11238e0f934f1f47263b384bc745ae0678c777130dCasper Bonde* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12238e0f934f1f47263b384bc745ae0678c777130dCasper Bonde* See the License for the specific language governing permissions and 13238e0f934f1f47263b384bc745ae0678c777130dCasper Bonde* limitations under the License. 14238e0f934f1f47263b384bc745ae0678c777130dCasper Bonde*/ 15238e0f934f1f47263b384bc745ae0678c777130dCasper Bondepackage android.bluetooth; 16238e0f934f1f47263b384bc745ae0678c777130dCasper Bonde 17238e0f934f1f47263b384bc745ae0678c777130dCasper Bondeimport java.util.Arrays; 18238e0f934f1f47263b384bc745ae0678c777130dCasper Bonde 19238e0f934f1f47263b384bc745ae0678c777130dCasper Bondeimport android.os.Parcel; 20238e0f934f1f47263b384bc745ae0678c777130dCasper Bondeimport android.os.Parcelable; 21238e0f934f1f47263b384bc745ae0678c777130dCasper Bonde 22238e0f934f1f47263b384bc745ae0678c777130dCasper Bonde/** 23238e0f934f1f47263b384bc745ae0678c777130dCasper Bonde * Data representation of a Object Push Profile Server side SDP record. 24238e0f934f1f47263b384bc745ae0678c777130dCasper Bonde */ 25238e0f934f1f47263b384bc745ae0678c777130dCasper Bonde/** @hide */ 26238e0f934f1f47263b384bc745ae0678c777130dCasper Bondepublic class SdpOppOpsRecord implements Parcelable { 27238e0f934f1f47263b384bc745ae0678c777130dCasper Bonde 28238e0f934f1f47263b384bc745ae0678c777130dCasper Bonde private final String mServiceName; 29238e0f934f1f47263b384bc745ae0678c777130dCasper Bonde private final int mRfcommChannel; 30238e0f934f1f47263b384bc745ae0678c777130dCasper Bonde private final int mL2capPsm; 31238e0f934f1f47263b384bc745ae0678c777130dCasper Bonde private final int mProfileVersion; 32238e0f934f1f47263b384bc745ae0678c777130dCasper Bonde private final byte[] mFormatsList; 33238e0f934f1f47263b384bc745ae0678c777130dCasper Bonde 34238e0f934f1f47263b384bc745ae0678c777130dCasper Bonde public SdpOppOpsRecord(String serviceName, int rfcommChannel, 35238e0f934f1f47263b384bc745ae0678c777130dCasper Bonde int l2capPsm, int version, byte[] formatsList) { 36238e0f934f1f47263b384bc745ae0678c777130dCasper Bonde super(); 37238e0f934f1f47263b384bc745ae0678c777130dCasper Bonde this.mServiceName = serviceName; 38238e0f934f1f47263b384bc745ae0678c777130dCasper Bonde this.mRfcommChannel = rfcommChannel; 39238e0f934f1f47263b384bc745ae0678c777130dCasper Bonde this.mL2capPsm = l2capPsm; 40238e0f934f1f47263b384bc745ae0678c777130dCasper Bonde this.mProfileVersion = version; 41238e0f934f1f47263b384bc745ae0678c777130dCasper Bonde this.mFormatsList = formatsList; 42238e0f934f1f47263b384bc745ae0678c777130dCasper Bonde } 43238e0f934f1f47263b384bc745ae0678c777130dCasper Bonde 44238e0f934f1f47263b384bc745ae0678c777130dCasper Bonde public String getServiceName() { 45238e0f934f1f47263b384bc745ae0678c777130dCasper Bonde return mServiceName; 46238e0f934f1f47263b384bc745ae0678c777130dCasper Bonde } 47238e0f934f1f47263b384bc745ae0678c777130dCasper Bonde 48238e0f934f1f47263b384bc745ae0678c777130dCasper Bonde public int getRfcommChannel() { 49238e0f934f1f47263b384bc745ae0678c777130dCasper Bonde return mRfcommChannel; 50238e0f934f1f47263b384bc745ae0678c777130dCasper Bonde } 51238e0f934f1f47263b384bc745ae0678c777130dCasper Bonde 52238e0f934f1f47263b384bc745ae0678c777130dCasper Bonde public int getL2capPsm() { 53238e0f934f1f47263b384bc745ae0678c777130dCasper Bonde return mL2capPsm; 54238e0f934f1f47263b384bc745ae0678c777130dCasper Bonde } 55238e0f934f1f47263b384bc745ae0678c777130dCasper Bonde 56238e0f934f1f47263b384bc745ae0678c777130dCasper Bonde public int getProfileVersion() { 57238e0f934f1f47263b384bc745ae0678c777130dCasper Bonde return mProfileVersion; 58238e0f934f1f47263b384bc745ae0678c777130dCasper Bonde } 59238e0f934f1f47263b384bc745ae0678c777130dCasper Bonde 60238e0f934f1f47263b384bc745ae0678c777130dCasper Bonde public byte[] getFormatsList() { 61238e0f934f1f47263b384bc745ae0678c777130dCasper Bonde return mFormatsList; 62238e0f934f1f47263b384bc745ae0678c777130dCasper Bonde } 63238e0f934f1f47263b384bc745ae0678c777130dCasper Bonde 64238e0f934f1f47263b384bc745ae0678c777130dCasper Bonde @Override 65238e0f934f1f47263b384bc745ae0678c777130dCasper Bonde public int describeContents() { 66238e0f934f1f47263b384bc745ae0678c777130dCasper Bonde /* No special objects */ 67238e0f934f1f47263b384bc745ae0678c777130dCasper Bonde return 0; 68238e0f934f1f47263b384bc745ae0678c777130dCasper Bonde } 69238e0f934f1f47263b384bc745ae0678c777130dCasper Bonde 70238e0f934f1f47263b384bc745ae0678c777130dCasper Bonde public SdpOppOpsRecord(Parcel in){ 71238e0f934f1f47263b384bc745ae0678c777130dCasper Bonde this.mRfcommChannel = in.readInt(); 72238e0f934f1f47263b384bc745ae0678c777130dCasper Bonde this.mL2capPsm = in.readInt(); 73238e0f934f1f47263b384bc745ae0678c777130dCasper Bonde this.mProfileVersion = in.readInt(); 74238e0f934f1f47263b384bc745ae0678c777130dCasper Bonde this.mServiceName = in.readString(); 75238e0f934f1f47263b384bc745ae0678c777130dCasper Bonde int arrayLength = in.readInt(); 76238e0f934f1f47263b384bc745ae0678c777130dCasper Bonde if(arrayLength > 0) { 77238e0f934f1f47263b384bc745ae0678c777130dCasper Bonde byte[] bytes = new byte[arrayLength]; 78238e0f934f1f47263b384bc745ae0678c777130dCasper Bonde in.readByteArray(bytes); 79238e0f934f1f47263b384bc745ae0678c777130dCasper Bonde this.mFormatsList = bytes; 80238e0f934f1f47263b384bc745ae0678c777130dCasper Bonde } else { 81238e0f934f1f47263b384bc745ae0678c777130dCasper Bonde this.mFormatsList = null; 82238e0f934f1f47263b384bc745ae0678c777130dCasper Bonde } 83238e0f934f1f47263b384bc745ae0678c777130dCasper Bonde } 84238e0f934f1f47263b384bc745ae0678c777130dCasper Bonde 85238e0f934f1f47263b384bc745ae0678c777130dCasper Bonde @Override 86238e0f934f1f47263b384bc745ae0678c777130dCasper Bonde public void writeToParcel(Parcel dest, int flags) { 87238e0f934f1f47263b384bc745ae0678c777130dCasper Bonde dest.writeInt(mRfcommChannel); 88238e0f934f1f47263b384bc745ae0678c777130dCasper Bonde dest.writeInt(mL2capPsm); 89238e0f934f1f47263b384bc745ae0678c777130dCasper Bonde dest.writeInt(mProfileVersion); 90238e0f934f1f47263b384bc745ae0678c777130dCasper Bonde dest.writeString(mServiceName); 91238e0f934f1f47263b384bc745ae0678c777130dCasper Bonde if(mFormatsList!= null && mFormatsList.length > 0) { 92238e0f934f1f47263b384bc745ae0678c777130dCasper Bonde dest.writeInt(mFormatsList.length); 93238e0f934f1f47263b384bc745ae0678c777130dCasper Bonde dest.writeByteArray(mFormatsList); 94238e0f934f1f47263b384bc745ae0678c777130dCasper Bonde } else { 95238e0f934f1f47263b384bc745ae0678c777130dCasper Bonde dest.writeInt(0); 96238e0f934f1f47263b384bc745ae0678c777130dCasper Bonde } 97238e0f934f1f47263b384bc745ae0678c777130dCasper Bonde } 98238e0f934f1f47263b384bc745ae0678c777130dCasper Bonde 99238e0f934f1f47263b384bc745ae0678c777130dCasper Bonde public String toString(){ 100238e0f934f1f47263b384bc745ae0678c777130dCasper Bonde StringBuilder sb = new StringBuilder("Bluetooth OPP Server SDP Record:\n"); 101238e0f934f1f47263b384bc745ae0678c777130dCasper Bonde sb.append(" RFCOMM Chan Number: ").append(mRfcommChannel); 102238e0f934f1f47263b384bc745ae0678c777130dCasper Bonde sb.append("\n L2CAP PSM: ").append(mL2capPsm); 103238e0f934f1f47263b384bc745ae0678c777130dCasper Bonde sb.append("\n Profile version: ").append(mProfileVersion); 104238e0f934f1f47263b384bc745ae0678c777130dCasper Bonde sb.append("\n Service Name: ").append(mServiceName); 105238e0f934f1f47263b384bc745ae0678c777130dCasper Bonde sb.append("\n Formats List: ").append(Arrays.toString(mFormatsList)); 106238e0f934f1f47263b384bc745ae0678c777130dCasper Bonde return sb.toString(); 107238e0f934f1f47263b384bc745ae0678c777130dCasper Bonde } 108238e0f934f1f47263b384bc745ae0678c777130dCasper Bonde 109238e0f934f1f47263b384bc745ae0678c777130dCasper Bonde public static final Parcelable.Creator CREATOR = new Parcelable.Creator() { 110238e0f934f1f47263b384bc745ae0678c777130dCasper Bonde public SdpOppOpsRecord createFromParcel(Parcel in) { 111238e0f934f1f47263b384bc745ae0678c777130dCasper Bonde return new SdpOppOpsRecord(in); 112238e0f934f1f47263b384bc745ae0678c777130dCasper Bonde } 113238e0f934f1f47263b384bc745ae0678c777130dCasper Bonde public SdpOppOpsRecord[] newArray(int size) { 114238e0f934f1f47263b384bc745ae0678c777130dCasper Bonde return new SdpOppOpsRecord[size]; 115238e0f934f1f47263b384bc745ae0678c777130dCasper Bonde } 116238e0f934f1f47263b384bc745ae0678c777130dCasper Bonde }; 117238e0f934f1f47263b384bc745ae0678c777130dCasper Bonde 118238e0f934f1f47263b384bc745ae0678c777130dCasper Bonde} 119