end_time = g_get_monotonic_time () + 5 * G_TIME_SPAN_SECOND;
if (!g_cond_wait_until(&devc->current_limit_cond,
&devc->acquisition_mutex, end_time)) {
- // timeout has passed.
+ /* Timeout has passed. */
g_mutex_unlock(&devc->acquisition_mutex);
return SR_ERR;
}
end_time = g_get_monotonic_time () + 5 * G_TIME_SPAN_SECOND;
if (!g_cond_wait_until(&devc->uvc_threshold_cond,
&devc->acquisition_mutex, end_time)) {
- // timeout has passed.
+ /* Timeout has passed. */
g_mutex_unlock(&devc->acquisition_mutex);
return SR_ERR;
}
end_time = g_get_monotonic_time () + 5 * G_TIME_SPAN_SECOND;
if (!g_cond_wait_until(&devc->voltage_cond,
&devc->acquisition_mutex, end_time)) {
- // timeout has passed.
+ /* Timeout has passed. */
g_mutex_unlock(&devc->acquisition_mutex);
return SR_ERR;
}
return SR_OK;
}
-static int send_config_update_key(const struct sr_dev_inst *sdi,
- uint32_t key, GVariant *var)
-{
- struct sr_config *cfg;
- struct sr_datafeed_packet packet;
- struct sr_datafeed_meta meta;
- int ret;
-
- cfg = sr_config_new(key, var);
- if (!cfg)
- return SR_ERR;
-
- memset(&meta, 0, sizeof(meta));
-
- packet.type = SR_DF_META;
- packet.payload = &meta;
-
- meta.config = g_slist_append(meta.config, cfg);
-
- ret = sr_session_send(sdi, &packet);
- sr_config_free(cfg);
-
- return ret;
-}
-
static void handle_packet(const struct sr_dev_inst *sdi)
{
struct sr_datafeed_packet packet;
if (g_str_has_prefix((const char *)devc->buf, "overtemp")) {
sr_warn("Overtemperature condition!");
devc->otp_active = TRUE;
- send_config_update_key(sdi, SR_CONF_OVER_TEMPERATURE_PROTECTION_ACTIVE,
+ sr_session_send_meta(sdi, SR_CONF_OVER_TEMPERATURE_PROTECTION_ACTIVE,
g_variant_new_boolean(TRUE));
return;
}
if (g_str_has_prefix((const char *)devc->buf, "undervolt")) {
sr_warn("Undervoltage condition!");
devc->uvc_active = TRUE;
- send_config_update_key(sdi, SR_CONF_UNDER_VOLTAGE_CONDITION_ACTIVE,
+ sr_session_send_meta(sdi, SR_CONF_UNDER_VOLTAGE_CONDITION_ACTIVE,
g_variant_new_boolean(TRUE));
return;
}
devc->current_limit = g_ascii_strtod(tokens[1], NULL) / 1000;
g_strfreev(tokens);
g_cond_signal(&devc->current_limit_cond);
- send_config_update_key(sdi, SR_CONF_CURRENT_LIMIT,
+ sr_session_send_meta(sdi, SR_CONF_CURRENT_LIMIT,
g_variant_new_double(devc->current_limit));
return;
}
g_strfreev(tokens);
g_cond_signal(&devc->uvc_threshold_cond);
if (devc->uvc_threshold == .0) {
- send_config_update_key(sdi, SR_CONF_UNDER_VOLTAGE_CONDITION,
+ sr_session_send_meta(sdi, SR_CONF_UNDER_VOLTAGE_CONDITION,
g_variant_new_boolean(FALSE));
} else {
- send_config_update_key(sdi, SR_CONF_UNDER_VOLTAGE_CONDITION,
+ sr_session_send_meta(sdi, SR_CONF_UNDER_VOLTAGE_CONDITION,
g_variant_new_boolean(TRUE));
- send_config_update_key(sdi,
+ sr_session_send_meta(sdi,
SR_CONF_UNDER_VOLTAGE_CONDITION_THRESHOLD,
g_variant_new_double(devc->uvc_threshold));
}
devc->voltage = g_ascii_strtod(tokens[2], NULL) / 1000;
devc->current = g_ascii_strtod(tokens[1], NULL) / 1000;
g_strfreev(tokens);
+ g_cond_signal(&devc->voltage_cond);
/* Begin frame. */
- packet.type = SR_DF_FRAME_BEGIN;
- packet.payload = NULL;
- sr_session_send(sdi, &packet);
+ std_session_send_df_frame_begin(sdi);
sr_analog_init(&analog, &encoding, &meaning, &spec, 4);
meaning.mq = SR_MQ_VOLTAGE;
meaning.mqflags = SR_MQFLAG_DC;
meaning.unit = SR_UNIT_VOLT;
+ encoding.digits = 3;
analog.data = &devc->voltage;
sr_session_send(sdi, &packet);
g_slist_free(l);
meaning.mq = SR_MQ_CURRENT;
meaning.mqflags = SR_MQFLAG_DC;
meaning.unit = SR_UNIT_AMPERE;
+ encoding.digits = 3;
analog.data = &devc->current;
sr_session_send(sdi, &packet);
g_slist_free(l);
/* End frame. */
- packet.type = SR_DF_FRAME_END;
- packet.payload = NULL;
- sr_session_send(sdi, &packet);
+ std_session_send_df_frame_end(sdi);
sr_sw_limits_update_samples_read(&devc->limits, 1);
}