]> sigrok.org Git - libsigrok.git/blobdiff - bindings/cxx/classes.cpp
C++: Add bindings for session stop notification
[libsigrok.git] / bindings / cxx / classes.cpp
index a944faa21b879aaa191ddf7acf4e224e27c2a195..f40a6dc571d27aebf124427cf62cf6763096aea4 100644 (file)
@@ -1025,6 +1025,31 @@ void Session::stop()
        check(sr_session_stop(_structure));
 }
 
+bool Session::is_running() const
+{
+       const int ret = sr_session_is_running(_structure);
+       if (ret < 0)
+               throw Error{ret};
+       return (ret != 0);
+}
+
+static void session_stopped_callback(void *data)
+{
+       auto *const callback = static_cast<SessionStoppedCallback*>(data);
+       (*callback)();
+}
+
+void Session::set_stopped_callback(SessionStoppedCallback callback)
+{
+       _stopped_callback = move(callback);
+       if (_stopped_callback)
+               check(sr_session_stopped_callback_set(_structure,
+                               &session_stopped_callback, &_stopped_callback));
+       else
+               check(sr_session_stopped_callback_set(_structure,
+                               nullptr, nullptr));
+}
+
 static void datafeed_callback(const struct sr_dev_inst *sdi,
        const struct sr_datafeed_packet *pkt, void *cb_data)
 {