- asegment->get_samples(i, end_sample, asamples);
- shared_ptr<sigrok::Logic> logic =
- analog->get_logic_via_schmitt_trigger(lo_thr, hi_thr,
- &state, lsamples);
- lsegment->append_payload(logic->data_pointer(), logic->data_length());
- samples_added(lsegment, i, end_sample);
- }
+ if (analog_data->analog_segments().size() == 0) {
+ unique_lock<mutex> input_lock(conversion_input_mutex_);
+ conversion_input_cond_.wait(input_lock);
+ }
+
+ } else
+ // Currently, we only handle A2L conversions
+ return;
+
+ // If we had to wait for input data, we may have been notified to terminate
+ if (conversion_interrupt_)
+ return;
+
+ uint32_t segment_id = 0;
+
+ AnalogSegment *asegment = analog_data->analog_segments().front().get();
+ assert(asegment);
+
+ const shared_ptr<Logic> logic_data = dynamic_pointer_cast<Logic>(converted_data_);
+ assert(logic_data);
+
+ // Create the initial logic data segment if needed
+ if (logic_data->logic_segments().size() == 0) {
+ shared_ptr<LogicSegment> new_segment =
+ make_shared<LogicSegment>(*logic_data.get(), 1, asegment->samplerate());
+ logic_data->push_segment(new_segment);
+ }