- devc->send_data_proc(sdi, (uint8_t *)transfer->buffer,
- num_samples * unitsize, unitsize);
- devc->sent_samples += num_samples;
+ if(devc->dslogic && devc->trigger_pos > devc->sent_samples
+ && devc->trigger_pos <= devc->sent_samples + num_samples){
+ /* dslogic trigger in this block. Send trigger position */
+ trigger_offset = devc->trigger_pos - devc->sent_samples;
+ /* pre-trigger samples */
+ devc->send_data_proc(sdi, (uint8_t *)transfer->buffer,
+ trigger_offset * unitsize, unitsize);
+ devc->sent_samples += trigger_offset;
+ /* trigger position */
+ devc->trigger_pos = 0;
+ packet.type = SR_DF_TRIGGER;
+ packet.payload = NULL;
+ sr_session_send(sdi, &packet);
+ /* post trigger samples */
+ num_samples -= trigger_offset;
+ devc->send_data_proc(sdi, (uint8_t *)transfer->buffer
+ + trigger_offset * unitsize, num_samples * unitsize, unitsize);
+ devc->sent_samples += num_samples;
+ }else{
+ devc->send_data_proc(sdi, (uint8_t *)transfer->buffer,
+ num_samples * unitsize, unitsize);
+ devc->sent_samples += num_samples;
+ }