return nullptr;
// Setup the channels
- GArray *const init_pin_states = g_array_sized_new(FALSE, TRUE,
+ GArray *const init_pin_states = g_array_sized_new(false, true,
sizeof(uint8_t), channels_.size());
g_array_set_size(init_pin_states, channels_.size());
g_str_equal, g_free, (GDestroyNotify)g_variant_unref);
for (DecodeChannel *ch : channels_) {
+ if (!ch->assigned_signal)
+ continue;
+
init_pin_states->data[ch->id] = ch->initial_pin_state;
- GVariant *const gvar = g_variant_new_int32(ch->id); // id = bit position
+ GVariant *const gvar = g_variant_new_int32(ch->bit_id); // bit_id = bit position
g_variant_ref_sink(gvar);
- // key is channel name, value is bit position in each sample
+ // key is channel name (pdch->id), value is bit position in each sample (gvar)
g_hash_table_insert(channels, ch->pdch_->id, gvar);
}
srd_inst_channel_set_all(decoder_inst, channels);
srd_inst_initial_pins_set_all(decoder_inst, init_pin_states);
- g_array_free(init_pin_states, TRUE);
+ g_array_free(init_pin_states, true);
return decoder_inst;
}