- // Create the initial logic data segment if needed
- if (logic_data->segments().size() == 0) {
- shared_ptr<LogicSegment> lsegment =
- make_shared<LogicSegment>(*logic_data.get(), 1, asegment->samplerate());
- logic_data->push_segment(lsegment);
- }
+ vector<shared_ptr<sigrok::Channel> > channels;
+ channels.push_back(channel_);
+
+ vector<const sigrok::QuantityFlag*> mq_flags;
+ const sigrok::Quantity * const mq = sigrok::Quantity::VOLTAGE;
+ const sigrok::Unit * const unit = sigrok::Unit::VOLT;
+
+ shared_ptr<sigrok::Packet> packet =
+ Session::sr_context->create_analog_packet(channels,
+ asamples, ConversionBlockSize, mq, unit, mq_flags);
+
+ shared_ptr<sigrok::Analog> analog =
+ dynamic_pointer_cast<sigrok::Analog>(packet->payload());
+
+ // Convert
+ uint64_t i = start_sample;
+
+ if (conversion_type_ == A2LConversionByThreshold) {
+ const double threshold = get_conversion_thresholds()[0];
+
+ // Convert as many sample blocks as we can
+ while ((end_sample - i) > ConversionBlockSize) {
+ asegment->get_samples(i, i + ConversionBlockSize, asamples);