Change granularity of scan mode to MHz

This commit is contained in:
Dominic Spill
2016-07-26 15:29:13 +01:00
committed by Mike Walters
parent d19b4efa2e
commit 8c96d9cf32
3 changed files with 30 additions and 32 deletions

View File

@ -30,19 +30,17 @@
#define MIN(x,y) ((x)<(y)?(x):(y)) #define MIN(x,y) ((x)<(y)?(x):(y))
#define MAX(x,y) ((x)>(y)?(x):(y)) #define MAX(x,y) ((x)>(y)?(x):(y))
#define MIN_FREQ 1000000 #define FREQ_GRANULARITY 1000000
#define MAX_FREQ 6000000000 #define MIN_FREQ 1
#define MAX_FREQ 6000
volatile bool start_scan_mode = false; volatile bool start_scan_mode = false;
static uint64_t scan_freq; static uint64_t scan_freq;
static uint64_t scan_freq_min;
static uint64_t scan_freq_max;
static uint64_t scan_freq_step;
struct init_scan_params { struct init_scan_params {
uint64_t min_freq_hz; uint16_t min_freq_mhz;
uint64_t max_freq_hz; uint16_t max_freq_mhz;
uint64_t step_freq_hz; uint16_t step_freq_mhz;
}; };
struct init_scan_params scan_params; struct init_scan_params scan_params;
@ -51,17 +49,17 @@ usb_request_status_t usb_vendor_request_init_scan(
{ {
if ((stage == USB_TRANSFER_STAGE_SETUP) && if ((stage == USB_TRANSFER_STAGE_SETUP) &&
(endpoint->setup.length == 24)) { (endpoint->setup.length == 24)) {
// DGS set scan frequencies here
//freq_min = bytes_to_uint64(); usb_transfer_schedule_block(endpoint->out, &scan_params,
usb_transfer_schedule_block(endpoint->out, &scan_params, sizeof(struct init_scan_params), sizeof(struct init_scan_params),
NULL, NULL); NULL, NULL);
scan_freq_min = MAX(MIN_FREQ, scan_params.min_freq_hz); /* Limit to min/max frequency without warning (possible FIXME) */
scan_freq_max = MIN(MAX_FREQ, scan_params.max_freq_hz); scan_params.min_freq_mhz = MAX(MIN_FREQ, scan_params.min_freq_mhz);
scan_freq_step = scan_params.step_freq_hz; scan_params.max_freq_mhz = MIN(MAX_FREQ, scan_params.max_freq_mhz);
scan_freq = scan_freq_min; scan_freq = scan_params.min_freq_mhz;
set_freq(scan_freq); set_freq(scan_freq*FREQ_GRANULARITY);
start_scan_mode = true; start_scan_mode = true;
usb_transfer_schedule_ack(endpoint->in); usb_transfer_schedule_ack(endpoint->in);
} }
@ -106,11 +104,11 @@ void scan_mode(void) {
} }
if (blocks_queued > 2) { if (blocks_queued > 2) {
scan_freq += scan_freq_step; scan_freq += scan_params.step_freq_mhz;
if (scan_freq > scan_freq_max) { if (scan_freq > scan_params.max_freq_mhz) {
scan_freq = scan_freq_min; scan_freq = scan_params.min_freq_mhz;
} }
set_freq(scan_freq); set_freq(scan_freq*FREQ_GRANULARITY);
blocks_queued = 0; blocks_queued = 0;
} }
} }

View File

@ -1698,22 +1698,22 @@ uint32_t ADDCALL hackrf_compute_baseband_filter_bw(const uint32_t bandwidth_hz)
} }
struct init_scan_params { struct init_scan_params {
uint64_t min_freq_hz; uint16_t min_freq_mhz;
uint64_t max_freq_hz; uint16_t max_freq_mhz;
uint64_t step_freq_hz; uint16_t step_freq_mhz;
}; };
int ADDCALL hackrf_init_scan(hackrf_device* device, int ADDCALL hackrf_init_scan(hackrf_device* device,
const uint64_t min_freq_hz, const uint64_t max_freq_hz, const uint16_t min_freq_mhz, const uint16_t max_freq_mhz,
const uint64_t step_freq_hz) const uint16_t step_freq_mhz)
{ {
struct init_scan_params params; struct init_scan_params params;
uint8_t length; uint8_t length;
int result; int result;
params.min_freq_hz = TO_LE(min_freq_hz); params.min_freq_mhz = TO_LE(min_freq_mhz);
params.max_freq_hz = TO_LE(max_freq_hz); params.max_freq_mhz = TO_LE(max_freq_mhz);
params.step_freq_hz = TO_LE(step_freq_hz); params.step_freq_mhz = TO_LE(step_freq_mhz);
length = sizeof(struct init_scan_params); length = sizeof(struct init_scan_params);
result = libusb_control_transfer( result = libusb_control_transfer(

View File

@ -198,8 +198,8 @@ extern ADDAPI uint32_t ADDCALL hackrf_compute_baseband_filter_bw_round_down_lt(c
extern ADDAPI uint32_t ADDCALL hackrf_compute_baseband_filter_bw(const uint32_t bandwidth_hz); extern ADDAPI uint32_t ADDCALL hackrf_compute_baseband_filter_bw(const uint32_t bandwidth_hz);
/* Start scan mode */ /* Start scan mode */
extern ADDAPI int ADDCALL hackrf_init_scan(hackrf_device* device, extern ADDAPI int ADDCALL hackrf_init_scan(hackrf_device* device,
const uint64_t min_freq_hz, const uint64_t max_freq_hz, const uint16_t min_freq_mhz, const uint16_t max_freq_mhz,
const uint64_t step_freq_hz); const uint16_t step_freq_mhz);
#ifdef __cplusplus #ifdef __cplusplus
} // __cplusplus defined. } // __cplusplus defined.