Clean up - also compiles for ubanto
This commit is contained in:
parent
b841132264
commit
7769e7ef8c
3
Makefile
3
Makefile
@ -3,7 +3,8 @@
|
|||||||
obj-m += hanvon.o
|
obj-m += hanvon.o
|
||||||
|
|
||||||
all:
|
all:
|
||||||
gcc -L/usr/local/lib -lusb-1.0 hanvon-libusb.c -g
|
gcc hanvon-libusb.c -L/usr/local/lib -lusb-1.0 -g
|
||||||
|
|
||||||
|
|
||||||
archive:
|
archive:
|
||||||
tar f - --exclude=.git -C ../ -c hanvon | gzip -c9 > ../hanvon-`date +%Y%m%d`.tgz
|
tar f - --exclude=.git -C ../ -c hanvon | gzip -c9 > ../hanvon-`date +%Y%m%d`.tgz
|
||||||
|
@ -73,27 +73,83 @@ void callback(struct libusb_transfer *transfer) {
|
|||||||
printf("placeholder\n");
|
printf("placeholder\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int find_device(libusb_device **list, unsigned int count) {
|
||||||
|
if (count < 0) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
int found = -1;
|
||||||
|
struct libusb_device_descriptor desc;
|
||||||
|
for (unsigned int i = 0; i < count; i++) {
|
||||||
|
libusb_device *t = list[i];
|
||||||
|
libusb_get_device_descriptor(list[i], &desc);
|
||||||
|
|
||||||
|
printf( "Dev%u ID %04x:%04x\n", (i), desc.idVendor, desc.idProduct );
|
||||||
|
|
||||||
|
if (desc.idVendor == VENDOR_ID_HANVON) {
|
||||||
|
switch(desc.idProduct) {
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
case PRODUCT_ID_AM0806:
|
||||||
|
case PRODUCT_ID_AM0605:
|
||||||
|
case PRODUCT_ID_AM1107:
|
||||||
|
case PRODUCT_ID_AM1209:
|
||||||
|
case PRODUCT_ID_RL0604:
|
||||||
|
case PRODUCT_ID_RL0504:
|
||||||
|
case PRODUCT_ID_GP0806:
|
||||||
|
case PRODUCT_ID_GP0806B:
|
||||||
|
case PRODUCT_ID_GP0605:
|
||||||
|
case PRODUCT_ID_GP0605A:
|
||||||
|
case PRODUCT_ID_GP0504:
|
||||||
|
case PRODUCT_ID_NXS1513:
|
||||||
|
case PRODUCT_ID_GP0906:
|
||||||
|
case PRODUCT_ID_APPIV0906:
|
||||||
|
return i;
|
||||||
|
} // end switch
|
||||||
|
} // end if
|
||||||
|
} // end for
|
||||||
|
return found;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
libusb_device *FindHanvon( libusb_context **context);
|
libusb_device *FindHanvon( libusb_context **context);
|
||||||
int HandleData( void );
|
int HandleData( void );
|
||||||
|
|
||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
libusb_context *context;
|
#define UNREF_DEVICE 1
|
||||||
libusb_device *device;
|
#define KEEP_DEVICE_REF 0
|
||||||
libusb_device_handle *handle;
|
|
||||||
|
|
||||||
int state = libusb_init( &context );
|
libusb_device ** devs;
|
||||||
if( state != STATE_SUCCESS )
|
int r = libusb_init(NULL);
|
||||||
return state;
|
if (r < 0) {
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
int count = libusb_get_device_list(NULL, &devs);
|
||||||
|
if (count < 0) {
|
||||||
|
libusb_exit(NULL);
|
||||||
|
return count;
|
||||||
|
}
|
||||||
|
|
||||||
device = FindHanvon(& context );
|
int index = find_device(devs, count);
|
||||||
if( device == NULL )
|
if (index < 0) {
|
||||||
return STATE_NOT_FOUND;
|
printf("Device not plugged in\n");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
state = libusb_open( device, &handle );
|
printf("Device #%i\n", index);
|
||||||
if( state != STATE_SUCCESS )
|
|
||||||
return state;
|
libusb_device_handle *h;
|
||||||
|
int state = libusb_open(devs[index], &h);
|
||||||
|
libusb_free_device_list (devs, UNREF_DEVICE);
|
||||||
|
|
||||||
|
if (state < 0 || h == NULL) {
|
||||||
|
printf(" Something happened, %i.\n", state);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
printf("Got to this point\n");
|
||||||
|
|
||||||
|
|
||||||
// Wait and handle interrupts?
|
// Wait and handle interrupts?
|
||||||
@ -103,8 +159,8 @@ int main()
|
|||||||
const unsigned int LEN = 10; // wMaxPacketSize from lsusb -v
|
const unsigned int LEN = 10; // wMaxPacketSize from lsusb -v
|
||||||
unsigned char buffer[LEN];
|
unsigned char buffer[LEN];
|
||||||
// assign timeout of 1s, for any action is too much as is
|
// assign timeout of 1s, for any action is too much as is
|
||||||
libusb_fill_interrupt_transfer(&tx,
|
libusb_fill_interrupt_transfer( &tx,
|
||||||
handle,
|
h,
|
||||||
ENDPOINT_ADDR,
|
ENDPOINT_ADDR,
|
||||||
buffer,
|
buffer,
|
||||||
LEN,
|
LEN,
|
||||||
@ -113,11 +169,11 @@ int main()
|
|||||||
130); // milliseconds
|
130); // milliseconds
|
||||||
|
|
||||||
state = libusb_submit_transfer(&tx);
|
state = libusb_submit_transfer(&tx);
|
||||||
if( state != STATE_SUCCESS )
|
if (state < 0 ) {
|
||||||
return state;
|
return state;
|
||||||
|
}
|
||||||
for(;;) {
|
for(;;) {
|
||||||
libusb_handle_events(context);
|
libusb_handle_events(NULL);
|
||||||
}
|
}
|
||||||
return state;
|
return state;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user