content: /*
   * Copyright (C) 2018 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.telephony;
  
  import android.annotation.IntDef;
  import android.annotation.SystemApi;
  import android.annotation.TestApi;
  import android.os.Parcel;
  import android.os.Parcelable;
  
  import java.lang.annotation.Retention;
  import java.lang.annotation.RetentionPolicy;
  import java.util.Objects;
  
  /**
   * Class stores information related to LTE network VoPS support
   * @hide
   */
  @SystemApi
  @TestApi
  public final class LteVopsSupportInfo implements Parcelable {
  
      /**@hide*/
      @Retention(RetentionPolicy.SOURCE)
      @IntDef(
              value = {LTE_STATUS_NOT_AVAILABLE, LTE_STATUS_SUPPORTED,
                      LTE_STATUS_NOT_SUPPORTED}, prefix = "LTE_STATUS_")
      public @interface LteVopsStatus {}
      /**
       * Indicates information not available from modem.
       */
      public static final int LTE_STATUS_NOT_AVAILABLE = 1;
  
      /**
       * Indicates network support the feature.
       */
      public static final int LTE_STATUS_SUPPORTED = 2;
  
      /**
       * Indicates network does not support the feature.
       */
      public static final int LTE_STATUS_NOT_SUPPORTED = 3;
  
      @LteVopsStatus
      private final int mVopsSupport;
      @LteVopsStatus
      private final int mEmcBearerSupport;
  
      public LteVopsSupportInfo(@LteVopsStatus int vops, @LteVopsStatus int emergency) {
          mVopsSupport = vops;
          mEmcBearerSupport = emergency;
      }
  
      /**
       * Provides the LTE VoPS support capability as described in:
       * 3GPP 24.301 EPS network feature support -> IMS VoPS
       */
      public @LteVopsStatus int getVopsSupport() {
          return mVopsSupport;
      }
  
      /**
       * Provides the LTE Emergency bearer support capability as described in:
       *    3GPP 24.301 EPS network feature support -> EMC BS
       *    25.331 LTE RRC SIB1 : ims-EmergencySupport-r9
       */
      public @LteVopsStatus int getEmcBearerSupport() {
          return mEmcBearerSupport;
      }
  
      @Override
      public int describeContents() {
          return 0;
      }
  
      @Override
      public void writeToParcel(Parcel out, int flags) {
          out.writeInt(mVopsSupport);
          out.writeInt(mEmcBearerSupport);
      }
  
      @Override
      public boolean equals(Object o) {
          if (o == null || !(o instanceof LteVopsSupportInfo)) {
              return false;
          }
          if (this == o) return true;
          LteVopsSupportInfo other = (LteVopsSupportInfo) o;
          return mVopsSupport == other.mVopsSupport
              && mEmcBearerSupport == other.mEmcBearerSupport;
      }
  
      @Override
      public int hashCode() {
          return Objects.hash(mVopsSupport, mEmcBearerSupport);
      }
  
      /**
       * @return string representation.
       */
      @Override
      public String toString() {
          return ("LteVopsSupportInfo : "
                  + " mVopsSupport = " + mVopsSupport
                  + " mEmcBearerSupport = " + mEmcBearerSupport);
      }
  
      public static final @android.annotation.NonNull Creator<LteVopsSupportInfo> CREATOR =
              new Creator<LteVopsSupportInfo>() {
          @Override
          public LteVopsSupportInfo createFromParcel(Parcel in) {
              return new LteVopsSupportInfo(in);
          }
  
          @Override
          public LteVopsSupportInfo[] newArray(int size) {
              return new LteVopsSupportInfo[size];
          }
      };
  
      private LteVopsSupportInfo(Parcel in) {
          mVopsSupport = in.readInt();
          mEmcBearerSupport = in.readInt();
      }
  }
  