Trying to stop procrastinating and finish this
Essentially all cameras with an ND have been tested. The remaining things I wanted to address are below. Any feedback is welcome.
Should ND-only cameras have CAM_ND_SET_AV_VALUE by default:This define sets the AV propcases when ND overrides are used, to match the values the Canon firmware would use for the ND state.
It's required on some newer cameras (like elph180, elph185, sx620) for ND overrides to work at all. On older cameras, it's usually required when shooting using the "quick" (hold half shoot, click full) method. Some also require it in cont mode.
I'm inclined to set it by default, because it generally makes the override more predictable quick and cont, and makes the exif more consistent with the Canon firmware.
However, it has only been tested in the cases that appear to need it: That is, if ND override failed in quick, the script re-does the quick test with the equivalent of CAM_ND_SET_AV_VALUE, but not the single and cont tests.
Cameras that need ND state set in the remote hook:Most iris + ND cameras need the ND state set in the remote hook in quick mode. This is also true on a few ND only cams. Some of both types also need it in cont.
Since we can now get the current actual ND state, we could have logic like
if nd_state != requested_nd_state
set_nd_filter(nd_state)
This could either be done with defines on the cameras identified in testing, or just done all the time since it shouldn't affect cameras that don't need it.
One complication with this is that the "put_off" values are cleared when an override is applied, so we don't currently know the requested state by the time it gets to the remote hook.
I'm a bit more hesitant to add this. In all the the cameras tested, setting the ND from the remote hook seems to work fine, but it's a low level thing that varies between ports. Additionally, the remote hook is not hit in some cases: Some ports don't have it, others probably miss it in some shooting modes.
Restoring ND prop on ND+iris cameras:In the existing code, ND + iris cams mostly set the ND propcase to match the override. However, they don't restore it after the shot completes or if set_nd_filter(0) is used. As far as I can tell, this only exif makernote for ND, so it's probably not a big deal.
I worried that CAM_ND_SET_AV_VALUE might have a similar issue, but the camera updates the AV props on the next halfpress so it generally shouldn't. There might be exceptions on the few cameras that are ND-only but allow it to be set manually.