• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
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 
17 #ifndef ANDROID_AAUDIO_AAUDIO_SERVICE_MESSAGE_H
18 #define ANDROID_AAUDIO_AAUDIO_SERVICE_MESSAGE_H
19 
20 #include <stdint.h>
21 
22 #include <aaudio/AAudio.h>
23 
24 namespace aaudio {
25 
26 // TODO move this to an "include" folder for the service.
27 
28 // Used to send information about the HAL to the client.
29 struct AAudioMessageTimestamp {
30     int64_t position;     // number of frames transferred so far
31     int64_t timestamp;    // time when that position was reached
32 };
33 
34 typedef enum aaudio_service_event_e : uint32_t {
35     AAUDIO_SERVICE_EVENT_STARTED,
36     AAUDIO_SERVICE_EVENT_PAUSED,
37     AAUDIO_SERVICE_EVENT_STOPPED,
38     AAUDIO_SERVICE_EVENT_FLUSHED,
39     AAUDIO_SERVICE_EVENT_CLOSED,
40     AAUDIO_SERVICE_EVENT_DISCONNECTED,
41     AAUDIO_SERVICE_EVENT_VOLUME
42 } aaudio_service_event_t;
43 
44 struct AAudioMessageEvent {
45     aaudio_service_event_t event;
46     double                 dataDouble;
47     int64_t                dataLong;
48 };
49 
50 typedef struct AAudioServiceMessage_s {
51     enum class code : uint32_t {
52         NOTHING,
53         TIMESTAMP_SERVICE, // when frame is read or written by the service to the client
54         TIMESTAMP_HARDWARE, // when frame is at DAC or ADC
55         EVENT,
56     };
57 
58     code what;
59     union {
60         AAudioMessageTimestamp timestamp; // what == TIMESTAMP
61         AAudioMessageEvent event;         // what == EVENT
62     };
63 } AAudioServiceMessage;
64 
65 } /* namespace aaudio */
66 
67 #endif //ANDROID_AAUDIO_AAUDIO_SERVICE_MESSAGE_H
68