home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / usbd0906.zip / usb_20020906.zip / usbcalls / test / TESTIO.CPP < prev    next >
C/C++ Source or Header  |  2001-11-13  |  3KB  |  126 lines

  1. #define INCL_DOS
  2. #include <os2.h>
  3. #include <stdio.h>
  4. #include <stdlib.h>
  5. #include <string.h>
  6. #include "..\usbcalls.h"
  7.  
  8. int ReadIKeyData( USBHANDLE hUSBDevice,
  9.                   USHORT usNumBytes,
  10.                   UCHAR *pData)
  11.  
  12. {
  13.   return UsbCtrlMessage( hUSBDevice,
  14.                          0xC1, 1,0,0,
  15.                          usNumBytes, pData,
  16.                          0);
  17.  
  18. }
  19.  
  20. int BlinkLED(USBHANDLE hUSBDevice)
  21. {
  22.   UCHAR ucLEDData[2] ={0,0};
  23.   int rc,i;
  24.  
  25.   for(i=0;i<200;i++)
  26.   {
  27.     rc = UsbCtrlMessage( hUSBDevice,
  28.                          0xC1, 3,2,0,
  29.                          0x02, ucLEDData,
  30.                          0);
  31.     if(rc)
  32.       break;
  33.     DosSleep(25);
  34.     rc = UsbCtrlMessage( hUSBDevice,
  35.                          0xC1, 3,1,0,
  36.                          0x02, ucLEDData,
  37.                          0);
  38.     DosSleep(25);
  39.     if(rc)
  40.       break;
  41.   }
  42.   return rc;
  43. }
  44.  
  45. int OpenIKey(USBHANDLE hUSBDevice)
  46. {
  47.   UCHAR ucOpenData[0x20];
  48.   ULONG ulSerial[2];
  49.   UCHAR ucCheckData[6];
  50.   int rc,i;
  51.  
  52.   rc = UsbCtrlMessage( hUSBDevice,
  53.                        0xC1, 0,0,0,
  54.                        0x20, ucOpenData,
  55.                        0);
  56.   if(!rc)
  57.    rc = UsbCtrlMessage( hUSBDevice,
  58.                         0x41, 2,0,0,
  59.                         0x00, NULL,
  60.                         0);
  61.  
  62.   if(!rc)
  63.    rc = ReadIKeyData( hUSBDevice, 8, (UCHAR*) &ulSerial[0]);
  64.  
  65.   if(!rc)
  66.    rc = UsbCtrlMessage( hUSBDevice,
  67.                         0xC1, 2,0,0,
  68.                         0x06, ucCheckData,
  69.                         0);
  70.   if(!rc)
  71.   {
  72.      USHORT *pusMemSize = (USHORT*)&ucOpenData[4];
  73.      printf("Firmware Version ... = %d.%d\r\n",
  74.      ucOpenData[2],ucOpenData[3]);
  75.      printf("Product Code ....... = %x\r\n",ucOpenData[1]);
  76.      printf("Memory Size ........ = %d\r\n",(*pusMemSize)*2);
  77.      printf("Capabilities ....... = %x\r\n",ucOpenData[6]);
  78.      printf("Serial No .......... = %08X%08X\r\n",ulSerial[1],ulSerial[0]);
  79.      printf("F/w Check Sum ...... = %02X%02X\r\n",ucCheckData[1],ucCheckData[0]);
  80.   }
  81.   return rc;
  82. }
  83.  
  84. #define VENDOR_RAINBOW    0x04B9
  85. #define PRODUCT_IKEY1000  0x1000
  86.  
  87. void main()
  88. {
  89.   APIRET rc;
  90.   USBHANDLE hUSBDevice;
  91.   ULONG ulNumDevices;
  92.   UCHAR ucBuffer[640];
  93.  
  94.   rc = UsbQueryNumberDevices(&ulNumDevices);
  95.   printf("Num devices = %d (rc=%d)\r\n",ulNumDevices,rc);
  96.  
  97.   rc = UsbOpen( &hUSBDevice,
  98.                 VENDOR_RAINBOW,
  99.                 PRODUCT_IKEY1000,
  100.                 USB_ANY_PRODUCTVERSION,
  101.                 USB_OPEN_FIRST_UNUSED);
  102.  
  103.   if(!rc && hUSBDevice!=0 &&
  104.      0==OpenIKey(hUSBDevice))
  105.   {
  106.  
  107.     BlinkLED(hUSBDevice);
  108.  
  109.     memset(ucBuffer,sizeof(ucBuffer),0);
  110.  
  111.     rc = UsbCtrlMessage( hUSBDevice,
  112.                          0x41, 4,0,0,
  113.                          0x02, ucBuffer,
  114.                          0);
  115.     if(!rc)
  116.       ReadIKeyData( hUSBDevice, 0x0E, ucBuffer);
  117.  
  118.     UsbClose(hUSBDevice);
  119.   }
  120.   else
  121.   {
  122.     printf("USBOpen returned %d\r\n",rc);
  123.   }
  124.  
  125. }
  126.