lin
2025-08-21 57113df3a0e2be01232281fad9a5f2c060567981
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
// Copyright 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.
 
syntax = "proto2";
 
package android.vts;
option java_package = "com.android.vts.proto";
option java_outer_classname = "VtsResourceControllerMessage";
 
import "test/vts/proto/ComponentSpecificationMessage.proto";
 
// Possible operations on Fast Message Queue.
enum FmqOp {
    // Unknown operation.
    FMQ_UNKNOWN = 0;
    // Create a new FMQ object.
    FMQ_CREATE = 1;
    // Read from a FMQ (no blocking).
    FMQ_READ = 2;
    // Read from a FMQ (with short-form blocking).
    FMQ_READ_BLOCKING = 3;
    // Read from a FMQ (with long-form blocking).
    // TODO: support this from host side in the future
    FMQ_READ_BLOCKING_LONG = 4;
    // Write to a FMQ (no blocking).
    FMQ_WRITE = 5;
    // Write to a FMQ (with short-form blocking).
    FMQ_WRITE_BLOCKING = 6;
    // Write to a FMQ (with long-form blocking).
    // TODO: support this from host side in the future
    FMQ_WRITE_BLOCKING_LONG = 7;
    // Get space available to write in FMQ.
    FMQ_AVAILABLE_WRITE = 8;
    // Get number of items available to read.
    FMQ_AVAILABLE_READ = 9;
    // Get size of item in FMQ.
    FMQ_GET_QUANTUM_SIZE = 10;
    // Get number of items that fit in FMQ.
    FMQ_GET_QUANTUM_COUNT = 11;
    // Check if FMQ is valid.
    FMQ_IS_VALID = 12;
    // Get address of queue descriptor.
    // This is an operation that is used in the target-side
    // drivers to pass queue descriptor address to identify
    // the FMQ. It is not for communication between host and
    // target.
    FMQ_GET_DESC_ADDR = 13;
}
 
// Possible operations on hidl_memory.
enum HidlMemoryOp {
    // Unknown operation.
    MEM_PROTO_UNKNOWN = 0;
    // Allcate a new memory region.
    MEM_PROTO_ALLOCATE = 1;
    // Signal starting to read memory.
    MEM_PROTO_START_READ = 2;
    // Signal starting to read a particular region of memory.
    MEM_PROTO_START_READ_RANGE = 3;
    // Perform actual read operation.
    MEM_PROTO_READ_BYTES = 4;
    // Signal starting to write to memory.
    MEM_PROTO_START_UPDATE = 5;
    // Signal starting to write to a particular region of memory.
    MEM_PROTO_START_UPDATE_RANGE = 6;
    // Perform actual write operation.
    MEM_PROTO_UPDATE_BYTES = 7;
    // Commit to a read/write operation.
    MEM_PROTO_COMMIT = 8;
    // Get the size of memory region.
    MEM_PROTO_GET_SIZE = 9;
}
 
// Possible operations on hidl_handle.
enum HidlHandleOp {
    // Unknown operation.
    HANDLE_PROTO_UNKNOWN = 0;
    // Create a handle object for a single file.
    HANDLE_PROTO_CREATE_FILE = 1;
    // Read from a handle object with one file.
    HANDLE_PROTO_READ_FILE = 2;
    // Write to a handle object with one file.
    HANDLE_PROTO_WRITE_FILE = 3;
    // Delete a handle object.
    HANDLE_PROTO_DELETE = 4;
}
 
// The arguments for a FMQ operation.
message FmqRequestMessage {
    // operation to be performed
    optional FmqOp operation = 1;
 
    // string to represent type of data in the queue
    // TODO: support user-defined types
    optional bytes data_type = 2;
    // queue flavor
    optional bool sync = 3;
 
    // queue id
    optional int32 queue_id = 4 [default = -1];
 
    // queue size
    optional uint64 queue_size = 5;
    // whether to enable blocking
    optional bool blocking = 6;
    // whether to reset read/write pointers
    optional bool reset_pointers = 7;
 
    // data to be written
    repeated VariableSpecificationMessage write_data = 8;
    // length of data to be read
    optional uint64 read_data_size = 9;
    // wait time when blocking
    optional int64 time_out_nanos = 10;
 
    // store address of queue descriptor
    // This is a field that is used by internal drivers
    // to identify a FMQ.
    // It is not used for communication between host and target.
    optional uint64 queue_desc_addr = 11;
}
 
// The response for a FMQ operation,
// including scalar values and data read back from the queue.
message FmqResponseMessage {
    // data read from the queue
    repeated VariableSpecificationMessage read_data = 1;
 
    // three possible return types from FMQ
    // basic util function return values
    optional uint64 sizet_return_val = 2;
    // function that returns a queue id
    optional int32 queue_id = 3;
    // signal if the operation succeeds on target side
    optional bool success = 4;
}
 
// The arguments for a hidl_memory operation.
message HidlMemoryRequestMessage {
    // operation to be performed
    optional HidlMemoryOp operation = 1;
    // id to identify memory region
    optional int32 mem_id = 2 [default = -1];
    // requested memory size
    optional uint64 mem_size = 3;
    // offset from the start of memory region
    optional uint64 start = 4;
    // length of memory to be modified
    optional uint64 length = 5;
    // data to be written into memory
    optional bytes write_data = 6;
}
 
// The response for a hidl_memory operation.
message HidlMemoryResponseMessage {
    // indicate if the memory region is found
    optional bool success = 1;
    // new id assigned to the new memory region
    optional int32 new_mem_id = 2;
    // result returned by GetSize() method on the memory region
    optional uint64 mem_size = 3;
    // data read from memory
    optional bytes read_data = 4;
}
 
// The arguments for a hidl_handle operation.
message HidlHandleRequestMessage {
    // operation to be performed
    optional HidlHandleOp operation = 1;
    // identifies the handle object
    optional int32 handle_id = 2 [default = -1];
    // to specify what files to open, and additional integers
    // in a handle object
    optional HandleDataValueMessage handle_info = 3;
    // number of bytes to read from the file
    // read() function in C I/O takes in a size_t,
    // so use unsigned integer here.
    optional uint64 read_data_size = 4;
    // data to be written into file
    optional bytes write_data = 5;
}
 
// The response for a hidl_handle operation.
message HidlHandleResponseMessage {
    // indicate if the operation succeeds
    optional bool success = 1;
    // new id assigned to the new handle object
    optional int32 new_handle_id = 2;
    // data read from the file
    optional bytes read_data = 3;
    // number of bytes written into the file if the request is a write operation
    // write() function in C I/O returns a ssize_t,
    // so use signed integer here.
    optional int64 write_data_size = 4;
}