diff options
Diffstat (limited to 'libk8055')
-rw-r--r-- | libk8055/k8055.h | 19 | ||||
-rw-r--r-- | libk8055/libk8055.c | 12 |
2 files changed, 22 insertions, 9 deletions
diff --git a/libk8055/k8055.h b/libk8055/k8055.h index 37a70af..121c757 100644 --- a/libk8055/k8055.h +++ b/libk8055/k8055.h @@ -25,12 +25,31 @@ extern "C" { #define PACKET_LEN 8 +#define DIGITAL_INP_OFFSET 0 +#define DIGITAL_OUT_OFFSET 1 +#define ANALOG_1_OFFSET 2 +#define ANALOG_2_OFFSET 3 +#define COUNTER_1_OFFSET 4 +#define COUNTER_2_OFFSET 6 + struct k8055_dev { int dev_no; struct usb_dev_handle* device_handle; unsigned char data_in[PACKET_LEN+1]; unsigned char data_out[PACKET_LEN+1]; }; + int k8055_read( struct k8055_dev* dev ); + int k8055_write( struct k8055_dev* dev ); + + int k8055_digital_1( struct k8055_dev* dev ) { return ( ( dev->data_in[DIGITAL_INP_OFFSET] >> 4 ) & 0x01 ); } + int k8055_digital_2( struct k8055_dev* dev ) { return ( ( dev->data_in[DIGITAL_INP_OFFSET] >> 5 ) & 0x01 ); } + int k8055_digital_3( struct k8055_dev* dev ) { return ( ( dev->data_in[DIGITAL_INP_OFFSET] ) & 0x01 ); } + int k8055_digital_4( struct k8055_dev* dev ) { return ( ( dev->data_in[DIGITAL_INP_OFFSET] >> 6 ) & 0x01 ); } + int k8055_digital_5( struct k8055_dev* dev ) { return ( ( dev->data_in[DIGITAL_INP_OFFSET] >> 7 ) & 0x01 ); } + int k8055_analog_1( struct k8055_dev* dev ) { return dev->data_in[ANALOG_1_OFFSET]; } + int k8055_analog_2( struct k8055_dev* dev ) { return dev->data_in[ANALOG_2_OFFSET]; } + int k8055_counter_1( struct k8055_dev* dev ) { return dev->data_in[COUNTER_1_OFFSET]; } + int k8055_counter_2( struct k8055_dev* dev ) { return dev->data_in[COUNTER_2_OFFSET]; } char* k8055_version( void ); void k8055_set_debug_on( void ); diff --git a/libk8055/libk8055.c b/libk8055/libk8055.c index 6d85c06..536507e 100644 --- a/libk8055/libk8055.c +++ b/libk8055/libk8055.c @@ -99,13 +99,7 @@ #define USB_TIMEOUT 20 #define K8055_ERROR -1 -#define DIGITAL_INP_OFFSET 0 -#define DIGITAL_OUT_OFFSET 1 -#define ANALOG_1_OFFSET 2 -#define ANALOG_2_OFFSET 3 -#define COUNTER_1_OFFSET 4 -#define COUNTER_2_OFFSET 6 - +#define CMD_OFFSET 0 #define CMD_RESET 0x00 #define CMD_SET_DEBOUNCE_1 0x01 #define CMD_SET_DEBOUNCE_2 0x01 @@ -117,7 +111,7 @@ static int debug = 0; /* Actual read of data from the device endpoint, retry READ_RETRY times if not responding ok */ -static int k8055_read( struct k8055_dev* dev ) { +int k8055_read( struct k8055_dev* dev ) { if( dev->dev_no==0 ) return K8055_ERROR; for( int i=0; i<READ_RETRY; i++ ) { int read_status = usb_interrupt_read( dev->device_handle, USB_INP_EP, ( char* )dev->data_in, PACKET_LEN, USB_TIMEOUT ); @@ -128,7 +122,7 @@ static int k8055_read( struct k8055_dev* dev ) { } /* Actual write of data to the device endpont, retry WRITE_RETRY times if not reponding correctly */ -static int k8055_write( struct k8055_dev* dev ) { +int k8055_write( struct k8055_dev* dev ) { if( dev->dev_no == 0 ) return K8055_ERROR; for( int i=0; i<WRITE_RETRY; i++ ) { int write_status = usb_interrupt_write( dev->device_handle, USB_OUT_EP, ( char* )dev->data_out, PACKET_LEN, USB_TIMEOUT ); |