X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fsoft-trigger.c;h=0c5bb466da416100719f617c397badf7f4ca8d63;hb=82b9f3d116ce0c982291a2dfdd15cd8a1c4cc16e;hp=c92365e2baf4eb43aea24baf5115d7c871950ea0;hpb=eca9772971873206364e5cf9882c238766ac5dbb;p=libsigrok.git diff --git a/src/soft-trigger.c b/src/soft-trigger.c index c92365e2..0c5bb466 100644 --- a/src/soft-trigger.c +++ b/src/soft-trigger.c @@ -22,9 +22,24 @@ #include #include "libsigrok-internal.h" -/* @cond PRIVATE */ +/** @cond PRIVATE */ #define LOG_PREFIX "soft-trigger" -/* @endcond */ +/** @endcond */ + +SR_PRIV int logic_channel_unitsize(GSList *channels) +{ + int number = 0; + struct sr_channel *channel; + GSList *l; + + for (l = channels; l; l = l->next) { + channel = l->data; + if (channel->type == SR_CHANNEL_LOGIC) + number++; + } + + return (number + 7) / 8; +} SR_PRIV struct soft_trigger_logic *soft_trigger_logic_new( const struct sr_dev_inst *sdi, struct sr_trigger *trigger, @@ -35,7 +50,7 @@ SR_PRIV struct soft_trigger_logic *soft_trigger_logic_new( stl = g_malloc0(sizeof(struct soft_trigger_logic)); stl->sdi = sdi; stl->trigger = trigger; - stl->unitsize = (g_slist_length(sdi->channels) + 7) / 8; + stl->unitsize = logic_channel_unitsize(sdi->channels); stl->prev_sample = g_malloc0(stl->unitsize); stl->pre_trigger_size = stl->unitsize * pre_trigger_samples; stl->pre_trigger_buffer = g_try_malloc(stl->pre_trigger_size);