Uwe Hermann [Sun, 4 Jun 2017 18:52:11 +0000 (20:52 +0200)]
Installer: Add "PulseView" to uninstaller/Zadig links.
Windows 10 merges all links of the same vendor ("sigrok" here) into one
section in the Start menu. If PulseView and sigrok-cli are installed,
there will be two "Uninstall" links and the user will not know which one
uninstalls which program.
Soeren Apel [Sun, 4 Jun 2017 18:40:04 +0000 (20:40 +0200)]
Installer: Place set of example .sr files in separate section
Soeren Apel [Sun, 4 Jun 2017 17:27:26 +0000 (19:27 +0200)]
Installer: Update icon cache also after uninstallation
Soeren Apel [Sun, 4 Jun 2017 17:28:26 +0000 (19:28 +0200)]
Installer: Force icon cache refresh
Soeren Apel [Sat, 3 Jun 2017 20:47:10 +0000 (22:47 +0200)]
Fix #964 by adding an option to register the .sr extension with PV
Soeren Apel [Sat, 3 Jun 2017 20:44:28 +0000 (22:44 +0200)]
Don't use Q_EMIT, it's not needed anymore
The Q_EMIT macro (just like the regular Qt emit) is syntactic
sugar to let people who read the code know that a method call
placed somewhere is actually a signal.
We don't use Q_EMIT consistently throughout PV and I don't
think it's really needed anyway, so this patch removes the
few remaining instances.
Soeren Apel [Thu, 1 Jun 2017 20:42:20 +0000 (22:42 +0200)]
View: Limit header pane width
Soeren Apel [Thu, 1 Jun 2017 19:51:34 +0000 (21:51 +0200)]
View: Save/restore splitter state
Soeren Apel [Thu, 1 Jun 2017 19:16:27 +0000 (21:16 +0200)]
Remove Header::BaselineOffset and move arrows as needed instead
The baseline offset was used to keep 5px of distance between
the tip of the arrow and the scroll area. This way, the shadow
that is drawn around the arrow when it's selected won't get
cropped.
However, we can do this differently: instead of always keeping
the empty space around, we make the arrows align at the edge
of the widget space as they should and when they're selected,
we push them aside to the left so the shadow can still be
painted without cropping.
Logically, one would assume that the arrow's label also should
be moving left but I decided against it because this way it
looks as if the arrow didn't actually move, keeping all arrow
labels lined up.
Soeren Apel [Thu, 1 Jun 2017 20:21:57 +0000 (22:21 +0200)]
Fix #957 and #874 by implementing the pane splitter
Uwe Hermann [Thu, 1 Jun 2017 21:32:10 +0000 (23:32 +0200)]
Add a MIME info file for sigrok session files.
File template by Stefan Brüns, thanks!
This fixes bug #857.
Uwe Hermann [Thu, 1 Jun 2017 21:48:17 +0000 (23:48 +0200)]
org.sigrok.PulseView.appdata.xml: Add CC0-1.0 license comment.
Uwe Hermann [Thu, 1 Jun 2017 21:29:29 +0000 (23:29 +0200)]
org.sigrok.PulseView.appdata.xml: Drop <project_group> tag.
This currently causes issues with e.g. appstream-util validation:
$ appstream-util validate-relax org.sigrok.PulseView.appdata.xml
org.sigrok.PulseView.appdata.xml: FAILED:
• tag-invalid : <project_group> is not valid
Validation of files failed
This is considered an appstream/tool bug, but for now we drop the tag in
order it to avoid issues.
https://github.com/hughsie/appstream-glib/issues/140
Uwe Hermann [Thu, 1 Jun 2017 21:41:00 +0000 (23:41 +0200)]
org.sigrok.PulseView.appdata.xml: Add <suggests> tags.
Uwe Hermann [Thu, 1 Jun 2017 21:38:56 +0000 (23:38 +0200)]
org.sigrok.PulseView.appdata.xml: Add <mimetype> tag.
Uwe Hermann [Thu, 1 Jun 2017 21:37:03 +0000 (23:37 +0200)]
org.sigrok.PulseView.appdata.xml: Add <launchable> tag.
Uwe Hermann [Thu, 1 Jun 2017 21:48:12 +0000 (23:48 +0200)]
desktop file: Add CC0-1.0 license comment.
Uwe Hermann [Thu, 1 Jun 2017 18:58:16 +0000 (20:58 +0200)]
desktop file: Add additional Development category.
Apparently, e.g. on KDE Plasma, having PulseView only in the Electronics
category (which seems to not necessarily exist) leads to PulseView
showing up in a "Lost&Found" category instead.
We're adding the Development category in addition to Electronics
(e.g. Kicad does the same) to have PulseView in Development if there's
no Electronics category.
Uwe Hermann [Thu, 1 Jun 2017 18:50:28 +0000 (20:50 +0200)]
desktop file: Add MimeType field.
This fixes bug #858.
Uwe Hermann [Wed, 31 May 2017 22:55:27 +0000 (00:55 +0200)]
desktop file: Rename to org.sigrok.PulseView.desktop.
Uwe Hermann [Wed, 31 May 2017 22:25:29 +0000 (00:25 +0200)]
desktop file: Minor rewording.
Stefan Brüns [Sun, 28 May 2017 19:31:00 +0000 (21:31 +0200)]
Fix #859: Add Appdata definition for PulseView
To be visible in KDE's Discover and GNOME Software,
an appdata definition is required.
Signed-off-by: Stefan Brüns <stefan.bruens@rwth-aachen.de>
Soeren Apel [Tue, 30 May 2017 06:07:50 +0000 (08:07 +0200)]
View: Adjust top margin when needed
When the view is big and the traces are vertically centered,
there will be blank space above and below the block of traces.
When the user then resizes the window and makes it smaller,
the white space stays, pushing traces out of the view that
could fit on-screen if the blank space was adjusted properly.
This is what we do with this patch.
If there is still enough space to make everything fit, we
center the traces vertically. If there's not enough space
to make everything fit, we make sure that the top traces
are shown.
Soeren Apel [Tue, 30 May 2017 06:01:25 +0000 (08:01 +0200)]
TraceView: Improve the way we do the initial scrolling setup
The two commits
ae5f66281c38a76dcb7011907d7a86a99b9dd4dd and
66e4eae9ce743016c3f6d4974bceb9b7fc0ae7d7
Were okay but it showed that there was one case they didn't
cover: the first session receives a resize notification upon
startup whereas all other sessions don't. This means that
sessions restored from a previous run suddenly see the
size_finalized_ variable always staying at false - until the
user resizes the window.
While figuring out how to cover this case, I realized that
there is actually an easier way to perform all this:
instead of keeping an internal state of when and how we
received useless and useful resize notifications, we just
act upon the "show" event, which always comes after all
the widget resizing has been performed. This way, we can
remove the size_finalized_ variable completely and as it
is definitely always received when a session is shown,
we always end up in a sane and correct state.
Note: to reproduce, open up a 2nd session and use demo.
Then, when using the group handle to move the analog traces
upwards, you'll notice that the logic traces will move down
at the same time. This is because size_finalized_ is false
and the view will always center the traces vertically.
Soeren Apel [Mon, 29 May 2017 18:50:16 +0000 (20:50 +0200)]
Paint sampling points on the actual trace, not the center line
Uwe Hermann [Sun, 28 May 2017 16:29:10 +0000 (18:29 +0200)]
Bump requirements to libsigrok/libsigrokdecode 0.5.0.
We use various new API calls from the upcoming 0.5.0 releases and are
not compatible with the respective 0.4.x anymore.
Sylvain Munaut [Sun, 28 May 2017 14:53:27 +0000 (16:53 +0200)]
viewport: Allow smoother zoom using vertical scroll events
The zoom supports 'double' as input type but since delta() and 120 are
integer, this wasn't used and any event with a delta lower than 120 was
ignored.
With this mod, the zoom level changes are _much_ smoother on trackpads
Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
Soeren Apel [Sun, 28 May 2017 08:31:47 +0000 (10:31 +0200)]
AnalogSegment: Speed up processing of interleaved sample data
Soeren Apel [Sun, 28 May 2017 08:19:11 +0000 (10:19 +0200)]
AnalogSignal: Temporarily disable analog signal conversion
This feature isn't ready yet, so hide it for now.
Soeren Apel [Sat, 27 May 2017 20:58:31 +0000 (22:58 +0200)]
Fix #958 by using new method that auto-converts analog samples
Soeren Apel [Sat, 27 May 2017 20:13:16 +0000 (22:13 +0200)]
SignalBase: Always hook into signal data, not just for analog
Soeren Apel [Sat, 27 May 2017 14:31:15 +0000 (16:31 +0200)]
DeviceManager: Show progress dialog while scanning for devices
We don't want users to wonder why nothing happens when they
start PV and no window shows up. Providing this dialog lets
them know that PV is starting and doing something.
Soeren Apel [Fri, 26 May 2017 20:42:38 +0000 (22:42 +0200)]
Settings Dialog: Visually break up items in the about listing
Soeren Apel [Fri, 26 May 2017 14:19:56 +0000 (16:19 +0200)]
Rework signaling mechanism for trace repainting
Before, analog traces would request a repaint of the entire
view when they receive data. To understand how bad this was,
consider 4 enabled analog channels during capture. Every time
one channel would receive a bunch of sample data, it would
force a repaint of the view, resulting in 4 unnecessary
repaints.
To fix this, the analog traces no longer request a repaint
on incoming sample data. Instead, the mechanism now is such
that the view "collates" repaint requests from all used
signalbases by means of a one-shot timer, i.e. any repaint
request is ignored if the timer is already running.
With the timer, we can also establish an upper bound on
how often the trace should update at most, currently 25Hz.
Since this functionality is very useful for any kind of
view, the existing one-shot timer was moved to the ViewBase
and then extended as explained.
Soeren Apel [Fri, 26 May 2017 09:34:31 +0000 (11:34 +0200)]
AnalogSignal: Only report an extent change when there is one
Soeren Apel [Fri, 26 May 2017 08:46:14 +0000 (10:46 +0200)]
SignalBase: Also emit data related signals
If we have a SignalBase instance we don't want to hook into
every single segment just to be notified when data changes.
Soeren Apel [Thu, 25 May 2017 12:30:46 +0000 (14:30 +0200)]
Disable context menus that could lead to users removing UI parts
If a user removes the main toolbar then there's no way to get it
back. We don't want that.
If a user removes a dock window's contents he can get it back
by using the same context menu but it's a useless feature for us
and potentially very confusing, so we disable this, too.
Soeren Apel [Wed, 24 May 2017 21:50:37 +0000 (23:50 +0200)]
Fix #895 by adapting to Qt5 and cleaning up properly
Relevant Qt commit:
https://codereview.qt-project.org/#/c/72637/
"QProgressDialog: don't require setValue(0) to be called."
"Fixed by starting the timer in the constructor (most code doesn't reuse
progress dialogs, so this fixes the most common case)"
This messes us up because we're (ab-)using the dialog
in a non-standard way.
https://bugreports.qt.io/browse/QTBUG-47042
"QProgressDialog is designed to show itself automatically, based
on an internal estimate for the duration of the operation and the
minimumDuration property. You never call show() or exec() on it
manually. You're also not supposed to keep it around when it's not
used. In 5.4, the only way to start the internal duration estimation
was to call setValue(0). But we noticed that many people didn't call
setValue(0)"
Workaround here:
https://bugreports.qt.io/browse/QTBUG-47042
"As a workaround I added the line m_progressDlg->reset(); in the main
window constructor in order to get the same behavior as in former
versions."
Soeren Apel [Wed, 24 May 2017 16:06:11 +0000 (18:06 +0200)]
MainBar: Fix notification message
Soeren Apel [Wed, 24 May 2017 11:45:04 +0000 (13:45 +0200)]
Fix #942 by making sure we always have at least one positive div
Soeren Apel [Wed, 24 May 2017 11:44:43 +0000 (13:44 +0200)]
Fix #940 by updating the div spin boxes when needed
Also, prevent the autoranging algo from changing the div
assigment when the user is in the process of changing it.
This way, we only change the div assignment during
acquisition, which is when we actually need this feature.
Uwe Hermann [Fri, 26 May 2017 16:36:33 +0000 (18:36 +0200)]
About: Also list glibmm/boost/libsigrokdecode version details.
This fixes parts of bug #912.
Uwe Hermann [Fri, 26 May 2017 16:14:56 +0000 (18:14 +0200)]
build: Add missing check for glib.
PulseView uses glib directly (in addition to indirectly via
libsigrok and/or libsigrokdecode), so we should explicitly check it.
Uwe Hermann [Fri, 26 May 2017 15:56:08 +0000 (17:56 +0200)]
build: Add missing check for glibmm.
Also, list the glibmm version in config.h.
Uwe Hermann [Fri, 26 May 2017 14:43:24 +0000 (16:43 +0200)]
About: Also show libsigrok libs and features.
This fixes parts of bug #912.
Martin Ling [Fri, 12 May 2017 21:48:28 +0000 (22:48 +0100)]
Avoid wrapping driver names etc in about box.
Fixes #111.
Uwe Hermann [Wed, 10 May 2017 14:50:46 +0000 (16:50 +0200)]
Fix a build issue with std::roundf() on Android.
Apparently std::roundf() doesn't exist there, but plain roundf()
from <cmath> does.
This closes bug #945.
Uwe Hermann [Tue, 9 May 2017 20:08:59 +0000 (22:08 +0200)]
Log settings location when using "-l 5".
This can have various types (e.g. a file or a registry entry) and it can
be in various locations on different OSes, so having this as part of the
log output is pretty useful.
Uwe Hermann [Sun, 30 Apr 2017 20:44:33 +0000 (22:44 +0200)]
Improve icon/theme handling.
Only use QIcon::fromTheme() for icons which are included in the
freedesktop.org icon naming specification:
https://standards.freedesktop.org/icon-naming-spec/icon-naming-spec-latest.html
For all others there will be no icon to use from the theme and we always
want our own icons to be used unconditionally in those cases anyway.
Uwe Hermann [Wed, 5 Apr 2017 19:34:29 +0000 (21:34 +0200)]
Rename icons to match freedesktop.org icon naming specification.
https://standards.freedesktop.org/icon-naming-spec/icon-naming-spec-latest.html
Soeren Apel [Mon, 1 May 2017 13:14:50 +0000 (15:14 +0200)]
Tests: Add another unit test for Segment class
Soeren Apel [Mon, 1 May 2017 13:04:10 +0000 (15:04 +0200)]
Segment: Rework append_samples() so it can handle large input
Before, adding large blocks of samples didn't work if they
would fill the current chunk, fill a new one and still have
data left to add. Using an iterative approach fixes this and
also makes the function more elegant.
Soeren Apel [Sun, 23 Apr 2017 14:44:17 +0000 (16:44 +0200)]
AnalogSignal: Don't paint logic when there's no logic data
Joel Holdsworth [Wed, 26 Apr 2017 17:20:14 +0000 (11:20 -0600)]
ViewItem: Moved bg_colour_state into ViewItemPaintParams
Joel Holdsworth [Wed, 26 Apr 2017 17:09:10 +0000 (11:09 -0600)]
ViewPort: Make ViewItemPaintParams mutable
Joel Holdsworth [Wed, 26 Apr 2017 17:39:48 +0000 (11:39 -0600)]
TimeMarker: Align to a integer pixel offset
Joel Holdsworth [Wed, 26 Apr 2017 16:13:08 +0000 (10:13 -0600)]
Trace: Fixed background rectangle
It previously ignored the left x-coordinate, and left a 1-pixel
gap at the right-hand side.
Joel Holdsworth [Wed, 26 Apr 2017 16:12:23 +0000 (10:12 -0600)]
Trace: Removed coloured_bg state
The state should be taken from the View
Joel Holdsworth [Wed, 26 Apr 2017 16:09:51 +0000 (10:09 -0600)]
DecodeTrace: Make annotation block background opaque
Gerhard Sittig [Sun, 16 Apr 2017 19:34:05 +0000 (21:34 +0200)]
Settings: About: alpha-sort list of protocol decoders
Sort the list of protocol decoders in the "About" page like
sigrok-cli(1) does.
Gerhard Sittig [Sun, 16 Apr 2017 19:29:27 +0000 (21:29 +0200)]
Settings: About: add sigrok internal libraries to version list
Add version information for libsigrok and libsigrokdecode (when enabled)
to the list of used libraries in the "About" page.
Uwe Hermann [Sun, 2 Apr 2017 15:24:34 +0000 (17:24 +0200)]
Don't use AUTORCC, this would require cmake >= 3.0.
Uwe Hermann [Fri, 31 Mar 2017 17:35:09 +0000 (19:35 +0200)]
INSTALL: Fix incorrect gcc/clang minimum versions.
https://gcc.gnu.org/projects/cxx-status.html#cxx11
https://clang.llvm.org/cxx_status.html
Uwe Hermann [Fri, 31 Mar 2017 06:27:28 +0000 (08:27 +0200)]
Add a hotkey and setting for showing/hiding the minor analog grid.
The vdiv grid is always shown and is what most users will expect. The
additional "minor" grid could be confusing, so make that configurable.
Uwe Hermann [Thu, 30 Mar 2017 17:27:12 +0000 (19:27 +0200)]
Add a tooltip for the "Delete decoder trace" icon.
Uwe Hermann [Thu, 30 Mar 2017 17:26:41 +0000 (19:26 +0200)]
Add a tooltip for the "Show/hide decoder trace" icon.
Uwe Hermann [Wed, 29 Mar 2017 23:21:58 +0000 (01:21 +0200)]
Add a tooltip for the decoder name in the decoder popup.
Uwe Hermann [Wed, 29 Mar 2017 23:21:31 +0000 (01:21 +0200)]
Add a tooltip for the "Stack decoder" button/dropdown.
Uwe Hermann [Wed, 29 Mar 2017 23:20:42 +0000 (01:20 +0200)]
Add a tooltip for the "Add decoder" button.
Uwe Hermann [Wed, 29 Mar 2017 23:11:11 +0000 (01:11 +0200)]
binding: Add description tooltips to almost all binding types.
This can be the description of an option of an input/output module,
for example.
Uwe Hermann [Wed, 29 Mar 2017 23:48:12 +0000 (01:48 +0200)]
prop/bool: Add a tooltip containing a description.
This can be the description of an option of an input/output module,
for example.
Uwe Hermann [Wed, 29 Mar 2017 22:57:33 +0000 (00:57 +0200)]
binding/prop: Add a description field.
The config key / option bindings only allowed for a single name so far.
Add an additional description field, which can be used for longer
descriptions of the config keys / options.
Hook up the input/output format option descriptions.
Uwe Hermann [Tue, 28 Mar 2017 21:20:51 +0000 (23:20 +0200)]
wellarray.hpp: Add missing #include guards.
Uwe Hermann [Tue, 28 Mar 2017 20:54:27 +0000 (22:54 +0200)]
Simplify Qt5 setup, require cmake >= 2.8.12.
We now require cmake >= 2.8.12 (released 2013 or so, should be available
pretty much anywhere by now) which further simplifies the Qt5 setup.
Details:
https://doc.qt.io/qt-5/cmake-manual.html
https://cmake.org/cmake/help/v3.7/prop_tgt/AUTOMOC.html
https://cmake.org/cmake/help/v3.7/prop_tgt/AUTORCC.html
Uwe Hermann [Tue, 28 Mar 2017 20:26:02 +0000 (22:26 +0200)]
Drop support for Qt4.
We now require Qt5 for PulseView. Qt5 has been out since 2012 or so and
is available pretty much everywhere now.
We're successfully using Qt5 on Linux, Windows, *BSD, Mac OS X, and Android.
Dropping Qt4 support simplifies the build system quite a bit, reduces the
number of test scenarios we have to consider etc. etc.
Uwe Hermann [Tue, 28 Mar 2017 06:41:48 +0000 (08:41 +0200)]
Drop unused boost-thread dependency.
We no longer use boost-thread currently (in favor of C++11 thread
facilities), so drop the obsolete dependency from code and docs.
Uwe Hermann [Tue, 28 Mar 2017 06:30:43 +0000 (08:30 +0200)]
Use alphabetical order for #includes.
This patch was generated using clang-tidy:
clang-tidy -checks="-*,llvm-include-order" -fix
Uwe Hermann [Fri, 24 Mar 2017 22:19:14 +0000 (23:19 +0100)]
Whitespace cosmetics.
Soeren Apel [Sun, 26 Mar 2017 19:04:30 +0000 (21:04 +0200)]
Speed up analog trace painting
Soeren Apel [Thu, 23 Mar 2017 20:52:51 +0000 (21:52 +0100)]
SignalBase: Don't use static state
It's used across all SessionBase instances, d'oh.
Let's not do this.
Soeren Apel [Thu, 23 Mar 2017 20:43:58 +0000 (21:43 +0100)]
Settings: Whitespace fix
Uwe Hermann [Wed, 22 Mar 2017 22:34:36 +0000 (23:34 +0100)]
Consistenty use auto-generated namespace comments.
This patch was generated using clang-tidy:
clang-tidy -checks="-*,google-readability-namespace-comments" -fix
Switch to the format used by clang-tidy to allow easy, automatic,
tool-based maintenance / checking of the comments.
This also found a few instances of comments that were out of sync.
Uwe Hermann [Sat, 18 Mar 2017 23:20:26 +0000 (00:20 +0100)]
Random simplifications, cosmetics/whitespace/consistency fixes.
Uwe Hermann [Tue, 21 Mar 2017 23:45:20 +0000 (00:45 +0100)]
Use the "default" keyword.
This patch was generated using clang-tidy:
clang-tidy -checks="-*,modernize-use-equals-default" -fix
(with manual fixups to move the "= default" to the .hpp)
Uwe Hermann [Tue, 21 Mar 2017 23:01:10 +0000 (00:01 +0100)]
Use bool literals for boolean values.
This patch was generated using clang-tidy:
clang-tidy -checks="-*,modernize-use-bool-literals" -fix
Uwe Hermann [Tue, 21 Mar 2017 21:38:59 +0000 (22:38 +0100)]
Don't use redundant void argument.
This patch was generated using clang-tidy:
clang-tidy -checks="-*,modernize-redundant-void-arg" -fix
Uwe Hermann [Mon, 20 Mar 2017 20:40:29 +0000 (21:40 +0100)]
Don't use deprecated headers.
This patch was generated using clang-tidy:
clang-tidy -checks="-*,modernize-deprecated-headers" -fix
(with some additional manual fixups)
Uwe Hermann [Mon, 20 Mar 2017 20:26:44 +0000 (21:26 +0100)]
Use nullptr in a few places.
This patch was generated using clang-tidy:
clang-tidy -checks="-*,modernize-use-nullptr" -fix
Uwe Hermann [Mon, 20 Mar 2017 20:00:14 +0000 (21:00 +0100)]
Remove unused "using" declarations.
This patch was generated using clang-tidy:
clang-tidy -checks="-*,misc-unused-using-decls" -fix
(with manual add-on fixes such as dropping unused headers as well,
and commenting some false-positive cases)
Soeren Apel [Wed, 22 Mar 2017 22:42:23 +0000 (23:42 +0100)]
Settings: Add Qt version
Soeren Apel [Wed, 22 Mar 2017 22:26:21 +0000 (23:26 +0100)]
DecoderStack: Fix memory leak
Soeren Apel [Wed, 22 Mar 2017 21:33:09 +0000 (22:33 +0100)]
AnalogSignal: display type-related improvements
1) Only show the v/div setting if analog trace is drawn
2) Update the trace when the display type is changed
Soeren Apel [Wed, 22 Mar 2017 22:24:13 +0000 (23:24 +0100)]
AnalogSignal: Implement converted logic trace painting
Yeah, it violates the DRY principle and isn't nice OOP-wise
but it'll do for now. The entire group of Trace/Signal classes
needs to be reworked anyway to support device-independent
signal types anyway (think math traces and such).
Soeren Apel [Wed, 22 Mar 2017 19:05:38 +0000 (20:05 +0100)]
LogicSignal: Don't depend on device_ being valid
Soeren Apel [Wed, 22 Mar 2017 22:07:41 +0000 (23:07 +0100)]
AnalogSignal: Add conversion type and display type
Soeren Apel [Wed, 22 Mar 2017 22:03:21 +0000 (23:03 +0100)]
SignalBase: Implement A2D conversions
Soeren Apel [Sat, 18 Mar 2017 11:12:41 +0000 (12:12 +0100)]
Session: Make sure we don't try to add a non-existant decoder
This can happen if either the saved configuration is wrong
or a decoder simply doesn't exist. We don't want to crash then.
Soeren Apel [Thu, 16 Mar 2017 21:24:17 +0000 (22:24 +0100)]
LogicSegment: Remove constructor requiring sigrok::Logic
Soeren Apel [Thu, 16 Mar 2017 20:40:33 +0000 (21:40 +0100)]
LogicSegment: Make constructor and append_payload() more generic
Soeren Apel [Wed, 15 Mar 2017 18:22:17 +0000 (19:22 +0100)]
Use presence of logic/analog data as indicator of channel type
However, don't do this for the StoreSession. Reason is that we
only want to save the original data and not treat any converted
data as its own channel.