#ifndef _GALSA_H #define _GALSA_H #include #include typedef short sample; enum dev_runstate { DEV_OPEN, DEV_RUNNING, DEV_STOPREQ, }; enum qe_message { QE_DATA, QE_ERROR, QE_STOPPED, }; struct device { char *path; unsigned rate; int chan; snd_pcm_t *handle; GAsyncQueue *queue; size_t pktsize; GThread *thread; enum dev_runstate state; }; struct qe { enum qe_message message; int errcode; char *errp; ssize_t size; sample samples[]; }; extern struct device *device_open(const char *path, unsigned rate, int chan, size_t pktsize); extern void device_start(struct device *dev); extern void device_stop(struct device *dev); extern void device_stop_wait(struct device *dev); extern void device_stop_done(struct device *dev); extern void device_close(struct device *dev); #endif