function err=DaqSetCal(daq,on)
% err=DaqSetCal(DeviceIndex,on)
% USB-1208FS set CAL output.
% "DeviceIndex" is a small integer, the array index specifying which HID
%       device in the array returned by PsychHID('Devices') is interface 0
%       of the desired USB-1208FS box.
% "on" is 1 for on (+2.5 V), and 0 for off (0 V).
% USB-1608FS:
% arguments and logic are the same except that "on" can take more values to
% produce a wider variety of results:
%
% on                    output (Volts)
% ---                   ------
%  0                       0 
%  1                     0.625
%  2                      1.25
%  3                      2.5
%  4                        5
%
% The calibration terminal is pin 17 on the USB-1608FS.
%
% See also Daq, DaqFunctions, DaqPins, ,DaqCalibrateAIn, DaqTest, PsychHIDTest.

% 4/15/05 dgp Wrote it.
% 1/10/08 mpr updated it for USB-1608FS

AllHIDDevices = PsychHID('Devices');
if ~isempty(strfind(AllHIDDevices(daq).product,'1608'))
	AcceptableStates = 0:4;
else
	AcceptableStates = 0:1;
end
  
if ~ismember(on,AcceptableStates)
	error(sprintf('"on" must be in the range of 0 to %d.',max(AcceptableStates)));
end
err=PsychHID('SetReport',daq,2,69,uint8([69 on])); % SetCal
if err.n
    fprintf('DaqSetCal SetReport error 0x%s. %s: %s\n',hexstr(err.n),err.name,err.description);
end

return;
