/*
 * Copyright (C) 2017 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.
 */

syntax = "proto2";

import "frameworks/base/core/proto/android/app/pendingintent.proto";
import "frameworks/base/core/proto/android/privacy.proto";

option java_multiple_files = true;

package android.app;

/**
 * An android.app.AlarmManager object.
 */
message AlarmManagerProto {
    enum AlarmType {
        // Alarm time in System.currentTimeMillis() (wall clock time in UTC), which
        // will wake up the device when it goes off.
        RTC_WAKEUP = 0;
        // Alarm time in System.currentTimeMillis() (wall clock time in UTC). This
        // alarm does not wake the device up; if it goes off while the device is
        // asleep, it will not be delivered until the next time the device wakes up.
        RTC = 1;
        // Alarm time in SystemClock.elapsedRealtime() (time since boot, including
        // sleep), which will wake up the device when it goes off.
        ELAPSED_REALTIME_WAKEUP = 2;
        // Alarm time in SystemClock.elapsedRealtime() (time since boot, including
        // sleep). This alarm does not wake the device up; if it goes off while the
        // device is asleep, it will not be delivered until the next time the device
        // wakes up.
        ELAPSED_REALTIME = 3;
    }
}

// An android.app.AlarmManager.AlarmClockInfo object.
message AlarmClockInfoProto {
    option (android.msg_privacy).dest = DEST_AUTOMATIC;

    // This value is UTC wall clock time in milliseconds, as returned by
    // System#currentTimeMillis() for example.
    optional int64 trigger_time_ms = 1;
    optional PendingIntentProto show_intent = 2;
}
