Android-cuttlefish cvd tool
commands.h
Go to the documentation of this file.
1//
2// Copyright (C) 2020 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#pragma once
16
17#include <stdint.h>
18
19#include <vector>
20
22
23namespace cuttlefish {
24
26 public:
27 virtual ~AudioCommand();
28
29 AudioCommandType type() const { return type_; }
30 AudioStatus status() const { return status_; }
31
32 protected:
34
36
37 private:
40};
41
42template <typename R>
43class InfoCommand : public AudioCommand {
44 public:
45 InfoCommand(AudioCommandType type, uint32_t start_id, size_t count, R* reply)
49 info_reply_(reply) {}
50
51 uint32_t start_id() const { return start_id_; }
52 uint32_t count() const { return count_; }
53
54 protected:
55 R* info_reply() { return info_reply_; }
56
57 private:
58 const uint32_t start_id_;
59 const size_t count_;
61};
62
63class ChmapInfoCommand : public InfoCommand<virtio_snd_chmap_info> {
64 public:
65 ChmapInfoCommand(uint32_t start_id, size_t count,
66 virtio_snd_chmap_info* chmap_info);
67
69 const std::vector<virtio_snd_chmap_info>& reply);
70};
71
72class JackInfoCommand : public InfoCommand<virtio_snd_jack_info> {
73 public:
74 JackInfoCommand(uint32_t start_id, size_t count,
75 virtio_snd_jack_info* jack_info);
76
78 const std::vector<virtio_snd_jack_info>& reply);
79};
80
81class StreamInfoCommand : public InfoCommand<virtio_snd_pcm_info> {
82 public:
83 StreamInfoCommand(uint32_t start_id, size_t count,
84 virtio_snd_pcm_info* pcm_info);
85
86 void Reply(AudioStatus status, const std::vector<virtio_snd_pcm_info>& reply);
87};
88
89// Serves the START, STOP, PREPARE and RELEASE commands. It's also the
90// superclass of the class handling SET_PARAMS
92 public:
94
95 uint32_t stream_id() const { return stream_id_; }
96
98
99 private:
100 const uint32_t stream_id_;
101};
102
104 public:
106 uint32_t period_bytes, uint32_t features,
107 uint8_t channels, uint8_t format, uint8_t rate);
108
109 uint32_t buffer_bytes() const { return buffer_bytes_; }
110 uint32_t period_bytes() const { return period_bytes_; }
111 uint32_t features() const { return features_; }
112 uint8_t channels() const { return channels_; }
113 uint8_t format() const { return format_; }
114 uint8_t rate() const { return rate_; }
115
116 private:
117 const uint32_t buffer_bytes_;
118 const uint32_t period_bytes_;
119 const uint32_t features_;
120 const uint8_t channels_;
121 const uint8_t format_;
122 const uint8_t rate_;
123};
124
125} // namespace cuttlefish
Definition: commands.h:25
void MarkReplied(AudioStatus status)
Definition: commands.h:35
AudioStatus status_
Definition: commands.h:38
AudioStatus status() const
Definition: commands.h:30
AudioCommand(AudioCommandType type)
Definition: commands.h:33
AudioCommandType type() const
Definition: commands.h:29
virtual ~AudioCommand()
Definition: commands.cpp:28
const AudioCommandType type_
Definition: commands.h:39
Definition: commands.h:63
ChmapInfoCommand(uint32_t start_id, size_t count, virtio_snd_chmap_info *chmap_info)
Definition: commands.cpp:53
void Reply(AudioStatus status, const std::vector< virtio_snd_chmap_info > &reply)
Definition: commands.cpp:58
Definition: commands.h:43
R * info_reply()
Definition: commands.h:55
uint32_t start_id() const
Definition: commands.h:51
const size_t count_
Definition: commands.h:59
R * info_reply_
Definition: commands.h:60
InfoCommand(AudioCommandType type, uint32_t start_id, size_t count, R *reply)
Definition: commands.h:45
const uint32_t start_id_
Definition: commands.h:58
uint32_t count() const
Definition: commands.h:52
Definition: commands.h:72
void Reply(AudioStatus status, const std::vector< virtio_snd_jack_info > &reply)
Definition: commands.cpp:39
JackInfoCommand(uint32_t start_id, size_t count, virtio_snd_jack_info *jack_info)
Definition: commands.cpp:34
Definition: commands.h:81
void Reply(AudioStatus status, const std::vector< virtio_snd_pcm_info > &reply)
Definition: commands.cpp:83
StreamInfoCommand(uint32_t start_id, size_t count, virtio_snd_pcm_info *pcm_info)
Definition: commands.cpp:78
Definition: alloc_utils.cpp:23
AudioCommandType
Definition: shm_layout.h:23
AudioStatus
Definition: shm_layout.h:40
Definition: commands.h:91
void Reply(AudioStatus status)
Definition: commands.cpp:109
StreamControlCommand(AudioCommandType type, uint32_t stream_id)
Definition: commands.cpp:105
const uint32_t stream_id_
Definition: commands.h:100
uint32_t stream_id() const
Definition: commands.h:95
Definition: commands.h:103
const uint32_t period_bytes_
Definition: commands.h:118
uint8_t channels() const
Definition: commands.h:112
const uint32_t features_
Definition: commands.h:119
uint32_t period_bytes() const
Definition: commands.h:110
uint32_t buffer_bytes() const
Definition: commands.h:109
const uint8_t rate_
Definition: commands.h:122
uint8_t format() const
Definition: commands.h:113
uint32_t features() const
Definition: commands.h:111
const uint32_t buffer_bytes_
Definition: commands.h:117
const uint8_t channels_
Definition: commands.h:120
StreamSetParamsCommand(uint32_t stream_id, uint32_t buffer_bytes, uint32_t period_bytes, uint32_t features, uint8_t channels, uint8_t format, uint8_t rate)
Definition: commands.cpp:115
uint8_t rate() const
Definition: commands.h:114
const uint8_t format_
Definition: commands.h:121
Definition: shm_layout.h:176
Definition: shm_layout.h:165
Definition: shm_layout.h:183