Lines Matching refs:timer
2 * \file timer/timer.c
8 * See \ref timer page for more details.
31 /*! \page timer Timer interface
34 it can be driven with any timer.
38 The timer implementation uses ring buffer to store information about timing
58 \par Simple timer test program
61 This example shows opening a timer device and reading of timer events.
66 * \example ../test/timer.c
74 static int snd_timer_open_conf(snd_timer_t **timer,
169 err = open_func(timer, name, timer_root, timer_conf, mode);
173 (*timer)->dl_handle = h;
178 static int snd_timer_open_noupdate(snd_timer_t **timer, snd_config_t *root, const char *name, int mode)
182 err = snd_config_search_definition(root, "timer", name, &timer_conf);
184 SNDERR("Unknown timer %s", name);
187 err = snd_timer_open_conf(timer, name, root, timer_conf, mode);
193 * \brief Opens a new connection to the timer interface.
194 * \param timer Returned handle (NULL if not wanted)
195 * \param name ASCII identifier of the timer handle
199 * Opens a new connection to the timer interface specified with
202 int snd_timer_open(snd_timer_t **timer, const char *name, int mode)
207 assert(timer && name);
217 err = snd_timer_open_noupdate(timer, top, name, mode);
223 * \brief Opens a new connection to the timer interface using local configuration
224 * \param timer Returned handle (NULL if not wanted)
225 * \param name ASCII identifier of the timer handle
230 * Opens a new connection to the timer interface specified with
233 int snd_timer_open_lconf(snd_timer_t **timer, const char *name,
236 assert(timer && name && lconf);
237 return snd_timer_open_noupdate(timer, lconf, name, mode);
241 * \brief close timer handle
242 * \param timer timer handle
245 * Closes the specified timer handle and frees all associated
248 int snd_timer_close(snd_timer_t *timer)
251 assert(timer);
252 while (!list_empty(&timer->async_handlers)) {
253 snd_async_handler_t *h = list_entry(timer->async_handlers.next, snd_async_handler_t, hlist);
256 err = timer->ops->close(timer);
257 if (timer->dl_handle)
258 snd_dlclose(timer->dl_handle);
259 free(timer->name);
260 free(timer);
265 * \brief get identifier of timer handle
266 * \param timer a timer handle
267 * \return ascii identifier of timer handle
269 * Returns the ASCII identifier of given timer handle. It's the same
272 const char *snd_timer_name(snd_timer_t *timer)
274 assert(timer);
275 return timer->name;
279 * \brief get type of timer handle
280 * \param timer a timer handle
281 * \return type of timer handle
283 * Returns the type #snd_timer_type_t of given timer handle.
285 snd_timer_type_t snd_timer_type(snd_timer_t *timer)
287 assert(timer);
288 return timer->type;
292 * \brief Add an async handler for a timer
294 * \param timer timer handle
299 * The asynchronous callback is called when new timer event occurs.
301 int snd_async_add_timer_handler(snd_async_handler_t **handler, snd_timer_t *timer,
307 err = snd_async_add_handler(&h, timer->poll_fd,
312 h->u.timer = timer;
313 was_empty = list_empty(&timer->async_handlers);
314 list_add_tail(&h->hlist, &timer->async_handlers);
316 err = snd_timer_async(timer, snd_async_handler_get_signo(h), getpid());
327 * \brief Return timer handle related to an async handler
329 * \return timer handle
337 return handler->u.timer;
341 * \brief get count of poll descriptors for timer handle
342 * \param timer timer handle
345 int snd_timer_poll_descriptors_count(snd_timer_t *timer)
347 assert(timer);
353 * \param timer timer handle
358 int snd_timer_poll_descriptors(snd_timer_t *timer, struct pollfd *pfds, unsigned int space)
360 assert(timer);
362 pfds->fd = timer->poll_fd;
363 switch (timer->mode & O_ACCMODE) {
383 * \param timer timer handle
389 int snd_timer_poll_descriptors_revents(snd_timer_t *timer, struct pollfd *pfds, unsigned int nfds, unsigned short *revents)
391 assert(timer && pfds && revents);
401 * \param timer timer handle
405 int snd_timer_nonblock(snd_timer_t *timer, int nonblock)
408 assert(timer);
409 if ((err = timer->ops->nonblock(timer, nonblock)) < 0)
412 timer->mode |= SND_TIMER_OPEN_NONBLOCK;
414 timer->mode &= ~SND_TIMER_OPEN_NONBLOCK;
421 * \param timer timer handle
428 int snd_timer_async(snd_timer_t *timer, int sig, pid_t pid)
430 assert(timer);
435 return timer->ops->async(timer, sig, pid);
490 * \brief determine, if timer is slave
492 * \return nonzero if timer is slave
501 * \brief get timer card
503 * \return timer card number
512 * \brief get timer id
514 * \return timer id
523 * \brief get timer name
525 * \return timer name
535 * \brief get timer resolution in us
537 * \return timer resolution
546 * \brief get information about timer handle
547 * \param timer timer handle
551 int snd_timer_info(snd_timer_t *timer, snd_timer_info_t * info)
553 assert(timer);
555 return timer->ops->info(timer, info);
609 * \brief set timer auto start
624 * \brief determine if timer has auto start flag
626 * \return nonzero if timer has auto start flag
635 * \brief set timer exclusive use
655 * \brief determine if timer has exclusive flag
657 * \return nonzero if timer has exclusive flag
671 * \brief set timer early event
686 * \brief determine if timer has early event flag
688 * \return nonzero if timer has early event flag set
697 * \brief set timer ticks
708 * \brief get timer ticks
710 * \return timer ticks
719 * \brief set timer queue size (32-1024)
741 * \brief set timer event filter
757 * \brief get timer event filter
759 * \return timer event filter
773 * \brief set parameters for timer handle
774 * \param timer timer handle
778 int snd_timer_params(snd_timer_t *timer, snd_timer_params_t * params)
780 assert(timer);
782 return timer->ops->params(timer, params);
893 * \brief get status from timer handle
894 * \param timer timer handle
898 int snd_timer_status(snd_timer_t *timer, snd_timer_status_t * status)
900 assert(timer);
902 return timer->ops->status(timer, status);
906 * \brief start the timer
907 * \param timer timer handle
910 int snd_timer_start(snd_timer_t *timer)
912 assert(timer);
913 return timer->ops->rt_start(timer);
917 * \brief stop the timer
918 * \param timer timer handle
921 int snd_timer_stop(snd_timer_t *timer)
923 assert(timer);
924 return timer->ops->rt_stop(timer);
928 * \brief continue the timer
929 * \param timer timer handle
932 int snd_timer_continue(snd_timer_t *timer)
934 assert(timer);
935 return timer->ops->rt_continue(timer);
939 * \brief read bytes using timer handle
940 * \param timer timer handle
944 ssize_t snd_timer_read(snd_timer_t *timer, void *buffer, size_t size)
946 assert(timer);
947 assert(((timer->mode & O_ACCMODE) == O_RDONLY) || ((timer->mode & O_ACCMODE) == O_RDWR));
949 return (timer->ops->read)(timer, buffer, size);
953 * \brief (DEPRECATED) get maximum timer ticks
955 * \return maximum timer ticks