X-Git-Url: http://sigrok.org/gitweb/?a=blobdiff_plain;f=pv%2Fdata%2Fdecodesignal.cpp;h=ad5a27a9f254f6c041dcd2d75e8eda252382dbf3;hb=ac9494eff3ebc74ae7a87746a4d8668c68f32b52;hp=10ef7d1a0b7a5538af7aad9c93c526c43bc9584f;hpb=b2b18d3aabf497666c3cff76d0c6663623539e36;p=pulseview.git diff --git a/pv/data/decodesignal.cpp b/pv/data/decodesignal.cpp index 10ef7d1a..ad5a27a9 100644 --- a/pv/data/decodesignal.cpp +++ b/pv/data/decodesignal.cpp @@ -535,7 +535,7 @@ void DecodeSignal::get_annotation_subset( } uint32_t DecodeSignal::get_binary_data_chunk_count(uint32_t segment_id, - const Decoder* dec, uint8_t bin_class_id) const + const Decoder* dec, uint32_t bin_class_id) const { try { const DecodeSegment *segment = &(segments_.at(segment_id)); @@ -551,7 +551,7 @@ uint32_t DecodeSignal::get_binary_data_chunk_count(uint32_t segment_id, } void DecodeSignal::get_binary_data_chunk(uint32_t segment_id, - const Decoder* dec, uint8_t bin_class_id, uint32_t chunk_id, + const Decoder* dec, uint32_t bin_class_id, uint32_t chunk_id, const vector **dest, uint64_t *size) { try { @@ -569,7 +569,7 @@ void DecodeSignal::get_binary_data_chunk(uint32_t segment_id, } void DecodeSignal::get_binary_data_chunks_merged(uint32_t segment_id, - const Decoder* dec, uint8_t bin_class_id, uint64_t start_sample, + const Decoder* dec, uint32_t bin_class_id, uint64_t start_sample, uint64_t end_sample, vector *dest) const { assert(dest != nullptr); @@ -609,6 +609,21 @@ void DecodeSignal::get_binary_data_chunks_merged(uint32_t segment_id, } } +const DecodeBinaryClass* DecodeSignal::get_binary_data_class(uint32_t segment_id, + const data::decode::Decoder* dec, uint32_t bin_class_id) const +{ + try { + const DecodeSegment *segment = &(segments_.at(segment_id)); + + for (const DecodeBinaryClass& bc : segment->binary_classes) + if ((bc.decoder == dec) && (bc.info->bin_class_id == bin_class_id)) + return &bc; + } catch (out_of_range&) { + // Do nothing + } + + return nullptr; +} void DecodeSignal::save_settings(QSettings &settings) const { @@ -1332,9 +1347,9 @@ void DecodeSignal::create_decode_segment() // Prepare our binary output classes for (const shared_ptr& dec : stack_) { - uint8_t n = dec->get_binary_class_count(); + uint32_t n = dec->get_binary_class_count(); - for (uint8_t i = 0; i < n; i++) + for (uint32_t i = 0; i < n; i++) segments_.back().binary_classes.push_back( {dec.get(), dec->get_binary_class(i), vector()}); }