Thanks, I tried but it doesn't work. I'm using an armv7 TI AM3359 CPU and Debian 6 (the same that on my x86 laptop). Initialization and parameter setting looks fine but I don't get any images. I modified the yaaca code:
if (old_run) {
fprintf(stderr, "B\n");
if (getImageData(buf, resolutions_x * resolutions_y * format_dim , 1000)) {
fprintf(stderr, "A1\n");
yaac_new_image(buf, resolutions_x, resolutions_y, z->format, format_dim);
}
fprintf(stderr, "A0\n");
z->dropped = getDroppedFrames();
}
else {
sleep(1);
}
z->temp = getSensorTemp();
printf("T %g\n", z->temp);
but I get:
root@fudoh:~/yaaca-0.1# ./yaaca
1d6b (bus 1, device 1)
03c3 (bus 1, device 7)
attached cameras:
0 ZWO ASI120MC
bayer is 2
T 1.4013e-45
SET: 1280x960 1 f: 0-0 s: 0+0
B
Bulk transfer length set to 1228800 .
A0
T 0
B
A0
T 0
B
^C
as you can see even the temperature redaing is not working. I had a quick look with strace and it seems working until a point, then all URB submissions go wrong:
ioctl(8, USBDEVFS_SUBMITURB or USBDEVFS_SUBMITURB32, 0xd9850) = 0
ioctl(8, USBDEVFS_SUBMITURB or USBDEVFS_SUBMITURB32, 0xd987c) = 0
ioctl(8, USBDEVFS_SUBMITURB or USBDEVFS_SUBMITURB32, 0xd98a8) = 0
ioctl(8, USBDEVFS_SUBMITURB or USBDEVFS_SUBMITURB32, 0xd98d4) = 0
ioctl(8, USBDEVFS_SUBMITURB or USBDEVFS_SUBMITURB32, 0xd9900) = 0
ioctl(8, USBDEVFS_SUBMITURB or USBDEVFS_SUBMITURB32, 0xd992c) = 0
ioctl(8, USBDEVFS_SUBMITURB or USBDEVFS_SUBMITURB32, 0xd9958) = 0
ioctl(8, USBDEVFS_SUBMITURB or USBDEVFS_SUBMITURB32, 0xd9984) = 0
ioctl(8, USBDEVFS_SUBMITURB or USBDEVFS_SUBMITURB32, 0xd99b0) = 0
timerfd_settime(7, TFD_TIMER_ABSTIME, {it_interval={0, 0}, it_value={1071, 244262000}}, NULL) = 0
poll(, 3, 60000) = 1 ()
ioctl(8, USBDEVFS_REAPURBNDELAY or USBDEVFS_REAPURBNDELAY32, 0x4512db64) = 0
poll(, 3, 60000) = 1 ()
ioctl(8, USBDEVFS_REAPURBNDELAY or USBDEVFS_REAPURBNDELAY32, 0x4512db64) = 0
poll(, 3, 60000) = 1 ()
ioctl(8, USBDEVFS_REAPURBNDELAY or USBDEVFS_REAPURBNDELAY32, 0x4512db64) = 0
poll(, 3, 60000) = 1 ()
ioctl(8, USBDEVFS_REAPURBNDELAY or USBDEVFS_REAPURBNDELAY32, 0x4512db64) = 0
poll(, 3, 60000) = 1 ()
timerfd_settime(7, 0, {it_interval={0, 0}, it_value={0, 0}}, NULL) = 0
clock_gettime(CLOCK_MONOTONIC, {1070, 795104083}) = 0
clock_gettime(CLOCK_MONOTONIC, {1070, 795256671}) = 0
ioctl(8, USBDEVFS_SUBMITURB or USBDEVFS_SUBMITURB32, 0xd8cf8) = -1 ENODEV (No such device)
clock_gettime(CLOCK_MONOTONIC, {1070, 799407062}) = 0
ioctl(8, USBDEVFS_SUBMITURB or USBDEVFS_SUBMITURB32, 0xd8cf8) = -1 ENODEV (No such device)
clock_gettime(CLOCK_MONOTONIC, {1070, 799712238}) = 0
ioctl(8, USBDEVFS_SUBMITURB or USBDEVFS_SUBMITURB32, 0xd8cf8) = -1 ENODEV (No such device)
clock_gettime(CLOCK_MONOTONIC, {1070, 802397785}) = 0
ioctl(8, USBDEVFS_SUBMITURB or USBDEVFS_SUBMITURB32, 0xd8cf8) = -1 ENODEV (No such device)
clock_gettime(CLOCK_MONOTONIC, {1070, 802702961}) = 0
ioctl(8, USBDEVFS_SUBMITURB or USBDEVFS_SUBMITURB32, 0xd8cf8) = -1 ENODEV (No such device)
clock_gettime(CLOCK_MONOTONIC, {1070, 802947101}) = 0
I'll try to understand something more, but I really don't have the time right now to reverse engineer the communication protocol. It would be very nice to have the source code at least of the communication part (setting parameters and getting pixels, there is not needed for debayering, gamma and such).
Another thing: the library doesn't work on armv5 because it uses hard FP. I guess it's needed just for image processing. Why don't you prepare a library that just sets parameters and gets the raw data? I think it would much more useful and generally applicable and, what's more important, without specific IP, so you can distribute it as source code.
I'm attaching compiled yaaca and the full strace traces (pippo.*) if it may help you.