*data = g_variant_new_uint64(devc->limit_samples);
break;
case SR_CONF_DATALOG:
- *data = g_variant_new_boolean(cem_dt_885x_recording_get(sdi));
+ if ((ret = cem_dt_885x_recording_get(sdi, &tmp)) == SR_OK)
+ *data = g_variant_new_boolean(tmp);
break;
case SR_CONF_SPL_WEIGHT_FREQ:
tmp = cem_dt_885x_weight_freq_get(sdi);
ret = SR_OK;
break;
case SR_CONF_DATALOG:
- if (g_variant_get_boolean(data)) {
- /* Start logging. */
- ret = cem_dt_885x_recording_set(sdi, TRUE);
- } else {
- /* Stop logging. */
- ret = cem_dt_885x_recording_set(sdi, FALSE);
- }
+ ret = cem_dt_885x_recording_set(sdi, g_variant_get_boolean(data));
break;
case SR_CONF_SPL_WEIGHT_FREQ:
tmp_str = g_variant_get_string(data, NULL);
return SR_OK;
}
-SR_PRIV gboolean cem_dt_885x_recording_get(const struct sr_dev_inst *sdi)
+SR_PRIV gboolean cem_dt_885x_recording_get(const struct sr_dev_inst *sdi,
+ int *state)
{
struct dev_context *devc;
char tokens[5];
devc = sdi->priv;
-
if (devc->recording == -1) {
/* Didn't pick up device state yet. */
tokens[0] = TOKEN_RECORDING_ON;
tokens[1] = TOKEN_RECORDING_OFF;
tokens[2] = -1;
- if (wait_for_token(sdi, tokens, 0) != SR_OK)
+ if (wait_for_token(sdi, tokens, 510) != SR_OK)
return SR_ERR;
}
+ *state = devc->token == TOKEN_RECORDING_ON;
- return devc->token == TOKEN_RECORDING_ON;
+ return SR_OK;
}
-SR_PRIV int cem_dt_885x_recording_set(const struct sr_dev_inst *sdi, gboolean start)
+SR_PRIV int cem_dt_885x_recording_set(const struct sr_dev_inst *sdi,
+ gboolean state)
{
struct dev_context *devc;
int ret;
devc = sdi->priv;
/* The toggle below needs the desired state in first position. */
- if (start) {
+ if (state) {
tokens[0] = TOKEN_RECORDING_ON;
tokens[1] = TOKEN_RECORDING_OFF;
} else {
if (devc->token == tokens[0])
/* Nothing to do. */
return SR_OK;
- } else if (devc->recording == start)
+ } else if (devc->recording == state)
/* Nothing to do. */
return SR_OK;
SR_PRIV int cem_dt_885x_receive_data(int fd, int revents, void *cb_data);
SR_PRIV int cem_dt_885x_recording_set(const struct sr_dev_inst *sdi, gboolean start);
-SR_PRIV gboolean cem_dt_885x_recording_get(const struct sr_dev_inst *sdi);
+SR_PRIV gboolean cem_dt_885x_recording_get(const struct sr_dev_inst *sdi,
+ int *state);
SR_PRIV int cem_dt_885x_weight_freq_get(const struct sr_dev_inst *sdi);
SR_PRIV int cem_dt_885x_weight_freq_set(const struct sr_dev_inst *sdi, int freqw);
SR_PRIV int cem_dt_885x_weight_time_get(const struct sr_dev_inst *sdi);