11af4b0280af406cfc7eb46810f6b76e57b983e11destradaa/*
21af4b0280af406cfc7eb46810f6b76e57b983e11destradaa * Copyright (C) 2013 The Android Open Source Project
31af4b0280af406cfc7eb46810f6b76e57b983e11destradaa *
41af4b0280af406cfc7eb46810f6b76e57b983e11destradaa * Licensed under the Apache License, Version 2.0 (the "License");
51af4b0280af406cfc7eb46810f6b76e57b983e11destradaa * you may not use this file except in compliance with the License.
61af4b0280af406cfc7eb46810f6b76e57b983e11destradaa * You may obtain a copy of the License at
71af4b0280af406cfc7eb46810f6b76e57b983e11destradaa *
81af4b0280af406cfc7eb46810f6b76e57b983e11destradaa *     http://www.apache.org/licenses/LICENSE-2.0
91af4b0280af406cfc7eb46810f6b76e57b983e11destradaa *
101af4b0280af406cfc7eb46810f6b76e57b983e11destradaa * Unless required by applicable law or agreed to in writing, software
111af4b0280af406cfc7eb46810f6b76e57b983e11destradaa * distributed under the License is distributed on an "AS IS" BASIS,
121af4b0280af406cfc7eb46810f6b76e57b983e11destradaa * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
131af4b0280af406cfc7eb46810f6b76e57b983e11destradaa * See the License for the specific language governing permissions and
141af4b0280af406cfc7eb46810f6b76e57b983e11destradaa * limitations under the License.
151af4b0280af406cfc7eb46810f6b76e57b983e11destradaa */
161af4b0280af406cfc7eb46810f6b76e57b983e11destradaa
171af4b0280af406cfc7eb46810f6b76e57b983e11destradaapackage android.location;
181af4b0280af406cfc7eb46810f6b76e57b983e11destradaa
191af4b0280af406cfc7eb46810f6b76e57b983e11destradaaimport android.os.Parcel;
201af4b0280af406cfc7eb46810f6b76e57b983e11destradaaimport android.os.Parcelable;
211af4b0280af406cfc7eb46810f6b76e57b983e11destradaa
221af4b0280af406cfc7eb46810f6b76e57b983e11destradaa/**
231af4b0280af406cfc7eb46810f6b76e57b983e11destradaa * A data class representing a set of options to configure batching sessions.
241af4b0280af406cfc7eb46810f6b76e57b983e11destradaa * @hide
251af4b0280af406cfc7eb46810f6b76e57b983e11destradaa */
261af4b0280af406cfc7eb46810f6b76e57b983e11destradaapublic class FusedBatchOptions implements Parcelable {
271af4b0280af406cfc7eb46810f6b76e57b983e11destradaa    private volatile long mPeriodInNS = 0;
281af4b0280af406cfc7eb46810f6b76e57b983e11destradaa    private volatile int mSourcesToUse = 0;
291af4b0280af406cfc7eb46810f6b76e57b983e11destradaa    private volatile int mFlags = 0;
301af4b0280af406cfc7eb46810f6b76e57b983e11destradaa
311af4b0280af406cfc7eb46810f6b76e57b983e11destradaa    // the default value is set to request fixes at no cost
321af4b0280af406cfc7eb46810f6b76e57b983e11destradaa    private volatile double mMaxPowerAllocationInMW = 0;
331af4b0280af406cfc7eb46810f6b76e57b983e11destradaa
341af4b0280af406cfc7eb46810f6b76e57b983e11destradaa    /*
351af4b0280af406cfc7eb46810f6b76e57b983e11destradaa     * Getters and setters for properties needed to hold the options.
361af4b0280af406cfc7eb46810f6b76e57b983e11destradaa     */
371af4b0280af406cfc7eb46810f6b76e57b983e11destradaa    public void setMaxPowerAllocationInMW(double value) {
381af4b0280af406cfc7eb46810f6b76e57b983e11destradaa        mMaxPowerAllocationInMW = value;
391af4b0280af406cfc7eb46810f6b76e57b983e11destradaa    }
401af4b0280af406cfc7eb46810f6b76e57b983e11destradaa
411af4b0280af406cfc7eb46810f6b76e57b983e11destradaa    public double getMaxPowerAllocationInMW() {
421af4b0280af406cfc7eb46810f6b76e57b983e11destradaa        return mMaxPowerAllocationInMW;
431af4b0280af406cfc7eb46810f6b76e57b983e11destradaa    }
441af4b0280af406cfc7eb46810f6b76e57b983e11destradaa
451af4b0280af406cfc7eb46810f6b76e57b983e11destradaa    public void setPeriodInNS(long value) {
461af4b0280af406cfc7eb46810f6b76e57b983e11destradaa        mPeriodInNS = value;
471af4b0280af406cfc7eb46810f6b76e57b983e11destradaa    }
481af4b0280af406cfc7eb46810f6b76e57b983e11destradaa
491af4b0280af406cfc7eb46810f6b76e57b983e11destradaa    public long getPeriodInNS() {
501af4b0280af406cfc7eb46810f6b76e57b983e11destradaa        return mPeriodInNS;
511af4b0280af406cfc7eb46810f6b76e57b983e11destradaa    }
521af4b0280af406cfc7eb46810f6b76e57b983e11destradaa
531af4b0280af406cfc7eb46810f6b76e57b983e11destradaa    public void setSourceToUse(int source) {
541af4b0280af406cfc7eb46810f6b76e57b983e11destradaa        mSourcesToUse |= source;
551af4b0280af406cfc7eb46810f6b76e57b983e11destradaa    }
561af4b0280af406cfc7eb46810f6b76e57b983e11destradaa
571af4b0280af406cfc7eb46810f6b76e57b983e11destradaa    public void resetSourceToUse(int source) {
581af4b0280af406cfc7eb46810f6b76e57b983e11destradaa        mSourcesToUse &= ~source;
591af4b0280af406cfc7eb46810f6b76e57b983e11destradaa    }
601af4b0280af406cfc7eb46810f6b76e57b983e11destradaa
611af4b0280af406cfc7eb46810f6b76e57b983e11destradaa    public boolean isSourceToUseSet(int source) {
621af4b0280af406cfc7eb46810f6b76e57b983e11destradaa        return (mSourcesToUse & source) != 0;
631af4b0280af406cfc7eb46810f6b76e57b983e11destradaa    }
641af4b0280af406cfc7eb46810f6b76e57b983e11destradaa
651af4b0280af406cfc7eb46810f6b76e57b983e11destradaa    public int getSourcesToUse() {
661af4b0280af406cfc7eb46810f6b76e57b983e11destradaa        return mSourcesToUse;
671af4b0280af406cfc7eb46810f6b76e57b983e11destradaa    }
681af4b0280af406cfc7eb46810f6b76e57b983e11destradaa
691af4b0280af406cfc7eb46810f6b76e57b983e11destradaa    public void setFlag(int flag) {
701af4b0280af406cfc7eb46810f6b76e57b983e11destradaa        mFlags |= flag;
711af4b0280af406cfc7eb46810f6b76e57b983e11destradaa    }
721af4b0280af406cfc7eb46810f6b76e57b983e11destradaa
731af4b0280af406cfc7eb46810f6b76e57b983e11destradaa    public void resetFlag(int flag) {
741af4b0280af406cfc7eb46810f6b76e57b983e11destradaa        mFlags &= ~flag;
751af4b0280af406cfc7eb46810f6b76e57b983e11destradaa    }
761af4b0280af406cfc7eb46810f6b76e57b983e11destradaa
771af4b0280af406cfc7eb46810f6b76e57b983e11destradaa    public boolean isFlagSet(int flag) {
781af4b0280af406cfc7eb46810f6b76e57b983e11destradaa        return (mFlags & flag) != 0;
791af4b0280af406cfc7eb46810f6b76e57b983e11destradaa    }
801af4b0280af406cfc7eb46810f6b76e57b983e11destradaa
811af4b0280af406cfc7eb46810f6b76e57b983e11destradaa    public int getFlags() {
821af4b0280af406cfc7eb46810f6b76e57b983e11destradaa        return mFlags;
831af4b0280af406cfc7eb46810f6b76e57b983e11destradaa    }
841af4b0280af406cfc7eb46810f6b76e57b983e11destradaa
851af4b0280af406cfc7eb46810f6b76e57b983e11destradaa    /**
861af4b0280af406cfc7eb46810f6b76e57b983e11destradaa     * Definition of enum flag sets needed by this class.
871af4b0280af406cfc7eb46810f6b76e57b983e11destradaa     * Such values need to be kept in sync with the ones in fused_location.h
881af4b0280af406cfc7eb46810f6b76e57b983e11destradaa     */
891af4b0280af406cfc7eb46810f6b76e57b983e11destradaa    public static final class SourceTechnologies {
901af4b0280af406cfc7eb46810f6b76e57b983e11destradaa        public static int GNSS = 1<<0;
911af4b0280af406cfc7eb46810f6b76e57b983e11destradaa        public static int WIFI = 1<<1;
921af4b0280af406cfc7eb46810f6b76e57b983e11destradaa        public static int SENSORS = 1<<2;
931af4b0280af406cfc7eb46810f6b76e57b983e11destradaa        public static int CELL = 1<<3;
941af4b0280af406cfc7eb46810f6b76e57b983e11destradaa        public static int BLUETOOTH = 1<<4;
951af4b0280af406cfc7eb46810f6b76e57b983e11destradaa    }
961af4b0280af406cfc7eb46810f6b76e57b983e11destradaa
971af4b0280af406cfc7eb46810f6b76e57b983e11destradaa    public static final class BatchFlags {
98cc972725af35284c0b571aaa0dc6873e69b15119destradaa        // follow the definitions to the letter in fused_location.h
99cc972725af35284c0b571aaa0dc6873e69b15119destradaa        public static int WAKEUP_ON_FIFO_FULL = 0x0000001;
100cc972725af35284c0b571aaa0dc6873e69b15119destradaa        public static int CALLBACK_ON_LOCATION_FIX =0x0000002;
1011af4b0280af406cfc7eb46810f6b76e57b983e11destradaa    }
1021af4b0280af406cfc7eb46810f6b76e57b983e11destradaa
1031af4b0280af406cfc7eb46810f6b76e57b983e11destradaa    /*
1041af4b0280af406cfc7eb46810f6b76e57b983e11destradaa     * Method definitions to support Parcelable operations.
1051af4b0280af406cfc7eb46810f6b76e57b983e11destradaa     */
1061af4b0280af406cfc7eb46810f6b76e57b983e11destradaa    public static final Parcelable.Creator<FusedBatchOptions> CREATOR =
1071af4b0280af406cfc7eb46810f6b76e57b983e11destradaa            new Parcelable.Creator<FusedBatchOptions>() {
1081af4b0280af406cfc7eb46810f6b76e57b983e11destradaa        @Override
1091af4b0280af406cfc7eb46810f6b76e57b983e11destradaa        public FusedBatchOptions createFromParcel(Parcel parcel) {
1101af4b0280af406cfc7eb46810f6b76e57b983e11destradaa            FusedBatchOptions options = new FusedBatchOptions();
1111af4b0280af406cfc7eb46810f6b76e57b983e11destradaa            options.setMaxPowerAllocationInMW(parcel.readDouble());
1121af4b0280af406cfc7eb46810f6b76e57b983e11destradaa            options.setPeriodInNS(parcel.readLong());
1131af4b0280af406cfc7eb46810f6b76e57b983e11destradaa            options.setSourceToUse(parcel.readInt());
1141af4b0280af406cfc7eb46810f6b76e57b983e11destradaa            options.setFlag(parcel.readInt());
1151af4b0280af406cfc7eb46810f6b76e57b983e11destradaa            return options;
1161af4b0280af406cfc7eb46810f6b76e57b983e11destradaa        }
1171af4b0280af406cfc7eb46810f6b76e57b983e11destradaa
1181af4b0280af406cfc7eb46810f6b76e57b983e11destradaa        @Override
1191af4b0280af406cfc7eb46810f6b76e57b983e11destradaa        public FusedBatchOptions[] newArray(int size) {
1201af4b0280af406cfc7eb46810f6b76e57b983e11destradaa            return new FusedBatchOptions[size];
1211af4b0280af406cfc7eb46810f6b76e57b983e11destradaa        }
1221af4b0280af406cfc7eb46810f6b76e57b983e11destradaa    };
1231af4b0280af406cfc7eb46810f6b76e57b983e11destradaa
1241af4b0280af406cfc7eb46810f6b76e57b983e11destradaa    @Override
1251af4b0280af406cfc7eb46810f6b76e57b983e11destradaa    public int describeContents() {
1261af4b0280af406cfc7eb46810f6b76e57b983e11destradaa        return 0;
1271af4b0280af406cfc7eb46810f6b76e57b983e11destradaa    }
1281af4b0280af406cfc7eb46810f6b76e57b983e11destradaa
1291af4b0280af406cfc7eb46810f6b76e57b983e11destradaa    @Override
1301af4b0280af406cfc7eb46810f6b76e57b983e11destradaa    public void writeToParcel(Parcel parcel, int flags) {
1311af4b0280af406cfc7eb46810f6b76e57b983e11destradaa        parcel.writeDouble(mMaxPowerAllocationInMW);
1321af4b0280af406cfc7eb46810f6b76e57b983e11destradaa        parcel.writeLong(mPeriodInNS);
1331af4b0280af406cfc7eb46810f6b76e57b983e11destradaa        parcel.writeInt(mSourcesToUse);
1341af4b0280af406cfc7eb46810f6b76e57b983e11destradaa        parcel.writeInt(mFlags);
1351af4b0280af406cfc7eb46810f6b76e57b983e11destradaa    }
1361af4b0280af406cfc7eb46810f6b76e57b983e11destradaa}
137