#include #include #include #include #include #include #include #include "saa713x_ioctl.h" static struct saa_audio_opt audio_opt = { /* PAL A2 FM Defaults */ .sao_flag_idarea = 0, .sao_idmod = 0, .sao_ch1mode = CH1MODE_FM, .sao_ch2mode = CH2MODE_FM, .sao_fltbw = FLTBW_C1MIN_C2MIN, .sao_siffreq1 = 0x729555, .sao_siffreq2 = 0x77A101, .sao_flag_hpen = 0, .sao_sifp = 0, .sao_sifa = SIFA_N10DB, .sao_sifgain = 0, .sao_flag_sifagc_off = 0, .sao_flag_sifagc_slow = 0, .sao_flag_fmdsch1 = 0, .sao_fmdsch1 = 0, .sao_flag_fmdsch2 = 0, .sao_fmdsch2 = 0, .sao_flag_idswfm = 1, /* Auto DMSel ON */ .sao_fmdmsel = 0, .sao_dac_sdos = SDOS_FMAM_FMAM, .sao_dac_avl = AVL_OFF, .sao_dac_ogain = SDGS_0DB, .sao_flag_aasdma = 1, .sao_dsp_csm = CSM_LEFT_RIGHT, .sao_flag_ch1_2vrms = 0, .sao_flag_ch2_2vrms = 0 }; static struct saa_audio_spec audio_spec = { .sas_audsel = AUDSEL_SIF, .sas_sfs = SFS_SIF_32KHZ, .sas_icsch = 1, .sas_cap_sampcount = 16384, .sas_audfmt = AUDFMT_16BIT, .sas_audsamp = AUDSAMP_STEREO, .sas_flag_samp2complement = 1, .sas_flags = 0, .sas_aclkfreq = ACLKFREQ_32p11MHZ, }; int main(int argc, char **argv) { int fd, dummy; uint8_t *abuf; if (argc != 2) errx(ENOTSUP, "Usage: %s ", argv[0]); if ( (fd = open(argv[1], O_RDWR)) == -1) err(errno, "Error opening audio device %s", argv[1]); if (ioctl(fd, SETAUDIOOPT, &audio_opt) == -1) err(errno, "Ioctl, SETAUDIOOPT failed"); if ( (abuf = mmap(0, 1048576, PROT_READ, 0, fd, SAA_MMAP_ACAP_OFFSET)) == MAP_FAILED) err(errno, "Error mmap'ing frame"); if (ioctl(fd, ACAPTUREON, &audio_spec) == -1) err(errno, "Ioctl, ACAPTUREON failed"); sleep(1); if (ioctl(fd, ACAPTUREOFF, &dummy) == -1) err(errno, "Ioctl, ACAPTUREOFF failed"); return 0; }