Subversion Repositories f9daq

Rev

Blame | Last modification | View Log | RSS feed

  1.  
  2. #define DEVICE_NAME "/dev/cc32_1"
  3.  
  4. #include <stdio.h>
  5. #include <stdlib.h>
  6. #include <string.h>
  7. #include <unistd.h>
  8. #include <sys/mman.h>
  9. #include <errno.h>
  10. #include <ctype.h>
  11.  
  12. #include <libcc32.h> /* the header of the shared library */
  13.  
  14. char *cszPrgName;
  15. CC32_HANDLE handle;
  16.  
  17. void hlpMsg(void)
  18. {
  19.     printf("pcicc32_test - a program to test some features of the PCICC32 interface of ARW Elektronik Germany.\n");
  20.     printf("Copyright see the GPL of the free software foundation. K.Hitschler, %s.\n", __DATE__);
  21.     printf("usage: pcicc32_test [-d=device_name] [-?]\n");
  22.     printf("                     -d - choose a device to use. (Default: %s)\n", DEVICE_NAME);
  23.     printf("                     -? - this help.\n");  
  24. }
  25.  
  26. int main(int argc, char **argv)
  27. {
  28.     char *fname = DEVICE_NAME;
  29.     char *ptr;
  30.     char ch;
  31.     int i;
  32.     int error;
  33.     int nTimeout, nLam;
  34.     int k, j;
  35.     int n=atoi(argv[2]);
  36.     int a=atoi(argv[3]);
  37.     int f=atoi(argv[4]);
  38.    int data=0;
  39.    if (argc>5) data = strtoul(argv[5],NULL,0);
  40.    
  41.     cszPrgName = argv[0];
  42.    
  43.    
  44.    
  45.     if ((error = cc32_open(fname, &handle)))
  46.     {
  47.         fprintf(stderr, "%s: %s: %s\n", cszPrgName, fname, strerror(error));
  48.         exit(1);
  49.     }
  50.     else
  51.         printf("%s: open done.\n", cszPrgName);
  52.  
  53.    switch (atoi(argv[1])){
  54. case 32:
  55.      cc32_write_long(handle,n,a,f,data);
  56.      break;
  57. case 16:
  58.      cc32_write_word(handle,n,a,f,data);
  59.      break;
  60. case -16:
  61.      data=cc32_read_word(handle,n,a,f);
  62.      break;
  63. case -32:
  64.      data=cc32_read_long(handle,n,a,f);
  65.      break;
  66. default: printf("Unknown command\n");
  67.       }
  68.     printf("CC32 %d N=%d A=%d F=%d data=0x%x\n",atoi(argv[1]),n,a,f,data);
  69.  
  70.     return 0;
  71.     for (k = 0; k < 1; k++)
  72.     {
  73.             for (j = 0; j < 0x00FFFFFF; j++)
  74.             {    
  75.                     cc32_write_long(handle, 1 + (j % 23), (j % 15), 16 + (j % 15), j);
  76.             }
  77.     }
  78.    
  79.     // poll the event
  80.     error = cc32_poll_event(handle, &nTimeout, &nLam);
  81.     printf("%s : bConnected = %d, bFail = %d, bIrq = %d\n", cszPrgName, error, nTimeout, nLam);
  82.  
  83.     // enable all LAM mask bits for this test    
  84.     cc32_write_long(handle, 28, 1, 16, 0x00FFFFFF);
  85.     // enable interrupts
  86.     error = cc32_interrupt_enable(handle);
  87.    
  88.     // generate a LAM interrupt with help of the test mode bits
  89.     cc32_write_long(handle, 24, 0, 16, 5);
  90.              
  91.     // wait for a event
  92.     error = cc32_wait_event(handle, &nTimeout, &nLam);
  93.     printf("%s : bConnected = %d, bFail = %d, bIrq = %d\n", cszPrgName, error, nTimeout, nLam);
  94.    
  95.     if (nLam)
  96.     {
  97.       // clear LAM
  98.       cc32_write_word(handle, 28, 0, 16, 0);
  99.     }
  100.    
  101.     // wait again for a event (which never comes)
  102.     error = cc32_wait_event(handle, &nTimeout, &nLam);
  103.     printf("%s : bConnected = %d, bFail = %d, bIrq = %d\n", cszPrgName, error, nTimeout, nLam);
  104.    
  105.          
  106.     cc32_close(handle);;
  107.  
  108.     printf("%s: close done.\n", cszPrgName);
  109.    
  110.     return 0;
  111. }
  112.