X-Git-Url: http://git.code-monkey.de/?a=blobdiff_plain;f=pv%2Fdata%2Flogicsnapshot.h;h=a215f92801307879b91402ffadffc9f3e668cc2a;hb=e8d009288de28cb194bc7964f96677c2baf900c9;hp=9868a212561fb17364cdd98f525c882432675371;hpb=023887ca1d8a104b4bef287b7cea8d403044a41b;p=pulseview.git diff --git a/pv/data/logicsnapshot.h b/pv/data/logicsnapshot.h index 9868a21..a215f92 100644 --- a/pv/data/logicsnapshot.h +++ b/pv/data/logicsnapshot.h @@ -26,12 +26,16 @@ #include #include +namespace sigrok { + class Logic; +} + namespace LogicSnapshotTest { -class Pow2; -class Basic; -class LargeData; -class Pulses; -class LongPulses; +struct Pow2; +struct Basic; +struct LargeData; +struct Pulses; +struct LongPulses; } namespace pv { @@ -58,13 +62,20 @@ public: typedef std::pair EdgePair; public: - LogicSnapshot(const sr_datafeed_logic &logic); + LogicSnapshot(std::shared_ptr logic, + uint64_t expected_num_samples = 0); virtual ~LogicSnapshot(); - void append_payload(const sr_datafeed_logic &logic); + void append_payload(std::shared_ptr logic); + + void get_samples(uint8_t *const data, + int64_t start_sample, int64_t end_sample) const; private: + uint64_t unpack_sample(const uint8_t *ptr) const; + void pack_sample(uint8_t *ptr, uint64_t value); + void reallocate_mipmap_level(MipMapLevel &m); void append_payload_to_mipmap(); @@ -95,11 +106,11 @@ private: struct MipMapLevel _mip_map[ScaleStepCount]; uint64_t _last_append_sample; - friend class LogicSnapshotTest::Pow2; - friend class LogicSnapshotTest::Basic; - friend class LogicSnapshotTest::LargeData; - friend class LogicSnapshotTest::Pulses; - friend class LogicSnapshotTest::LongPulses; + friend struct LogicSnapshotTest::Pow2; + friend struct LogicSnapshotTest::Basic; + friend struct LogicSnapshotTest::LargeData; + friend struct LogicSnapshotTest::Pulses; + friend struct LogicSnapshotTest::LongPulses; }; } // namespace data