166ef64514464a1bb9c7931993cc8db3d7539f39aRuben Brunk/*
266ef64514464a1bb9c7931993cc8db3d7539f39aRuben Brunk * Copyright (C) 2013 The Android Open Source Project
366ef64514464a1bb9c7931993cc8db3d7539f39aRuben Brunk *
466ef64514464a1bb9c7931993cc8db3d7539f39aRuben Brunk * Licensed under the Apache License, Version 2.0 (the "License");
566ef64514464a1bb9c7931993cc8db3d7539f39aRuben Brunk * you may not use this file except in compliance with the License.
666ef64514464a1bb9c7931993cc8db3d7539f39aRuben Brunk * You may obtain a copy of the License at
766ef64514464a1bb9c7931993cc8db3d7539f39aRuben Brunk *
866ef64514464a1bb9c7931993cc8db3d7539f39aRuben Brunk *      http://www.apache.org/licenses/LICENSE-2.0
966ef64514464a1bb9c7931993cc8db3d7539f39aRuben Brunk *
1066ef64514464a1bb9c7931993cc8db3d7539f39aRuben Brunk * Unless required by applicable law or agreed to in writing, software
1166ef64514464a1bb9c7931993cc8db3d7539f39aRuben Brunk * distributed under the License is distributed on an "AS IS" BASIS,
1266ef64514464a1bb9c7931993cc8db3d7539f39aRuben Brunk * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1366ef64514464a1bb9c7931993cc8db3d7539f39aRuben Brunk * See the License for the specific language governing permissions and
1466ef64514464a1bb9c7931993cc8db3d7539f39aRuben Brunk * limitations under the License.
1566ef64514464a1bb9c7931993cc8db3d7539f39aRuben Brunk */
1666ef64514464a1bb9c7931993cc8db3d7539f39aRuben Brunk
1766ef64514464a1bb9c7931993cc8db3d7539f39aRuben Brunkpackage android.hardware.camera2.utils;
1866ef64514464a1bb9c7931993cc8db3d7539f39aRuben Brunk
1966ef64514464a1bb9c7931993cc8db3d7539f39aRuben Brunkimport android.os.Parcel;
2066ef64514464a1bb9c7931993cc8db3d7539f39aRuben Brunkimport android.os.Parcelable;
2166ef64514464a1bb9c7931993cc8db3d7539f39aRuben Brunkimport android.os.IBinder;
2266ef64514464a1bb9c7931993cc8db3d7539f39aRuben Brunk
2366ef64514464a1bb9c7931993cc8db3d7539f39aRuben Brunk/**
2466ef64514464a1bb9c7931993cc8db3d7539f39aRuben Brunk * @hide
2566ef64514464a1bb9c7931993cc8db3d7539f39aRuben Brunk */
2666ef64514464a1bb9c7931993cc8db3d7539f39aRuben Brunkpublic class BinderHolder implements Parcelable {
2766ef64514464a1bb9c7931993cc8db3d7539f39aRuben Brunk    private IBinder mBinder = null;
2866ef64514464a1bb9c7931993cc8db3d7539f39aRuben Brunk
2966ef64514464a1bb9c7931993cc8db3d7539f39aRuben Brunk    @Override
3066ef64514464a1bb9c7931993cc8db3d7539f39aRuben Brunk    public int describeContents() {
3166ef64514464a1bb9c7931993cc8db3d7539f39aRuben Brunk        return 0;
3266ef64514464a1bb9c7931993cc8db3d7539f39aRuben Brunk    }
3366ef64514464a1bb9c7931993cc8db3d7539f39aRuben Brunk
3466ef64514464a1bb9c7931993cc8db3d7539f39aRuben Brunk    @Override
3566ef64514464a1bb9c7931993cc8db3d7539f39aRuben Brunk    public void writeToParcel(Parcel dest, int flags) {
3666ef64514464a1bb9c7931993cc8db3d7539f39aRuben Brunk        dest.writeStrongBinder(mBinder);
3766ef64514464a1bb9c7931993cc8db3d7539f39aRuben Brunk    }
3866ef64514464a1bb9c7931993cc8db3d7539f39aRuben Brunk
3966ef64514464a1bb9c7931993cc8db3d7539f39aRuben Brunk    public void readFromParcel(Parcel src) {
4066ef64514464a1bb9c7931993cc8db3d7539f39aRuben Brunk        mBinder = src.readStrongBinder();
4166ef64514464a1bb9c7931993cc8db3d7539f39aRuben Brunk    }
4266ef64514464a1bb9c7931993cc8db3d7539f39aRuben Brunk
4366ef64514464a1bb9c7931993cc8db3d7539f39aRuben Brunk    public static final Parcelable.Creator<BinderHolder> CREATOR =
4466ef64514464a1bb9c7931993cc8db3d7539f39aRuben Brunk             new Parcelable.Creator<BinderHolder>() {
4566ef64514464a1bb9c7931993cc8db3d7539f39aRuben Brunk         @Override
4666ef64514464a1bb9c7931993cc8db3d7539f39aRuben Brunk         public BinderHolder createFromParcel(Parcel in) {
4766ef64514464a1bb9c7931993cc8db3d7539f39aRuben Brunk             return new BinderHolder(in);
4866ef64514464a1bb9c7931993cc8db3d7539f39aRuben Brunk         }
4966ef64514464a1bb9c7931993cc8db3d7539f39aRuben Brunk
5066ef64514464a1bb9c7931993cc8db3d7539f39aRuben Brunk         @Override
5166ef64514464a1bb9c7931993cc8db3d7539f39aRuben Brunk         public BinderHolder[] newArray(int size) {
5266ef64514464a1bb9c7931993cc8db3d7539f39aRuben Brunk             return new BinderHolder[size];
5366ef64514464a1bb9c7931993cc8db3d7539f39aRuben Brunk         }
5466ef64514464a1bb9c7931993cc8db3d7539f39aRuben Brunk    };
5566ef64514464a1bb9c7931993cc8db3d7539f39aRuben Brunk
5666ef64514464a1bb9c7931993cc8db3d7539f39aRuben Brunk    public IBinder getBinder() {
5766ef64514464a1bb9c7931993cc8db3d7539f39aRuben Brunk        return mBinder;
5866ef64514464a1bb9c7931993cc8db3d7539f39aRuben Brunk    }
5966ef64514464a1bb9c7931993cc8db3d7539f39aRuben Brunk
6066ef64514464a1bb9c7931993cc8db3d7539f39aRuben Brunk    public void setBinder(IBinder binder) {
6166ef64514464a1bb9c7931993cc8db3d7539f39aRuben Brunk        mBinder = binder;
6266ef64514464a1bb9c7931993cc8db3d7539f39aRuben Brunk    }
6366ef64514464a1bb9c7931993cc8db3d7539f39aRuben Brunk
6466ef64514464a1bb9c7931993cc8db3d7539f39aRuben Brunk    public BinderHolder() {}
6566ef64514464a1bb9c7931993cc8db3d7539f39aRuben Brunk
6666ef64514464a1bb9c7931993cc8db3d7539f39aRuben Brunk    public BinderHolder(IBinder binder) {
6766ef64514464a1bb9c7931993cc8db3d7539f39aRuben Brunk        mBinder = binder;
6866ef64514464a1bb9c7931993cc8db3d7539f39aRuben Brunk    }
6966ef64514464a1bb9c7931993cc8db3d7539f39aRuben Brunk
7066ef64514464a1bb9c7931993cc8db3d7539f39aRuben Brunk    private BinderHolder(Parcel in) {
7166ef64514464a1bb9c7931993cc8db3d7539f39aRuben Brunk        mBinder = in.readStrongBinder();
7266ef64514464a1bb9c7931993cc8db3d7539f39aRuben Brunk    }
7366ef64514464a1bb9c7931993cc8db3d7539f39aRuben Brunk}
7466ef64514464a1bb9c7931993cc8db3d7539f39aRuben Brunk
75