1.1 --- a/test.c Mon Feb 11 16:48:30 2013 +0000
1.2 +++ b/test.c Mon Feb 11 17:33:09 2013 +0000
1.3 @@ -17,6 +17,8 @@
1.4 #include <stdio.h>
1.5 #include <time.h>
1.6 #include <unistd.h>
1.7 +#include <signal.h>
1.8 +#include <stdlib.h>
1.9
1.10 /* Pin assignments:
1.11 *
1.12 @@ -252,11 +254,20 @@
1.13 return !(result & MAX_HCTL_SAMPLEBUS);
1.14 }
1.15
1.16 +void shutdown(int signum)
1.17 +{
1.18 + printf("Closing...\n");
1.19 + ubb_close(0);
1.20 + exit(1);
1.21 +}
1.22 +
1.23 int main(int argc, char *argv[])
1.24 {
1.25 - uint8_t status = 0, revision = 0, hrsl = 0;
1.26 + uint8_t status = 0, revision = 0;
1.27 uint16_t count;
1.28
1.29 + signal(SIGINT, &shutdown);
1.30 +
1.31 if (ubb_open(0) < 0) {
1.32 perror("ubb_open");
1.33 return 1;
1.34 @@ -299,15 +310,12 @@
1.35
1.36 printf("Setting mode...\n");
1.37 status = max_write(MAX_REG_MODE, MAX_MODE_HOST | MAX_MODE_SEPIRQ_OFF | MAX_MODE_DMPULLDN | MAX_MODE_DPPULLDN);
1.38 - printf("Status = %x\n", status);
1.39
1.40 printf("Setting INT signalling...\n");
1.41 status = max_write(MAX_REG_CPUCTL, MAX_CPUCTL_IE);
1.42 - printf("Status = %x\n", status);
1.43
1.44 printf("Setting connection signalling...\n");
1.45 status = max_write(MAX_REG_HIEN, MAX_HIEN_CONDETIE);
1.46 - printf("Status = %x\n", status);
1.47
1.48 /* Check various registers. */
1.49
1.50 @@ -323,26 +331,22 @@
1.51
1.52 printf("Reading...\n");
1.53 revision = max_read(MAX_REG_REVISION, &status);
1.54 - printf("Status = %x\n", status);
1.55 printf("Revision = %x\n", revision);
1.56
1.57 - for (count = 0; count < 10; count++)
1.58 + for (count = 0; count <= 65535; count++)
1.59 {
1.60 - printf("INT? %d\n", PIN(MAX_INT));
1.61 - printf("Status = %x\n", status);
1.62 -
1.63 - if (PIN(MAX_INT))
1.64 + if (!PIN(MAX_INT))
1.65 {
1.66 - if (status & (MAX_HIRQ_SUSDNIRQ | MAX_HIRQ_CONDETIRQ))
1.67 - {
1.68 - printf("HRSL...\n");
1.69 - hrsl = max_read(MAX_REG_HRSL, &status);
1.70 - printf("Status = %x\n", status);
1.71 - printf("HRSL = %x\n", hrsl);
1.72 - }
1.73 + if (status & MAX_HIRQ_CONDETIRQ)
1.74 + printf("Device connected.\n");
1.75 + if (status & MAX_HIRQ_SUSDNIRQ)
1.76 + printf("Suspend done.\n");
1.77 + if (status & MAX_HIRQ_BUSEVENTIRQ)
1.78 + printf("Bus event.\n");
1.79 + if (status & MAX_HIRQ_RCVDAVIRQ)
1.80 + printf("Data received.\n");
1.81
1.82 - printf("Clearing status...\n");
1.83 - max_write(MAX_REG_HIRQ, status & (MAX_HIRQ_SUSDNIRQ | MAX_HIRQ_SNDBAVIRQ | MAX_HIRQ_BUSEVENTIRQ));
1.84 + max_write(MAX_REG_HIRQ, status);
1.85 }
1.86 }
1.87