summaryrefslogtreecommitdiff
path: root/cras/src/tests/rstream_stub.cc
blob: d0b7a0afd1b024f28f5896b1b281fe8d9ff1a11c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
/* Copyright 2017 The Chromium OS Authors. All rights reserved.
 * Use of this source code is governed by a BSD-style license that can be
 * found in the LICENSE file.
 */

#include <unordered_map>

extern "C" {
#include "cras_rstream.h"
}

namespace {

struct cb_data {
	std::unordered_map<unsigned int, unsigned int> dev_offset;
	int pending_reply;
};
std::unordered_map<const cras_rstream*, cb_data> data_map;

};

void rstream_stub_reset() {
  data_map.clear();
}

void rstream_stub_dev_offset(const cras_rstream* rstream,
                             unsigned int dev_id,
                             unsigned int offset) {
  auto data = data_map.find(rstream);
  if (data == data_map.end()) {
    cb_data new_data;
    new_data.dev_offset[dev_id] = offset;
    data_map.insert({rstream, new_data});
  } else {
    data->second.dev_offset[dev_id] = offset;
  }
}

void rstream_stub_pending_reply(const cras_rstream* rstream,
                                int ret_value) {
  auto data = data_map.find(rstream);
  if (data == data_map.end()) {
    cb_data new_data;
    new_data.pending_reply = ret_value;
    data_map.insert({rstream, new_data});
  } else {
    data->second.pending_reply = ret_value;
  }
}

extern "C" {

void cras_rstream_record_fetch_interval(struct cras_rstream *rstream,
                                        const struct timespec *now) {
}

void cras_rstream_dev_attach(struct cras_rstream *rstream,
                             unsigned int dev_id,
                             void *dev_ptr) {
}

void cras_rstream_dev_detach(struct cras_rstream *rstream, unsigned int dev_id) {
}

unsigned int cras_rstream_dev_offset(const struct cras_rstream *rstream,
                                     unsigned int dev_id) {
  auto elem = data_map.find(rstream);
  if (elem != data_map.end())
    return elem->second.dev_offset[dev_id];
  return 0;
}

void cras_rstream_dev_offset_update(struct cras_rstream *rstream,
                                    unsigned int frames,
                                    unsigned int dev_id) {
}

unsigned int cras_rstream_playable_frames(struct cras_rstream *rstream,
                                          unsigned int dev_id) {
  return 0;
}

float cras_rstream_get_volume_scaler(struct cras_rstream *rstream) {
  return 0.0;
}

int cras_rstream_get_mute(const struct cras_rstream *rstream) {
  return 0;
}

uint8_t *cras_rstream_get_readable_frames(struct cras_rstream *rstream,
                                          unsigned int offset,
                                          size_t *frames) {
  return NULL;
}

void cras_rstream_update_input_write_pointer(struct cras_rstream *rstream) {
}

void cras_rstream_update_output_read_pointer(struct cras_rstream *rstream) {
}

int cras_rstream_audio_ready(struct cras_rstream *stream, size_t count) {
  cras_shm_buffer_write_complete(&stream->shm);
  return 0;
}

int cras_rstream_request_audio(struct cras_rstream *stream,
                               const struct timespec *now) {
  return 0;
}

void cras_rstream_update_queued_frames(struct cras_rstream *rstream)
{
}

int cras_rstream_is_pending_reply(const struct cras_rstream *rstream)
{
  auto elem = data_map.find(rstream);
  if (elem != data_map.end())
    return elem->second.pending_reply;
  return 0;
}

int cras_rstream_flush_old_audio_messages(struct cras_rstream *rstream)
{
  return 0;
}

} // extern "C"