comparison minimon.c @ 2:bac8ed8d6eb9

add jpeg coding and test stuff
author Peter Meerwald <pmeerw@pmeerw.net>
date Sun, 08 May 2011 18:22:22 +0200
parents 111d4bbce605
children 078dc69945ad
comparison
equal deleted inserted replaced
1:111d4bbce605 2:bac8ed8d6eb9
16 const char *name; 16 const char *name;
17 int width; 17 int width;
18 int height; 18 int height;
19 } id_info_t; 19 } id_info_t;
20 20
21 // there are many more,
21 static id_info_t ids[] = { 22 static id_info_t ids[] = {
22 {0x2027, 0x2028, }, 23 {0x2027, 0x2028, "SPF-107H", 1024, 600},
23 {0xffff, 0xffff, "SPF-75H", 800, 480}, 24 {0xffff, 0xffff, "SPF-75H", 800, 480},
24 {0xffff, 0xffff, "SPF-83H", 800, 600}, // 85P?? 25 {0xffff, 0xffff, "SPF-83H", 800, 600},
25 {0xffff, 0xffff, "SPF-85H", 800, 600}, // 85P?? 26 {0xffff, 0xffff, "SPF-85H", 800, 600}, // 85P??
26 {0x2033, 0x2034, "SPF-87H", 800, 480}, 27 {0x2033, 0x2034, "SPF-87H", 800, 480},
27 {0x2035, 0x2036, "SPF-107H", 1024, 600}, 28 {0x2035, 0x2036, "SPF-107H", 1024, 600},
28 {0, 0, } // end-of-list 29 {0, 0, } // end-of-list
29 }; 30 };
74 return NULL; 75 return NULL;
75 } 76 }
76 77
77 static usb_dev_handle *dev_open(struct usb_device *dev) { 78 static usb_dev_handle *dev_open(struct usb_device *dev) {
78 int res = -1; 79 int res = -1;
79 char buf[256];
80 usb_dev_handle *udev; 80 usb_dev_handle *udev;
81 int numeps = 0; 81 int numeps = 0;
82 82
83 udev = usb_open(dev); 83 udev = usb_open(dev);
84 if (!udev) { 84 if (!udev) {
85 fprintf(stderr, "%s: failed to open device, exit.\n", progname); 85 fprintf(stderr, "%s: failed to open device, exit.\n", progname);
86 exit(EXIT_FAILURE); 86 exit(EXIT_FAILURE);
87 } 87 }
88 88
89 setuid(getuid()); 89 // setuid(getuid());
90 90
91 res = usb_set_configuration(udev, 1); 91 res = usb_set_configuration(udev, 1);
92 92
93 usb_claim_interface(udev, 0); 93 usb_claim_interface(udev, 0);
94 numeps = dev->config[0].interface[0].altsetting[0].bNumEndpoints; 94 numeps = dev->config[0].interface[0].altsetting[0].bNumEndpoints;
95 if (numeps == 0) { 95 if (numeps == 0) {
96 fprintf(stderr, "%s: no endpoints, exit.\n", progname); 96 fprintf(stderr, "%s: no endpoints, exit.\n", progname);
97 exit(EXIT_FAILURE); 97 exit(EXIT_FAILURE);
98 } 98 }
99
100 strcpy(buf, "** no string **");
101 res = usb_get_string_simple(udev, dev->descriptor.iManufacturer, buf, sizeof(buf));
102 // fprintf(stderr, "usb_get_string_simple => %d, %s\n", res, buf);
103 99
104 { 100 {
105 int eplist[] = { 0x2, 0x81, 0x83 }; 101 int eplist[] = { 0x2, 0x81, 0x83 };
106 int eplength = sizeof(eplist)/sizeof(eplist[0]); 102 int eplength = sizeof(eplist)/sizeof(eplist[0]);
107 int *endpoint = eplist; 103 int *endpoint = eplist;
177 int res = usb_control_msg(udev, USB_TYPE_STANDARD | USB_ENDPOINT_IN, USB_REQ_GET_DESCRIPTOR, 173 int res = usb_control_msg(udev, USB_TYPE_STANDARD | USB_ENDPOINT_IN, USB_REQ_GET_DESCRIPTOR,
178 0xfe, 0xfe, buf, 0xfe, 1000); 174 0xfe, 0xfe, buf, 0xfe, 1000);
179 fprintf(stderr, "%s: usb_control_msg() = %d\n", progname, res); 175 fprintf(stderr, "%s: usb_control_msg() = %d\n", progname, res);
180 176
181 usb_close(udev); 177 usb_close(udev);
178 usleep(500000);
182 } 179 }
183 180
184 dev = find_dev(index); 181 dev = find_dev(index);
185 if (!dev || need_switch) { 182 if (!dev || need_switch) {
186 fprintf(stderr, "%s: no photo frame device found, exit.\n", progname); 183 fprintf(stderr, "%s: no photo frame device found, exit.\n", progname);
190 fprintf(stderr, "%s: found %s (%d x %d)\n", 187 fprintf(stderr, "%s: found %s (%d x %d)\n",
191 progname, ids[have_idx].name, ids[have_idx].width, ids[have_idx].height); 188 progname, ids[have_idx].name, ids[have_idx].width, ids[have_idx].height);
192 189
193 usb_dev_handle *udev = dev_open(dev); 190 usb_dev_handle *udev = dev_open(dev);
194 191
195 // int res = usb_control_msg(udev, USB_TYPE_STANDARD | USB_ENDPOINT_IN, USB_REQ_GET_DESCRIPTOR,
196 // 0xfe, 0x0, buf, 0x0, 1000);
197 // fprintf(stderr, "%s: usb_control_msg() = %d\n", progname, res);
198
199 FILE *f = fopen(argv[1], "rb"); 192 FILE *f = fopen(argv[1], "rb");
200 if (f == NULL) { 193 if (f == NULL) {
201 fprintf(stderr, "%s: failed to open file '%s', exit.\n", progname, argv[1]); 194 fprintf(stderr, "%s: failed to open file '%s', exit.\n", progname, argv[1]);
202 exit(EXIT_FAILURE); 195 exit(EXIT_FAILURE);
203 } 196 }
204 send_jpeg(f, udev); 197 send_jpeg(f, udev);
205 fclose(f); 198 fclose(f);
206 199
200 while (1) {
201 char buf[2];
202 int res = usb_control_msg(udev, USB_TYPE_VENDOR | USB_ENDPOINT_IN, USB_REQ_GET_DESCRIPTOR,
203 0x0, 0x0, buf, 0x2, 1000);
204 fprintf(stderr, "%s: usb_control_msg() = %d\n", progname, res);
205
206 usleep(500000);
207 }
208
209 usb_close(udev);
210
207 return EXIT_SUCCESS; 211 return EXIT_SUCCESS;
208 } 212 }

Repositories maintained by Peter Meerwald, pmeerw@pmeerw.net.