summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCheng-Yi Chiang <cychiang@chromium.org>2016-12-13 16:33:42 +0800
committerchrome-bot <chrome-bot@chromium.org>2016-12-30 03:54:22 -0800
commitc921f933df5412b85da35d789a63000c44fe48cc (patch)
treeab84f9f3eeed2df4977752450bb7b8cab9ce9389
parent961c12cc9ec95b3c65c2a459e702aab37b1eda76 (diff)
downloadadhd-c921f933df5412b85da35d789a63000c44fe48cc.tar.gz
CRAS: iodev - Wrap set_mute with a function
It will be cleaner for users to access set_mute from this interface. BUG=chromium:669662 TEST=make check Change-Id: I41dba8ba8fdba492b71cda3b09b4ca4703953b24 Reviewed-on: https://chromium-review.googlesource.com/422614 Commit-Ready: Cheng-Yi Chiang <cychiang@chromium.org> Tested-by: Cheng-Yi Chiang <cychiang@chromium.org> Reviewed-by: Hsinyu Chao <hychao@chromium.org>
-rw-r--r--cras/src/server/cras_iodev.c10
-rw-r--r--cras/src/server/cras_iodev.h8
-rw-r--r--cras/src/tests/iodev_unittest.cc25
3 files changed, 43 insertions, 0 deletions
diff --git a/cras/src/server/cras_iodev.c b/cras/src/server/cras_iodev.c
index 4efe6141..95ae5643 100644
--- a/cras/src/server/cras_iodev.c
+++ b/cras/src/server/cras_iodev.c
@@ -1148,3 +1148,13 @@ int cras_iodev_reset_request(struct cras_iodev* iodev)
iodev->reset_request_pending = 1;
return cras_device_monitor_reset_device(iodev);
}
+
+int cras_iodev_set_mute(struct cras_iodev* iodev)
+{
+ if (!cras_iodev_is_open(iodev))
+ return 0;
+
+ if (iodev->set_mute)
+ iodev->set_mute(iodev);
+ return 0;
+}
diff --git a/cras/src/server/cras_iodev.h b/cras/src/server/cras_iodev.h
index 0c1b8cb6..7ce0ed97 100644
--- a/cras/src/server/cras_iodev.h
+++ b/cras/src/server/cras_iodev.h
@@ -633,4 +633,12 @@ int cras_iodev_reset_request(struct cras_iodev* iodev);
*/
int cras_iodev_output_underrun(struct cras_iodev *odev);
+/* Set iodev to mute/unmute state.
+ * Args:
+ * iodev[in] - The device.
+ * Returns:
+ * 0 on success. Negative error code on failure.
+ */
+int cras_iodev_set_mute(struct cras_iodev* iodev);
+
#endif /* CRAS_IODEV_H_ */
diff --git a/cras/src/tests/iodev_unittest.cc b/cras/src/tests/iodev_unittest.cc
index b4a56197..f52eb069 100644
--- a/cras/src/tests/iodev_unittest.cc
+++ b/cras/src/tests/iodev_unittest.cc
@@ -79,6 +79,7 @@ static int dev_stream_playback_frames_ret;
static int get_num_underruns_ret;
static int device_monitor_reset_device_called;
static int output_underrun_called;
+static int set_mute_called;
// Iodev callback
@@ -154,6 +155,7 @@ void ResetStubData() {
get_num_underruns_ret = 0;
device_monitor_reset_device_called = 0;
output_underrun_called = 0;
+ set_mute_called = 0;
}
namespace {
@@ -772,6 +774,11 @@ static void dev_set_capture_gain(struct cras_iodev *iodev)
{
}
+static void dev_set_mute(struct cras_iodev *iodev)
+{
+ set_mute_called++;
+}
+
TEST(IoNodePlug, PlugUnplugNode) {
struct cras_iodev iodev;
struct cras_ionode ionode, ionode2;
@@ -863,6 +870,24 @@ TEST(IoDev, SetNodeSwapLeftRight) {
EXPECT_EQ(2, notify_node_left_right_swapped_called);
}
+TEST(IoDev, SetMute) {
+ struct cras_iodev iodev;
+ int rc;
+
+ memset(&iodev, 0, sizeof(iodev));
+ iodev.set_mute = dev_set_mute;
+ iodev.state = CRAS_IODEV_STATE_CLOSE;
+
+ ResetStubData();
+ rc = cras_iodev_set_mute(&iodev);
+ EXPECT_EQ(0, rc);
+ EXPECT_EQ(0, set_mute_called);
+
+ iodev.state = CRAS_IODEV_STATE_OPEN;
+ rc = cras_iodev_set_mute(&iodev);
+ EXPECT_EQ(0, rc);
+ EXPECT_EQ(1, set_mute_called);
+}
// Test software volume changes for default output.
TEST(IoDev, SoftwareVolume) {