summaryrefslogtreecommitdiff
path: root/cras/src/tests/alsa_io_unittest.cc
diff options
context:
space:
mode:
Diffstat (limited to 'cras/src/tests/alsa_io_unittest.cc')
-rw-r--r--cras/src/tests/alsa_io_unittest.cc1760
1 files changed, 913 insertions, 847 deletions
diff --git a/cras/src/tests/alsa_io_unittest.cc b/cras/src/tests/alsa_io_unittest.cc
index 2211f343..9a6b7f62 100644
--- a/cras/src/tests/alsa_io_unittest.cc
+++ b/cras/src/tests/alsa_io_unittest.cc
@@ -3,19 +3,18 @@
// found in the LICENSE file.
#include <gtest/gtest.h>
+#include <map>
#include <stdio.h>
#include <syslog.h>
-
-#include <map>
#include <vector>
extern "C" {
-#include "cras_alsa_mixer.h"
#include "cras_iodev.h"
#include "cras_shm.h"
#include "cras_system_state.h"
#include "cras_types.h"
+#include "cras_alsa_mixer.h"
// Include C file to test static functions.
#include "cras_alsa_io.c"
@@ -29,23 +28,23 @@ static int cras_iodev_append_stream_ret;
static int cras_alsa_get_avail_frames_ret;
static int cras_alsa_get_avail_frames_avail;
static int cras_alsa_start_called;
-static uint8_t* cras_alsa_mmap_begin_buffer;
+static uint8_t *cras_alsa_mmap_begin_buffer;
static size_t cras_alsa_mmap_begin_frames;
static size_t cras_alsa_fill_properties_called;
static size_t alsa_mixer_set_dBFS_called;
static int alsa_mixer_set_dBFS_value;
-static const struct mixer_control* alsa_mixer_set_dBFS_output;
+static const struct mixer_control *alsa_mixer_set_dBFS_output;
static size_t alsa_mixer_set_capture_dBFS_called;
static int alsa_mixer_set_capture_dBFS_value;
-static const struct mixer_control* alsa_mixer_set_capture_dBFS_input;
-static const struct mixer_control*
- cras_alsa_mixer_get_minimum_capture_gain_mixer_input;
-static const struct mixer_control*
- cras_alsa_mixer_get_maximum_capture_gain_mixer_input;
+static const struct mixer_control *alsa_mixer_set_capture_dBFS_input;
+static const struct mixer_control
+ *cras_alsa_mixer_get_minimum_capture_gain_mixer_input;
+static const struct mixer_control
+ *cras_alsa_mixer_get_maximum_capture_gain_mixer_input;
static size_t cras_alsa_mixer_list_outputs_called;
static size_t cras_alsa_mixer_list_inputs_called;
static size_t cras_alsa_mixer_get_control_for_section_called;
-static struct mixer_control*
+static struct mixer_control *
cras_alsa_mixer_get_control_for_section_return_value;
static size_t sys_get_volume_called;
static size_t sys_get_volume_return_value;
@@ -57,31 +56,31 @@ static size_t alsa_mixer_get_dB_range_called;
static long alsa_mixer_get_dB_range_value;
static size_t alsa_mixer_get_output_dB_range_called;
static long alsa_mixer_get_output_dB_range_value;
-static const struct mixer_control* alsa_mixer_set_mute_output;
+static const struct mixer_control *alsa_mixer_set_mute_output;
static size_t alsa_mixer_set_capture_mute_called;
static int alsa_mixer_set_capture_mute_value;
-static const struct mixer_control* alsa_mixer_set_capture_mute_input;
+static const struct mixer_control *alsa_mixer_set_capture_mute_input;
static size_t sys_get_mute_called;
static int sys_get_mute_return_value;
static size_t sys_get_capture_mute_called;
static int sys_get_capture_mute_return_value;
-static struct cras_alsa_mixer* fake_mixer = (struct cras_alsa_mixer*)1;
-static struct cras_card_config* fake_config = (struct cras_card_config*)2;
-static struct mixer_control** cras_alsa_mixer_list_outputs_outputs;
+static struct cras_alsa_mixer *fake_mixer = (struct cras_alsa_mixer *)1;
+static struct cras_card_config *fake_config = (struct cras_card_config *)2;
+static struct mixer_control **cras_alsa_mixer_list_outputs_outputs;
static size_t cras_alsa_mixer_list_outputs_outputs_length;
-static struct mixer_control** cras_alsa_mixer_list_inputs_outputs;
+static struct mixer_control **cras_alsa_mixer_list_inputs_outputs;
static size_t cras_alsa_mixer_list_inputs_outputs_length;
static size_t cras_alsa_mixer_set_output_active_state_called;
-static std::vector<struct mixer_control*>
+static std::vector<struct mixer_control *>
cras_alsa_mixer_set_output_active_state_outputs;
static std::vector<int> cras_alsa_mixer_set_output_active_state_values;
-static cras_audio_format* fake_format;
+static cras_audio_format *fake_format;
static size_t sys_set_volume_limits_called;
static size_t sys_set_capture_gain_limits_called;
static size_t cras_alsa_mixer_get_minimum_capture_gain_called;
static size_t cras_alsa_mixer_get_maximum_capture_gain_called;
-static struct mixer_control* cras_alsa_jack_get_mixer_output_ret;
-static struct mixer_control* cras_alsa_jack_get_mixer_input_ret;
+static struct mixer_control *cras_alsa_jack_get_mixer_output_ret;
+static struct mixer_control *cras_alsa_jack_get_mixer_input_ret;
static size_t cras_alsa_mixer_get_output_volume_curve_called;
typedef std::map<const struct mixer_control*, std::string> ControlNameMap;
static ControlNameMap cras_alsa_mixer_get_control_name_values;
@@ -89,37 +88,37 @@ static size_t cras_alsa_mixer_get_control_name_called;
static size_t cras_alsa_jack_list_create_called;
static size_t cras_alsa_jack_list_find_jacks_by_name_matching_called;
static size_t cras_alsa_jack_list_add_jack_for_section_called;
-static struct cras_alsa_jack*
+static struct cras_alsa_jack *
cras_alsa_jack_list_add_jack_for_section_result_jack;
static size_t cras_alsa_jack_list_destroy_called;
static int cras_alsa_jack_list_has_hctl_jacks_return_val;
-static jack_state_change_callback* cras_alsa_jack_list_create_cb;
-static void* cras_alsa_jack_list_create_cb_data;
+static jack_state_change_callback *cras_alsa_jack_list_create_cb;
+static void *cras_alsa_jack_list_create_cb_data;
static char test_card_name[] = "TestCard";
static char test_dev_name[] = "TestDev";
static char test_dev_id[] = "TestDevId";
static size_t cras_iodev_add_node_called;
-static struct cras_ionode* cras_iodev_set_node_plugged_ionode;
-static size_t cras_iodev_set_node_plugged_called;
-static int cras_iodev_set_node_plugged_value;
+static struct cras_ionode *cras_iodev_set_node_attr_ionode;
+static size_t cras_iodev_set_node_attr_called;
+static enum ionode_attr cras_iodev_set_node_attr_attr;
+static int cras_iodev_set_node_attr_value;
static unsigned cras_alsa_jack_enable_ucm_called;
static unsigned ucm_set_enabled_called;
static size_t cras_iodev_update_dsp_called;
-static const char* cras_iodev_update_dsp_name;
+static const char *cras_iodev_update_dsp_name;
static size_t ucm_get_dsp_name_default_called;
-static const char* ucm_get_dsp_name_default_value;
-typedef std::map<const char*, std::string> DspNameMap;
-static size_t ucm_get_dsp_name_for_dev_called;
-static DspNameMap ucm_get_dsp_name_for_dev_values;
+static const char *ucm_get_dsp_name_default_value;
+static size_t cras_alsa_jack_get_dsp_name_called;
+static const char *cras_alsa_jack_get_dsp_name_value;
static size_t cras_iodev_free_resources_called;
static size_t cras_alsa_jack_update_node_type_called;
static int ucm_swap_mode_exists_ret_value;
static int ucm_enable_swap_mode_ret_value;
static size_t ucm_enable_swap_mode_called;
static int is_utf8_string_ret_value;
-static const char* cras_alsa_jack_update_monitor_fake_name = 0;
+static const char *cras_alsa_jack_update_monitor_fake_name = 0;
static int cras_alsa_jack_get_name_called;
-static const char* cras_alsa_jack_get_name_ret_value = 0;
+static const char *cras_alsa_jack_get_name_ret_value = 0;
static char default_jack_name[] = "Something Jack";
static int auto_unplug_input_node_ret = 0;
static int auto_unplug_output_node_ret = 0;
@@ -134,11 +133,11 @@ static long cras_alsa_mixer_get_minimum_capture_gain_ret_value;
static long cras_alsa_mixer_get_maximum_capture_gain_ret_value;
static snd_pcm_state_t snd_pcm_state_ret;
static int cras_alsa_attempt_resume_called;
-static snd_hctl_t* fake_hctl = (snd_hctl_t*)2;
+static snd_hctl_t *fake_hctl = (snd_hctl_t *)2;
static size_t ucm_get_dma_period_for_dev_called;
static unsigned int ucm_get_dma_period_for_dev_ret;
static int cras_card_config_get_volume_curve_for_control_called;
-typedef std::map<std::string, struct cras_volume_curve*> VolCurveMap;
+typedef std::map<std::string, struct cras_volume_curve *> VolCurveMap;
static VolCurveMap cras_card_config_get_volume_curve_vals;
static int cras_alsa_mmap_get_whole_buffer_called;
static int cras_iodev_fill_odev_zeros_called;
@@ -148,13 +147,12 @@ static int cras_iodev_buffer_avail_ret;
static int cras_alsa_resume_appl_ptr_called;
static int cras_alsa_resume_appl_ptr_ahead;
static int ucm_get_enable_htimestamp_flag_ret;
-static const struct cras_volume_curve* fake_get_dBFS_volume_curve_val;
+static const struct cras_volume_curve *fake_get_dBFS_volume_curve_val;
static int cras_iodev_dsp_set_swap_mode_for_node_called;
static std::map<std::string, long> ucm_get_default_node_gain_values;
static thread_callback audio_thread_cb;
-static void* audio_thread_cb_data;
+static void *audio_thread_cb_data;
static int hotword_send_triggered_msg_called;
-static struct timespec clock_gettime_retspec;
void ResetStubData() {
cras_alsa_open_called = 0;
@@ -199,15 +197,15 @@ void ResetStubData() {
cras_alsa_jack_list_destroy_called = 0;
cras_alsa_jack_list_has_hctl_jacks_return_val = 1;
cras_iodev_add_node_called = 0;
- cras_iodev_set_node_plugged_called = 0;
+ cras_iodev_set_node_attr_called = 0;
cras_alsa_jack_enable_ucm_called = 0;
ucm_set_enabled_called = 0;
cras_iodev_update_dsp_called = 0;
cras_iodev_update_dsp_name = 0;
ucm_get_dsp_name_default_called = 0;
ucm_get_dsp_name_default_value = NULL;
- ucm_get_dsp_name_for_dev_called = 0;
- ucm_get_dsp_name_for_dev_values.clear();
+ cras_alsa_jack_get_dsp_name_called = 0;
+ cras_alsa_jack_get_dsp_name_value = NULL;
cras_iodev_free_resources_called = 0;
cras_alsa_jack_update_node_type_called = 0;
ucm_swap_mode_exists_ret_value = 0;
@@ -246,162 +244,169 @@ void ResetStubData() {
ucm_get_default_node_gain_values.clear();
}
-static long fake_get_dBFS(const struct cras_volume_curve* curve,
- size_t volume) {
+static long fake_get_dBFS(const struct cras_volume_curve *curve, size_t volume)
+{
fake_get_dBFS_volume_curve_val = curve;
return (volume - 100) * 100;
}
static cras_volume_curve default_curve = {
- .get_dBFS = fake_get_dBFS,
+ .get_dBFS = fake_get_dBFS,
};
-static struct cras_iodev* alsa_iodev_create_with_default_parameters(
+static struct cras_iodev *alsa_iodev_create_with_default_parameters(
size_t card_index,
- const char* dev_id,
+ const char *dev_id,
enum CRAS_ALSA_CARD_TYPE card_type,
int is_first,
- struct cras_alsa_mixer* mixer,
- struct cras_card_config* config,
- struct cras_use_case_mgr* ucm,
+ struct cras_alsa_mixer *mixer,
+ struct cras_card_config *config,
+ struct cras_use_case_mgr *ucm,
enum CRAS_STREAM_DIRECTION direction) {
- return alsa_iodev_create(card_index, test_card_name, 0, test_dev_name, dev_id,
- card_type, is_first, mixer, config, ucm, fake_hctl,
- direction, 0, 0, (char*)"123");
+ return alsa_iodev_create(card_index, test_card_name, 0, test_dev_name,
+ dev_id, card_type, is_first,
+ mixer, config, ucm, fake_hctl,
+ direction, 0, 0, (char *)"123");
}
namespace {
TEST(AlsaIoInit, InitializeInvalidDirection) {
- struct alsa_io* aio;
+ struct alsa_io *aio;
- aio = (struct alsa_io*)alsa_iodev_create_with_default_parameters(
+ aio = (struct alsa_io *)alsa_iodev_create_with_default_parameters(
0, NULL, ALSA_CARD_TYPE_INTERNAL, 0, fake_mixer, fake_config, NULL,
CRAS_NUM_DIRECTIONS);
- ASSERT_EQ(aio, (void*)NULL);
+ ASSERT_EQ(aio, (void *)NULL);
}
TEST(AlsaIoInit, InitializePlayback) {
- struct alsa_io* aio;
- struct cras_alsa_mixer* const fake_mixer = (struct cras_alsa_mixer*)2;
+ struct alsa_io *aio;
+ struct cras_alsa_mixer * const fake_mixer = (struct cras_alsa_mixer*)2;
ResetStubData();
- aio = (struct alsa_io*)alsa_iodev_create_with_default_parameters(
+ aio = (struct alsa_io *)alsa_iodev_create_with_default_parameters(
0, test_dev_id, ALSA_CARD_TYPE_INTERNAL, 1, fake_mixer, fake_config, NULL,
CRAS_STREAM_OUTPUT);
- ASSERT_EQ(0, alsa_iodev_legacy_complete_init((struct cras_iodev*)aio));
+ ASSERT_EQ(0, alsa_iodev_legacy_complete_init((struct cras_iodev *)aio));
/* Get volume curve twice for iodev, and default node. */
EXPECT_EQ(2, cras_card_config_get_volume_curve_for_control_called);
EXPECT_EQ(SND_PCM_STREAM_PLAYBACK, aio->alsa_stream);
EXPECT_EQ(0, cras_alsa_fill_properties_called);
EXPECT_EQ(1, cras_alsa_mixer_list_outputs_called);
- EXPECT_EQ(
- 0, strncmp(test_card_name, aio->base.info.name, strlen(test_card_name)));
+ EXPECT_EQ(0, strncmp(test_card_name,
+ aio->base.info.name,
+ strlen(test_card_name)));
EXPECT_EQ(0, ucm_get_dsp_name_default_called);
EXPECT_EQ(NULL, cras_iodev_update_dsp_name);
- ASSERT_NE(reinterpret_cast<const char*>(NULL), aio->dev_name);
+ ASSERT_NE(reinterpret_cast<const char *>(NULL), aio->dev_name);
EXPECT_EQ(0, strcmp(test_dev_name, aio->dev_name));
- ASSERT_NE(reinterpret_cast<const char*>(NULL), aio->dev_id);
+ ASSERT_NE(reinterpret_cast<const char *>(NULL), aio->dev_id);
EXPECT_EQ(0, strcmp(test_dev_id, aio->dev_id));
- alsa_iodev_destroy((struct cras_iodev*)aio);
+ alsa_iodev_destroy((struct cras_iodev *)aio);
EXPECT_EQ(1, cras_iodev_free_resources_called);
}
TEST(AlsaIoInit, DefaultNodeInternalCard) {
- struct alsa_io* aio;
- struct cras_alsa_mixer* const fake_mixer = (struct cras_alsa_mixer*)2;
+ struct alsa_io *aio;
+ struct cras_alsa_mixer * const fake_mixer = (struct cras_alsa_mixer*)2;
ResetStubData();
- aio = (struct alsa_io*)alsa_iodev_create_with_default_parameters(
+ aio = (struct alsa_io *)alsa_iodev_create_with_default_parameters(
0, NULL, ALSA_CARD_TYPE_INTERNAL, 0, fake_mixer, fake_config, NULL,
CRAS_STREAM_OUTPUT);
- ASSERT_EQ(0, alsa_iodev_legacy_complete_init((struct cras_iodev*)aio));
+ ASSERT_EQ(0, alsa_iodev_legacy_complete_init((struct cras_iodev *)aio));
EXPECT_EQ(2, cras_card_config_get_volume_curve_for_control_called);
- ASSERT_STREQ(DEFAULT, aio->base.active_node->name);
+ ASSERT_STREQ("(default)", aio->base.active_node->name);
ASSERT_EQ(1, aio->base.active_node->plugged);
- ASSERT_EQ((void*)no_stream, (void*)aio->base.no_stream);
- ASSERT_EQ((void*)is_free_running, (void*)aio->base.is_free_running);
- alsa_iodev_destroy((struct cras_iodev*)aio);
+ ASSERT_EQ((void *)no_stream, (void *)aio->base.no_stream);
+ ASSERT_EQ((void *)output_should_wake, (void *)aio->base.output_should_wake);
+ alsa_iodev_destroy((struct cras_iodev *)aio);
- aio = (struct alsa_io*)alsa_iodev_create_with_default_parameters(
+ aio = (struct alsa_io *)alsa_iodev_create_with_default_parameters(
0, NULL, ALSA_CARD_TYPE_INTERNAL, 1, fake_mixer, fake_config, NULL,
CRAS_STREAM_OUTPUT);
- ASSERT_EQ(0, alsa_iodev_legacy_complete_init((struct cras_iodev*)aio));
+ ASSERT_EQ(0, alsa_iodev_legacy_complete_init((struct cras_iodev *)aio));
EXPECT_EQ(4, cras_card_config_get_volume_curve_for_control_called);
- ASSERT_STREQ(INTERNAL_SPEAKER, aio->base.active_node->name);
+ ASSERT_STREQ("Speaker", aio->base.active_node->name);
ASSERT_EQ(1, aio->base.active_node->plugged);
- ASSERT_EQ((void*)no_stream, (void*)aio->base.no_stream);
- ASSERT_EQ((void*)is_free_running, (void*)aio->base.is_free_running);
- alsa_iodev_destroy((struct cras_iodev*)aio);
+ ASSERT_EQ((void *)no_stream, (void *)aio->base.no_stream);
+ ASSERT_EQ((void *)output_should_wake, (void *)aio->base.output_should_wake);
+ alsa_iodev_destroy((struct cras_iodev *)aio);
- aio = (struct alsa_io*)alsa_iodev_create_with_default_parameters(
+ aio = (struct alsa_io *)alsa_iodev_create_with_default_parameters(
0, NULL, ALSA_CARD_TYPE_INTERNAL, 0, fake_mixer, fake_config, NULL,
CRAS_STREAM_INPUT);
- ASSERT_EQ(0, alsa_iodev_legacy_complete_init((struct cras_iodev*)aio));
+ ASSERT_EQ(0, alsa_iodev_legacy_complete_init((struct cras_iodev *)aio));
/* No more call to get volume curve for input device. */
EXPECT_EQ(4, cras_card_config_get_volume_curve_for_control_called);
- ASSERT_STREQ(DEFAULT, aio->base.active_node->name);
+ ASSERT_STREQ("(default)", aio->base.active_node->name);
ASSERT_EQ(1, aio->base.active_node->plugged);
- ASSERT_EQ((void*)no_stream, (void*)aio->base.no_stream);
- ASSERT_EQ((void*)is_free_running, (void*)aio->base.is_free_running);
- alsa_iodev_destroy((struct cras_iodev*)aio);
+ ASSERT_EQ((void *)no_stream, (void *)aio->base.no_stream);
+ ASSERT_EQ((void *)output_should_wake, (void *)aio->base.output_should_wake);
+ alsa_iodev_destroy((struct cras_iodev *)aio);
- aio = (struct alsa_io*)alsa_iodev_create_with_default_parameters(
+ aio = (struct alsa_io *)alsa_iodev_create_with_default_parameters(
0, NULL, ALSA_CARD_TYPE_INTERNAL, 1, fake_mixer, fake_config, NULL,
CRAS_STREAM_INPUT);
- ASSERT_EQ(0, alsa_iodev_legacy_complete_init((struct cras_iodev*)aio));
+ ASSERT_EQ(0, alsa_iodev_legacy_complete_init((struct cras_iodev *)aio));
EXPECT_EQ(4, cras_card_config_get_volume_curve_for_control_called);
- ASSERT_STREQ(INTERNAL_MICROPHONE, aio->base.active_node->name);
+ ASSERT_STREQ("Internal Mic", aio->base.active_node->name);
ASSERT_EQ(1, aio->base.active_node->plugged);
- ASSERT_EQ((void*)no_stream, (void*)aio->base.no_stream);
- ASSERT_EQ((void*)is_free_running, (void*)aio->base.is_free_running);
- alsa_iodev_destroy((struct cras_iodev*)aio);
+ ASSERT_EQ((void *)no_stream, (void *)aio->base.no_stream);
+ ASSERT_EQ((void *)output_should_wake, (void *)aio->base.output_should_wake);
+ alsa_iodev_destroy((struct cras_iodev *)aio);
}
TEST(AlsaIoInit, DefaultNodeUSBCard) {
- struct alsa_io* aio;
- struct cras_alsa_mixer* const fake_mixer = (struct cras_alsa_mixer*)2;
+ struct alsa_io *aio;
+ struct cras_alsa_mixer * const fake_mixer = (struct cras_alsa_mixer*)2;
ResetStubData();
- aio = (struct alsa_io*)alsa_iodev_create_with_default_parameters(
+ aio = (struct alsa_io *)alsa_iodev_create_with_default_parameters(
0, NULL, ALSA_CARD_TYPE_USB, 1, fake_mixer, fake_config, NULL,
CRAS_STREAM_OUTPUT);
- ASSERT_EQ(0, alsa_iodev_legacy_complete_init((struct cras_iodev*)aio));
+ ASSERT_EQ(0, alsa_iodev_legacy_complete_init((struct cras_iodev *)aio));
EXPECT_EQ(2, cras_card_config_get_volume_curve_for_control_called);
- ASSERT_STREQ(DEFAULT, aio->base.active_node->name);
+ ASSERT_STREQ("(default)", aio->base.active_node->name);
ASSERT_EQ(1, aio->base.active_node->plugged);
- EXPECT_EQ(1, cras_iodev_set_node_plugged_called);
- alsa_iodev_destroy((struct cras_iodev*)aio);
+ EXPECT_EQ(1, cras_iodev_set_node_attr_called);
+ EXPECT_EQ(IONODE_ATTR_PLUGGED, cras_iodev_set_node_attr_attr);
+ EXPECT_EQ(1, cras_iodev_set_node_attr_value);
+ alsa_iodev_destroy((struct cras_iodev *)aio);
- aio = (struct alsa_io*)alsa_iodev_create_with_default_parameters(
+ aio = (struct alsa_io *)alsa_iodev_create_with_default_parameters(
0, NULL, ALSA_CARD_TYPE_USB, 1, fake_mixer, fake_config, NULL,
CRAS_STREAM_INPUT);
- ASSERT_EQ(0, alsa_iodev_legacy_complete_init((struct cras_iodev*)aio));
+ ASSERT_EQ(0, alsa_iodev_legacy_complete_init((struct cras_iodev *)aio));
EXPECT_EQ(2, cras_card_config_get_volume_curve_for_control_called);
- ASSERT_STREQ(DEFAULT, aio->base.active_node->name);
+ ASSERT_STREQ("(default)", aio->base.active_node->name);
ASSERT_EQ(1, aio->base.active_node->plugged);
- EXPECT_EQ(2, cras_iodev_set_node_plugged_called);
- alsa_iodev_destroy((struct cras_iodev*)aio);
+ EXPECT_EQ(2, cras_iodev_set_node_attr_called);
+ EXPECT_EQ(IONODE_ATTR_PLUGGED, cras_iodev_set_node_attr_attr);
+ EXPECT_EQ(1, cras_iodev_set_node_attr_value);
+ alsa_iodev_destroy((struct cras_iodev *)aio);
}
TEST(AlsaIoInit, OpenPlayback) {
- struct cras_iodev* iodev;
+ struct cras_iodev *iodev;
struct cras_audio_format format;
- struct alsa_io* aio;
+ struct alsa_io *aio;
ResetStubData();
- iodev = alsa_iodev_create_with_default_parameters(
- 0, NULL, ALSA_CARD_TYPE_INTERNAL, 0, fake_mixer, fake_config, NULL,
- CRAS_STREAM_OUTPUT);
+ iodev = alsa_iodev_create_with_default_parameters(0, NULL,
+ ALSA_CARD_TYPE_INTERNAL, 0,
+ fake_mixer, fake_config,
+ NULL, CRAS_STREAM_OUTPUT);
ASSERT_EQ(0, alsa_iodev_legacy_complete_init(iodev));
EXPECT_EQ(2, cras_card_config_get_volume_curve_for_control_called);
- aio = (struct alsa_io*)iodev;
+ aio = (struct alsa_io *)iodev;
format.frame_rate = 48000;
format.num_channels = 1;
cras_iodev_set_format(iodev, &format);
// Test that these flags are cleared after open_dev.
- aio->free_running = 1;
+ aio->is_free_running = 1;
aio->filled_zeros_for_draining = 512;
iodev->open_dev(iodev);
EXPECT_EQ(1, cras_alsa_open_called);
@@ -410,8 +415,8 @@ TEST(AlsaIoInit, OpenPlayback) {
EXPECT_EQ(1, sys_set_volume_limits_called);
EXPECT_EQ(1, alsa_mixer_set_dBFS_called);
EXPECT_EQ(0, cras_alsa_start_called);
- EXPECT_EQ(0, cras_iodev_set_node_plugged_called);
- EXPECT_EQ(0, aio->free_running);
+ EXPECT_EQ(0, cras_iodev_set_node_attr_called);
+ EXPECT_EQ(0, aio->is_free_running);
EXPECT_EQ(0, aio->filled_zeros_for_draining);
EXPECT_EQ(SEVERE_UNDERRUN_MS * format.frame_rate / 1000,
aio->severe_underrun_frames);
@@ -421,15 +426,16 @@ TEST(AlsaIoInit, OpenPlayback) {
}
TEST(AlsaIoInit, UsbCardAutoPlug) {
- struct cras_iodev* iodev;
+ struct cras_iodev *iodev;
ResetStubData();
- iodev = alsa_iodev_create_with_default_parameters(
- 0, NULL, ALSA_CARD_TYPE_INTERNAL, 1, fake_mixer, fake_config, NULL,
- CRAS_STREAM_OUTPUT);
+ iodev = alsa_iodev_create_with_default_parameters(0, NULL,
+ ALSA_CARD_TYPE_INTERNAL, 1,
+ fake_mixer, fake_config,
+ NULL, CRAS_STREAM_OUTPUT);
ASSERT_EQ(0, alsa_iodev_legacy_complete_init(iodev));
EXPECT_EQ(2, cras_card_config_get_volume_curve_for_control_called);
- EXPECT_EQ(0, cras_iodev_set_node_plugged_called);
+ EXPECT_EQ(0, cras_iodev_set_node_attr_called);
alsa_iodev_destroy(iodev);
ResetStubData();
@@ -438,7 +444,7 @@ TEST(AlsaIoInit, UsbCardAutoPlug) {
NULL, CRAS_STREAM_OUTPUT);
ASSERT_EQ(0, alsa_iodev_legacy_complete_init(iodev));
EXPECT_EQ(2, cras_card_config_get_volume_curve_for_control_called);
- EXPECT_EQ(0, cras_iodev_set_node_plugged_called);
+ EXPECT_EQ(0, cras_iodev_set_node_attr_called);
alsa_iodev_destroy(iodev);
ResetStubData();
@@ -448,13 +454,14 @@ TEST(AlsaIoInit, UsbCardAutoPlug) {
ASSERT_EQ(0, alsa_iodev_legacy_complete_init(iodev));
EXPECT_EQ(2, cras_card_config_get_volume_curve_for_control_called);
// Should assume USB devs are plugged when they appear.
- EXPECT_EQ(1, cras_iodev_set_node_plugged_called);
- EXPECT_EQ(1, iodev->active_node->plugged);
+ EXPECT_EQ(1, cras_iodev_set_node_attr_called);
+ EXPECT_EQ(IONODE_ATTR_PLUGGED, cras_iodev_set_node_attr_attr);
+ EXPECT_EQ(1, cras_iodev_set_node_attr_value);
alsa_iodev_destroy(iodev);
}
TEST(AlsaIoInit, UsbCardUseSoftwareVolume) {
- struct cras_iodev* iodev;
+ struct cras_iodev *iodev;
alsa_mixer_get_dB_range_value = 1000;
alsa_mixer_get_output_dB_range_value = 1000;
@@ -484,8 +491,8 @@ TEST(AlsaIoInit, UsbCardUseSoftwareVolume) {
}
TEST(AlsaIoInit, UseSoftwareGain) {
- struct cras_iodev* iodev;
- struct cras_use_case_mgr* const fake_ucm = (struct cras_use_case_mgr*)3;
+ struct cras_iodev *iodev;
+ struct cras_use_case_mgr * const fake_ucm = (struct cras_use_case_mgr*)3;
/* MaxSoftwareGain is specified in UCM */
ResetStubData();
@@ -493,9 +500,11 @@ TEST(AlsaIoInit, UseSoftwareGain) {
ucm_get_min_software_gain_value = 1;
ucm_get_max_software_gain_ret_value = 0;
ucm_get_max_software_gain_value = 2000;
- iodev = alsa_iodev_create_with_default_parameters(
- 0, NULL, ALSA_CARD_TYPE_INTERNAL, 1, fake_mixer, fake_config, fake_ucm,
- CRAS_STREAM_INPUT);
+ iodev = alsa_iodev_create_with_default_parameters(0, NULL,
+ ALSA_CARD_TYPE_INTERNAL, 1,
+ fake_mixer, fake_config,
+ fake_ucm,
+ CRAS_STREAM_INPUT);
ASSERT_EQ(0, alsa_iodev_legacy_complete_init(iodev));
EXPECT_EQ(1, iodev->active_node->software_volume_needed);
EXPECT_EQ(DEFAULT_MIN_CAPTURE_GAIN, iodev->active_node->min_software_gain);
@@ -503,7 +512,7 @@ TEST(AlsaIoInit, UseSoftwareGain) {
ASSERT_EQ(1, sys_set_capture_gain_limits_called);
/* The gain range is [DEFAULT_MIN_CAPTURE_GAIN, maximum software gain]. */
ASSERT_EQ(cras_system_set_capture_gain_limits_set_value[0],
- DEFAULT_MIN_CAPTURE_GAIN);
+ DEFAULT_MIN_CAPTURE_GAIN);
ASSERT_EQ(cras_system_set_capture_gain_limits_set_value[1], 2000);
alsa_iodev_destroy(iodev);
@@ -514,9 +523,11 @@ TEST(AlsaIoInit, UseSoftwareGain) {
ucm_get_min_software_gain_value = 1000;
ucm_get_max_software_gain_ret_value = 0;
ucm_get_max_software_gain_value = 2000;
- iodev = alsa_iodev_create_with_default_parameters(
- 0, NULL, ALSA_CARD_TYPE_INTERNAL, 1, fake_mixer, fake_config, fake_ucm,
- CRAS_STREAM_INPUT);
+ iodev = alsa_iodev_create_with_default_parameters(0, NULL,
+ ALSA_CARD_TYPE_INTERNAL, 1,
+ fake_mixer, fake_config,
+ fake_ucm,
+ CRAS_STREAM_INPUT);
ASSERT_EQ(0, alsa_iodev_legacy_complete_init(iodev));
EXPECT_EQ(1, iodev->active_node->software_volume_needed);
EXPECT_EQ(1000, iodev->active_node->min_software_gain);
@@ -534,9 +545,11 @@ TEST(AlsaIoInit, UseSoftwareGain) {
ucm_get_min_software_gain_value = 3000;
ucm_get_max_software_gain_ret_value = 0;
ucm_get_max_software_gain_value = 2000;
- iodev = alsa_iodev_create_with_default_parameters(
- 0, NULL, ALSA_CARD_TYPE_INTERNAL, 1, fake_mixer, fake_config, fake_ucm,
- CRAS_STREAM_INPUT);
+ iodev = alsa_iodev_create_with_default_parameters(0, NULL,
+ ALSA_CARD_TYPE_INTERNAL, 1,
+ fake_mixer, fake_config,
+ fake_ucm,
+ CRAS_STREAM_INPUT);
ASSERT_EQ(0, alsa_iodev_legacy_complete_init(iodev));
EXPECT_EQ(1, iodev->active_node->software_volume_needed);
EXPECT_EQ(DEFAULT_MIN_CAPTURE_GAIN, iodev->active_node->min_software_gain);
@@ -544,7 +557,7 @@ TEST(AlsaIoInit, UseSoftwareGain) {
ASSERT_EQ(1, sys_set_capture_gain_limits_called);
/* The gain range is [DEFAULT_MIN_CAPTURE_GAIN, maximum software gain]. */
ASSERT_EQ(cras_system_set_capture_gain_limits_set_value[0],
- DEFAULT_MIN_CAPTURE_GAIN);
+ DEFAULT_MIN_CAPTURE_GAIN);
ASSERT_EQ(cras_system_set_capture_gain_limits_set_value[1], 2000);
alsa_iodev_destroy(iodev);
@@ -555,9 +568,11 @@ TEST(AlsaIoInit, UseSoftwareGain) {
ucm_get_max_software_gain_value = 1;
cras_alsa_mixer_get_minimum_capture_gain_ret_value = -500;
cras_alsa_mixer_get_maximum_capture_gain_ret_value = 500;
- iodev = alsa_iodev_create_with_default_parameters(
- 0, NULL, ALSA_CARD_TYPE_INTERNAL, 1, fake_mixer, fake_config, fake_ucm,
- CRAS_STREAM_INPUT);
+ iodev = alsa_iodev_create_with_default_parameters(0, NULL,
+ ALSA_CARD_TYPE_INTERNAL, 1,
+ fake_mixer, fake_config,
+ fake_ucm,
+ CRAS_STREAM_INPUT);
ASSERT_EQ(0, alsa_iodev_legacy_complete_init(iodev));
EXPECT_EQ(0, iodev->active_node->software_volume_needed);
EXPECT_EQ(0, iodev->active_node->max_software_gain);
@@ -570,8 +585,8 @@ TEST(AlsaIoInit, UseSoftwareGain) {
}
TEST(AlsaIoInit, SoftwareGainWithDefaultNodeGain) {
- struct cras_iodev* iodev;
- struct cras_use_case_mgr* const fake_ucm = (struct cras_use_case_mgr*)3;
+ struct cras_iodev *iodev;
+ struct cras_use_case_mgr * const fake_ucm = (struct cras_use_case_mgr*)3;
long system_gain = 500;
long default_node_gain = -1000;
@@ -582,12 +597,14 @@ TEST(AlsaIoInit, SoftwareGainWithDefaultNodeGain) {
ucm_get_max_software_gain_value = 2000;
// Set default node gain to -1000 * 0.01 dB.
- ucm_get_default_node_gain_values[INTERNAL_MICROPHONE] = default_node_gain;
+ ucm_get_default_node_gain_values["Internal Mic"] = default_node_gain;
// Assume this is the first device so it gets internal mic node name.
- iodev = alsa_iodev_create_with_default_parameters(
- 0, NULL, ALSA_CARD_TYPE_INTERNAL, 1, fake_mixer, fake_config, fake_ucm,
- CRAS_STREAM_INPUT);
+ iodev = alsa_iodev_create_with_default_parameters(0, NULL,
+ ALSA_CARD_TYPE_INTERNAL, 1,
+ fake_mixer, fake_config,
+ fake_ucm,
+ CRAS_STREAM_INPUT);
ASSERT_EQ(0, alsa_iodev_legacy_complete_init(iodev));
// Gain on node is 300 * 0.01 dB.
@@ -602,15 +619,15 @@ TEST(AlsaIoInit, SoftwareGainWithDefaultNodeGain) {
}
TEST(AlsaIoInit, RouteBasedOnJackCallback) {
- struct alsa_io* aio;
- struct cras_alsa_mixer* const fake_mixer = (struct cras_alsa_mixer*)2;
+ struct alsa_io *aio;
+ struct cras_alsa_mixer * const fake_mixer = (struct cras_alsa_mixer*)2;
ResetStubData();
- aio = (struct alsa_io*)alsa_iodev_create_with_default_parameters(
+ aio = (struct alsa_io *)alsa_iodev_create_with_default_parameters(
0, NULL, ALSA_CARD_TYPE_INTERNAL, 1, fake_mixer, fake_config, NULL,
CRAS_STREAM_OUTPUT);
- ASSERT_NE(aio, (void*)NULL);
- ASSERT_EQ(0, alsa_iodev_legacy_complete_init((struct cras_iodev*)aio));
+ ASSERT_NE(aio, (void *)NULL);
+ ASSERT_EQ(0, alsa_iodev_legacy_complete_init((struct cras_iodev *)aio));
EXPECT_EQ(2, cras_card_config_get_volume_curve_for_control_called);
EXPECT_EQ(SND_PCM_STREAM_PLAYBACK, aio->alsa_stream);
EXPECT_EQ(0, cras_alsa_fill_properties_called);
@@ -620,26 +637,28 @@ TEST(AlsaIoInit, RouteBasedOnJackCallback) {
EXPECT_EQ(0, cras_alsa_jack_list_add_jack_for_section_called);
cras_alsa_jack_list_create_cb(NULL, 1, cras_alsa_jack_list_create_cb_data);
- EXPECT_EQ(1, cras_iodev_set_node_plugged_called);
- EXPECT_EQ(1, cras_iodev_set_node_plugged_value);
+ EXPECT_EQ(1, cras_iodev_set_node_attr_called);
+ EXPECT_EQ(IONODE_ATTR_PLUGGED, cras_iodev_set_node_attr_attr);
+ EXPECT_EQ(1, cras_iodev_set_node_attr_value);
cras_alsa_jack_list_create_cb(NULL, 0, cras_alsa_jack_list_create_cb_data);
- EXPECT_EQ(2, cras_iodev_set_node_plugged_called);
- EXPECT_EQ(0, cras_iodev_set_node_plugged_value);
+ EXPECT_EQ(2, cras_iodev_set_node_attr_called);
+ EXPECT_EQ(IONODE_ATTR_PLUGGED, cras_iodev_set_node_attr_attr);
+ EXPECT_EQ(0, cras_iodev_set_node_attr_value);
- alsa_iodev_destroy((struct cras_iodev*)aio);
+ alsa_iodev_destroy((struct cras_iodev *)aio);
EXPECT_EQ(1, cras_alsa_jack_list_destroy_called);
}
TEST(AlsaIoInit, RouteBasedOnInputJackCallback) {
- struct alsa_io* aio;
- struct cras_alsa_mixer* const fake_mixer = (struct cras_alsa_mixer*)2;
+ struct alsa_io *aio;
+ struct cras_alsa_mixer * const fake_mixer = (struct cras_alsa_mixer*)2;
ResetStubData();
- aio = (struct alsa_io*)alsa_iodev_create_with_default_parameters(
+ aio = (struct alsa_io *)alsa_iodev_create_with_default_parameters(
0, NULL, ALSA_CARD_TYPE_INTERNAL, 0, fake_mixer, fake_config, NULL,
CRAS_STREAM_INPUT);
- ASSERT_NE(aio, (void*)NULL);
- ASSERT_EQ(0, alsa_iodev_legacy_complete_init((struct cras_iodev*)aio));
+ ASSERT_NE(aio, (void *)NULL);
+ ASSERT_EQ(0, alsa_iodev_legacy_complete_init((struct cras_iodev *)aio));
EXPECT_EQ(SND_PCM_STREAM_CAPTURE, aio->alsa_stream);
EXPECT_EQ(0, cras_alsa_fill_properties_called);
@@ -648,44 +667,47 @@ TEST(AlsaIoInit, RouteBasedOnInputJackCallback) {
EXPECT_EQ(0, cras_alsa_jack_list_add_jack_for_section_called);
cras_alsa_jack_list_create_cb(NULL, 1, cras_alsa_jack_list_create_cb_data);
- EXPECT_EQ(1, cras_iodev_set_node_plugged_called);
- EXPECT_EQ(1, cras_iodev_set_node_plugged_value);
+ EXPECT_EQ(1, cras_iodev_set_node_attr_called);
+ EXPECT_EQ(IONODE_ATTR_PLUGGED, cras_iodev_set_node_attr_attr);
+ EXPECT_EQ(1, cras_iodev_set_node_attr_value);
cras_alsa_jack_list_create_cb(NULL, 0, cras_alsa_jack_list_create_cb_data);
- EXPECT_EQ(2, cras_iodev_set_node_plugged_called);
- EXPECT_EQ(0, cras_iodev_set_node_plugged_value);
+ EXPECT_EQ(2, cras_iodev_set_node_attr_called);
+ EXPECT_EQ(IONODE_ATTR_PLUGGED, cras_iodev_set_node_attr_attr);
+ EXPECT_EQ(0, cras_iodev_set_node_attr_value);
- alsa_iodev_destroy((struct cras_iodev*)aio);
+ alsa_iodev_destroy((struct cras_iodev *)aio);
EXPECT_EQ(1, cras_alsa_jack_list_destroy_called);
}
TEST(AlsaIoInit, InitializeCapture) {
- struct alsa_io* aio;
+ struct alsa_io *aio;
ResetStubData();
- aio = (struct alsa_io*)alsa_iodev_create_with_default_parameters(
+ aio = (struct alsa_io *)alsa_iodev_create_with_default_parameters(
0, NULL, ALSA_CARD_TYPE_INTERNAL, 1, fake_mixer, fake_config, NULL,
CRAS_STREAM_INPUT);
- ASSERT_NE(aio, (void*)NULL);
- ASSERT_EQ(0, alsa_iodev_legacy_complete_init((struct cras_iodev*)aio));
+ ASSERT_NE(aio, (void *)NULL);
+ ASSERT_EQ(0, alsa_iodev_legacy_complete_init((struct cras_iodev *)aio));
EXPECT_EQ(SND_PCM_STREAM_CAPTURE, aio->alsa_stream);
EXPECT_EQ(0, cras_alsa_fill_properties_called);
EXPECT_EQ(1, cras_alsa_mixer_list_inputs_called);
- alsa_iodev_destroy((struct cras_iodev*)aio);
+ alsa_iodev_destroy((struct cras_iodev *)aio);
}
TEST(AlsaIoInit, OpenCapture) {
- struct cras_iodev* iodev;
+ struct cras_iodev *iodev;
struct cras_audio_format format;
- struct alsa_io* aio;
+ struct alsa_io *aio;
- iodev = alsa_iodev_create_with_default_parameters(
- 0, NULL, ALSA_CARD_TYPE_INTERNAL, 0, fake_mixer, fake_config, NULL,
- CRAS_STREAM_INPUT);
+ iodev = alsa_iodev_create_with_default_parameters(0, NULL,
+ ALSA_CARD_TYPE_INTERNAL, 0,
+ fake_mixer, fake_config,
+ NULL, CRAS_STREAM_INPUT);
ASSERT_EQ(0, alsa_iodev_legacy_complete_init(iodev));
- aio = (struct alsa_io*)iodev;
+ aio = (struct alsa_io *)iodev;
format.frame_rate = 48000;
format.num_channels = 1;
cras_iodev_set_format(iodev, &format);
@@ -711,20 +733,22 @@ TEST(AlsaIoInit, OpenCapture) {
}
TEST(AlsaIoInit, OpenCaptureSetCaptureGainWithDefaultNodeGain) {
- struct cras_iodev* iodev;
+ struct cras_iodev *iodev;
struct cras_audio_format format;
- struct cras_use_case_mgr* const fake_ucm = (struct cras_use_case_mgr*)3;
+ struct cras_use_case_mgr * const fake_ucm = (struct cras_use_case_mgr*)3;
long system_gain = 2000;
long default_node_gain = -1000;
ResetStubData();
// Set default node gain to -1000 * 0.01 dB.
- ucm_get_default_node_gain_values[INTERNAL_MICROPHONE] = default_node_gain;
+ ucm_get_default_node_gain_values["Internal Mic"] = default_node_gain;
// Assume this is the first device so it gets internal mic node name.
- iodev = alsa_iodev_create_with_default_parameters(
- 0, NULL, ALSA_CARD_TYPE_INTERNAL, 1, fake_mixer, fake_config, fake_ucm,
- CRAS_STREAM_INPUT);
+ iodev = alsa_iodev_create_with_default_parameters(0, NULL,
+ ALSA_CARD_TYPE_INTERNAL, 1,
+ fake_mixer, fake_config,
+ fake_ucm,
+ CRAS_STREAM_INPUT);
ASSERT_EQ(0, alsa_iodev_legacy_complete_init(iodev));
cras_iodev_set_format(iodev, &format);
@@ -746,18 +770,20 @@ TEST(AlsaIoInit, OpenCaptureSetCaptureGainWithDefaultNodeGain) {
}
TEST(AlsaIoInit, OpenCaptureSetCaptureGainWithSoftwareGain) {
- struct cras_iodev* iodev;
+ struct cras_iodev *iodev;
struct cras_audio_format format;
- struct cras_use_case_mgr* const fake_ucm = (struct cras_use_case_mgr*)3;
+ struct cras_use_case_mgr * const fake_ucm = (struct cras_use_case_mgr*)3;
/* Meet the requirements of using software gain. */
ResetStubData();
ucm_get_max_software_gain_ret_value = 0;
ucm_get_max_software_gain_value = 2000;
- iodev = alsa_iodev_create_with_default_parameters(
- 0, NULL, ALSA_CARD_TYPE_INTERNAL, 0, fake_mixer, fake_config, fake_ucm,
- CRAS_STREAM_INPUT);
+ iodev = alsa_iodev_create_with_default_parameters(0, NULL,
+ ALSA_CARD_TYPE_INTERNAL, 0,
+ fake_mixer, fake_config,
+ fake_ucm,
+ CRAS_STREAM_INPUT);
ASSERT_EQ(0, alsa_iodev_legacy_complete_init(iodev));
format.frame_rate = 48000;
@@ -788,13 +814,15 @@ TEST(AlsaIoInit, OpenCaptureSetCaptureGainWithSoftwareGain) {
}
TEST(AlsaIoInit, UpdateActiveNode) {
- struct cras_iodev* iodev;
- struct cras_alsa_mixer* const fake_mixer = (struct cras_alsa_mixer*)2;
+ struct cras_iodev *iodev;
+ struct cras_alsa_mixer * const fake_mixer = (struct cras_alsa_mixer*)2;
ResetStubData();
- iodev = alsa_iodev_create_with_default_parameters(
- 0, NULL, ALSA_CARD_TYPE_INTERNAL, 0, fake_mixer, fake_config, NULL,
- CRAS_STREAM_OUTPUT);
+ iodev = alsa_iodev_create_with_default_parameters(0, NULL,
+ ALSA_CARD_TYPE_INTERNAL, 0,
+ fake_mixer, fake_config,
+ NULL,
+ CRAS_STREAM_OUTPUT);
ASSERT_EQ(0, alsa_iodev_legacy_complete_init(iodev));
EXPECT_EQ(2, cras_card_config_get_volume_curve_for_control_called);
@@ -804,13 +832,14 @@ TEST(AlsaIoInit, UpdateActiveNode) {
}
TEST(AlsaIoInit, StartDevice) {
- struct cras_iodev* iodev;
+ struct cras_iodev *iodev;
int rc;
ResetStubData();
- iodev = alsa_iodev_create_with_default_parameters(
- 0, NULL, ALSA_CARD_TYPE_INTERNAL, 0, NULL, fake_config, NULL,
- CRAS_STREAM_OUTPUT);
+ iodev = alsa_iodev_create_with_default_parameters(0, NULL,
+ ALSA_CARD_TYPE_INTERNAL, 0,
+ NULL, fake_config, NULL,
+ CRAS_STREAM_OUTPUT);
ASSERT_EQ(0, alsa_iodev_legacy_complete_init(iodev));
EXPECT_EQ(2, cras_card_config_get_volume_curve_for_control_called);
@@ -830,13 +859,14 @@ TEST(AlsaIoInit, StartDevice) {
}
TEST(AlsaIoInit, ResumeDevice) {
- struct cras_iodev* iodev;
+ struct cras_iodev *iodev;
int rc;
ResetStubData();
- iodev = alsa_iodev_create_with_default_parameters(
- 0, NULL, ALSA_CARD_TYPE_INTERNAL, 0, NULL, fake_config, NULL,
- CRAS_STREAM_OUTPUT);
+ iodev = alsa_iodev_create_with_default_parameters(0, NULL,
+ ALSA_CARD_TYPE_INTERNAL, 0,
+ NULL, fake_config, NULL,
+ CRAS_STREAM_OUTPUT);
ASSERT_EQ(0, alsa_iodev_legacy_complete_init(iodev));
EXPECT_EQ(2, cras_card_config_get_volume_curve_for_control_called);
@@ -850,123 +880,98 @@ TEST(AlsaIoInit, ResumeDevice) {
}
TEST(AlsaIoInit, DspNameDefault) {
- struct alsa_io* aio;
- struct cras_alsa_mixer* const fake_mixer = (struct cras_alsa_mixer*)2;
- struct cras_use_case_mgr* const fake_ucm = (struct cras_use_case_mgr*)3;
+ struct alsa_io *aio;
+ struct cras_alsa_mixer * const fake_mixer = (struct cras_alsa_mixer*)2;
+ struct cras_use_case_mgr * const fake_ucm = (struct cras_use_case_mgr*)3;
ResetStubData();
ucm_get_dsp_name_default_value = "hello";
- aio = (struct alsa_io*)alsa_iodev_create_with_default_parameters(
- 0, NULL, ALSA_CARD_TYPE_INTERNAL, 0, fake_mixer, fake_config, fake_ucm,
- CRAS_STREAM_OUTPUT);
- ASSERT_EQ(0, alsa_iodev_legacy_complete_init((struct cras_iodev*)aio));
- EXPECT_EQ(2, cras_card_config_get_volume_curve_for_control_called);
- EXPECT_EQ(SND_PCM_STREAM_PLAYBACK, aio->alsa_stream);
- EXPECT_EQ(1, ucm_get_dsp_name_for_dev_called);
- EXPECT_EQ(1, ucm_get_dsp_name_default_called);
- EXPECT_STREQ("hello", cras_iodev_update_dsp_name);
-
- alsa_iodev_destroy((struct cras_iodev*)aio);
-}
-
-TEST(AlsaIoInit, DspNameWithoutDefault) {
- struct alsa_io* aio;
- struct cras_alsa_mixer* const fake_mixer = (struct cras_alsa_mixer*)2;
- struct cras_use_case_mgr* const fake_ucm = (struct cras_use_case_mgr*)3;
-
- ResetStubData();
- ucm_get_dsp_name_default_value = NULL;
- ucm_get_dsp_name_for_dev_values[DEFAULT] = "hello";
- aio = (struct alsa_io*)alsa_iodev_create_with_default_parameters(
+ aio = (struct alsa_io *)alsa_iodev_create_with_default_parameters(
0, NULL, ALSA_CARD_TYPE_INTERNAL, 0, fake_mixer, fake_config, fake_ucm,
CRAS_STREAM_OUTPUT);
- ASSERT_EQ(0, alsa_iodev_legacy_complete_init((struct cras_iodev*)aio));
+ ASSERT_EQ(0, alsa_iodev_legacy_complete_init((struct cras_iodev *)aio));
EXPECT_EQ(2, cras_card_config_get_volume_curve_for_control_called);
EXPECT_EQ(SND_PCM_STREAM_PLAYBACK, aio->alsa_stream);
- EXPECT_EQ(1, ucm_get_dsp_name_for_dev_called);
EXPECT_EQ(1, ucm_get_dsp_name_default_called);
+ EXPECT_EQ(1, cras_alsa_jack_get_dsp_name_called);
EXPECT_STREQ("hello", cras_iodev_update_dsp_name);
- alsa_iodev_destroy((struct cras_iodev*)aio);
+ alsa_iodev_destroy((struct cras_iodev *)aio);
}
TEST(AlsaIoInit, DspNameJackOverride) {
- struct alsa_io* aio;
- struct cras_alsa_mixer* const fake_mixer = (struct cras_alsa_mixer*)2;
- struct cras_use_case_mgr* const fake_ucm = (struct cras_use_case_mgr*)3;
- const struct cras_alsa_jack* jack = (struct cras_alsa_jack*)4;
- static const char* jack_name = "jack";
+ struct alsa_io *aio;
+ struct cras_alsa_mixer * const fake_mixer = (struct cras_alsa_mixer*)2;
+ struct cras_use_case_mgr * const fake_ucm = (struct cras_use_case_mgr*)3;
+ const struct cras_alsa_jack *jack = (struct cras_alsa_jack*)4;
ResetStubData();
ucm_get_dsp_name_default_value = "default_dsp";
- aio = (struct alsa_io*)alsa_iodev_create_with_default_parameters(
+ cras_alsa_jack_get_dsp_name_value = "override_dsp";
+ aio = (struct alsa_io *)alsa_iodev_create_with_default_parameters(
0, NULL, ALSA_CARD_TYPE_INTERNAL, 0, fake_mixer, fake_config, fake_ucm,
CRAS_STREAM_OUTPUT);
- ASSERT_EQ(0, alsa_iodev_legacy_complete_init((struct cras_iodev*)aio));
+ ASSERT_EQ(0, alsa_iodev_legacy_complete_init((struct cras_iodev *)aio));
EXPECT_EQ(SND_PCM_STREAM_PLAYBACK, aio->alsa_stream);
- EXPECT_EQ(1, ucm_get_dsp_name_for_dev_called);
EXPECT_EQ(1, ucm_get_dsp_name_default_called);
+ EXPECT_EQ(1, cras_alsa_jack_get_dsp_name_called);
EXPECT_EQ(1, cras_iodev_update_dsp_called);
EXPECT_STREQ("default_dsp", cras_iodev_update_dsp_name);
- cras_alsa_jack_get_name_ret_value = jack_name;
- ucm_get_dsp_name_for_dev_values[jack_name] = "override_dsp";
// Add the jack node.
cras_alsa_jack_list_create_cb(jack, 1, cras_alsa_jack_list_create_cb_data);
- EXPECT_EQ(2, cras_alsa_jack_get_name_called);
- EXPECT_EQ(2, ucm_get_dsp_name_for_dev_called);
EXPECT_EQ(1, ucm_get_dsp_name_default_called);
// Mark the jack node as active.
alsa_iodev_set_active_node(&aio->base, aio->base.nodes->next, 1);
- EXPECT_EQ(2, ucm_get_dsp_name_for_dev_called);
+ EXPECT_EQ(2, cras_alsa_jack_get_dsp_name_called);
EXPECT_EQ(2, cras_iodev_update_dsp_called);
EXPECT_STREQ("override_dsp", cras_iodev_update_dsp_name);
// Mark the default node as active.
alsa_iodev_set_active_node(&aio->base, aio->base.nodes, 1);
EXPECT_EQ(1, ucm_get_dsp_name_default_called);
- EXPECT_EQ(2, ucm_get_dsp_name_for_dev_called);
+ EXPECT_EQ(3, cras_alsa_jack_get_dsp_name_called);
EXPECT_EQ(3, cras_iodev_update_dsp_called);
EXPECT_STREQ("default_dsp", cras_iodev_update_dsp_name);
- alsa_iodev_destroy((struct cras_iodev*)aio);
+ alsa_iodev_destroy((struct cras_iodev *)aio);
}
TEST(AlsaIoInit, NodeTypeOverride) {
- struct alsa_io* aio;
- struct cras_alsa_mixer* const fake_mixer = (struct cras_alsa_mixer*)2;
- struct cras_use_case_mgr* const fake_ucm = (struct cras_use_case_mgr*)3;
- const struct cras_alsa_jack* jack = (struct cras_alsa_jack*)4;
+ struct alsa_io *aio;
+ struct cras_alsa_mixer * const fake_mixer = (struct cras_alsa_mixer*)2;
+ struct cras_use_case_mgr * const fake_ucm = (struct cras_use_case_mgr*)3;
+ const struct cras_alsa_jack *jack = (struct cras_alsa_jack*)4;
ResetStubData();
- aio = (struct alsa_io*)alsa_iodev_create_with_default_parameters(
+ aio = (struct alsa_io *)alsa_iodev_create_with_default_parameters(
0, NULL, ALSA_CARD_TYPE_INTERNAL, 0, fake_mixer, fake_config, fake_ucm,
CRAS_STREAM_OUTPUT);
- ASSERT_EQ(0, alsa_iodev_legacy_complete_init((struct cras_iodev*)aio));
+ ASSERT_EQ(0, alsa_iodev_legacy_complete_init((struct cras_iodev *)aio));
// Add the jack node.
cras_alsa_jack_list_create_cb(jack, 1, cras_alsa_jack_list_create_cb_data);
// Verify that cras_alsa_jack_update_node_type is called when an output device
// is created.
EXPECT_EQ(1, cras_alsa_jack_update_node_type_called);
- alsa_iodev_destroy((struct cras_iodev*)aio);
+ alsa_iodev_destroy((struct cras_iodev *)aio);
}
TEST(AlsaIoInit, SwapMode) {
- struct alsa_io* aio;
- struct cras_alsa_mixer* const fake_mixer = (struct cras_alsa_mixer*)2;
- struct cras_use_case_mgr* const fake_ucm = (struct cras_use_case_mgr*)3;
- struct cras_ionode* const fake_node =
- (cras_ionode*)calloc(1, sizeof(struct cras_ionode));
+ struct alsa_io *aio;
+ struct cras_alsa_mixer * const fake_mixer = (struct cras_alsa_mixer*)2;
+ struct cras_use_case_mgr * const fake_ucm = (struct cras_use_case_mgr*)3;
+ struct cras_ionode * const fake_node = (cras_ionode *)calloc(
+ 1, sizeof(struct cras_ionode));
ResetStubData();
// Stub replies that swap mode does not exist.
ucm_swap_mode_exists_ret_value = 0;
- aio = (struct alsa_io*)alsa_iodev_create_with_default_parameters(
+ aio = (struct alsa_io *)alsa_iodev_create_with_default_parameters(
0, NULL, ALSA_CARD_TYPE_INTERNAL, 0, fake_mixer, fake_config, fake_ucm,
CRAS_STREAM_OUTPUT);
- ASSERT_EQ(0, alsa_iodev_legacy_complete_init((struct cras_iodev*)aio));
+ ASSERT_EQ(0, alsa_iodev_legacy_complete_init((struct cras_iodev *)aio));
aio->base.set_swap_mode_for_node((cras_iodev*)aio, fake_node, 1);
/* Swap mode is implemented by dsp. */
@@ -974,12 +979,12 @@ TEST(AlsaIoInit, SwapMode) {
// Stub replies that swap mode exists.
ucm_swap_mode_exists_ret_value = 1;
- alsa_iodev_destroy((struct cras_iodev*)aio);
+ alsa_iodev_destroy((struct cras_iodev *)aio);
- aio = (struct alsa_io*)alsa_iodev_create_with_default_parameters(
+ aio = (struct alsa_io *)alsa_iodev_create_with_default_parameters(
0, NULL, ALSA_CARD_TYPE_INTERNAL, 0, fake_mixer, fake_config, fake_ucm,
CRAS_STREAM_OUTPUT);
- ASSERT_EQ(0, alsa_iodev_legacy_complete_init((struct cras_iodev*)aio));
+ ASSERT_EQ(0, alsa_iodev_legacy_complete_init((struct cras_iodev *)aio));
// Enable swap mode.
aio->base.set_swap_mode_for_node((cras_iodev*)aio, fake_node, 1);
@@ -987,33 +992,33 @@ TEST(AlsaIoInit, SwapMode) {
// swap mode is called.
EXPECT_EQ(1, ucm_enable_swap_mode_called);
- alsa_iodev_destroy((struct cras_iodev*)aio);
+ alsa_iodev_destroy((struct cras_iodev *)aio);
free(fake_node);
}
// Test that system settins aren't touched if no streams active.
TEST(AlsaOutputNode, SystemSettingsWhenInactive) {
int rc;
- struct alsa_io* aio;
- struct cras_alsa_mixer* const fake_mixer = (struct cras_alsa_mixer*)2;
- struct mixer_control* outputs[2];
+ struct alsa_io *aio;
+ struct cras_alsa_mixer * const fake_mixer = (struct cras_alsa_mixer*)2;
+ struct mixer_control *outputs[2];
ResetStubData();
- outputs[0] = reinterpret_cast<struct mixer_control*>(3);
- outputs[1] = reinterpret_cast<struct mixer_control*>(4);
+ outputs[0] = reinterpret_cast<struct mixer_control *>(3);
+ outputs[1] = reinterpret_cast<struct mixer_control *>(4);
cras_alsa_mixer_list_outputs_outputs = outputs;
cras_alsa_mixer_list_outputs_outputs_length = ARRAY_SIZE(outputs);
- aio = (struct alsa_io*)alsa_iodev_create_with_default_parameters(
+ aio = (struct alsa_io *)alsa_iodev_create_with_default_parameters(
0, NULL, ALSA_CARD_TYPE_INTERNAL, 1, fake_mixer, fake_config, NULL,
CRAS_STREAM_OUTPUT);
- ASSERT_EQ(0, alsa_iodev_legacy_complete_init((struct cras_iodev*)aio));
+ ASSERT_EQ(0, alsa_iodev_legacy_complete_init((struct cras_iodev *)aio));
/* Two mixer controls calls get volume curve. */
EXPECT_EQ(4, cras_card_config_get_volume_curve_for_control_called);
EXPECT_EQ(SND_PCM_STREAM_PLAYBACK, aio->alsa_stream);
EXPECT_EQ(1, cras_alsa_mixer_list_outputs_called);
ResetStubData();
- rc = alsa_iodev_set_active_node((struct cras_iodev*)aio,
+ rc = alsa_iodev_set_active_node((struct cras_iodev *)aio,
aio->base.nodes->next, 1);
EXPECT_EQ(0, rc);
EXPECT_EQ(0, alsa_mixer_set_mute_called);
@@ -1028,36 +1033,36 @@ TEST(AlsaOutputNode, SystemSettingsWhenInactive) {
EXPECT_EQ(0, cras_alsa_jack_enable_ucm_called);
EXPECT_EQ(0, ucm_set_enabled_called);
- alsa_iodev_destroy((struct cras_iodev*)aio);
+ alsa_iodev_destroy((struct cras_iodev *)aio);
}
// Test handling of different amounts of outputs.
TEST(AlsaOutputNode, TwoOutputs) {
int rc;
- struct alsa_io* aio;
- struct cras_alsa_mixer* const fake_mixer = (struct cras_alsa_mixer*)2;
- struct mixer_control* outputs[2];
+ struct alsa_io *aio;
+ struct cras_alsa_mixer * const fake_mixer = (struct cras_alsa_mixer*)2;
+ struct mixer_control *outputs[2];
ResetStubData();
- outputs[0] = reinterpret_cast<struct mixer_control*>(3);
- outputs[1] = reinterpret_cast<struct mixer_control*>(4);
+ outputs[0] = reinterpret_cast<struct mixer_control *>(3);
+ outputs[1] = reinterpret_cast<struct mixer_control *>(4);
cras_alsa_mixer_list_outputs_outputs = outputs;
cras_alsa_mixer_list_outputs_outputs_length = ARRAY_SIZE(outputs);
- aio = (struct alsa_io*)alsa_iodev_create_with_default_parameters(
+ aio = (struct alsa_io *)alsa_iodev_create_with_default_parameters(
0, NULL, ALSA_CARD_TYPE_INTERNAL, 1, fake_mixer, fake_config, NULL,
CRAS_STREAM_OUTPUT);
- ASSERT_EQ(0, alsa_iodev_legacy_complete_init((struct cras_iodev*)aio));
+ ASSERT_EQ(0, alsa_iodev_legacy_complete_init((struct cras_iodev *)aio));
EXPECT_EQ(4, cras_card_config_get_volume_curve_for_control_called);
EXPECT_EQ(SND_PCM_STREAM_PLAYBACK, aio->alsa_stream);
EXPECT_EQ(1, cras_alsa_mixer_list_outputs_called);
- aio->handle = (snd_pcm_t*)0x24;
+ aio->handle = (snd_pcm_t *)0x24;
ResetStubData();
- rc = alsa_iodev_set_active_node((struct cras_iodev*)aio,
+ rc = alsa_iodev_set_active_node((struct cras_iodev *)aio,
aio->base.nodes->next, 1);
EXPECT_EQ(0, rc);
- EXPECT_EQ(1, alsa_mixer_set_mute_called);
+ EXPECT_EQ(2, alsa_mixer_set_mute_called);
EXPECT_EQ(outputs[1], alsa_mixer_set_mute_output);
EXPECT_EQ(1, alsa_mixer_set_dBFS_called);
EXPECT_EQ(outputs[1], alsa_mixer_set_dBFS_output);
@@ -1071,46 +1076,46 @@ TEST(AlsaOutputNode, TwoOutputs) {
EXPECT_EQ(0, cras_alsa_jack_enable_ucm_called);
EXPECT_EQ(0, ucm_set_enabled_called);
- alsa_iodev_destroy((struct cras_iodev*)aio);
+ alsa_iodev_destroy((struct cras_iodev *)aio);
}
TEST(AlsaOutputNode, TwoJacksHeadphoneLineout) {
- struct alsa_io* aio;
- struct cras_alsa_mixer* const fake_mixer = (struct cras_alsa_mixer*)2;
- struct cras_use_case_mgr* const fake_ucm = (struct cras_use_case_mgr*)3;
- struct cras_iodev* iodev;
- struct mixer_control* output;
- struct ucm_section* section;
+ struct alsa_io *aio;
+ struct cras_alsa_mixer * const fake_mixer = (struct cras_alsa_mixer *)2;
+ struct cras_use_case_mgr * const fake_ucm = (struct cras_use_case_mgr *)3;
+ struct cras_iodev *iodev;
+ struct mixer_control *output;
+ struct ucm_section *section;
ResetStubData();
- output = reinterpret_cast<struct mixer_control*>(3);
- cras_alsa_mixer_get_control_name_values[output] = HEADPHONE;
+ output = reinterpret_cast<struct mixer_control *>(3);
+ cras_alsa_mixer_get_control_name_values[output] = "Headphone";
// Create the iodev
iodev = alsa_iodev_create_with_default_parameters(
0, NULL, ALSA_CARD_TYPE_INTERNAL, 1, fake_mixer, fake_config, fake_ucm,
CRAS_STREAM_OUTPUT);
- ASSERT_NE(iodev, (void*)NULL);
- aio = reinterpret_cast<struct alsa_io*>(iodev);
+ ASSERT_NE(iodev, (void *)NULL);
+ aio = reinterpret_cast<struct alsa_io *>(iodev);
EXPECT_EQ(1, cras_card_config_get_volume_curve_for_control_called);
// First node 'Headphone'
- section =
- ucm_section_create(HEADPHONE, 0, CRAS_STREAM_OUTPUT, "fake-jack", "gpio");
- ucm_section_set_mixer_name(section, HEADPHONE);
+ section = ucm_section_create("Headphone", 0, CRAS_STREAM_OUTPUT,
+ "fake-jack", "gpio");
+ ucm_section_set_mixer_name(section, "Headphone");
cras_alsa_jack_list_add_jack_for_section_result_jack =
- reinterpret_cast<struct cras_alsa_jack*>(10);
+ reinterpret_cast<struct cras_alsa_jack *>(10);
cras_alsa_mixer_get_control_for_section_return_value = output;
ASSERT_EQ(0, alsa_iodev_ucm_add_nodes_and_jacks(iodev, section));
EXPECT_EQ(4, cras_card_config_get_volume_curve_for_control_called);
ucm_section_free_list(section);
// Second node 'Line Out'
- section = ucm_section_create("Line Out", 0, CRAS_STREAM_OUTPUT, "fake-jack",
- "gpio");
- ucm_section_set_mixer_name(section, HEADPHONE);
+ section = ucm_section_create("Line Out", 0, CRAS_STREAM_OUTPUT,
+ "fake-jack", "gpio");
+ ucm_section_set_mixer_name(section, "Headphone");
cras_alsa_jack_list_add_jack_for_section_result_jack =
- reinterpret_cast<struct cras_alsa_jack*>(20);
+ reinterpret_cast<struct cras_alsa_jack *>(20);
cras_alsa_mixer_get_control_for_section_return_value = output;
ASSERT_EQ(0, alsa_iodev_ucm_add_nodes_and_jacks(iodev, section));
EXPECT_EQ(7, cras_card_config_get_volume_curve_for_control_called);
@@ -1119,56 +1124,58 @@ TEST(AlsaOutputNode, TwoJacksHeadphoneLineout) {
// Both nodes are associated with the same mixer output. Different jack plug
// report should trigger different node attribute change.
cras_alsa_jack_get_mixer_output_ret = output;
- jack_output_plug_event(reinterpret_cast<struct cras_alsa_jack*>(10), 0, aio);
- EXPECT_STREQ(cras_iodev_set_node_plugged_ionode->name, HEADPHONE);
+ jack_output_plug_event(reinterpret_cast<struct cras_alsa_jack *>(10), 0, aio);
+ EXPECT_STREQ(cras_iodev_set_node_attr_ionode->name, "Headphone");
- jack_output_plug_event(reinterpret_cast<struct cras_alsa_jack*>(20), 0, aio);
- EXPECT_STREQ(cras_iodev_set_node_plugged_ionode->name, "Line Out");
+ jack_output_plug_event(reinterpret_cast<struct cras_alsa_jack *>(20), 0, aio);
+ EXPECT_STREQ(cras_iodev_set_node_attr_ionode->name, "Line Out");
alsa_iodev_destroy(iodev);
}
TEST(AlsaOutputNode, OutputsFromUCM) {
- struct alsa_io* aio;
- struct cras_alsa_mixer* const fake_mixer = (struct cras_alsa_mixer*)2;
- struct cras_use_case_mgr* const fake_ucm = (struct cras_use_case_mgr*)3;
- struct cras_iodev* iodev;
- static const char* jack_name = "TestCard - Headset Jack";
- struct mixer_control* outputs[2];
+ struct alsa_io *aio;
+ struct cras_alsa_mixer * const fake_mixer = (struct cras_alsa_mixer*)2;
+ struct cras_use_case_mgr * const fake_ucm = (struct cras_use_case_mgr*)3;
+ struct cras_iodev *iodev;
+ static const char *jack_name = "TestCard - Headset Jack";
+ struct mixer_control *outputs[2];
int rc;
- struct ucm_section* section;
+ struct ucm_section *section;
ResetStubData();
- outputs[0] = reinterpret_cast<struct mixer_control*>(3);
- outputs[1] = reinterpret_cast<struct mixer_control*>(4);
+ outputs[0] = reinterpret_cast<struct mixer_control *>(3);
+ outputs[1] = reinterpret_cast<struct mixer_control *>(4);
cras_alsa_mixer_list_outputs_outputs = outputs;
cras_alsa_mixer_list_outputs_outputs_length = ARRAY_SIZE(outputs);
cras_alsa_mixer_get_control_name_values[outputs[0]] = INTERNAL_SPEAKER;
- cras_alsa_mixer_get_control_name_values[outputs[1]] = HEADPHONE;
+ cras_alsa_mixer_get_control_name_values[outputs[1]] = "Headphone";
ucm_get_dma_period_for_dev_ret = 1000;
// Create the IO device.
- iodev = alsa_iodev_create_with_default_parameters(
- 0, NULL, ALSA_CARD_TYPE_INTERNAL, 1, fake_mixer, fake_config, fake_ucm,
- CRAS_STREAM_OUTPUT);
- ASSERT_NE(iodev, (void*)NULL);
- aio = reinterpret_cast<struct alsa_io*>(iodev);
+ iodev = alsa_iodev_create_with_default_parameters(0, NULL,
+ ALSA_CARD_TYPE_INTERNAL, 1,
+ fake_mixer, fake_config,
+ fake_ucm,
+ CRAS_STREAM_OUTPUT);
+ ASSERT_NE(iodev, (void *)NULL);
+ aio = reinterpret_cast<struct alsa_io *>(iodev);
EXPECT_EQ(1, cras_card_config_get_volume_curve_for_control_called);
// First node.
- section =
- ucm_section_create(INTERNAL_SPEAKER, 0, CRAS_STREAM_OUTPUT, NULL, NULL);
+ section = ucm_section_create(INTERNAL_SPEAKER, 0, CRAS_STREAM_OUTPUT,
+ NULL, NULL);
ucm_section_set_mixer_name(section, INTERNAL_SPEAKER);
cras_alsa_jack_list_add_jack_for_section_result_jack =
- reinterpret_cast<struct cras_alsa_jack*>(1);
+ reinterpret_cast<struct cras_alsa_jack *>(1);
cras_alsa_mixer_get_control_for_section_return_value = outputs[0];
ASSERT_EQ(0, alsa_iodev_ucm_add_nodes_and_jacks(iodev, section));
ucm_section_free_list(section);
EXPECT_EQ(4, cras_card_config_get_volume_curve_for_control_called);
// Add a second node (will use the same iodev).
- section =
- ucm_section_create(HEADPHONE, 0, CRAS_STREAM_OUTPUT, jack_name, "hctl");
+ section = ucm_section_create("Headphone", 0, CRAS_STREAM_OUTPUT,
+ jack_name, "hctl");
ucm_section_add_coupled(section, "HP-L", MIXER_NAME_VOLUME);
ucm_section_add_coupled(section, "HP-R", MIXER_NAME_VOLUME);
cras_alsa_jack_list_add_jack_for_section_result_jack = NULL;
@@ -1182,8 +1189,8 @@ TEST(AlsaOutputNode, OutputsFromUCM) {
// Jack plug of an unkonwn device should do nothing.
cras_alsa_jack_get_mixer_output_ret = NULL;
cras_alsa_jack_get_name_ret_value = "Some other jack";
- jack_output_plug_event(reinterpret_cast<struct cras_alsa_jack*>(4), 0, aio);
- EXPECT_EQ(0, cras_iodev_set_node_plugged_called);
+ jack_output_plug_event(reinterpret_cast<struct cras_alsa_jack *>(4), 0, aio);
+ EXPECT_EQ(0, cras_iodev_set_node_attr_called);
// Complete initialization, and make first node active.
alsa_iodev_ucm_complete_init(iodev);
@@ -1193,12 +1200,12 @@ TEST(AlsaOutputNode, OutputsFromUCM) {
EXPECT_EQ(1, ucm_get_dma_period_for_dev_called);
EXPECT_EQ(ucm_get_dma_period_for_dev_ret, aio->dma_period_set_microsecs);
- aio->handle = (snd_pcm_t*)0x24;
+ aio->handle = (snd_pcm_t *)0x24;
ResetStubData();
rc = alsa_iodev_set_active_node(iodev, aio->base.nodes->next, 1);
EXPECT_EQ(0, rc);
- EXPECT_EQ(1, alsa_mixer_set_mute_called);
+ EXPECT_EQ(2, alsa_mixer_set_mute_called);
EXPECT_EQ(outputs[1], alsa_mixer_set_mute_output);
EXPECT_EQ(1, alsa_mixer_set_dBFS_called);
EXPECT_EQ(outputs[1], alsa_mixer_set_dBFS_output);
@@ -1214,31 +1221,33 @@ TEST(AlsaOutputNode, OutputsFromUCM) {
// Simulate jack plug event.
cras_alsa_jack_get_mixer_output_ret = outputs[1];
cras_alsa_jack_get_name_ret_value = jack_name;
- jack_output_plug_event(reinterpret_cast<struct cras_alsa_jack*>(4), 0, aio);
- EXPECT_EQ(1, cras_iodev_set_node_plugged_called);
+ jack_output_plug_event(reinterpret_cast<struct cras_alsa_jack *>(4), 0, aio);
+ EXPECT_EQ(1, cras_iodev_set_node_attr_called);
alsa_iodev_destroy(iodev);
}
TEST(AlsaOutputNode, OutputNoControlsUCM) {
- struct alsa_io* aio;
- struct cras_use_case_mgr* const fake_ucm = (struct cras_use_case_mgr*)3;
- struct cras_iodev* iodev;
- struct ucm_section* section;
+ struct alsa_io *aio;
+ struct cras_use_case_mgr * const fake_ucm = (struct cras_use_case_mgr*)3;
+ struct cras_iodev *iodev;
+ struct ucm_section *section;
ResetStubData();
// Create the IO device.
- iodev = alsa_iodev_create_with_default_parameters(
- 1, NULL, ALSA_CARD_TYPE_INTERNAL, 1, fake_mixer, fake_config, fake_ucm,
- CRAS_STREAM_OUTPUT);
- ASSERT_NE(iodev, (void*)NULL);
- aio = reinterpret_cast<struct alsa_io*>(iodev);
+ iodev = alsa_iodev_create_with_default_parameters(1, NULL,
+ ALSA_CARD_TYPE_INTERNAL, 1,
+ fake_mixer, fake_config,
+ fake_ucm,
+ CRAS_STREAM_OUTPUT);
+ ASSERT_NE(iodev, (void *)NULL);
+ aio = reinterpret_cast<struct alsa_io *>(iodev);
EXPECT_EQ(1, cras_card_config_get_volume_curve_for_control_called);
// Node without controls or jacks.
- section =
- ucm_section_create(INTERNAL_SPEAKER, 1, CRAS_STREAM_OUTPUT, NULL, NULL);
+ section = ucm_section_create(INTERNAL_SPEAKER, 1, CRAS_STREAM_OUTPUT,
+ NULL, NULL);
// Device index doesn't match.
EXPECT_EQ(-22, alsa_iodev_ucm_add_nodes_and_jacks(iodev, section));
section->dev_idx = 0;
@@ -1260,27 +1269,29 @@ TEST(AlsaOutputNode, OutputNoControlsUCM) {
}
TEST(AlsaOutputNode, OutputFromJackUCM) {
- struct alsa_io* aio;
- struct cras_use_case_mgr* const fake_ucm = (struct cras_use_case_mgr*)3;
- struct cras_iodev* iodev;
- static const char* jack_name = "TestCard - Headset Jack";
- struct ucm_section* section;
+ struct alsa_io *aio;
+ struct cras_use_case_mgr * const fake_ucm = (struct cras_use_case_mgr*)3;
+ struct cras_iodev *iodev;
+ static const char *jack_name = "TestCard - Headset Jack";
+ struct ucm_section *section;
ResetStubData();
// Create the IO device.
- iodev = alsa_iodev_create_with_default_parameters(
- 1, NULL, ALSA_CARD_TYPE_INTERNAL, 1, fake_mixer, fake_config, fake_ucm,
- CRAS_STREAM_OUTPUT);
- ASSERT_NE(iodev, (void*)NULL);
- aio = reinterpret_cast<struct alsa_io*>(iodev);
+ iodev = alsa_iodev_create_with_default_parameters(1, NULL,
+ ALSA_CARD_TYPE_INTERNAL, 1,
+ fake_mixer, fake_config,
+ fake_ucm,
+ CRAS_STREAM_OUTPUT);
+ ASSERT_NE(iodev, (void *)NULL);
+ aio = reinterpret_cast<struct alsa_io *>(iodev);
EXPECT_EQ(1, cras_card_config_get_volume_curve_for_control_called);
// Node without controls or jacks.
cras_alsa_jack_list_add_jack_for_section_result_jack =
- reinterpret_cast<struct cras_alsa_jack*>(1);
- section =
- ucm_section_create(HEADPHONE, 0, CRAS_STREAM_OUTPUT, jack_name, "hctl");
+ reinterpret_cast<struct cras_alsa_jack *>(1);
+ section = ucm_section_create("Headphone", 0, CRAS_STREAM_OUTPUT,
+ jack_name, "hctl");
ASSERT_EQ(0, alsa_iodev_ucm_add_nodes_and_jacks(iodev, section));
EXPECT_EQ(4, cras_card_config_get_volume_curve_for_control_called);
EXPECT_EQ(1, cras_alsa_mixer_get_control_for_section_called);
@@ -1300,35 +1311,37 @@ TEST(AlsaOutputNode, OutputFromJackUCM) {
}
TEST(AlsaOutputNode, InputsFromUCM) {
- struct alsa_io* aio;
- struct cras_alsa_mixer* const fake_mixer = (struct cras_alsa_mixer*)2;
- struct cras_use_case_mgr* const fake_ucm = (struct cras_use_case_mgr*)3;
- struct mixer_control* inputs[2];
- struct cras_iodev* iodev;
- static const char* jack_name = "TestCard - Headset Jack";
+ struct alsa_io *aio;
+ struct cras_alsa_mixer * const fake_mixer = (struct cras_alsa_mixer*)2;
+ struct cras_use_case_mgr * const fake_ucm = (struct cras_use_case_mgr*)3;
+ struct mixer_control *inputs[2];
+ struct cras_iodev *iodev;
+ static const char *jack_name = "TestCard - Headset Jack";
int rc;
- struct ucm_section* section;
+ struct ucm_section *section;
ResetStubData();
- inputs[0] = reinterpret_cast<struct mixer_control*>(3);
- inputs[1] = reinterpret_cast<struct mixer_control*>(4);
+ inputs[0] = reinterpret_cast<struct mixer_control *>(3);
+ inputs[1] = reinterpret_cast<struct mixer_control *>(4);
cras_alsa_mixer_list_inputs_outputs = inputs;
cras_alsa_mixer_list_inputs_outputs_length = ARRAY_SIZE(inputs);
- cras_alsa_mixer_get_control_name_values[inputs[0]] = INTERNAL_MICROPHONE;
- cras_alsa_mixer_get_control_name_values[inputs[1]] = MIC;
+ cras_alsa_mixer_get_control_name_values[inputs[0]] = "Internal Mic";
+ cras_alsa_mixer_get_control_name_values[inputs[1]] = "Mic";
// Create the IO device.
- iodev = alsa_iodev_create_with_default_parameters(
- 0, NULL, ALSA_CARD_TYPE_INTERNAL, 1, fake_mixer, fake_config, fake_ucm,
- CRAS_STREAM_INPUT);
- ASSERT_NE(iodev, (void*)NULL);
- aio = reinterpret_cast<struct alsa_io*>(iodev);
+ iodev = alsa_iodev_create_with_default_parameters(0, NULL,
+ ALSA_CARD_TYPE_INTERNAL, 1,
+ fake_mixer, fake_config,
+ fake_ucm,
+ CRAS_STREAM_INPUT);
+ ASSERT_NE(iodev, (void *)NULL);
+ aio = reinterpret_cast<struct alsa_io *>(iodev);
// First node.
cras_alsa_mixer_get_control_for_section_return_value = inputs[0];
ucm_get_max_software_gain_ret_value = -1;
- section =
- ucm_section_create(INTERNAL_MICROPHONE, 0, CRAS_STREAM_INPUT, NULL, NULL);
+ section = ucm_section_create(INTERNAL_MICROPHONE, 0, CRAS_STREAM_INPUT,
+ NULL, NULL);
ucm_section_add_coupled(section, "MIC-L", MIXER_NAME_VOLUME);
ucm_section_add_coupled(section, "MIC-R", MIXER_NAME_VOLUME);
ASSERT_EQ(0, alsa_iodev_ucm_add_nodes_and_jacks(iodev, section));
@@ -1339,24 +1352,24 @@ TEST(AlsaOutputNode, InputsFromUCM) {
ucm_get_max_software_gain_ret_value = 0;
ucm_get_max_software_gain_value = 2000;
cras_alsa_jack_list_add_jack_for_section_result_jack =
- reinterpret_cast<struct cras_alsa_jack*>(1);
+ reinterpret_cast<struct cras_alsa_jack *>(1);
cras_alsa_mixer_get_control_for_section_return_value = inputs[1];
- section = ucm_section_create(MIC, 0, CRAS_STREAM_INPUT, jack_name, "hctl");
- ucm_section_set_mixer_name(section, MIC);
+ section = ucm_section_create("Mic", 0, CRAS_STREAM_INPUT, jack_name, "hctl");
+ ucm_section_set_mixer_name(section, "Mic");
ASSERT_EQ(0, alsa_iodev_ucm_add_nodes_and_jacks(iodev, section));
ucm_section_free_list(section);
// Jack plug of an unkonwn device should do nothing.
cras_alsa_jack_get_mixer_input_ret = NULL;
cras_alsa_jack_get_name_ret_value = "Some other jack";
- jack_input_plug_event(reinterpret_cast<struct cras_alsa_jack*>(4), 0, aio);
- EXPECT_EQ(0, cras_iodev_set_node_plugged_called);
+ jack_input_plug_event(reinterpret_cast<struct cras_alsa_jack *>(4), 0, aio);
+ EXPECT_EQ(0, cras_iodev_set_node_attr_called);
// Simulate jack plug event.
cras_alsa_jack_get_mixer_input_ret = inputs[1];
cras_alsa_jack_get_name_ret_value = jack_name;
- jack_input_plug_event(reinterpret_cast<struct cras_alsa_jack*>(4), 0, aio);
- EXPECT_EQ(1, cras_iodev_set_node_plugged_called);
+ jack_input_plug_event(reinterpret_cast<struct cras_alsa_jack *>(4), 0, aio);
+ EXPECT_EQ(1, cras_iodev_set_node_attr_called);
// Complete initialization, and make first node active.
alsa_iodev_ucm_complete_init(iodev);
@@ -1369,7 +1382,7 @@ TEST(AlsaOutputNode, InputsFromUCM) {
EXPECT_EQ(2, ucm_get_dma_period_for_dev_called);
EXPECT_EQ(0, aio->dma_period_set_microsecs);
- aio->handle = (snd_pcm_t*)0x24;
+ aio->handle = (snd_pcm_t *)0x24;
ResetStubData();
rc = alsa_iodev_set_active_node(iodev, aio->base.nodes->next, 1);
@@ -1389,23 +1402,25 @@ TEST(AlsaOutputNode, InputsFromUCM) {
}
TEST(AlsaOutputNode, InputNoControlsUCM) {
- struct alsa_io* aio;
- struct cras_use_case_mgr* const fake_ucm = (struct cras_use_case_mgr*)3;
- struct cras_iodev* iodev;
- struct ucm_section* section;
+ struct alsa_io *aio;
+ struct cras_use_case_mgr * const fake_ucm = (struct cras_use_case_mgr*)3;
+ struct cras_iodev *iodev;
+ struct ucm_section *section;
ResetStubData();
// Create the IO device.
- iodev = alsa_iodev_create_with_default_parameters(
- 1, NULL, ALSA_CARD_TYPE_INTERNAL, 1, fake_mixer, fake_config, fake_ucm,
- CRAS_STREAM_INPUT);
- ASSERT_NE(iodev, (void*)NULL);
- aio = reinterpret_cast<struct alsa_io*>(iodev);
+ iodev = alsa_iodev_create_with_default_parameters(1, NULL,
+ ALSA_CARD_TYPE_INTERNAL, 1,
+ fake_mixer, fake_config,
+ fake_ucm,
+ CRAS_STREAM_INPUT);
+ ASSERT_NE(iodev, (void *)NULL);
+ aio = reinterpret_cast<struct alsa_io *>(iodev);
// Node without controls or jacks.
- section =
- ucm_section_create(INTERNAL_MICROPHONE, 1, CRAS_STREAM_INPUT, NULL, NULL);
+ section = ucm_section_create(INTERNAL_MICROPHONE, 1, CRAS_STREAM_INPUT,
+ NULL, NULL);
// Device index doesn't match.
EXPECT_EQ(-22, alsa_iodev_ucm_add_nodes_and_jacks(iodev, section));
section->dev_idx = 0;
@@ -1428,25 +1443,27 @@ TEST(AlsaOutputNode, InputNoControlsUCM) {
}
TEST(AlsaOutputNode, InputFromJackUCM) {
- struct alsa_io* aio;
- struct cras_use_case_mgr* const fake_ucm = (struct cras_use_case_mgr*)3;
- struct cras_iodev* iodev;
- static const char* jack_name = "TestCard - Headset Jack";
- struct ucm_section* section;
+ struct alsa_io *aio;
+ struct cras_use_case_mgr * const fake_ucm = (struct cras_use_case_mgr*)3;
+ struct cras_iodev *iodev;
+ static const char *jack_name = "TestCard - Headset Jack";
+ struct ucm_section *section;
ResetStubData();
// Create the IO device.
- iodev = alsa_iodev_create_with_default_parameters(
- 1, NULL, ALSA_CARD_TYPE_INTERNAL, 1, fake_mixer, fake_config, fake_ucm,
- CRAS_STREAM_INPUT);
- ASSERT_NE(iodev, (void*)NULL);
- aio = reinterpret_cast<struct alsa_io*>(iodev);
+ iodev = alsa_iodev_create_with_default_parameters(1, NULL,
+ ALSA_CARD_TYPE_INTERNAL, 1,
+ fake_mixer, fake_config,
+ fake_ucm,
+ CRAS_STREAM_INPUT);
+ ASSERT_NE(iodev, (void *)NULL);
+ aio = reinterpret_cast<struct alsa_io *>(iodev);
// Node without controls or jacks.
cras_alsa_jack_list_add_jack_for_section_result_jack =
- reinterpret_cast<struct cras_alsa_jack*>(1);
- section = ucm_section_create(MIC, 0, CRAS_STREAM_INPUT, jack_name, "hctl");
+ reinterpret_cast<struct cras_alsa_jack *>(1);
+ section = ucm_section_create("Mic", 0, CRAS_STREAM_INPUT, jack_name, "hctl");
ASSERT_EQ(0, alsa_iodev_ucm_add_nodes_and_jacks(iodev, section));
EXPECT_EQ(1, cras_alsa_mixer_get_control_for_section_called);
EXPECT_EQ(1, cras_iodev_add_node_called);
@@ -1465,36 +1482,36 @@ TEST(AlsaOutputNode, InputFromJackUCM) {
}
TEST(AlsaOutputNode, AutoUnplugOutputNode) {
- struct alsa_io* aio;
- struct cras_alsa_mixer* const fake_mixer = (struct cras_alsa_mixer*)2;
- struct cras_use_case_mgr* const fake_ucm = (struct cras_use_case_mgr*)3;
- struct mixer_control* outputs[2];
- const struct cras_alsa_jack* jack = (struct cras_alsa_jack*)4;
+ struct alsa_io *aio;
+ struct cras_alsa_mixer * const fake_mixer = (struct cras_alsa_mixer*)2;
+ struct cras_use_case_mgr * const fake_ucm = (struct cras_use_case_mgr*)3;
+ struct mixer_control *outputs[2];
+ const struct cras_alsa_jack *jack = (struct cras_alsa_jack*)4;
ResetStubData();
- outputs[0] = reinterpret_cast<struct mixer_control*>(5);
- outputs[1] = reinterpret_cast<struct mixer_control*>(6);
+ outputs[0] = reinterpret_cast<struct mixer_control *>(5);
+ outputs[1] = reinterpret_cast<struct mixer_control *>(6);
cras_alsa_mixer_list_outputs_outputs = outputs;
cras_alsa_mixer_list_outputs_outputs_length = ARRAY_SIZE(outputs);
cras_alsa_mixer_get_control_name_values[outputs[0]] = INTERNAL_SPEAKER;
- cras_alsa_mixer_get_control_name_values[outputs[1]] = HEADPHONE;
+ cras_alsa_mixer_get_control_name_values[outputs[1]] = "Headphone";
auto_unplug_output_node_ret = 1;
- aio = (struct alsa_io*)alsa_iodev_create_with_default_parameters(
+ aio = (struct alsa_io *)alsa_iodev_create_with_default_parameters(
0, NULL, ALSA_CARD_TYPE_INTERNAL, 1, fake_mixer, fake_config, fake_ucm,
CRAS_STREAM_OUTPUT);
- ASSERT_EQ(0, alsa_iodev_legacy_complete_init((struct cras_iodev*)aio));
+ ASSERT_EQ(0, alsa_iodev_legacy_complete_init((struct cras_iodev *)aio));
EXPECT_EQ(3, cras_card_config_get_volume_curve_for_control_called);
EXPECT_EQ(1, cras_alsa_mixer_list_outputs_called);
EXPECT_EQ(2, cras_alsa_mixer_get_control_name_called);
// Assert that the the internal speaker is plugged and other nodes aren't.
- ASSERT_NE(aio->base.nodes, (void*)NULL);
+ ASSERT_NE(aio->base.nodes, (void *)NULL);
EXPECT_EQ(aio->base.nodes->plugged, 1);
- ASSERT_NE(aio->base.nodes->next, (void*)NULL);
+ ASSERT_NE(aio->base.nodes->next, (void *)NULL);
EXPECT_EQ(aio->base.nodes->next->plugged, 0);
// Plug headphone jack
@@ -1507,38 +1524,38 @@ TEST(AlsaOutputNode, AutoUnplugOutputNode) {
EXPECT_EQ(aio->base.nodes->plugged, 0);
EXPECT_EQ(aio->base.nodes->next->plugged, 1);
- alsa_iodev_destroy((struct cras_iodev*)aio);
+ alsa_iodev_destroy((struct cras_iodev *)aio);
}
TEST(AlsaOutputNode, AutoUnplugInputNode) {
- struct alsa_io* aio;
- struct cras_alsa_mixer* const fake_mixer = (struct cras_alsa_mixer*)2;
- struct cras_use_case_mgr* const fake_ucm = (struct cras_use_case_mgr*)3;
- struct mixer_control* inputs[2];
- const struct cras_alsa_jack* jack = (struct cras_alsa_jack*)4;
+ struct alsa_io *aio;
+ struct cras_alsa_mixer * const fake_mixer = (struct cras_alsa_mixer*)2;
+ struct cras_use_case_mgr * const fake_ucm = (struct cras_use_case_mgr*)3;
+ struct mixer_control *inputs[2];
+ const struct cras_alsa_jack *jack = (struct cras_alsa_jack*)4;
ResetStubData();
- inputs[0] = reinterpret_cast<struct mixer_control*>(5);
- inputs[1] = reinterpret_cast<struct mixer_control*>(6);
+ inputs[0] = reinterpret_cast<struct mixer_control *>(5);
+ inputs[1] = reinterpret_cast<struct mixer_control *>(6);
cras_alsa_mixer_list_inputs_outputs = inputs;
cras_alsa_mixer_list_inputs_outputs_length = ARRAY_SIZE(inputs);
cras_alsa_mixer_get_control_name_values[inputs[0]] = INTERNAL_MICROPHONE;
- cras_alsa_mixer_get_control_name_values[inputs[1]] = MIC;
+ cras_alsa_mixer_get_control_name_values[inputs[1]] = "Mic";
auto_unplug_input_node_ret = 1;
- aio = (struct alsa_io*)alsa_iodev_create_with_default_parameters(
+ aio = (struct alsa_io *)alsa_iodev_create_with_default_parameters(
0, NULL, ALSA_CARD_TYPE_INTERNAL, 1, fake_mixer, fake_config, fake_ucm,
CRAS_STREAM_INPUT);
- ASSERT_EQ(0, alsa_iodev_legacy_complete_init((struct cras_iodev*)aio));
+ ASSERT_EQ(0, alsa_iodev_legacy_complete_init((struct cras_iodev *)aio));
EXPECT_EQ(1, cras_alsa_mixer_list_inputs_called);
EXPECT_EQ(2, cras_alsa_mixer_get_control_name_called);
// Assert that the the internal speaker is plugged and other nodes aren't.
- ASSERT_NE(aio->base.nodes, (void*)NULL);
+ ASSERT_NE(aio->base.nodes, (void *)NULL);
EXPECT_EQ(aio->base.nodes->plugged, 1);
- ASSERT_NE(aio->base.nodes->next, (void*)NULL);
+ ASSERT_NE(aio->base.nodes->next, (void *)NULL);
EXPECT_EQ(aio->base.nodes->next->plugged, 0);
// Plug headphone jack
@@ -1551,7 +1568,7 @@ TEST(AlsaOutputNode, AutoUnplugInputNode) {
EXPECT_EQ(aio->base.nodes->plugged, 0);
EXPECT_EQ(aio->base.nodes->next->plugged, 1);
- alsa_iodev_destroy((struct cras_iodev*)aio);
+ alsa_iodev_destroy((struct cras_iodev *)aio);
}
TEST(AlsaInitNode, SetNodeInitialState) {
@@ -1571,7 +1588,7 @@ TEST(AlsaInitNode, SetNodeInitialState) {
memset(&node, 0, sizeof(node));
node.dev = &dev;
- strcpy(node.name, INTERNAL_SPEAKER);
+ strcpy(node.name, "Speaker");
dev.direction = CRAS_STREAM_OUTPUT;
set_node_initial_state(&node, ALSA_CARD_TYPE_INTERNAL);
ASSERT_EQ(1, node.plugged);
@@ -1581,7 +1598,7 @@ TEST(AlsaInitNode, SetNodeInitialState) {
memset(&node, 0, sizeof(node));
node.dev = &dev;
- strcpy(node.name, INTERNAL_MICROPHONE);
+ strcpy(node.name, "Internal Mic");
dev.direction = CRAS_STREAM_INPUT;
set_node_initial_state(&node, ALSA_CARD_TYPE_INTERNAL);
ASSERT_EQ(1, node.plugged);
@@ -1591,7 +1608,7 @@ TEST(AlsaInitNode, SetNodeInitialState) {
memset(&node, 0, sizeof(node));
node.dev = &dev;
- strcpy(node.name, HDMI);
+ strcpy(node.name, "HDMI");
dev.direction = CRAS_STREAM_OUTPUT;
set_node_initial_state(&node, ALSA_CARD_TYPE_INTERNAL);
ASSERT_EQ(0, node.plugged);
@@ -1628,7 +1645,7 @@ TEST(AlsaInitNode, SetNodeInitialState) {
memset(&node, 0, sizeof(node));
node.dev = &dev;
- strcpy(node.name, HEADPHONE);
+ strcpy(node.name, "Headphone");
dev.direction = CRAS_STREAM_OUTPUT;
set_node_initial_state(&node, ALSA_CARD_TYPE_INTERNAL);
ASSERT_EQ(0, node.plugged);
@@ -1646,7 +1663,7 @@ TEST(AlsaInitNode, SetNodeInitialState) {
memset(&node, 0, sizeof(node));
node.dev = &dev;
- strcpy(node.name, MIC);
+ strcpy(node.name, "Mic");
dev.direction = CRAS_STREAM_INPUT;
set_node_initial_state(&node, ALSA_CARD_TYPE_INTERNAL);
ASSERT_EQ(0, node.plugged);
@@ -1697,8 +1714,8 @@ TEST(AlsaInitNode, SetNodeInitialState) {
ASSERT_EQ(0, node.plugged);
ASSERT_EQ(CRAS_NODE_TYPE_MIC, node.type);
ASSERT_EQ(NODE_POSITION_EXTERNAL, node.position);
- // Node name is changed to "MIC".
- ASSERT_EQ(0, strcmp(node.name, MIC));
+ // Node name is changed to "Mic".
+ ASSERT_EQ(0, strcmp(node.name, "Mic"));
memset(&node, 0, sizeof(node));
node.dev = &dev;
@@ -1709,11 +1726,11 @@ TEST(AlsaInitNode, SetNodeInitialState) {
ASSERT_EQ(CRAS_NODE_TYPE_HEADPHONE, node.type);
ASSERT_EQ(NODE_POSITION_EXTERNAL, node.position);
// Node name is changed to "Headphone".
- ASSERT_EQ(0, strcmp(node.name, HEADPHONE));
+ ASSERT_EQ(0, strcmp(node.name, "Headphone"));
memset(&node, 0, sizeof(node));
node.dev = &dev;
- strcpy(node.name, INTERNAL_SPEAKER);
+ strcpy(node.name, "Speaker");
dev.direction = CRAS_STREAM_OUTPUT;
set_node_initial_state(&node, ALSA_CARD_TYPE_USB);
ASSERT_EQ(1, node.plugged);
@@ -1753,37 +1770,37 @@ TEST(AlsaInitNode, SetNodeInitialStateDropInvalidUTF8NodeName) {
memset(&node, 0, sizeof(node));
node.dev = &dev;
strcpy(node.name, "Something USB");
- // 0xfe can not appear in a valid UTF-8 string.
+ //0xfe can not appear in a valid UTF-8 string.
node.name[0] = 0xfe;
is_utf8_string_ret_value = 0;
dev.direction = CRAS_STREAM_OUTPUT;
set_node_initial_state(&node, ALSA_CARD_TYPE_USB);
ASSERT_EQ(CRAS_NODE_TYPE_USB, node.type);
- ASSERT_STREQ(USB, node.name);
+ ASSERT_STREQ("USB", node.name);
memset(&node, 0, sizeof(node));
node.dev = &dev;
strcpy(node.name, "Something HDMI Jack");
- // 0xfe can not appear in a valid UTF-8 string.
+ //0xfe can not appear in a valid UTF-8 string.
node.name[0] = 0xfe;
is_utf8_string_ret_value = 0;
dev.direction = CRAS_STREAM_OUTPUT;
set_node_initial_state(&node, ALSA_CARD_TYPE_INTERNAL);
ASSERT_EQ(CRAS_NODE_TYPE_HDMI, node.type);
- ASSERT_STREQ(HDMI, node.name);
+ ASSERT_STREQ("HDMI", node.name);
}
TEST(AlsaIoInit, HDMIJackUpdateInvalidUTF8MonitorName) {
- struct alsa_io* aio;
- struct cras_alsa_mixer* const fake_mixer = (struct cras_alsa_mixer*)2;
- struct cras_use_case_mgr* const fake_ucm = (struct cras_use_case_mgr*)3;
- const struct cras_alsa_jack* jack = (struct cras_alsa_jack*)4;
+ struct alsa_io *aio;
+ struct cras_alsa_mixer * const fake_mixer = (struct cras_alsa_mixer*)2;
+ struct cras_use_case_mgr * const fake_ucm = (struct cras_use_case_mgr*)3;
+ const struct cras_alsa_jack *jack = (struct cras_alsa_jack*)4;
ResetStubData();
- aio = (struct alsa_io*)alsa_iodev_create_with_default_parameters(
+ aio = (struct alsa_io *)alsa_iodev_create_with_default_parameters(
0, NULL, ALSA_CARD_TYPE_INTERNAL, 0, fake_mixer, fake_config, fake_ucm,
CRAS_STREAM_OUTPUT);
- ASSERT_EQ(0, alsa_iodev_legacy_complete_init((struct cras_iodev*)aio));
+ ASSERT_EQ(0, alsa_iodev_legacy_complete_init((struct cras_iodev *)aio));
// Prepare the stub data such that the jack will be identified as an
// HDMI jack, and thus the callback creates an HDMI node.
@@ -1798,56 +1815,60 @@ TEST(AlsaIoInit, HDMIJackUpdateInvalidUTF8MonitorName) {
EXPECT_EQ(2, cras_alsa_jack_get_name_called);
ASSERT_EQ(CRAS_NODE_TYPE_HDMI, aio->base.nodes->next->type);
// The node name should be "HDMI".
- ASSERT_STREQ(HDMI, aio->base.nodes->next->name);
+ ASSERT_STREQ("HDMI", aio->base.nodes->next->name);
- alsa_iodev_destroy((struct cras_iodev*)aio);
+ alsa_iodev_destroy((struct cras_iodev *)aio);
}
// Test thread add/rm stream, open_alsa, and iodev config.
class AlsaVolumeMuteSuite : public testing::Test {
- protected:
- virtual void SetUp() {
- ResetStubData();
- output_control_ = reinterpret_cast<struct mixer_control*>(10);
- cras_alsa_mixer_list_outputs_outputs = &output_control_;
- cras_alsa_mixer_list_outputs_outputs_length = 1;
- cras_alsa_mixer_get_control_name_values[output_control_] = INTERNAL_SPEAKER;
- cras_alsa_mixer_list_outputs_outputs_length = 1;
- aio_output_ = (struct alsa_io*)alsa_iodev_create_with_default_parameters(
- 0, NULL, ALSA_CARD_TYPE_INTERNAL, 1, fake_mixer, fake_config, NULL,
- CRAS_STREAM_OUTPUT);
- alsa_iodev_legacy_complete_init((struct cras_iodev*)aio_output_);
- EXPECT_EQ(2, cras_card_config_get_volume_curve_for_control_called);
-
- struct cras_ionode* node;
- int count = 0;
- DL_FOREACH (aio_output_->base.nodes, node) { printf("node %d \n", count); }
- aio_output_->base.direction = CRAS_STREAM_OUTPUT;
- fmt_.frame_rate = 44100;
- fmt_.num_channels = 2;
- fmt_.format = SND_PCM_FORMAT_S16_LE;
- aio_output_->base.format = &fmt_;
- cras_alsa_get_avail_frames_ret = -1;
- }
-
- virtual void TearDown() {
- alsa_iodev_destroy((struct cras_iodev*)aio_output_);
- cras_alsa_get_avail_frames_ret = 0;
- }
-
- struct mixer_control* output_control_;
- struct alsa_io* aio_output_;
+ protected:
+ virtual void SetUp() {
+ ResetStubData();
+ output_control_ = reinterpret_cast<struct mixer_control *>(10);
+ cras_alsa_mixer_list_outputs_outputs = &output_control_;
+ cras_alsa_mixer_list_outputs_outputs_length = 1;
+ cras_alsa_mixer_get_control_name_values[output_control_] = "Speaker";
+ cras_alsa_mixer_list_outputs_outputs_length = 1;
+ aio_output_ = (struct alsa_io *)alsa_iodev_create_with_default_parameters(
+ 0, NULL,
+ ALSA_CARD_TYPE_INTERNAL, 1,
+ fake_mixer, fake_config, NULL,
+ CRAS_STREAM_OUTPUT);
+ alsa_iodev_legacy_complete_init((struct cras_iodev *)aio_output_);
+ EXPECT_EQ(2, cras_card_config_get_volume_curve_for_control_called);
+
+ struct cras_ionode *node;
+ int count = 0;
+ DL_FOREACH(aio_output_->base.nodes, node) {
+ printf("node %d \n", count);
+ }
+ aio_output_->base.direction = CRAS_STREAM_OUTPUT;
+ fmt_.frame_rate = 44100;
+ fmt_.num_channels = 2;
+ fmt_.format = SND_PCM_FORMAT_S16_LE;
+ aio_output_->base.format = &fmt_;
+ cras_alsa_get_avail_frames_ret = -1;
+ }
+
+ virtual void TearDown() {
+ alsa_iodev_destroy((struct cras_iodev *)aio_output_);
+ cras_alsa_get_avail_frames_ret = 0;
+ }
+
+ struct mixer_control *output_control_;
+ struct alsa_io *aio_output_;
struct cras_audio_format fmt_;
};
TEST_F(AlsaVolumeMuteSuite, GetDefaultVolumeCurve) {
int rc;
- struct cras_audio_format* fmt;
+ struct cras_audio_format *fmt;
- fmt = (struct cras_audio_format*)malloc(sizeof(*fmt));
+ fmt = (struct cras_audio_format *)malloc(sizeof(*fmt));
memcpy(fmt, &fmt_, sizeof(fmt_));
aio_output_->base.format = fmt;
- aio_output_->handle = (snd_pcm_t*)0x24;
+ aio_output_->handle = (snd_pcm_t *)0x24;
rc = aio_output_->base.configure_dev(&aio_output_->base);
ASSERT_EQ(0, rc);
@@ -1858,24 +1879,25 @@ TEST_F(AlsaVolumeMuteSuite, GetDefaultVolumeCurve) {
free(fmt);
}
-TEST_F(AlsaVolumeMuteSuite, GetVolumeCurveFromNode) {
+TEST_F(AlsaVolumeMuteSuite, GetVolumeCurveFromNode)
+{
int rc;
- struct cras_audio_format* fmt;
- struct cras_alsa_jack* jack = (struct cras_alsa_jack*)4;
- struct cras_ionode* node;
+ struct cras_audio_format *fmt;
+ struct cras_alsa_jack *jack = (struct cras_alsa_jack*)4;
+ struct cras_ionode *node;
struct cras_volume_curve hp_curve = {
- .get_dBFS = fake_get_dBFS,
+ .get_dBFS = fake_get_dBFS,
};
- fmt = (struct cras_audio_format*)malloc(sizeof(*fmt));
+ fmt = (struct cras_audio_format *)malloc(sizeof(*fmt));
memcpy(fmt, &fmt_, sizeof(fmt_));
aio_output_->base.format = fmt;
- aio_output_->handle = (snd_pcm_t*)0x24;
+ aio_output_->handle = (snd_pcm_t *)0x24;
// Headphone jack plugged and has its own volume curve.
cras_alsa_jack_get_mixer_output_ret = NULL;
- cras_alsa_jack_get_name_ret_value = HEADPHONE;
- cras_card_config_get_volume_curve_vals[HEADPHONE] = &hp_curve;
+ cras_alsa_jack_get_name_ret_value = "Headphone";
+ cras_card_config_get_volume_curve_vals["Headphone"] = &hp_curve;
cras_alsa_jack_list_create_cb(jack, 1, cras_alsa_jack_list_create_cb_data);
EXPECT_EQ(1, cras_alsa_jack_update_node_type_called);
EXPECT_EQ(3, cras_card_config_get_volume_curve_for_control_called);
@@ -1895,16 +1917,16 @@ TEST_F(AlsaVolumeMuteSuite, GetVolumeCurveFromNode) {
TEST_F(AlsaVolumeMuteSuite, SetVolume) {
int rc;
- struct cras_audio_format* fmt;
+ struct cras_audio_format *fmt;
const size_t fake_system_volume = 55;
const size_t fake_system_volume_dB = (fake_system_volume - 100) * 100;
- fmt = (struct cras_audio_format*)malloc(sizeof(*fmt));
+ fmt = (struct cras_audio_format *)malloc(sizeof(*fmt));
memcpy(fmt, &fmt_, sizeof(fmt_));
aio_output_->base.format = fmt;
- aio_output_->handle = (snd_pcm_t*)0x24;
+ aio_output_->handle = (snd_pcm_t *)0x24;
- aio_output_->num_underruns = 3; // Something non-zero.
+ aio_output_->num_underruns = 3; // Something non-zero.
sys_get_volume_return_value = fake_system_volume;
rc = aio_output_->base.configure_dev(&aio_output_->base);
ASSERT_EQ(0, rc);
@@ -1938,7 +1960,7 @@ TEST_F(AlsaVolumeMuteSuite, SetVolume) {
// close the dev.
rc = aio_output_->base.close_dev(&aio_output_->base);
EXPECT_EQ(0, rc);
- EXPECT_EQ((void*)NULL, aio_output_->handle);
+ EXPECT_EQ((void *)NULL, aio_output_->handle);
free(fmt);
}
@@ -1946,7 +1968,7 @@ TEST_F(AlsaVolumeMuteSuite, SetVolume) {
TEST_F(AlsaVolumeMuteSuite, SetMute) {
int muted;
- aio_output_->handle = (snd_pcm_t*)0x24;
+ aio_output_->handle = (snd_pcm_t *)0x24;
// Test mute.
ResetStubData();
@@ -1976,28 +1998,31 @@ TEST_F(AlsaVolumeMuteSuite, SetMute) {
}
// Test free run.
-class AlsaFreeRunTestSuite : public testing::Test {
- protected:
- virtual void SetUp() {
- ResetStubData();
- memset(&aio, 0, sizeof(aio));
- fmt_.format = SND_PCM_FORMAT_S16_LE;
- fmt_.frame_rate = 48000;
- fmt_.num_channels = 2;
- aio.base.frames_queued = frames_queued;
- aio.base.direction = CRAS_STREAM_OUTPUT;
- aio.base.format = &fmt_;
- aio.base.buffer_size = BUFFER_SIZE;
- aio.base.min_cb_level = 240;
- aio.base.min_buffer_level = 0;
- aio.filled_zeros_for_draining = 0;
- cras_alsa_mmap_begin_buffer = (uint8_t*)calloc(
- BUFFER_SIZE * 2 * 2, sizeof(*cras_alsa_mmap_begin_buffer));
- memset(cras_alsa_mmap_begin_buffer, 0xff,
- sizeof(*cras_alsa_mmap_begin_buffer));
- }
-
- virtual void TearDown() { free(cras_alsa_mmap_begin_buffer); }
+class AlsaFreeRunTestSuite: public testing::Test {
+ protected:
+ virtual void SetUp() {
+ ResetStubData();
+ memset(&aio, 0, sizeof(aio));
+ fmt_.format = SND_PCM_FORMAT_S16_LE;
+ fmt_.frame_rate = 48000;
+ fmt_.num_channels = 2;
+ aio.base.frames_queued = frames_queued;
+ aio.base.direction = CRAS_STREAM_OUTPUT;
+ aio.base.format = &fmt_;
+ aio.base.buffer_size = BUFFER_SIZE;
+ aio.base.min_cb_level = 240;
+ aio.base.min_buffer_level = 0;
+ aio.filled_zeros_for_draining = 0;
+ cras_alsa_mmap_begin_buffer = (uint8_t *)calloc(
+ BUFFER_SIZE * 2 * 2,
+ sizeof(*cras_alsa_mmap_begin_buffer));
+ memset(cras_alsa_mmap_begin_buffer, 0xff,
+ sizeof(*cras_alsa_mmap_begin_buffer));
+ }
+
+ virtual void TearDown() {
+ free(cras_alsa_mmap_begin_buffer);
+ }
struct alsa_io aio;
struct cras_audio_format fmt_;
@@ -2005,12 +2030,13 @@ class AlsaFreeRunTestSuite : public testing::Test {
TEST_F(AlsaFreeRunTestSuite, FillWholeBufferWithZeros) {
int rc;
- int16_t* zeros;
+ int16_t *zeros;
+
rc = fill_whole_buffer_with_zeros(&aio.base);
EXPECT_EQ(0, rc);
- zeros = (int16_t*)calloc(BUFFER_SIZE * 2, sizeof(*zeros));
+ zeros = (int16_t *)calloc(BUFFER_SIZE * 2, sizeof(*zeros));
EXPECT_EQ(0, memcmp(zeros, cras_alsa_mmap_begin_buffer, BUFFER_SIZE * 2 * 2));
free(zeros);
@@ -2020,7 +2046,7 @@ TEST_F(AlsaFreeRunTestSuite, EnterFreeRunAlreadyFreeRunning) {
int rc;
// Device is in free run state, no need to fill zeros or fill whole buffer.
- aio.free_running = 1;
+ aio.is_free_running = 1;
rc = no_stream(&aio.base, 1);
@@ -2033,9 +2059,10 @@ TEST_F(AlsaFreeRunTestSuite, EnterFreeRunAlreadyFreeRunning) {
TEST_F(AlsaFreeRunTestSuite, EnterFreeRunNotDrainedYetNeedToFillZeros) {
int rc, real_hw_level;
struct timespec hw_tstamp;
- int fill_zeros_duration = 50;
// Device is not in free run state. There are still valid samples to play.
- // In cras_alsa_io.c, we defined there are 50ms zeros to be filled.
+ // The number of valid samples is less than min_cb_level * 2.
+ // Need to fill zeros targeting min_cb_level * 2 = 480.
+ // The number of zeros to be filled is 480 - 200 = 280.
real_hw_level = 200;
cras_alsa_get_avail_frames_avail = BUFFER_SIZE - real_hw_level;
@@ -2047,31 +2074,26 @@ TEST_F(AlsaFreeRunTestSuite, EnterFreeRunNotDrainedYetNeedToFillZeros) {
EXPECT_EQ(0, rc);
EXPECT_EQ(0, cras_alsa_mmap_get_whole_buffer_called);
EXPECT_EQ(1, cras_iodev_fill_odev_zeros_called);
- EXPECT_EQ(fmt_.frame_rate / 1000 * fill_zeros_duration,
- cras_iodev_fill_odev_zeros_frames);
- EXPECT_EQ(fmt_.frame_rate / 1000 * fill_zeros_duration,
- aio.filled_zeros_for_draining);
- EXPECT_EQ(0, aio.free_running);
+ EXPECT_EQ(280, cras_iodev_fill_odev_zeros_frames);
+ EXPECT_EQ(280, aio.filled_zeros_for_draining);
+ EXPECT_EQ(0, aio.is_free_running);
}
-TEST_F(AlsaFreeRunTestSuite, EnterFreeRunNotDrainedYetFillZerosExceedBuffer) {
+TEST_F(AlsaFreeRunTestSuite, EnterFreeRunNotDrainedYetNoNeedToFillZeros) {
int rc, real_hw_level;
// Device is not in free run state. There are still valid samples to play.
- // If frames avail is smaller than 50ms(48 * 50 = 2400 zeros), only fill
- // zeros until buffer size.
- real_hw_level = 7000;
+ // The number of valid samples is more than min_cb_level * 2.
+ // No need to fill zeros.
+ real_hw_level = 500;
cras_alsa_get_avail_frames_avail = BUFFER_SIZE - real_hw_level;
rc = no_stream(&aio.base, 1);
EXPECT_EQ(0, rc);
EXPECT_EQ(0, cras_alsa_mmap_get_whole_buffer_called);
- EXPECT_EQ(1, cras_iodev_fill_odev_zeros_called);
- EXPECT_EQ(cras_alsa_get_avail_frames_avail,
- cras_iodev_fill_odev_zeros_frames);
- EXPECT_EQ(cras_alsa_get_avail_frames_avail, aio.filled_zeros_for_draining);
- EXPECT_EQ(0, aio.free_running);
+ EXPECT_EQ(0, cras_iodev_fill_odev_zeros_called);
+ EXPECT_EQ(0, aio.is_free_running);
}
TEST_F(AlsaFreeRunTestSuite, EnterFreeRunDrained) {
@@ -2089,7 +2111,7 @@ TEST_F(AlsaFreeRunTestSuite, EnterFreeRunDrained) {
EXPECT_EQ(0, rc);
EXPECT_EQ(1, cras_alsa_mmap_get_whole_buffer_called);
EXPECT_EQ(0, cras_iodev_fill_odev_zeros_called);
- EXPECT_EQ(1, aio.free_running);
+ EXPECT_EQ(1, aio.is_free_running);
}
TEST_F(AlsaFreeRunTestSuite, EnterFreeRunNoSamples) {
@@ -2105,15 +2127,24 @@ TEST_F(AlsaFreeRunTestSuite, EnterFreeRunNoSamples) {
EXPECT_EQ(0, rc);
EXPECT_EQ(1, cras_alsa_mmap_get_whole_buffer_called);
EXPECT_EQ(0, cras_iodev_fill_odev_zeros_called);
- EXPECT_EQ(1, aio.free_running);
+ EXPECT_EQ(1, aio.is_free_running);
}
-TEST_F(AlsaFreeRunTestSuite, IsFreeRunning) {
- aio.free_running = 1;
- EXPECT_EQ(1, is_free_running(&aio.base));
+TEST_F(AlsaFreeRunTestSuite, OutputShouldWake) {
+
+ aio.is_free_running = 1;
+
+ EXPECT_EQ(0, output_should_wake(&aio.base));
+
+ aio.is_free_running = 0;
+ aio.base.state = CRAS_IODEV_STATE_NO_STREAM_RUN;
+ EXPECT_EQ(1, output_should_wake(&aio.base));
+
+ aio.base.state = CRAS_IODEV_STATE_NORMAL_RUN;
+ EXPECT_EQ(1, output_should_wake(&aio.base));
- aio.free_running = 0;
- EXPECT_EQ(0, is_free_running(&aio.base));
+ aio.base.state = CRAS_IODEV_STATE_OPEN;
+ EXPECT_EQ(0, output_should_wake(&aio.base));
}
TEST_F(AlsaFreeRunTestSuite, LeaveFreeRunNotInFreeRunMoreRemain) {
@@ -2122,7 +2153,7 @@ TEST_F(AlsaFreeRunTestSuite, LeaveFreeRunNotInFreeRunMoreRemain) {
// Compare min_buffer_level + min_cb_level with valid samples left.
// 240 + 512 < 900 - 100, so we will get 900 - 100 in appl_ptr_ahead.
- aio.free_running = 0;
+ aio.is_free_running = 0;
aio.filled_zeros_for_draining = 100;
aio.base.min_buffer_level = 512;
real_hw_level = 900;
@@ -2134,7 +2165,7 @@ TEST_F(AlsaFreeRunTestSuite, LeaveFreeRunNotInFreeRunMoreRemain) {
EXPECT_EQ(1, cras_alsa_resume_appl_ptr_called);
EXPECT_EQ(800, cras_alsa_resume_appl_ptr_ahead);
EXPECT_EQ(0, cras_iodev_fill_odev_zeros_frames);
- EXPECT_EQ(0, aio.free_running);
+ EXPECT_EQ(0, aio.is_free_running);
EXPECT_EQ(0, aio.filled_zeros_for_draining);
}
@@ -2145,7 +2176,7 @@ TEST_F(AlsaFreeRunTestSuite, LeaveFreeRunNotInFreeRunLessRemain) {
// 240 + 256 > 400 - 500, so we will get 240 + 256 in appl_ptr_ahead.
// And it will fill 240 + 256 - 400 = 96 zeros frames into device.
- aio.free_running = 0;
+ aio.is_free_running = 0;
aio.filled_zeros_for_draining = 500;
aio.base.min_buffer_level = 256;
real_hw_level = 400;
@@ -2158,14 +2189,14 @@ TEST_F(AlsaFreeRunTestSuite, LeaveFreeRunNotInFreeRunLessRemain) {
EXPECT_EQ(aio.base.min_buffer_level + aio.base.min_cb_level,
cras_alsa_resume_appl_ptr_ahead);
EXPECT_EQ(96, cras_iodev_fill_odev_zeros_frames);
- EXPECT_EQ(0, aio.free_running);
+ EXPECT_EQ(0, aio.is_free_running);
EXPECT_EQ(0, aio.filled_zeros_for_draining);
}
TEST_F(AlsaFreeRunTestSuite, LeaveFreeRunInFreeRun) {
int rc;
- aio.free_running = 1;
+ aio.is_free_running = 1;
aio.filled_zeros_for_draining = 100;
aio.base.min_buffer_level = 512;
@@ -2175,7 +2206,7 @@ TEST_F(AlsaFreeRunTestSuite, LeaveFreeRunInFreeRun) {
EXPECT_EQ(1, cras_alsa_resume_appl_ptr_called);
EXPECT_EQ(aio.base.min_buffer_level + aio.base.min_cb_level,
cras_alsa_resume_appl_ptr_ahead);
- EXPECT_EQ(0, aio.free_running);
+ EXPECT_EQ(0, aio.is_free_running);
EXPECT_EQ(0, aio.filled_zeros_for_draining);
}
@@ -2183,8 +2214,7 @@ TEST_F(AlsaFreeRunTestSuite, LeaveFreeRunInFreeRun) {
// similar.
TEST_F(AlsaFreeRunTestSuite, OutputUnderrun) {
int rc;
- int16_t* zeros;
- snd_pcm_uframes_t offset;
+ int16_t *zeros;
aio.num_underruns = 0;
@@ -2194,24 +2224,23 @@ TEST_F(AlsaFreeRunTestSuite, OutputUnderrun) {
EXPECT_EQ(1, aio.num_underruns);
// mmap buffer should be filled with zeros.
- zeros = (int16_t*)calloc(BUFFER_SIZE * 2, sizeof(*zeros));
+ zeros = (int16_t *)calloc(BUFFER_SIZE * 2, sizeof(*zeros));
EXPECT_EQ(0, memcmp(zeros, cras_alsa_mmap_begin_buffer, BUFFER_SIZE * 2 * 2));
- // appl_ptr should be moved to min_buffer_level + 1.5 * min_cb_level ahead of
+ // appl_ptr should be moved to min_buffer_level + min_cb_level ahead of
// hw_ptr.
- offset = aio.base.min_buffer_level + aio.base.min_cb_level +
- aio.base.min_cb_level / 2;
EXPECT_EQ(1, cras_alsa_resume_appl_ptr_called);
- EXPECT_EQ(offset, cras_alsa_resume_appl_ptr_ahead);
+ EXPECT_EQ(aio.base.min_buffer_level + aio.base.min_cb_level,
+ cras_alsa_resume_appl_ptr_ahead);
free(zeros);
}
TEST(AlsaHotwordNode, HotwordTriggeredSendMessage) {
- struct cras_iodev* iodev;
+ struct cras_iodev *iodev;
struct cras_audio_format format;
struct alsa_input_node alsa_node;
- struct cras_ionode* node = &alsa_node.base;
+ struct cras_ionode *node = &alsa_node.base;
int rc;
ResetStubData();
@@ -2224,7 +2253,7 @@ TEST(AlsaHotwordNode, HotwordTriggeredSendMessage) {
memset(&alsa_node, 0, sizeof(alsa_node));
node->dev = iodev;
- strcpy(node->name, HOTWORD_DEV);
+ strcpy(node->name, "Wake on Voice");
set_node_initial_state(node, ALSA_CARD_TYPE_INTERNAL);
EXPECT_EQ(CRAS_NODE_TYPE_HOTWORD, node->type);
@@ -2240,58 +2269,9 @@ TEST(AlsaHotwordNode, HotwordTriggeredSendMessage) {
alsa_iodev_destroy(iodev);
}
-TEST(AlsaGetValidFrames, GetValidFramesNormalState) {
- struct cras_iodev* iodev;
- struct alsa_io* aio;
- struct timespec tstamp;
- int rc;
-
- ResetStubData();
- iodev = alsa_iodev_create_with_default_parameters(
- 0, NULL, ALSA_CARD_TYPE_INTERNAL, 0, fake_mixer, fake_config, NULL,
- CRAS_STREAM_OUTPUT);
- aio = (struct alsa_io*)iodev;
-
- aio->free_running = 0;
- aio->filled_zeros_for_draining = 200;
- cras_alsa_get_avail_frames_avail = iodev->buffer_size - 500;
- cras_alsa_get_avail_frames_ret = 0;
- clock_gettime_retspec.tv_sec = 123;
- clock_gettime_retspec.tv_nsec = 321;
- rc = iodev->get_valid_frames(iodev, &tstamp);
- EXPECT_EQ(rc, 300);
- EXPECT_EQ(tstamp.tv_sec, clock_gettime_retspec.tv_sec);
- EXPECT_EQ(tstamp.tv_nsec, clock_gettime_retspec.tv_nsec);
-
- alsa_iodev_destroy(iodev);
-}
-
-TEST(AlsaGetValidFrames, GetValidFramesFreeRunning) {
- struct cras_iodev* iodev;
- struct alsa_io* aio;
- struct timespec tstamp;
- int rc;
-
- ResetStubData();
- iodev = alsa_iodev_create_with_default_parameters(
- 0, NULL, ALSA_CARD_TYPE_INTERNAL, 0, fake_mixer, fake_config, NULL,
- CRAS_STREAM_OUTPUT);
- aio = (struct alsa_io*)iodev;
-
- aio->free_running = 1;
- clock_gettime_retspec.tv_sec = 123;
- clock_gettime_retspec.tv_nsec = 321;
- rc = iodev->get_valid_frames(iodev, &tstamp);
- EXPECT_EQ(rc, 0);
- EXPECT_EQ(tstamp.tv_sec, clock_gettime_retspec.tv_sec);
- EXPECT_EQ(tstamp.tv_nsec, clock_gettime_retspec.tv_nsec);
-
- alsa_iodev_destroy(iodev);
-}
-
} // namespace
-int main(int argc, char** argv) {
+int main(int argc, char **argv) {
::testing::InitGoogleTest(&argc, argv);
openlog(NULL, LOG_PERROR, LOG_USER);
return RUN_ALL_TESTS();
@@ -2302,152 +2282,172 @@ int main(int argc, char** argv) {
extern "C" {
// From iodev.
-int cras_iodev_list_add_output(struct cras_iodev* output) {
+int cras_iodev_list_add_output(struct cras_iodev *output)
+{
return 0;
}
-int cras_iodev_list_rm_output(struct cras_iodev* dev) {
+int cras_iodev_list_rm_output(struct cras_iodev *dev)
+{
return 0;
}
-int cras_iodev_list_add_input(struct cras_iodev* input) {
+int cras_iodev_list_add_input(struct cras_iodev *input)
+{
return 0;
}
-int cras_iodev_list_rm_input(struct cras_iodev* dev) {
+int cras_iodev_list_rm_input(struct cras_iodev *dev)
+{
return 0;
}
-char* cras_iodev_list_get_hotword_models(cras_node_id_t node_id) {
- return NULL;
+char *cras_iodev_list_get_hotword_models(cras_node_id_t node_id)
+{
+ return NULL;
}
int cras_iodev_list_set_hotword_model(cras_node_id_t node_id,
- const char* model_name) {
- return 0;
+ const char *model_name)
+{
+ return 0;
}
-int cras_iodev_list_suspend_hotword_streams() {
+int cras_iodev_list_suspend_hotword_streams()
+{
return 0;
}
-int cras_iodev_list_resume_hotword_stream() {
+int cras_iodev_list_resume_hotword_stream()
+{
return 0;
}
-struct audio_thread* cras_iodev_list_get_audio_thread() {
+struct audio_thread *cras_iodev_list_get_audio_thread()
+{
return NULL;
}
// From alsa helper.
-int cras_alsa_set_channel_map(snd_pcm_t* handle,
- struct cras_audio_format* fmt) {
+int cras_alsa_set_channel_map(snd_pcm_t *handle,
+ struct cras_audio_format *fmt)
+{
return 0;
}
-int cras_alsa_get_channel_map(snd_pcm_t* handle,
- struct cras_audio_format* fmt) {
+int cras_alsa_get_channel_map(snd_pcm_t *handle,
+ struct cras_audio_format *fmt)
+{
return 0;
}
-int cras_alsa_pcm_open(snd_pcm_t** handle,
- const char* dev,
- snd_pcm_stream_t stream) {
- *handle = (snd_pcm_t*)0x24;
+int cras_alsa_pcm_open(snd_pcm_t **handle, const char *dev,
+ snd_pcm_stream_t stream)
+{
+ *handle = (snd_pcm_t *)0x24;
cras_alsa_open_called++;
return 0;
}
-int cras_alsa_pcm_close(snd_pcm_t* handle) {
+int cras_alsa_pcm_close(snd_pcm_t *handle)
+{
return 0;
}
-int cras_alsa_pcm_start(snd_pcm_t* handle) {
+int cras_alsa_pcm_start(snd_pcm_t *handle)
+{
cras_alsa_start_called++;
return 0;
}
-int cras_alsa_pcm_drain(snd_pcm_t* handle) {
+int cras_alsa_pcm_drain(snd_pcm_t *handle)
+{
return 0;
}
-int cras_alsa_fill_properties(snd_pcm_t* handle,
- size_t** rates,
- size_t** channel_counts,
- snd_pcm_format_t** formats) {
- *rates = (size_t*)malloc(sizeof(**rates) * 3);
+int cras_alsa_fill_properties(snd_pcm_t *handle,
+ size_t **rates,
+ size_t **channel_counts,
+ snd_pcm_format_t **formats)
+{
+ *rates = (size_t *)malloc(sizeof(**rates) * 3);
(*rates)[0] = 44100;
(*rates)[1] = 48000;
(*rates)[2] = 0;
- *channel_counts = (size_t*)malloc(sizeof(**channel_counts) * 2);
+ *channel_counts = (size_t *)malloc(sizeof(**channel_counts) * 2);
(*channel_counts)[0] = 2;
(*channel_counts)[1] = 0;
- *formats = (snd_pcm_format_t*)malloc(sizeof(**formats) * 2);
+ *formats = (snd_pcm_format_t *)malloc(sizeof(**formats) * 2);
(*formats)[0] = SND_PCM_FORMAT_S16_LE;
(*formats)[1] = (snd_pcm_format_t)0;
cras_alsa_fill_properties_called++;
return 0;
}
-int cras_alsa_set_hwparams(snd_pcm_t* handle,
- struct cras_audio_format* format,
- snd_pcm_uframes_t* buffer_size,
- int period_wakeup,
- unsigned int dma_period_time) {
+int cras_alsa_set_hwparams(snd_pcm_t *handle, struct cras_audio_format *format,
+ snd_pcm_uframes_t *buffer_size, int period_wakeup,
+ unsigned int dma_period_time)
+{
return 0;
}
-int cras_alsa_set_swparams(snd_pcm_t* handle, int* enable_htimestamp) {
+int cras_alsa_set_swparams(snd_pcm_t *handle, int *enable_htimestamp)
+{
return 0;
}
-int cras_alsa_get_avail_frames(snd_pcm_t* handle,
- snd_pcm_uframes_t buf_size,
+int cras_alsa_get_avail_frames(snd_pcm_t *handle, snd_pcm_uframes_t buf_size,
snd_pcm_uframes_t severe_underrun_frames,
const char* dev_name,
- snd_pcm_uframes_t* used,
- struct timespec* tstamp) {
+ snd_pcm_uframes_t *used,
+ struct timespec *tstamp)
+{
*used = cras_alsa_get_avail_frames_avail;
clock_gettime(CLOCK_MONOTONIC_RAW, tstamp);
return cras_alsa_get_avail_frames_ret;
}
-int cras_alsa_get_delay_frames(snd_pcm_t* handle,
- snd_pcm_uframes_t buf_size,
- snd_pcm_sframes_t* delay) {
+int cras_alsa_get_delay_frames(snd_pcm_t *handle, snd_pcm_uframes_t buf_size,
+ snd_pcm_sframes_t *delay)
+{
*delay = 0;
return 0;
}
-int cras_alsa_mmap_begin(snd_pcm_t* handle,
- unsigned int format_bytes,
- uint8_t** dst,
- snd_pcm_uframes_t* offset,
- snd_pcm_uframes_t* frames) {
+int cras_alsa_mmap_begin(snd_pcm_t *handle, unsigned int format_bytes,
+ uint8_t **dst, snd_pcm_uframes_t *offset,
+ snd_pcm_uframes_t *frames)
+{
*dst = cras_alsa_mmap_begin_buffer;
*frames = cras_alsa_mmap_begin_frames;
return 0;
}
-int cras_alsa_mmap_commit(snd_pcm_t* handle,
- snd_pcm_uframes_t offset,
- snd_pcm_uframes_t frames) {
+int cras_alsa_mmap_commit(snd_pcm_t *handle, snd_pcm_uframes_t offset,
+ snd_pcm_uframes_t frames)
+{
return 0;
}
-int cras_alsa_attempt_resume(snd_pcm_t* handle) {
+int cras_alsa_attempt_resume(snd_pcm_t *handle)
+{
cras_alsa_attempt_resume_called++;
return 0;
}
// ALSA stubs.
-int snd_pcm_format_physical_width(snd_pcm_format_t format) {
+int snd_pcm_format_physical_width(snd_pcm_format_t format)
+{
return 16;
}
-snd_pcm_state_t snd_pcm_state(snd_pcm_t* handle) {
+snd_pcm_state_t snd_pcm_state(snd_pcm_t *handle)
+{
return snd_pcm_state_ret;
}
-const char* snd_strerror(int errnum) {
+const char *snd_strerror(int errnum)
+{
return "Alsa Error in UT";
}
-struct mixer_control* cras_alsa_mixer_get_control_for_section(
- struct cras_alsa_mixer* cras_mixer,
- const struct ucm_section* section) {
+struct mixer_control *cras_alsa_mixer_get_control_for_section(
+ struct cras_alsa_mixer *cras_mixer,
+ const struct ucm_section *section)
+{
cras_alsa_mixer_get_control_for_section_called++;
return cras_alsa_mixer_get_control_for_section_return_value;
}
-const char* cras_alsa_mixer_get_control_name(
- const struct mixer_control* control) {
+const char *cras_alsa_mixer_get_control_name(
+ const struct mixer_control *control)
+{
ControlNameMap::iterator it;
cras_alsa_mixer_get_control_name_called++;
it = cras_alsa_mixer_get_control_name_values.find(control);
@@ -2457,186 +2457,220 @@ const char* cras_alsa_mixer_get_control_name(
}
// From system_state.
-size_t cras_system_get_volume() {
+size_t cras_system_get_volume()
+{
sys_get_volume_called++;
return sys_get_volume_return_value;
}
-long cras_system_get_capture_gain() {
+long cras_system_get_capture_gain()
+{
sys_get_capture_gain_called++;
return sys_get_capture_gain_return_value;
}
-int cras_system_get_mute() {
+int cras_system_get_mute()
+{
sys_get_mute_called++;
return sys_get_mute_return_value;
}
-int cras_system_get_capture_mute() {
+int cras_system_get_capture_mute()
+{
sys_get_capture_mute_called++;
return sys_get_capture_mute_return_value;
}
-void cras_system_set_volume_limits(long min, long max) {
+void cras_system_set_volume_limits(long min, long max)
+{
sys_set_volume_limits_called++;
}
-void cras_system_set_capture_gain_limits(long min, long max) {
+void cras_system_set_capture_gain_limits(long min, long max)
+{
cras_system_set_capture_gain_limits_set_value[0] = min;
cras_system_set_capture_gain_limits_set_value[1] = max;
sys_set_capture_gain_limits_called++;
}
// From cras_alsa_mixer.
-void cras_alsa_mixer_set_dBFS(struct cras_alsa_mixer* m,
- long dB_level,
- struct mixer_control* output) {
+void cras_alsa_mixer_set_dBFS(struct cras_alsa_mixer *m,
+ long dB_level,
+ struct mixer_control *output)
+{
alsa_mixer_set_dBFS_called++;
alsa_mixer_set_dBFS_value = dB_level;
alsa_mixer_set_dBFS_output = output;
}
-void cras_alsa_mixer_set_mute(struct cras_alsa_mixer* cras_mixer,
- int muted,
- struct mixer_control* mixer_output) {
+void cras_alsa_mixer_set_mute(struct cras_alsa_mixer *cras_mixer,
+ int muted,
+ struct mixer_control *mixer_output)
+{
alsa_mixer_set_mute_called++;
alsa_mixer_set_mute_value = muted;
alsa_mixer_set_mute_output = mixer_output;
}
-long cras_alsa_mixer_get_dB_range(struct cras_alsa_mixer* cras_mixer) {
+long cras_alsa_mixer_get_dB_range(struct cras_alsa_mixer *cras_mixer)
+{
alsa_mixer_get_dB_range_called++;
return alsa_mixer_get_dB_range_value;
}
-long cras_alsa_mixer_get_output_dB_range(struct mixer_control* mixer_output) {
+long cras_alsa_mixer_get_output_dB_range(
+ struct mixer_control *mixer_output)
+{
alsa_mixer_get_output_dB_range_called++;
return alsa_mixer_get_output_dB_range_value;
}
-void cras_alsa_mixer_set_capture_dBFS(struct cras_alsa_mixer* m,
- long dB_level,
- struct mixer_control* mixer_input) {
+void cras_alsa_mixer_set_capture_dBFS(struct cras_alsa_mixer *m, long dB_level,
+ struct mixer_control *mixer_input)
+{
alsa_mixer_set_capture_dBFS_called++;
alsa_mixer_set_capture_dBFS_value = dB_level;
alsa_mixer_set_capture_dBFS_input = mixer_input;
}
-void cras_alsa_mixer_set_capture_mute(struct cras_alsa_mixer* m,
- int mute,
- struct mixer_control* mixer_input) {
+void cras_alsa_mixer_set_capture_mute(struct cras_alsa_mixer *m, int mute,
+ struct mixer_control *mixer_input)
+{
alsa_mixer_set_capture_mute_called++;
alsa_mixer_set_capture_mute_value = mute;
alsa_mixer_set_capture_mute_input = mixer_input;
}
-void cras_alsa_mixer_list_outputs(struct cras_alsa_mixer* cras_mixer,
- cras_alsa_mixer_control_callback cb,
- void* callback_arg) {
+void cras_alsa_mixer_list_outputs(struct cras_alsa_mixer *cras_mixer,
+ cras_alsa_mixer_control_callback cb,
+ void *callback_arg)
+{
cras_alsa_mixer_list_outputs_called++;
for (size_t i = 0; i < cras_alsa_mixer_list_outputs_outputs_length; i++) {
cb(cras_alsa_mixer_list_outputs_outputs[i], callback_arg);
}
}
-void cras_alsa_mixer_list_inputs(struct cras_alsa_mixer* cras_mixer,
- cras_alsa_mixer_control_callback cb,
- void* callback_arg) {
+void cras_alsa_mixer_list_inputs(struct cras_alsa_mixer *cras_mixer,
+ cras_alsa_mixer_control_callback cb,
+ void *callback_arg)
+{
cras_alsa_mixer_list_inputs_called++;
for (size_t i = 0; i < cras_alsa_mixer_list_inputs_outputs_length; i++) {
cb(cras_alsa_mixer_list_inputs_outputs[i], callback_arg);
}
}
-int cras_alsa_mixer_set_output_active_state(struct mixer_control* output,
- int active) {
+int cras_alsa_mixer_set_output_active_state(
+ struct mixer_control *output,
+ int active)
+{
cras_alsa_mixer_set_output_active_state_called++;
cras_alsa_mixer_set_output_active_state_outputs.push_back(output);
cras_alsa_mixer_set_output_active_state_values.push_back(active);
return 0;
}
-void cras_volume_curve_destroy(struct cras_volume_curve* curve) {}
+void cras_volume_curve_destroy(struct cras_volume_curve *curve)
+{
+}
-long cras_alsa_mixer_get_minimum_capture_gain(
- struct cras_alsa_mixer* cmix,
- struct mixer_control* mixer_input) {
- cras_alsa_mixer_get_minimum_capture_gain_called++;
- cras_alsa_mixer_get_minimum_capture_gain_mixer_input = mixer_input;
- return cras_alsa_mixer_get_minimum_capture_gain_ret_value;
+long cras_alsa_mixer_get_minimum_capture_gain(struct cras_alsa_mixer *cmix,
+ struct mixer_control *mixer_input)
+{
+ cras_alsa_mixer_get_minimum_capture_gain_called++;
+ cras_alsa_mixer_get_minimum_capture_gain_mixer_input = mixer_input;
+ return cras_alsa_mixer_get_minimum_capture_gain_ret_value;
}
-long cras_alsa_mixer_get_maximum_capture_gain(
- struct cras_alsa_mixer* cmix,
- struct mixer_control* mixer_input) {
- cras_alsa_mixer_get_maximum_capture_gain_called++;
- cras_alsa_mixer_get_maximum_capture_gain_mixer_input = mixer_input;
- return cras_alsa_mixer_get_maximum_capture_gain_ret_value;
+long cras_alsa_mixer_get_maximum_capture_gain(struct cras_alsa_mixer *cmix,
+ struct mixer_control *mixer_input)
+{
+ cras_alsa_mixer_get_maximum_capture_gain_called++;
+ cras_alsa_mixer_get_maximum_capture_gain_mixer_input = mixer_input;
+ return cras_alsa_mixer_get_maximum_capture_gain_ret_value;
}
-int cras_alsa_mixer_has_main_volume(const struct cras_alsa_mixer* cras_mixer) {
+int cras_alsa_mixer_has_main_volume(const struct cras_alsa_mixer *cras_mixer)
+{
return 1;
}
-int cras_alsa_mixer_has_volume(const struct mixer_control* mixer_control) {
+int cras_alsa_mixer_has_volume(const struct mixer_control *mixer_control)
+{
return 1;
}
// From cras_alsa_jack
-struct cras_alsa_jack_list* cras_alsa_jack_list_create(
- unsigned int card_index,
- const char* card_name,
- unsigned int device_index,
- int check_gpio_jack,
- struct cras_alsa_mixer* mixer,
- struct cras_use_case_mgr* ucm,
- snd_hctl_t* hctl,
- enum CRAS_STREAM_DIRECTION direction,
- jack_state_change_callback* cb,
- void* cb_data) {
+struct cras_alsa_jack_list *cras_alsa_jack_list_create(
+ unsigned int card_index,
+ const char *card_name,
+ unsigned int device_index,
+ int check_gpio_jack,
+ struct cras_alsa_mixer *mixer,
+ struct cras_use_case_mgr *ucm,
+ snd_hctl_t *hctl,
+ enum CRAS_STREAM_DIRECTION direction,
+ jack_state_change_callback *cb,
+ void *cb_data)
+{
cras_alsa_jack_list_create_called++;
cras_alsa_jack_list_create_cb = cb;
cras_alsa_jack_list_create_cb_data = cb_data;
- return (struct cras_alsa_jack_list*)0xfee;
+ return (struct cras_alsa_jack_list *)0xfee;
}
int cras_alsa_jack_list_find_jacks_by_name_matching(
- struct cras_alsa_jack_list* jack_list) {
+ struct cras_alsa_jack_list *jack_list)
+{
cras_alsa_jack_list_find_jacks_by_name_matching_called++;
return 0;
}
int cras_alsa_jack_list_add_jack_for_section(
- struct cras_alsa_jack_list* jack_list,
- struct ucm_section* ucm_section,
- struct cras_alsa_jack** result_jack) {
+ struct cras_alsa_jack_list *jack_list,
+ struct ucm_section *ucm_section,
+ struct cras_alsa_jack **result_jack)
+{
cras_alsa_jack_list_add_jack_for_section_called++;
if (result_jack)
*result_jack = cras_alsa_jack_list_add_jack_for_section_result_jack;
return 0;
}
-void cras_alsa_jack_list_destroy(struct cras_alsa_jack_list* jack_list) {
+void cras_alsa_jack_list_destroy(struct cras_alsa_jack_list *jack_list)
+{
cras_alsa_jack_list_destroy_called++;
}
-int cras_alsa_jack_list_has_hctl_jacks(struct cras_alsa_jack_list* jack_list) {
+int cras_alsa_jack_list_has_hctl_jacks(struct cras_alsa_jack_list *jack_list)
+{
return cras_alsa_jack_list_has_hctl_jacks_return_val;
}
-void cras_alsa_jack_list_report(const struct cras_alsa_jack_list* jack_list) {}
+void cras_alsa_jack_list_report(const struct cras_alsa_jack_list *jack_list)
+{
+}
-void cras_alsa_jack_enable_ucm(const struct cras_alsa_jack* jack, int enable) {
+void cras_alsa_jack_enable_ucm(const struct cras_alsa_jack *jack, int enable) {
cras_alsa_jack_enable_ucm_called++;
}
-const char* cras_alsa_jack_get_name(const struct cras_alsa_jack* jack) {
+const char *cras_alsa_jack_get_name(const struct cras_alsa_jack *jack)
+{
cras_alsa_jack_get_name_called++;
return cras_alsa_jack_get_name_ret_value;
}
-const char* ucm_get_dsp_name_default(struct cras_use_case_mgr* mgr,
- int direction) {
+const char *cras_alsa_jack_get_dsp_name(const struct cras_alsa_jack *jack)
+{
+ cras_alsa_jack_get_dsp_name_called++;
+ return jack ? cras_alsa_jack_get_dsp_name_value : NULL;
+}
+
+const char *ucm_get_dsp_name_default(struct cras_use_case_mgr *mgr,
+ int direction)
+{
ucm_get_dsp_name_default_called++;
if (ucm_get_dsp_name_default_value)
return strdup(ucm_get_dsp_name_default_value);
@@ -2644,41 +2678,30 @@ const char* ucm_get_dsp_name_default(struct cras_use_case_mgr* mgr,
return NULL;
}
-const char* ucm_get_dsp_name_for_dev(struct cras_use_case_mgr* mgr,
- const char* dev) {
- DspNameMap::iterator it;
- ucm_get_dsp_name_for_dev_called++;
- if (!dev)
- return NULL;
- it = ucm_get_dsp_name_for_dev_values.find(dev);
- if (it == ucm_get_dsp_name_for_dev_values.end())
- return NULL;
- return strdup(it->second.c_str());
-}
-
-struct mixer_control* cras_alsa_jack_get_mixer_output(
- const struct cras_alsa_jack* jack) {
+struct mixer_control *cras_alsa_jack_get_mixer_output(
+ const struct cras_alsa_jack *jack)
+{
return cras_alsa_jack_get_mixer_output_ret;
}
-struct mixer_control* cras_alsa_jack_get_mixer_input(
- const struct cras_alsa_jack* jack) {
+struct mixer_control *cras_alsa_jack_get_mixer_input(
+ const struct cras_alsa_jack *jack)
+{
return cras_alsa_jack_get_mixer_input_ret;
}
-int ucm_set_enabled(struct cras_use_case_mgr* mgr,
- const char* dev,
- int enabled) {
+int ucm_set_enabled(
+ struct cras_use_case_mgr *mgr, const char *dev, int enabled) {
ucm_set_enabled_called++;
return 0;
}
-char* ucm_get_flag(struct cras_use_case_mgr* mgr, const char* flag_name) {
+char *ucm_get_flag(struct cras_use_case_mgr *mgr, const char *flag_name) {
if ((!strcmp(flag_name, "AutoUnplugInputNode") &&
auto_unplug_input_node_ret) ||
(!strcmp(flag_name, "AutoUnplugOutputNode") &&
auto_unplug_output_node_ret)) {
- char* ret = (char*)malloc(8);
+ char *ret = (char *)malloc(8);
snprintf(ret, 8, "%s", "1");
return ret;
}
@@ -2686,88 +2709,99 @@ char* ucm_get_flag(struct cras_use_case_mgr* mgr, const char* flag_name) {
return NULL;
}
-char* ucm_get_mic_positions(struct cras_use_case_mgr* mgr) {
+char *ucm_get_mic_positions(struct cras_use_case_mgr *mgr) {
return NULL;
}
-int ucm_swap_mode_exists(struct cras_use_case_mgr* mgr) {
+int ucm_swap_mode_exists(struct cras_use_case_mgr *mgr)
+{
return ucm_swap_mode_exists_ret_value;
}
-int ucm_enable_swap_mode(struct cras_use_case_mgr* mgr,
- const char* node_name,
- int enable) {
+int ucm_enable_swap_mode(struct cras_use_case_mgr *mgr, const char *node_name,
+ int enable)
+{
ucm_enable_swap_mode_called++;
return ucm_enable_swap_mode_ret_value;
}
-int ucm_get_min_buffer_level(struct cras_use_case_mgr* mgr,
- unsigned int* level) {
+int ucm_get_min_buffer_level(struct cras_use_case_mgr *mgr,
+ unsigned int *level)
+{
*level = 0;
return 0;
}
-unsigned int ucm_get_enable_htimestamp_flag(struct cras_use_case_mgr* mgr) {
+unsigned int ucm_get_enable_htimestamp_flag(struct cras_use_case_mgr *mgr)
+{
return ucm_get_enable_htimestamp_flag_ret;
}
-unsigned int ucm_get_disable_software_volume(struct cras_use_case_mgr* mgr) {
+unsigned int ucm_get_disable_software_volume(struct cras_use_case_mgr *mgr)
+{
return 0;
}
-int ucm_get_min_software_gain(struct cras_use_case_mgr* mgr,
- const char* dev,
- long* gain) {
+int ucm_get_min_software_gain(struct cras_use_case_mgr *mgr, const char *dev,
+ long *gain)
+{
ucm_get_min_software_gain_called++;
*gain = ucm_get_min_software_gain_value;
return ucm_get_min_software_gain_ret_value;
}
-int ucm_get_max_software_gain(struct cras_use_case_mgr* mgr,
- const char* dev,
- long* gain) {
+int ucm_get_max_software_gain(struct cras_use_case_mgr *mgr, const char *dev,
+ long *gain)
+{
ucm_get_max_software_gain_called++;
*gain = ucm_get_max_software_gain_value;
return ucm_get_max_software_gain_ret_value;
}
-char* ucm_get_hotword_models(struct cras_use_case_mgr* mgr) {
+char *ucm_get_hotword_models(struct cras_use_case_mgr *mgr)
+{
return NULL;
}
-int ucm_set_hotword_model(struct cras_use_case_mgr* mgr, const char* model) {
+int ucm_set_hotword_model(struct cras_use_case_mgr *mgr, const char *model)
+{
return 0;
}
-unsigned int ucm_get_dma_period_for_dev(struct cras_use_case_mgr* mgr,
- const char* dev) {
+unsigned int ucm_get_dma_period_for_dev(struct cras_use_case_mgr *mgr,
+ const char *dev)
+{
ucm_get_dma_period_for_dev_called++;
return ucm_get_dma_period_for_dev_ret;
}
-int ucm_get_sample_rate_for_dev(struct cras_use_case_mgr* mgr,
- const char* dev,
- enum CRAS_STREAM_DIRECTION direction) {
+int ucm_get_sample_rate_for_dev(struct cras_use_case_mgr *mgr, const char *dev,
+ enum CRAS_STREAM_DIRECTION direction)
+{
return -EINVAL;
}
-int ucm_get_capture_chmap_for_dev(struct cras_use_case_mgr* mgr,
- const char* dev,
- int8_t* channel_layout) {
+int ucm_get_capture_chmap_for_dev(struct cras_use_case_mgr *mgr,
+ const char *dev,
+ int8_t *channel_layout)
+{
return -EINVAL;
}
-int ucm_get_preempt_hotword(struct cras_use_case_mgr* mgr, const char* dev) {
+int ucm_get_preempt_hotword(struct cras_use_case_mgr *mgr, const char *dev)
+{
return 0;
}
-struct cras_volume_curve* cras_volume_curve_create_default() {
+struct cras_volume_curve *cras_volume_curve_create_default()
+{
return &default_curve;
}
-struct cras_volume_curve* cras_card_config_get_volume_curve_for_control(
- const struct cras_card_config* card_config,
- const char* control_name) {
+struct cras_volume_curve *cras_card_config_get_volume_curve_for_control(
+ const struct cras_card_config *card_config,
+ const char *control_name)
+{
VolCurveMap::iterator it;
cras_card_config_get_volume_curve_for_control_called++;
if (!control_name)
@@ -2778,73 +2812,93 @@ struct cras_volume_curve* cras_card_config_get_volume_curve_for_control(
return it->second;
}
-void cras_iodev_free_format(struct cras_iodev* iodev) {}
+void cras_iodev_free_format(struct cras_iodev *iodev)
+{
+}
-int cras_iodev_set_format(struct cras_iodev* iodev,
- const struct cras_audio_format* fmt) {
- fake_format = (struct cras_audio_format*)calloc(1, sizeof(cras_audio_format));
+int cras_iodev_set_format(struct cras_iodev *iodev,
+ const struct cras_audio_format *fmt)
+{
+ fake_format = (struct cras_audio_format *)calloc(
+ 1,
+ sizeof(cras_audio_format));
// Copy the content of format from fmt into format of iodev.
memcpy(fake_format, fmt, sizeof(cras_audio_format));
iodev->format = fake_format;
return 0;
}
-struct audio_thread* audio_thread_create() {
+struct audio_thread *audio_thread_create() {
return reinterpret_cast<audio_thread*>(0x323);
}
-void audio_thread_destroy(audio_thread* thread) {}
+void audio_thread_destroy(audio_thread* thread) {
+}
+
-void cras_iodev_update_dsp(struct cras_iodev* iodev) {
+
+void cras_iodev_update_dsp(struct cras_iodev *iodev)
+{
cras_iodev_update_dsp_called++;
cras_iodev_update_dsp_name = iodev->dsp_name;
}
-void cras_iodev_set_node_plugged(struct cras_ionode* ionode, int plugged) {
- cras_iodev_set_node_plugged_called++;
- cras_iodev_set_node_plugged_ionode = ionode;
- cras_iodev_set_node_plugged_value = plugged;
- if (ionode)
- ionode->plugged = plugged;
+int cras_iodev_set_node_attr(struct cras_ionode *ionode,
+ enum ionode_attr attr, int value)
+{
+ cras_iodev_set_node_attr_called++;
+ cras_iodev_set_node_attr_ionode = ionode;
+ cras_iodev_set_node_attr_attr = attr;
+ cras_iodev_set_node_attr_value = value;
+ if (ionode && (attr == IONODE_ATTR_PLUGGED))
+ ionode->plugged = value;
+ return 0;
}
-void cras_iodev_add_node(struct cras_iodev* iodev, struct cras_ionode* node) {
+void cras_iodev_add_node(struct cras_iodev *iodev, struct cras_ionode *node)
+{
cras_iodev_add_node_called++;
DL_APPEND(iodev->nodes, node);
}
-void cras_iodev_rm_node(struct cras_iodev* iodev, struct cras_ionode* node) {
+void cras_iodev_rm_node(struct cras_iodev *iodev, struct cras_ionode *node)
+{
DL_DELETE(iodev->nodes, node);
}
-void cras_iodev_set_active_node(struct cras_iodev* iodev,
- struct cras_ionode* node) {
+void cras_iodev_set_active_node(struct cras_iodev *iodev,
+ struct cras_ionode *node)
+{
iodev->active_node = node;
}
-void cras_iodev_free_resources(struct cras_iodev* iodev) {
+void cras_iodev_free_resources(struct cras_iodev *iodev)
+{
cras_iodev_free_resources_called++;
}
-void cras_alsa_jack_update_monitor_name(const struct cras_alsa_jack* jack,
- char* name_buf,
- unsigned int buf_size) {
+void cras_alsa_jack_update_monitor_name(const struct cras_alsa_jack *jack,
+ char *name_buf,
+ unsigned int buf_size)
+{
if (cras_alsa_jack_update_monitor_fake_name)
strcpy(name_buf, cras_alsa_jack_update_monitor_fake_name);
}
-void cras_alsa_jack_update_node_type(const struct cras_alsa_jack* jack,
- enum CRAS_NODE_TYPE* type) {
+void cras_alsa_jack_update_node_type(const struct cras_alsa_jack *jack,
+ enum CRAS_NODE_TYPE *type)
+{
cras_alsa_jack_update_node_type_called++;
}
-const char* cras_alsa_jack_get_ucm_device(const struct cras_alsa_jack* jack) {
+const char *cras_alsa_jack_get_ucm_device(const struct cras_alsa_jack *jack)
+{
return NULL;
}
-int ucm_get_default_node_gain(struct cras_use_case_mgr* mgr,
- const char* dev,
- long* gain) {
+int ucm_get_default_node_gain(struct cras_use_case_mgr *mgr, const char *dev,
+ long *gain)
+{
if (ucm_get_default_node_gain_values.find(dev) ==
ucm_get_default_node_gain_values.end())
return 1;
@@ -2853,57 +2907,70 @@ int ucm_get_default_node_gain(struct cras_use_case_mgr* mgr,
return 0;
}
-void cras_iodev_init_audio_area(struct cras_iodev* iodev, int num_channels) {}
+void cras_iodev_init_audio_area(struct cras_iodev *iodev,
+ int num_channels) {
+}
-void cras_iodev_free_audio_area(struct cras_iodev* iodev) {}
+void cras_iodev_free_audio_area(struct cras_iodev *iodev) {
+}
-int cras_iodev_reset_rate_estimator(const struct cras_iodev* iodev) {
+int cras_iodev_reset_rate_estimator(const struct cras_iodev *iodev)
+{
return 0;
}
-int cras_iodev_frames_queued(struct cras_iodev* iodev,
- struct timespec* tstamp) {
+int cras_iodev_frames_queued(struct cras_iodev *iodev, struct timespec *tstamp)
+{
clock_gettime(CLOCK_MONOTONIC_RAW, tstamp);
return cras_iodev_frames_queued_ret;
}
-int cras_iodev_buffer_avail(struct cras_iodev* iodev, unsigned hw_level) {
+int cras_iodev_buffer_avail(struct cras_iodev *iodev, unsigned hw_level)
+{
return cras_iodev_buffer_avail_ret;
}
-int cras_iodev_fill_odev_zeros(struct cras_iodev* odev, unsigned int frames) {
+int cras_iodev_fill_odev_zeros(struct cras_iodev *odev, unsigned int frames)
+{
cras_iodev_fill_odev_zeros_called++;
cras_iodev_fill_odev_zeros_frames = frames;
return 0;
}
-void cras_audio_area_config_buf_pointers(struct cras_audio_area* area,
- const struct cras_audio_format* fmt,
- uint8_t* base_buffer) {}
+void cras_audio_area_config_buf_pointers(struct cras_audio_area *area,
+ const struct cras_audio_format *fmt,
+ uint8_t *base_buffer)
+{
+}
-void audio_thread_add_callback(int fd, thread_callback cb, void* data) {
+void audio_thread_add_callback(int fd, thread_callback cb, void *data)
+{
audio_thread_cb = cb;
audio_thread_cb_data = data;
}
-void audio_thread_rm_callback(int fd) {}
+void audio_thread_rm_callback(int fd)
+{
+}
-int audio_thread_rm_callback_sync(struct audio_thread* thread, int fd) {
+int audio_thread_rm_callback_sync(struct audio_thread *thread, int fd) {
return 0;
}
-int cras_hotword_send_triggered_msg() {
+int cras_hotword_send_triggered_msg()
+{
hotword_send_triggered_msg_called++;
return 0;
}
-int snd_pcm_poll_descriptors_count(snd_pcm_t* pcm) {
+int snd_pcm_poll_descriptors_count(snd_pcm_t *pcm)
+{
return 1;
}
-int snd_pcm_poll_descriptors(snd_pcm_t* pcm,
- struct pollfd* pfds,
- unsigned int space) {
+int snd_pcm_poll_descriptors(snd_pcm_t *pcm, struct pollfd *pfds,
+ unsigned int space)
+{
if (space >= 1) {
pfds[0].events = POLLIN;
pfds[0].fd = 99;
@@ -2911,34 +2978,40 @@ int snd_pcm_poll_descriptors(snd_pcm_t* pcm,
return 0;
}
-int is_utf8_string(const char* string) {
+int is_utf8_string(const char* string)
+{
return is_utf8_string_ret_value;
}
-int cras_alsa_mmap_get_whole_buffer(snd_pcm_t* handle, uint8_t** dst) {
+int cras_alsa_mmap_get_whole_buffer(snd_pcm_t *handle, uint8_t **dst)
+{
snd_pcm_uframes_t offset, frames;
cras_alsa_mmap_get_whole_buffer_called++;
return cras_alsa_mmap_begin(handle, 0, dst, &offset, &frames);
}
-int cras_alsa_resume_appl_ptr(snd_pcm_t* handle, snd_pcm_uframes_t ahead) {
+int cras_alsa_resume_appl_ptr(snd_pcm_t *handle, snd_pcm_uframes_t ahead)
+{
cras_alsa_resume_appl_ptr_called++;
cras_alsa_resume_appl_ptr_ahead = ahead;
return 0;
}
-int cras_iodev_default_no_stream_playback(struct cras_iodev* odev, int enable) {
+int cras_iodev_default_no_stream_playback(struct cras_iodev *odev, int enable)
+{
return 0;
}
-enum CRAS_IODEV_STATE cras_iodev_state(const struct cras_iodev* iodev) {
+enum CRAS_IODEV_STATE cras_iodev_state(const struct cras_iodev *iodev)
+{
return iodev->state;
}
-int cras_iodev_dsp_set_swap_mode_for_node(struct cras_iodev* iodev,
- struct cras_ionode* node,
- int enable) {
+int cras_iodev_dsp_set_swap_mode_for_node(struct cras_iodev *iodev,
+ struct cras_ionode *node,
+ int enable)
+{
cras_iodev_dsp_set_swap_mode_for_node_called++;
return 0;
}
@@ -2947,11 +3020,4 @@ struct cras_ramp* cras_ramp_create() {
return (struct cras_ramp*)0x1;
}
-// From librt.
-int clock_gettime(clockid_t clk_id, struct timespec* tp) {
- tp->tv_sec = clock_gettime_retspec.tv_sec;
- tp->tv_nsec = clock_gettime_retspec.tv_nsec;
- return 0;
}
-
-} // extern "C"