projects
/
pulseview.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
7f4038d
)
SignalData: Moved samplerate into Snapshot
author
Joel Holdsworth
<joel@airwebreathe.org.uk>
Sun, 30 Nov 2014 10:29:54 +0000
(10:29 +0000)
committer
Joel Holdsworth
<joel@airwebreathe.org.uk>
Tue, 9 Dec 2014 18:24:59 +0000
(18:24 +0000)
15 files changed:
pv/data/analogsnapshot.cpp
patch
|
blob
|
history
pv/data/analogsnapshot.hpp
patch
|
blob
|
history
pv/data/decoderstack.cpp
patch
|
blob
|
history
pv/data/logicsnapshot.cpp
patch
|
blob
|
history
pv/data/logicsnapshot.hpp
patch
|
blob
|
history
pv/data/signaldata.cpp
patch
|
blob
|
history
pv/data/signaldata.hpp
patch
|
blob
|
history
pv/data/snapshot.cpp
patch
|
blob
|
history
pv/data/snapshot.hpp
patch
|
blob
|
history
pv/session.cpp
patch
|
blob
|
history
pv/session.hpp
patch
|
blob
|
history
pv/storesession.cpp
patch
|
blob
|
history
pv/view/analogsignal.cpp
patch
|
blob
|
history
pv/view/logicsignal.cpp
patch
|
blob
|
history
pv/view/view.cpp
patch
|
blob
|
history
diff --git
a/pv/data/analogsnapshot.cpp
b/pv/data/analogsnapshot.cpp
index 589b1aa4b628e5f0e3ae8a7376651e09bbdec45d..5e995158ee1dd672163c741538768d767599749a 100644
(file)
--- a/
pv/data/analogsnapshot.cpp
+++ b/
pv/data/analogsnapshot.cpp
@@
-45,8
+45,9
@@
const float AnalogSnapshot::LogEnvelopeScaleFactor =
logf(EnvelopeScaleFactor);
const uint64_t AnalogSnapshot::EnvelopeDataUnit = 64*1024; // bytes
logf(EnvelopeScaleFactor);
const uint64_t AnalogSnapshot::EnvelopeDataUnit = 64*1024; // bytes
-AnalogSnapshot::AnalogSnapshot(const uint64_t expected_num_samples) :
- Snapshot(sizeof(float))
+AnalogSnapshot::AnalogSnapshot(
+ uint64_t samplerate, const uint64_t expected_num_samples) :
+ Snapshot(samplerate, sizeof(float))
{
set_capacity(expected_num_samples);
{
set_capacity(expected_num_samples);
diff --git
a/pv/data/analogsnapshot.hpp
b/pv/data/analogsnapshot.hpp
index 3c6f99c2c873dad8bb2956eb43672968aef2771c..69c28a2a60b793e13a790cb360172aae61236eac 100644
(file)
--- a/
pv/data/analogsnapshot.hpp
+++ b/
pv/data/analogsnapshot.hpp
@@
-66,7
+66,7
@@
private:
static const uint64_t EnvelopeDataUnit;
public:
static const uint64_t EnvelopeDataUnit;
public:
- AnalogSnapshot(uint64_t expected_num_samples = 0);
+ AnalogSnapshot(uint64_t
samplerate, uint64_t
expected_num_samples = 0);
virtual ~AnalogSnapshot();
virtual ~AnalogSnapshot();
diff --git
a/pv/data/decoderstack.cpp
b/pv/data/decoderstack.cpp
index e5a758773b17d0a886b424492fbd50dad59fb6e7..a764e452d3d82bc203f88e83cac34bf231fbb699 100644
(file)
--- a/
pv/data/decoderstack.cpp
+++ b/
pv/data/decoderstack.cpp
@@
-264,7
+264,7
@@
void DecoderStack::begin_decode()
// Get the samplerate and start time
start_time_ = snapshot_->start_time();
// Get the samplerate and start time
start_time_ = snapshot_->start_time();
- samplerate_ =
data
->samplerate();
+ samplerate_ =
snapshot_
->samplerate();
if (samplerate_ == 0.0)
samplerate_ = 1.0;
if (samplerate_ == 0.0)
samplerate_ = 1.0;
diff --git
a/pv/data/logicsnapshot.cpp
b/pv/data/logicsnapshot.cpp
index 82d900749c027cc1bdbbb159e826310285889618..a89c8f93e36261862c5f4bad70696b80e50e5aba 100644
(file)
--- a/
pv/data/logicsnapshot.cpp
+++ b/
pv/data/logicsnapshot.cpp
@@
-46,9
+46,9
@@
const int LogicSnapshot::MipMapScaleFactor = 1 << MipMapScalePower;
const float LogicSnapshot::LogMipMapScaleFactor = logf(MipMapScaleFactor);
const uint64_t LogicSnapshot::MipMapDataUnit = 64*1024; // bytes
const float LogicSnapshot::LogMipMapScaleFactor = logf(MipMapScaleFactor);
const uint64_t LogicSnapshot::MipMapDataUnit = 64*1024; // bytes
-LogicSnapshot::LogicSnapshot(shared_ptr<Logic> logic,
+LogicSnapshot::LogicSnapshot(shared_ptr<Logic> logic,
uint64_t samplerate,
const uint64_t expected_num_samples) :
const uint64_t expected_num_samples) :
- Snapshot(logic->unit_size()),
+ Snapshot(
samplerate,
logic->unit_size()),
last_append_sample_(0)
{
set_capacity(expected_num_samples);
last_append_sample_(0)
{
set_capacity(expected_num_samples);
diff --git
a/pv/data/logicsnapshot.hpp
b/pv/data/logicsnapshot.hpp
index 619048d8ae18b82244d51731b259165a164625b0..8b1481abfe3b4da576f863056ed526641dcb2093 100644
(file)
--- a/
pv/data/logicsnapshot.hpp
+++ b/
pv/data/logicsnapshot.hpp
@@
-63,7
+63,7
@@
public:
public:
LogicSnapshot(std::shared_ptr<sigrok::Logic> logic,
public:
LogicSnapshot(std::shared_ptr<sigrok::Logic> logic,
-
uint64_t expected_num_samples = 0);
+
uint64_t samplerate,
uint64_t expected_num_samples = 0);
virtual ~LogicSnapshot();
virtual ~LogicSnapshot();
diff --git
a/pv/data/signaldata.cpp
b/pv/data/signaldata.cpp
index ceeef0b424fbc5c5edbd2415563a2353a195851a..6a4c6d926bf6e3d071d03b24515aaf63ed916c65 100644
(file)
--- a/
pv/data/signaldata.cpp
+++ b/
pv/data/signaldata.cpp
@@
-23,21
+23,9
@@
namespace pv {
namespace data {
namespace pv {
namespace data {
-SignalData::SignalData() :
- samplerate_(0)
+SignalData::SignalData()
{
}
{
}
-double SignalData::samplerate() const
-{
- return samplerate_;
-}
-
-void SignalData::set_samplerate(double samplerate)
-{
- samplerate_ = samplerate;
- clear();
-}
-
} // namespace data
} // namespace pv
} // namespace data
} // namespace pv
diff --git
a/pv/data/signaldata.hpp
b/pv/data/signaldata.hpp
index 7d67add14d9caf1027c9da05c06dbb49be16c781..515897711524bcbf4aa43ec8b4b9dc69eead2865 100644
(file)
--- a/
pv/data/signaldata.hpp
+++ b/
pv/data/signaldata.hpp
@@
-37,17
+37,11
@@
public:
virtual ~SignalData() {}
public:
virtual ~SignalData() {}
public:
- double samplerate() const;
- void set_samplerate(double samplerate);
-
virtual std::vector< std::shared_ptr<Snapshot> > snapshots() const = 0;
virtual void clear() = 0;
virtual uint64_t get_max_sample_count() const = 0;
virtual std::vector< std::shared_ptr<Snapshot> > snapshots() const = 0;
virtual void clear() = 0;
virtual uint64_t get_max_sample_count() const = 0;
-
-protected:
- double samplerate_;
};
} // namespace data
};
} // namespace data
diff --git
a/pv/data/snapshot.cpp
b/pv/data/snapshot.cpp
index 6e1235d24218fafce46f95c8c99a93c759d87109..39fdc011f1602e2686721b79bf6d9377a5e1cb40 100644
(file)
--- a/
pv/data/snapshot.cpp
+++ b/
pv/data/snapshot.cpp
@@
-30,9
+30,10
@@
using std::recursive_mutex;
namespace pv {
namespace data {
namespace pv {
namespace data {
-Snapshot::Snapshot(unsigned int unit_size) :
+Snapshot::Snapshot(u
int64_t samplerate, u
nsigned int unit_size) :
sample_count_(0),
start_time_(0),
sample_count_(0),
start_time_(0),
+ samplerate_(samplerate),
capacity_(0),
unit_size_(unit_size)
{
capacity_(0),
unit_size_(unit_size)
{
@@
-56,6
+57,16
@@
double Snapshot::start_time() const
return start_time_;
}
return start_time_;
}
+double Snapshot::samplerate() const
+{
+ return samplerate_;
+}
+
+void Snapshot::set_samplerate(double samplerate)
+{
+ samplerate_ = samplerate;
+}
+
unsigned int Snapshot::unit_size() const
{
return unit_size_;
unsigned int Snapshot::unit_size() const
{
return unit_size_;
diff --git
a/pv/data/snapshot.hpp
b/pv/data/snapshot.hpp
index b9dacc7eb6beb85323747854ccecd4ddd7b027c3..6015de9e65a9a367f7f29e52af84b274f83316fe 100644
(file)
--- a/
pv/data/snapshot.hpp
+++ b/
pv/data/snapshot.hpp
@@
-31,7
+31,7
@@
namespace data {
class Snapshot
{
public:
class Snapshot
{
public:
- Snapshot(unsigned int unit_size);
+ Snapshot(u
int64_t samplerate, u
nsigned int unit_size);
virtual ~Snapshot();
virtual ~Snapshot();
@@
-39,6
+39,9
@@
public:
double start_time() const;
double start_time() const;
+ double samplerate() const;
+ void set_samplerate(double samplerate);
+
unsigned int unit_size() const;
/**
unsigned int unit_size() const;
/**
@@
-76,6
+79,7
@@
protected:
std::vector<uint8_t> data_;
uint64_t sample_count_;
double start_time_;
std::vector<uint8_t> data_;
uint64_t sample_count_;
double start_time_;
+ double samplerate_;
uint64_t capacity_;
unsigned int unit_size_;
};
uint64_t capacity_;
unsigned int unit_size_;
};
diff --git
a/pv/session.cpp
b/pv/session.cpp
index 5e3b492c1ae018c1fe390d7f1f010eb104209203..46af90cc0fa68141e1fe48782d56dc9a2a8a6771 100644
(file)
--- a/
pv/session.cpp
+++ b/
pv/session.cpp
@@
-85,7
+85,8
@@
namespace pv {
Session::Session(DeviceManager &device_manager) :
device_manager_(device_manager),
session_(device_manager.context()->create_session()),
Session::Session(DeviceManager &device_manager) :
device_manager_(device_manager),
session_(device_manager.context()->create_session()),
- capture_state_(Stopped)
+ capture_state_(Stopped),
+ cur_samplerate_(0)
{
set_default_device();
}
{
set_default_device();
}
@@
-431,17
+432,10
@@
void Session::read_sample_rate(shared_ptr<Device> device)
{
const auto keys = device_->config_keys(ConfigKey::DEVICE_OPTIONS);
const auto iter = keys.find(ConfigKey::SAMPLERATE);
{
const auto keys = device_->config_keys(ConfigKey::DEVICE_OPTIONS);
const auto iter = keys.find(ConfigKey::SAMPLERATE);
- c
onst uint64_t sample_rate
= (iter != keys.end() &&
+ c
ur_samplerate_
= (iter != keys.end() &&
(*iter).second.find(sigrok::GET) != (*iter).second.end()) ?
VariantBase::cast_dynamic<Variant<guint64>>(
device->config_get(ConfigKey::SAMPLERATE)).get() : 0;
(*iter).second.find(sigrok::GET) != (*iter).second.end()) ?
VariantBase::cast_dynamic<Variant<guint64>>(
device->config_get(ConfigKey::SAMPLERATE)).get() : 0;
-
- // Set the sample rate of all data
- const set< shared_ptr<data::SignalData> > data_set = get_data();
- for (shared_ptr<data::SignalData> data : data_set) {
- assert(data);
- data->set_samplerate(sample_rate);
- }
}
void Session::sample_thread_proc(shared_ptr<Device> device,
}
void Session::sample_thread_proc(shared_ptr<Device> device,
@@
-530,7
+524,8
@@
void Session::feed_in_logic(shared_ptr<Logic> logic)
// Create a new data snapshot
cur_logic_snapshot_ = shared_ptr<data::LogicSnapshot>(
// Create a new data snapshot
cur_logic_snapshot_ = shared_ptr<data::LogicSnapshot>(
- new data::LogicSnapshot(logic, sample_limit));
+ new data::LogicSnapshot(
+ logic, cur_samplerate_, sample_limit));
logic_data_->push_snapshot(cur_logic_snapshot_);
// @todo Putting this here means that only listeners querying
logic_data_->push_snapshot(cur_logic_snapshot_);
// @todo Putting this here means that only listeners querying
@@
-585,7
+580,8
@@
void Session::feed_in_analog(shared_ptr<Analog> analog)
// Create a snapshot, keep it in the maps of channels
snapshot = shared_ptr<data::AnalogSnapshot>(
// Create a snapshot, keep it in the maps of channels
snapshot = shared_ptr<data::AnalogSnapshot>(
- new data::AnalogSnapshot(sample_limit));
+ new data::AnalogSnapshot(
+ cur_samplerate_, sample_limit));
cur_analog_snapshots_[channel] = snapshot;
// Find the annalog data associated with the channel
cur_analog_snapshots_[channel] = snapshot;
// Find the annalog data associated with the channel
diff --git
a/pv/session.hpp
b/pv/session.hpp
index c6a317def7b61b5f1b61a6bef5ffa65847372fc4..556f54e5d5c938454a49486a7aac011bf561c26a 100644
(file)
--- a/
pv/session.hpp
+++ b/
pv/session.hpp
@@
-166,6
+166,7
@@
private:
mutable std::mutex data_mutex_;
std::shared_ptr<data::Logic> logic_data_;
mutable std::mutex data_mutex_;
std::shared_ptr<data::Logic> logic_data_;
+ uint64_t cur_samplerate_;
std::shared_ptr<data::LogicSnapshot> cur_logic_snapshot_;
std::map< std::shared_ptr<sigrok::Channel>, std::shared_ptr<data::AnalogSnapshot> >
cur_analog_snapshots_;
std::shared_ptr<data::LogicSnapshot> cur_logic_snapshot_;
std::map< std::shared_ptr<sigrok::Channel>, std::shared_ptr<data::AnalogSnapshot> >
cur_analog_snapshots_;
diff --git
a/pv/storesession.cpp
b/pv/storesession.cpp
index 46dddcd64411fb85ac998c19d6b493977c52df5d..af599db00e769c6d17687116281b400b56420f05 100644
(file)
--- a/
pv/storesession.cpp
+++ b/
pv/storesession.cpp
@@
-127,8
+127,8
@@
bool StoreSession::start()
{{"filename",
Glib::Variant<Glib::ustring>::create(file_name_)}});
auto meta = context->create_meta_packet(
{{"filename",
Glib::Variant<Glib::ustring>::create(file_name_)}});
auto meta = context->create_meta_packet(
- {{ConfigKey::SAMPLERATE,
-
Glib::Variant<guint64>::create(data
->samplerate())}});
+ {{ConfigKey::SAMPLERATE,
Glib::Variant<guint64>::create(
+
snapshot
->samplerate())}});
output_->receive(meta);
} catch (Error error) {
error_ = tr("Error while saving.");
output_->receive(meta);
} catch (Error error) {
error_ = tr("Error while saving.");
diff --git
a/pv/view/analogsignal.cpp
b/pv/view/analogsignal.cpp
index 382d1e35ad75f6fdf22f9d16aeea3b34835cc0cc..e559a4a45c50da008bc8ab234c5f693e417c6f20 100644
(file)
--- a/
pv/view/analogsignal.cpp
+++ b/
pv/view/analogsignal.cpp
@@
-112,7
+112,7
@@
void AnalogSignal::paint_mid(QPainter &p, const RowItemPaintParams &pp)
snapshots.front();
const double pixels_offset = pp.pixels_offset();
snapshots.front();
const double pixels_offset = pp.pixels_offset();
- const double samplerate =
data_
->samplerate();
+ const double samplerate =
snapshot
->samplerate();
const double start_time = snapshot->start_time();
const int64_t last_sample = snapshot->get_sample_count() - 1;
const double samples_per_pixel = samplerate * pp.scale();
const double start_time = snapshot->start_time();
const int64_t last_sample = snapshot->get_sample_count() - 1;
const double samples_per_pixel = samplerate * pp.scale();
diff --git
a/pv/view/logicsignal.cpp
b/pv/view/logicsignal.cpp
index 48316f8b56340c6ae22c10dccccdedceaac38999..b1aaae8f2ddbdf26e2724c1b99787d87d7fd8b0d 100644
(file)
--- a/
pv/view/logicsignal.cpp
+++ b/
pv/view/logicsignal.cpp
@@
-177,7
+177,7
@@
void LogicSignal::paint_mid(QPainter &p, const RowItemPaintParams &pp)
const shared_ptr<pv::data::LogicSnapshot> &snapshot =
snapshots.front();
const shared_ptr<pv::data::LogicSnapshot> &snapshot =
snapshots.front();
- double samplerate =
data_
->samplerate();
+ double samplerate =
snapshot
->samplerate();
// Show sample rate as 1Hz when it is unknown
if (samplerate == 0.0)
// Show sample rate as 1Hz when it is unknown
if (samplerate == 0.0)
diff --git
a/pv/view/view.cpp
b/pv/view/view.cpp
index aac6333addd032c0adb85886c60f2fdf9b48a248..e0c49c20ad4b2f60b4e9ea1b16c69420318321ba 100644
(file)
--- a/
pv/view/view.cpp
+++ b/
pv/view/view.cpp
@@
-263,7
+263,10
@@
void View::zoom_one_to_one()
double samplerate = 0.0;
for (const shared_ptr<SignalData> d : visible_data) {
assert(d);
double samplerate = 0.0;
for (const shared_ptr<SignalData> d : visible_data) {
assert(d);
- samplerate = max(samplerate, d->samplerate());
+ const vector< shared_ptr<Snapshot> > snapshots =
+ d->snapshots();
+ for (const shared_ptr<Snapshot> &s : snapshots)
+ samplerate = max(samplerate, s->samplerate());
}
if (samplerate == 0.0)
}
if (samplerate == 0.0)
@@
-311,12
+314,12
@@
pair<double, double> View::get_time_extents() const
const set< shared_ptr<SignalData> > visible_data = get_visible_data();
for (const shared_ptr<SignalData> d : visible_data)
{
const set< shared_ptr<SignalData> > visible_data = get_visible_data();
for (const shared_ptr<SignalData> d : visible_data)
{
- double samplerate = d->samplerate();
- samplerate = (samplerate <= 0.0) ? 1.0 : samplerate;
-
const vector< shared_ptr<Snapshot> > snapshots =
d->snapshots();
for (const shared_ptr<Snapshot> &s : snapshots) {
const vector< shared_ptr<Snapshot> > snapshots =
d->snapshots();
for (const shared_ptr<Snapshot> &s : snapshots) {
+ double samplerate = s->samplerate();
+ samplerate = (samplerate <= 0.0) ? 1.0 : samplerate;
+
const double start_time = s->start_time();
left_time = min(left_time, start_time);
right_time = max(right_time, start_time +
const double start_time = s->start_time();
left_time = min(left_time, start_time);
right_time = max(right_time, start_time +