+ /* Set initial pins. */
+ if (pd->initial_pins) {
+ initial_pins = g_array_sized_new(FALSE, TRUE, sizeof(uint8_t),
+ di->dec_num_channels);
+ g_array_set_size(initial_pins, di->dec_num_channels);
+ memset(initial_pins->data, SRD_INITIAL_PIN_SAME_AS_SAMPLE0,
+ di->dec_num_channels);
+
+ for (l = pd->channels, idx = 0; l; l = l->next, idx++) {
+ channel = l->data;
+ for (l2 = pd->initial_pins; l2; l2 = l2->next) {
+ initial_pin = l2->data;
+ if (!strcmp(initial_pin->name, channel->name))
+ initial_pins->data[idx] = initial_pin->value;
+ }
+ }
+
+ if (srd_inst_initial_pins_set_all(di, initial_pins) != SRD_OK) {
+ ERR("srd_inst_initial_pins_set_all() failed");
+ return FALSE;
+ }
+ g_array_free(initial_pins, TRUE);
+ }
+