From 767cecac3a672ef337754281c27a0e69e4cd8e62 Mon Sep 17 00:00:00 2001 From: tomaszrykala Date: Wed, 25 Jan 2017 23:47:25 +0000 Subject: [PATCH] Add play(frequency, duration) to Speaker --- .../things/contrib/driver/pwmspeaker/Speaker.java | 15 +++++++++++++++ .../contrib/driver/pwmspeaker/SpeakerTest.java | 10 ++++++++++ 2 files changed, 25 insertions(+) diff --git a/pwmspeaker/src/main/java/com/google/android/things/contrib/driver/pwmspeaker/Speaker.java b/pwmspeaker/src/main/java/com/google/android/things/contrib/driver/pwmspeaker/Speaker.java index 8e6c4d1..4eef08f 100644 --- a/pwmspeaker/src/main/java/com/google/android/things/contrib/driver/pwmspeaker/Speaker.java +++ b/pwmspeaker/src/main/java/com/google/android/things/contrib/driver/pwmspeaker/Speaker.java @@ -84,6 +84,21 @@ public void play(double frequency) throws IOException, IllegalStateException { mPwm.setEnabled(true); } + /** + * Play the specified frequency. Plays for the given duration, after which it calls {@link #stop()} itself. + * + * @param frequency the frequency to play in Hz + * @param duration the duration of the sound in millis + * @throws IOException + * @throws IllegalStateException if the device is closed + * @throws InterruptedException if any thread has interrupted the thread used for the {@param duration} of the play + */ + public void play(double frequency, long duration) throws IOException, IllegalStateException, InterruptedException { + play(frequency); + Thread.sleep(duration); + stop(); + } + /** * Stop a currently playing frequency * diff --git a/pwmspeaker/src/test/java/com/google/android/things/contrib/driver/pwmspeaker/SpeakerTest.java b/pwmspeaker/src/test/java/com/google/android/things/contrib/driver/pwmspeaker/SpeakerTest.java index 050ade5..283df65 100644 --- a/pwmspeaker/src/test/java/com/google/android/things/contrib/driver/pwmspeaker/SpeakerTest.java +++ b/pwmspeaker/src/test/java/com/google/android/things/contrib/driver/pwmspeaker/SpeakerTest.java @@ -67,6 +67,16 @@ public void play_throwsIfClosed() throws IOException { speaker.play(440); } + @Test + public void playWithDurationStop() throws IOException, InterruptedException { + Speaker speaker = new Speaker(mPwm); + + speaker.play(440, 100); + Mockito.verify(mPwm).setPwmFrequencyHz(440); + Mockito.verify(mPwm).setEnabled(true); + Mockito.verify(mPwm).setEnabled(false); + } + @Test public void stop_throwsIfClosed() throws IOException { Speaker speaker = new Speaker(mPwm);