All of the 'A' series cameras that suport USB-remote, read hardware-registers mmio0 or mmio1 ... apart from the A570 that reads mmio2.
kbd_fetch_data(kbd_new_state) reads the full value of mmio0 and mmio1 but masks mmio2 with 0x0000FFFF.
That means physw_status is similarly masked.
Why is that ?
The USB_MASK for the A570 is claimed to be 0x40000.
The script detects the remote key by checking the status of the following :-
usb_power = (physw_status & USB_MASK)==USB_MASK;
That should fail but the script detects it and continues with the shoot command.
The shoot command is intercepted and the following check made :-
x = (long)*mmio2;
while(((x&USB_MASK)==USB_MASK)&& ((int)get_tick_count()-tick < DELAY_TIMEOUT));
i.e. detect button release or timeout.
Unlike with the other cameras, this does not work and the above 'while' fails and the photo is taken immediately (without releasing the button).
It is difficult to see how directly monitoring the hardware register could possibly fail.
Any ideas about both the above problems ?