]> 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 3b75f88482e6ec3bc5613471f3dfde9d40a826e1..841d4fd7b874cdf4ba30227beaf862f361d60627 100644 (file)
@@ -14,8 +14,7 @@
  * GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
+ * along with this program; if not, see <http://www.gnu.org/licenses/>.
  */
 
 #include <cassert>
@@ -38,7 +37,8 @@ namespace decode {
 
 Decoder::Decoder(const srd_decoder *const dec) :
        decoder_(dec),
-       shown_(true)
+       shown_(true),
+       initial_pins_(nullptr)
 {
 }
 
@@ -69,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_;
 }
@@ -143,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