]> sigrok.org Git - pulseview.git/blobdiff - pv/data/decode/decoder.cpp
Allow users to set initial pin states for decoders.
[pulseview.git] / pv / data / decode / decoder.cpp
index 5fae925886155a900394cb64d6861e6e3fb37b82..841d4fd7b874cdf4ba30227beaf862f361d60627 100644 (file)
@@ -37,7 +37,8 @@ namespace decode {
 
 Decoder::Decoder(const srd_decoder *const dec) :
        decoder_(dec),
-       shown_(true)
+       shown_(true),
+       initial_pins_(nullptr)
 {
 }
 
@@ -68,13 +69,25 @@ Decoder::channels() const
        return channels_;
 }
 
-void Decoder::set_channels(std::map<const srd_channel*,
-       std::shared_ptr<data::SignalBase> > channels)
+void Decoder::set_channels(map<const srd_channel*,
+       shared_ptr<data::SignalBase> > channels)
 {
        channels_ = channels;
 }
 
-const std::map<std::string, GVariant*>& Decoder::options() const
+void Decoder::set_initial_pins(GArray *initial_pins)
+{
+       if (initial_pins_)
+               g_array_free(initial_pins_, TRUE);
+       initial_pins_ = initial_pins;
+}
+
+GArray *Decoder::initial_pins() const
+{
+       return initial_pins_;
+}
+
+const map<string, GVariant*>& Decoder::options() const
 {
        return options_;
 }
@@ -142,9 +155,11 @@ srd_decoder_inst* Decoder::create_decoder_inst(srd_session *session) const
 
        srd_inst_channel_set_all(decoder_inst, channels);
 
+       srd_inst_initial_pins_set_all(decoder_inst, initial_pins_);
+
        return decoder_inst;
 }
 
-} // decode
-} // data
-} // pv
+}  // namespace decode
+}  // namespace data
+}  // namespace pv