Не работает пример для работы с библиотекой LDSP под линукс. Ядро 2.6.13
В пример были внесены некоторые изменения (конфигурация каналов АЦП)? но к сожалению, это не привело нпи к какому результату.
Тескт программы приведен ниже:
* maptest.c */
/* Device mapping test */
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>
#include <sys/ioctl.h>
#include <sys/mman.h>
#include <ldsp/ldsp.h>
char *defname = "/dev/xdsp0";
fragment_info fi;
frame_timing ft;
int frag_frames = 128;
int frame_size = 128;
int main(int argc, char **argv)
{
LDSP_HANDLE dd;
short *w;
int x, c, i, j;
char *dname = defname;
void *map;
// dname = NULL;
// if(argc > 1) dname = argv[1];
char* DevName = "/dev/xdsp0";
x = ldspOpen(&dd, DevName, LDSP_ADC);
if(x < 0)
{
puts("Can't open device!");
return -1;
}
//Set Channels
int n =1;
int res;
printf("ldspChannels....");
res = ldspChannels(dd,&n);
if (res<0)
{
printf(" fails!/n");
return -1;
}
printf("succeded!/n");
int channel = 1;
channel_inf ci;
ci.mode = LCH_DIFFERENTIAL;
ci.input = channel;
ci.gain = 0;
ci.index = channel;
res = ldspSetChannel(dd,&ci);
if(res<0)
{
printf("Error setting ci/n");
return -1;
}
printf("Channel configured: index= %d/n",ci.index);
/* Set ADC rate */
ft.channel_rate = 100000;
ft.frame_rate = ft.channel_rate;
ldspSetTiming(dd, &ft);
printf("ADC frequency: %d Hz/n", ft.channel_rate);
printf("Frame rate: %d Hz/n", ft.frame_rate);
/* Set input buffer size */
fi.frag_size = frag_frames * frame_size;
fi.buf_size = fi.frag_size * 2;
ldspSetInBuf(dd, &fi);
printf("Buffer: %d/%d/n", fi.buf_size, fi.frag_size);
/* Map the input buffer */
puts("Mapping the buffer...");
map = ldspMapBuf(dd, 1, 0, fi.buf_size);
if(!map)
{
puts("Error: can't map input buffer");
return -1;
}
/* Start the device */
puts("Starting...");
c = LDSP_MASK_ADC;
x = ldspSetTrigger(dd, &c);
w = (short*) map;
for(i = 0; i < 8; i++)
{
sleep(1);
for(j = 0; j < 8; j++) printf("%8d", w[j]);
printf("/n");
}
ldspUnMapBuf(dd, w, fi.buf_size);
ldspClose(dd);
return 0;
}
данная программа выдает следующее:
dspChannels....succeded!
Channel configured: index= 1
ADC frequency: 100310 Hz
Frame rate: 100310 Hz
Buffer: 32768/16384
Mapping the buffer...
Starting...
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
Не могли бы вы сказать в чем дело? (стандартный пример выдает ровно ту же таблицу нулей)