xref: /aosp_15_r20/cts/apps/CtsVerifier/jni/midi/MidiTestManager.h (revision b7c941bb3fa97aba169d73cee0bed2de8ac964bf)
1*b7c941bbSAndroid Build Coastguard Worker /*
2*b7c941bbSAndroid Build Coastguard Worker  * Copyright (C) 2018 The Android Open Source Project
3*b7c941bbSAndroid Build Coastguard Worker  *
4*b7c941bbSAndroid Build Coastguard Worker  * Licensed under the Apache License, Version 2.0 (the "License");
5*b7c941bbSAndroid Build Coastguard Worker  * you may not use this file except in compliance with the License.
6*b7c941bbSAndroid Build Coastguard Worker  * You may obtain a copy of the License at
7*b7c941bbSAndroid Build Coastguard Worker  *
8*b7c941bbSAndroid Build Coastguard Worker  *      http://www.apache.org/licenses/LICENSE-2.0
9*b7c941bbSAndroid Build Coastguard Worker  *
10*b7c941bbSAndroid Build Coastguard Worker  * Unless required by applicable law or agreed to in writing, software
11*b7c941bbSAndroid Build Coastguard Worker  * distributed under the License is distributed on an "AS IS" BASIS,
12*b7c941bbSAndroid Build Coastguard Worker  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13*b7c941bbSAndroid Build Coastguard Worker  * See the License for the specific language governing permissions and
14*b7c941bbSAndroid Build Coastguard Worker  * limitations under the License.
15*b7c941bbSAndroid Build Coastguard Worker  */
16*b7c941bbSAndroid Build Coastguard Worker #include <amidi/AMidi.h>
17*b7c941bbSAndroid Build Coastguard Worker 
18*b7c941bbSAndroid Build Coastguard Worker #include <vector>
19*b7c941bbSAndroid Build Coastguard Worker 
20*b7c941bbSAndroid Build Coastguard Worker #include <jni.h>
21*b7c941bbSAndroid Build Coastguard Worker 
22*b7c941bbSAndroid Build Coastguard Worker class TestMessage;
23*b7c941bbSAndroid Build Coastguard Worker 
24*b7c941bbSAndroid Build Coastguard Worker class MidiTestManager {
25*b7c941bbSAndroid Build Coastguard Worker public:
26*b7c941bbSAndroid Build Coastguard Worker     MidiTestManager();
27*b7c941bbSAndroid Build Coastguard Worker     ~MidiTestManager();
28*b7c941bbSAndroid Build Coastguard Worker 
29*b7c941bbSAndroid Build Coastguard Worker     void jniSetup(JNIEnv* env);
30*b7c941bbSAndroid Build Coastguard Worker 
31*b7c941bbSAndroid Build Coastguard Worker     bool RunTest(jobject testModuleObj, AMidiDevice* sendDevice, AMidiDevice* receiveDevice,
32*b7c941bbSAndroid Build Coastguard Worker                     bool throttleData);
33*b7c941bbSAndroid Build Coastguard Worker     void EndTest(int testCode);
34*b7c941bbSAndroid Build Coastguard Worker 
35*b7c941bbSAndroid Build Coastguard Worker     // Called by the thread routine.
36*b7c941bbSAndroid Build Coastguard Worker     int ProcessInput();
37*b7c941bbSAndroid Build Coastguard Worker 
38*b7c941bbSAndroid Build Coastguard Worker private:
39*b7c941bbSAndroid Build Coastguard Worker     void buildMatchStream();
40*b7c941bbSAndroid Build Coastguard Worker     int matchStream(uint8_t* bytes, int count);
41*b7c941bbSAndroid Build Coastguard Worker 
42*b7c941bbSAndroid Build Coastguard Worker     bool setupMessages();
43*b7c941bbSAndroid Build Coastguard Worker     int sendMessages();
44*b7c941bbSAndroid Build Coastguard Worker 
45*b7c941bbSAndroid Build Coastguard Worker     jobject mTestModuleObj;
46*b7c941bbSAndroid Build Coastguard Worker 
47*b7c941bbSAndroid Build Coastguard Worker     // build the stream for matching.
48*b7c941bbSAndroid Build Coastguard Worker     std::vector<uint8_t>    mMatchStream;
49*b7c941bbSAndroid Build Coastguard Worker 
50*b7c941bbSAndroid Build Coastguard Worker     int     mReceiveStreamPos;
51*b7c941bbSAndroid Build Coastguard Worker     static const int MESSAGE_MAX_BYTES = 1024;
52*b7c941bbSAndroid Build Coastguard Worker 
53*b7c941bbSAndroid Build Coastguard Worker     AMidiInputPort* mMidiSendPort;
54*b7c941bbSAndroid Build Coastguard Worker     AMidiOutputPort* mMidiReceivePort;
55*b7c941bbSAndroid Build Coastguard Worker 
56*b7c941bbSAndroid Build Coastguard Worker     // The array of messages to send/receive
57*b7c941bbSAndroid Build Coastguard Worker     std::vector<TestMessage>    mTestMsgs;
58*b7c941bbSAndroid Build Coastguard Worker     int             mNumTestMsgs;
59*b7c941bbSAndroid Build Coastguard Worker 
60*b7c941bbSAndroid Build Coastguard Worker     bool            mThrottleData;
61*b7c941bbSAndroid Build Coastguard Worker 
62*b7c941bbSAndroid Build Coastguard Worker     // JNI
63*b7c941bbSAndroid Build Coastguard Worker     JavaVM* mJvm;
64*b7c941bbSAndroid Build Coastguard Worker     jmethodID mMidEndTest;
65*b7c941bbSAndroid Build Coastguard Worker 
66*b7c941bbSAndroid Build Coastguard Worker     // Test result codes
67*b7c941bbSAndroid Build Coastguard Worker     static const int TESTSTATUS_NOTRUN = 0;
68*b7c941bbSAndroid Build Coastguard Worker     static const int TESTSTATUS_PASSED = 1;
69*b7c941bbSAndroid Build Coastguard Worker     static const int TESTSTATUS_FAILED_MISMATCH = 2;
70*b7c941bbSAndroid Build Coastguard Worker     static const int TESTSTATUS_FAILED_TIMEOUT = 3;
71*b7c941bbSAndroid Build Coastguard Worker     static const int TESTSTATUS_FAILED_OVERRUN = 4;
72*b7c941bbSAndroid Build Coastguard Worker     static const int TESTSTATUS_FAILED_DEVICE = 5;
73*b7c941bbSAndroid Build Coastguard Worker     static const int TESTSTATUS_FAILED_JNI = 6;
74*b7c941bbSAndroid Build Coastguard Worker     static const int TESTSTATUS_FAILED_SETUP = 7;
75*b7c941bbSAndroid Build Coastguard Worker     static const int TESTSTATUS_FAILED_SEND = 8;
76*b7c941bbSAndroid Build Coastguard Worker 
77*b7c941bbSAndroid Build Coastguard Worker     bool StartReading(AMidiDevice* nativeReadDevice);
78*b7c941bbSAndroid Build Coastguard Worker     bool StartWriting(AMidiDevice* nativeWriteDevice);
79*b7c941bbSAndroid Build Coastguard Worker };
80