[Asterisk-cvs] zaptel fxsdump.c,NONE,1.1 Makefile,1.12,1.13
markster at lists.digium.com
markster at lists.digium.com
Fri Oct 24 08:10:06 CDT 2003
Update of /usr/cvsroot/zaptel
In directory mongoose.digium.com:/tmp/cvs-serv11053
Modified Files:
Makefile
Added Files:
fxsdump.c
Log Message:
fxsdump
--- NEW FILE: fxsdump.c ---
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>
#include <string.h>
#include <errno.h>
#include <sys/ioctl.h>
#include <linux/zaptel.h>
#include <math.h>
#include "coeffs.h"
#define FREQ 1000.0
#define LEVEL 16384.0
#define FIRLEN (sizeof(coeffs) / sizeof(coeffs[0]))
int firguess(int sample)
{
static float hist[FIRLEN] = { 0, };
int x;
float sum;
for (x=FIRLEN-2;x>=0;x--)
hist[x + 1] = hist[x];
hist[0] = sample;
sum = 0;
for (x=0;x<FIRLEN;x++) {
sum += hist[x] * (float)coeffs[x];
}
sum /= 32767.0;
if (sum > 32767.0)
sum = 32767.0;
if (sum < -32768.0)
sum = -32768.0;
return (int)sum;
}
int obufnext(void)
{
static int pos = 0;
static int spos = 0;
float res;
if (++spos > 100) {
res = LEVEL * sin(2.0 * FREQ * M_PI * (float)pos / 8000.0);
if (res > 32767.0)
res = 32767.0;
if (res < -32768.0)
res = -32768.0;
pos++;
} else {
res = 0.0;
spos++;
}
return (int)res;
}
int percent(int a, int b)
{
float af = a;
float bf = b;
if (!b)
return 0;
return (int)((af/bf) * 100.0);
}
int main()
{
int fd;
int fdo,fdo2,fdo3;
int res, x;
int z=0;
short ibuf[512];
short obuf[512];
short pred[512];
fd = open("/dev/zap/1", O_RDWR);
if (fd < 0) {
fprintf(stderr, "open: %s\n", strerror(errno));
exit(1);
}
fdo = open("datain.raw", O_WRONLY | O_TRUNC | O_CREAT);
fdo2 = open("dataout.raw", O_WRONLY | O_TRUNC | O_CREAT);
fdo3 = open("datapred.raw", O_WRONLY | O_TRUNC | O_CREAT);
x = 1;
#if 0
if (ioctl(fd, ZT_AUDIOMODE, &x)) {
fprintf(stderr, "audiomode: %s\n", strerror(errno));
exit(1);
}
x = 1;
if (ioctl(fd, ZT_SETLINEAR, &x)) {
fprintf(stderr, "linear: %s\n", strerror(errno));
exit(1);
}
#endif
for (x=0;x<sizeof(obuf)/sizeof(obuf[0]);x++) {
obuf[x] = obufnext();
}
x = ZT_FLUSH_BOTH;
if (ioctl(fd, ZT_FLUSH, &x)) {
fprintf(stderr, "flush: %s\n", strerror(errno));
exit(1);
}
for (;;) {
for (x=0;x<sizeof(obuf) / sizeof(obuf[0]); x++)
obuf[x] = htons(obuf[x]);
res = write(fd, obuf, sizeof(obuf));
if (res < sizeof(obuf)) {
fprintf(stderr, "Write Buff: %d/%s\n", res, strerror(errno));
exit(1);
}
res = read(fd, ibuf, sizeof(ibuf));
if (res < sizeof(ibuf)) {
fprintf(stderr, "Buff: %d/%s\n", res, strerror(errno));
exit(1);
}
for (x=0;x<sizeof(ibuf) / sizeof(ibuf[0]); x++)
ibuf[x] = ntohs(ibuf[x]);
for (x=0;x<sizeof(obuf) / sizeof(obuf[0]); x++)
obuf[x] = ntohs(obuf[x]);
for (x=0;x<sizeof(pred) / sizeof(pred[0]); x++)
pred[x] = firguess(obuf[x]);
write(fdo, ibuf, sizeof(ibuf));
write(fdo2, obuf, sizeof(obuf));
write(fdo3, pred, sizeof(pred));
for (x=0;x<sizeof(ibuf)/sizeof(ibuf[0]);x++) {
printf("(%5d/%5d/%5d) ", percent(ibuf[x], pred[x]) /*, (int)obuf[x] */, (int)ibuf[x], (int)pred[x]);
obuf[x] = obufnext();
z++;
if (z == 4) {
printf("\n");
z = 0;
}
}
}
}
Index: Makefile
===================================================================
RCS file: /usr/cvsroot/zaptel/Makefile,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -d -r1.12 -r1.13
--- Makefile 15 Aug 2003 13:16:50 -0000 1.12
+++ Makefile 24 Oct 2003 13:36:13 -0000 1.13
@@ -216,6 +216,9 @@
fxstest: fxstest.o
$(CC) -o fxstest fxstest.o -ltonezone
+fxsdump: fxsdump.o
+ $(CC) -o fxsdump fxsdump.o -lm
+
devices:
ifeq ($(DEVFS),)
mkdir -p $(INSTALL_PREFIX)/dev/zap
More information about the svn-commits
mailing list