X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=src%2Fmain.cpp;h=6ade4978fa3f7d1e636d4170477190be6e46df5b;hb=9710a16a95584e51590c23bff9426f532ed7b98b;hp=15c968e7b2bc1e0fd70a63cb3889343a65950609;hpb=aa03d5d8df84b99aba95843ae6af5c155411abcf;p=libsigrokflow.git diff --git a/src/main.cpp b/src/main.cpp index 15c968e..6ade497 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -19,15 +19,11 @@ */ #include -#include #include namespace Srf { -using namespace std; -using namespace std::placeholders; - Sink::Sink(GstBaseSink *gobj) : Gst::BaseSink(gobj) { @@ -43,158 +39,4 @@ CaptureDevice::CaptureDevice(GstElement *gobj) : { } -#ifdef HAVE_LIBSIGROKCXX -void LegacyOutput::class_init(Gst::ElementClass *klass) -{ - klass->set_metadata("sigrok legacy output", - "Sink", "Wrapper for outputs using legacy libsigrok APIs", - "Martin Ling"); - - klass->add_pad_template(Gst::PadTemplate::create( - "sink", - Gst::PAD_SINK, - Gst::PAD_ALWAYS, - Gst::Caps::create_any())); -} - -bool LegacyOutput::register_element(Glib::RefPtr plugin) -{ - Gst::ElementFactory::register_element(plugin, "sigrok_legacy_output", - 0, Gst::register_mm_type( - "sigrok_legacy_output")); - - return true; -} - -LegacyOutput::LegacyOutput(GstBaseSink *gobj) : - Glib::ObjectBase(typeid(LegacyOutput)), - Sink(gobj) -{ -} - -Glib::RefPtrLegacyOutput::create( - shared_ptr libsigrok_output_format, - shared_ptr libsigrok_device, - map options) -{ - auto element = Gst::ElementFactory::create_element("sigrok_legacy_output"); - if (!element) - throw runtime_error("Failed to create element - plugin not registered?"); - auto output = Glib::RefPtr::cast_static(element); - output->libsigrok_output_format_ = libsigrok_output_format; - output->libsigrok_device_ = libsigrok_device; - output->options_ = options; - - return output; -} - -bool LegacyOutput::start_vfunc() -{ - libsigrok_output_ = libsigrok_output_format_->create_output( - libsigrok_device_, options_); - - return true; -} - -Gst::FlowReturn LegacyOutput::render_vfunc(const Glib::RefPtr &buffer) -{ - Gst::MapInfo info; - buffer->map(info, Gst::MAP_READ); - auto context = libsigrok_output_format_->parent(); - auto packet = context->create_logic_packet( - info.get_data(), info.get_size(), 2); - auto result = libsigrok_output_->receive(packet); - cout << result; - buffer->unmap(info); - - return Gst::FLOW_OK; -} - -bool LegacyOutput::stop_vfunc() -{ - auto context = libsigrok_output_format_->parent(); - auto end_packet = context->create_end_packet(); - auto result = libsigrok_output_->receive(end_packet); - cout << result; - - return true; -} -#endif - -#ifdef HAVE_LIBSIGROKDECODE -void LegacyDecoder::class_init(Gst::ElementClass *klass) -{ - klass->set_metadata("sigrok legacy decoder", - "Sink", "Wrapper for protocol decoders using legacy libsigrokdecode APIs", - "Uwe Hermann"); - - klass->add_pad_template(Gst::PadTemplate::create( - "sink", - Gst::PAD_SINK, - Gst::PAD_ALWAYS, - Gst::Caps::create_any())); -} - -bool LegacyDecoder::register_element(Glib::RefPtr plugin) -{ - Gst::ElementFactory::register_element(plugin, "sigrok_legacy_decoder", - 0, Gst::register_mm_type( - "sigrok_legacy_decoder")); - - return true; -} - -LegacyDecoder::LegacyDecoder(GstBaseSink *gobj) : - Glib::ObjectBase(typeid(LegacyDecoder)), - Sink(gobj) -{ -} - -Glib::RefPtrLegacyDecoder::create( - struct srd_session *libsigrokdecode_session, uint64_t unitsize) -{ - auto element = Gst::ElementFactory::create_element("sigrok_legacy_decoder"); - if (!element) - throw runtime_error("Failed to create element - plugin not registered?"); - auto decoder = Glib::RefPtr::cast_static(element); - decoder->session_ = libsigrokdecode_session; - decoder->unitsite_ = unitsize; - - return decoder; -} - -struct srd_session *LegacyDecoder::libsigrokdecode_session() -{ - return session_; -} - -Gst::FlowReturn LegacyDecoder::render_vfunc(const Glib::RefPtr &buffer) -{ - Gst::MapInfo info; - buffer->map(info, Gst::MAP_READ); - uint64_t num_samples = info.get_size() / unitsite_; - srd_session_send(session_, abs_ss_, abs_ss_ + num_samples, - info.get_data(), info.get_size(), unitsite_); - abs_ss_ += num_samples; - buffer->unmap(info); - - return Gst::FLOW_OK; -} - -bool LegacyDecoder::start_vfunc() -{ - abs_ss_ = 0; - srd_session_start(session_); - - return true; -} - -bool LegacyDecoder::stop_vfunc() -{ - srd_session_terminate_reset(session_); - - return true; -} -#endif - }