diff --git a/DSView/pv/storesession.cpp b/DSView/pv/storesession.cpp index 8bc8b1e5..effdd01a 100755 --- a/DSView/pv/storesession.cpp +++ b/DSView/pv/storesession.cpp @@ -630,11 +630,6 @@ bool StoreSession::export_start() return false; } - //set export all data flag - AppConfig &app = AppConfig::Instance(); - int flag = app._appOptions.originalData ? 1 : 0; - sr_set_export_original_data(flag); - const struct sr_output_module **supportedModules = sr_output_list(); while (*supportedModules) { @@ -667,6 +662,10 @@ void StoreSession::export_proc(data::Snapshot *snapshot) { assert(snapshot); + //set export all data flag + AppConfig &app = AppConfig::Instance(); + int origin_flag = app._appOptions.originalData ? 1 : 0; + data::LogicSnapshot *logic_snapshot = NULL; data::AnalogSnapshot *analog_snapshot = NULL; data::DsoSnapshot *dso_snapshot = NULL; @@ -744,6 +743,7 @@ void StoreSession::export_proc(data::Snapshot *snapshot) p.type = SR_DF_META; p.status = SR_PKT_OK; p.payload = &meta; + p.bExportOriginalData = 0; _outModule->receive(&output, &p, &data_out); if(data_out){ out << QString::fromUtf8((char*) data_out->str); @@ -810,6 +810,7 @@ void StoreSession::export_proc(data::Snapshot *snapshot) p.type = SR_DF_LOGIC; p.status = SR_PKT_OK; p.payload = &lp; + p.bExportOriginalData = origin_flag; _outModule->receive(&output, &p, &data_out); if(data_out){ @@ -840,6 +841,7 @@ void StoreSession::export_proc(data::Snapshot *snapshot) p.type = SR_DF_DSO; p.status = SR_PKT_OK; p.payload = &dp; + p.bExportOriginalData = 0; _outModule->receive(&output, &p, &data_out); if(data_out){ @@ -866,6 +868,7 @@ void StoreSession::export_proc(data::Snapshot *snapshot) p.type = SR_DF_ANALOG; p.status = SR_PKT_OK; p.payload = ≈ + p.bExportOriginalData = 0; _outModule->receive(&output, &p, &data_out); if(data_out){ out << (char*) data_out->str; diff --git a/libsigrok4DSL/libsigrok.h b/libsigrok4DSL/libsigrok.h index f997aea1..47a3f97f 100755 --- a/libsigrok4DSL/libsigrok.h +++ b/libsigrok4DSL/libsigrok.h @@ -345,6 +345,7 @@ struct sr_datafeed_packet { uint16_t type; uint16_t status; const void *payload; + int bExportOriginalData; }; struct sr_datafeed_header { diff --git a/libsigrok4DSL/output/csv.c b/libsigrok4DSL/output/csv.c index 4aa398a5..e48cbbda 100755 --- a/libsigrok4DSL/output/csv.c +++ b/libsigrok4DSL/output/csv.c @@ -235,12 +235,10 @@ static int receive(const struct sr_output *o, const struct sr_datafeed_packet *p *out = g_string_sized_new(512); } - int bflag = sr_get_export_original_flag(); - for (i = 0; i <= logic->length - logic->unitsize; i += logic->unitsize) { ctx->index++; - if (bflag == 0){ + if (packet->bExportOriginalData == 0){ if (ctx->index > 1 && (*(uint64_t *)(logic->data + i) & ctx->mask) == ctx->pre_data) continue; } diff --git a/libsigrok4DSL/proto.h b/libsigrok4DSL/proto.h index 3d500a8f..b474e85b 100755 --- a/libsigrok4DSL/proto.h +++ b/libsigrok4DSL/proto.h @@ -94,8 +94,7 @@ SR_API void sr_config_free(struct sr_config *src); typedef void (*sr_datafeed_callback_t)(const struct sr_dev_inst *sdi, const struct sr_datafeed_packet *packet, void *cb_data); -SR_API void sr_set_export_original_data(int flag); -SR_API int sr_get_export_original_flag(); + SR_API void sr_set_firmware_resource_dir(const char *dir); diff --git a/libsigrok4DSL/session.c b/libsigrok4DSL/session.c index 24786c07..828afe60 100755 --- a/libsigrok4DSL/session.c +++ b/libsigrok4DSL/session.c @@ -34,9 +34,7 @@ #define sr_warn(s, args...) sr_warn(LOG_PREFIX s, ## args) #define sr_err(s, args...) sr_err(LOG_PREFIX s, ## args) -char DS_RES_PATH[500] = {0}; - -int bExportOriginalData = 0; //able export all data +char DS_RES_PATH[500] = {0}; /** * @file @@ -829,16 +827,6 @@ SR_API int sr_session_source_remove_channel(GIOChannel *channel) return _sr_session_source_remove((gintptr)channel); } -SR_API void sr_set_export_original_data(int flag) -{ - bExportOriginalData = flag; -} - -SR_API int sr_get_export_original_flag() -{ - return bExportOriginalData; -} - void sr_set_firmware_resource_dir(const char *dir) { if (dir){