# 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.

owner: Platform
module: "android.sysprop.CarProperties"

prop {
    api_name: "boot_user_override_id"
    type: Integer
    scope: Internal
    access: ReadWrite
    prop_name: "android.car.systemuser.bootuseroverrideid"
}

# String to be prefixed to device name during trusted device enrollment.
# Max length limit is 4. Chars exceeding length limit will be truncated.
prop {
    api_name: "trusted_device_device_name_prefix"
    type: String
    scope: Internal
    access: Readonly
    prop_name: "ro.android.car.trusteddevice.device_name_prefix"
}

# Number of warm users pre-created during boot
prop {
    api_name: "number_pre_created_users"
    type: Integer
    scope: Internal
    access: ReadWrite
    prop_name: "android.car.number_pre_created_users"
}

# Number of warm guest users pre-created during boot
prop {
    api_name: "number_pre_created_guests"
    type: Integer
    scope: Internal
    access: ReadWrite
    prop_name: "android.car.number_pre_created_guests"
}

# Whether the Vehicle HAL should be used for user management tasks.
prop {
    api_name: "user_hal_enabled"
    type: Boolean
    scope: Internal
    access: ReadWrite
    prop_name: "android.car.user_hal_enabled"
}

# Timeout (in ms) waiting for Vehicle HAL responses for user management requests.
prop {
    api_name: "user_hal_timeout"
    type: Integer
    scope: Internal
    access: ReadWrite
    prop_name: "android.car.user_hal_timeout"
}

# Timeout (in ms) waiting for Device Policy Manager responses for user management requests.
prop {
    api_name: "device_policy_manager_timeout"
    type: Integer
    scope: Internal
    access: ReadWrite
    prop_name: "android.car.device_policy_manager_timeout"
}
