From 09c33734738f02dc194e528e44f9b636d26e38a0 Mon Sep 17 00:00:00 2001 From: Rostislav Lisovy Date: Tue, 15 Feb 2011 22:47:02 +0100 Subject: [PATCH] Userspace application now really waits for interrupts from card. --- src/uio/userspace/test_application/main.c | 27 ++++++++--------------- 1 file changed, 9 insertions(+), 18 deletions(-) diff --git a/src/uio/userspace/test_application/main.c b/src/uio/userspace/test_application/main.c index ecb1213..5ad4093 100644 --- a/src/uio/userspace/test_application/main.c +++ b/src/uio/userspace/test_application/main.c @@ -24,10 +24,6 @@ int status; void* mf614_mem = NULL; -void delay() -{ - for (int i = 0; i < 65000; i++) {} -} void mf614_adc_init(int channel) { @@ -51,10 +47,9 @@ void wait_for_interrupts(int device_fd) int disable_interrupts(int device_fd) { - char buff[4]; // we have to write 32 bit number - strncpy(buff, "0", 4); + uint32_t control_value = 0; - status = write(device_fd, buff, 4); + status = write(device_fd, &control_value, sizeof(uint32_t)); if (status == -1) { perror("write()"); return -1; @@ -65,10 +60,9 @@ int disable_interrupts(int device_fd) int enable_interrupts(int device_fd) { - char buff[4]; // we have to write 32 bit number - strncpy(buff, "1", 4); + uint32_t control_value = 1; - status = write(device_fd, buff, 4); + status = write(device_fd, &control_value, sizeof(uint32_t)); if (status == -1) { perror("write()"); return -1; @@ -215,22 +209,19 @@ int main(int argc, char* argv[]) } - while(1) { - + while (1){ for (int i = 0; i <= 7; i++) { + enable_interrupts(device_fd); mf614_adc_init(i); - //enable_interrupts(device_fd); - //read(device_fd, read_buff, 1); // should block until interrupt erceived - + status = read(device_fd, read_buff, sizeof(uint32_t)); // should block until interrupt received + // ... got interrupt -- handle it - //disable_interrupts(device_fd); - - delay(); adc_value = *(((uint8_t *) mf614_mem) + AD_LO) | (*(((uint8_t *) mf614_mem) + AD_HI) << 8); printf("[CH %d] ADC = %f V\n", i, adc_value/819); } printf("\n"); + sleep(1); } } -- 2.39.2