content: /*
   * Copyright (C) 2013 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.hardware.location;
  
  import android.os.Parcel;
  import android.os.Parcelable;
  import android.util.Log;
  
  /**
   * Geofence Hardware Request used for internal location services communication.
   *
   * @hide
   */
  public final class GeofenceHardwareRequestParcelable implements Parcelable {
      private GeofenceHardwareRequest mRequest;
      private int mId;
  
      public GeofenceHardwareRequestParcelable(int id, GeofenceHardwareRequest request) {
          mId = id;
          mRequest = request;
      }
  
      /**
       * Returns the id of this request.
       */
      public int getId() {
          return mId;
      }
  
      /**
       * Returns the latitude of this geofence.
       */
      public double getLatitude() {
          return mRequest.getLatitude();
      }
  
      /**
       * Returns the longitude of this geofence.
       */
      public double getLongitude() {
          return mRequest.getLongitude();
      }
  
      /**
       * Returns the radius of this geofence.
       */
      public double getRadius() {
          return mRequest.getRadius();
      }
  
      /**
       * Returns transitions monitored for this geofence.
       */
      public int getMonitorTransitions() {
          return mRequest.getMonitorTransitions();
      }
  
      /**
       * Returns the unknownTimer of this geofence.
       */
      public int getUnknownTimer() {
          return mRequest.getUnknownTimer();
      }
  
      /**
       * Returns the notification responsiveness of this geofence.
       */
      public int getNotificationResponsiveness() {
          return mRequest.getNotificationResponsiveness();
      }
  
      /**
       * Returns the last transition of this geofence.
       */
      public int getLastTransition() {
          return mRequest.getLastTransition();
      }
  
      /**
       * Returns the type of the geofence for the current request.
       */
      int getType() {
          return mRequest.getType();
      }
  
      /**
       * Returns the source technologies to track this geofence.
       */
      int getSourceTechnologies() {
          return mRequest.getSourceTechnologies();
      }
  
  
      @Override
      public String toString() {
          StringBuilder builder = new StringBuilder();
          builder.append("id=");
          builder.append(mId);
          builder.append(", type=");
          builder.append(mRequest.getType());
          builder.append(", latitude=");
          builder.append(mRequest.getLatitude());
          builder.append(", longitude=");
          builder.append(mRequest.getLongitude());
          builder.append(", radius=");
          builder.append(mRequest.getRadius());
          builder.append(", lastTransition=");
          builder.append(mRequest.getLastTransition());
          builder.append(", unknownTimer=");
          builder.append(mRequest.getUnknownTimer());
          builder.append(", monitorTransitions=");
          builder.append(mRequest.getMonitorTransitions());
          builder.append(", notificationResponsiveness=");
          builder.append(mRequest.getNotificationResponsiveness());
          builder.append(", sourceTechnologies=");
          builder.append(mRequest.getSourceTechnologies());
          return builder.toString();
      }
  
      /**
       * Method definitions to support Parcelable operations.
       */
      public static final @android.annotation.NonNull Parcelable.Creator<GeofenceHardwareRequestParcelable> CREATOR =
              new Parcelable.Creator<GeofenceHardwareRequestParcelable>() {
          @Override
          public GeofenceHardwareRequestParcelable createFromParcel(Parcel parcel) {
              int geofenceType = parcel.readInt();
              if(geofenceType != GeofenceHardwareRequest.GEOFENCE_TYPE_CIRCLE) {
                  Log.e(
                          "GeofenceHardwareRequest",
                          String.format("Invalid Geofence type: %d", geofenceType));
                  return null;
              }
  
              GeofenceHardwareRequest request = GeofenceHardwareRequest.createCircularGeofence(
                      parcel.readDouble(),
                      parcel.readDouble(),
                      parcel.readDouble());
              request.setLastTransition(parcel.readInt());
              request.setMonitorTransitions(parcel.readInt());
              request.setUnknownTimer(parcel.readInt());
              request.setNotificationResponsiveness(parcel.readInt());
              request.setSourceTechnologies(parcel.readInt());
  
              int id = parcel.readInt();
              return new GeofenceHardwareRequestParcelable(id, request);
          }
  
          @Override
          public GeofenceHardwareRequestParcelable[] newArray(int size) {
              return new GeofenceHardwareRequestParcelable[size];
          }
      };
  
      @Override
      public int describeContents() {
          return 0;
      }
  
      @Override
      public void writeToParcel(Parcel parcel, int flags) {
          parcel.writeInt(getType());
          parcel.writeDouble(getLatitude());
          parcel.writeDouble(getLongitude());
          parcel.writeDouble(getRadius());
          parcel.writeInt(getLastTransition());
          parcel.writeInt(getMonitorTransitions());
          parcel.writeInt(getUnknownTimer());
          parcel.writeInt(getNotificationResponsiveness());
          parcel.writeInt(getSourceTechnologies());
          parcel.writeInt(getId());
      }
  }
  