/*
 * Copyright (C) 2016 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 = "proto3";

option java_multiple_files = true;
option java_outer_classname = "IncidentProtoMetadata";

import "frameworks/base/libs/incident/proto/android/privacy.proto";
import "frameworks/base/core/proto/android/service/appwidget.proto";
import "frameworks/base/core/proto/android/service/battery.proto";
import "frameworks/base/core/proto/android/service/fingerprint.proto";
import "frameworks/base/core/proto/android/service/diskstats.proto";
import "frameworks/base/core/proto/android/service/netstats.proto";
import "frameworks/base/core/proto/android/service/notification.proto";
import "frameworks/base/core/proto/android/service/package.proto";
import "frameworks/base/core/proto/android/service/power.proto";
import "frameworks/base/core/proto/android/providers/settings.proto";

package android.os;

message IncidentHeaderProto {
    enum Cause {
        CAUSE_UNKNOWN = 0;
        CAUSE_USER = 1;
        CAUSE_ANR = 2;
        CAUSE_CRASH = 3;
    }

    Cause cause = 1;
}

message IncidentProto {
    // Incident header
    repeated IncidentHeaderProto header = 1;

    // Device information
    //SystemProperties system_properties = 1000;

    // Linux services
    //Procrank procrank = 2000;
    //PageTypeInfo page_type_info = 2001;
    //KernelWakeSources kernel_wake_sources = 2002;

    // System Services
    android.service.fingerprint.FingerprintServiceDumpProto fingerprint = 3000;
    android.service.NetworkStatsServiceDumpProto netstats = 3001;
    android.providers.settings.SettingsServiceDumpProto settings = 3002;
    android.service.appwidget.AppWidgetServiceDumpProto appwidget = 3003;
    android.service.battery.BatteryServiceDumpProto battery = 3006;
    android.service.diskstats.DiskStatsServiceDumpProto diskstats = 3007;
    android.service.notification.NotificationServiceDumpProto notification = 3004;
    android.service.pm.PackageServiceDumpProto package = 3008;
    android.service.power.PowerServiceDumpProto power = 3009;
}
