mirror of
https://github.com/DreamSourceLab/DSView.git
synced 2025-02-02 13:52:55 +08:00
fix csv output issue
This commit is contained in:
parent
1070d315cd
commit
26db5b2cb2
@ -641,6 +641,31 @@ void StoreSession::export_proc(shared_ptr<data::Snapshot> snapshot)
|
|||||||
src = sr_config_new(SR_CONF_LIMIT_SAMPLES,
|
src = sr_config_new(SR_CONF_LIMIT_SAMPLES,
|
||||||
g_variant_new_uint64(snapshot->get_sample_count()));
|
g_variant_new_uint64(snapshot->get_sample_count()));
|
||||||
meta.config = g_slist_append(meta.config, src);
|
meta.config = g_slist_append(meta.config, src);
|
||||||
|
|
||||||
|
GVariant *gvar;
|
||||||
|
uint8_t bits;
|
||||||
|
gvar = _session.get_device()->get_config(NULL, NULL, SR_CONF_UNIT_BITS);
|
||||||
|
if (gvar != NULL) {
|
||||||
|
bits = g_variant_get_byte(gvar);
|
||||||
|
g_variant_unref(gvar);
|
||||||
|
}
|
||||||
|
gvar = _session.get_device()->get_config(NULL, NULL, SR_CONF_REF_MIN);
|
||||||
|
if (gvar != NULL) {
|
||||||
|
src = sr_config_new(SR_CONF_REF_MIN, gvar);
|
||||||
|
g_variant_unref(gvar);
|
||||||
|
} else {
|
||||||
|
src = sr_config_new(SR_CONF_REF_MIN, g_variant_new_uint32(1));
|
||||||
|
}
|
||||||
|
meta.config = g_slist_append(meta.config, src);
|
||||||
|
gvar = _session.get_device()->get_config(NULL, NULL, SR_CONF_REF_MAX);
|
||||||
|
if (gvar != NULL) {
|
||||||
|
src = sr_config_new(SR_CONF_REF_MAX, gvar);
|
||||||
|
g_variant_unref(gvar);
|
||||||
|
} else {
|
||||||
|
src = sr_config_new(SR_CONF_REF_MAX, g_variant_new_uint32((1 << bits) - 1));
|
||||||
|
}
|
||||||
|
meta.config = g_slist_append(meta.config, src);
|
||||||
|
|
||||||
p.type = SR_DF_META;
|
p.type = SR_DF_META;
|
||||||
p.status = SR_PKT_OK;
|
p.status = SR_PKT_OK;
|
||||||
p.payload = &meta;
|
p.payload = &meta;
|
||||||
|
@ -37,9 +37,10 @@ struct context {
|
|||||||
int *channel_unit;
|
int *channel_unit;
|
||||||
float *channel_scale;
|
float *channel_scale;
|
||||||
uint16_t *channel_offset;
|
uint16_t *channel_offset;
|
||||||
uint8_t *channel_bits;
|
|
||||||
double *channel_mmin;
|
double *channel_mmin;
|
||||||
double *channel_mmax;
|
double *channel_mmax;
|
||||||
|
uint32_t ref_min;
|
||||||
|
uint32_t ref_max;
|
||||||
uint64_t mask;
|
uint64_t mask;
|
||||||
uint64_t pre_data;
|
uint64_t pre_data;
|
||||||
uint64_t index;
|
uint64_t index;
|
||||||
@ -89,7 +90,6 @@ static int init(struct sr_output *o, GHashTable *options)
|
|||||||
ctx->channel_unit = g_malloc(sizeof(int) * ctx->num_enabled_channels);
|
ctx->channel_unit = g_malloc(sizeof(int) * ctx->num_enabled_channels);
|
||||||
ctx->channel_scale = g_malloc(sizeof(float) * ctx->num_enabled_channels);
|
ctx->channel_scale = g_malloc(sizeof(float) * ctx->num_enabled_channels);
|
||||||
ctx->channel_offset = g_malloc(sizeof(uint16_t) * ctx->num_enabled_channels);
|
ctx->channel_offset = g_malloc(sizeof(uint16_t) * ctx->num_enabled_channels);
|
||||||
ctx->channel_bits = g_malloc(sizeof(uint8_t) * ctx->num_enabled_channels);
|
|
||||||
ctx->channel_mmax = g_malloc(sizeof(double) * ctx->num_enabled_channels);
|
ctx->channel_mmax = g_malloc(sizeof(double) * ctx->num_enabled_channels);
|
||||||
ctx->channel_mmin = g_malloc(sizeof(double) * ctx->num_enabled_channels);
|
ctx->channel_mmin = g_malloc(sizeof(double) * ctx->num_enabled_channels);
|
||||||
|
|
||||||
@ -108,7 +108,6 @@ static int init(struct sr_output *o, GHashTable *options)
|
|||||||
(range >= 5000) ? 1000 : 1;
|
(range >= 5000) ? 1000 : 1;
|
||||||
ctx->channel_scale[i] = range / ctx->channel_unit[i];
|
ctx->channel_scale[i] = range / ctx->channel_unit[i];
|
||||||
ctx->channel_offset[i] = ch->hw_offset;
|
ctx->channel_offset[i] = ch->hw_offset;
|
||||||
ctx->channel_bits[i] = ch->bits;
|
|
||||||
ctx->channel_mmax[i] = ch->map_max;
|
ctx->channel_mmax[i] = ch->map_max;
|
||||||
ctx->channel_mmin[i] = ch->map_min;
|
ctx->channel_mmin[i] = ch->map_min;
|
||||||
i++;
|
i++;
|
||||||
@ -199,7 +198,7 @@ static int receive(const struct sr_output *o, const struct sr_datafeed_packet *p
|
|||||||
const struct sr_datafeed_dso *dso;
|
const struct sr_datafeed_dso *dso;
|
||||||
const struct sr_datafeed_analog *analog;
|
const struct sr_datafeed_analog *analog;
|
||||||
const struct sr_config *src;
|
const struct sr_config *src;
|
||||||
GSList *l;
|
GSList *l;
|
||||||
struct context *ctx;
|
struct context *ctx;
|
||||||
int idx;
|
int idx;
|
||||||
uint64_t i, j;
|
uint64_t i, j;
|
||||||
@ -220,7 +219,11 @@ static int receive(const struct sr_output *o, const struct sr_datafeed_packet *p
|
|||||||
ctx->samplerate = g_variant_get_uint64(src->data);
|
ctx->samplerate = g_variant_get_uint64(src->data);
|
||||||
else if (src->key == SR_CONF_LIMIT_SAMPLES)
|
else if (src->key == SR_CONF_LIMIT_SAMPLES)
|
||||||
ctx->limit_samples = g_variant_get_uint64(src->data);
|
ctx->limit_samples = g_variant_get_uint64(src->data);
|
||||||
}
|
else if (src->key == SR_CONF_REF_MIN)
|
||||||
|
ctx->ref_min = g_variant_get_uint32(src->data);
|
||||||
|
else if (src->key == SR_CONF_REF_MAX)
|
||||||
|
ctx->ref_max = g_variant_get_uint32(src->data);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case SR_DF_LOGIC:
|
case SR_DF_LOGIC:
|
||||||
logic = packet->payload;
|
logic = packet->payload;
|
||||||
@ -261,9 +264,9 @@ static int receive(const struct sr_output *o, const struct sr_datafeed_packet *p
|
|||||||
for (j = 0; j < ctx->num_enabled_channels; j++) {
|
for (j = 0; j < ctx->num_enabled_channels; j++) {
|
||||||
idx = ctx->channel_index[j];
|
idx = ctx->channel_index[j];
|
||||||
p = dso->data + i * ctx->num_enabled_channels + idx * ((ctx->num_enabled_channels > 1) ? 1 : 0);
|
p = dso->data + i * ctx->num_enabled_channels + idx * ((ctx->num_enabled_channels > 1) ? 1 : 0);
|
||||||
g_string_append_printf(*out, "%0.3f", (ctx->channel_offset[j] - *p) *
|
g_string_append_printf(*out, "%0.5f", (ctx->channel_offset[j] - *p) *
|
||||||
ctx->channel_scale[j] /
|
ctx->channel_scale[j] /
|
||||||
((1 << ctx->channel_bits[j]) - 2.0));
|
(ctx->ref_max - ctx->ref_min));
|
||||||
g_string_append_c(*out, ctx->separator);
|
g_string_append_c(*out, ctx->separator);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -285,8 +288,9 @@ static int receive(const struct sr_output *o, const struct sr_datafeed_packet *p
|
|||||||
for (j = 0; j < ctx->num_enabled_channels; j++) {
|
for (j = 0; j < ctx->num_enabled_channels; j++) {
|
||||||
idx = ctx->channel_index[j];
|
idx = ctx->channel_index[j];
|
||||||
p = analog->data + i * ctx->num_enabled_channels + idx * ((ctx->num_enabled_channels > 1) ? 1 : 0);
|
p = analog->data + i * ctx->num_enabled_channels + idx * ((ctx->num_enabled_channels > 1) ? 1 : 0);
|
||||||
g_string_append_printf(*out, "%0.2f",
|
g_string_append_printf(*out, "%0.5f", (ctx->channel_offset[j] - *p) *
|
||||||
ctx->channel_mmin[j] + (255.0 - *p) / 255.0 * (ctx->channel_mmax[j] - ctx->channel_mmin[j]));
|
(ctx->channel_mmax[j] - ctx->channel_mmin[j]) /
|
||||||
|
(ctx->ref_max - ctx->ref_min));
|
||||||
g_string_append_c(*out, ctx->separator);
|
g_string_append_c(*out, ctx->separator);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user