1 /*
2  * Copyright (C) 2012 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License"); you may not
5  * use this file except in compliance with the License. You may obtain a copy of
6  * 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, WITHOUT
12  * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13  * License for the specific language governing permissions and limitations under
14  * the License.
15  */
16 
17 
18 #ifndef CTSAUDIO_TASKASYNC_H
19 #define CTSAUDIO_TASKASYNC_H
20 
21 #include "audio/AudioHardware.h"
22 #include "TaskGeneric.h"
23 
24 class TaskSequential;
25 /**
26  * Common parent class for TaskInput and TaskOutput
27  */
28 class TaskAsync: public TaskGeneric {
29 public:
30     explicit TaskAsync(TaskType type);
31     virtual ~TaskAsync();
32     virtual TaskGeneric::ExecutionResult run();
33     virtual bool parseAttribute(const android::String8& name, const android::String8& value);
34     virtual TaskGeneric::ExecutionResult start() = 0;
35     virtual TaskGeneric::ExecutionResult complete() = 0;
36 
isAsynchronous()37     bool isAsynchronous() {
38         return mAsynchronous;
39     }
40 
41 private:
makeAsynchronous()42     void makeAsynchronous() {
43         mAsynchronous = true;
44     }
45     TaskSequential* getParentSequential();
46 
47 protected:
48     android::String8 mId;
49     int mVolume;
50 
51     enum DeviceType {
52         EDeviceHost,
53         EDeviceDUT
54     };
55 
56     DeviceType mDeviceType;
57 
58     AudioHardware::AudioMode mMode;
59 
60 private:
61     bool mAsynchronous;
62 
63 };
64 
65 
66 
67 #endif // CTSAUDIO_TASKASYNC_H
68