From 5f852de0bd9a0a61025743344877e08ef0961896 Mon Sep 17 00:00:00 2001 From: DreamSourceLab Date: Fri, 9 May 2014 15:49:43 +0800 Subject: [PATCH] v0.21 --- DSLogic-gui/CMakeLists.txt | 3 +- DSLogic-gui/main.cpp | 16 +- DSLogic-gui/pv/data/analog.cpp | 4 +- DSLogic-gui/pv/data/analogsnapshot.cpp | 10 +- DSLogic-gui/pv/data/dso.cpp | 4 +- DSLogic-gui/pv/data/dsosnapshot.cpp | 10 +- DSLogic-gui/pv/data/group.cpp | 4 +- DSLogic-gui/pv/data/groupsnapshot.cpp | 14 +- DSLogic-gui/pv/data/logic.cpp | 4 +- DSLogic-gui/pv/data/logicsnapshot.cpp | 14 +- DSLogic-gui/pv/data/snapshot.cpp | 14 +- DSLogic-gui/pv/decoder/ds1wire.cpp | 10 +- DSLogic-gui/pv/decoder/dsdmx512.cpp | 10 +- DSLogic-gui/pv/decoder/dsi2c.cpp | 12 +- DSLogic-gui/pv/decoder/dsserial.cpp | 12 +- DSLogic-gui/pv/decoder/dsspi.cpp | 12 +- DSLogic-gui/pv/dialogs/deviceoptions.cpp | 22 +- DSLogic-gui/pv/dialogs/deviceoptions.h | 2 + DSLogic-gui/pv/dialogs/search.cpp | 42 ++- DSLogic-gui/pv/dialogs/search.h | 10 +- DSLogic-gui/pv/dock/triggerdock.cpp | 22 +- .../pv/prop/binding/binding_deviceoptions.cpp | 10 +- DSLogic-gui/pv/sigsession.cpp | 111 +++--- DSLogic-gui/pv/toolbars/devicebar.cpp | 8 +- DSLogic-gui/pv/toolbars/samplingbar.cpp | 2 +- DSLogic-gui/pv/view/analogsignal.cpp | 10 +- DSLogic-gui/pv/view/dsosignal.cpp | 10 +- DSLogic-gui/pv/view/groupsignal.cpp | 12 +- DSLogic-gui/pv/view/header.cpp | 32 +- DSLogic-gui/pv/view/logicsignal.cpp | 6 +- DSLogic-gui/pv/view/protocolsignal.cpp | 6 +- DSLogic-gui/pv/view/ruler.cpp | 6 +- DSLogic-gui/pv/view/view.cpp | 20 +- DSLogic-gui/pv/view/viewport.cpp | 20 +- DSLogic-gui/res/DSLogic.bin | Bin 340604 -> 340604 bytes DSLogic-gui/stylesheet.qss | 2 +- NEWS | 8 + libsigrok4DSLogic/Makefile.in | 50 ++- libsigrok4DSLogic/aclocal.m4 | 50 ++- libsigrok4DSLogic/configure | 320 +++++++++--------- .../hardware/DSLogic/Makefile.in | 24 +- libsigrok4DSLogic/hardware/DSLogic/dslogic.c | 52 ++- libsigrok4DSLogic/hardware/Makefile.in | 35 +- libsigrok4DSLogic/hardware/common/Makefile.in | 24 +- libsigrok4DSLogic/hardware/demo/Makefile.in | 24 +- libsigrok4DSLogic/input/Makefile.in | 24 +- libsigrok4DSLogic/output/Makefile.in | 35 +- libsigrok4DSLogic/output/text/Makefile.in | 24 +- libsigrok4DSLogic/tests/Makefile.in | 24 +- 49 files changed, 733 insertions(+), 467 deletions(-) diff --git a/DSLogic-gui/CMakeLists.txt b/DSLogic-gui/CMakeLists.txt index 87d693ad..70550081 100644 --- a/DSLogic-gui/CMakeLists.txt +++ b/DSLogic-gui/CMakeLists.txt @@ -86,7 +86,7 @@ set(DS_DESCRIPTION "A GUI for DSLogic") set(DS_VERSION_MAJOR 0) set(DS_VERSION_MINOR 2) -set(DS_VERSION_MICRO 0) +set(DS_VERSION_MICRO 1) set(DS_VERSION_STRING ${DS_VERSION_MAJOR}.${DS_VERSION_MINOR}.${DS_VERSION_MICRO} ) @@ -191,7 +191,6 @@ set(DSLogic_HEADERS set(DSLogic_FORMS pv/dialogs/about.ui - pv/dialogs/search.ui pv/decoder/dmx512config.ui pv/decoder/i2cconfig.ui pv/decoder/serialconfig.ui diff --git a/DSLogic-gui/main.cpp b/DSLogic-gui/main.cpp index 8ae7a66c..807f3ced 100644 --- a/DSLogic-gui/main.cpp +++ b/DSLogic-gui/main.cpp @@ -61,9 +61,9 @@ int main(int argc, char *argv[]) QApplication a(argc, argv); // Set some application metadata - QApplication::setApplicationVersion(DS_VERSION_STRING); - QApplication::setApplicationName("DSLogic(Beta)"); - QApplication::setOrganizationDomain("http://www.DreamSourceLab.com"); + QApplication::setApplicationVersion(DS_VERSION_STRING); + QApplication::setApplicationName("DSLogic(Beta)"); + QApplication::setOrganizationDomain("http://www.DreamSourceLab.com"); // Parse arguments while (1) { @@ -134,11 +134,11 @@ int main(int argc, char *argv[]) pv::DeviceManager device_manager(sr_ctx); // Initialise the main window - pv::MainWindow w(device_manager, open_file); - QFile qss(":/stylesheet.qss"); - qss.open(QFile::ReadOnly); - a.setStyleSheet(qss.readAll()); - qss.close(); + pv::MainWindow w(device_manager, open_file); + QFile qss(":/stylesheet.qss"); + qss.open(QFile::ReadOnly); + a.setStyleSheet(qss.readAll()); + qss.close(); w.show(); // Run the application diff --git a/DSLogic-gui/pv/data/analog.cpp b/DSLogic-gui/pv/data/analog.cpp index a62e2884..d4e6304c 100644 --- a/DSLogic-gui/pv/data/analog.cpp +++ b/DSLogic-gui/pv/data/analog.cpp @@ -35,12 +35,12 @@ Analog::Analog(unsigned int num_probes, uint64_t samplerate) : { } -void Analog::push_snapshot(shared_ptr &snapshot) +void Analog::push_snapshot(boost::shared_ptr &snapshot) { _snapshots.push_front(snapshot); } -deque< shared_ptr >& Analog::get_snapshots() +deque< boost::shared_ptr >& Analog::get_snapshots() { return _snapshots; } diff --git a/DSLogic-gui/pv/data/analogsnapshot.cpp b/DSLogic-gui/pv/data/analogsnapshot.cpp index 3ff8e804..f613983c 100644 --- a/DSLogic-gui/pv/data/analogsnapshot.cpp +++ b/DSLogic-gui/pv/data/analogsnapshot.cpp @@ -49,7 +49,7 @@ const uint64_t AnalogSnapshot::EnvelopeDataUnit = 64*1024; // bytes AnalogSnapshot::AnalogSnapshot(const sr_datafeed_analog &analog, uint64_t _total_sample_len, unsigned int channel_num) : Snapshot(sizeof(uint16_t), _total_sample_len, channel_num) { - lock_guard lock(_mutex); + boost::lock_guard lock(_mutex); memset(_envelope_levels, 0, sizeof(_envelope_levels)); init(_total_sample_len * channel_num); append_payload(analog); @@ -57,7 +57,7 @@ AnalogSnapshot::AnalogSnapshot(const sr_datafeed_analog &analog, uint64_t _total AnalogSnapshot::~AnalogSnapshot() { - lock_guard lock(_mutex); + boost::lock_guard lock(_mutex); BOOST_FOREACH(Envelope &e, _envelope_levels[0]) free(e.samples); } @@ -65,7 +65,7 @@ AnalogSnapshot::~AnalogSnapshot() void AnalogSnapshot::append_payload( const sr_datafeed_analog &analog) { - lock_guard lock(_mutex); + boost::lock_guard lock(_mutex); append_data(analog.data, analog.num_samples); // Generate the first mip-map from the data @@ -81,7 +81,7 @@ const uint16_t* AnalogSnapshot::get_samples( assert(end_sample < (int64_t)get_sample_count()); assert(start_sample <= end_sample); - lock_guard lock(_mutex); + boost::lock_guard lock(_mutex); // uint16_t *const data = new uint16_t[end_sample - start_sample]; // memcpy(data, (uint16_t*)_data + start_sample, sizeof(uint16_t) * @@ -97,7 +97,7 @@ void AnalogSnapshot::get_envelope_section(EnvelopeSection &s, assert(start <= end); assert(min_length > 0); - lock_guard lock(_mutex); + boost::lock_guard lock(_mutex); const unsigned int min_level = max((int)floorf(logf(min_length) / LogEnvelopeScaleFactor) - 1, 0); diff --git a/DSLogic-gui/pv/data/dso.cpp b/DSLogic-gui/pv/data/dso.cpp index 079d617e..fc967ffd 100644 --- a/DSLogic-gui/pv/data/dso.cpp +++ b/DSLogic-gui/pv/data/dso.cpp @@ -34,12 +34,12 @@ Dso::Dso(unsigned int num_probes, uint64_t samplerate) : { } -void Dso::push_snapshot(shared_ptr &snapshot) +void Dso::push_snapshot(boost::shared_ptr &snapshot) { _snapshots.push_front(snapshot); } -deque< shared_ptr >& Dso::get_snapshots() +deque< boost::shared_ptr >& Dso::get_snapshots() { return _snapshots; } diff --git a/DSLogic-gui/pv/data/dsosnapshot.cpp b/DSLogic-gui/pv/data/dsosnapshot.cpp index 6c340b99..b121a01c 100644 --- a/DSLogic-gui/pv/data/dsosnapshot.cpp +++ b/DSLogic-gui/pv/data/dsosnapshot.cpp @@ -48,7 +48,7 @@ const uint64_t DsoSnapshot::EnvelopeDataUnit = 64*1024; // bytes DsoSnapshot::DsoSnapshot(const sr_datafeed_dso &dso, uint64_t _total_sample_len, unsigned int channel_num) : Snapshot(sizeof(uint16_t), _total_sample_len, channel_num) { - lock_guard lock(_mutex); + boost::lock_guard lock(_mutex); memset(_envelope_levels, 0, sizeof(_envelope_levels)); init(_total_sample_len * channel_num); append_payload(dso); @@ -56,14 +56,14 @@ DsoSnapshot::DsoSnapshot(const sr_datafeed_dso &dso, uint64_t _total_sample_len, DsoSnapshot::~DsoSnapshot() { - lock_guard lock(_mutex); + boost::lock_guard lock(_mutex); BOOST_FOREACH(Envelope &e, _envelope_levels[0]) free(e.samples); } void DsoSnapshot::append_payload(const sr_datafeed_dso &dso) { - lock_guard lock(_mutex); + boost::lock_guard lock(_mutex); append_data(dso.data, dso.num_samples); // Generate the first mip-map from the data @@ -79,7 +79,7 @@ const uint16_t* DsoSnapshot::get_samples( assert(end_sample < (int64_t)get_sample_count()); assert(start_sample <= end_sample); - lock_guard lock(_mutex); + boost::lock_guard lock(_mutex); // uint16_t *const data = new uint16_t[end_sample - start_sample]; // memcpy(data, (uint16_t*)_data + start_sample, sizeof(uint16_t) * @@ -95,7 +95,7 @@ void DsoSnapshot::get_envelope_section(EnvelopeSection &s, assert(start <= end); assert(min_length > 0); - lock_guard lock(_mutex); + boost::lock_guard lock(_mutex); const unsigned int min_level = max((int)floorf(logf(min_length) / LogEnvelopeScaleFactor) - 1, 0); diff --git a/DSLogic-gui/pv/data/group.cpp b/DSLogic-gui/pv/data/group.cpp index 26cccd7f..6df3ee88 100644 --- a/DSLogic-gui/pv/data/group.cpp +++ b/DSLogic-gui/pv/data/group.cpp @@ -35,12 +35,12 @@ Group::Group(unsigned int num_probes, uint64_t samplerate) : { } -void Group::push_snapshot(shared_ptr &snapshot) +void Group::push_snapshot(boost::shared_ptr &snapshot) { _snapshots.push_back(snapshot); } -deque< shared_ptr >& Group::get_snapshots() +deque< boost::shared_ptr >& Group::get_snapshots() { return _snapshots; } diff --git a/DSLogic-gui/pv/data/groupsnapshot.cpp b/DSLogic-gui/pv/data/groupsnapshot.cpp index d46da5bd..939ffca6 100644 --- a/DSLogic-gui/pv/data/groupsnapshot.cpp +++ b/DSLogic-gui/pv/data/groupsnapshot.cpp @@ -51,11 +51,11 @@ const uint16_t GroupSnapshot::value_mask[16] = {0x1, 0x2, 0x4, 0x8, 0x100, 0x200, 0x400, 0x800, 0x1000, 0x2000, 0x4000, 0x8000}; -GroupSnapshot::GroupSnapshot(const shared_ptr &_logic_snapshot, std::list index_list) +GroupSnapshot::GroupSnapshot(const boost::shared_ptr &_logic_snapshot, std::list index_list) { assert(_logic_snapshot); - lock_guard lock(_mutex); + boost::lock_guard lock(_mutex); memset(_envelope_levels, 0, sizeof(_envelope_levels)); _data = _logic_snapshot->get_data(); _sample_count = _logic_snapshot->get_sample_count(); @@ -66,20 +66,20 @@ GroupSnapshot::GroupSnapshot(const shared_ptr &_logic_snapshot, s GroupSnapshot::~GroupSnapshot() { - lock_guard lock(_mutex); + boost::lock_guard lock(_mutex); BOOST_FOREACH(Envelope &e, _envelope_levels) free(e.samples); } uint64_t GroupSnapshot::get_sample_count() const { - lock_guard lock(_mutex); + boost::lock_guard lock(_mutex); return _sample_count; } void GroupSnapshot::append_payload() { - lock_guard lock(_mutex); + boost::lock_guard lock(_mutex); // Generate the first mip-map from the data append_payload_to_envelope_levels(); @@ -96,7 +96,7 @@ const uint16_t* GroupSnapshot::get_samples( int64_t i; uint64_t pow; - lock_guard lock(_mutex); + boost::lock_guard lock(_mutex); uint16_t *const data = new uint16_t[end_sample - start_sample]; // memcpy(data, (uint16_t*)_data + start_sample, sizeof(uint16_t) * @@ -121,7 +121,7 @@ void GroupSnapshot::get_envelope_section(EnvelopeSection &s, assert(start <= end); assert(min_length > 0); - lock_guard lock(_mutex); + boost::lock_guard lock(_mutex); const unsigned int min_level = max((int)floorf(logf(min_length) / LogEnvelopeScaleFactor) - 1, 0); diff --git a/DSLogic-gui/pv/data/logic.cpp b/DSLogic-gui/pv/data/logic.cpp index 036cc543..4cdfe2ae 100644 --- a/DSLogic-gui/pv/data/logic.cpp +++ b/DSLogic-gui/pv/data/logic.cpp @@ -37,12 +37,12 @@ Logic::Logic(unsigned int num_probes, uint64_t samplerate) : } void Logic::push_snapshot( - shared_ptr &snapshot) + boost::shared_ptr &snapshot) { _snapshots.push_front(snapshot); } -deque< shared_ptr >& Logic::get_snapshots() +deque< boost::shared_ptr >& Logic::get_snapshots() { return _snapshots; } diff --git a/DSLogic-gui/pv/data/logicsnapshot.cpp b/DSLogic-gui/pv/data/logicsnapshot.cpp index e01386a4..9a6b2d2e 100644 --- a/DSLogic-gui/pv/data/logicsnapshot.cpp +++ b/DSLogic-gui/pv/data/logicsnapshot.cpp @@ -47,7 +47,7 @@ LogicSnapshot::LogicSnapshot(const sr_datafeed_logic &logic, uint64_t _total_sam Snapshot(logic.unitsize, _total_sample_len, channel_num), _last_append_sample(0) { - lock_guard lock(_mutex); + boost::lock_guard lock(_mutex); memset(_mip_map, 0, sizeof(_mip_map)); if (init(_total_sample_len * channel_num) == SR_OK) append_payload(logic); @@ -55,7 +55,7 @@ LogicSnapshot::LogicSnapshot(const sr_datafeed_logic &logic, uint64_t _total_sam LogicSnapshot::~LogicSnapshot() { - lock_guard lock(_mutex); + boost::lock_guard lock(_mutex); BOOST_FOREACH(MipMapLevel &l, _mip_map) free(l.data); } @@ -66,7 +66,7 @@ void LogicSnapshot::append_payload( assert(_unit_size == logic.unitsize); assert((logic.length % _unit_size) == 0); - lock_guard lock(_mutex); + boost::lock_guard lock(_mutex); append_data(logic.data, logic.length / _unit_size); @@ -194,7 +194,7 @@ void LogicSnapshot::get_subsampled_edges( assert(sig_index >= 0); assert(sig_index < 64); - lock_guard lock(_mutex); + boost::lock_guard lock(_mutex); const uint64_t block_length = (uint64_t)max(min_length, 1.0f); const unsigned int min_level = max((int)floorf(logf(min_length) / @@ -378,7 +378,7 @@ int LogicSnapshot::get_first_edge( assert(sig_index >= 0); assert(sig_index < 64); - lock_guard lock(_mutex); + boost::lock_guard lock(_mutex); const uint64_t block_length = 1; const unsigned int min_level = 0; @@ -550,7 +550,7 @@ void LogicSnapshot::get_edges( assert(sig_index >= 0); assert(sig_index < 64); - lock_guard lock(_mutex); + boost::lock_guard lock(_mutex); const uint64_t block_length = 1; const unsigned int min_level = 0; @@ -706,7 +706,7 @@ uint64_t LogicSnapshot::get_min_pulse(uint64_t start, uint64_t end, int sig_inde assert(sig_index >= 0); assert(sig_index < 64); - lock_guard lock(_mutex); + boost::lock_guard lock(_mutex); const uint64_t block_length = 1; const unsigned int min_level = 0; diff --git a/DSLogic-gui/pv/data/snapshot.cpp b/DSLogic-gui/pv/data/snapshot.cpp index 8cf4b6ff..f05452a0 100644 --- a/DSLogic-gui/pv/data/snapshot.cpp +++ b/DSLogic-gui/pv/data/snapshot.cpp @@ -40,13 +40,13 @@ Snapshot::Snapshot(int unit_size, uint64_t total_sample_count, unsigned int chan _ring_sample_count(0), _unit_size(unit_size) { - lock_guard lock(_mutex); + boost::lock_guard lock(_mutex); assert(_unit_size > 0); } Snapshot::~Snapshot() { - lock_guard lock(_mutex); + boost::lock_guard lock(_mutex); if (_data != NULL) free(_data); _data = NULL; @@ -73,31 +73,31 @@ bool Snapshot::buf_null() const uint64_t Snapshot::get_sample_count() const { - lock_guard lock(_mutex); + boost::lock_guard lock(_mutex); return _sample_count / _channel_num; } void* Snapshot::get_data() const { - lock_guard lock(_mutex); + boost::lock_guard lock(_mutex); return _data; } int Snapshot::get_unit_size() const { - lock_guard lock(_mutex); + boost::lock_guard lock(_mutex); return _unit_size; } unsigned int Snapshot::get_channel_num() const { - lock_guard lock(_mutex); + boost::lock_guard lock(_mutex); return _channel_num; } void Snapshot::append_data(void *data, uint64_t samples) { -// lock_guard lock(_mutex); +// boost::lock_guard lock(_mutex); // _data = realloc(_data, (_sample_count + samples) * _unit_size + // sizeof(uint64_t)); if (_sample_count + samples < _total_sample_count) diff --git a/DSLogic-gui/pv/decoder/ds1wire.cpp b/DSLogic-gui/pv/decoder/ds1wire.cpp index 1f8d759f..04d3ec38 100644 --- a/DSLogic-gui/pv/decoder/ds1wire.cpp +++ b/DSLogic-gui/pv/decoder/ds1wire.cpp @@ -53,7 +53,7 @@ const QString ds1Wire::StateTable[TableSize] = { "DATA" }; -ds1Wire::ds1Wire(shared_ptr data, std::list _sel_probes, QMap &_options, QMap _options_index) : +ds1Wire::ds1Wire(boost::shared_ptr data, std::list _sel_probes, QMap &_options, QMap _options_index) : Decoder(data, _sel_probes, _options_index) { (void)_options; @@ -91,12 +91,12 @@ void ds1Wire::decode() _max_width = 0; uint8_t cur_state = Unknown; - const deque< shared_ptr > &snapshots = + const deque< boost::shared_ptr > &snapshots = _data->get_snapshots(); if (snapshots.empty()) return; - const shared_ptr &snapshot = + const boost::shared_ptr &snapshot = snapshots.front(); uint64_t flag_index1; @@ -336,11 +336,11 @@ void ds1Wire::get_subsampled_states(std::vector &states, { ds_view_state view_state; - const deque< shared_ptr > &snapshots = + const deque< boost::shared_ptr > &snapshots = _data->get_snapshots(); if (snapshots.empty()) return; - const shared_ptr &snapshot = + const boost::shared_ptr &snapshot = snapshots.front(); assert(end <= snapshot->get_sample_count()); diff --git a/DSLogic-gui/pv/decoder/dsdmx512.cpp b/DSLogic-gui/pv/decoder/dsdmx512.cpp index 19894ecf..846f2833 100644 --- a/DSLogic-gui/pv/decoder/dsdmx512.cpp +++ b/DSLogic-gui/pv/decoder/dsdmx512.cpp @@ -53,7 +53,7 @@ const QString dsDmx512::StateTable[TableSize] = { "SLOT" }; -dsDmx512::dsDmx512(shared_ptr data, std::list _sel_probes, QMap &_options, QMap _options_index) : +dsDmx512::dsDmx512(boost::shared_ptr data, std::list _sel_probes, QMap &_options, QMap _options_index) : Decoder(data, _sel_probes, _options_index) { (void)_options; @@ -91,12 +91,12 @@ void dsDmx512::decode() _max_width = 0; uint8_t cur_state = Unknown; - const deque< shared_ptr > &snapshots = + const deque< boost::shared_ptr > &snapshots = _data->get_snapshots(); if (snapshots.empty()) return; - const shared_ptr &snapshot = + const boost::shared_ptr &snapshot = snapshots.front(); //uint64_t flag_index; @@ -261,11 +261,11 @@ void dsDmx512::get_subsampled_states(std::vector &states, { ds_view_state view_state; - const deque< shared_ptr > &snapshots = + const deque< boost::shared_ptr > &snapshots = _data->get_snapshots(); if (snapshots.empty()) return; - const shared_ptr &snapshot = + const boost::shared_ptr &snapshot = snapshots.front(); assert(end <= snapshot->get_sample_count()); diff --git a/DSLogic-gui/pv/decoder/dsi2c.cpp b/DSLogic-gui/pv/decoder/dsi2c.cpp index 9f61b869..b2bc440c 100644 --- a/DSLogic-gui/pv/decoder/dsi2c.cpp +++ b/DSLogic-gui/pv/decoder/dsi2c.cpp @@ -52,7 +52,7 @@ const QString dsI2c::StateTable[TableSize] = { "DATA" }; -dsI2c::dsI2c(shared_ptr data, std::list _sel_probes, QMap &_options, QMap _options_index) : +dsI2c::dsI2c(boost::shared_ptr data, std::list _sel_probes, QMap &_options, QMap _options_index) : Decoder(data, _sel_probes, _options_index) { (void)_options; @@ -91,12 +91,12 @@ void dsI2c::decode() _max_width = 0; uint8_t cur_state = Unknown; - const deque< shared_ptr > &snapshots = + const deque< boost::shared_ptr > &snapshots = _data->get_snapshots(); if (snapshots.empty()) return; - const shared_ptr &snapshot = + const boost::shared_ptr &snapshot = snapshots.front(); uint64_t flag_index; @@ -185,7 +185,7 @@ void dsI2c::cmd_decode(const boost::shared_ptr &snapshot) } } -void dsI2c::data_decode(const shared_ptr &snapshot) +void dsI2c::data_decode(const boost::shared_ptr &snapshot) { uint8_t cur_state; const uint8_t *src_ptr; @@ -246,11 +246,11 @@ void dsI2c::get_subsampled_states(std::vector &states, { ds_view_state view_state; - const deque< shared_ptr > &snapshots = + const deque< boost::shared_ptr > &snapshots = _data->get_snapshots(); if (snapshots.empty()) return; - const shared_ptr &snapshot = + const boost::shared_ptr &snapshot = snapshots.front(); assert(end <= snapshot->get_sample_count()); diff --git a/DSLogic-gui/pv/decoder/dsserial.cpp b/DSLogic-gui/pv/decoder/dsserial.cpp index 6e963f95..aee9a4ca 100644 --- a/DSLogic-gui/pv/decoder/dsserial.cpp +++ b/DSLogic-gui/pv/decoder/dsserial.cpp @@ -53,7 +53,7 @@ const QString dsSerial::StateTable[TableSize] = { "DATA" }; -dsSerial::dsSerial(shared_ptr data, std::list _sel_probes, QMap &_options, QMap _options_index) : +dsSerial::dsSerial(boost::shared_ptr data, std::list _sel_probes, QMap &_options, QMap _options_index) : Decoder(data, _sel_probes, _options_index) { assert(_sel_probes.size() == 1); @@ -102,12 +102,12 @@ void dsSerial::decode() assert(_data); uint8_t cur_state = Unknown; - const deque< shared_ptr > &snapshots = + const deque< boost::shared_ptr > &snapshots = _data->get_snapshots(); if (snapshots.empty()) return; - const shared_ptr &snapshot = + const boost::shared_ptr &snapshot = snapshots.front(); uint64_t flag_index; @@ -174,7 +174,7 @@ void dsSerial::decode() } -void dsSerial::data_decode(const shared_ptr &snapshot, uint64_t start, uint64_t stop, float samplesPerBit) +void dsSerial::data_decode(const boost::shared_ptr &snapshot, uint64_t start, uint64_t stop, float samplesPerBit) { (void)stop; @@ -238,11 +238,11 @@ void dsSerial::get_subsampled_states(std::vector &states, { ds_view_state view_state; - const deque< shared_ptr > &snapshots = + const deque< boost::shared_ptr > &snapshots = _data->get_snapshots(); if (snapshots.empty()) return; - const shared_ptr &snapshot = + const boost::shared_ptr &snapshot = snapshots.front(); assert(end <= snapshot->get_sample_count()); diff --git a/DSLogic-gui/pv/decoder/dsspi.cpp b/DSLogic-gui/pv/decoder/dsspi.cpp index 88ff8db0..3b95507d 100644 --- a/DSLogic-gui/pv/decoder/dsspi.cpp +++ b/DSLogic-gui/pv/decoder/dsspi.cpp @@ -45,7 +45,7 @@ const QString dsSpi::StateTable[TableSize] = { "DATA" }; -dsSpi::dsSpi(shared_ptr data, std::list _sel_probes, QMap &_options, QMap _options_index) : +dsSpi::dsSpi(boost::shared_ptr data, std::list _sel_probes, QMap &_options, QMap _options_index) : Decoder(data, _sel_probes, _options_index) { _cpol = _options.value("cpol").toBool(); @@ -125,12 +125,12 @@ void dsSpi::decode() _max_width = 0; uint8_t cur_state = Unknown; - const deque< shared_ptr > &snapshots = + const deque< boost::shared_ptr > &snapshots = _data->get_snapshots(); if (snapshots.empty()) return; - const shared_ptr &snapshot = + const boost::shared_ptr &snapshot = snapshots.front(); const uint64_t ssn_mask = 1ULL << _ssn_index; @@ -191,7 +191,7 @@ void dsSpi::decode() } } -void dsSpi::data_decode(const shared_ptr &snapshot) +void dsSpi::data_decode(const boost::shared_ptr &snapshot) { uint8_t cur_state; const uint8_t *src_ptr; @@ -256,11 +256,11 @@ void dsSpi::get_subsampled_states(std::vector &states, { ds_view_state view_state; - const deque< shared_ptr > &snapshots = + const deque< boost::shared_ptr > &snapshots = _data->get_snapshots(); if (snapshots.empty()) return; - const shared_ptr &snapshot = + const boost::shared_ptr &snapshot = snapshots.front(); assert(end <= snapshot->get_sample_count()); diff --git a/DSLogic-gui/pv/dialogs/deviceoptions.cpp b/DSLogic-gui/pv/dialogs/deviceoptions.cpp index f0cadde2..8dfd14a6 100644 --- a/DSLogic-gui/pv/dialogs/deviceoptions.cpp +++ b/DSLogic-gui/pv/dialogs/deviceoptions.cpp @@ -50,6 +50,7 @@ DeviceOptions::DeviceOptions(QWidget *parent, struct sr_dev_inst *sdi) : setWindowTitle(tr("Configure Device")); setLayout(&_layout); + _last_mode = sdi->mode; _mode_comboBox.addItem(mode_strings[LOGIC]); _mode_comboBox.addItem(mode_strings[DSO]); _mode_comboBox.addItem(mode_strings[ANALOG]); @@ -78,10 +79,11 @@ void DeviceOptions::accept() QDialog::accept(); + _last_mode = _sdi->mode; // Commit the properties - const vector< shared_ptr > &properties = + const vector< boost::shared_ptr > &properties = _device_options_binding.properties(); - BOOST_FOREACH(shared_ptr p, properties) { + BOOST_FOREACH(boost::shared_ptr p, properties) { assert(p); p->commit(); } @@ -97,6 +99,15 @@ void DeviceOptions::accept() } } +void DeviceOptions::reject() +{ + using namespace Qt; + QDialog::reject(); + + // Mode Recovery + sr_config_set(_sdi, SR_CONF_DEVICE_MODE, g_variant_new_string(_mode_comboBox.itemText(_last_mode).toLocal8Bit())); +} + QWidget* DeviceOptions::get_property_form() { QWidget *const form = new QWidget(this); @@ -104,9 +115,9 @@ QWidget* DeviceOptions::get_property_form() form->setLayout(layout); layout->addRow("Device Mode", &_mode_comboBox); - const vector< shared_ptr > &properties = + const vector< boost::shared_ptr > &properties = _device_options_binding.properties(); - BOOST_FOREACH(shared_ptr p, properties) + BOOST_FOREACH(boost::shared_ptr p, properties) { assert(p); const QString label = p->labeled_widget() ? QString() : p->name(); @@ -183,7 +194,8 @@ void DeviceOptions::disable_all_probes() void DeviceOptions::mode_changed(QString mode) { - sr_config_set(_sdi, SR_CONF_DEVICE_MODE, g_variant_new_string(mode.toLocal8Bit())); + // Commit mode + sr_config_set(_sdi, SR_CONF_DEVICE_MODE, g_variant_new_string(_mode_comboBox.currentText().toLocal8Bit())); setup_probes(); } diff --git a/DSLogic-gui/pv/dialogs/deviceoptions.h b/DSLogic-gui/pv/dialogs/deviceoptions.h index 2ee2534a..ad804d22 100644 --- a/DSLogic-gui/pv/dialogs/deviceoptions.h +++ b/DSLogic-gui/pv/dialogs/deviceoptions.h @@ -51,6 +51,7 @@ public: protected: void accept(); + void reject(); private: @@ -67,6 +68,7 @@ private slots: private: struct sr_dev_inst *const _sdi; + int _last_mode; QVBoxLayout _layout; diff --git a/DSLogic-gui/pv/dialogs/search.cpp b/DSLogic-gui/pv/dialogs/search.cpp index 50c15c9d..59454913 100644 --- a/DSLogic-gui/pv/dialogs/search.cpp +++ b/DSLogic-gui/pv/dialogs/search.cpp @@ -22,33 +22,55 @@ #include "search.h" -#include "ui_search.h" #include +#include namespace pv { namespace dialogs { Search::Search(QWidget *parent, struct sr_dev_inst *sdi, QString pattern) : QDialog(parent), - ui(new Ui::Search), _sdi(sdi) { assert(_sdi); - ui->setupUi(this); + + QFont font("Monaco"); + font.setStyleHint(QFont::Monospace); + font.setFixedPitch(true); QRegExp value_rx("[10XRFCxrfc ]+"); QValidator *value_validator = new QRegExpValidator(value_rx, this); - //ui->_value_lineEdit->setText("X X X X X X X X X X X X X X X X"); - ui->_value_lineEdit->setText(pattern); - ui->_value_lineEdit->setValidator(value_validator); - ui->_value_lineEdit->setMaxLength(16 * 2 - 1); - ui->_value_lineEdit->setInputMask("X X X X X X X X X X X X X X X X"); + + search_lineEdit.setText(pattern); + search_lineEdit.setValidator(value_validator); + search_lineEdit.setMaxLength(16 * 2 - 1); + search_lineEdit.setInputMask("X X X X X X X X X X X X X X X X"); + search_lineEdit.setFont(font); + + QLabel *search_label = new QLabel("1 1 1 1 1\n5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0"); + search_label->setFont(font); + + search_buttonBox.addButton(QDialogButtonBox::Ok); + search_buttonBox.addButton(QDialogButtonBox::Cancel); + + QGridLayout *search_layout = new QGridLayout(); + search_layout->addWidget(search_label, 0, 1); + search_layout->addWidget(new QLabel("Search Value: "), 1,0, Qt::AlignRight); + search_layout->addWidget(&search_lineEdit, 1, 1); + search_layout->addWidget(new QLabel(" "), 2,0); + search_layout->addWidget(new QLabel("X: Don't care\n0: Low level\n1: High level\nR: Rising edge\nF: Falling edge\nC: Rising/Falling edge"), 3, 0); + search_layout->addWidget(&search_buttonBox, 4, 2); + //search_layout->addStretch(1); + + setLayout(search_layout); + + connect(&search_buttonBox, SIGNAL(accepted()), this, SLOT(accept())); + connect(&search_buttonBox, SIGNAL(rejected()), this, SLOT(reject())); } Search::~Search() { - delete ui; } void Search::accept() @@ -60,7 +82,7 @@ void Search::accept() QString Search::get_pattern() { - QString pattern = ui->_value_lineEdit->text(); + QString pattern = search_lineEdit.text(); //pattern.remove(QChar('/r'), Qt::CaseInsensitive); return pattern; } diff --git a/DSLogic-gui/pv/dialogs/search.h b/DSLogic-gui/pv/dialogs/search.h index a4dea4cc..07c3312b 100644 --- a/DSLogic-gui/pv/dialogs/search.h +++ b/DSLogic-gui/pv/dialogs/search.h @@ -27,13 +27,12 @@ #include #include #include +#include +#include +#include #include "../sigsession.h" #include -namespace Ui { -class Search; -} - namespace pv { namespace dialogs { @@ -56,7 +55,8 @@ signals: public slots: private: - Ui::Search *ui; + QLineEdit search_lineEdit; + QDialogButtonBox search_buttonBox; sr_dev_inst *_sdi; }; diff --git a/DSLogic-gui/pv/dock/triggerdock.cpp b/DSLogic-gui/pv/dock/triggerdock.cpp index f035bd6b..d5fc8904 100644 --- a/DSLogic-gui/pv/dock/triggerdock.cpp +++ b/DSLogic-gui/pv/dock/triggerdock.cpp @@ -42,6 +42,10 @@ TriggerDock::TriggerDock(QWidget *parent, SigSession &session) : { int i; + QFont font("Monaco"); + font.setStyleHint(QFont::Monospace); + font.setFixedPitch(true); + simple_radioButton = new QRadioButton("Simple Trigger", this); simple_radioButton->setChecked(true); adv_radioButton = new QRadioButton("Advanced Trigger", this); @@ -77,6 +81,7 @@ TriggerDock::TriggerDock(QWidget *parent, SigSession &session) : _logic_comboBox_list.push_back(_logic_comboBox); QLineEdit *_value0_lineEdit = new QLineEdit("X X X X X X X X X X X X X X X X", this); + _value0_lineEdit->setFont(font); _value0_lineEdit->setValidator(value_validator); _value0_lineEdit->setMaxLength(TriggerProbes * 2 - 1); _value0_lineEdit->setInputMask("X X X X X X X X X X X X X X X X"); @@ -91,6 +96,7 @@ TriggerDock::TriggerDock(QWidget *parent, SigSession &session) : _inv0_comboBox_list.push_back(_inv0_comboBox); QLineEdit *_value1_lineEdit = new QLineEdit("X X X X X X X X X X X X X X X X", this); + _value1_lineEdit->setFont(font); _value1_lineEdit->setValidator(value_validator); _value1_lineEdit->setMaxLength(TriggerProbes * 2 - 1); _value1_lineEdit->setInputMask("X X X X X X X X X X X X X X X X"); @@ -104,15 +110,14 @@ TriggerDock::TriggerDock(QWidget *parent, SigSession &session) : _inv1_comboBox->addItem(tr("!=")); _inv1_comboBox_list.push_back(_inv1_comboBox); - QLabel *value_exp0_label = new QLabel("1 1 1 1 1 1", this); - QLabel *value_exp1_label = new QLabel("5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0", this); + QLabel *value_exp_label = new QLabel("1 1 1 1 1 1\n5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0", this); QLabel *inv_exp_label = new QLabel("Inv", this); QLabel *count_exp_label = new QLabel("Counter", this); + value_exp_label->setFont(font); QVBoxLayout *stage_layout = new QVBoxLayout(); QGridLayout *stage_glayout = new QGridLayout(); - stage_glayout->addWidget(value_exp0_label, 0, 0); - stage_glayout->addWidget(value_exp1_label, 1, 0); + stage_glayout->addWidget(value_exp_label, 1, 0); stage_glayout->addWidget(inv_exp_label, 1, 1); stage_glayout->addWidget(count_exp_label, 1, 2); stage_glayout->addWidget(_value0_lineEdit, 2, 0); @@ -123,13 +128,8 @@ TriggerDock::TriggerDock(QWidget *parent, SigSession &session) : stage_glayout->addWidget(_inv1_comboBox, 3, 1); stage_glayout->addWidget(_count1_spinBox, 3, 2); stage_layout->addLayout(stage_glayout); - stage_layout->addSpacing(124); - stage_layout->addWidget(new QLabel("X: Don't care")); - stage_layout->addWidget(new QLabel("0: Low level")); - stage_layout->addWidget(new QLabel("1: High level")); - stage_layout->addWidget(new QLabel("R: Rising edge")); - stage_layout->addWidget(new QLabel("F: Falling edge")); - stage_layout->addWidget(new QLabel("C: Rising/Falling edge")); + stage_layout->addSpacing(160); + stage_layout->addWidget(new QLabel("X: Don't care\n0: Low level\n1: High level\nR: Rising edge\nF: Falling edge\nC: Rising/Falling edge")); stage_layout->addStretch(1); QGroupBox *_stage_groupBox = new QGroupBox("Stage"+QString::number(i), this); diff --git a/DSLogic-gui/pv/prop/binding/binding_deviceoptions.cpp b/DSLogic-gui/pv/prop/binding/binding_deviceoptions.cpp index 38781a23..d5a75000 100644 --- a/DSLogic-gui/pv/prop/binding/binding_deviceoptions.cpp +++ b/DSLogic-gui/pv/prop/binding/binding_deviceoptions.cpp @@ -132,13 +132,13 @@ void DeviceOptions::config_setter( void DeviceOptions::bind_bool(const QString &name, int key) { - _properties.push_back(shared_ptr( + _properties.push_back(boost::shared_ptr( new Bool(name, bind(config_getter, _sdi, key), bind(config_setter, _sdi, key, _1)))); } void DeviceOptions::bind_enum(const QString &name, int key, - GVariant *const gvar_list, function printer) + GVariant *const gvar_list, boost::function printer) { GVariant *gvar; GVariantIter iter; @@ -150,7 +150,7 @@ void DeviceOptions::bind_enum(const QString &name, int key, while ((gvar = g_variant_iter_next_value (&iter))) values.push_back(make_pair(gvar, printer(gvar))); - _properties.push_back(shared_ptr( + _properties.push_back(boost::shared_ptr( new Enum(name, values, bind(config_getter, _sdi, key), bind(config_setter, _sdi, key, _1)))); @@ -159,7 +159,7 @@ void DeviceOptions::bind_enum(const QString &name, int key, void DeviceOptions::bind_int(const QString &name, int key, QString suffix, optional< std::pair > range) { - _properties.push_back(shared_ptr( + _properties.push_back(boost::shared_ptr( new Int(name, suffix, range, bind(config_getter, _sdi, key), bind(config_setter, _sdi, key, _1)))); @@ -198,7 +198,7 @@ void DeviceOptions::bind_samplerate(const QString &name, assert(num_elements == 3); - _properties.push_back(shared_ptr( + _properties.push_back(boost::shared_ptr( new Double(name, 0, QObject::tr("Hz"), make_pair((double)elements[0], (double)elements[1]), (double)elements[2], diff --git a/DSLogic-gui/pv/sigsession.cpp b/DSLogic-gui/pv/sigsession.cpp index 0e44a8b1..fb31442a 100644 --- a/DSLogic-gui/pv/sigsession.cpp +++ b/DSLogic-gui/pv/sigsession.cpp @@ -122,15 +122,18 @@ int SigSession::set_device(struct sr_dev_inst *sdi) { int ret = SR_ERR; - if (sdi) + if (_sdi == NULL) { ret = _device_manager.use_device(sdi, this); - if (ret == SR_OK && (sdi != _sdi) && _sdi) { - _device_manager.release_device(_sdi); - } - if (ret == SR_OK) _sdi = sdi; - - set_capture_state(Init); + set_capture_state(Init); + } else if (sdi != _sdi) { + ret = _device_manager.use_device(sdi, this); + _device_manager.release_device(_sdi); + _sdi = sdi; + set_capture_state(Init); + } else { + ret = SR_OK; + } return ret; } @@ -145,12 +148,12 @@ void SigSession::release_device(struct sr_dev_inst *sdi) void SigSession::save_file(const std::string &name){ if (_sdi->mode == LOGIC) { - const deque< shared_ptr > &snapshots = + const deque< boost::shared_ptr > &snapshots = _logic_data->get_snapshots(); if (snapshots.empty()) return; - const shared_ptr &snapshot = + const boost::shared_ptr &snapshot = snapshots.front(); sr_session_save(name.c_str(), _sdi, @@ -158,12 +161,12 @@ void SigSession::save_file(const std::string &name){ snapshot->get_unit_size(), snapshot->get_sample_count()); } else if (_sdi->mode == DSO){ - const deque< shared_ptr > &snapshots = + const deque< boost::shared_ptr > &snapshots = _dso_data->get_snapshots(); if (snapshots.empty()) return; - const shared_ptr &snapshot = + const boost::shared_ptr &snapshot = snapshots.front(); sr_session_save(name.c_str(), _sdi, @@ -171,12 +174,12 @@ void SigSession::save_file(const std::string &name){ snapshot->get_unit_size(), snapshot->get_sample_count()); } else { - const deque< shared_ptr > &snapshots = + const deque< boost::shared_ptr > &snapshots = _analog_data->get_snapshots(); if (snapshots.empty()) return; - const shared_ptr &snapshot = + const boost::shared_ptr &snapshot = snapshots.front(); sr_session_save(name.c_str(), _sdi, @@ -187,7 +190,7 @@ void SigSession::save_file(const std::string &name){ } void SigSession::load_file(const string &name, - function error_handler) + boost::function error_handler) { stop_capture(); _sampling_thread.reset(new boost::thread( @@ -197,12 +200,12 @@ void SigSession::load_file(const string &name, SigSession::capture_state SigSession::get_capture_state() const { - lock_guard lock(_sampling_mutex); + boost::lock_guard lock(_sampling_mutex); return _capture_state; } void SigSession::start_capture(uint64_t record_length, - function error_handler) + boost::function error_handler) { stop_capture(); @@ -244,15 +247,15 @@ void SigSession::stop_capture() _sampling_thread.reset(); } -vector< shared_ptr > SigSession::get_signals() +vector< boost::shared_ptr > SigSession::get_signals() { - lock_guard lock(_signals_mutex); + boost::lock_guard lock(_signals_mutex); return _signals; } -vector< shared_ptr > SigSession::get_pro_signals() +vector< boost::shared_ptr > SigSession::get_pro_signals() { - lock_guard lock(_signals_mutex); + boost::lock_guard lock(_signals_mutex); return _protocol_signals; } @@ -319,36 +322,36 @@ boost::shared_ptr SigSession::get_data() void* SigSession::get_buf(int& unit_size, uint64_t &length) { if (_sdi->mode == LOGIC) { - const deque< shared_ptr > &snapshots = + const deque< boost::shared_ptr > &snapshots = _logic_data->get_snapshots(); if (snapshots.empty()) return NULL; - const shared_ptr &snapshot = + const boost::shared_ptr &snapshot = snapshots.front(); unit_size = snapshot->get_unit_size(); length = snapshot->get_sample_count(); return snapshot->get_data(); } else if (_sdi->mode == DSO) { - const deque< shared_ptr > &snapshots = + const deque< boost::shared_ptr > &snapshots = _dso_data->get_snapshots(); if (snapshots.empty()) return NULL; - const shared_ptr &snapshot = + const boost::shared_ptr &snapshot = snapshots.front(); unit_size = snapshot->get_unit_size(); length = snapshot->get_sample_count(); return snapshot->get_data(); } else { - const deque< shared_ptr > &snapshots = + const deque< boost::shared_ptr > &snapshots = _analog_data->get_snapshots(); if (snapshots.empty()) return NULL; - const shared_ptr &snapshot = + const boost::shared_ptr &snapshot = snapshots.front(); unit_size = snapshot->get_unit_size(); @@ -359,14 +362,14 @@ void* SigSession::get_buf(int& unit_size, uint64_t &length) void SigSession::set_capture_state(capture_state state) { - lock_guard lock(_sampling_mutex); + boost::lock_guard lock(_sampling_mutex); _capture_state = state; data_updated(); capture_state_changed(state); } void SigSession::load_thread_proc(const string name, - function error_handler) + boost::function error_handler) { if (sr_session_load(name.c_str()) != SR_OK) { error_handler(tr("Failed to load file.")); @@ -395,7 +398,7 @@ void SigSession::load_thread_proc(const string name, void SigSession::sample_thread_proc(struct sr_dev_inst *sdi, uint64_t record_length, - function error_handler) + boost::function error_handler) { assert(sdi); assert(error_handler); @@ -403,7 +406,7 @@ void SigSession::sample_thread_proc(struct sr_dev_inst *sdi, if (!_adv_trigger) { /* simple trigger check trigger_enable */ ds_trigger_set_en(false); - BOOST_FOREACH(const shared_ptr s, _signals) + BOOST_FOREACH(const boost::shared_ptr s, _signals) { assert(s); if (s->get_trig() != 0) { @@ -456,7 +459,7 @@ void SigSession::sample_thread_proc(struct sr_dev_inst *sdi, void SigSession::feed_in_header(const sr_dev_inst *sdi) { - shared_ptr signal; + boost::shared_ptr signal; GVariant *gvar; uint64_t sample_rate = 0; unsigned int logic_probe_count = 0; @@ -513,7 +516,7 @@ void SigSession::feed_in_header(const sr_dev_inst *sdi) // Create data containers for the coming data snapshots { - lock_guard data_lock(_data_mutex); + boost::lock_guard data_lock(_data_mutex); if (logic_probe_count != 0) { _logic_data.reset(new data::Logic( @@ -537,7 +540,7 @@ void SigSession::feed_in_header(const sr_dev_inst *sdi) // Set Signal data { - BOOST_FOREACH(const shared_ptr s, _signals) + BOOST_FOREACH(const boost::shared_ptr s, _signals) { assert(s); s->set_data(_logic_data, _dso_data, _analog_data, _group_data); @@ -561,7 +564,7 @@ void SigSession::add_group() if (probe_index_list.size() > 1) { //_group_data.reset(new data::Group(_last_sample_rate)); - const shared_ptr signal = shared_ptr( + const boost::shared_ptr signal = boost::shared_ptr( new view::GroupSignal("New Group", _group_data, probe_index_list, _signals.size(), _group_cnt)); _signals.push_back(signal); @@ -571,7 +574,7 @@ void SigSession::add_group() if (!_cur_group_snapshot) { // Create a new data snapshot - _cur_group_snapshot = shared_ptr( + _cur_group_snapshot = boost::shared_ptr( new data::GroupSnapshot(_logic_data->get_snapshots().front(), signal->get_index_list())); //_cur_group_snapshot->append_payload(); _group_data->push_snapshot(_cur_group_snapshot); @@ -630,7 +633,7 @@ void SigSession::add_protocol(std::list probe_index_list, decoder::Decoder if (probe_index_list.size() > 0) { //_group_data.reset(new data::Group(_last_sample_rate)); - const shared_ptr signal = shared_ptr( + const boost::shared_ptr signal = boost::shared_ptr( new view::ProtocolSignal(decoder->get_decode_name(), _logic_data, decoder, probe_index_list, 0, _protocol_cnt)); _signals.push_back(signal); @@ -685,7 +688,7 @@ void SigSession::del_signal(std::vector< boost::shared_ptr >::iter void SigSession::init_signals(const sr_dev_inst *sdi) { - shared_ptr signal; + boost::shared_ptr signal; GVariant *gvar; uint64_t sample_rate = 0; unsigned int logic_probe_count = 0; @@ -767,19 +770,19 @@ void SigSession::init_signals(const sr_dev_inst *sdi) switch(probe->type) { case SR_PROBE_LOGIC: - signal = shared_ptr( + signal = boost::shared_ptr( new view::LogicSignal(probe->name, _logic_data, probe->index, _signals.size())); break; case SR_PROBE_DSO: - signal = shared_ptr( + signal = boost::shared_ptr( new view::DsoSignal(probe->name, _dso_data, probe->index, _signals.size())); break; case SR_PROBE_ANALOG: - signal = shared_ptr( + signal = boost::shared_ptr( new view::AnalogSignal(probe->name, _analog_data, probe->index, _signals.size())); break; @@ -794,7 +797,7 @@ void SigSession::init_signals(const sr_dev_inst *sdi) void SigSession::update_signals(const sr_dev_inst *sdi) { - shared_ptr signal; + boost::shared_ptr signal; QMap probes_en_table; QMap signals_en_table; int index = 0; @@ -823,19 +826,19 @@ void SigSession::update_signals(const sr_dev_inst *sdi) switch(probe->type) { case SR_PROBE_LOGIC: - signal = shared_ptr( + signal = boost::shared_ptr( new view::LogicSignal(probe->name, _logic_data, probe->index, 0)); break; case SR_PROBE_DSO: - signal = shared_ptr( + signal = boost::shared_ptr( new view::DsoSignal(probe->name, _dso_data, probe->index, _signals.size())); break; case SR_PROBE_ANALOG: - signal = shared_ptr( + signal = boost::shared_ptr( new view::AnalogSignal(probe->name, _analog_data, probe->index, 0)); break; @@ -895,7 +898,7 @@ void SigSession::feed_in_trigger(const ds_trigger_pos &trigger_pos) void SigSession::feed_in_logic(const sr_datafeed_logic &logic) { - lock_guard lock(_data_mutex); + boost::lock_guard lock(_data_mutex); if (!_logic_data) { @@ -910,7 +913,7 @@ void SigSession::feed_in_logic(const sr_datafeed_logic &logic) if (!_cur_logic_snapshot) { // Create a new data snapshot - _cur_logic_snapshot = shared_ptr( + _cur_logic_snapshot = boost::shared_ptr( new data::LogicSnapshot(logic, _total_sample_len, 1)); if (_cur_logic_snapshot->buf_null()) stop_capture(); @@ -929,7 +932,7 @@ void SigSession::feed_in_logic(const sr_datafeed_logic &logic) void SigSession::feed_in_dso(const sr_datafeed_dso &dso) { - lock_guard lock(_data_mutex); + boost::lock_guard lock(_data_mutex); if(!_dso_data) { @@ -940,7 +943,7 @@ void SigSession::feed_in_dso(const sr_datafeed_dso &dso) if (!_cur_dso_snapshot) { // Create a new data snapshot - _cur_dso_snapshot = shared_ptr( + _cur_dso_snapshot = boost::shared_ptr( new data::DsoSnapshot(dso, _total_sample_len, _dso_data->get_num_probes())); if (_cur_dso_snapshot->buf_null()) stop_capture(); @@ -959,7 +962,7 @@ void SigSession::feed_in_dso(const sr_datafeed_dso &dso) void SigSession::feed_in_analog(const sr_datafeed_analog &analog) { - lock_guard lock(_data_mutex); + boost::lock_guard lock(_data_mutex); if(!_analog_data) { @@ -970,7 +973,7 @@ void SigSession::feed_in_analog(const sr_datafeed_analog &analog) if (!_cur_analog_snapshot) { // Create a new data snapshot - _cur_analog_snapshot = shared_ptr( + _cur_analog_snapshot = boost::shared_ptr( new data::AnalogSnapshot(analog, _total_sample_len, _analog_data->get_num_probes())); if (_cur_analog_snapshot->buf_null()) stop_capture(); @@ -1027,12 +1030,12 @@ void SigSession::data_feed_in(const struct sr_dev_inst *sdi, case SR_DF_END: { { - lock_guard lock(_data_mutex); - BOOST_FOREACH(const shared_ptr s, _signals) + boost::lock_guard lock(_data_mutex); + BOOST_FOREACH(const boost::shared_ptr s, _signals) { assert(s); if (s->get_type() == view::Signal::DS_GROUP) { - _cur_group_snapshot = shared_ptr( + _cur_group_snapshot = boost::shared_ptr( new data::GroupSnapshot(_logic_data->get_snapshots().front(), s->get_index_list())); //_cur_group_snapshot->append_payload(); _group_data->push_snapshot(_cur_group_snapshot); @@ -1093,7 +1096,7 @@ void SigSession::rst_protocol_analyzer(int rst_index, std::list _sel_prob if (_logic_data) _decoders.at(rst_index).first->recode(_sel_probes, _options, _options_index); - BOOST_FOREACH(const shared_ptr s, _signals) + BOOST_FOREACH(const boost::shared_ptr s, _signals) { assert(s); if (s->get_decoder() == _decoders.at(rst_index).first) { diff --git a/DSLogic-gui/pv/toolbars/devicebar.cpp b/DSLogic-gui/pv/toolbars/devicebar.cpp index 1c49f867..5f389bc3 100644 --- a/DSLogic-gui/pv/toolbars/devicebar.cpp +++ b/DSLogic-gui/pv/toolbars/devicebar.cpp @@ -114,16 +114,16 @@ void DeviceBar::on_device_selected() void DeviceBar::on_configure() { - int dev_mode; + int dev_mode, ret; sr_dev_inst *const sdi = get_selected_device(); assert(sdi); dev_mode = sdi->mode; pv::dialogs::DeviceOptions dlg(this, sdi); - //ret = dlg.exec(); - //if (ret == QDialog::Accepted) { - if (dlg.exec()) { + ret = dlg.exec(); + if (ret == QDialog::Accepted) { + //if (dlg.exec()) { if (dev_mode != sdi->mode) device_selected(); else diff --git a/DSLogic-gui/pv/toolbars/samplingbar.cpp b/DSLogic-gui/pv/toolbars/samplingbar.cpp index a6cd04e9..6b6e4307 100644 --- a/DSLogic-gui/pv/toolbars/samplingbar.cpp +++ b/DSLogic-gui/pv/toolbars/samplingbar.cpp @@ -108,7 +108,7 @@ SamplingBar::SamplingBar(QWidget *parent) : // if (l == DefaultRecordLength) // _record_length_selector.setCurrentIndex(i); // } - + _record_length_selector.setSizeAdjustPolicy(QComboBox::AdjustToContents); set_sampling(false); //_run_stop_button.setToolButtonStyle(Qt::ToolButtonTextBesideIcon); diff --git a/DSLogic-gui/pv/view/analogsignal.cpp b/DSLogic-gui/pv/view/analogsignal.cpp index 79e993cb..2e62bfad 100644 --- a/DSLogic-gui/pv/view/analogsignal.cpp +++ b/DSLogic-gui/pv/view/analogsignal.cpp @@ -50,7 +50,7 @@ const QColor AnalogSignal::SignalColours[4] = { const float AnalogSignal::EnvelopeThreshold = 256.0f; -AnalogSignal::AnalogSignal(QString name, shared_ptr data, +AnalogSignal::AnalogSignal(QString name, boost::shared_ptr data, int probe_index, int order) : Signal(name, probe_index, DS_ANALOG, order), _data(data) @@ -91,13 +91,13 @@ void AnalogSignal::paint(QPainter &p, int y, int left, int right, double scale, //paint_axis(p, y, left, right); - const deque< shared_ptr > &snapshots = + const deque< boost::shared_ptr > &snapshots = _data->get_snapshots(); if (snapshots.empty()) return; _scale = _signalHeight * 1.0f / 65536; - const shared_ptr &snapshot = + const boost::shared_ptr &snapshot = snapshots.front(); if (get_index() >= (int)snapshot->get_channel_num()) @@ -127,7 +127,7 @@ void AnalogSignal::paint(QPainter &p, int y, int left, int right, double scale, } void AnalogSignal::paint_trace(QPainter &p, - const shared_ptr &snapshot, + const boost::shared_ptr &snapshot, int y, int left, const int64_t start, const int64_t end, const double pixels_offset, const double samples_per_pixel) { @@ -159,7 +159,7 @@ void AnalogSignal::paint_trace(QPainter &p, } void AnalogSignal::paint_envelope(QPainter &p, - const shared_ptr &snapshot, + const boost::shared_ptr &snapshot, int y, int left, const int64_t start, const int64_t end, const double pixels_offset, const double samples_per_pixel) { diff --git a/DSLogic-gui/pv/view/dsosignal.cpp b/DSLogic-gui/pv/view/dsosignal.cpp index f44bfd2b..434997a9 100644 --- a/DSLogic-gui/pv/view/dsosignal.cpp +++ b/DSLogic-gui/pv/view/dsosignal.cpp @@ -43,7 +43,7 @@ const QColor DsoSignal::SignalColours[4] = { const float DsoSignal::EnvelopeThreshold = 256.0f; -DsoSignal::DsoSignal(QString name, shared_ptr data, +DsoSignal::DsoSignal(QString name, boost::shared_ptr data, int probe_index, int order) : Signal(name, probe_index, DS_DSO, order), _data(data) @@ -84,13 +84,13 @@ void DsoSignal::paint(QPainter &p, int y, int left, int right, double scale, //paint_axis(p, y, left, right); - const deque< shared_ptr > &snapshots = + const deque< boost::shared_ptr > &snapshots = _data->get_snapshots(); if (snapshots.empty()) return; _scale = _signalHeight * 1.0f / 256; - const shared_ptr &snapshot = + const boost::shared_ptr &snapshot = snapshots.front(); if ((unsigned int)get_index() >= snapshot->get_channel_num()) @@ -120,7 +120,7 @@ void DsoSignal::paint(QPainter &p, int y, int left, int right, double scale, } void DsoSignal::paint_trace(QPainter &p, - const shared_ptr &snapshot, + const boost::shared_ptr &snapshot, int y, int left, const int64_t start, const int64_t end, const double pixels_offset, const double samples_per_pixel) { @@ -151,7 +151,7 @@ void DsoSignal::paint_trace(QPainter &p, } void DsoSignal::paint_envelope(QPainter &p, - const shared_ptr &snapshot, + const boost::shared_ptr &snapshot, int y, int left, const int64_t start, const int64_t end, const double pixels_offset, const double samples_per_pixel) { diff --git a/DSLogic-gui/pv/view/groupsignal.cpp b/DSLogic-gui/pv/view/groupsignal.cpp index 9a162afa..d2e708e0 100644 --- a/DSLogic-gui/pv/view/groupsignal.cpp +++ b/DSLogic-gui/pv/view/groupsignal.cpp @@ -50,7 +50,7 @@ GroupSignal::GroupSignal(QString name, boost::shared_ptr data, _data(data) { _colour = SignalColours[probe_index_list.front() % countof(SignalColours)]; - _scale = _signalHeight * 1.0f / pow(2, probe_index_list.size()); + _scale = _signalHeight * 1.0f / std::pow(2.0, static_cast(probe_index_list.size())); } GroupSignal::~GroupSignal() @@ -83,15 +83,15 @@ void GroupSignal::paint(QPainter &p, int y, int left, int right, double scale, assert(_data); assert(right >= left); - _scale = _signalHeight * 1.0f / pow(2, _index_list.size()); + _scale = _signalHeight * 1.0f / std::pow(2.0, static_cast(_index_list.size())); paint_axis(p, y, left, right); - const deque< shared_ptr > &snapshots = + const deque< boost::shared_ptr > &snapshots = _data->get_snapshots(); if (snapshots.empty()) return; - const shared_ptr &snapshot = + const boost::shared_ptr &snapshot = snapshots.at(_sec_index); const double pixels_offset = offset / scale; @@ -118,7 +118,7 @@ void GroupSignal::paint(QPainter &p, int y, int left, int right, double scale, } void GroupSignal::paint_trace(QPainter &p, - const shared_ptr &snapshot, + const boost::shared_ptr &snapshot, int y, int left, const int64_t start, const int64_t end, const double pixels_offset, const double samples_per_pixel) { @@ -146,7 +146,7 @@ void GroupSignal::paint_trace(QPainter &p, } void GroupSignal::paint_envelope(QPainter &p, - const shared_ptr &snapshot, + const boost::shared_ptr &snapshot, int y, int left, const int64_t start, const int64_t end, const double pixels_offset, const double samples_per_pixel) { diff --git a/DSLogic-gui/pv/view/header.cpp b/DSLogic-gui/pv/view/header.cpp index 2504953e..c7c132a8 100644 --- a/DSLogic-gui/pv/view/header.cpp +++ b/DSLogic-gui/pv/view/header.cpp @@ -95,11 +95,11 @@ boost::shared_ptr Header::get_mouse_over_signal( const QPoint &pt) { const int w = width(); - const vector< shared_ptr > sigs( + const vector< boost::shared_ptr > sigs( _view.session().get_signals()); const int v_offset = _view.v_offset(); - BOOST_FOREACH(const shared_ptr s, sigs) + BOOST_FOREACH(const boost::shared_ptr s, sigs) { assert(s); @@ -108,7 +108,7 @@ boost::shared_ptr Header::get_mouse_over_signal( return s; } - return shared_ptr(); + return boost::shared_ptr(); } void Header::paintEvent(QPaintEvent*) @@ -122,7 +122,7 @@ void Header::paintEvent(QPaintEvent*) const int w = width(); int action; - const vector< shared_ptr > sigs( + const vector< boost::shared_ptr > sigs( _view.session().get_signals()); //QPainter painter(this); @@ -130,7 +130,7 @@ void Header::paintEvent(QPaintEvent*) const int v_offset = _view.v_offset(); const bool dragging = !_drag_sigs.empty(); - BOOST_FOREACH(const shared_ptr s, sigs) + BOOST_FOREACH(const boost::shared_ptr s, sigs) { assert(s); @@ -171,7 +171,7 @@ void Header::mousePressEvent(QMouseEvent *event) { assert(event); - const vector< shared_ptr > sigs( + const vector< boost::shared_ptr > sigs( _view.session().get_signals()); int action; @@ -179,13 +179,13 @@ void Header::mousePressEvent(QMouseEvent *event) _mouse_down_point = event->pos(); // Save the offsets of any signals which will be dragged - BOOST_FOREACH(const shared_ptr s, sigs) + BOOST_FOREACH(const boost::shared_ptr s, sigs) if (s->selected()) _drag_sigs.push_back( make_pair(s, s->get_v_offset())); // Select the signal if it has been clicked - const shared_ptr mouse_over_signal = + const boost::shared_ptr mouse_over_signal = get_mouse_over_signal(action, event->pos()); if (action == COLOR && mouse_over_signal) { _colorFlag = true; @@ -233,7 +233,7 @@ void Header::mousePressEvent(QMouseEvent *event) if (~QApplication::keyboardModifiers() & Qt::ControlModifier) { // Unselect all other signals because the Ctrl is not // pressed - BOOST_FOREACH(const shared_ptr s, sigs) + BOOST_FOREACH(const boost::shared_ptr s, sigs) if (s != mouse_over_signal) s->select(false); } @@ -247,7 +247,7 @@ void Header::mouseReleaseEvent(QMouseEvent *event) // judge for color / name / trigger / move int action; - const shared_ptr mouse_over_signal = + const boost::shared_ptr mouse_over_signal = get_mouse_over_signal(action, event->pos()); if (mouse_over_signal){ if (action == COLOR && _colorFlag) { @@ -275,7 +275,7 @@ void Header::move(QMouseEvent *event) bool _moveValid = false; bool _moveUp = false; bool firstCheck = true; - const vector< shared_ptr > sigs( + const vector< boost::shared_ptr > sigs( _view.session().get_signals()); boost::shared_ptr minDragSig; boost::shared_ptr maxDragSig; @@ -323,7 +323,7 @@ void Header::move(QMouseEvent *event) } if (!_moveValid && firstCheck){ firstCheck = false; - BOOST_FOREACH(const shared_ptr s, sigs) { + BOOST_FOREACH(const boost::shared_ptr s, sigs) { if (_moveUp) { if (s->selected()) { if ((minOffset <= s->get_old_v_offset()) && (minOffset > (s->get_old_v_offset() - _view.get_spanY()))) { @@ -360,7 +360,7 @@ void Header::move(QMouseEvent *event) } } if (_moveValid) { - BOOST_FOREACH(const shared_ptr s, sigs) { + BOOST_FOREACH(const boost::shared_ptr s, sigs) { if (_moveUp) { if (s->selected() && s == minDragSig) { s->set_v_offset(targetOffset); @@ -393,7 +393,7 @@ void Header::move(QMouseEvent *event) if (_moveValid) { signals_moved(); } else { - BOOST_FOREACH(const shared_ptr s, sigs) { + BOOST_FOREACH(const boost::shared_ptr s, sigs) { if (s->selected()) { s->set_v_offset(s->get_old_v_offset()); s->select(false); @@ -470,7 +470,7 @@ void Header::contextMenuEvent(QContextMenuEvent *event) { int action; - const shared_ptr s = get_mouse_over_signal(action, _mouse_point); + const boost::shared_ptr s = get_mouse_over_signal(action, _mouse_point); //if (!s || action != LABEL) if (!s || !s->selected() || action != LABEL) @@ -489,7 +489,7 @@ void Header::contextMenuEvent(QContextMenuEvent *event) void Header::on_action_set_name_triggered() { - shared_ptr context_signal = _context_signal; + boost::shared_ptr context_signal = _context_signal; if (!context_signal) return; diff --git a/DSLogic-gui/pv/view/logicsignal.cpp b/DSLogic-gui/pv/view/logicsignal.cpp index df43a044..f9fae105 100644 --- a/DSLogic-gui/pv/view/logicsignal.cpp +++ b/DSLogic-gui/pv/view/logicsignal.cpp @@ -65,7 +65,7 @@ const QColor LogicSignal::SignalColours[8] = { const int LogicSignal::StateHeight = 12; const int LogicSignal::StateRound = 5; -LogicSignal::LogicSignal(QString name, shared_ptr data, +LogicSignal::LogicSignal(QString name, boost::shared_ptr data, int probe_index, int order) : Signal(name, probe_index, DS_LOGIC, order), _probe_index(probe_index), @@ -112,12 +112,12 @@ void LogicSignal::paint(QPainter &p, int y, int left, int right, const float high_offset = y - _signalHeight + 0.5f; const float low_offset = y + 0.5f; - const deque< shared_ptr > &snapshots = + const deque< boost::shared_ptr > &snapshots = _data->get_snapshots(); if (snapshots.empty()) return; - const shared_ptr &snapshot = + const boost::shared_ptr &snapshot = snapshots.front(); double samplerate = _data->get_samplerate(); diff --git a/DSLogic-gui/pv/view/protocolsignal.cpp b/DSLogic-gui/pv/view/protocolsignal.cpp index b536168f..9ad38309 100644 --- a/DSLogic-gui/pv/view/protocolsignal.cpp +++ b/DSLogic-gui/pv/view/protocolsignal.cpp @@ -41,7 +41,7 @@ namespace view { const int ProtocolSignal::StateHeight = 16; const int ProtocolSignal::StateRound = 3; -ProtocolSignal::ProtocolSignal(QString name, shared_ptr data, +ProtocolSignal::ProtocolSignal(QString name, boost::shared_ptr data, pv::decoder::Decoder *decoder, std::list probe_index_list, int order, int protocol_index) : Signal(name, probe_index_list, DS_PROTOCOL, order, protocol_index), _probe_index_list(probe_index_list), @@ -87,12 +87,12 @@ void ProtocolSignal::paint(QPainter &p, int y, int left, int right, double scale const float middle_offset = y - _signalHeight / 2 + 0.5f; //const float low_offset = y + 0.5f; - const deque< shared_ptr > &snapshots = + const deque< boost::shared_ptr > &snapshots = _data->get_snapshots(); if (snapshots.empty()) return; - const shared_ptr &snapshot = + const boost::shared_ptr &snapshot = snapshots.front(); double samplerate = _data->get_samplerate(); diff --git a/DSLogic-gui/pv/view/ruler.cpp b/DSLogic-gui/pv/view/ruler.cpp index 1441318a..f049beb6 100644 --- a/DSLogic-gui/pv/view/ruler.cpp +++ b/DSLogic-gui/pv/view/ruler.cpp @@ -99,7 +99,7 @@ QString Ruler::format_freq(double period, unsigned precision) assert(order >= FirstSIPrefixPower); const unsigned int prefix = ceil((order - FirstSIPrefixPower) / 3.0f); const double multiplier = pow(10.0, - - prefix * 3 - FirstSIPrefixPower); + static_cast(- prefix * 3 - FirstSIPrefixPower)); QString s; QTextStream ts(&s); @@ -114,7 +114,7 @@ QString Ruler::format_time(double t, unsigned int prefix, unsigned int precision) { const double multiplier = pow(10.0, - - prefix * 3 - FirstSIPrefixPower); + static_cast(- prefix * 3 - FirstSIPrefixPower)); QString s; QTextStream ts(&s); @@ -318,7 +318,7 @@ void Ruler::draw_tick_mark(QPainter &p) //const int order = (int)floorf(log10f(_min_period)); const int order = ceil(log10f(_min_period)); - const double order_decimal = pow(10, order); + const double order_decimal = pow(10.0, static_cast(order)); unsigned int unit = 0; diff --git a/DSLogic-gui/pv/view/view.cpp b/DSLogic-gui/pv/view/view.cpp index 7d9d8bd3..fbd626da 100644 --- a/DSLogic-gui/pv/view/view.cpp +++ b/DSLogic-gui/pv/view/view.cpp @@ -27,6 +27,7 @@ #include +#include #include #include #include @@ -297,14 +298,14 @@ const QPointF& View::hover_point() const void View::normalize_layout() { - const vector< shared_ptr > sigs(_session.get_signals()); + const vector< boost::shared_ptr > sigs(_session.get_signals()); int v_min = INT_MAX; - BOOST_FOREACH(const shared_ptr s, sigs) + BOOST_FOREACH(const boost::shared_ptr s, sigs) v_min = min(s->get_v_offset(), v_min); const int delta = -min(v_min, 0); - BOOST_FOREACH(shared_ptr s, sigs) + BOOST_FOREACH(boost::shared_ptr s, sigs) s->set_v_offset(s->get_v_offset() + delta); verticalScrollBar()->setSliderPosition(_v_offset + delta); @@ -324,7 +325,7 @@ int View::get_signalHeight() void View::get_scroll_layout(double &length, double &offset) const { - const shared_ptr sig_data = _session.get_data(); + const boost::shared_ptr sig_data = _session.get_data(); if (!sig_data) return; @@ -376,8 +377,8 @@ void View::reset_signal_layout() int offset = SignalMargin + SignalHeight; _spanY = SignalHeight + 2 * SignalMargin; - const vector< shared_ptr > sigs(_session.get_signals()); - BOOST_FOREACH(shared_ptr s, sigs) { + const vector< boost::shared_ptr > sigs(_session.get_signals()); + BOOST_FOREACH(boost::shared_ptr s, sigs) { s->set_signalHeight(SignalHeight); //s->set_v_offset(offset); //offset += SignalHeight + 2 * SignalMargin; @@ -438,10 +439,15 @@ int View::headerWidth() int maxNameWidth = 0; int maxLeftWidth = 0; int maxRightWidth = 0; + + QFont font = QApplication::font(); + QFontMetrics fm(font); + int fontWidth=fm.width("A"); + const vector< shared_ptr > sigs(_session.get_signals()); if (!sigs.empty()){ BOOST_FOREACH(const shared_ptr s, sigs) { - maxNameWidth = max(s->get_name().length() * 6, maxNameWidth); + maxNameWidth = max(s->get_name().length() * fontWidth, maxNameWidth); maxLeftWidth = max(s->get_leftWidth(), maxLeftWidth); maxRightWidth = max(s->get_rightWidth(), maxRightWidth); } diff --git a/DSLogic-gui/pv/view/viewport.cpp b/DSLogic-gui/pv/view/viewport.cpp index beacd88a..4e58bec0 100644 --- a/DSLogic-gui/pv/view/viewport.cpp +++ b/DSLogic-gui/pv/view/viewport.cpp @@ -79,9 +79,9 @@ Viewport::Viewport(View &parent) : int Viewport::get_total_height() const { int h = 0; - const vector< shared_ptr > sigs( + const vector< boost::shared_ptr > sigs( _view.session().get_signals()); - BOOST_FOREACH(const shared_ptr s, sigs) { + BOOST_FOREACH(const boost::shared_ptr s, sigs) { assert(s); //h = max(s->get_v_offset() + _view.get_signalHeight(), h); h = max(s->get_v_offset(), h); @@ -125,10 +125,10 @@ void Viewport::paintEvent(QPaintEvent *event) p.setRenderHint(QPainter::Antialiasing, false); if (_view.get_signalHeight() != _curSignalHeight) _curSignalHeight = _view.get_signalHeight(); - const vector< shared_ptr > sigs( + const vector< boost::shared_ptr > sigs( _view.session().get_signals()); - BOOST_FOREACH(const shared_ptr s, sigs) { + BOOST_FOREACH(const boost::shared_ptr s, sigs) { assert(s); //paint_axis(p, y, left, right); p.setPen(Signal::dsGray); @@ -189,9 +189,9 @@ void Viewport::paintEvent(QPaintEvent *event) void Viewport::paintSignals(QPainter &p) { - const vector< shared_ptr > sigs( + const vector< boost::shared_ptr > sigs( _view.session().get_signals()); -// const vector< shared_ptr > pro_sigs( +// const vector< boost::shared_ptr > pro_sigs( // _view.session().get_pro_signals()); // Plot the signal const int v_offset = _view.v_offset(); @@ -208,13 +208,13 @@ void Viewport::paintSignals(QPainter &p) QPainter dbp(&pixmap); dbp.initFrom(this); p.setRenderHint(QPainter::Antialiasing, false); - BOOST_FOREACH(const shared_ptr s, sigs) { + BOOST_FOREACH(const boost::shared_ptr s, sigs) { assert(s); s->paint(dbp, s->get_v_offset() - v_offset, 0, width(), _view.scale(), _view.offset()); } // p.setRenderHint(QPainter::Antialiasing); -// BOOST_FOREACH(const shared_ptr s, pro_sigs) { +// BOOST_FOREACH(const boost::shared_ptr s, pro_sigs) { // assert(s); // s->paint(dbp, s->get_v_offset() - v_offset, 0, width(), // _view.scale(), _view.offset()); @@ -498,8 +498,8 @@ void Viewport::set_receive_len(quint64 length) void Viewport::measure() { - const vector< shared_ptr > sigs(_view.session().get_signals()); - BOOST_FOREACH(const shared_ptr s, sigs) { + const vector< boost::shared_ptr > sigs(_view.session().get_signals()); + BOOST_FOREACH(const boost::shared_ptr s, sigs) { assert(s); const int curY = _view.hover_point().y(); const double curX = _view.hover_point().x(); diff --git a/DSLogic-gui/res/DSLogic.bin b/DSLogic-gui/res/DSLogic.bin index abdc01f754cc0be6f1efdaddb9ab5c5f658e870a..55265376ba917800fb5fb5e7696f106ea68519c1 100644 GIT binary patch literal 340604 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 literal 340604 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

8LkP{F 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 SNpUtD7nesLr1ZOGq~agc+%*{h diff --git a/DSLogic-gui/stylesheet.qss b/DSLogic-gui/stylesheet.qss index 58d866dd..9a076bef 100644 --- a/DSLogic-gui/stylesheet.qss +++ b/DSLogic-gui/stylesheet.qss @@ -99,7 +99,7 @@ QComboBox:on { /* shift the text when the popup opens */ QComboBox::drop-down { subcontrol-origin: padding; subcontrol-position: top right; - width: 15px; + width: 20px; border-left-width: 0px; border-top-right-radius: 4px; /* same radius as the QComboBox */ diff --git a/NEWS b/NEWS index e95c8b43..d99df220 100644 --- a/NEWS +++ b/NEWS @@ -8,3 +8,11 @@ ------------------ * Add DSLogic hardware support. +0.2.1 (2014-05-08) +------------------ + + * Add wireless extension hardware support. + * Fix libusb_error_io issue on Linux when sample rate >= 100MHz. + * Fix channel enable/disable bug. + * Fix device options config issue. + * Fix some display issues of UI. \ No newline at end of file diff --git a/libsigrok4DSLogic/Makefile.in b/libsigrok4DSLogic/Makefile.in index 4a3ef9cc..3367111d 100644 --- a/libsigrok4DSLogic/Makefile.in +++ b/libsigrok4DSLogic/Makefile.in @@ -1,4 +1,4 @@ -# Makefile.in generated by automake 1.11.3 from Makefile.am. +# Makefile.in generated by automake 1.11.6 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, @@ -18,6 +18,23 @@ VPATH = @srcdir@ +am__make_dryrun = \ + { \ + am__dry=no; \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ + | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ + *) \ + for am__flg in $$MAKEFLAGS; do \ + case $$am__flg in \ + *=*|--*) ;; \ + *n*) am__dry=yes; break;; \ + esac; \ + done;; \ + esac; \ + test $$am__dry = yes; \ + } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -134,6 +151,11 @@ RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ install-pdf-recursive install-ps-recursive install-recursive \ installcheck-recursive installdirs-recursive pdf-recursive \ ps-recursive uninstall-recursive +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac DATA = $(pkgconfig_DATA) HEADERS = $(library_include_HEADERS) $(noinst_HEADERS) RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ @@ -421,7 +443,6 @@ libsigrok4DSLogic.pc: $(top_builddir)/config.status $(srcdir)/libsigrok4DSLogic. cd $(top_builddir) && $(SHELL) ./config.status $@ install-libLTLIBRARIES: $(lib_LTLIBRARIES) @$(NORMAL_INSTALL) - test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)" @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ list2=; for p in $$list; do \ if test -f $$p; then \ @@ -429,6 +450,8 @@ install-libLTLIBRARIES: $(lib_LTLIBRARIES) else :; fi; \ done; \ test -z "$$list2" || { \ + echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \ } @@ -504,8 +527,11 @@ distclean-libtool: -rm -f libtool config.lt install-pkgconfigDATA: $(pkgconfig_DATA) @$(NORMAL_INSTALL) - test -z "$(pkgconfigdir)" || $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)" @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgconfigdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)" || exit 1; \ + fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ @@ -522,8 +548,11 @@ uninstall-pkgconfigDATA: dir='$(DESTDIR)$(pkgconfigdir)'; $(am__uninstall_files_from_dir) install-library_includeHEADERS: $(library_include_HEADERS) @$(NORMAL_INSTALL) - test -z "$(library_includedir)" || $(MKDIR_P) "$(DESTDIR)$(library_includedir)" @list='$(library_include_HEADERS)'; test -n "$(library_includedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(library_includedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(library_includedir)" || exit 1; \ + fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ @@ -714,13 +743,10 @@ distdir: $(DISTFILES) done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ - test -d "$(distdir)/$$subdir" \ - || $(MKDIR_P) "$(distdir)/$$subdir" \ - || exit 1; \ - fi; \ - done - @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ + $(am__make_dryrun) \ + || test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ @@ -809,7 +835,7 @@ distcheck: dist *.zip*) \ unzip $(distdir).zip ;;\ esac - chmod -R a-w $(distdir); chmod a+w $(distdir) + chmod -R a-w $(distdir); chmod u+w $(distdir) mkdir $(distdir)/_build mkdir $(distdir)/_inst chmod a-w $(distdir) diff --git a/libsigrok4DSLogic/aclocal.m4 b/libsigrok4DSLogic/aclocal.m4 index 45fb2ea7..b0859b53 100644 --- a/libsigrok4DSLogic/aclocal.m4 +++ b/libsigrok4DSLogic/aclocal.m4 @@ -1,4 +1,4 @@ -# generated automatically by aclocal 1.11.3 -*- Autoconf -*- +# generated automatically by aclocal 1.11.6 -*- Autoconf -*- # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, # 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, @@ -14,8 +14,8 @@ m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl -m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.68],, -[m4_warning([this file was generated for autoconf 2.68. +m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],, +[m4_warning([this file was generated for autoconf 2.69. You have another version of autoconf. It may work, but is not guaranteed to. If you have problems, you may need to regenerate the build system entirely. To do so, use the procedure documented by the package, typically `autoreconf'.])]) @@ -1553,7 +1553,14 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) LD="${LD-ld} -m elf_i386_fbsd" ;; x86_64-*linux*) - LD="${LD-ld} -m elf_i386" + case `/usr/bin/file conftest.o` in + *x86-64*) + LD="${LD-ld} -m elf32_x86_64" + ;; + *) + LD="${LD-ld} -m elf_i386" + ;; + esac ;; ppc64-*linux*|powerpc64-*linux*) LD="${LD-ld} -m elf32ppclinux" @@ -1917,7 +1924,8 @@ AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl ;; *) lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` - if test -n "$lt_cv_sys_max_cmd_len"; then + if test -n "$lt_cv_sys_max_cmd_len" && \ + test undefined != "$lt_cv_sys_max_cmd_len"; then lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` else @@ -2741,17 +2749,6 @@ freebsd* | dragonfly*) esac ;; -gnu*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - haiku*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no @@ -2868,7 +2865,7 @@ linux*oldld* | linux*aout* | linux*coff*) ;; # This must be glibc/ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu) +linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no @@ -3484,10 +3481,6 @@ freebsd* | dragonfly*) fi ;; -gnu*) - lt_cv_deplibs_check_method=pass_all - ;; - haiku*) lt_cv_deplibs_check_method=pass_all ;; @@ -3526,7 +3519,7 @@ irix5* | irix6* | nonstopux*) ;; # This must be glibc/ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu) +linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) lt_cv_deplibs_check_method=pass_all ;; @@ -4278,7 +4271,7 @@ m4_if([$1], [CXX], [ ;; esac ;; - linux* | k*bsd*-gnu | kopensolaris*-gnu) + linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in KCC*) # KAI C++ Compiler @@ -4577,7 +4570,7 @@ m4_if([$1], [CXX], [ _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; - linux* | k*bsd*-gnu | kopensolaris*-gnu) + linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in # old Intel for x86_64 which still supported -KPIC. ecc*) @@ -6466,9 +6459,6 @@ if test "$_lt_caught_CXX_error" != yes; then _LT_TAGVAR(ld_shlibs, $1)=yes ;; - gnu*) - ;; - haiku*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(link_all_deplibs, $1)=yes @@ -6630,7 +6620,7 @@ if test "$_lt_caught_CXX_error" != yes; then _LT_TAGVAR(inherit_rpath, $1)=yes ;; - linux* | k*bsd*-gnu | kopensolaris*-gnu) + linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler @@ -9019,7 +9009,7 @@ AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version='1.11' dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to dnl require some minimum version. Point them to the right macro. -m4_if([$1], [1.11.3], [], +m4_if([$1], [1.11.6], [], [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl ]) @@ -9035,7 +9025,7 @@ m4_define([_AM_AUTOCONF_VERSION], []) # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. # This function is AC_REQUIREd by AM_INIT_AUTOMAKE. AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], -[AM_AUTOMAKE_VERSION([1.11.3])dnl +[AM_AUTOMAKE_VERSION([1.11.6])dnl m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) diff --git a/libsigrok4DSLogic/configure b/libsigrok4DSLogic/configure index b6517ad2..9f545086 100644 --- a/libsigrok4DSLogic/configure +++ b/libsigrok4DSLogic/configure @@ -1,13 +1,11 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.68 for libsigrok4DSLogic 0.2.0. +# Generated by GNU Autoconf 2.69 for libsigrok4DSLogic 0.2.0. # # Report bugs to . # # -# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, -# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software -# Foundation, Inc. +# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. # # # This configure script is free software; the Free Software Foundation @@ -136,6 +134,31 @@ export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH +# Use a proper internal environment variable to ensure we don't fall + # into an infinite loop, continuously re-executing ourselves. + if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then + _as_can_reexec=no; export _as_can_reexec; + # We cannot yet assume a decent shell, so we have to provide a +# neutralization value for shells without unset; and this also +# works around shells that cannot unset nonexistent variables. +# Preserve -v and -x to the replacement shell. +BASH_ENV=/dev/null +ENV=/dev/null +(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV +case $- in # (((( + *v*x* | *x*v* ) as_opts=-vx ;; + *v* ) as_opts=-v ;; + *x* ) as_opts=-x ;; + * ) as_opts= ;; +esac +exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} +# Admittedly, this is quite paranoid, since all the known shells bail +# out after a failed `exec'. +$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 +as_fn_exit 255 + fi + # We don't want this to propagate to other subprocesses. + { _as_can_reexec=; unset _as_can_reexec;} if test "x$CONFIG_SHELL" = x; then as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : emulate sh @@ -169,7 +192,8 @@ if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : else exitcode=1; echo positional parameters were not saved. fi -test x\$exitcode = x0 || exit 1" +test x\$exitcode = x0 || exit 1 +test -x / || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && @@ -222,21 +246,25 @@ IFS=$as_save_IFS if test "x$CONFIG_SHELL" != x; then : - # We cannot yet assume a decent shell, so we have to provide a - # neutralization value for shells without unset; and this also - # works around shells that cannot unset nonexistent variables. - # Preserve -v and -x to the replacement shell. - BASH_ENV=/dev/null - ENV=/dev/null - (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV - export CONFIG_SHELL - case $- in # (((( - *v*x* | *x*v* ) as_opts=-vx ;; - *v* ) as_opts=-v ;; - *x* ) as_opts=-x ;; - * ) as_opts= ;; - esac - exec "$CONFIG_SHELL" $as_opts "$as_myself" ${1+"$@"} + export CONFIG_SHELL + # We cannot yet assume a decent shell, so we have to provide a +# neutralization value for shells without unset; and this also +# works around shells that cannot unset nonexistent variables. +# Preserve -v and -x to the replacement shell. +BASH_ENV=/dev/null +ENV=/dev/null +(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV +case $- in # (((( + *v*x* | *x*v* ) as_opts=-vx ;; + *v* ) as_opts=-v ;; + *x* ) as_opts=-x ;; + * ) as_opts= ;; +esac +exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} +# Admittedly, this is quite paranoid, since all the known shells bail +# out after a failed `exec'. +$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 +exit 255 fi if test x$as_have_required = xno; then : @@ -339,6 +367,14 @@ $as_echo X"$as_dir" | } # as_fn_mkdir_p + +# as_fn_executable_p FILE +# ----------------------- +# Test if FILE is an executable regular file. +as_fn_executable_p () +{ + test -f "$1" && test -x "$1" +} # as_fn_executable_p # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take @@ -460,6 +496,10 @@ as_cr_alnum=$as_cr_Letters$as_cr_digits chmod +x "$as_me.lineno" || { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } + # If we had to re-execute with $CONFIG_SHELL, we're ensured to have + # already done that, so ensure we don't try to do so again and fall + # in an infinite loop. This has already happened in practice. + _as_can_reexec=no; export _as_can_reexec # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). @@ -494,16 +534,16 @@ if (echo >conf$$.file) 2>/dev/null; then # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. - # In both cases, we have to default to `cp -p'. + # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || - as_ln_s='cp -p' + as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else - as_ln_s='cp -p' + as_ln_s='cp -pR' fi else - as_ln_s='cp -p' + as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null @@ -515,28 +555,8 @@ else as_mkdir_p=false fi -if test -x / >/dev/null 2>&1; then - as_test_x='test -x' -else - if ls -dL / >/dev/null 2>&1; then - as_ls_L_option=L - else - as_ls_L_option= - fi - as_test_x=' - eval sh -c '\'' - if test -d "$1"; then - test -d "$1/."; - else - case $1 in #( - -*)set "./$1";; - esac; - case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #(( - ???[sx]*):;;*)false;;esac;fi - '\'' sh - ' -fi -as_executable_p=$as_test_x +as_test_x='test -x' +as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" @@ -1257,8 +1277,6 @@ target=$target_alias if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe - $as_echo "$as_me: WARNING: if you wanted to set the --build type, don't use --host. - If a cross compiler is detected then cross compile mode will be used" >&2 elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi @@ -1542,9 +1560,9 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF libsigrok4DSLogic configure 0.2.0 -generated by GNU Autoconf 2.68 +generated by GNU Autoconf 2.69 -Copyright (C) 2010 Free Software Foundation, Inc. +Copyright (C) 2012 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF @@ -1657,7 +1675,7 @@ $as_echo "$ac_try_echo"; } >&5 test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext + test -x conftest$ac_exeext }; then : ac_retval=0 else @@ -1932,7 +1950,8 @@ int main () { static int test_array [1 - 2 * !(0 < ($ac_type) ((((($ac_type) 1 << N) << N) - 1) * 2 + 1))]; -test_array [0] = 0 +test_array [0] = 0; +return test_array [0]; ; return 0; @@ -1948,7 +1967,8 @@ main () { static int test_array [1 - 2 * !(($ac_type) ((((($ac_type) 1 << N) << N) - 1) * 2 + 1) < ($ac_type) ((((($ac_type) 1 << N) << N) - 1) * 2 + 2))]; -test_array [0] = 0 +test_array [0] = 0; +return test_array [0]; ; return 0; @@ -2005,7 +2025,8 @@ int main () { static int test_array [1 - 2 * !((($ac_type) -1 >> ($2 / 2 - 1)) >> ($2 / 2 - 1) == 3)]; -test_array [0] = 0 +test_array [0] = 0; +return test_array [0]; ; return 0; @@ -2092,7 +2113,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by libsigrok4DSLogic $as_me 0.2.0, which was -generated by GNU Autoconf 2.68. Invocation command line was +generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -2512,7 +2533,7 @@ case $as_dir/ in #(( # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then + if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. @@ -2681,7 +2702,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -2721,7 +2742,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -2772,7 +2793,7 @@ do test -z "$as_dir" && as_dir=. for ac_prog in mkdir gmkdir; do for ac_exec_ext in '' $ac_executable_extensions; do - { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; } || continue + as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( 'mkdir (GNU coreutils) '* | \ 'mkdir (coreutils) '* | \ @@ -2825,7 +2846,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AWK="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -3075,7 +3096,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -3115,7 +3136,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -3168,7 +3189,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -3209,7 +3230,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue @@ -3267,7 +3288,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -3311,7 +3332,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -3757,8 +3778,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include -#include -#include +struct stat; /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); @@ -3991,7 +4011,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AR="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -4035,7 +4055,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_AR="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -4163,7 +4183,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -4203,7 +4223,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -4256,7 +4276,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -4297,7 +4317,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue @@ -4355,7 +4375,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -4399,7 +4419,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -4595,8 +4615,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include -#include -#include +struct stat; /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); @@ -5275,7 +5294,7 @@ do for ac_prog in sed gsed; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" - { test -f "$ac_path_SED" && $as_test_x "$ac_path_SED"; } || continue + as_fn_executable_p "$ac_path_SED" || continue # Check for GNU ac_path_SED and select it if it is found. # Check for GNU $ac_path_SED case `"$ac_path_SED" --version 2>&1` in @@ -5351,7 +5370,7 @@ do for ac_prog in grep ggrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" - { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue + as_fn_executable_p "$ac_path_GREP" || continue # Check for GNU ac_path_GREP and select it if it is found. # Check for GNU $ac_path_GREP case `"$ac_path_GREP" --version 2>&1` in @@ -5417,7 +5436,7 @@ do for ac_prog in egrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" - { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue + as_fn_executable_p "$ac_path_EGREP" || continue # Check for GNU ac_path_EGREP and select it if it is found. # Check for GNU $ac_path_EGREP case `"$ac_path_EGREP" --version 2>&1` in @@ -5484,7 +5503,7 @@ do for ac_prog in fgrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext" - { test -f "$ac_path_FGREP" && $as_test_x "$ac_path_FGREP"; } || continue + as_fn_executable_p "$ac_path_FGREP" || continue # Check for GNU ac_path_FGREP and select it if it is found. # Check for GNU $ac_path_FGREP case `"$ac_path_FGREP" --version 2>&1` in @@ -5740,7 +5759,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -5784,7 +5803,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DUMPBIN="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -5962,7 +5981,8 @@ else ;; *) lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` - if test -n "$lt_cv_sys_max_cmd_len"; then + if test -n "$lt_cv_sys_max_cmd_len" && \ + test undefined != "$lt_cv_sys_max_cmd_len"; then lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` else @@ -6197,7 +6217,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -6237,7 +6257,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OBJDUMP="objdump" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -6363,10 +6383,6 @@ freebsd* | dragonfly*) fi ;; -gnu*) - lt_cv_deplibs_check_method=pass_all - ;; - haiku*) lt_cv_deplibs_check_method=pass_all ;; @@ -6405,7 +6421,7 @@ irix5* | irix6* | nonstopux*) ;; # This must be glibc/ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu) +linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) lt_cv_deplibs_check_method=pass_all ;; @@ -6543,7 +6559,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -6583,7 +6599,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DLLTOOL="dlltool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -6686,7 +6702,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AR="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -6730,7 +6746,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_AR="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -6855,7 +6871,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -6895,7 +6911,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -6954,7 +6970,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -6994,7 +7010,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_RANLIB="ranlib" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -7502,7 +7518,14 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) LD="${LD-ld} -m elf_i386_fbsd" ;; x86_64-*linux*) - LD="${LD-ld} -m elf_i386" + case `/usr/bin/file conftest.o` in + *x86-64*) + LD="${LD-ld} -m elf32_x86_64" + ;; + *) + LD="${LD-ld} -m elf_i386" + ;; + esac ;; ppc64-*linux*|powerpc64-*linux*) LD="${LD-ld} -m elf32ppclinux" @@ -7643,7 +7666,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -7683,7 +7706,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_MANIFEST_TOOL="mt" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -7763,7 +7786,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -7803,7 +7826,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -7855,7 +7878,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -7895,7 +7918,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_NMEDIT="nmedit" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -7947,7 +7970,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_LIPO="${ac_tool_prefix}lipo" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -7987,7 +8010,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_LIPO="lipo" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -8039,7 +8062,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_OTOOL="${ac_tool_prefix}otool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -8079,7 +8102,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OTOOL="otool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -8131,7 +8154,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -8171,7 +8194,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OTOOL64="otool64" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -9190,7 +9213,7 @@ lt_prog_compiler_static= lt_prog_compiler_static='-non_shared' ;; - linux* | k*bsd*-gnu | kopensolaris*-gnu) + linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in # old Intel for x86_64 which still supported -KPIC. ecc*) @@ -11360,17 +11383,6 @@ freebsd* | dragonfly*) esac ;; -gnu*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - haiku*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no @@ -11487,7 +11499,7 @@ linux*oldld* | linux*aout* | linux*coff*) ;; # This must be glibc/ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu) +linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no @@ -12563,7 +12575,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -12606,7 +12618,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -12825,7 +12837,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -12868,7 +12880,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -14406,16 +14418,16 @@ if (echo >conf$$.file) 2>/dev/null; then # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. - # In both cases, we have to default to `cp -p'. + # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || - as_ln_s='cp -p' + as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else - as_ln_s='cp -p' + as_ln_s='cp -pR' fi else - as_ln_s='cp -p' + as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null @@ -14475,28 +14487,16 @@ else as_mkdir_p=false fi -if test -x / >/dev/null 2>&1; then - as_test_x='test -x' -else - if ls -dL / >/dev/null 2>&1; then - as_ls_L_option=L - else - as_ls_L_option= - fi - as_test_x=' - eval sh -c '\'' - if test -d "$1"; then - test -d "$1/."; - else - case $1 in #( - -*)set "./$1";; - esac; - case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #(( - ???[sx]*):;;*)false;;esac;fi - '\'' sh - ' -fi -as_executable_p=$as_test_x + +# as_fn_executable_p FILE +# ----------------------- +# Test if FILE is an executable regular file. +as_fn_executable_p () +{ + test -f "$1" && test -x "$1" +} # as_fn_executable_p +as_test_x='test -x' +as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" @@ -14518,7 +14518,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # values after options handling. ac_log=" This file was extended by libsigrok4DSLogic $as_me 0.2.0, which was -generated by GNU Autoconf 2.68. Invocation command line was +generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS @@ -14585,10 +14585,10 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ libsigrok4DSLogic config.status 0.2.0 -configured by $0, generated by GNU Autoconf 2.68, +configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" -Copyright (C) 2010 Free Software Foundation, Inc. +Copyright (C) 2012 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." @@ -14679,7 +14679,7 @@ fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then - set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion + set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' diff --git a/libsigrok4DSLogic/hardware/DSLogic/Makefile.in b/libsigrok4DSLogic/hardware/DSLogic/Makefile.in index a67d23ca..54ae4dc9 100644 --- a/libsigrok4DSLogic/hardware/DSLogic/Makefile.in +++ b/libsigrok4DSLogic/hardware/DSLogic/Makefile.in @@ -1,4 +1,4 @@ -# Makefile.in generated by automake 1.11.3 from Makefile.am. +# Makefile.in generated by automake 1.11.6 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, @@ -16,6 +16,23 @@ @SET_MAKE@ VPATH = @srcdir@ +am__make_dryrun = \ + { \ + am__dry=no; \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ + | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ + *) \ + for am__flg in $$MAKEFLAGS; do \ + case $$am__flg in \ + *=*|--*) ;; \ + *n*) am__dry=yes; break;; \ + esac; \ + done;; \ + esac; \ + test $$am__dry = yes; \ + } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -86,6 +103,11 @@ am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(libsigrok4DSLogic_hw_dslogic_la_SOURCES) DIST_SOURCES = $(libsigrok4DSLogic_hw_dslogic_la_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) diff --git a/libsigrok4DSLogic/hardware/DSLogic/dslogic.c b/libsigrok4DSLogic/hardware/DSLogic/dslogic.c index f4425527..1c6ffa6f 100644 --- a/libsigrok4DSLogic/hardware/DSLogic/dslogic.c +++ b/libsigrok4DSLogic/hardware/DSLogic/dslogic.c @@ -23,6 +23,7 @@ #include #include #include +#include #include #include @@ -36,7 +37,7 @@ #define min(a,b) ((a)<(b)?(a):(b)) #endif -static const int cons_buffer_size = 128; +static const int cons_buffer_size = 1024 * 16; static const int dso_buffer_size = 1024 * 16; static const int32_t hwopts[] = { @@ -262,7 +263,7 @@ static int fpga_setting(const struct sr_dev_inst *sdi) } if (result == SR_OK) - sr_info("FPGA setting done. trigger_mode = %d; trigger_stages = %d; trigger_mask0 = %d; trigger_value0 = %d; trigger_edge0 = %d", trigger->trigger_mode, trigger->trigger_stages, setting.trig_mask0[0], setting.trig_value0[0], setting.trig_edge0[0]); + sr_info("FPGA setting done"); return result; } @@ -451,7 +452,7 @@ static int configure_probes(const struct sr_dev_inst *sdi) continue; if ((probe->index > 7 && probe->type == SR_PROBE_LOGIC) || - (probe->index > 0 && (probe->type == SR_PROBE_ANALOG || probe->type == SR_PROBE_DSO))) + (probe->type == SR_PROBE_ANALOG || probe->type == SR_PROBE_DSO)) devc->sample_wide = TRUE; else devc->sample_wide = FALSE; @@ -527,6 +528,32 @@ static int set_probes(struct sr_dev_inst *sdi, int num_probes) return SR_OK; } +static int adjust_probes(struct sr_dev_inst *sdi, int num_probes) +{ + int j; + GSList *l; + struct sr_probe *probe; + GSList *p; + + assert(num_probes > 0); + + j = g_slist_length(sdi->probes); + while(j < num_probes) { + if (!(probe = sr_probe_new(j, (sdi->mode == LOGIC) ? SR_PROBE_LOGIC : ((sdi->mode == DSO) ? SR_PROBE_DSO : SR_PROBE_ANALOG), + TRUE, probe_names[j]))) + return SR_ERR; + sdi->probes = g_slist_append(sdi->probes, probe); + j++; + } + + while(j > num_probes) { + g_slist_delete_link(sdi->probes, g_slist_last(sdi->probes)); + j--; + } + + return SR_OK; +} + static GSList *scan(GSList *options) { struct drv_context *drvc; @@ -829,11 +856,9 @@ static int config_set(int id, GVariant *data, struct sr_dev_inst *sdi) devc->cur_samplerate = g_variant_get_uint64(data); if (sdi->mode == LOGIC) { if (devc->cur_samplerate >= SR_MHZ(200)) { - sr_dev_probes_free(sdi); - set_probes(sdi, SR_MHZ(1600)/devc->cur_samplerate); + adjust_probes(sdi, SR_MHZ(1600)/devc->cur_samplerate); } else { - sr_dev_probes_free(sdi); - set_probes(sdi, 16); + adjust_probes(sdi, 16); } } ret = SR_OK; @@ -1245,7 +1270,10 @@ static void receive_transfer(struct libusb_transfer *transfer) static unsigned int to_bytes_per_ms(struct dev_context *devc) { - return devc->cur_samplerate / 1000 * (devc->sample_wide ? 2 : 1); + if (devc->cur_samplerate > SR_MHZ(100)) + return SR_MHZ(100) / 1000 * (devc->sample_wide ? 2 : 1); + else + return devc->cur_samplerate / 1000 * (devc->sample_wide ? 2 : 1); } static size_t get_buffer_size(struct dev_context *devc) @@ -1253,17 +1281,17 @@ static size_t get_buffer_size(struct dev_context *devc) size_t s; /* - * The buffer should be large enough to hold 10ms of data and + * The buffer should be large enough to hold 20ms of data and * a multiple of 512. */ - s = 10 * to_bytes_per_ms(devc); + s = 20 * to_bytes_per_ms(devc); return (s + 511) & ~511; } static unsigned int get_number_of_transfers(struct dev_context *devc) { unsigned int n; - /* Total buffer size should be able to hold about 500ms of data. */ + /* Total buffer size should be able to hold about 100ms of data. */ n = 100 * to_bytes_per_ms(devc) / get_buffer_size(devc); if (n > NUM_SIMUL_TRANSFERS) @@ -1416,7 +1444,7 @@ static void receive_trigger_pos(struct libusb_transfer *transfer) if (devc->status == DSLOGIC_TRIGGERED) { if ((ret = dev_transfer_start(devc->cb_data)) != SR_OK) { sr_err("%s: could not start data transfer" - "(%d)", __func__, ret); + "(%d)%d", __func__, ret, errno); } } } diff --git a/libsigrok4DSLogic/hardware/Makefile.in b/libsigrok4DSLogic/hardware/Makefile.in index 4100aa45..a44634e8 100644 --- a/libsigrok4DSLogic/hardware/Makefile.in +++ b/libsigrok4DSLogic/hardware/Makefile.in @@ -1,4 +1,4 @@ -# Makefile.in generated by automake 1.11.3 from Makefile.am. +# Makefile.in generated by automake 1.11.6 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, @@ -16,6 +16,23 @@ @SET_MAKE@ VPATH = @srcdir@ +am__make_dryrun = \ + { \ + am__dry=no; \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ + | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ + *) \ + for am__flg in $$MAKEFLAGS; do \ + case $$am__flg in \ + *=*|--*) ;; \ + *n*) am__dry=yes; break;; \ + esac; \ + done;; \ + esac; \ + test $$am__dry = yes; \ + } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -87,6 +104,11 @@ RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ install-pdf-recursive install-ps-recursive install-recursive \ installcheck-recursive installdirs-recursive pdf-recursive \ ps-recursive uninstall-recursive +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ @@ -499,13 +521,10 @@ distdir: $(DISTFILES) done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ - test -d "$(distdir)/$$subdir" \ - || $(MKDIR_P) "$(distdir)/$$subdir" \ - || exit 1; \ - fi; \ - done - @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ + $(am__make_dryrun) \ + || test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ diff --git a/libsigrok4DSLogic/hardware/common/Makefile.in b/libsigrok4DSLogic/hardware/common/Makefile.in index 0a8f1fad..346cd4f4 100644 --- a/libsigrok4DSLogic/hardware/common/Makefile.in +++ b/libsigrok4DSLogic/hardware/common/Makefile.in @@ -1,4 +1,4 @@ -# Makefile.in generated by automake 1.11.3 from Makefile.am. +# Makefile.in generated by automake 1.11.6 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, @@ -16,6 +16,23 @@ @SET_MAKE@ VPATH = @srcdir@ +am__make_dryrun = \ + { \ + am__dry=no; \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ + | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ + *) \ + for am__flg in $$MAKEFLAGS; do \ + case $$am__flg in \ + *=*|--*) ;; \ + *n*) am__dry=yes; break;; \ + esac; \ + done;; \ + esac; \ + test $$am__dry = yes; \ + } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -86,6 +103,11 @@ am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(libsigrok4DSLogic_hw_common_la_SOURCES) DIST_SOURCES = $(libsigrok4DSLogic_hw_common_la_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) diff --git a/libsigrok4DSLogic/hardware/demo/Makefile.in b/libsigrok4DSLogic/hardware/demo/Makefile.in index 3e8a139e..c6946b19 100644 --- a/libsigrok4DSLogic/hardware/demo/Makefile.in +++ b/libsigrok4DSLogic/hardware/demo/Makefile.in @@ -1,4 +1,4 @@ -# Makefile.in generated by automake 1.11.3 from Makefile.am. +# Makefile.in generated by automake 1.11.6 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, @@ -16,6 +16,23 @@ @SET_MAKE@ VPATH = @srcdir@ +am__make_dryrun = \ + { \ + am__dry=no; \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ + | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ + *) \ + for am__flg in $$MAKEFLAGS; do \ + case $$am__flg in \ + *=*|--*) ;; \ + *n*) am__dry=yes; break;; \ + esac; \ + done;; \ + esac; \ + test $$am__dry = yes; \ + } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -87,6 +104,11 @@ am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(libsigrok4DSLogic_hw_demo_la_SOURCES) DIST_SOURCES = $(am__libsigrok4DSLogic_hw_demo_la_SOURCES_DIST) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) diff --git a/libsigrok4DSLogic/input/Makefile.in b/libsigrok4DSLogic/input/Makefile.in index 7333fed3..fd58fa82 100644 --- a/libsigrok4DSLogic/input/Makefile.in +++ b/libsigrok4DSLogic/input/Makefile.in @@ -1,4 +1,4 @@ -# Makefile.in generated by automake 1.11.3 from Makefile.am. +# Makefile.in generated by automake 1.11.6 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, @@ -16,6 +16,23 @@ @SET_MAKE@ VPATH = @srcdir@ +am__make_dryrun = \ + { \ + am__dry=no; \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ + | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ + *) \ + for am__flg in $$MAKEFLAGS; do \ + case $$am__flg in \ + *=*|--*) ;; \ + *n*) am__dry=yes; break;; \ + esac; \ + done;; \ + esac; \ + test $$am__dry = yes; \ + } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -88,6 +105,11 @@ am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(libsigrok4DSLogicinput_la_SOURCES) DIST_SOURCES = $(libsigrok4DSLogicinput_la_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) diff --git a/libsigrok4DSLogic/output/Makefile.in b/libsigrok4DSLogic/output/Makefile.in index 9221d14e..c7317eef 100644 --- a/libsigrok4DSLogic/output/Makefile.in +++ b/libsigrok4DSLogic/output/Makefile.in @@ -1,4 +1,4 @@ -# Makefile.in generated by automake 1.11.3 from Makefile.am. +# Makefile.in generated by automake 1.11.6 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, @@ -16,6 +16,23 @@ @SET_MAKE@ VPATH = @srcdir@ +am__make_dryrun = \ + { \ + am__dry=no; \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ + | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ + *) \ + for am__flg in $$MAKEFLAGS; do \ + case $$am__flg in \ + *=*|--*) ;; \ + *n*) am__dry=yes; break;; \ + esac; \ + done;; \ + esac; \ + test $$am__dry = yes; \ + } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -97,6 +114,11 @@ RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ install-pdf-recursive install-ps-recursive install-recursive \ installcheck-recursive installdirs-recursive pdf-recursive \ ps-recursive uninstall-recursive +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ @@ -579,13 +601,10 @@ distdir: $(DISTFILES) done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ - test -d "$(distdir)/$$subdir" \ - || $(MKDIR_P) "$(distdir)/$$subdir" \ - || exit 1; \ - fi; \ - done - @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ + $(am__make_dryrun) \ + || test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ diff --git a/libsigrok4DSLogic/output/text/Makefile.in b/libsigrok4DSLogic/output/text/Makefile.in index 88bba4b1..1adc6f2c 100644 --- a/libsigrok4DSLogic/output/text/Makefile.in +++ b/libsigrok4DSLogic/output/text/Makefile.in @@ -1,4 +1,4 @@ -# Makefile.in generated by automake 1.11.3 from Makefile.am. +# Makefile.in generated by automake 1.11.6 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, @@ -16,6 +16,23 @@ @SET_MAKE@ VPATH = @srcdir@ +am__make_dryrun = \ + { \ + am__dry=no; \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ + | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ + *) \ + for am__flg in $$MAKEFLAGS; do \ + case $$am__flg in \ + *=*|--*) ;; \ + *n*) am__dry=yes; break;; \ + esac; \ + done;; \ + esac; \ + test $$am__dry = yes; \ + } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -88,6 +105,11 @@ am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(libsigrok4DSLogicoutputtext_la_SOURCES) DIST_SOURCES = $(libsigrok4DSLogicoutputtext_la_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) diff --git a/libsigrok4DSLogic/tests/Makefile.in b/libsigrok4DSLogic/tests/Makefile.in index 7630fa34..416647c0 100644 --- a/libsigrok4DSLogic/tests/Makefile.in +++ b/libsigrok4DSLogic/tests/Makefile.in @@ -1,4 +1,4 @@ -# Makefile.in generated by automake 1.11.3 from Makefile.am. +# Makefile.in generated by automake 1.11.6 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, @@ -15,6 +15,23 @@ @SET_MAKE@ VPATH = @srcdir@ +am__make_dryrun = \ + { \ + am__dry=no; \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ + | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ + *) \ + for am__flg in $$MAKEFLAGS; do \ + case $$am__flg in \ + *=*|--*) ;; \ + *n*) am__dry=yes; break;; \ + esac; \ + done;; \ + esac; \ + test $$am__dry = yes; \ + } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -90,6 +107,11 @@ am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(check_main_SOURCES) DIST_SOURCES = $(am__check_main_SOURCES_DIST) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac ETAGS = etags CTAGS = ctags # If stdout is a non-dumb tty, use colors. If test -t is not supported,