- struct context *ctx = data;
- uint8_t buf[BUFSIZE];
- uint64_t nb_to_send = 0;
- int bytes_written;
- double time_cur, time_last, time_diff;
-
- time_last = g_timer_elapsed(ctx->timer, NULL);
-
- while (thread_running) {
- /* Rate control */
- time_cur = g_timer_elapsed(ctx->timer, NULL);
-
- time_diff = time_cur - time_last;
- time_last = time_cur;
-
- nb_to_send = cur_samplerate * time_diff;
-
- if (limit_samples) {
- nb_to_send = MIN(nb_to_send,
- limit_samples - ctx->samples_counter);
- }
-
- /* Make sure we don't overflow. */
- nb_to_send = MIN(nb_to_send, BUFSIZE);
-
- if (nb_to_send) {
- samples_generator(buf, nb_to_send, data);
- ctx->samples_counter += nb_to_send;
-
- g_io_channel_write_chars(ctx->channels[1], (gchar *)&buf,
- nb_to_send, (gsize *)&bytes_written, NULL);
+ struct dev_context *devc;
+ uint64_t i, j;
+ uint8_t pat;
+
+ devc = sdi->priv;
+
+ switch (devc->logic_pattern) {
+ case PATTERN_SIGROK:
+ memset(devc->logic_data, 0x00, size);
+ for (i = 0; i < size; i += devc->logic_unitsize) {
+ for (j = 0; j < devc->logic_unitsize; j++) {
+ pat = pattern_sigrok[(devc->step + j) % sizeof(pattern_sigrok)] >> 1;
+ devc->logic_data[i + j] = ~pat;
+ }
+ devc->step++;