arachnid-labs-re-load-pro: Stop monitoring when open/close device

This commit is contained in:
Frank Stettner 2017-10-26 12:32:21 +02:00 committed by Uwe Hermann
parent 0b7c07850c
commit b76a414d51
1 changed files with 26 additions and 1 deletions

View File

@ -25,6 +25,7 @@
#define CMD_VERSION "version\r\n" #define CMD_VERSION "version\r\n"
#define CMD_MONITOR "monitor 200\r\n" #define CMD_MONITOR "monitor 200\r\n"
#define CMD_MONITOR_STOP "monitor 0\r\n"
static const uint32_t scanopts[] = { static const uint32_t scanopts[] = {
SR_CONF_CONN, SR_CONF_CONN,
@ -94,6 +95,19 @@ static GSList *scan(struct sr_dev_driver *di, GSList *options)
serial_flush(serial); serial_flush(serial);
/*
* First stop potentially running monitoring and wait for 50ms before
* next command can be sent.
*/
if (serial_write_blocking(serial, CMD_MONITOR_STOP,
strlen(CMD_MONITOR_STOP), serial_timeout(serial,
strlen(CMD_MONITOR_STOP))) < (int)strlen(CMD_MONITOR_STOP)) {
sr_dbg("Unable to write while probing for hardware.");
serial_close(serial);
return NULL;
}
g_usleep(50 * 1000);
if (serial_write_blocking(serial, CMD_VERSION, if (serial_write_blocking(serial, CMD_VERSION,
strlen(CMD_VERSION), serial_timeout(serial, strlen(CMD_VERSION), serial_timeout(serial,
strlen(CMD_VERSION))) < (int)strlen(CMD_VERSION)) { strlen(CMD_VERSION))) < (int)strlen(CMD_VERSION)) {
@ -257,6 +271,17 @@ static int config_set(uint32_t key, GVariant *data,
return SR_OK; return SR_OK;
} }
static int dev_close(struct sr_dev_inst *sdi)
{
if (serial_write_blocking(sdi->conn, CMD_MONITOR_STOP,
strlen(CMD_MONITOR_STOP), serial_timeout(sdi->conn,
strlen(CMD_MONITOR_STOP))) < (int)strlen(CMD_MONITOR_STOP)) {
sr_dbg("Unable to stop monitoring.");
}
return std_serial_dev_close(sdi);
}
static int dev_acquisition_start(const struct sr_dev_inst *sdi) static int dev_acquisition_start(const struct sr_dev_inst *sdi)
{ {
int ret; int ret;
@ -299,7 +324,7 @@ static struct sr_dev_driver arachnid_labs_re_load_pro_driver_info = {
.config_set = config_set, .config_set = config_set,
.config_list = config_list, .config_list = config_list,
.dev_open = std_serial_dev_open, .dev_open = std_serial_dev_open,
.dev_close = std_serial_dev_close, .dev_close = dev_close,
.dev_acquisition_start = dev_acquisition_start, .dev_acquisition_start = dev_acquisition_start,
.dev_acquisition_stop = std_serial_dev_acquisition_stop, .dev_acquisition_stop = std_serial_dev_acquisition_stop,
.context = NULL, .context = NULL,