SR_PRIV int rigol_ds1xx2_get_dev_cfg(const struct sr_dev_inst *sdi) { struct dev_context *devc; char *t_s, *cmd; int i, res; devc = sdi->priv; /* Analog channel state. */ if (get_cfg_string(sdi, ":CHAN1:DISP?", &t_s) != SR_OK) return SR_ERR; devc->analog_channels[0] = !strcmp(t_s, "ON") ? TRUE : FALSE; g_free(t_s); if (get_cfg_string(sdi, ":CHAN2:DISP?", &t_s) != SR_OK) return SR_ERR; devc->analog_channels[1] = !strcmp(t_s, "ON") ? TRUE : FALSE; g_free(t_s); sr_dbg("Current analog channel state CH1 %s CH2 %s", devc->analog_channels[0] ? "on" : "off", devc->analog_channels[1] ? "on" : "off"); /* Digital channel state. */ if (devc->has_digital) { sr_dbg("Current digital channel state:"); for (i = 0; i < 16; i++) { cmd = g_strdup_printf(":DIG%d:TURN?", i); res = get_cfg_string(sdi, cmd, &t_s); g_free(cmd); if (res != SR_OK) return SR_ERR; devc->digital_channels[i] = !strcmp(t_s, "ON") ? TRUE : FALSE; g_free(t_s); sr_dbg("D%d: %s", i, devc->digital_channels[i] ? "on" : "off"); } } /* Timebase. */ if (get_cfg_float(sdi, ":TIM:SCAL?", &devc->timebase) != SR_OK) return SR_ERR; sr_dbg("Current timebase %f", devc->timebase); /* Vertical gain. */ if (get_cfg_float(sdi, ":CHAN1:SCAL?", &devc->vdiv[0]) != SR_OK) return SR_ERR; if (get_cfg_float(sdi, ":CHAN2:SCAL?", &devc->vdiv[1]) != SR_OK) return SR_ERR; sr_dbg("Current vertical gain CH1 %f CH2 %f", devc->vdiv[0], devc->vdiv[1]); /* Vertical offset. */ if (get_cfg_float(sdi, ":CHAN1:OFFS?", &devc->vert_offset[0]) != SR_OK) return SR_ERR; if (get_cfg_float(sdi, ":CHAN2:OFFS?", &devc->vert_offset[1]) != SR_OK) return SR_ERR; sr_dbg("Current vertical offset CH1 %f CH2 %f", devc->vert_offset[0], devc->vert_offset[1]); /* Coupling. */ if (get_cfg_string(sdi, ":CHAN1:COUP?", &devc->coupling[0]) != SR_OK) return SR_ERR; if (get_cfg_string(sdi, ":CHAN2:COUP?", &devc->coupling[1]) != SR_OK) return SR_ERR; sr_dbg("Current coupling CH1 %s CH2 %s", devc->coupling[0], devc->coupling[1]); /* Trigger source. */ if (get_cfg_string(sdi, ":TRIG:EDGE:SOUR?", &devc->trigger_source) != SR_OK) return SR_ERR; sr_dbg("Current trigger source %s", devc->trigger_source); /* Horizontal trigger position. */ if (get_cfg_float(sdi, ":TIM:OFFS?", &devc->horiz_triggerpos) != SR_OK) return SR_ERR; sr_dbg("Current horizontal trigger position %f", devc->horiz_triggerpos); /* Trigger slope. */ if (get_cfg_string(sdi, ":TRIG:EDGE:SLOP?", &devc->trigger_slope) != SR_OK) return SR_ERR; sr_dbg("Current trigger slope %s", devc->trigger_slope); return SR_OK; }
static apr_status_t init_filter_instance(ap_filter_t *f) { ef_ctx_t *ctx; ef_dir_t *dc; apr_status_t rv; f->ctx = ctx = apr_pcalloc(f->r->pool, sizeof(ef_ctx_t)); dc = ap_get_module_config(f->r->per_dir_config, &ext_filter_module); ctx->dc = dc; /* look for the user-defined filter */ ctx->filter = find_filter_def(f->r->server, f->frec->name); if (!ctx->filter) { ap_log_rerror(APLOG_MARK, APLOG_ERR, 0, f->r, "couldn't find definition of filter '%s'", f->frec->name); return APR_EINVAL; } ctx->p = f->r->pool; if (ctx->filter->intype && ctx->filter->intype != INTYPE_ALL) { const char *ctypes; if (ctx->filter->mode == INPUT_FILTER) { ctypes = apr_table_get(f->r->headers_in, "Content-Type"); } else { ctypes = f->r->content_type; } if (ctypes) { const char *ctype = ap_getword(f->r->pool, &ctypes, ';'); if (strcasecmp(ctx->filter->intype, ctype)) { /* wrong IMT for us; don't mess with the output */ ctx->noop = 1; } } else { ctx->noop = 1; } } if (ctx->filter->enable_env && !apr_table_get(f->r->subprocess_env, ctx->filter->enable_env)) { /* an environment variable that enables the filter isn't set; bail */ ctx->noop = 1; } if (ctx->filter->disable_env && apr_table_get(f->r->subprocess_env, ctx->filter->disable_env)) { /* an environment variable that disables the filter is set; bail */ ctx->noop = 1; } if (!ctx->noop) { rv = init_ext_filter_process(f); if (rv != APR_SUCCESS) { return rv; } if (ctx->filter->outtype && ctx->filter->outtype != OUTTYPE_UNCHANGED) { ap_set_content_type(f->r, ctx->filter->outtype); } if (ctx->filter->preserves_content_length != 1) { /* nasty, but needed to avoid confusing the browser */ apr_table_unset(f->r->headers_out, "Content-Length"); } } if (dc->debug >= DBGLVL_SHOWOPTIONS) { ap_log_rerror(APLOG_MARK, APLOG_DEBUG, 0, f->r, "%sfiltering `%s' of type `%s' through `%s', cfg %s", ctx->noop ? "NOT " : "", f->r->uri ? f->r->uri : f->r->filename, f->r->content_type ? f->r->content_type : "(unspecified)", ctx->filter->command, get_cfg_string(dc, ctx->filter, f->r->pool)); } return APR_SUCCESS; }