1syntax = "proto3";
2
3// Schema for the matrix
4
5// Kernel version requirements for devices running at a certain API level.
6// Each string has the format of "android-4.9" or "android14-5.15".
7message RawAndroidReleaseRequirement {
8    // Kernels allowed for devices updated to this API level.
9    repeated string upgrade = 1;
10
11    // Kernels allowed for devices launched at this API level.
12    repeated string launch = 2;
13
14    // Kernels allowed for GRF devices launched at this API level.
15    repeated string launch_grf = 3;
16}
17
18// Mapping from API level (SDK verion) to kernel version requirements
19// for devices running the given API level (SDK version).
20// This is the schema for the raw data.
21message RawKernelVersionMatrix {
22    map<uint64, RawAndroidReleaseRequirement> release_requirements = 1;
23}
24
25// A kernel version, without the minor version.
26message KernelVersion {
27    uint64 major_version = 1;
28    uint64 minor_version = 2;
29}
30
31// Data structures used in test
32
33// Holds structured information for KMI like "android14-5.15".
34message Kmi {
35    KernelVersion kernel_version = 1;
36    uint64 android_release = 2;
37}
38
39// Mapping from API level (SDK verion) to kernel version requirements
40// for devices running the given API level (SDK version), but structured.
41// This schema is used to hold the parsed RawAndroidReleaseRequirement.
42message AndroidReleaseRequirement {
43    repeated Kmi upgrade = 1;
44    repeated Kmi launch = 2;
45    repeated Kmi launch_grf = 3;
46}