]> gitweb.factorcode.org Git - factor.git/blobdiff - extra/libusb/libusb.factor
use radix literals
[factor.git] / extra / libusb / libusb.factor
index 5cae45ff95efac858b35d0f0d3e411c18179a6e7..0dd1831444ce9142eeae0be42a291deab03312ca 100644 (file)
@@ -1,6 +1,6 @@
 ! Copyright (C) 2010 Erik Charlebois.
 ! See http://factorcode.org/license.txt for BSD license.
-USING: accessors alien alien.c-types alien.libraries
+USING: accessors alien alien.c-types alien.data alien.libraries
 alien.syntax classes.struct combinators endian io.binary
 kernel locals math sequences specialized-arrays
 system unix.time unix.types ;
@@ -19,28 +19,28 @@ LIBRARY: libusb
 
 ALIAS: libusb_le16_to_cpu libusb_cpu_to_le16
 
-CONSTANT: LIBUSB_CLASS_PER_INTERFACE 0
-CONSTANT: LIBUSB_CLASS_AUDIO         1
-CONSTANT: LIBUSB_CLASS_COMM          2
-CONSTANT: LIBUSB_CLASS_HID           3
-CONSTANT: LIBUSB_CLASS_PRINTER       7
-CONSTANT: LIBUSB_CLASS_PTP           6
-CONSTANT: LIBUSB_CLASS_MASS_STORAGE  8
-CONSTANT: LIBUSB_CLASS_HUB           9
-CONSTANT: LIBUSB_CLASS_DATA          10
-CONSTANT: LIBUSB_CLASS_VENDOR_SPEC HEX: ff
-TYPEDEF: int libusb_class_code
-
-CONSTANT: LIBUSB_DT_DEVICE    HEX: 01
-CONSTANT: LIBUSB_DT_CONFIG    HEX: 02
-CONSTANT: LIBUSB_DT_STRING    HEX: 03
-CONSTANT: LIBUSB_DT_INTERFACE HEX: 04
-CONSTANT: LIBUSB_DT_ENDPOINT  HEX: 05
-CONSTANT: LIBUSB_DT_HID       HEX: 21
-CONSTANT: LIBUSB_DT_REPORT    HEX: 22
-CONSTANT: LIBUSB_DT_PHYSICAL  HEX: 23
-CONSTANT: LIBUSB_DT_HUB       HEX: 29
-TYPEDEF: int libusb_descriptor_type
+ENUM: libusb_class_code
+    { LIBUSB_CLASS_PER_INTERFACE 0 }
+    { LIBUSB_CLASS_AUDIO         1 }
+    { LIBUSB_CLASS_COMM          2 }
+    { LIBUSB_CLASS_HID           3 }
+    { LIBUSB_CLASS_PRINTER       7 }
+    { LIBUSB_CLASS_PTP           6 }
+    { LIBUSB_CLASS_MASS_STORAGE  8 }
+    { LIBUSB_CLASS_HUB           9 }
+    { LIBUSB_CLASS_DATA          10 }
+    { LIBUSB_CLASS_VENDOR_SPEC 0xff } ;
+
+ENUM: libusb_descriptor_type
+    { LIBUSB_DT_DEVICE    0x01 }
+    { LIBUSB_DT_CONFIG    0x02 }
+    { LIBUSB_DT_STRING    0x03 }
+    { LIBUSB_DT_INTERFACE 0x04 }
+    { LIBUSB_DT_ENDPOINT  0x05 }
+    { LIBUSB_DT_HID       0x21 }
+    { LIBUSB_DT_REPORT    0x22 }
+    { LIBUSB_DT_PHYSICAL  0x23 }
+    { LIBUSB_DT_HUB       0x29 } ;
 
 CONSTANT: LIBUSB_DT_DEVICE_SIZE           18
 CONSTANT: LIBUSB_DT_CONFIG_SIZE           9
@@ -49,59 +49,60 @@ CONSTANT: LIBUSB_DT_ENDPOINT_SIZE         7
 CONSTANT: LIBUSB_DT_ENDPOINT_AUDIO_SIZE   9
 CONSTANT: LIBUSB_DT_HUB_NONVAR_SIZE       7
 
-CONSTANT: LIBUSB_ENDPOINT_ADDRESS_MASK    HEX: 0f
-CONSTANT: LIBUSB_ENDPOINT_DIR_MASK        HEX: 80
-
-CONSTANT: LIBUSB_ENDPOINT_IN  HEX: 80
-CONSTANT: LIBUSB_ENDPOINT_OUT HEX: 00
-TYPEDEF: int libusb_endpoint_direction
-
-CONSTANT: LIBUSB_TRANSFER_TYPE_MASK HEX: 03
-
-CONSTANT: LIBUSB_TRANSFER_TYPE_CONTROL     0
-CONSTANT: LIBUSB_TRANSFER_TYPE_ISOCHRONOUS 1
-CONSTANT: LIBUSB_TRANSFER_TYPE_BULK        2
-CONSTANT: LIBUSB_TRANSFER_TYPE_INTERRUPT   3
-TYPEDEF: int libusb_transfer_type
-
-CONSTANT: LIBUSB_REQUEST_GET_STATUS        HEX: 00
-CONSTANT: LIBUSB_REQUEST_CLEAR_FEATURE     HEX: 01
-CONSTANT: LIBUSB_REQUEST_SET_FEATURE       HEX: 03
-CONSTANT: LIBUSB_REQUEST_SET_ADDRESS       HEX: 05
-CONSTANT: LIBUSB_REQUEST_GET_DESCRIPTOR    HEX: 06
-CONSTANT: LIBUSB_REQUEST_SET_DESCRIPTOR    HEX: 07
-CONSTANT: LIBUSB_REQUEST_GET_CONFIGURATION HEX: 08
-CONSTANT: LIBUSB_REQUEST_SET_CONFIGURATION HEX: 09
-CONSTANT: LIBUSB_REQUEST_GET_INTERFACE     HEX: 0A
-CONSTANT: LIBUSB_REQUEST_SET_INTERFACE     HEX: 0B
-CONSTANT: LIBUSB_REQUEST_SYNCH_FRAME       HEX: 0C
-TYPEDEF: int libusb_standard_request
-
-CONSTANT: LIBUSB_REQUEST_TYPE_STANDARD HEX: 00
-CONSTANT: LIBUSB_REQUEST_TYPE_CLASS    HEX: 20
-CONSTANT: LIBUSB_REQUEST_TYPE_VENDOR   HEX: 40
-CONSTANT: LIBUSB_REQUEST_TYPE_RESERVED HEX: 60
-
-CONSTANT: LIBUSB_RECIPIENT_DEVICE    HEX: 00
-CONSTANT: LIBUSB_RECIPIENT_INTERFACE HEX: 01
-CONSTANT: LIBUSB_RECIPIENT_ENDPOINT  HEX: 02
-CONSTANT: LIBUSB_RECIPIENT_OTHER     HEX: 03
-TYPEDEF: int libusb_request_recipient
-
-CONSTANT: LIBUSB_ISO_SYNC_TYPE_MASK HEX: 0C
-
-CONSTANT: LIBUSB_ISO_SYNC_TYPE_NONE     0
-CONSTANT: LIBUSB_ISO_SYNC_TYPE_ASYNC    1
-CONSTANT: LIBUSB_ISO_SYNC_TYPE_ADAPTIVE 2
-CONSTANT: LIBUSB_ISO_SYNC_TYPE_SYNC     3
-TYPEDEF: int libusb_iso_sync_type
-
-CONSTANT: LIBUSB_ISO_USAGE_TYPE_MASK HEX: 30
-
-CONSTANT: LIBUSB_ISO_USAGE_TYPE_DATA     0
-CONSTANT: LIBUSB_ISO_USAGE_TYPE_FEEDBACK 1
-CONSTANT: LIBUSB_ISO_USAGE_TYPE_IMPLICIT 2
-TYPEDEF: int libusb_iso_usage_type
+CONSTANT: LIBUSB_ENDPOINT_ADDRESS_MASK    0x0f
+CONSTANT: LIBUSB_ENDPOINT_DIR_MASK        0x80
+
+ENUM: libusb_endpoint_direction
+    { LIBUSB_ENDPOINT_IN  0x80 }
+    { LIBUSB_ENDPOINT_OUT 0x00 } ;
+
+CONSTANT: LIBUSB_TRANSFER_TYPE_MASK 0x03
+
+ENUM: libusb_transfer_type
+    { LIBUSB_TRANSFER_TYPE_CONTROL     0 }
+    { LIBUSB_TRANSFER_TYPE_ISOCHRONOUS 1 }
+    { LIBUSB_TRANSFER_TYPE_BULK        2 }
+    { LIBUSB_TRANSFER_TYPE_INTERRUPT   3 } ;
+
+ENUM: libusb_standard_request
+    { LIBUSB_REQUEST_GET_STATUS        0x00 }
+    { LIBUSB_REQUEST_CLEAR_FEATURE     0x01 }
+    { LIBUSB_REQUEST_SET_FEATURE       0x03 }
+    { LIBUSB_REQUEST_SET_ADDRESS       0x05 }
+    { LIBUSB_REQUEST_GET_DESCRIPTOR    0x06 }
+    { LIBUSB_REQUEST_SET_DESCRIPTOR    0x07 }
+    { LIBUSB_REQUEST_GET_CONFIGURATION 0x08 }
+    { LIBUSB_REQUEST_SET_CONFIGURATION 0x09 }
+    { LIBUSB_REQUEST_GET_INTERFACE     0x0A }
+    { LIBUSB_REQUEST_SET_INTERFACE     0x0B }
+    { LIBUSB_REQUEST_SYNCH_FRAME       0x0C } ;
+
+ENUM: libusb_request_type
+    { LIBUSB_REQUEST_TYPE_STANDARD 0x00 }
+    { LIBUSB_REQUEST_TYPE_CLASS    0x20 }
+    { LIBUSB_REQUEST_TYPE_VENDOR   0x40 }
+    { LIBUSB_REQUEST_TYPE_RESERVED 0x60 } ;
+
+ENUM: libusb_request_recipient
+    { LIBUSB_RECIPIENT_DEVICE    0x00 }
+    { LIBUSB_RECIPIENT_INTERFACE 0x01 }
+    { LIBUSB_RECIPIENT_ENDPOINT  0x02 }
+    { LIBUSB_RECIPIENT_OTHER     0x03 } ;
+
+CONSTANT: LIBUSB_ISO_SYNC_TYPE_MASK 0x0C
+
+ENUM: libusb_iso_sync_type
+    { LIBUSB_ISO_SYNC_TYPE_NONE     0 }
+    { LIBUSB_ISO_SYNC_TYPE_ASYNC    1 }
+    { LIBUSB_ISO_SYNC_TYPE_ADAPTIVE 2 }
+    { LIBUSB_ISO_SYNC_TYPE_SYNC     3 } ;
+
+CONSTANT: LIBUSB_ISO_USAGE_TYPE_MASK 0x30
+
+ENUM: libusb_iso_usage_type
+    { LIBUSB_ISO_USAGE_TYPE_DATA     0 }
+    { LIBUSB_ISO_USAGE_TYPE_FEEDBACK 1 }
+    { LIBUSB_ISO_USAGE_TYPE_IMPLICIT 2 } ;
 
 STRUCT: libusb_device_descriptor
     { bLength             uint8_t  }
@@ -175,23 +176,23 @@ C-TYPE: libusb_context
 C-TYPE: libusb_device
 C-TYPE: libusb_device_handle
 
-CONSTANT: LIBUSB_SUCCESS             0
-CONSTANT: LIBUSB_ERROR_IO            -1
-CONSTANT: LIBUSB_ERROR_INVALID_PARAM -2
-CONSTANT: LIBUSB_ERROR_ACCESS        -3
-CONSTANT: LIBUSB_ERROR_NO_DEVICE     -4
-CONSTANT: LIBUSB_ERROR_NOT_FOUND     -5
-CONSTANT: LIBUSB_ERROR_BUSY          -6
-CONSTANT: LIBUSB_ERROR_TIMEOUT       -7
-CONSTANT: LIBUSB_ERROR_OVERFLOW      -8
-CONSTANT: LIBUSB_ERROR_PIPE          -9
-CONSTANT: LIBUSB_ERROR_INTERRUPTED   -10
-CONSTANT: LIBUSB_ERROR_NO_MEM        -11
-CONSTANT: LIBUSB_ERROR_NOT_SUPPORTED -12
-CONSTANT: LIBUSB_ERROR_OTHER         -99
-TYPEDEF: int libusb_error
-
-C-ENUM:
+ENUM: libusb_error
+    { LIBUSB_SUCCESS             0 }
+    { LIBUSB_ERROR_IO            -1 }
+    { LIBUSB_ERROR_INVALID_PARAM -2 }
+    { LIBUSB_ERROR_ACCESS        -3 }
+    { LIBUSB_ERROR_NO_DEVICE     -4 }
+    { LIBUSB_ERROR_NOT_FOUND     -5 }
+    { LIBUSB_ERROR_BUSY          -6 }
+    { LIBUSB_ERROR_TIMEOUT       -7 }
+    { LIBUSB_ERROR_OVERFLOW      -8 }
+    { LIBUSB_ERROR_PIPE          -9 }
+    { LIBUSB_ERROR_INTERRUPTED   -10 }
+    { LIBUSB_ERROR_NO_MEM        -11 }
+    { LIBUSB_ERROR_NOT_SUPPORTED -12 }
+    { LIBUSB_ERROR_OTHER         -99 } ;
+
+ENUM: libusb_transfer_status
     LIBUSB_TRANSFER_COMPLETED
     LIBUSB_TRANSFER_ERROR
     LIBUSB_TRANSFER_TIMED_OUT
@@ -199,12 +200,11 @@ C-ENUM:
     LIBUSB_TRANSFER_STALL
     LIBUSB_TRANSFER_NO_DEVICE
     LIBUSB_TRANSFER_OVERFLOW ;
-TYPEDEF: int libusb_transfer_status
 
-CONSTANT: LIBUSB_TRANSFER_SHORT_NOT_OK  1
-CONSTANT: LIBUSB_TRANSFER_FREE_BUFFER   2
-CONSTANT: LIBUSB_TRANSFER_FREE_TRANSFER 4
-TYPEDEF: int libusb_transfer_flags
+ENUM: libusb_transfer_flags
+    { LIBUSB_TRANSFER_SHORT_NOT_OK  1 }
+    { LIBUSB_TRANSFER_FREE_BUFFER   2 }
+    { LIBUSB_TRANSFER_FREE_TRANSFER 4 } ;
 
 STRUCT: libusb_iso_packet_descriptor
     { length        uint                   }
@@ -341,7 +341,7 @@ FUNCTION: void libusb_free_transfer ( libusb_transfer* transfer ) ;
 : libusb_set_iso_packet_lengths ( transfer length -- )
     [ [ iso_packet_desc>> >c-ptr ]
       [ num_iso_packets>> ] bi
-      <direct-libusb_iso_packet_descriptor-array>
+      libusb_iso_packet_descriptor <c-direct-array>
     ] dip [ >>length drop ] curry each ; inline
     
 :: libusb_get_iso_packet_buffer ( transfer packet -- data )
@@ -351,7 +351,7 @@ FUNCTION: void libusb_free_transfer ( libusb_transfer* transfer ) ;
         transfer
         [ iso_packet_desc>> >c-ptr ] 
         [ num_iso_packets>> ] bi
-        <direct-libusb_iso_packet_descriptor-array> 0
+        libusb_iso_packet_descriptor <c-direct-array> 0
         [ length>> + ] reduce
         transfer buffer>> <displaced-alien>
     ] if ;
@@ -363,7 +363,7 @@ FUNCTION: void libusb_free_transfer ( libusb_transfer* transfer ) ;
         0 transfer
         [ iso_packet_desc>> >c-ptr ] 
         [ num_iso_packets>> ] bi
-        <direct-libusb_iso_packet_descriptor-array> nth
+        libusb_iso_packet_descriptor <c-direct-array> nth
         length>> packet *
         transfer buffer>> <displaced-alien>
     ] if ;