|  | /* | 
|  | *  Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. | 
|  | * | 
|  | *  Use of this source code is governed by a BSD-style license | 
|  | *  that can be found in the LICENSE file in the root of the source | 
|  | *  tree. An additional intellectual property rights grant can be found | 
|  | *  in the file PATENTS.  All contributing project authors may | 
|  | *  be found in the AUTHORS file in the root of the source tree. | 
|  | */ | 
|  |  | 
|  | #include <stdio.h> | 
|  | #include "webrtc/modules/audio_device/test/audio_device_test_defines.h" | 
|  | #include "webrtc/modules/audio_device/test/func_test_manager.h" | 
|  |  | 
|  | #ifndef __GNUC__ | 
|  | // Disable warning message 4996 ('scanf': This function or variable may be unsafe) | 
|  | #pragma warning( disable : 4996 ) | 
|  | #endif | 
|  |  | 
|  | using namespace webrtc; | 
|  |  | 
|  | int func_test(int); | 
|  |  | 
|  | // ---------------------------------------------------------------------------- | 
|  | //  main() | 
|  | // ---------------------------------------------------------------------------- | 
|  |  | 
|  | #if !defined(WEBRTC_IOS) | 
|  | int main(int /*argc*/, char* /*argv*/[]) | 
|  | { | 
|  | func_test(0); | 
|  | } | 
|  | #endif | 
|  |  | 
|  | // ---------------------------------------------------------------------------- | 
|  | //  func_test() | 
|  | // ---------------------------------------------------------------------------- | 
|  |  | 
|  | int func_test(int sel) | 
|  | { | 
|  | TEST_LOG("=========================================\n"); | 
|  | TEST_LOG("Func Test of the WebRtcAudioDevice Module\n"); | 
|  | TEST_LOG("=========================================\n\n"); | 
|  |  | 
|  | // Initialize the counters here to get rid of "unused variables" warnings. | 
|  | warningCount = 0; | 
|  |  | 
|  | FuncTestManager funcMgr; | 
|  |  | 
|  | funcMgr.Init(); | 
|  |  | 
|  | bool quit(false); | 
|  |  | 
|  | while (!quit) | 
|  | { | 
|  | TEST_LOG("---------------------------------------\n"); | 
|  | TEST_LOG("Select type of test\n\n"); | 
|  | TEST_LOG("  (0) Quit\n"); | 
|  | TEST_LOG("  (1) All\n"); | 
|  | TEST_LOG("- - - - - - - - - - - - - - - - - - - -\n"); | 
|  | TEST_LOG("  (2) Audio-layer selection\n"); | 
|  | TEST_LOG("  (3) Device enumeration\n"); | 
|  | TEST_LOG("  (4) Device selection\n"); | 
|  | TEST_LOG("  (5) Audio transport\n"); | 
|  | TEST_LOG("  (6) Speaker volume\n"); | 
|  | TEST_LOG("  (7) Microphone volume\n"); | 
|  | TEST_LOG("  (8) Speaker mute\n"); | 
|  | TEST_LOG("  (9) Microphone mute\n"); | 
|  | TEST_LOG(" (10) Microphone boost\n"); | 
|  | TEST_LOG(" (11) Microphone AGC\n"); | 
|  | TEST_LOG(" (12) Loopback measurements\n"); | 
|  | TEST_LOG(" (13) Device removal\n"); | 
|  | TEST_LOG(" (14) Advanced mobile device API\n"); | 
|  | TEST_LOG(" (66) XTEST\n"); | 
|  | TEST_LOG("- - - - - - - - - - - - - - - - - - - -\n"); | 
|  | TEST_LOG("\n: "); | 
|  |  | 
|  | int selection(0); | 
|  | enum TestType testType(TTInvalid); | 
|  |  | 
|  | SHOW_MENU: | 
|  |  | 
|  | if (sel > 0) | 
|  | { | 
|  | selection = sel; | 
|  | } | 
|  | else | 
|  | { | 
|  | if (scanf("%d", &selection) < 0) { | 
|  | perror("Failed to get selection."); | 
|  | } | 
|  | } | 
|  |  | 
|  | switch (selection) | 
|  | { | 
|  | case 0: | 
|  | quit = true; | 
|  | break; | 
|  | case 1: | 
|  | testType = TTAll; | 
|  | break; | 
|  | case 2: | 
|  | testType = TTAudioLayerSelection; | 
|  | break; | 
|  | case 3: | 
|  | testType = TTDeviceEnumeration; | 
|  | break; | 
|  | case 4: | 
|  | testType = TTDeviceSelection; | 
|  | break; | 
|  | case 5: | 
|  | testType = TTAudioTransport; | 
|  | break; | 
|  | case 6: | 
|  | testType = TTSpeakerVolume; | 
|  | break; | 
|  | case 7: | 
|  | testType = TTMicrophoneVolume; | 
|  | break; | 
|  | case 8: | 
|  | testType = TTSpeakerMute; | 
|  | break; | 
|  | case 9: | 
|  | testType = TTMicrophoneMute; | 
|  | break; | 
|  | case 10: | 
|  | testType = TTMicrophoneBoost; | 
|  | break; | 
|  | case 11: | 
|  | testType = TTMicrophoneAGC; | 
|  | break; | 
|  | case 12: | 
|  | testType = TTLoopback; | 
|  | break; | 
|  | case 13: | 
|  | testType = TTDeviceRemoval; | 
|  | break; | 
|  | case 14: | 
|  | testType = TTMobileAPI; | 
|  | break; | 
|  | case 66: | 
|  | testType = TTTest; | 
|  | break; | 
|  | default: | 
|  | testType = TTInvalid; | 
|  | TEST_LOG(": "); | 
|  | goto SHOW_MENU; | 
|  | break; | 
|  | } | 
|  |  | 
|  | funcMgr.DoTest(testType); | 
|  |  | 
|  | if (sel > 0) | 
|  | { | 
|  | quit = true; | 
|  | } | 
|  | } | 
|  |  | 
|  | funcMgr.Close(); | 
|  |  | 
|  | return 0; | 
|  | } |