@@ -377,8 +377,7 @@ SR_PRIV int ols_receive_data(int fd, int revents, void *cb_data)
377377 struct sr_datafeed_packet packet ;
378378 struct sr_datafeed_logic logic ;
379379 uint32_t sample ;
380- int num_changroups , j ;
381- unsigned int i ;
380+ unsigned int i , j , num_changroups ;
382381 unsigned char byte ;
383382
384383 (void )fd ;
@@ -387,7 +386,7 @@ SR_PRIV int ols_receive_data(int fd, int revents, void *cb_data)
387386 serial = sdi -> conn ;
388387 devc = sdi -> priv ;
389388
390- if (devc -> cnt_bytes == 0 && revents == 0 ) {
389+ if (devc -> cnt_rx_bytes == 0 && revents == 0 ) {
391390 /* Ignore timeouts as long as we haven't received anything */
392391 return TRUE;
393392 }
@@ -402,33 +401,31 @@ SR_PRIV int ols_receive_data(int fd, int revents, void *cb_data)
402401 if (revents == G_IO_IN ) {
403402 if (serial_read_nonblocking (serial , & byte , 1 ) != 1 )
404403 return FALSE;
405- devc -> cnt_bytes ++ ;
404+ devc -> cnt_rx_bytes ++ ;
406405
407- devc -> sample [devc -> num_bytes ++ ] = byte ;
406+ devc -> raw_sample [devc -> raw_sample_size ++ ] = byte ;
408407 sr_spew ("Received byte 0x%.2x." , byte );
409- if (devc -> num_bytes == num_changroups ) {
410- devc -> cnt_samples ++ ;
411- devc -> cnt_samples_rle ++ ;
408+ if (devc -> raw_sample_size == num_changroups ) {
409+ devc -> cnt_rx_raw_samples ++ ;
412410 /*
413411 * Got a full sample. Convert from the OLS's little-endian
414412 * sample to the local format.
415413 */
416- sample = devc -> sample [0 ] | (devc -> sample [1 ] << 8 ) \
417- | (devc -> sample [2 ] << 16 ) | (devc -> sample [3 ] << 24 );
418- sr_dbg ("Received sample 0x%.*x." , devc -> num_bytes * 2 , sample );
414+ sample = devc -> raw_sample [0 ] | (devc -> raw_sample [1 ] << 8 ) \
415+ | (devc -> raw_sample [2 ] << 16 ) | (devc -> raw_sample [3 ] << 24 );
416+ sr_dbg ("Received sample 0x%.*x." , devc -> raw_sample_size * 2 , sample );
419417 if (devc -> capture_flags & CAPTURE_FLAG_RLE ) {
420418 /*
421419 * In RLE mode the high bit of the sample is the
422420 * "count" flag, meaning this sample is the number
423421 * of times the previous sample occurred.
424422 */
425- if (devc -> sample [devc -> num_bytes - 1 ] & 0x80 ) {
423+ if (devc -> raw_sample [devc -> raw_sample_size - 1 ] & 0x80 ) {
426424 /* Clear the high bit. */
427- sample &= ~(0x80 << (devc -> num_bytes - 1 ) * 8 );
425+ sample &= ~(0x80 << (devc -> raw_sample_size - 1 ) * 8 );
428426 devc -> rle_count = sample ;
429- devc -> cnt_samples_rle += devc -> rle_count ;
430427 sr_dbg ("RLE count: %u." , devc -> rle_count );
431- devc -> num_bytes = 0 ;
428+ devc -> raw_sample_size = 0 ;
432429 return TRUE;
433430 }
434431 }
@@ -452,38 +449,41 @@ SR_PRIV int ols_receive_data(int fd, int revents, void *cb_data)
452449 * enabled, copy from received
453450 * sample.
454451 */
455- tmp_sample [i ] = devc -> sample [j ++ ];
452+ tmp_sample [i ] = devc -> raw_sample [j ++ ];
456453 }
457454 }
458- memcpy (devc -> sample , tmp_sample , 4 );
455+ memcpy (devc -> raw_sample , tmp_sample , 4 );
459456 sr_spew ("Expanded sample: 0x%.2hhx%.2hhx%.2hhx%.2hhx " ,
460- devc -> sample [3 ], devc -> sample [2 ], devc -> sample [1 ], devc -> sample [0 ]);
457+ devc -> raw_sample [3 ], devc -> raw_sample [2 ], devc -> raw_sample [1 ],
458+ devc -> raw_sample [0 ]);
461459 }
462460
463461 unsigned int samples_to_write = devc -> rle_count + 1 ;
464462 unsigned int new_sample_buf_size =
465- 4 * MAX (devc -> limit_samples , devc -> num_samples + samples_to_write );
466- if (devc -> raw_sample_buf_size < new_sample_buf_size ) {
467- unsigned int old_size = devc -> raw_sample_buf_size ;
463+ 4 * MAX (devc -> limit_samples , devc -> cnt_samples + samples_to_write );
464+ if (devc -> sample_buf_size < new_sample_buf_size ) {
465+ unsigned int old_size = devc -> sample_buf_size ;
468466 new_sample_buf_size *= 2 ;
469- devc -> raw_sample_buf = g_try_realloc (devc -> raw_sample_buf , new_sample_buf_size );
470- devc -> raw_sample_buf_size = new_sample_buf_size ;
467+ devc -> sample_buf = g_try_realloc (devc -> sample_buf , new_sample_buf_size );
468+ devc -> sample_buf_size = new_sample_buf_size ;
471469
472- if (!devc -> raw_sample_buf ) {
470+ if (!devc -> sample_buf ) {
473471 sr_err ("Sample buffer malloc failed." );
474472 return FALSE;
475473 }
476474 /* fill with 1010... for debugging */
477- memset (devc -> raw_sample_buf + old_size , 0x82 , new_sample_buf_size - old_size );
475+ memset (devc -> sample_buf + old_size , 0x82 ,
476+ new_sample_buf_size - old_size );
478477 }
479478
480479 for (i = 0 ; i < samples_to_write ; i ++ )
481- memcpy (devc -> raw_sample_buf + (devc -> num_samples + i ) * 4 , devc -> sample , 4 );
480+ memcpy (devc -> sample_buf + (devc -> cnt_samples + i ) * 4 , devc -> raw_sample ,
481+ 4 );
482482
483- devc -> num_samples += samples_to_write ;
483+ devc -> cnt_samples += samples_to_write ;
484484
485- memset (devc -> sample , 0 , 4 );
486- devc -> num_bytes = 0 ;
485+ memset (devc -> raw_sample , 0 , 4 );
486+ devc -> raw_sample_size = 0 ;
487487 devc -> rle_count = 0 ;
488488 }
489489 } else {
@@ -492,19 +492,20 @@ SR_PRIV int ols_receive_data(int fd, int revents, void *cb_data)
492492 * we've acquired all the samples we asked for -- we're done.
493493 * Send the (properly-ordered) buffer to the frontend.
494494 */
495- sr_dbg ("Received %d bytes, %d samples, %d decompressed samples." ,
496- devc -> cnt_bytes , devc -> cnt_samples ,
497- devc -> cnt_samples_rle );
495+ sr_dbg ("Received %d bytes, %d raw samples, %d decompressed samples." ,
496+ devc -> cnt_rx_bytes , devc -> cnt_rx_raw_samples ,
497+ devc -> cnt_samples );
498498
499499 /*
500500 * The OLS sends its sample buffer backwards.
501501 * Flip it back before sending it on the session bus.
502502 */
503- for (i = 0 ; i < devc -> num_samples /2 ; i ++ ) {
503+ for (i = 0 ; i < devc -> cnt_samples /2 ; i ++ ) {
504504 uint8_t temp [4 ];
505- memcpy (temp , & devc -> raw_sample_buf [4 * i ], 4 );
506- memmove (& devc -> raw_sample_buf [4 * i ], & devc -> raw_sample_buf [4 * (devc -> num_samples - i - 1 )], 4 );
507- memcpy (& devc -> raw_sample_buf [4 * (devc -> num_samples - i - 1 )], temp , 4 );
505+ memcpy (temp , & devc -> sample_buf [4 * i ], 4 );
506+ memmove (& devc -> sample_buf [4 * i ],
507+ & devc -> sample_buf [4 * (devc -> cnt_samples - i - 1 )], 4 );
508+ memcpy (& devc -> sample_buf [4 * (devc -> cnt_samples - i - 1 )], temp , 4 );
508509 }
509510
510511 if (devc -> trigger_at_smpl != OLS_NO_TRIGGER ) {
@@ -513,13 +514,13 @@ SR_PRIV int ols_receive_data(int fd, int revents, void *cb_data)
513514 * about it.
514515 */
515516 if (devc -> trigger_at_smpl > 0
516- && (unsigned int )devc -> trigger_at_smpl <= devc -> num_samples ) {
517+ && (unsigned int )devc -> trigger_at_smpl <= devc -> cnt_samples ) {
517518 /* There are pre-trigger samples, send those first. */
518519 packet .type = SR_DF_LOGIC ;
519520 packet .payload = & logic ;
520521 logic .length = devc -> trigger_at_smpl * 4 ;
521522 logic .unitsize = 4 ;
522- logic .data = devc -> raw_sample_buf ;
523+ logic .data = devc -> sample_buf ;
523524 sr_session_send (sdi , & packet );
524525 }
525526
@@ -528,19 +529,20 @@ SR_PRIV int ols_receive_data(int fd, int revents, void *cb_data)
528529 }
529530
530531 /* Send post-trigger / all captured samples. */
531- unsigned int num_pre_trigger_samples = devc -> trigger_at_smpl == OLS_NO_TRIGGER
532- ? 0 : MIN ((unsigned int )devc -> trigger_at_smpl , devc -> num_samples );
533- if (devc -> num_samples > num_pre_trigger_samples ) {
532+ unsigned int num_pre_trigger_samples =
533+ devc -> trigger_at_smpl == OLS_NO_TRIGGER ? 0
534+ : MIN ((unsigned int )devc -> trigger_at_smpl , devc -> cnt_samples );
535+ if (devc -> cnt_samples > num_pre_trigger_samples ) {
534536 packet .type = SR_DF_LOGIC ;
535537 packet .payload = & logic ;
536- logic .length = (devc -> num_samples - num_pre_trigger_samples ) * 4 ;
538+ logic .length = (devc -> cnt_samples - num_pre_trigger_samples ) * 4 ;
537539 logic .unitsize = 4 ;
538- logic .data = devc -> raw_sample_buf + num_pre_trigger_samples * 4 ;
540+ logic .data = devc -> sample_buf + num_pre_trigger_samples * 4 ;
539541 sr_session_send (sdi , & packet );
540542 }
541543
542- g_free (devc -> raw_sample_buf );
543- devc -> raw_sample_buf = 0 ;
544+ g_free (devc -> sample_buf );
545+ devc -> sample_buf = 0 ;
544546
545547 serial_flush (serial );
546548 abort_acquisition (sdi );
0 commit comments