blob: dfb9be46c28bad6a23a7e87bca9d3f73921a19ab [file] [log] [blame]
Martijn Coenencbe590c2016-08-30 11:27:56 -07001/*
2 * Copyright (C) 2016 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
Hridya Valsaraju3e320032016-08-08 11:12:30 -070017package android.hardware.tests.msgq@1.0;
18
19interface ITestMsgQ {
Hridya Valsaraju710e4a32016-12-15 09:14:13 -080020 enum EventFlagBits : uint32_t {
21 FMQ_NOT_EMPTY = 1 << 0,
22 FMQ_NOT_FULL = 1 << 1,
23 };
24
Hridya Valsaraju9d9672c2016-09-21 17:47:06 -070025 /*
Hridya Valsarajub4358452016-10-14 16:48:01 -070026 * This method requests the service to set up a synchronous read/write
Hridya Valsaraju9d9672c2016-09-21 17:47:06 -070027 * wait-free FMQ with the client as reader.
Hridya Valsarajub4358452016-10-14 16:48:01 -070028 *
29 * @return ret True if the setup is successful.
Hridya Valsaraju9d9672c2016-09-21 17:47:06 -070030 * @return mqDesc This structure describes the FMQ that was
31 * set up by the service. Client can use it to set up the FMQ at its end.
32 */
33 configureFmqSyncReadWrite()
Hridya Valsarajuf70884c2016-12-27 12:40:01 -080034 generates(bool ret, fmq_sync<uint16_t> mqDesc);
Hridya Valsaraju3e320032016-08-08 11:12:30 -070035
Hridya Valsaraju9d9672c2016-09-21 17:47:06 -070036 /*
Hridya Valsarajuc3db9c82017-02-13 14:38:26 -080037 * This method requests the service to return an MQDescriptor to
38 * an unsynchronized FMQ set up by the server. If 'configureFmq' is
39 * true, then the server sets up a new unsynchronized FMQ. This
40 * method is to be used to test multiple reader processes.
Hridya Valsarajub4358452016-10-14 16:48:01 -070041 *
Hridya Valsarajuc3db9c82017-02-13 14:38:26 -080042 * @param configureFmq The server sets up a new unsynchronized FMQ if
43 * this parameter is true.
44 *
45 * @return ret True if successful.
46 * @return mqDesc This structure describes the unsynchronized FMQ that was
Hridya Valsarajub4358452016-10-14 16:48:01 -070047 * set up by the service. Client can use it to set up the FMQ at its end.
Hridya Valsaraju9d9672c2016-09-21 17:47:06 -070048 */
Hridya Valsarajuc3db9c82017-02-13 14:38:26 -080049 getFmqUnsyncWrite(bool configureFmq) generates(bool ret, fmq_unsync<uint16_t> mqDesc);
Hridya Valsaraju3e320032016-08-08 11:12:30 -070050
Hridya Valsaraju9d9672c2016-09-21 17:47:06 -070051 /*
Hridya Valsarajub4358452016-10-14 16:48:01 -070052 * This method request the service to write into the synchronized read/write
53 * flavor of the FMQ.
54 *
55 * @param count Number to messages to write.
56 *
57 * @return ret True if the write operation was successful.
Hridya Valsaraju9d9672c2016-09-21 17:47:06 -070058 */
Hridya Valsarajub4358452016-10-14 16:48:01 -070059 requestWriteFmqSync(int32_t count) generates(bool ret);
60
61 /*
62 * This method request the service to read from the synchronized read/write
63 * FMQ.
64 *
65 * @param count Number to messages to read.
66 *
67 * @return ret True if the read operation was successful.
68 */
69 requestReadFmqSync(int32_t count) generates(bool ret);
70
71 /*
72 * This method request the service to write into the unsynchronized flavor
73 * of FMQ.
74 *
75 * @param count Number to messages to write.
76 *
77 * @return ret True if the write operation was successful.
78 */
79 requestWriteFmqUnsync(int32_t count) generates(bool ret);
80
81 /*
82 * This method request the service to read from the unsynchronized flavor of
83 * FMQ.
84 *
85 * @param count Number to messages to read.
86 *
87 * @return ret Will be True if the read operation was successful.
88 */
89 requestReadFmqUnsync(int32_t count) generates(bool ret);
90
Hridya Valsaraju710e4a32016-12-15 09:14:13 -080091 /*
92 * This method requests the service to trigger a blocking read.
93 *
94 * @param count Number of messages to read.
95 *
96 */
97 oneway requestBlockingRead(int32_t count);
Hridya Valsaraju9ba92442017-01-04 16:19:36 -080098
99 /*
Hridya Valsaraju586bed12017-01-13 20:58:17 -0800100 * This method requests the service to trigger a blocking read using
101 * default Event Flag notification bits defined by the MessageQueue class.
102 *
103 * @param count Number of messages to read.
104 *
105 */
106 oneway requestBlockingReadDefaultEventFlagBits(int32_t count);
107
108 /*
Hridya Valsaraju9ba92442017-01-04 16:19:36 -0800109 * This method requests the service to repeatedly trigger blocking reads.
110 *
111 * @param count Number of messages to read in a single blocking read.
112 * @param numIter Number of blocking reads to trigger.
113 *
114 */
115 oneway requestBlockingReadRepeat(int32_t count, int32_t numIter);
116
Hridya Valsaraju3e320032016-08-08 11:12:30 -0700117};