summaryrefslogtreecommitdiff
path: root/hw/sdr.c
diff options
context:
space:
mode:
authorFreeArtMan <dos21h@gmail.com>2016-05-08 16:02:01 +0100
committerFreeArtMan <dos21h@gmail.com>2016-05-08 16:02:01 +0100
commite42911405c4bc2f8c097f47d4598baf8522ef3da (patch)
tree9eb767c5e6a4443e8773b18ea76cf4216f6c8758 /hw/sdr.c
parent9b95088bddcf1f83e3a8f73f08f49b38ecb0f500 (diff)
downloadradiola-e42911405c4bc2f8c097f47d4598baf8522ef3da.tar.gz
radiola-e42911405c4bc2f8c097f47d4598baf8522ef3da.zip
Moved source to src directoryHEADmaster
Diffstat (limited to 'hw/sdr.c')
-rw-r--r--hw/sdr.c315
1 files changed, 0 insertions, 315 deletions
diff --git a/hw/sdr.c b/hw/sdr.c
deleted file mode 100644
index a9590da..0000000
--- a/hw/sdr.c
+++ /dev/null
@@ -1,315 +0,0 @@
-#include "sdr.h"
-
-sdr_t* sdr_init()
-{
- sdr_t *sdr=NULL;
-
- sdr = malloc( sizeof(sdr_t) );
- if (sdr == NULL)
- return NULL;
-
- memset( sdr, 0, sizeof(sdr_t) );
-
- return sdr;
-}
-
-
-//index of device in oter list
-//return inner device list
-int sdr_open_device( sdr_t *sdr, int dev_index )
-{
- int ret;
- dongle_t *dng=NULL;
- rtlsdr_dev_t *rtl=NULL;
-
- //for now only one device will be supported
- if (sdr == NULL)
- return -1;
-
- if (sdr->dongle != NULL)
- return -1;
-
- dng = malloc(sizeof(dongle_t));
- memset(dng, 0, sizeof(dongle_t));
- //set default values for dongle_t
- DEF_DONGLE_VALUES(dng);
-
- ret = hw_open( &rtl, (uint32_t)dev_index );
- if ( ret < 0 )
- {
- printf("Cannot open device %02d\n", dev_index );
- goto exit_dng_err;
- }
-
- ret = hw_reset_buffer( rtl );
- if ( ret < 0 )
- {
- printf("Couldnt reset buffer\n");
- goto exit_dng_err;
- }
-
- ret = hw_set_sample_rate( rtl, dng->rate );
- if ( ret < 0 )
- {
- printf("Couldnt set sample rate to %d\n", dng->rate);
- goto exit_dng_err;
- }
-
- ret = hw_set_center_freq( rtl, dng->freq );
- if ( ret < 0 )
- {
- printf("Couldnt set frequency %d\n", dng->freq );
- goto exit_dng_err;
- }
-
- ret = hw_set_tuner_gain_mode( rtl, dng->gain );
- if ( ret < 0 )
- {
- printf("Cannot set autogain mode\n");
- goto exit_dng_err;
- }
-
- ret = hw_set_agc_mode( rtl, 1 );
- if ( ret < 0 )
- {
- printf("Cannot set agc mode\n");
- goto exit_dng_err;
- }
-
- dng->dev_index = dev_index;
- dng->dev = rtl;
- sdr->dongle = dng;
-
- return 0;
-
-exit_dng_err:
- free( dng );
-
- return -1;
-}
-
-
-//associate audio device that going to be used
-//int sdr_open_audio( sdr_t *sdr, int dev_index );//?should be just device from list or device name?
-
-
-//get device structure from sdr manager by pluged device num
-//dont try to free it muahaha
-dongle_t* sdr_get_device_id( sdr_t *sdr, int dev_index)
-{
- dongle_t *dng=NULL;
-
- if ( sdr == NULL )
- return NULL;
-
- if (sdr->dongle == NULL)
- return NULL;
-
- if (sdr->dongle->dev_index != dev_index)
- {
- printf("Cannot find device with such device ID\n");
- return NULL;
- }
-
- return sdr->dongle;
-}
-
-
-
-//get index in list of devices of structure from outer device index
-//? do we need?
-//int sdr_get_dongle_idx( sdr_t *sdr, int idx );
-//close device by internal list index
-int sdr_close_device( sdr_t *sdr, int dev_index )
-{
- if ( sdr == NULL )
- return -1;
-
- if ( sdr->dongle == NULL )
- {
- return -1;
- }
-
- if ( sdr->dongle->dev == NULL )
- return -1;
-
- if ( sdr->dongle->dev_index != dev_index )
- return -1;
-
- hw_close( sdr->dongle->dev );
- free( sdr->dongle->dev );
- sdr->dongle->dev = NULL;
-
- free( sdr->dongle );
- sdr->dongle = NULL;
-
- return 0;
-}
-
-
-
-//close sdr
-//if there is opened audios then close
-//if there is opened devices then close
-int sdr_close( sdr_t *sdr )
-{
- if ( sdr != NULL )
- {
- if ( sdr->dongle != NULL )
- {
- if ( sdr->dongle->dev != NULL )
- {
- hw_close( sdr->dongle->dev );
- //all ready free'd by rtlsdr
- //free( sdr->dongle->dev );
- sdr->dongle->dev = NULL;
- }
- free( sdr->dongle );
- sdr->dongle = NULL;
- }
- free(sdr);
- sdr = NULL;
- return 0;
- }
- return -1;
-}
-
-
-
-//stop any action that associated with dongle
-//not yet implemented
-int dongle_stop( dongle_t *dongle )
-{
- return -1;
-}
-
-
-//int dongle_open( sdr_t *);
-//set dongle frequency
-int dongle_set_freq( dongle_t *dongle, uint32_t freq)
-{
- int ret = 0;
- if ( dongle == NULL )
- return -1;
-
- if ( dongle->dev == NULL )
- return -1;
-
- ret = hw_set_center_freq( dongle->dev, freq );
- if ( ret < 0 )
- {
- printf("Cannot set device frequency to %ud\n", freq);
- return -1;
- }
-
- return 0;
-}
-
-
-//set gain
-int dongle_set_gain( dongle_t *dongle, int gain)
-{
-
- int ret;
-
- if ( dongle == NULL )
- return -1;
-
- if ( dongle->dev == NULL )
- return -1;
-
- ret = hw_set_tuner_gain_mode( dongle->dev, gain );
- if ( ret < 0 )
- {
- printf("Cannot set tunner gain level %d\n", gain );
- return -1;
- }
-
- return 0;
-}
-
-
-//set dongle sample rate
-int dongle_set_sample_rate( dongle_t *dongle, uint32_t rate )
-{
- int ret;
-
- if ( dongle == NULL )
- {
- return -1;
- }
-
- if ( dongle->dev == NULL )
- return -1;
-
- ret = hw_set_sample_rate( dongle->dev, rate );
- if ( ret < 0 )
- {
- printf("Cannot set sample rate to %uMsps\n", rate);
- return -1;
- }
-
- return 0;
-}
-
-int dongle_set_agc( dongle_t *dongle, int mode)
-{
- int ret;
-
- if ( dongle == NULL )
- return -1;
-
- if ( dongle->dev == NULL )
- return -1;
-
- //need mode check things
- ret = hw_set_agc_mode( dongle->dev, mode );
- if ( ret < 0 )
- {
- printf("Cannot set agc gain mode\n");
- return -1;
- }
-
- return 0;
-}
-
-
-uint32_t dongle_get_freq( dongle_t *dongle )
-{
- return dongle->freq;
-}
-
-
-int dongle_get_gain( dongle_t *dongle )
-{
- return dongle->gain;
-}
-
-
-uint32_t dongle_get_sample_rate( dongle_t *dongle )
-{
- return dongle->rate;
-}
-
-
-int dongle_read_samples( dongle_t *dongle, uint8_t *buf, int len )
-{
- int ret, read_num;
-
- if ( dongle == NULL )
- return -1;
-
- if ( dongle->dev == NULL )
- return -1;
-
-
-
- ret = hw_read_sync( dongle->dev, buf, len, &read_num );
- if ( ret < 0 )
- {
- printf("Couldnt read samples\n");
- return -1;
- }
-
- return 0;
-} \ No newline at end of file