From e6f0a1d410d4249bbc59c368be37988d4778159f Mon Sep 17 00:00:00 2001 From: Werner Almesberger Date: Mon, 20 Jun 2011 16:01:59 -0300 Subject: [PATCH] libatrf: new function atrf_interrupt_wait for interrupt-driven wait for interrupt - tools/lib/driver.h (struct atrf_driver): new driver operation interrupt_wait - include/atrf.h (atrf_interrupt_wait), atrf.c: new function to wait for a transceiver interrupt without polling --- tools/include/atrf.h | 1 + tools/lib/atrf.c | 7 +++++++ tools/lib/driver.h | 1 + 3 files changed, 9 insertions(+) diff --git a/tools/include/atrf.h b/tools/include/atrf.h index d5e4e11..c83ee50 100644 --- a/tools/include/atrf.h +++ b/tools/include/atrf.h @@ -56,5 +56,6 @@ void atrf_sram_write(struct atrf_dsc *dsc, uint8_t addr, uint8_t value); uint8_t atrf_sram_read(struct atrf_dsc *dsc, uint8_t addr); int atrf_interrupt(struct atrf_dsc *dsc); +int atrf_interrupt_wait(struct atrf_dsc *dsc, int timeout_ms); #endif /* !ATRF_H */ diff --git a/tools/lib/atrf.c b/tools/lib/atrf.c index f88ec88..aaf1c15 100644 --- a/tools/lib/atrf.c +++ b/tools/lib/atrf.c @@ -323,3 +323,10 @@ int atrf_interrupt(struct atrf_dsc *dsc) return dsc->driver->interrupt ? dsc->driver->interrupt(dsc->handle) : 1; } + + +int atrf_interrupt_wait(struct atrf_dsc *dsc, int timeout_ms) +{ + return dsc->driver->interrupt_wait ? + dsc->driver->interrupt_wait(dsc->handle, timeout_ms) : -1; +} diff --git a/tools/lib/driver.h b/tools/lib/driver.h index cf05a9f..727f138 100644 --- a/tools/lib/driver.h +++ b/tools/lib/driver.h @@ -36,6 +36,7 @@ struct atrf_driver { void (*sram_write)(void *dsc, uint8_t addr, uint8_t value); uint8_t (*sram_read)(void *dsc, uint8_t addr); int (*interrupt)(void *dsc); + int (*interrupt_wait)(void *dsc, int timeout_ms); };