X-Git-Url: http://git.code-monkey.de/?a=blobdiff_plain;f=pv%2Fdata%2Fdecode%2Fdecoder.cpp;h=841d4fd7b874cdf4ba30227beaf862f361d60627;hb=407c9ebeb13200fb7f28a33cab00e996c018f8dc;hp=1513b20be5cb70156db3dfe33c43c8c0e4fd594b;hpb=27c0521002ea986b72d9675b99803665516db14c;p=pulseview.git diff --git a/pv/data/decode/decoder.cpp b/pv/data/decode/decoder.cpp index 1513b20..841d4fd 100644 --- a/pv/data/decode/decoder.cpp +++ b/pv/data/decode/decoder.cpp @@ -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 . */ #include @@ -25,7 +24,7 @@ #include "decoder.hpp" -#include +#include using std::set; using std::map; @@ -38,7 +37,8 @@ namespace decode { Decoder::Decoder(const srd_decoder *const dec) : decoder_(dec), - shown_(true) + shown_(true), + initial_pins_(nullptr) { } @@ -63,19 +63,31 @@ void Decoder::show(bool show) shown_ = show; } -const map >& +const map >& Decoder::channels() const { return channels_; } -void Decoder::set_channels(std::map > channels) +void Decoder::set_channels(map > channels) { channels_ = channels; } -const std::map& 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& Decoder::options() const { return options_; } @@ -103,9 +115,9 @@ set< shared_ptr > Decoder::get_data() { set< shared_ptr > data; for (const auto& channel : channels_) { - shared_ptr signal(channel.second); - assert(signal); - data.insert(signal->logic_data()); + shared_ptr b(channel.second); + assert(b); + data.insert(b->logic_data()); } return data; @@ -135,18 +147,19 @@ srd_decoder_inst* Decoder::create_decoder_inst(srd_session *session) const g_str_equal, g_free, (GDestroyNotify)g_variant_unref); for (const auto& channel : channels_) { - shared_ptr signal(channel.second); - GVariant *const gvar = g_variant_new_int32( - signal->channel()->index()); + shared_ptr b(channel.second); + GVariant *const gvar = g_variant_new_int32(b->index()); g_variant_ref_sink(gvar); g_hash_table_insert(channels, channel.first->id, gvar); } 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