blob: a3b1fec1db6e201e74998e471724b56347580556 [file] [log] [blame]
Mårten Kongstad867a3492023-04-25 15:06:30 +02001// Copyright (C) 2023 The Android Open Source Project
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7// http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License
14
Mårten Kongstadbb520722023-04-26 13:16:41 +020015// This is the schema definition for of Aconfig files. Modifications need to be
16// either backwards compatible, or include updates to all Aconfig files in the
17// Android tree.
Mårten Kongstad867a3492023-04-25 15:06:30 +020018
Mårten Kongstadbb520722023-04-26 13:16:41 +020019syntax = "proto2";
Mårten Kongstad867a3492023-04-25 15:06:30 +020020
21package android.aconfig;
22
Mårten Kongstad30950782023-05-09 13:31:29 +020023// messages used in both aconfig input and output
24
Mårten Kongstadc68c4ea2023-05-05 16:20:09 +020025enum flag_state {
26 ENABLED = 1;
27 DISABLED = 2;
28}
29
Mårten Kongstad30950782023-05-09 13:31:29 +020030enum flag_permission {
Mårten Kongstad416330b2023-05-05 11:10:01 +020031 READ_ONLY = 1;
32 READ_WRITE = 2;
33}
34
Mårten Kongstad30950782023-05-09 13:31:29 +020035// aconfig input messages: configuration and override data
36
37message flag_value {
Mårten Kongstadc68c4ea2023-05-05 16:20:09 +020038 required flag_state state = 1;
Mårten Kongstad30950782023-05-09 13:31:29 +020039 required flag_permission permission = 2;
Mårten Kongstad416330b2023-05-05 11:10:01 +020040 optional uint32 since = 3;
Mårten Kongstad09c28d12023-05-04 13:29:26 +020041}
42
Mårten Kongstad30950782023-05-09 13:31:29 +020043message flag_definition {
44 required string name = 1;
Mårten Kongstadbb520722023-04-26 13:16:41 +020045 required string description = 2;
Mårten Kongstad30950782023-05-09 13:31:29 +020046 repeated flag_value value = 3;
Mårten Kongstadbb520722023-04-26 13:16:41 +020047};
48
Mårten Kongstad30950782023-05-09 13:31:29 +020049message namespace {
50 required string namespace = 1;
51 repeated flag_definition flag = 2;
Mårten Kongstadbb520722023-04-26 13:16:41 +020052};
53
Mårten Kongstad30950782023-05-09 13:31:29 +020054message flag_override {
55 required string namespace = 1;
56 required string name = 2;
57 required flag_state state = 3;
58 required flag_permission permission = 4;
Mårten Kongstadbb520722023-04-26 13:16:41 +020059};
60
Mårten Kongstad30950782023-05-09 13:31:29 +020061message flag_overrides {
62 repeated flag_override flag_override = 1;
Mårten Kongstadbb520722023-04-26 13:16:41 +020063};
Mårten Kongstada1029092023-05-08 11:51:59 +020064
Mårten Kongstad30950782023-05-09 13:31:29 +020065// aconfig output messages: parsed and verified configuration and override data
Mårten Kongstada1029092023-05-08 11:51:59 +020066
Mårten Kongstad30950782023-05-09 13:31:29 +020067message tracepoint {
68 // path to config or override file releative to $TOP
Mårten Kongstada1029092023-05-08 11:51:59 +020069 required string source = 1;
70 required flag_state state = 2;
Mårten Kongstad30950782023-05-09 13:31:29 +020071 required flag_permission permission = 3;
Mårten Kongstada1029092023-05-08 11:51:59 +020072}
73
Mårten Kongstad30950782023-05-09 13:31:29 +020074message parsed_flag {
75 required string namespace = 1;
76 required string name = 2;
77 required string description = 3;
78 required flag_state state = 4;
79 required flag_permission permission = 5;
80 repeated tracepoint trace = 6;
81}
82
83message parsed_flags {
84 repeated parsed_flag parsed_flag = 1;
Mårten Kongstada1029092023-05-08 11:51:59 +020085}