summaryrefslogtreecommitdiff
path: root/Radio/HW/AirSpyHF/src/airspyhf.h
diff options
context:
space:
mode:
Diffstat (limited to 'Radio/HW/AirSpyHF/src/airspyhf.h')
-rw-r--r--Radio/HW/AirSpyHF/src/airspyhf.h171
1 files changed, 171 insertions, 0 deletions
diff --git a/Radio/HW/AirSpyHF/src/airspyhf.h b/Radio/HW/AirSpyHF/src/airspyhf.h
new file mode 100644
index 0000000..2879120
--- /dev/null
+++ b/Radio/HW/AirSpyHF/src/airspyhf.h
@@ -0,0 +1,171 @@
+/*
+Copyright (c) 2013-2024, Youssef Touil <youssef@airspy.com>
+Copyright (c) 2013-2017, Ian Gilmour <ian@sdrsharp.com>
+Copyright (c) 2013-2017, Benjamin Vernoux <bvernoux@airspy.com>
+Copyright (c) 2013, Michael Ossmann <mike@ossmann.com>
+Copyright (c) 2012, Jared Boone <jared@sharebrained.com>
+
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
+
+ Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
+ Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ Neither the name of Airspy HF+ nor the names of its contributors may be used to endorse or promote products derived from this software
+ without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+#ifndef __AIRSPYHF_H__
+#define __AIRSPYHF_H__
+
+#include <stdint.h>
+
+#define AIRSPYHF_VERSION "1.8.0"
+#define AIRSPYHF_VER_MAJOR 1
+#define AIRSPYHF_VER_MINOR 8
+#define AIRSPYHF_VER_REVISION 0
+
+#define AIRSPYHF_ENDPOINT_IN (1)
+
+#if defined(_WIN32) && !defined(STATIC_AIRSPYHFPLUS)
+ #define ADD_EXPORTS
+
+ /* You should define ADD_EXPORTS *only* when building the DLL. */
+ #ifdef ADD_EXPORTS
+ #define ADDAPI __declspec(dllexport)
+ #else
+ #define ADDAPI __declspec(dllimport)
+ #endif
+
+ /* Define calling convention in one place, for convenience. */
+ #define ADDCALL __cdecl
+
+#else /* _WIN32 not defined. */
+
+ /* Define with no value on non-Windows OSes. */
+ #define ADDAPI
+ #define ADDCALL
+
+#endif
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+enum airspyhf_error
+{
+ AIRSPYHF_SUCCESS = 0,
+ AIRSPYHF_ERROR = -1,
+ AIRSPYHF_UNSUPPORTED = -2
+};
+
+typedef struct {
+ float re;
+ float im;
+} airspyhf_complex_float_t;
+
+typedef struct {
+ uint32_t part_id;
+ uint32_t serial_no[4];
+} airspyhf_read_partid_serialno_t;
+
+enum airspyhf_board_id
+{
+ AIRSPYHF_BOARD_ID_UNKNOWN_AIRSPYHF = 0,
+ AIRSPYHF_BOARD_ID_AIRSPYHF_REV_A = 1,
+ AIRSPYHF_BOARD_ID_AIRSPYHF_DISCOVERY_REV_A = 2,
+ AIRSPYHF_BOARD_ID_INVALID = 0xFF,
+};
+
+typedef struct airspyhf_device airspyhf_device_t;
+
+typedef struct {
+ airspyhf_device_t* device;
+ void* ctx;
+ airspyhf_complex_float_t* samples;
+ int sample_count;
+ uint64_t dropped_samples;
+} airspyhf_transfer_t;
+
+typedef struct {
+ uint32_t major_version;
+ uint32_t minor_version;
+ uint32_t revision;
+} airspyhf_lib_version_t;
+
+#define MAX_NAME_STRING_SIZE (64)
+#define MAX_VERSION_STRING_SIZE MAX_NAME_STRING_SIZE
+
+typedef int (*airspyhf_sample_block_cb_fn) (airspyhf_transfer_t* transfer_fn);
+
+extern ADDAPI void ADDCALL airspyhf_lib_version(airspyhf_lib_version_t* lib_version);
+extern ADDAPI int ADDCALL airspyhf_list_devices(uint64_t *serials, int count);
+extern ADDAPI int ADDCALL airspyhf_open(airspyhf_device_t** device);
+extern ADDAPI int ADDCALL airspyhf_open_sn(airspyhf_device_t** device, uint64_t serial_number);
+extern ADDAPI int ADDCALL airspyhf_open_fd(airspyhf_device_t** device, int fd);
+extern ADDAPI int ADDCALL airspyhf_close(airspyhf_device_t* device);
+extern ADDAPI int ADDCALL airspyhf_get_output_size(airspyhf_device_t* device); /* Returns the number of IQ samples to expect in the callback */
+extern ADDAPI int ADDCALL airspyhf_start(airspyhf_device_t* device, airspyhf_sample_block_cb_fn callback, void* ctx);
+extern ADDAPI int ADDCALL airspyhf_stop(airspyhf_device_t* device);
+extern ADDAPI int ADDCALL airspyhf_is_streaming(airspyhf_device_t* device);
+extern ADDAPI int ADDCALL airspyhf_is_low_if(airspyhf_device_t* device); /* Tells if the current sample rate is Zero-IF (0) or Low-IF (1) */
+extern ADDAPI int ADDCALL airspyhf_set_freq(airspyhf_device_t* device, const uint32_t freq_hz);
+extern ADDAPI int ADDCALL airspyhf_set_freq_double(airspyhf_device_t* device, const double freq_hz);
+extern ADDAPI int ADDCALL airspyhf_set_lib_dsp(airspyhf_device_t* device, const uint8_t flag); /* Enables/Disables the IQ Correction, IF shift and Fine Tuning. */
+extern ADDAPI int ADDCALL airspyhf_get_samplerates(airspyhf_device_t* device, uint32_t* buffer, const uint32_t len);
+extern ADDAPI int ADDCALL airspyhf_set_samplerate(airspyhf_device_t* device, uint32_t samplerate);
+extern ADDAPI int ADDCALL airspyhf_set_att(airspyhf_device_t* device, float value);
+extern ADDAPI int ADDCALL airspyhf_get_att_steps(airspyhf_device_t* device, void* buffer, const uint32_t len);
+extern ADDAPI int ADDCALL airspyhf_set_bias_tee(airspyhf_device_t* device, int8_t value);
+extern ADDAPI int ADDCALL airspyhf_get_bias_tee_count(airspyhf_device_t* device, int32_t* count);
+extern ADDAPI int ADDCALL airspyhf_get_bias_tee_name(airspyhf_device_t* device, int32_t index, char* version, uint8_t length);
+extern ADDAPI int ADDCALL airspyhf_get_calibration(airspyhf_device_t* device, int32_t* ppb);
+extern ADDAPI int ADDCALL airspyhf_set_calibration(airspyhf_device_t* device, int32_t ppb);
+extern ADDAPI int ADDCALL airspyhf_get_vctcxo_calibration(airspyhf_device_t* device, uint16_t* vc);
+extern ADDAPI int ADDCALL airspyhf_set_vctcxo_calibration(airspyhf_device_t* device, uint16_t vc);
+extern ADDAPI int ADDCALL airspyhf_get_frontend_options(airspyhf_device_t* device, uint32_t* flags);
+extern ADDAPI int ADDCALL airspyhf_set_frontend_options(airspyhf_device_t* device, uint32_t flags);
+extern ADDAPI int ADDCALL airspyhf_set_optimal_iq_correction_point(airspyhf_device_t* device, float w);
+extern ADDAPI int ADDCALL airspyhf_iq_balancer_configure(airspyhf_device_t* device, int buffers_to_skip, int fft_integration, int fft_overlap, int correlation_integration);
+extern ADDAPI int ADDCALL airspyhf_flash_configuration(airspyhf_device_t* device); /* streaming needs to be stopped */
+extern ADDAPI int ADDCALL airspyhf_board_partid_serialno_read(airspyhf_device_t* device, airspyhf_read_partid_serialno_t* read_partid_serialno);
+extern ADDAPI int ADDCALL airspyhf_version_string_read(airspyhf_device_t* device, char* version, uint8_t length);
+
+// Legacy stuff for backward compatibility
+
+typedef enum
+{
+ AIRSPYHF_USER_OUTPUT_0 = 0,
+ AIRSPYHF_USER_OUTPUT_1 = 1,
+ AIRSPYHF_USER_OUTPUT_2 = 2,
+ AIRSPYHF_USER_OUTPUT_3 = 3
+} airspyhf_user_output_t;
+
+typedef enum
+{
+ AIRSPYHF_USER_OUTPUT_LOW = 0,
+ AIRSPYHF_USER_OUTPUT_HIGH = 1
+} airspyhf_user_output_state_t;
+
+#define airspyhf_flash_calibration airspyhf_flash_configuration
+
+extern ADDAPI int ADDCALL airspyhf_set_user_output(airspyhf_device_t* device, airspyhf_user_output_t pin, airspyhf_user_output_state_t value);
+extern ADDAPI int ADDCALL airspyhf_set_hf_agc(airspyhf_device_t* device, uint8_t flag); /* 0 = off, 1 = on */
+extern ADDAPI int ADDCALL airspyhf_set_hf_agc_threshold(airspyhf_device_t* device, uint8_t flag); /* when agc on: 0 = low, 1 = high */
+extern ADDAPI int ADDCALL airspyhf_set_hf_att(airspyhf_device_t* device, uint8_t att_index); /* Possible values: 0..8 Range: 0..48 dB Attenuation with 6 dB steps */
+extern ADDAPI int ADDCALL airspyhf_set_hf_lna(airspyhf_device_t* device, uint8_t flag); /* 0 or 1: 1 to activate LNA (alias PreAmp): 1 = +6 dB gain - compensated in digital */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif//__AIRSPYHF_H__