scpi/libgpib: Place device in local mode before closing handle

Devices connected on a real GPIB bus are placed in remote mode when
opening them. libgpib does not automatically place devices back in
local mode when closing the handle. It is thus possible to lock out a
GPIB device by probing it with libsigrok.

This happens on the HP 3457A meter, which does not have a "LOCAL"
command, and must be put back in local mode via GPIB handshake.
ibloc() takes care of this, and it does it on a per-device basis,
such that other devices on the GPIB bus are not affected.
This commit is contained in:
Alexandru Gagniuc 2016-02-28 10:32:19 -08:00 committed by Uwe Hermann
parent daf13c570f
commit 8b0ad3a559
1 changed files with 3 additions and 0 deletions

View File

@ -139,6 +139,9 @@ static int scpi_gpib_close(struct sr_scpi_dev_inst *scpi)
{
struct scpi_gpib *gscpi = scpi->priv;
/* Put device in back local mode to prevent lock-out of front panel. */
ibloc(gscpi->descriptor);
/* Now it's safe to close the handle. */
ibonl(gscpi->descriptor, 0);
return SR_OK;