/*
 * Copyright (C) 2015 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_package = "com.android.car.vehiclenetwork";
option optimize_for = LITE_RUNTIME;

message VehiclePropConfig {
    required int32 prop = 1;
    required int32 access = 2;
    required int32 change_mode = 3;
    required int32 value_type = 4;
    required int32 permission_model = 5;
    optional int32 zones = 6;
    repeated int32 config_array = 7;
    required float sample_rate_max = 8;
    required float sample_rate_min = 9;
    optional string config_string = 10;
    repeated float float_maxs = 11;
    repeated float float_mins = 12;
    repeated int32 int32_maxs = 13;
    repeated int32 int32_mins = 14;
    repeated int64 int64_maxs = 15;
    repeated int64 int64_mins = 16;
};

message VehiclePropConfigs {
    repeated VehiclePropConfig configs = 1;
};

message VehiclePropValue {
    // common data
    required int32 prop = 1;
    required int32 value_type = 2;
    optional int64 timestamp = 3; // required for valid data from HAL, but can be skipped for set.
    // values
    optional int32 zone = 4;
    repeated int32 int32_values= 5; // this also covers boolean value.
    optional int64 int64_value = 6;
    repeated float float_values = 7;
    optional string string_value = 8;
    optional bytes bytes_value = 9;
};

message VehiclePropValues {
    repeated VehiclePropValue values = 1;
};
