@@ -1376,7 +1376,7 @@ static void *command_worker(void *arg)
1376
1376
1377
1377
int init_rsp_device (unsigned int sr , unsigned int freq , int enable_bias_t , unsigned int notch , int enable_refout , int antenna )
1378
1378
{
1379
- int r ;
1379
+ int r , dec ;
1380
1380
uint8_t ifgain , lnastate ;
1381
1381
1382
1382
// initialise frequency state
@@ -1388,14 +1388,38 @@ int init_rsp_device(unsigned int sr, unsigned int freq, int enable_bias_t, unsig
1388
1388
gain_reduction = ifgain ;
1389
1389
lna_state = lnastate ;
1390
1390
}
1391
-
1391
+
1392
+ if (sr < 300e3 ) { bwType = mir_sdr_BW_0_200 ; }
1393
+ else if (sr < 600e3 ) { bwType = mir_sdr_BW_0_300 ; }
1394
+ else if (sr < 1536e3 ) { bwType = mir_sdr_BW_0_600 ; }
1395
+ else if (sr < 5e6 ) { bwType = mir_sdr_BW_1_536 ; }
1396
+ else if (sr < 6e6 ) { bwType = mir_sdr_BW_5_000 ; }
1397
+ else if (sr < 7e6 ) { bwType = mir_sdr_BW_6_000 ; }
1398
+ else if (sr < 8e6 ) { bwType = mir_sdr_BW_7_000 ; }
1399
+ else { bwType = mir_sdr_BW_8_000 ; }
1400
+
1401
+ dec = 1 ;
1402
+ if (sr < 2e6 )
1403
+ {
1404
+ while (sr < 2e6 )
1405
+ {
1406
+ sr = sr * 2 ;
1407
+ dec = dec * 2 ;
1408
+ }
1409
+ }
1410
+
1392
1411
r = mir_sdr_StreamInit (& gain_reduction , (sr / 1e6 ), (freq / 1e6 ), bwType , mir_sdr_IF_Zero ,
1393
1412
lna_state , & infoOverallGr , mir_sdr_USE_RSP_SET_GR ,
1394
1413
& samples_per_packet , rx_callback , gc_callback , (void * )NULL );
1395
1414
if (r != mir_sdr_Success ) {
1396
1415
fprintf (stderr , "failed to start the RSP device, return (%d)\n" , r );
1397
1416
return -1 ;
1398
1417
}
1418
+
1419
+ if (dec > 1 )
1420
+ {
1421
+ mir_sdr_DecimateControl (1 , dec , 1 );
1422
+ }
1399
1423
1400
1424
printf ("started rx\n" );
1401
1425
0 commit comments