diff options
author | Ludovic Pouzenc <ludovic@pouzenc.fr> | 2012-05-17 18:41:13 +0000 |
---|---|---|
committer | Ludovic Pouzenc <ludovic@pouzenc.fr> | 2012-05-17 18:41:13 +0000 |
commit | 7be3db60a0efba40a0c10a4476490a05fa62a1bc (patch) | |
tree | 3792cf240af3a9120a2b7ce841d6c46afc97db01 /tests/test1 | |
parent | 254383087213f2fd8b8e834081b24f04ad91124a (diff) | |
download | 2012-violon-leds-7be3db60a0efba40a0c10a4476490a05fa62a1bc.tar.gz 2012-violon-leds-7be3db60a0efba40a0c10a4476490a05fa62a1bc.tar.bz2 2012-violon-leds-7be3db60a0efba40a0c10a4476490a05fa62a1bc.zip |
Ajout des premiers bouts de code pour les tests :
test1 = prise de son via pulse audio (à l'arache avec le modèle "simple")
test2 = premières illuminations avec le projo LED
test3 = fade R/G/B et jeu avec les problématiques de timing
test4 = à faire : Appli GTK pour assembler les tests précédents
git-svn-id: file:///var/svn/2012-violon-leds/trunk@2 6be1fa4d-33ac-4c33-becc-79fcb3794bb6
Diffstat (limited to 'tests/test1')
-rwxr-xr-x | tests/test1/compil.sh | 3 | ||||
-rw-r--r-- | tests/test1/test1.c | 121 |
2 files changed, 124 insertions, 0 deletions
diff --git a/tests/test1/compil.sh b/tests/test1/compil.sh new file mode 100755 index 0000000..b54d0be --- /dev/null +++ b/tests/test1/compil.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +gcc -o test1 test1.c -lpulse-simple diff --git a/tests/test1/test1.c b/tests/test1/test1.c new file mode 100644 index 0000000..e99d2ff --- /dev/null +++ b/tests/test1/test1.c @@ -0,0 +1,121 @@ +/*** + This file is part of PulseAudio. + + PulseAudio is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as published + by the Free Software Foundation; either version 2.1 of the License, + or (at your option) any later version. + + PulseAudio is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with PulseAudio; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 + USA. + ***/ + +#ifdef HAVE_CONFIG_H +#include <config.h> +#endif + +#include <stdio.h> +#include <unistd.h> +#include <string.h> +#include <errno.h> + +#include <pulse/simple.h> +#include <pulse/error.h> + +#define BUFSIZE 1024 + +/* A simple routine calling UNIX write() in a loop */ +static ssize_t loop_write(int fd, const void*data, size_t size) { + ssize_t ret = 0; + + while (size > 0) { + ssize_t r; + + if ((r = write(fd, data, size)) < 0) + return r; + + if (r == 0) + break; + + ret += r; + data = (const uint8_t*) data + r; + size -= (size_t) r; + } + + return ret; +} + +int main(int argc, char*argv[]) { + + + /* The sample type to use */ + static const pa_sample_spec ss = { + .format = PA_SAMPLE_S16LE, + .rate = 44100, + .channels = 2 + }; + pa_simple *s = NULL; + int ret = 1; + int error; + int i,j; + float sum; + + /* Create the recording stream */ + if (!(s = pa_simple_new(NULL, argv[0], PA_STREAM_RECORD, NULL, "record", &ss, NULL, NULL, &error))) { + fprintf(stderr, __FILE__": pa_simple_new() failed: %s\n", pa_strerror(error)); + goto finish; + } + + j=0; + for (;;) { + uint8_t buf[BUFSIZE]; + + /* Record some data ... */ + if (pa_simple_read(s, buf, sizeof(buf), &error) < 0) { + fprintf(stderr, __FILE__": pa_simple_read() failed: %s\n", pa_strerror(error)); + goto finish; + } + +//printf("DEBUG : BUFSIZE==%i\n", BUFSIZE); + sum=0; + for (i=0;i<BUFSIZE;i=i+4) { +//printf("DEBUG : i==%i\n", i); + sum= (buf[i]*256+buf[i+1] -26000 ); + } + + if ( sum > 2000 || sum < -2000) { + printf("!"); + } else { + printf("."); + } + fflush(stdout); + + //printf("%i\t%f\n", j++, sum); +/* if (printf("%f\n", sum)) { + fprintf(stderr, __FILE__": write() failed: %s\n", strerror(errno)); + goto finish; + } +*/ + /* And write it to STDOUT + if (loop_write(STDOUT_FILENO, buf, sizeof(buf)) != sizeof(buf)) { + fprintf(stderr, __FILE__": write() failed: %s\n", strerror(errno)); + goto finish; + }*/ + } + + ret = 0; + +finish: + + if (s) + pa_simple_free(s); + + return ret; +} |