From 72fc5fa9be55ffab0e009085b05a3cad0b077826 Mon Sep 17 00:00:00 2001 From: "Suren A. Chilingaryan" Date: Wed, 14 Dec 2011 04:17:00 +0100 Subject: small cleanup --- ToDo | 14 ++------------ event.c | 9 +++++++++ pcilib.h | 5 +++++ 3 files changed, 16 insertions(+), 12 deletions(-) diff --git a/ToDo b/ToDo index 6c7004e..c695a9a 100644 --- a/ToDo +++ b/ToDo @@ -1,17 +1,8 @@ -Bugs -==== - 1. For IPECamera, shall we limit DMA packet size to xdma_packet_lenght register - additionally to size of memory page? - High Priority (we would need it for IPE Camera) ============= 1. Serialize access to the registers across applications 2. Protect kmem_entries in the driver using spinlock - 3. Extend Event API with function to generate triggers - at the specified pace. By default the current cli - implementation should be used. However, the hardware - alternative should be possible to implement. - + 3. Implement pcilib_configure_autotrigger Normal Priority (it would make just few things a bit easier) =============== @@ -20,7 +11,6 @@ Normal Priority (it would make just few things a bit easier) 3. Provide OR and AND operations on registers in cli 4. Support writting a data from a binary file in cli 5. Use bus-addresses instead of physcial addresses for DMA - 6. Use pthread_condition_t instead of polling Low Priority (only as generalization for other projects) ============ @@ -28,5 +18,5 @@ Low Priority (only as generalization for other projects) 2. Access register/bank lookups using hash tables 3. Support for Network Registers and Network DMA 4. Define a syntax for register dependencies / delays (?) + 5. Use pthread_condition_t instead of polling - \ No newline at end of file diff --git a/event.c b/event.c index 9488eae..d9d3ff3 100644 --- a/event.c +++ b/event.c @@ -121,6 +121,15 @@ int pcilib_configure_autostop(pcilib_t *ctx, size_t max_events, pcilib_timeout_t return 0; } +int pcilib_configure_autotrigger(pcilib_t *ctx, pcilib_timeout_t interval, pcilib_event_t event, size_t trigger_size, void *trigger_data) { + /* To support hardware without autotriggering, we need to provide in event.c a code + to generate multiple triggers in a thread (available in cli). The function should + be re-enabled afterwards: just set parameters and let implementation decide if it + can make triggering in hardware or will use our emulation */ + + return PCILIB_ERROR_NOTSUPPORTED; +} + int pcilib_configure_preprocessing_threads(pcilib_t *ctx, size_t max_threads) { pcilib_event_api_description_t *api; diff --git a/pcilib.h b/pcilib.h index adec4da..fe7af8c 100644 --- a/pcilib.h +++ b/pcilib.h @@ -321,6 +321,11 @@ int pcilib_trigger(pcilib_t *ctx, pcilib_event_t event, size_t trigger_size, voi * is specified. */ int pcilib_configure_autostop(pcilib_t *ctx, size_t max_events, pcilib_timeout_t duration); + +/* + * Request auto-triggering while grabbing + */ +int pcilib_configure_autotrigger(pcilib_t *ctx, pcilib_timeout_t interval, pcilib_event_t event, size_t trigger_size, void *trigger_data); /* * Request streaming the rawdata from the event engine. It is fastest way to acuqire data. * No memory copies will be performed and DMA buffers will be directly passed to the user -- cgit v1.2.3