X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=pv%2Fdata%2Flogicsnapshot.h;fp=pv%2Fdata%2Flogicsnapshot.h;h=0000000000000000000000000000000000000000;hb=2acdb232d6bb452cfdfaea3ef5218fb4da592329;hp=db4d97b3b93ab59e6d1682c68567ebf33beb7972;hpb=8dbbc7f0b9ea59d0f0d62225772f8a56eee125f5;p=pulseview.git diff --git a/pv/data/logicsnapshot.h b/pv/data/logicsnapshot.h deleted file mode 100644 index db4d97b3..00000000 --- a/pv/data/logicsnapshot.h +++ /dev/null @@ -1,119 +0,0 @@ -/* - * This file is part of the PulseView project. - * - * Copyright (C) 2012 Joel Holdsworth - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef PULSEVIEW_PV_DATA_LOGICSNAPSHOT_H -#define PULSEVIEW_PV_DATA_LOGICSNAPSHOT_H - -#include "snapshot.h" - -#include -#include - -namespace sigrok { - class Logic; -} - -namespace LogicSnapshotTest { -struct Pow2; -struct Basic; -struct LargeData; -struct Pulses; -struct LongPulses; -} - -namespace pv { -namespace data { - -class LogicSnapshot : public Snapshot -{ -private: - struct MipMapLevel - { - uint64_t length; - uint64_t data_length; - void *data; - }; - -private: - static const unsigned int ScaleStepCount = 10; - static const int MipMapScalePower; - static const int MipMapScaleFactor; - static const float LogMipMapScaleFactor; - static const uint64_t MipMapDataUnit; - -public: - typedef std::pair EdgePair; - -public: - LogicSnapshot(std::shared_ptr logic, - uint64_t expected_num_samples = 0); - - virtual ~LogicSnapshot(); - - 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(); - - uint64_t get_sample(uint64_t index) const; - -public: - /** - * Parses a logic data snapshot to generate a list of transitions - * in a time interval to a given level of detail. - * @param[out] edges The vector to place the edges into. - * @param[in] start The start sample index. - * @param[in] end The end sample index. - * @param[in] min_length The minimum number of samples that - * can be resolved at this level of detail. - * @param[in] sig_index The index of the signal. - **/ - void get_subsampled_edges(std::vector &edges, - uint64_t start, uint64_t end, - float min_length, int sig_index); - -private: - uint64_t get_subsample(int level, uint64_t offset) const; - - static uint64_t pow2_ceil(uint64_t x, unsigned int power); - -private: - struct MipMapLevel mip_map_[ScaleStepCount]; - uint64_t last_append_sample_; - - friend struct LogicSnapshotTest::Pow2; - friend struct LogicSnapshotTest::Basic; - friend struct LogicSnapshotTest::LargeData; - friend struct LogicSnapshotTest::Pulses; - friend struct LogicSnapshotTest::LongPulses; -}; - -} // namespace data -} // namespace pv - -#endif // PULSEVIEW_PV_DATA_LOGICSNAPSHOT_H