Daniel Elstner
0ab8e5d22b
C++: Declare all callbacks invoked from C noexcept
...
If one of these functions does throw an exception, std::terminate()
will be called. Without this, the behavior is undefined since the C
stack is not prepared to deal with exceptions.
2015-10-26 06:45:56 +01:00
Daniel Elstner
15914cdb0f
C++: Use noexcept instead of throw()
...
Runtime-checked exception specifications via throw() are
deprecated in C++11.
2015-10-26 06:45:56 +01:00
Daniel Elstner
6c11b49607
C++: Make most constructors explicit
...
Unless implicit conversion is desired, constructors that can be
called with one argument should be marked as "explicit".
2015-10-26 06:45:56 +01:00
Daniel Elstner
ce3e1e6132
C++: Do not use C-style casts
...
Never ever.
2015-10-26 06:45:56 +01:00
Daniel Elstner
58e21229dd
C++: Consistently use nullptr instead of NULL
2015-10-26 04:06:12 +01:00
Daniel Elstner
d370545d60
C++: Use move() and avoid passing containers by value
...
Make use of std::move() to transfer arguments passed in by value.
Take complex container arguments by const reference, as passing
those by value is rather unorthodox even for C++11 style code.
2015-10-26 04:06:12 +01:00
Uwe Hermann
dd13d47a9e
bindings: Use SR_DF_ANALOG, drop SR_DF_ANALOG_OLD support.
...
All SR_DF_ANALOG_OLD packets are automatically converted to SR_DF_ANALOG
in the session already.
2015-10-21 00:29:29 +02:00
Uwe Hermann
5faebab290
SR_DF_ANALOG_OLD and sr_datafeed_analog_old renames.
...
Rename SR_DF_ANALOG to SR_DF_ANALOG_OLD, and 'struct sr_datafeed_analog'
to 'struct sr_datafeed_analog_old'.
2015-10-20 23:32:45 +02:00
Daniel Elstner
ee9953ef12
session: Make event source injection API private
...
Also remove the corresponding functionality from the bindings.
2015-10-17 17:40:42 +02:00
Daniel Elstner
f91cf612df
C++: Add bindings for session stop notification
2015-10-17 17:40:42 +02:00
Daniel Elstner
7f4d69305b
C++: Remove leftover Context::begin_save() method
2015-10-04 22:11:39 +02:00
Daniel Elstner
e2eaf8580a
C++: Wrap resource access API
...
Introduce a ResourceReader delegate class with virtual methods
corresponding to the C callback functions.
2015-10-01 15:44:55 +02:00
Daniel Elstner
5e1fb33469
session-file: Remove old session save API
...
Completely remove the old session save code that has been
superseded by the srzip output module. Also refactor a bit,
plug a number of leaks and tighten the error checking.
2015-10-01 15:44:55 +02:00
Daniel Elstner
000f504f24
classes.cpp: Define _XOPEN_SOURCE for isascii()
...
The GNU libstdc++ headers use isascii(), which is not part of any
POSIX standard. On BSD, this breaks the build. It is however part
of XOPEN, which on Linux is apparently enabled implicitly for C++.
This should fix #649 .
2015-09-13 20:12:12 +02:00
Daniel Elstner
6ec6c43b47
Build: Include <config.h> first in all source files
...
Since Autoconf places some important feature flags only into the
configuration header, it is necessary to include it globally to
guarantee a consistent build.
2015-09-13 18:54:46 +02:00
Daniel Elstner
782b16447b
log: Remove sr_log_logdomain_{get,set} from the API
...
The confusingly named sr_log_logdomain_set() simply set a global
string prefixed to the log message by the default log callback.
This is pretty much useless, misleadingly named, and not used by
either sigrok-cli or PulseView.
2015-09-13 12:08:54 +02:00
Bert Vermeulen
2fb60e2329
Replace sr_config_info with sr_key_info.
...
The tables defined with this struct can now be used for information
on items other than config keys.
Functions to access these tables have been renamed sr_key_info_[name_]get.
These take an extra argument, keytype, which should be set to SR_KEY_CONFIG
to get the config key tables. Other key types will be added.
2015-08-26 01:08:42 +02:00
Daniel Elstner
bc81463bb8
enums.py: Place swig/enums.i into build directory
2015-08-16 18:28:13 +02:00
Daniel Elstner
b5f0731971
Build: Use angle brackets for enums.cpp include
2015-08-16 18:28:13 +02:00
Daniel Elstner
8b2a184327
Build: Prefix directory to include of enums.hpp
...
This fixes a build problem due to the reduced include search paths
introduced by my recent changes. Also fix a couple of other
includes to use angle brackets.
2015-08-16 18:28:13 +02:00
Daniel Elstner
b9eb8e1a8c
Consistently use SR_PACKAGE_VERSION instead of VERSION
2015-08-16 18:28:13 +02:00
Soeren Apel
3cd4b38174
Introduce OutputFlag
2015-08-15 23:53:12 +02:00
Soeren Apel
81b3ce374c
Add filename field to sr_output and make it accessible
...
This fixes parts of bug #570 .
2015-07-30 19:21:42 +02:00
Martin Ling
2b51d48b38
C++: Change arguments of Input::send() from std::string to data+length.
2015-04-20 10:12:39 +01:00
Uwe Hermann
032da34b78
sr_driver_list() now takes a context pointer.
...
This requires sr_hw_cleanup_all() and sanity_check_all_drivers()
to also take a context.
The (runtime) generation of the driver list now happens in sr_init()
and sr_driver_list() always returns that pre-generated list. This fixes
a segfault when (correctly) invoking multiple sr_init() and sr_exit()
calls with different contexts (caught by the unit tests).
This fixes bug #565 .
2015-04-07 02:09:56 +02:00
Uwe Hermann
c879dca3d7
bindings/cxx/classes.cpp: Fix sr_session_load() invocation.
2015-03-26 01:02:40 +01:00
Uwe Hermann
60f6b00144
bindings/cxx/classes.cpp: Fix a typo.
2015-03-26 01:02:40 +01:00
Martin Ling
61e6e2da45
Make sr_session_new() and sr_session_load() require a context.
2015-03-26 01:02:40 +01:00
Martin Ling
6f1346fbd7
Change API of channel accessor functions to take struct sr_channel *.
2015-03-19 21:57:31 +00:00
Joel Holdsworth
8a174d2342
output: Added preferred file extension field
...
This fixes parts of bug #541 .
2015-01-27 18:05:29 +01:00
Joel Holdsworth
c7bc82ffa1
input: Added preferred file extension field
...
This fixes parts of bug #541 .
2015-01-27 18:05:25 +01:00
Uwe Hermann
dc7125bb7c
cxx: Fix a linking issue.
...
Fix "undefined reference to `sigrok::EnumValue<sigrok::LogLevel,
sr_loglevel>::_values'", which happens at least when using clang(++),
e.g. on Linux, Mac OS X, or FreeBSD.
This fixes bug #534 .
Thanks to Uffe Jakobsen and Martin Ling for reporting and investigating!
2015-01-26 15:31:27 +01:00
Martin Ling
48d92e2c2e
C++: Fix segfault where input/output options are NULL.
2015-01-18 22:43:02 +00:00
Uwe Hermann
161dc24d84
cxx: Rename include/libsigrok/ to include/libsigrokcxx/.
2015-01-17 20:26:14 +01:00
Uwe Hermann
1b40fdb881
Rename libsigrok.hpp to libsigrokcxx.hpp.
...
This avoids confusion of libsigrok.h vs. libsigrok.hpp and makes it
clearer that this is the main libsigrokcxx header.
2015-01-17 20:15:38 +01:00
Uwe Hermann
e0e6aecc20
libsigrok.hpp: Fix incorrect glibmm.h #include.
...
As per upstream docs "#include <glibmm.h>" is the correct usage,
the "glibmm-2.4" directory is handled correctly via pkg-config:
$ pkg-config --cflags glibmm-2.4
-I/usr/include/glibmm-2.4 [...]
2015-01-17 19:59:44 +01:00
Uwe Hermann
afba88adb5
libsigrokcxx: Drop Requires.private entry.
...
libsigrokcxx.pc has a "Requires" field listing "libsigrok" which
will cause libsigrok's "Requires.private" entries to be used/inherited
when 'pkg-config --libs --static libsigrokcxx' is used.
2015-01-17 19:53:44 +01:00
Uwe Hermann
52ff4f6a04
Rename libsigrokxx to the more common libsigrokcxx.
2015-01-17 18:52:43 +01:00
Aurelien Jacobs
24287ea9e3
Add a public API to list available serial ports.
2015-01-03 17:51:51 +01:00
Uwe Hermann
e835e8080b
bindings: Session::set_trigger(): Fix segfault condition.
...
sr_session_trigger_set(sess, NULL) is a valid thing to do, meaning that
any trigger shall be removed from the session.
This closes bugs #491 and #496 .
2014-11-24 01:11:17 +01:00
Uwe Hermann
b8721d7cf0
bindings: Fix out-of-tree build.
...
This closes #473 .
2014-11-14 20:01:12 +01:00
Martin Ling
d2a929ab85
bindings: Fix enums.py compatibility with Python 3.
2014-11-13 20:38:56 +00:00
Uwe Hermann
624d16100e
bindings: Add Session::context().
2014-11-13 19:15:37 +01:00
Martin Ling
304be4a771
bindings: Add packet constructors.
2014-11-13 18:37:57 +01:00
Martin Ling
b2db9f3bbe
bindings: Add QuantityFlag::mask_from_flags() method.
2014-11-13 18:37:57 +01:00
Martin Ling
9fa5b426ec
bindings: Add UserDevice wrapping.
2014-11-13 18:37:57 +01:00
Martin Ling
7a36ceacb9
bindings: Support per-language extensions to EnumValue wrappers.
2014-11-12 02:27:05 +01:00
Martin Ling
e480df0c45
bindings: Expose ConfigKey::identifier as an attribute.
2014-11-12 02:27:04 +01:00
Martin Ling
189461b251
bindings: Expose EnumValue::id and EnumValue::name as attributes.
2014-11-12 02:27:04 +01:00
Martin Ling
fe4096fde6
bindings: Wrap EnumValue base class.
2014-11-12 02:27:04 +01:00
Martin Ling
0bc1a7613a
bindings: Rename ConfigKey::get(string) to get_by_identifier().
...
The polymorphism with get(int) causes problems here when a char * is passed.
2014-11-12 02:27:04 +01:00
Martin Ling
9d229ecb9e
cxx: Implement more of EnumValue in template.
2014-11-12 02:27:04 +01:00
Uwe Hermann
80fe524740
bindings: Use getters now that 'struct sr_dev_inst' is opaque.
2014-11-11 16:55:37 +01:00
Martin Ling
d3a401c15b
bindings: Remove Device::description().
2014-10-15 13:44:44 +02:00
Martin Ling
1411f7d8e9
bindings: Add Session::filename() and corresponding SWIG attribute.
2014-10-15 13:44:44 +02:00
Martin Ling
73a1eb017b
bindings: Add accessor to obtain parent object.
2014-10-15 13:44:44 +02:00
Martin Ling
f36f7d0282
C++: Don't clear Session::_owned_devices() in Session::remove_devices().
...
Owned devices are freed only when the session is destroyed.
2014-10-15 13:44:25 +02:00
Jens Steinhauser
174bf146e5
bindings: Better error handling in enumeration get() function.
...
Prior to this patch a call to get() with an invalid enumeration value
would raise an exception that would, for example, terminate the python
interpreter, whereas now the exception is handled and translated into a
proper python exception.
2014-10-07 15:15:17 +02:00
Martin Ling
98d39b919a
Return sensible Device::description() for session and input devices.
2014-09-30 17:32:09 +01:00
Martin Ling
ca4e307a93
C++: Fix management of SessionDevice objects.
2014-09-30 16:05:27 +01:00
Martin Ling
584f76a78a
C++: Add spaces in Device::description().
2014-09-30 13:19:27 +01:00
Martin Ling
d1075e5acf
C++: Expose device serial number and connection ID.
2014-09-30 11:50:07 +01:00
Martin Ling
4c7c4194cb
C++: Expose config key capabilities.
2014-09-30 11:07:55 +01:00
Martin Ling
9c51e8ec56
bindings: Update for input API changes.
2014-09-30 01:50:17 +02:00
Aurelien Jacobs
03a4c07aff
C++: handle uint32_t SR_CONF keys which contain key capabilities
...
This adapts the C++ bindings according to commits 584560f
and 5827f61
.
2014-09-30 00:37:03 +02:00
Martin Ling
a4e4745458
C++: Make hardware device instances user owned.
2014-09-14 05:33:24 +01:00
Martin Ling
db560903d1
C++: use constructors for default argument declarations.
2014-09-13 20:23:46 +01:00
Martin Ling
35114c3394
C++: include <cmath> for NAN.
2014-09-13 20:23:23 +01:00
Martin Ling
3b16108573
bindings: Remove 'get_' prefix from all accessors.
2014-09-11 21:27:32 +01:00
Martin Ling
d4cf45e516
C++: Whitespace fix.
2014-09-08 19:27:38 +02:00
Martin Ling
cac58676e9
C++: Add SessionDevice class for devices owned by loaded sessions.
2014-09-08 19:27:38 +02:00
Martin Ling
be43d5d584
C++: Preserve original channel ordering.
2014-09-08 19:27:38 +02:00
Martin Ling
d9eed47d5b
C++: Add Configurable::config_check() method.
2014-09-08 19:27:38 +02:00
Martin Ling
d54190a363
C++: Add Configurable::config_keys() method.
2014-09-08 19:27:38 +02:00
Martin Ling
59b74d28c9
C++: Make Driver inherit Configurable.
2014-09-08 19:27:38 +02:00
Martin Ling
4f7bcf0ec3
C++: Fix recursion loop in PacketPayload::get_shared_pointer().
2014-09-08 19:27:37 +02:00
Martin Ling
b4ed33a776
C++: Implement Deleter pattern in UserOwned template.
2014-09-02 22:35:16 +02:00
Martin Ling
90e89c2a42
C++: Add UserOwned base template for objects with resources owned by user.
2014-09-02 22:35:16 +02:00
Martin Ling
541c855e1d
C++: Rename StructureWrapper to ParentOwned.
2014-09-02 22:35:16 +02:00
Martin Ling
bf52cc8cf2
C++: Make StructureWrapper a recurring template, eliminating lots of casts.
2014-09-02 22:35:16 +02:00
Martin Ling
ba4eac48d4
C++: Don't spell out arguments to StructureWrapper when not required.
2014-09-02 22:35:16 +02:00
Martin Ling
0d0170ae9e
C++: Fix duplicated shared_ptr creation.
2014-09-02 21:33:47 +02:00
Martin Ling
3bc172a61f
C++: Remove erroneous stray method.
2014-09-02 21:33:47 +02:00
Martin Ling
78132e2a13
C++: Add sanity checks in StructureWrapper.
2014-08-31 19:03:31 +02:00
Marcus Comstedt
d92de05ad1
C++: Provide fallbacks for missing stoi/stod functions
...
Notably, Android does not provide these functions. The fallback
implementation is based on the one in the GNU ISO C++ Library.
2014-08-31 13:31:35 +02:00
Martin Ling
4cd883a7f3
C++: Fix shared pointer handling for PacketPayload base class.
2014-08-29 20:06:49 +01:00
Martin Ling
b31581f8a8
C++: Fix hash table initialisation in map_to_hash_variant.
2014-08-29 17:35:46 +01:00
Martin Ling
d01d231487
C++: Fix shared pointer handling for Device base class.
2014-08-29 14:01:51 +01:00
Bert Vermeulen
f88c73732c
C++: Use sr_input_scan_*() API changes.
2014-08-28 12:19:55 +02:00
Martin Ling
7f5a036750
C++: Update InputFormat::get_options for latest version of input API.
2014-08-26 01:55:41 +02:00
Martin Ling
43942280bb
C++: Implement InputFormat::get_options()
2014-08-26 01:55:41 +02:00
Martin Ling
6e5240f418
C++: Correct ownership of InputDevice objects.
2014-08-26 01:55:41 +02:00
Martin Ling
ca3291e3ee
Update bindings for new input API.
2014-08-26 01:55:41 +02:00
Marcus Comstedt
33c84e8197
Makefile.am: Fix out-of-tree build for C++ and Java bindings
2014-08-17 12:58:39 +02:00
Martin Ling
70d3b20ba6
bindings: update for sr_output_options_{get,free} API change.
2014-08-17 11:44:05 +01:00
Uwe Hermann
ac0db24ad4
Doxygen: Silence Doxygen warnings by default.
...
This allows for a clean build per default. Developers can enable
those switches while writing documentation to get a few useful
warnings.
2014-08-10 18:16:07 +02:00
Martin Ling
b6f411ac4e
C++: Add parameter documentation and additional method descriptions.
2014-08-10 15:47:14 +02:00
Martin Ling
bd4fda2407
bindings: Transfer C++ documentation strings to Python and Java wrappers.
2014-08-10 15:47:13 +02:00
Martin Ling
84c870852a
C++ bindings: Attach documentation to enum wrapper classes.
2014-08-10 15:47:13 +02:00
Martin Ling
3532ed0125
C++ bindings: Reimplement enums.py using doxygen XML output instead of gccxml.
2014-08-10 15:47:13 +02:00