X-Git-Url: http://sigrok.org/gitweb/?a=blobdiff_plain;f=src%2Fhardware%2Fmaynuo-m97%2Fapi.c;h=876150a28609ea78ced4be63fc7066fcc5d9ffba;hb=53279f13e4694fcf2aba314baade418941b0bc3e;hp=970bfe95615c3fb069067fc04d6c332c12d57d0c;hpb=093e1cba6b7bf14cfb77fa36f59b0c16e6fca7cc;p=libsigrok.git diff --git a/src/hardware/maynuo-m97/api.c b/src/hardware/maynuo-m97/api.c index 970bfe95..876150a2 100644 --- a/src/hardware/maynuo-m97/api.c +++ b/src/hardware/maynuo-m97/api.c @@ -203,8 +203,6 @@ static int dev_open(struct sr_dev_inst *sdi) if (sr_modbus_open(modbus) < 0) return SR_ERR; - sdi->status = SR_ST_ACTIVE; - maynuo_m97_set_bit(modbus, PC1, 1); return SR_OK; @@ -217,23 +215,21 @@ static int dev_close(struct sr_dev_inst *sdi) modbus = sdi->conn; - if (modbus) { - devc = sdi->priv; - if (devc->expecting_registers) { - /* Wait for the last data that was requested from the device. */ - uint16_t registers[devc->expecting_registers]; - sr_modbus_read_holding_registers(modbus, -1, - devc->expecting_registers, registers); - } + if (!modbus) + return SR_ERR_BUG; - maynuo_m97_set_bit(modbus, PC1, 0); + devc = sdi->priv; - if (sr_modbus_close(modbus) < 0) - return SR_ERR; - sdi->status = SR_ST_INACTIVE; + if (devc->expecting_registers) { + /* Wait for the last data that was requested from the device. */ + uint16_t registers[devc->expecting_registers]; + sr_modbus_read_holding_registers(modbus, -1, + devc->expecting_registers, registers); } - return SR_OK; + maynuo_m97_set_bit(modbus, PC1, 0); + + return sr_modbus_close(modbus); } static int config_get(uint32_t key, GVariant **data, const struct sr_dev_inst *sdi, @@ -462,6 +458,7 @@ static struct sr_dev_driver maynuo_m97_driver_info = { .cleanup = std_cleanup, .scan = scan, .dev_list = std_dev_list, + .dev_clear = std_dev_clear, .config_get = config_get, .config_set = config_set, .config_list = config_list,