beautypg.com

Ktam3874/pitx software guide – Kontron KTAM3874-pITX User Manual

Page 102

background image

KTD-S0057-I

Page 98 Linux® Programming Examples (DebianTM)


KTAM3874/pITX Software Guide


static int async_loop (snd_pcm_t *handle, signed short *samples, snd_pcm_channel_area_t *areas)
{

struct async_private_data data;

snd_async_handler_t

*ahandler;

int err, count;

data.samples = samples;

data.areas = areas;

data.phase = 0;

err = snd_async_add_pcm_handler (&ahandler, handle, async_callback, &data);

if (err < 0)

{

printf ("Unable to register async handler\n");

exit

(EXIT_FAILURE);

}

for (count = 0; count < 2; count++)

{

generate_sine (areas, 0, period_size, &data.phase);

err = snd_pcm_writei (handle, samples, period_size);

if (err < 0)

{

printf ("Initial write error: %s\n", snd_strerror (err));

exit

(EXIT_FAILURE);

}

if (err != period_size)

{

printf ("Initial write error: written %i expected %li\n", err, period_size);

exit

(EXIT_FAILURE);

}

}

if (snd_pcm_state (handle) == SND_PCM_STATE_PREPARED)

{

err = snd_pcm_start (handle);

if (err < 0)

{

printf ("Start error: %s\n", snd_strerror (err));

exit

(EXIT_FAILURE);

}

}

/* because all other work is done in the signal handler suspend the process */

while

(1)

{

sleep

(1);

}
}

This manual is related to the following products: