sn9c102 come installare
Come posso installare i drivers di sn9c102 allego i files in questione
Grazie
--
.''`. ** Debian GNU/Linux ** | David Simoni aka Morphy
: :' : The Universal O.S. | david at simoni dot it
`. `'` | GPG Key ID: 0xDE319AC5
`- http://www.debian.org | GNU/LINUX register user #382129
| http://counter.li.org/
Key Fingerprint A895 CE22 624C 6D61 0789 7F26 2E88 B9A0 DE31 9AC5
/* This code is (c) Ian Molton. It is GPL, however I *must be asked for permission to use it* should you desire to use it in your own project. */
#include <gtk/gtk.h>
#include <linux/soundcard.h>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/ioctl.h>
#include <fcntl.h>
#include "sonixbits.c"
#define WIDTH 640
#define HEIGHT 480
struct usb_dev_handle *dev;
/* Backing pixmap for drawing area */
static GdkPixbuf *pixbuf = NULL;
float *buffer = NULL;
/* Create a new backing pixmap of the appropriate size */
static gint configure_event( GtkWidget *widget,
GdkEventConfigure *event )
{
if (pixbuf)
g_object_unref (pixbuf);
pixbuf = gdk_pixbuf_new (GDK_COLORSPACE_RGB, 0, 8, WIDTH, HEIGHT);
return TRUE;
}
/* Redraw the screen from the backing pixmap */
static gint expose_event( GtkWidget *widget,
GdkEventExpose *event )
{
gdk_pixbuf_render_to_drawable (pixbuf, widget->window,
widget->style->fg_gc[GTK_WIDGET_STATE (widget)],
0, 0, 0, 0, WIDTH, HEIGHT, GDK_RGB_DITHER_NONE, 0, 0);
return FALSE;
}
int find_header (unsigned char *buffer, int length){
int i;
i = 0;
while(i < length-12){
if(buffer[i] == 0xff && buffer[i+1] == 0xff && buffer[i+2] == 0x00 && buffer[i+3] == 0xc4 && buffer[i+4] == 0xc4 && buffer[i+5] == 0x96 && buffer[i+6] == 0x00)
return i;
i++;
}
return -1;
}
/* Draw the graph */
int get_bit(unsigned char *data, int *position, int reset){
static int bit;
static unsigned char byte;
if(reset){
bit = 0;
byte = data[*position]; *position++;
}
if(bit < 7){
bit++;
return (byte >> (7-bit)) & 1;
}
bit = 1;
byte = data[*position]; *position++;
return byte >> 7;
}
int get_byte(unsigned char last, unsigned char *data, int *position, int reset){
int i;
int b;
b = get_bit(data, position, reset);
if(b == 0)
return last;
i = get_bit(data, position, 0) << 1 | get_bit(data, position, 0);
switch(i){
case 1:
return last+3;
case 2:
return last-3;
case 0:
i = get_bit(data, position, 0);
if(i)
return last-8;
return last+8;
case 3:
i = get_bit(data, position, 0);
if(i)
return last-18;
i = get_bit(data, position, 0);
if(!i)
return last+18;
b = 0;
for(i = 4 ; i >=0 ; i--)
b |= get_bit(data, position, 0) << i;
return (8*b)+4;
}
return last;
}
static gboolean draw_graph(gpointer data){
GtkWidget *widget = data;
unsigned char *pixdata = gdk_pixbuf_get_pixels(pixbuf);
static unsigned char databuffer[4*1024*1024];
int i, o, x, start, end;
usb_bulk_read(dev, 0x82, databuffer, 352*288*3, 1000);
start = find_header(databuffer, 352*288*3); printf("start: %d\n", start);
if(start == -1)
return TRUE;
end = find_header(databuffer+start+12, 352*288*3 - start - 12);
if(end == -1)
end = 352*288*3;
else
end += start+12;
printf("len: %d\n", end-start);
if(end-start < 128){
for(i = 0 ; i < end-start ; i++)
printf("<%02x> ", databuffer[start+i]);fflush(0);
printf("\n");
}
i = start+12; o = 0;
while(i < end && o < WIDTH*HEIGHT*3 && i < end){
pixdata[o] = databuffer[i]; o++ ; i++;
pixdata[o] = databuffer[i]; o++ ; i++;
o++;
for(x = 0 ; x < WIDTH-2 && o < WIDTH*HEIGHT*3 && i < end; x++){
pixdata[o] = get_byte(pixdata[o-3], databuffer, &i, x?0:1);
o+=3;
}
o+=3;
}
gtk_widget_queue_draw_area (widget, 0,0,widget->allocation.width, widget->allocation.height);
return TRUE;
}
void quit ()
{
exit (0);
}
int main( int argc,
char *argv[] )
{
GtkWidget *window;
GtkWidget *drawing_area;
GtkWidget *vbox;
gtk_init (&argc, &argv);
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_widget_set_name (window, "Test Input");
vbox = gtk_vbox_new (FALSE, 0);
gtk_container_add (GTK_CONTAINER (window), vbox);
gtk_widget_show (vbox);
g_signal_connect (G_OBJECT (window), "destroy",
G_CALLBACK (quit), NULL);
/* Create the drawing area */
drawing_area = gtk_drawing_area_new ();
gtk_widget_set_size_request (GTK_WIDGET (drawing_area), WIDTH, HEIGHT);
gtk_box_pack_start (GTK_BOX (vbox), drawing_area, TRUE, TRUE, 0);
gtk_widget_show (drawing_area);
/* Signals used to handle backing pixmap */
g_signal_connect (G_OBJECT (drawing_area), "expose_event",
G_CALLBACK (expose_event), NULL);
g_signal_connect (G_OBJECT (drawing_area),"configure_event",
G_CALLBACK (configure_event), NULL);
gtk_widget_set_events (drawing_area, GDK_EXPOSURE_MASK
| GDK_LEAVE_NOTIFY_MASK);
dev = get_dev();
gtk_widget_show (window);
gtk_timeout_add(10, draw_graph, (gpointer)drawing_area);
gtk_main ();
return 0;
}
/* This code is (c) Ian Molton. It is GPL, however I *must be asked for permission to use it* should you desire to use it in your own project. */
#include <stdio.h>
#include <usb.h>
#include <sys/ioctl.h>
struct usb_dev_handle {
int fd;
struct usb_bus *bus;
struct usb_device *device;
int config;
int interface;
int altsetting;
/* Added by RMT so implementations can store other per-open-device data */
void *impl_info;
};
void send_ctrl(usb_dev_handle *handle, int rq, int rqt, int value, int index, unsigned char *str, int len){
int p, q;
q = usb_control_msg(handle, rq, rqt, value, index, str, len, 100);
if(q != -1){
printf("control: %02x\n", q);
for(p = 0 ; p < q ; p++)
printf("%02x ", str[p]);fflush(0);
printf("\n");
}
}
struct usbdevfs_iso_packet_desc {
unsigned int length;
unsigned int actual_length;
unsigned int status;
};
struct usbdevfs_urb {
unsigned char type;
unsigned char endpoint;
int status;
unsigned int flags;
void *buffer;
int buffer_length;
int actual_length;
int start_frame;
int number_of_packets;
int error_count;
unsigned int signr; /* signal to be sent on error, -1 if none should be sent */
void *usercontext;
// struct usbdevfs_iso_packet_desc iso_frame_desc[0];
};
struct usbthing {
struct usbdevfs_urb urb;
struct usbdevfs_iso_packet_desc iso[32];
};
#define USBDEVFS_URB_TYPE_ISO 0
#define USBDEVFS_SUBMITURB _IOR('U', 10, struct usbdevfs_urb)
int submit_iso(usb_dev_handle *handle, int ep){
struct usbthing thing;
struct usbdevfs_urb *urb = &thing.urb;
struct usbdevfs_iso_packet_desc *iso = &thing.iso;
char buf[640000];
int ret;
int i;
urb->type = USBDEVFS_URB_TYPE_ISO;
urb->endpoint = ep;
urb->flags = 0x0; //0x82??
urb->buffer = buf;
urb->buffer_length = 640000;
urb->start_frame = 0;
urb->number_of_packets = 32;
urb->signr = 0; // -1
//urb->iso_frame_desc = iso;
for(i = 0 ; i < 32 ; i++){
iso[i].length=1023;
iso[i].status = 0;
}
ret = ioctl(handle->fd, USBDEVFS_SUBMITURB, &thing);
if(ret >= 0)
printf("submit_iso: %d\n", ret);
}
void do_stuff(struct usb_device *dev){
usb_dev_handle *handle;
unsigned char str[64000];
int q, p, j, i;
FILE *file;
handle = usb_open(dev);
printf("%d\n", handle);
printf("set_config: %d\n", usb_set_configuration(handle, 1));
printf("claim: %d\n", usb_claim_interface(handle, 0));
printf("set_alt: %d\n", usb_set_altinterface(handle, 8));
send_ctrl(handle, 0xc1, 0, 0, 0, str, 1);
str[0] = 0x28; str[1] = 0x1e;
send_ctrl(handle, 0x41, 0x08, 0x15, 0, str, 2);
str[0] = 0x9e;
send_ctrl(handle, 0x41, 0x08, 0x18, 0, str, 1);
str[0] = 0x20;
send_ctrl(handle, 0x41, 0x08, 0x17, 0, str, 1);
str[0] = 0x22;
send_ctrl(handle, 0x41, 0x08, 0x19, 0, str, 1);
str[0] = 0x02; str[1] = 0x03; str[2] = 0x0f; str[3] = 0x0c;
send_ctrl(handle, 0x41, 0x08, 0x1c, 0, str, 4);
str[0] = 0x46;
send_ctrl(handle, 0x41, 0x08, 0x01, 0, str, 1);
str[0] = 0xb0; str[1] = 0x11; str[2] = 0x20; str[3] = 0x00;
str[4] = 0xc1; str[5] = 0x00; str[6] = 0x00; str[7] = 0x10;
send_ctrl(handle, 0x41, 0x08, 0x08, 0, str, 8);
str[0] = 0xb0; str[1] = 0x11; str[2] = 0x22; str[3] = 0x00;
str[4] = 0x10; str[5] = 0x00; str[6] = 0x00; str[7] = 0x10;
send_ctrl(handle, 0x41, 0x08, 0x08, 0, str, 8);
str[0] = 0xd0; str[1] = 0x11; str[2] = 0x10; str[3] = 0x00;
str[4] = 0x04; str[5] = 0x00; str[6] = 0x03; str[7] = 0x10;
send_ctrl(handle, 0x41, 0x08, 0x08, 0, str, 8);
str[0] = 0xd0; str[1] = 0x11; str[2] = 0x14; str[3] = 0x01;
str[4] = 0xe0; str[5] = 0x02; str[6] = 0x80; str[7] = 0x10;
send_ctrl(handle, 0x41, 0x08, 0x08, 0, str, 8);
str[0] = 0xb0; str[1] = 0x11; str[2] = 0x20; str[3] = 0x00;
str[4] = 0xc1; str[5] = 0x02; str[6] = 0x80; str[7] = 0x10;
send_ctrl(handle, 0x41, 0x08, 0x08, 0, str, 8);
str[0] = 0x46;
send_ctrl(handle, 0x41, 0x08, 0x01, 0, str, 1);
str[0] = 0x20;
send_ctrl(handle, 0x41, 0x08, 0x17, 0, str, 1);
str[0] = 0x90; str[1] = 0x11; str[2] = 0x00; str[3] = 0x00;
str[4] = 0x00; str[5] = 0x00; str[6] = 0x00; str[7] = 0x10;
send_ctrl(handle, 0x41, 0x08, 0x08, 0, str, 8);
str[0] = 0x92; str[1] = 0x11; str[2] = 0x00; str[3] = 0x00;
str[4] = 0x00; str[5] = 0x00; str[6] = 0x00; str[7] = 0x10;
send_ctrl(handle, 0x41, 0x08, 0x08, 0, str, 8);
send_ctrl(handle, 0xc1, 0, 0x0a, 0, str, 5);
str[0] = 0x16; str[1] = 0x12;
send_ctrl(handle, 0x41, 0x08, 0x15, 0, str, 2);
str[0] = 0x8e;
send_ctrl(handle, 0x41, 0x08, 0x18, 0, str, 1);
str[0] = 0x20;
send_ctrl(handle, 0x41, 0x08, 0x17, 0, str, 1);
str[0] = 0x22;
send_ctrl(handle, 0x41, 0x08, 0x19, 0, str, 1);
str[0] = 0x02; str[1] = 0x02; str[2] = 0x09; str[3] = 0x07;
send_ctrl(handle, 0x41, 0x08, 0x1c, 0, str, 4);
str[0] = 0x06;
send_ctrl(handle, 0x41, 0x08, 0x01, 0, str, 1);
str[0] = 0xb0; str[1] = 0x11; str[2] = 0x20; str[3] = 0x00;
str[4] = 0x2d; str[5] = 0x00; str[6] = 0x00; str[7] = 0x10;
send_ctrl(handle, 0x41, 0x08, 0x08, 0, str, 8);
str[0] = 0xb0; str[1] = 0x11; str[2] = 0x22; str[3] = 0x00;
str[4] = 0x03; str[5] = 0x00; str[6] = 0x00; str[7] = 0x10;
send_ctrl(handle, 0x41, 0x08, 0x08, 0, str, 8);
str[0] = 0xd0; str[1] = 0x11; str[2] = 0x10; str[3] = 0x00;
str[4] = 0x64; str[5] = 0x00; str[6] = 0x91; str[7] = 0x10;
send_ctrl(handle, 0x41, 0x08, 0x08, 0, str, 8);
str[0] = 0xd0; str[1] = 0x11; str[2] = 0x14; str[3] = 0x01;
str[4] = 0x20; str[5] = 0x01; str[6] = 0x60; str[7] = 0x10;
send_ctrl(handle, 0x41, 0x08, 0x08, 0, str, 8);
str[0] = 0xb0; str[1] = 0x11; str[2] = 0x20; str[3] = 0x00;
str[4] = 0x2d; str[5] = 0x01; str[6] = 0x60; str[7] = 0x10;
send_ctrl(handle, 0x41, 0x08, 0x08, 0, str, 8);
str[0] = 0x06; str[1] = 0x03; str[2] = 0x00; str[3] = 0x00;
str[4] = 0x00; str[5] = 0x00; str[6] = 0x00; str[7] = 0xb0;
str[8] = 0x11; str[9] = 0x20; str[10] = 0x00; str[11] = 0x2d;
str[12] = 0x01; str[13] = 0x60; str[14] = 0x10; str[15] = 0x00;
str[16] = 0x00; str[17] = 0x01; str[18] = 0x01; str[19] = 0x00;
str[20] = 0x16; str[21] = 0x12; str[22] = 0x20; str[23] = 0x8e;
str[24] = 0x22; str[25] = 0x00; str[26] = 0x00; str[27] = 0x02;
str[28] = 0x02; str[29] = 0x09; str[30] = 0x07;
send_ctrl(handle, 0x41, 0x08, 0x01, 0, str, 31);
str[0] = 0xb0; str[1] = 0x11; str[2] = 0x01; str[3] = 0x05;
str[4] = 0x02; str[5] = 0x01; str[6] = 0x60; str[7] = 0x10;
send_ctrl(handle, 0x41, 0x08, 0x08, 0, str, 8);
str[0] = 0xd0; str[1] = 0x11; str[2] = 0x10; str[3] = 0x00;
str[4] = 0x64; str[5] = 0x00; str[6] = 0x91; str[7] = 0x10;
send_ctrl(handle, 0x41, 0x08, 0x08, 0, str, 8);
str[0] = 0xd0; str[1] = 0x11; str[2] = 0x14; str[3] = 0x01;
str[4] = 0x20; str[5] = 0x01; str[6] = 0x60; str[7] = 0x10;
send_ctrl(handle, 0x41, 0x08, 0x08, 0, str, 8);
str[0] = 0xd0; str[1] = 0x11; str[2] = 0x20; str[3] = 0x00;
str[4] = 0x2d; str[5] = 0x00; str[6] = 0x03; str[7] = 0x10;
send_ctrl(handle, 0x41, 0x08, 0x08, 0, str, 8);
str[0] = 0xc0; str[1] = 0x11; str[2] = 0x25; str[3] = 0x00;
str[4] = 0x02; str[5] = 0x88; str[6] = 0x03; str[7] = 0x10;
send_ctrl(handle, 0x41, 0x08, 0x08, 0, str, 8);
str[0] = 0xd0; str[1] = 0x11; str[2] = 0x30; str[3] = 0x20;
str[4] = 0x19; str[5] = 0x19; str[6] = 0x19; str[7] = 0x10;
send_ctrl(handle, 0x41, 0x08, 0x08, 0, str, 8);
str[0] = 0xa0; str[1] = 0x11; str[2] = 0x34; str[3] = 0x02;
str[4] = 0x19; str[5] = 0x19; str[6] = 0x19; str[7] = 0x10;
send_ctrl(handle, 0x41, 0x08, 0x08, 0, str, 8);
str[0] = 0xa0; str[1] = 0x11; str[2] = 0x5b; str[3] = 0x0a;
str[4] = 0x19; str[5] = 0x19; str[6] = 0x19; str[7] = 0x10;
send_ctrl(handle, 0x41, 0x08, 0x08, 0, str, 8);
str[0] = 0xb0; str[1] = 0x11; str[2] = 0x20; str[3] = 0x00;
str[4] = 0x2d; str[5] = 0x19; str[6] = 0x19; str[7] = 0x10;
send_ctrl(handle, 0x41, 0x08, 0x08, 0, str, 8);
str[0] = 0xb0; str[1] = 0x11; str[2] = 0x20; str[3] = 0x00;
str[4] = 0x2d; str[5] = 0x19; str[6] = 0x19; str[7] = 0x10;
send_ctrl(handle, 0x41, 0x08, 0x08, 0, str, 8);
str[0] = 0x30;
//send_ctrl(handle, 0x41, 0x08, 0x17, 0, str, 1);
str[0] = 0x0e;
send_ctrl(handle, 0x41, 0x08, 0x18, 0, str, 1);
usb_resetep(handle, 0x83);
usb_resetep(handle, 0x81);
usb_resetep(handle, 0x82);
sleep(1);
//while(1)
// submit_iso(handle, 0x81);
// return;
file = fopen("/home/ian/cam_in.raw", "wb");
while(1){
memset(str, 0, 1023);
send_ctrl(handle, 0xc1, 0, 0x0a, 0, str, 5);
q = usb_bulk_read(handle, 0x82, str, 64000, 1000);
j = 0;
if(q >= 0){
fwrite(str, q, 1, file);
for(i = 0 ; i < q ; i++)
j += str[i];
printf("%d : %08x\n",q, j);
}
/*else{
usb_resetep(handle, 0x83);
usb_resetep(handle, 0x81);
}*/
}
printf("\n");
}
int main(void){
struct usb_bus *busses;
struct usb_bus *bus;
usb_init();
usb_find_busses();
usb_find_devices();
busses = usb_get_busses();
for (bus = busses; bus; bus = bus->next) {
struct usb_device *dev;
for (dev = bus->devices; dev; dev = dev->next) {
if (dev->descriptor.idVendor == 0x0c45 && dev->descriptor.idProduct == 0x602a) {
// printf("%d\n", dev->config[0].bConfigurationValue);
do_stuff(dev);
exit(0);
}
}
}
return 0;
}
/* This code is (c) Ian Molton. It is GPL, however I *must be asked for permission to use it* should you desire to use it in your own project. */
#include <stdio.h>
#include <usb.h>
#include <sys/ioctl.h>
void send_ctrl(usb_dev_handle *handle, int rq, int rqt, int value, int index, unsigned char *str, int len){
int p, q;
q = usb_control_msg(handle, rq, rqt, value, index, str, len, 100);
if(q != -1){
printf("control: %02x\n", q);
for(p = 0 ; p < q ; p++)
printf("%02x ", str[p]);fflush(0);
printf("\n");
}
}
usb_dev_handle *do_stuff(struct usb_device *dev){
usb_dev_handle *handle;
unsigned char str[64000];
handle = usb_open(dev);
printf("set_config: %d\n", usb_set_configuration(handle, 1));
printf("claim: %d\n", usb_claim_interface(handle, 0));
printf("set_alt: %d\n", usb_set_altinterface(handle, 8));
send_ctrl(handle, 0xc1, 0, 0, 0, str, 1);
str[0] = 0x28; str[1] = 0x1e;
send_ctrl(handle, 0x41, 0x08, 0x15, 0, str, 2);
str[0] = 0x8e;
send_ctrl(handle, 0x41, 0x08, 0x18, 0, str, 1);
str[0] = 0x20;
send_ctrl(handle, 0x41, 0x08, 0x17, 0, str, 1);
str[0] = 0x32;
send_ctrl(handle, 0x41, 0x08, 0x19, 0, str, 1);
str[0] = 0x02; str[1] = 0x03; str[2] = 0x0f; str[3] = 0x0c;
send_ctrl(handle, 0x41, 0x08, 0x1c, 0, str, 4);
str[0] = 0x06;
send_ctrl(handle, 0x41, 0x08, 0x01, 0, str, 1);
str[0] = 0xb0; str[1] = 0x11; str[2] = 0x20; str[3] = 0x00;
str[4] = 0x2a; str[5] = 0x00; str[6] = 0x00; str[7] = 0x10;
send_ctrl(handle, 0x41, 0x08, 0x08, 0, str, 8);
str[0] = 0xb0; str[1] = 0x11; str[2] = 0x22; str[3] = 0x00;
str[4] = 0x28; str[5] = 0x00; str[6] = 0x00; str[7] = 0x10;
send_ctrl(handle, 0x41, 0x08, 0x08, 0, str, 8);
str[0] = 0xd0; str[1] = 0x11; str[2] = 0x10; str[3] = 0x00;
str[4] = 0x04; str[5] = 0x00; str[6] = 0x03; str[7] = 0x10;
send_ctrl(handle, 0x41, 0x08, 0x08, 0, str, 8);
str[0] = 0xd0; str[1] = 0x11; str[2] = 0x14; str[3] = 0x01;
str[4] = 0xe0; str[5] = 0x02; str[6] = 0x80; str[7] = 0x10;
send_ctrl(handle, 0x41, 0x08, 0x08, 0, str, 8);
str[0] = 0xb0; str[1] = 0x11; str[2] = 0x20; str[3] = 0x00;
str[4] = 0x2a; str[5] = 0x02; str[6] = 0x80; str[7] = 0x10;
send_ctrl(handle, 0x41, 0x08, 0x08, 0, str, 8);
str[0] = 0x06;
send_ctrl(handle, 0x41, 0x08, 0x01, 0, str, 1);
str[0] = 0x20;
send_ctrl(handle, 0x41, 0x08, 0x17, 0, str, 1);
str[0] = 0x90; str[1] = 0x11; str[2] = 0x00; str[3] = 0x00;
str[4] = 0x00; str[5] = 0x00; str[6] = 0x00; str[7] = 0x10;
send_ctrl(handle, 0x41, 0x08, 0x08, 0, str, 8);
str[0] = 0x92; str[1] = 0x11; str[2] = 0x00; str[3] = 0x00;
str[4] = 0x00; str[5] = 0x00; str[6] = 0x00; str[7] = 0x10;
send_ctrl(handle, 0x41, 0x08, 0x08, 0, str, 8);
send_ctrl(handle, 0xc1, 0, 0x0a, 0, str, 5);
str[0] = 0x16; str[1] = 0x12;
send_ctrl(handle, 0x41, 0x08, 0x15, 0, str, 2);
str[0] = 0x8e;
send_ctrl(handle, 0x41, 0x08, 0x18, 0, str, 1);
str[0] = 0x20;
send_ctrl(handle, 0x41, 0x08, 0x17, 0, str, 1);
str[0] = 0x22;
send_ctrl(handle, 0x41, 0x08, 0x19, 0, str, 1);
str[0] = 0x02; str[1] = 0x02; str[2] = 0x09; str[3] = 0x07;
send_ctrl(handle, 0x41, 0x08, 0x1c, 0, str, 4);
str[0] = 0x06;
send_ctrl(handle, 0x41, 0x08, 0x01, 0, str, 1);
str[0] = 0xb0; str[1] = 0x11; str[2] = 0x20; str[3] = 0x00;
str[4] = 0x2d; str[5] = 0x00; str[6] = 0x00; str[7] = 0x10;
send_ctrl(handle, 0x41, 0x08, 0x08, 0, str, 8);
str[0] = 0xb0; str[1] = 0x11; str[2] = 0x22; str[3] = 0x00;
str[4] = 0x03; str[5] = 0x00; str[6] = 0x00; str[7] = 0x10;
send_ctrl(handle, 0x41, 0x08, 0x08, 0, str, 8);
str[0] = 0xd0; str[1] = 0x11; str[2] = 0x10; str[3] = 0x00;
str[4] = 0x64; str[5] = 0x00; str[6] = 0x91; str[7] = 0x10;
send_ctrl(handle, 0x41, 0x08, 0x08, 0, str, 8);
str[0] = 0xd0; str[1] = 0x11; str[2] = 0x14; str[3] = 0x01;
str[4] = 0x20; str[5] = 0x01; str[6] = 0x60; str[7] = 0x10;
send_ctrl(handle, 0x41, 0x08, 0x08, 0, str, 8);
str[0] = 0xb0; str[1] = 0x11; str[2] = 0x20; str[3] = 0x00;
str[4] = 0x2d; str[5] = 0x01; str[6] = 0x60; str[7] = 0x10;
send_ctrl(handle, 0x41, 0x08, 0x08, 0, str, 8);
str[0] = 0x06; str[1] = 0x03; str[2] = 0x00; str[3] = 0x00;
str[4] = 0x00; str[5] = 0x00; str[6] = 0x00; str[7] = 0xb0;
str[8] = 0x11; str[9] = 0x20; str[10] = 0x00; str[11] = 0x2d;
str[12] = 0x01; str[13] = 0x60; str[14] = 0x10; str[15] = 0x00;
str[16] = 0x00; str[17] = 0x01; str[18] = 0x01; str[19] = 0x00;
str[20] = 0x16; str[21] = 0x12; str[22] = 0x20; str[23] = 0x8e;
str[24] = 0x22; str[25] = 0x00; str[26] = 0x00; str[27] = 0x02;
str[28] = 0x02; str[29] = 0x09; str[30] = 0x07;
send_ctrl(handle, 0x41, 0x08, 0x01, 0, str, 31);
str[0] = 0xb0; str[1] = 0x11; str[2] = 0x01; str[3] = 0x05;
str[4] = 0x02; str[5] = 0x01; str[6] = 0x60; str[7] = 0x10;
send_ctrl(handle, 0x41, 0x08, 0x08, 0, str, 8);
str[0] = 0xd0; str[1] = 0x11; str[2] = 0x10; str[3] = 0x00;
str[4] = 0x64; str[5] = 0x00; str[6] = 0x91; str[7] = 0x10;
send_ctrl(handle, 0x41, 0x08, 0x08, 0, str, 8);
str[0] = 0xd0; str[1] = 0x11; str[2] = 0x14; str[3] = 0x01;
str[4] = 0x20; str[5] = 0x01; str[6] = 0x60; str[7] = 0x10;
send_ctrl(handle, 0x41, 0x08, 0x08, 0, str, 8);
str[0] = 0xd0; str[1] = 0x11; str[2] = 0x20; str[3] = 0x00;
str[4] = 0x2d; str[5] = 0x00; str[6] = 0x03; str[7] = 0x10;
send_ctrl(handle, 0x41, 0x08, 0x08, 0, str, 8);
str[0] = 0xc0; str[1] = 0x11; str[2] = 0x25; str[3] = 0x00;
str[4] = 0x02; str[5] = 0x88; str[6] = 0x03; str[7] = 0x10;
send_ctrl(handle, 0x41, 0x08, 0x08, 0, str, 8);
str[0] = 0xd0; str[1] = 0x11; str[2] = 0x30; str[3] = 0x20;
str[4] = 0x19; str[5] = 0x19; str[6] = 0x19; str[7] = 0x10;
send_ctrl(handle, 0x41, 0x08, 0x08, 0, str, 8);
str[0] = 0xa0; str[1] = 0x11; str[2] = 0x34; str[3] = 0x02;
str[4] = 0x19; str[5] = 0x19; str[6] = 0x19; str[7] = 0x10;
send_ctrl(handle, 0x41, 0x08, 0x08, 0, str, 8);
str[0] = 0xa0; str[1] = 0x11; str[2] = 0x5b; str[3] = 0x0a;
str[4] = 0x19; str[5] = 0x19; str[6] = 0x19; str[7] = 0x10;
send_ctrl(handle, 0x41, 0x08, 0x08, 0, str, 8);
str[0] = 0xb0; str[1] = 0x11; str[2] = 0x20; str[3] = 0x00;
str[4] = 0x2d; str[5] = 0x19; str[6] = 0x19; str[7] = 0x10;
send_ctrl(handle, 0x41, 0x08, 0x08, 0, str, 8);
str[0] = 0x30;
//send_ctrl(handle, 0x41, 0x08, 0x17, 0, str, 1);
str[0] = 0x0e;
//send_ctrl(handle, 0x41, 0x08, 0x18, 0, str, 1);
usb_resetep(handle, 0x83);
usb_resetep(handle, 0x81);
usb_resetep(handle, 0x82);
return handle;
}
struct usb_dev_handle *get_dev(void){
struct usb_bus *busses;
struct usb_bus *bus;
usb_init();
usb_find_busses();
usb_find_devices();
busses = usb_get_busses();
for (bus = busses; bus; bus = bus->next) {
struct usb_device *dev;
for (dev = bus->devices; dev; dev = dev->next) {
if (dev->descriptor.idVendor == 0x0c45 && dev->descriptor.idProduct == 0x602a) {
// printf("%d\n", dev->config[0].bConfigurationValue);
return do_stuff(dev);
}
}
}
return NULL;
}
Reply to: