From 7d83e5c7816b5e343695a75ba58b32dbe1be969a Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Mon, 1 Oct 2007 20:16:28 +0000 Subject: move all sources down to a seperate src/ tree git-svn-id: file:///home/lennart/svn/public/libsydney/trunk@34 9ba3c220-e4d3-45a2-8aa3-73fcc9aff6ce --- src/test-pull.c | 73 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 src/test-pull.c (limited to 'src/test-pull.c') diff --git a/src/test-pull.c b/src/test-pull.c new file mode 100644 index 0000000..7f93906 --- /dev/null +++ b/src/test-pull.c @@ -0,0 +1,73 @@ +#include +#include +#include +#include +#include + +#include "sydney.h" +#include "macro.h" + +#define ASSERT_SUCCESS(x) do { \ + int _r; \ + if ((_r = x)) { \ + fprintf(stderr, "Operation <%s> failed: %s%s%s\n", \ + #x, \ + sa_strerror(_r), \ + _r == SA_ERROR_SYSTEM ? "; " : "", _r == SA_ERROR_SYSTEM ? strerror(errno) : ""); \ + } \ + assert(_r == SA_SUCCESS); \ +} while(0) + +#define FREQ 440 + +static const float data[4] = { 0.0, 1.0, 0.0, -1.0 }; + +static int callback(sa_stream_t *s, sa_event_t e) { + switch (e) { + case SA_EVENT_INIT_THREAD: + printf("Thread initialized.\n"); + return 0; + + case SA_EVENT_ERROR: { + int e; + ASSERT_SUCCESS(sa_stream_get_event_error(s, &e)); + printf("Error: %s\n", sa_strerror(e)); + return -1; + } + + case SA_EVENT_NOTIFY: + printf("Notified.\n"); + return 0; + + case SA_EVENT_REQUEST_IO: + + ASSERT_SUCCESS(sa_stream_write(s, data, sizeof(data))); + return 0; + + case _SA_EVENT_MAX: + ; + } + + sa_assert_not_reached(); +} + +int main(int argc, char *argv[]) { + + sa_stream_t *s; + + ASSERT_SUCCESS(sa_stream_create_pcm(&s, "Sine Test (pull)", SA_MODE_WRONLY, SA_PCM_FORMAT_FLOAT32_NE, FREQ * 4, 1)); + ASSERT_SUCCESS(sa_stream_change_device(s, "/dev/dsp1")); + ASSERT_SUCCESS(sa_stream_open(s)); + + ASSERT_SUCCESS(sa_stream_start_thread(s, callback)); + + sleep(20); + + ASSERT_SUCCESS(sa_stream_stop_thread(s)); + + ASSERT_SUCCESS(sa_stream_drain(s)); + + ASSERT_SUCCESS(sa_stream_destroy(s)); + + return 0; +} -- cgit