Skip to content

Commit

Permalink
Try to resync on sync loss
Browse files Browse the repository at this point in the history
  • Loading branch information
vladisslav2011 committed Jul 31, 2022
1 parent f4daa77 commit d9d7584
Show file tree
Hide file tree
Showing 7 changed files with 17 additions and 0 deletions.
11 changes: 11 additions & 0 deletions src/async.c
Original file line number Diff line number Diff line change
Expand Up @@ -206,6 +206,16 @@ static void LIBUSB_CALL _libusb_callback (struct libusb_transfer *xfer) {

if (bytes > 0) mirisdr_feed_async(p, samples, bytes);

if (xfer->type == LIBUSB_TRANSFER_TYPE_BULK)
{
if(p->sync_loss_cnt > (int)p->xfer_buf_num)
{
p->sync_loss_cnt = -p->xfer_buf_num +1;
xfer->length = DEFAULT_BULK_BUFFER - 512;
fprintf(stderr,"libmirisdr: Sync lost. Trying to synchronize.\n");
}else
xfer->length = DEFAULT_BULK_BUFFER;
}
/* pokračujeme dalším přenosem */
if (libusb_submit_transfer(xfer) < 0) {
fprintf( stderr, "error re-submitting URB on device %u\n", p->index);
Expand Down Expand Up @@ -382,6 +392,7 @@ int mirisdr_read_async (mirisdr_dev_t *p, mirisdr_read_async_cb_t cb, void *ctx,
fprintf( stderr, "auto");
}
#endif
p->sync_loss_cnt = 0;
/* použití správného rozhraní které zasílá data - není kritické */
switch (p->transfer) {
case MIRISDR_TRANSFER_BULK:
Expand Down
1 change: 1 addition & 0 deletions src/convert/252_s16.c
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ static int mirisdr_samples_convert_252_s16 (mirisdr_dev_t *p, unsigned char* buf
/* potenciálně ztracená data */
if ((i == 0) && (addr != p->addr)) {
fprintf(stderr, "%u samples lost, %d, %08x:%08x\n", addr - p->addr, cnt, p->addr, addr);
p->sync_loss_cnt++;
}

/* přeskočíme hlavičku 16 bitů, 252 I+Q párů */
Expand Down
1 change: 1 addition & 0 deletions src/convert/336_s16.c
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ static int mirisdr_samples_convert_336_s16 (mirisdr_dev_t *p, unsigned char* buf
/* potenciálně ztracená data */
if ((i == 0) && (addr != p->addr)) {
fprintf(stderr, "%u samples lost, %d, %08x:%08x\n", addr - p->addr, cnt, p->addr, addr);
p->sync_loss_cnt++;
}

/* přeskočíme hlavičku 16 bitů, 336 I+Q párů */
Expand Down
1 change: 1 addition & 0 deletions src/convert/384_s16.c
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ static int mirisdr_samples_convert_384_s16 (mirisdr_dev_t *p, unsigned char* buf
/* potenciálně ztracená data */
if ((i == 0) && (addr != p->addr)) {
fprintf(stderr, "%u samples lost, %d, %08x:%08x\n", addr - p->addr, cnt, p->addr, addr);
p->sync_loss_cnt++;
}

/* přeskočíme hlavičku 16 bitů, 6 bloků, poslední 4 bajtový posuvný blok zpracujeme */
Expand Down
1 change: 1 addition & 0 deletions src/convert/504_s16.c
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ static int mirisdr_samples_convert_504_s16 (mirisdr_dev_t *p, unsigned char* buf
/* potenciálně ztracená data */
if ((i == 0) && (addr != p->addr)) {
fprintf(stderr, "%u samples lost, %d, %08x:%08x\n", addr - p->addr, cnt, p->addr, addr);
p->sync_loss_cnt++;
}

/* přeskočíme hlavičku 16 bitů, 504 I+Q párů */
Expand Down
1 change: 1 addition & 0 deletions src/convert/504_s8.c
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ static int mirisdr_samples_convert_504_s8 (mirisdr_dev_t *p, unsigned char* src,
if (p->addr != addr) {
fprintf(stderr, "%u samples lost, %d, %08x:%08x\n", addr - p->addr, cnt, p->addr, addr);
p->addr = addr;
p->sync_loss_cnt++;
}

for (i = 16; i < cnt; i+= 1024, ret+= 1008) {
Expand Down
1 change: 1 addition & 0 deletions src/structs.h
Original file line number Diff line number Diff line change
Expand Up @@ -100,5 +100,6 @@ struct mirisdr_dev {
int reg8;
uint8_t *samples;
int samples_size;
int sync_loss_cnt;
};

0 comments on commit d9d7584

Please sign in to comment.