X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=bindings%2Fcxx%2Finclude%2Flibsigrokcxx%2Flibsigrokcxx.hpp;h=2441c2c37b9933f3f602498bf422d79f0938645c;hb=f91cf612dfde284c8a146417644fbfba05cca1a2;hp=54be95df2d3f180ce36fe53178208ac882695aa2;hpb=2b51d48b386a2050d0ab34f242161617877d8e5f;p=libsigrok.git diff --git a/bindings/cxx/include/libsigrokcxx/libsigrokcxx.hpp b/bindings/cxx/include/libsigrokcxx/libsigrokcxx.hpp index 54be95df..2441c2c3 100644 --- a/bindings/cxx/include/libsigrokcxx/libsigrokcxx.hpp +++ b/bindings/cxx/include/libsigrokcxx/libsigrokcxx.hpp @@ -70,7 +70,7 @@ raised, which provides access to the error code and description. #ifndef LIBSIGROKCXX_HPP #define LIBSIGROKCXX_HPP -#include "libsigrok/libsigrok.h" +#include #include #include @@ -96,6 +96,7 @@ class SR_API Session; class SR_API ConfigKey; class SR_API InputFormat; class SR_API OutputFormat; +class SR_API OutputFlag; class SR_API LogLevel; class SR_API ChannelGroup; class SR_API Trigger; @@ -231,6 +232,29 @@ protected: /** Type of log callback */ typedef function LogCallbackFunction; +/** Resource reader delegate. */ +class SR_API ResourceReader +{ +public: + ResourceReader() {} + virtual ~ResourceReader(); +private: + /** Resource open hook. */ + virtual void open(struct sr_resource *res, string name) = 0; + /** Resource close hook. */ + virtual void close(struct sr_resource *res) = 0; + /** Resource read hook. */ + virtual size_t read(const struct sr_resource *res, void *buf, size_t count) = 0; + + static SR_PRIV int open_callback(struct sr_resource *res, + const char *name, void *cb_data); + static SR_PRIV int close_callback(struct sr_resource *res, + void *cb_data); + static SR_PRIV ssize_t read_callback(const struct sr_resource *res, + void *buf, size_t count, void *cb_data); + friend class Context; +}; + /** The global libsigrok context */ class SR_API Context : public UserOwned { @@ -252,16 +276,14 @@ public: /** Set the log level. * @param level LogLevel to use. */ void set_log_level(const LogLevel *level); - /** Current log domain. */ - string log_domain(); - /** Set the log domain. - * @param value Log domain prefix string. */ - void set_log_domain(string value); /** Set the log callback. * @param callback Callback of the form callback(LogLevel, string). */ void set_log_callback(LogCallbackFunction callback); /** Set the log callback to the default handler. */ void set_log_callback_default(); + /** Install a delegate for reading resource files. + * @param reader The resource reader delegate, or nullptr to unset. */ + void set_resource_reader(ResourceReader *reader); /** Create a new session. */ shared_ptr create_session(); /** Create a new user device. */ @@ -567,6 +589,9 @@ protected: friend class TriggerStage; }; +/** Type of session stopped callback */ +typedef function SessionStoppedCallback; + /** Type of datafeed callback */ typedef function, shared_ptr)> DatafeedCallbackFunction; @@ -697,14 +722,10 @@ public: void run(); /** Stop the session. */ void stop(); - /** Begin saving session to a file. - * @param filename File name string. */ - void begin_save(string filename); - /** Append a packet to the session file being saved. - * @param packet Packet to append. */ - void append(shared_ptr packet); - /** Append raw logic data to the session file being saved. */ - void append(void *data, size_t length, unsigned int unit_size); + /** Return whether the session is running. */ + bool is_running() const; + /** Set callback to be invoked on session stop. */ + void set_stopped_callback(SessionStoppedCallback callback); /** Get current trigger setting. */ shared_ptr trigger(); /** Get the context. */ @@ -723,12 +744,9 @@ protected: map _owned_devices; map > _other_devices; vector _datafeed_callbacks; + SessionStoppedCallback _stopped_callback; map, SourceCallbackData *> _source_callbacks; string _filename; - bool _saving; - bool _save_initialized; - string _save_filename; - uint64_t _save_samplerate; shared_ptr _trigger; friend class Deleter; friend class Context; @@ -957,9 +975,25 @@ public: /** Create an output using this format. * @param device Device to output for. * @param options Mapping of (option name, value) pairs. */ - shared_ptr create_output(shared_ptr device, + shared_ptr create_output( + shared_ptr device, map options = map()); + /** Create an output using this format. + * @param filename Name of destination file. + * @param device Device to output for. + * @param options Mapping of (option name, value) pairs. */ + shared_ptr create_output(string filename, + shared_ptr device, + map options = + map()); + /** + * Checks whether a given flag is set. + * @param flag Flag to check + * @return true if flag is set for this module + * @see sr_output_flags + */ + bool test_flag(const OutputFlag *flag); protected: OutputFormat(const struct sr_output_module *structure); ~OutputFormat(); @@ -978,6 +1012,8 @@ protected: Output(shared_ptr format, shared_ptr device); Output(shared_ptr format, shared_ptr device, map options); + Output(string filename, shared_ptr format, + shared_ptr device, map options); ~Output(); const shared_ptr _format; const shared_ptr _device; @@ -1028,7 +1064,7 @@ protected: const string _name; }; -#include "enums.hpp" +#include }