lecroy-xstream: Implement config_channel_set API callback
This commit is contained in:
parent
5000c12f57
commit
79100d4e8b
|
@ -302,6 +302,16 @@ static int config_set(uint32_t key, GVariant *data,
|
|||
return ret;
|
||||
}
|
||||
|
||||
static int config_channel_set(const struct sr_dev_inst *sdi,
|
||||
struct sr_channel *ch, unsigned int changes)
|
||||
{
|
||||
/* Currently we only handle SR_CHANNEL_SET_ENABLED. */
|
||||
if (changes != SR_CHANNEL_SET_ENABLED)
|
||||
return SR_ERR_NA;
|
||||
|
||||
return lecroy_xstream_channel_state_set(sdi, ch->index, ch->enabled);
|
||||
}
|
||||
|
||||
static int config_list(uint32_t key, GVariant **data,
|
||||
const struct sr_dev_inst *sdi, const struct sr_channel_group *cg)
|
||||
{
|
||||
|
@ -497,6 +507,7 @@ static struct sr_dev_driver lecroy_xstream_driver_info = {
|
|||
.dev_clear = dev_clear,
|
||||
.config_get = config_get,
|
||||
.config_set = config_set,
|
||||
.config_channel_set = config_channel_set,
|
||||
.config_list = config_list,
|
||||
.dev_open = dev_open,
|
||||
.dev_close = dev_close,
|
||||
|
|
|
@ -318,6 +318,54 @@ static int analog_channel_state_get(struct sr_scpi_dev_inst *scpi,
|
|||
return SR_OK;
|
||||
}
|
||||
|
||||
SR_PRIV int lecroy_xstream_channel_state_set(const struct sr_dev_inst *sdi,
|
||||
const int ch_index, gboolean ch_state)
|
||||
{
|
||||
GSList *l;
|
||||
struct sr_channel *ch;
|
||||
struct dev_context *devc = NULL;
|
||||
struct scope_state *state;
|
||||
char command[MAX_COMMAND_SIZE];
|
||||
gboolean chan_found;
|
||||
int result;
|
||||
|
||||
result = SR_OK;
|
||||
|
||||
devc = sdi->priv;
|
||||
state = devc->model_state;
|
||||
chan_found = FALSE;
|
||||
|
||||
for (l = sdi->channels; l; l = l->next) {
|
||||
ch = l->data;
|
||||
|
||||
switch (ch->type) {
|
||||
case SR_CHANNEL_ANALOG:
|
||||
if (ch->index == ch_index) {
|
||||
g_snprintf(command, sizeof(command), "C%d:TRACE %s", ch_index + 1,
|
||||
(ch_state ? "ON" : "OFF"));
|
||||
if ((sr_scpi_send(sdi->conn, command) != SR_OK ||
|
||||
sr_scpi_get_opc(sdi->conn) != SR_OK)) {
|
||||
result = SR_ERR;
|
||||
break;
|
||||
}
|
||||
|
||||
ch->enabled = ch_state;
|
||||
state->analog_channels[ch->index].state = ch_state;
|
||||
chan_found = TRUE;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
result = SR_ERR_NA;
|
||||
}
|
||||
}
|
||||
|
||||
if ((result == SR_OK) && !chan_found)
|
||||
result = SR_ERR_BUG;
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
SR_PRIV int lecroy_xstream_update_sample_rate(const struct sr_dev_inst *sdi)
|
||||
{
|
||||
struct dev_context *devc;
|
||||
|
|
|
@ -96,6 +96,8 @@ SR_PRIV int lecroy_xstream_receive_data(int fd, int revents, void *cb_data);
|
|||
|
||||
SR_PRIV void lecroy_xstream_state_free(struct scope_state *state);
|
||||
SR_PRIV int lecroy_xstream_state_get(struct sr_dev_inst *sdi);
|
||||
SR_PRIV int lecroy_xstream_channel_state_set(const struct sr_dev_inst *sdi,
|
||||
const int ch_index, gboolean ch_state);
|
||||
SR_PRIV int lecroy_xstream_update_sample_rate(const struct sr_dev_inst *sdi);
|
||||
|
||||
#endif
|
||||
|
|
Loading…
Reference in New Issue