/*
 * 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";

option java_multiple_files = true;

import "frameworks/base/libs/incident/proto/android/privacy.proto";

package android.os;

// Android Platform Exported System Properties
// TODO: This is not the completed list, new properties need to be whitelisted.
message SystemPropertiesProto {

    // Properties that are not specified below would be appended here.
    // These values stay on device only.
    message Property {
        option (android.msg_privacy).dest = DEST_LOCAL;

        optional string name = 1;
        optional string value = 2;
    }
    repeated Property extra_properties = 1;

    message AacDrc {
        optional int32  boost = 1;
        optional int32  cut = 2;
        optional int32  enc_target_level = 3;
        optional int32  heavy = 4;
        optional int32  reference_level = 5;
    }
    optional AacDrc aac_drc = 2;

    message Aaudio {
        optional int32  hw_burst_min_usec = 1;
        optional int32  minimum_sleep_usec = 2;
        optional int32  mixer_bursts = 3;
        optional int32  mmap_exclusive_policy = 4;
        optional int32  mmap_policy = 5;
        optional int32  wakeup_delay_usec = 6;

        // Next Tag: 7
    }
    optional Aaudio aaudio = 3;

    optional int32  af_fast_track_multiplier = 4;

    message Camera {
        optional bool   disable_zsl_mode = 1;
        optional int32  fifo_disable = 2;

        // Next Tag: 3
    }
    optional Camera camera = 5;

    message DalvikVm {
        optional string appimageformat = 1;
        optional string backgroundgctype = 2;
        optional bool   checkjni = 3;
        optional string dex2oat_filter = 4;
        optional string dex2oat_flags = 5;
        optional int32  dex2oat_threads = 6;
        optional string dex2oat_Xms = 7;
        optional string dex2oat_Xmx = 8;
        optional bool   dexopt_secondary = 9;
        optional string execution_mode = 10;
        optional string extra_opts = 11;
        optional string gctype = 12;
        optional string heapgrowthlimit = 13;
        optional string heapmaxfree = 14;
        optional string heapminfree = 15;
        optional string heapsize = 16;
        optional string heapstartsize = 17;
        optional double heaptargetutilization = 18;
        optional int32  hot_startup_method_samples = 19;
        optional string image_dex2oat_filter = 20;
        optional string image_dex2oat_flags = 21;
        optional int32  image_dex2oat_threads = 22;
        optional string image_dex2oat_Xms = 23;
        optional string image_dex2oat_Xmx = 24;
        optional string isa_arm_features = 25;
        optional string isa_arm_variant = 26;
        optional string isa_arm64_features = 27;
        optional string isa_arm64_variant = 28;
        optional string isa_mips_features = 29;
        optional string isa_mips_variant = 30;
        optional string isa_mips64_features = 31;
        optional string isa_mips64_variant = 32;
        optional string isa_unknown_features = 33;
        optional string isa_unknown_variant = 34;
        optional string isa_x86_64_features = 35;
        optional string isa_x86_64_variant = 36;
        optional string isa_x86_features = 37;
        optional string isa_x86_variant = 38;
        optional string jitinitialsize = 39;
        optional string jitmaxsize = 40;
        optional int32  jitprithreadweight = 41;
        optional int32  jitthreshold = 42;
        optional int32  jittransitionweight = 43;
        optional string jniopts = 44;
        optional int32  lockprof_threshold = 45;
        optional bool   method_trace = 46;
        optional string method_trace_file = 47;
        optional int32  method_trace_file_siz = 48;
        optional bool   method_trace_stream = 49;
        optional bool   profilesystemserver = 50;
        optional string stack_trace_dir = 51;
        optional bool   usejit = 52;
        optional bool   usejitprofiles = 53;
        optional int32  zygote_max_boot_retry = 54;

        // Next Tag: 55
    }
    optional DalvikVm dalvik_vm = 6;

    optional bool   drm_64bit_enabled = 7;
    optional bool   drm_service_enabled = 8;
    optional bool   dumpstate_dry_run = 9;
    optional string gsm_sim_operator_numeric = 10;
    optional bool   hal_instrumentation_enable = 11;

    message InitSvc {
        enum Status {
            STATUS_UNKNOWN = 0;
            STATUS_RUNNING = 1;
            STATUS_STOPPED = 2;
        }
        optional Status adbd = 1;
        optional Status audioserver = 2;
        optional Status bootanim = 3;
        optional Status bufferhubd = 4;
        optional Status cameraserver = 5;
        optional Status clear_bcb = 6;
        optional Status drm = 7;
        optional Status gatekeeperd = 8;
        optional Status healthd = 9;
        optional Status hidl_memory = 10;
        optional Status hostapd = 11;
        optional Status hwservicemanager = 12;
        optional Status installd = 13;
        optional Status keystore = 14;
        optional Status lmkd = 15;
        optional Status logd = 16;
        optional Status logd_reinit = 17;
        optional Status media = 18;
        optional Status mediadrm = 19;
        optional Status mediaextractor = 20;
        optional Status mediametrics = 21;
        optional Status netd = 22;
        optional Status performanced = 23;
        optional Status ril_daemon = 24;
        optional Status servicemanager = 25;
        optional Status storaged = 26;
        optional Status surfaceflinger = 27;
        optional Status thermalservice = 28;
        optional Status tombstoned = 29;
        optional Status ueventd = 30;
        optional Status update_engine = 31;
        optional Status update_verifier_nonencrypted = 32;
        optional Status virtual_touchpad = 33;
        optional Status vndservicemanager = 34;
        optional Status vold = 35;
        optional Status vr_hwc = 36;
        optional Status webview_zygote32 = 37;
        optional Status wificond = 38;
        optional Status wpa_supplicant = 39;
        optional Status zygote = 40;
        optional Status zygote_secondary = 41;

        // Next Tag: 42
    }
    optional InitSvc init_svc = 12;

    optional bool   keyguard_no_require_sim = 13;
    optional string libc_debug_malloc_options = 14;
    optional string libc_debug_malloc_program = 15;

    message Log {
        optional string tag_WifiHAL = 1;
        optional string tag_stats_log = 2;

        // Next Tag: 3
    }
    optional Log log = 16;

    optional bool   media_mediadrmservice_enable = 17;
    optional bool   media_recorder_show_manufacturer_and_model = 18;

    message Persist {
        optional string config_calibration_fac = 1;
        optional int32  dbg_volte_avail_ovr = 2;
        optional int32  dbg_vt_avail_ovr = 3;
        optional int32  dbg_wfc_avail_ovr = 4;
        optional int32  radio_airplane_mode_on = 5;
        optional string radio_multisim_config = 6;
        optional int32  rcs_supported = 7;
        optional bool   sys_crash_rcu = 8;
        optional string sys_dalvik_vm_lib_2 = 9;
        optional float  sys_sf_color_saturation = 10;
        optional string sys_timezone = 11;

        // Next Tag: 12
    }
    optional Persist persist = 19;

    message PmDexopt {
        optional string ab_ota = 1;
        optional string bg_dexopt = 2;
        optional string boot = 3;
        optional string first_boot = 4;
        optional string install = 5;

        // Next Tag: 6
    }
    optional PmDexopt pm_dexopt = 20;

    // Read only properites on the device.
    message Ro {
        optional bool  adb_secure = 1;
        optional string arch = 2;
        optional bool   audio_ignore_effects = 3;
        optional bool   audio_monitorRotation = 4;
        optional string baseband = 5;
        optional string board_platform = 6;

        message Boot {
            optional string avb_version = 1;
            optional string baseband = 2;
            optional string bootdevice = 3;
            optional string bootloader = 4;
            repeated string boottime = 5;
            optional string console = 6;
            optional int32  fake_battery = 7;
            optional string hardware = 8;
            optional string hardware_color = 9;
            optional string hardware_revision = 10;
            optional string hardware_sku = 11;
            optional string keymaster = 12;
            optional string mode = 13;
            optional string revision = 14;
            optional string slot_suffix = 15;
            optional string vbmeta_avb_version = 16;
            optional string vendor_overlay_theme = 17;
            optional string verifiedbootstate = 18;
            optional string veritymode = 19;
            optional string wificountrycode = 20;

            // Next Tag: 21
        }
        optional Boot boot = 7;

        // boot.img's properties.
        message BootImage {
            // When the boot.img is built.
            optional string build_date = 1;
            // UTC timestamp of build date.
            optional int64 build_date_utc = 2;
            // Android Build fingerprint of the build, e.g.
            // google/marlin/marlin:P/MASTER/android-build/dev-keys
            optional string build_fingerprint = 3;

            // Next Tag: 4
        }
        optional BootImage bootimage = 8;

        // Version of bootloader on device.
        optional string bootloader = 9;
        // Kernel bootmode, e.g. charger.
        optional string bootmode = 10;

        // Android Platform build metadata.
        message Build {
            optional string date = 1;
            optional int64  date_utc = 2;
            optional string description = 3;
            optional string display_id = 4;
            optional string host = 5;
            optional string id = 6;
            optional string product = 7;
            optional bool   system_root_image = 8;
            optional string tags = 9;
            optional string type = 10;
            optional string user = 11;

            message Version {
                optional string base_os = 1;
                optional string codename = 2;
                optional string incremental = 3;
                optional int32  preview_sdk = 4;
                optional string release = 5;
                optional int32  sdk = 6;
                optional string security_patch = 7;

                // Next Tag: 8
            }
            optional Version version = 12;

            // Next Tag: 13
        }
        optional Build build = 11;

        optional bool   camera_notify_nfc = 12;
        optional string carrier = 13;
        optional bool   com_android_dataroaming = 14;
        optional bool   com_android_prov_mobiledata = 15;
        optional string com_google_clientidbase = 16;

        message Config {
            optional string alarm_alert = 1;
            optional int32  media_vol_steps = 2;
            optional string notification_sound = 3;
            optional string ringtone = 4;
            optional int32  vc_call_vol_steps = 5;

            // Next Tag: 6
        }
        optional Config config = 17;

        optional string control_privapp_permissions = 18;
        optional int32  cp_system_other_odex = 19;
        optional string crypto_scrypt_params = 20;
        optional string crypto_state = 21;
        optional string crypto_type = 22;
        optional string dalvik_vm_native_bridge = 23;
        optional bool   debuggable = 24;
        optional string frp_pst = 25;
        optional string gfx_driver_0 = 26;

        message Hardware {
            optional string value = 1; // value of ro.hardware itself

            optional string activity_recognition = 2;
            optional string audio = 3;
            optional string audio_policy = 4;
            optional string audio_a2dp = 5;
            optional string audio_primary = 6;
            optional string audio_usb = 7;
            optional string bootctrl = 8;
            optional string camera = 9;
            optional string consumerir = 10;
            optional string context_hub = 11;
            optional string egl = 12;
            optional string fingerprint = 13;
            optional string flp = 14;
            optional string gatekeeper = 15;
            optional string gps = 16;
            optional string gralloc = 17;
            optional string hdmi_cec = 18;
            optional string hwcomposer = 19;
            optional string input = 20;
            optional string keystore = 21;
            optional string lights = 22;
            optional string local_time = 23;
            optional string memtrack = 24;
            optional string nfc = 25;
            optional string nfc_nci = 26;
            optional string nfc_tag = 27;
            optional string nvram = 28;
            optional string power = 29;
            optional string radio = 30;
            optional string sensors = 31;
            optional string sound_trigger = 32;
            optional string thermal = 33;
            optional string tv_input = 34;
            optional string type = 35;
            optional string vehicle = 36;
            optional string vibrator = 37;
            optional string virtual_device = 38;
            optional string vulkan = 39;

            // Next Tag: 40
        }
        optional Hardware hardware = 27;

        optional int32  kernel_qemu = 28;
        optional int32  kernel_qemu_gles = 29;
        optional int32  oem_unlock_supported = 30;
        optional int32  opengles_version = 31;

        message Product {
            optional string board = 1;
            optional string brand = 2;
            optional string cpu_abi = 3;
            repeated string cpu_abilist = 4;
            repeated string cpu_abilist32 = 5;
            repeated string cpu_abilist64 = 6;
            optional string device = 7;
            optional int32  first_api_level = 8;
            optional string manufacturer = 9;
            optional string model = 10;
            optional string name = 11;

            message Vendor {
                optional string brand = 1;
                optional string device = 2;
                optional string manufacturer = 3;
                optional string model = 4;
                optional string name = 5;
            }
            optional Vendor vendor = 12;

            // Next Tag: 13
        }
        optional Product product = 32;

        optional int32  property_service_version = 33;
        optional string retaildemo_video_path = 34;
        optional string revision = 35;
        optional int32  sf_lcd_density = 36;
        optional bool   storage_manager_enabled = 37;

        message Telephony {
            optional bool  call_ring_multiple = 1;
            optional int32 default_cdma_sub = 2;
            optional int32 default_network = 3;
        }
        optional Telephony telephony = 38;

        optional string url_legal = 39;
        optional string url_legal_android_privacy = 40;

        message Vendor {
            optional string build_date = 1;
            optional int64  build_date_utc = 2;
            optional string build_fingerprint = 3;
        }
        optional Vendor vendor = 41;

        optional string vndk_version = 42;
        optional int32  vts_coverage = 43;
        optional string zygote = 44;

        // Next Tag: 45
    }
    optional Ro ro = 21;

    optional string sendbug_preferred_domain = 22;
    optional int32  service_bootanim_exit = 23;

    message Sys {
        optional int32  boot_completed = 1;
        optional int32  boot_from_charger_mode = 2;
        optional int32  retaildemo_enabled = 3;
        optional string shutdown_requested = 4;

        message Usb {
            optional string config = 1;
            optional int32  configfs = 2;
            optional string controller = 3;
            optional int32  ffs_max_read = 4;
            optional int32  ffs_max_write = 5;
            optional int32  ffs_mtp_ready = 6;
            optional int32  ffs_ready = 7;
            optional int32  mtp_device_type = 8;
            optional string state = 9;

            // Next Tag: 10
        }
        optional Usb usb = 5;

        // Next Tag: 6
    }
    optional Sys sys = 24;

    optional int32  telephony_lteOnCdmaDevice = 25;
    optional int32  tombstoned_max_tombstone_count = 26;
    optional string vold_decrypt = 27;
    optional int32  vold_post_fs_data_done = 28;
    optional int32  vts_native_server_on = 29;
    optional string wifi_direct_interface = 30;
    optional string wifi_interface = 31;

    // Next Tag: 32
}

