Commit Graph

171 Commits

Author SHA1 Message Date
Daniel Elstner 67b82fc9c9 C++: Use shared_from_this() exclusively on this
Never call shared_from_this() on any object other than "this".
Adapt the API so that it can be made protected.
2015-10-26 06:45:56 +01:00
Daniel Elstner 21d1bec60e C++: Make most members private instead of protected
Use protected only for members which are actually needed by
sub-classes. Declare all the rest private.
2015-10-26 06:45:56 +01:00
Daniel Elstner 15bebf575d C++: Make value get accessors const
Declare accessor methods that return value members const. For now,
skip all cases where constness would have to be applied transitively
to shared objects.
2015-10-26 06:45:56 +01:00
Daniel Elstner a73d492636 C++: Make some methods static to match the C API
Context::package_version() and Context::lib_version() do not access
context state and should be static. However, leave the logging
related methods alone for now, as making them static would entail
making the callback data a global static, since the C API lacks
destroy notification callbacks.
2015-10-26 06:45:56 +01:00
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