| /* |
| * Copyright (C) 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. |
| */ |
| #include <amidi/AMidi.h> |
| |
| #include <jni.h> |
| |
| class TestMessage; |
| |
| class MidiTestManager { |
| public: |
| MidiTestManager(); |
| ~MidiTestManager(); |
| |
| void jniSetup(JNIEnv* env); |
| |
| bool RunTest(jobject testModuleObj, AMidiDevice* sendDevice, AMidiDevice* receiveDevice); |
| void EndTest(int testCode); |
| |
| // Called by the thread routine. |
| int ProcessInput(); |
| |
| private: |
| void buildTestStream(); |
| bool matchStream(uint8_t* bytes, int count); |
| |
| int sendMessages(); |
| |
| jobject mTestModuleObj; |
| |
| // The send messages in a linear stream for matching. |
| uint8_t* mTestStream; |
| int mNumTestStreamBytes; |
| int mReceiveStreamPos; |
| static const int MESSAGE_MAX_BYTES = 1024; |
| |
| AMidiInputPort* mMidiSendPort; |
| AMidiOutputPort* mMidiReceivePort; |
| |
| // The array of messages to send/receive |
| TestMessage* mTestMsgs; |
| int mNumTestMsgs; |
| |
| // JNI |
| JavaVM* mJvm; |
| jmethodID mMidEndTest; |
| |
| // Test result codes |
| static const int TESTSTATUS_NOTRUN = 0; |
| static const int TESTSTATUS_PASSED = 1; |
| static const int TESTSTATUS_FAILED_MISMATCH = 2; |
| static const int TESTSTATUS_FAILED_TIMEOUT = 3; |
| static const int TESTSTATUS_FAILED_OVERRUN = 4; |
| static const int TESTSTATUS_FAILED_DEVICE = 5; |
| static const int TESTSTATUS_FAILED_JNI = 6; |
| |
| |
| bool StartReading(AMidiDevice* nativeReadDevice); |
| bool StartWriting(AMidiDevice* nativeWriteDevice); |
| }; |