mirror of
https://github.com/DreamSourceLab/DSView.git
synced 2025-01-23 13:42:55 +08:00
Fix trigger time delay @ osc mode
This commit is contained in:
parent
800f4c615e
commit
cc6c663a96
@ -75,14 +75,14 @@ void DsoSnapshot::append_payload(const sr_datafeed_dso &dso)
|
||||
|
||||
// Generate the first mip-map from the data
|
||||
if (_envelope_en)
|
||||
append_payload_to_envelope_levels();
|
||||
append_payload_to_envelope_levels(dso.samplerate_tog);
|
||||
}
|
||||
}
|
||||
|
||||
void DsoSnapshot::enable_envelope(bool enable)
|
||||
{
|
||||
if (!_envelope_done && enable)
|
||||
append_payload_to_envelope_levels();
|
||||
append_payload_to_envelope_levels(true);
|
||||
_envelope_en = enable;
|
||||
}
|
||||
|
||||
@ -146,13 +146,16 @@ void DsoSnapshot::reallocate_envelope(Envelope &e)
|
||||
}
|
||||
}
|
||||
|
||||
void DsoSnapshot::append_payload_to_envelope_levels()
|
||||
void DsoSnapshot::append_payload_to_envelope_levels(bool header)
|
||||
{
|
||||
for (unsigned int i = 0; i < _channel_num; i++) {
|
||||
Envelope &e0 = _envelope_levels[i][0];
|
||||
uint64_t prev_length;
|
||||
EnvelopeSample *dest_ptr;
|
||||
|
||||
if (header)
|
||||
prev_length = 0;
|
||||
else
|
||||
prev_length = e0.length;
|
||||
e0.length = _sample_count / EnvelopeScaleFactor;
|
||||
|
||||
|
@ -90,7 +90,7 @@ public:
|
||||
private:
|
||||
void reallocate_envelope(Envelope &l);
|
||||
|
||||
void append_payload_to_envelope_levels();
|
||||
void append_payload_to_envelope_levels(bool header);
|
||||
|
||||
private:
|
||||
struct Envelope _envelope_levels[2*DS_MAX_DSO_PROBES_NUM][ScaleStepCount];
|
||||
|
@ -927,7 +927,6 @@ void DsoSignal::paint_trace(QPainter &p,
|
||||
QColor trace_colour = _colour;
|
||||
trace_colour.setAlpha(150);
|
||||
p.setPen(trace_colour);
|
||||
//p.setPen(QPen(_colour, 3, Qt::SolidLine));
|
||||
|
||||
QPointF *points = new QPointF[sample_count];
|
||||
QPointF *point = points;
|
||||
@ -955,6 +954,8 @@ void DsoSignal::paint_trace(QPainter &p,
|
||||
}
|
||||
|
||||
p.drawPolyline(points, point - points);
|
||||
p.eraseRect(get_view_rect().right(), get_view_rect().top(),
|
||||
_view->viewport()->width() - get_view_rect().width(), get_view_rect().height());
|
||||
|
||||
//delete[] samples;
|
||||
delete[] points;
|
||||
@ -1422,6 +1423,10 @@ bool DsoSignal::measure(const QPointF &p)
|
||||
if (!enabled())
|
||||
return false;
|
||||
|
||||
const QRectF window = get_view_rect();
|
||||
if (!window.contains(p))
|
||||
return false;
|
||||
|
||||
const deque< boost::shared_ptr<pv::data::DsoSnapshot> > &snapshots =
|
||||
_data->get_snapshots();
|
||||
if (snapshots.empty())
|
||||
|
@ -42,7 +42,7 @@ const QColor Trace::dsYellow = QColor(238, 178, 17, 255);
|
||||
const QColor Trace::dsRed = QColor(213, 15, 37, 255);
|
||||
const QColor Trace::dsGreen = QColor(0, 153, 37, 200);
|
||||
const QColor Trace::dsGray = QColor(0x88, 0x8A, 0x85, 60);
|
||||
const QColor Trace::dsFore = QColor(0xff, 0xff, 0xff, 100);
|
||||
const QColor Trace::dsFore = QColor(0xff, 0xff, 0xff, 60);
|
||||
const QColor Trace::dsBack = QColor(0x16, 0x18, 0x23, 180);
|
||||
const QColor Trace::dsDisable = QColor(0x88, 0x8A, 0x85, 200);
|
||||
const QColor Trace::dsActive = QColor(17, 133, 209, 255);
|
||||
|
@ -1938,7 +1938,8 @@ static void receive_transfer(struct libusb_transfer *transfer)
|
||||
mstatus.ch1_pcnt = *((const uint32_t*)cur_buf + mstatus_offset/2 + 14/2);
|
||||
mstatus.vlen = *((const uint32_t*)cur_buf + mstatus_offset/2 + 16/2) & 0x7fffffff;
|
||||
mstatus.stream_mode = *((const uint32_t*)cur_buf + mstatus_offset/2 + 16/2) & 0x80000000;
|
||||
mstatus.sample_divider = *((const uint32_t*)cur_buf + mstatus_offset/2 + 18/2);
|
||||
mstatus.sample_divider = *((const uint32_t*)cur_buf + mstatus_offset/2 + 18/2) & 0x7fffffff;
|
||||
mstatus.sample_divider_tog = *((const uint32_t*)cur_buf + mstatus_offset/2 + 18/2) & 0x80000000;
|
||||
mstatus.zeroing = (*((const uint16_t*)cur_buf + mstatus_offset + 128) & 0x8000) != 0;
|
||||
mstatus.ch0_vpos_mid = *((const uint16_t*)cur_buf + mstatus_offset + 128) & 0x7fff;
|
||||
mstatus.ch0_voff_mid = *((const uint16_t*)cur_buf + mstatus_offset + 129);
|
||||
@ -1972,8 +1973,10 @@ static void receive_transfer(struct libusb_transfer *transfer)
|
||||
dso.mq = SR_MQ_VOLTAGE;
|
||||
dso.unit = SR_UNIT_VOLT;
|
||||
dso.mqflags = SR_MQFLAG_AC;
|
||||
dso.samplerate_tog = mstatus.sample_divider_tog;
|
||||
dso.data = cur_buf + trigger_offset_bytes;
|
||||
} else {
|
||||
packet.type = SR_DF_ABANDON;
|
||||
mstatus_valid = FALSE;
|
||||
}
|
||||
} else {
|
||||
@ -2028,6 +2031,7 @@ static void receive_transfer(struct libusb_transfer *transfer)
|
||||
}
|
||||
|
||||
/* send data to session bus */
|
||||
if (packet.type != SR_DF_ABANDON)
|
||||
sr_session_send(devc->cb_data, &packet);
|
||||
}
|
||||
|
||||
|
@ -2202,7 +2202,8 @@ static void receive_transfer(struct libusb_transfer *transfer)
|
||||
mstatus.ch1_pcnt = *((const uint32_t*)cur_buf + mstatus_offset/2 + 14/2);
|
||||
mstatus.vlen = *((const uint32_t*)cur_buf + mstatus_offset/2 + 16/2) & 0x7fffffff;
|
||||
mstatus.stream_mode = *((const uint32_t*)cur_buf + mstatus_offset/2 + 16/2) & 0x80000000;
|
||||
mstatus.sample_divider = *((const uint32_t*)cur_buf + mstatus_offset/2 + 18/2);
|
||||
mstatus.sample_divider = *((const uint32_t*)cur_buf + mstatus_offset/2 + 18/2) & 0x7fffffff;
|
||||
mstatus.sample_divider_tog = *((const uint32_t*)cur_buf + mstatus_offset/2 + 18/2) & 0x80000000;
|
||||
mstatus.zeroing = (*((const uint16_t*)cur_buf + mstatus_offset + 128) & 0x8000) != 0;
|
||||
mstatus.ch0_adc_off = *((const uint8_t*)cur_buf + mstatus_offset*2 + 131*2);
|
||||
mstatus.ch0_adc_sign = *((const uint8_t*)cur_buf + mstatus_offset*2 + 131*2+1);
|
||||
@ -2229,6 +2230,7 @@ static void receive_transfer(struct libusb_transfer *transfer)
|
||||
dso.mq = SR_MQ_VOLTAGE;
|
||||
dso.unit = SR_UNIT_VOLT;
|
||||
dso.mqflags = SR_MQFLAG_AC;
|
||||
dso.samplerate_tog = mstatus.sample_divider_tog;
|
||||
dso.data = cur_buf + trigger_offset_bytes;
|
||||
} else {
|
||||
devc->mstatus_valid = FALSE;
|
||||
|
@ -176,6 +176,7 @@ enum {
|
||||
SR_DF_ANALOG,
|
||||
SR_DF_FRAME_BEGIN,
|
||||
SR_DF_FRAME_END,
|
||||
SR_DF_ABANDON,
|
||||
};
|
||||
|
||||
/** Values for sr_datafeed_analog.mq. */
|
||||
@ -322,6 +323,8 @@ struct sr_datafeed_dso {
|
||||
int unit;
|
||||
/** Bitmap with extra information about the MQ. */
|
||||
uint64_t mqflags;
|
||||
/** samplerate different from last packet */
|
||||
gboolean samplerate_tog;
|
||||
/** The analog value(s). The data is interleaved according to
|
||||
* the probes list. */
|
||||
void *data;
|
||||
@ -624,6 +627,7 @@ struct sr_status {
|
||||
uint32_t vlen;
|
||||
gboolean stream_mode;
|
||||
uint32_t sample_divider;
|
||||
gboolean sample_divider_tog;
|
||||
|
||||
gboolean zeroing;
|
||||
uint16_t ch0_vpos_mid;
|
||||
|
Loading…
x
Reference in New Issue
Block a user