41 #if defined _WIN32 || defined __CYGWIN__
43 # define CALL_CONV __cdecl
45 # define API_EXPORT __attribute__ ((dllexport))
47 # define API_EXPORT __declspec(dllexport)
49 #elif defined _DOXYGEN_ONLY_
57 # define API_EXPORT __attribute__ ((visibility ("default")))
76 #define BLADERF_ERR_UNEXPECTED (-1)
77 #define BLADERF_ERR_RANGE (-2)
78 #define BLADERF_ERR_INVAL (-3)
79 #define BLADERF_ERR_MEM (-4)
80 #define BLADERF_ERR_IO (-5)
81 #define BLADERF_ERR_TIMEOUT (-6)
82 #define BLADERF_ERR_NODEV (-7)
83 #define BLADERF_ERR_UNSUPPORTED (-8)
84 #define BLADERF_ERR_MISALIGNED (-9)
85 #define BLADERF_ERR_CHECKSUM (-10)
86 #define BLADERF_ERR_NO_FILE (-11)
87 #define BLADERF_ERR_UPDATE_FPGA (-12)
88 #define BLADERF_ERR_UPDATE_FW (-13)
89 #define BLADERF_ERR_TIME_PAST (-14)
125 BLADERF_DEVICE_SPEED_UNKNOWN,
126 BLADERF_DEVICE_SPEED_HIGH,
127 BLADERF_DEVICE_SPEED_SUPER,
131 #define BLADERF_SERIAL_LENGTH 33
237 const char *device_identifier);
355 #define BLADERF_RXVGA1_GAIN_MIN 5
358 #define BLADERF_RXVGA1_GAIN_MAX 30
361 #define BLADERF_RXVGA2_GAIN_MIN 0
364 #define BLADERF_RXVGA2_GAIN_MAX 30
367 #define BLADERF_TXVGA1_GAIN_MIN (-35)
370 #define BLADERF_TXVGA1_GAIN_MAX (-4)
373 #define BLADERF_TXVGA2_GAIN_MIN 0
376 #define BLADERF_TXVGA2_GAIN_MAX 25
379 #define BLADERF_SAMPLERATE_MIN 80000u
382 #define BLADERF_SAMPLERATE_REC_MAX 40000000u
385 #define BLADERF_BANDWIDTH_MIN 1500000u
388 #define BLADERF_BANDWIDTH_MAX 28000000u
391 #define BLADERF_FREQUENCY_MIN 232500000u
400 #define BLADERF_FREQUENCY_MIN_XB200 0u
403 #define BLADERF_FREQUENCY_MAX 3800000000u
491 #define BLADERF_LNA_GAIN_MID_DB 3
492 #define BLADERF_LNA_GAIN_MAX_DB 6
586 BLADERF_DC_CAL_LPF_TUNING,
587 BLADERF_DC_CAL_TX_LPF,
588 BLADERF_DC_CAL_RX_LPF,
589 BLADERF_DC_CAL_RXVGA2
703 unsigned int *actual);
991 unsigned int bandwidth,
992 unsigned int *actual);
1005 unsigned int *bandwidth);
1051 unsigned int frequency);
1071 unsigned int frequency);
1083 unsigned int *frequency);
1235 #define BLADERF_META_STATUS_OVERRUN (1 << 0)
1243 #define BLADERF_META_STATUS_UNDERRUN (1 << 1)
1258 #define BLADERF_META_FLAG_TX_BURST_START (1 << 0)
1291 #define BLADERF_META_FLAG_TX_BURST_END (1 << 1)
1301 #define BLADERF_META_FLAG_TX_NOW (1 << 2)
1308 #define BLADERF_META_FLAG_RX_NOW (1 << 31)
1389 #define BLADERF_STREAM_SHUTDOWN (NULL)
1396 #define BLADERF_STREAM_NO_DATA ((void*)(-1))
1449 typedef void *(*bladerf_stream_cb)(
struct bladerf *dev,
1530 struct bladerf *dev,
1535 size_t samples_per_buffer,
1536 size_t num_transfers,
1592 unsigned int timeout_ms);
1619 unsigned int timeout);
1635 unsigned int *timeout);
1752 unsigned int num_buffers,
1753 unsigned int buffer_size,
1754 unsigned int num_transfers,
1755 unsigned int stream_timeout);
1796 void *samples,
unsigned int num_samples,
1798 unsigned int timeout_ms);
1840 void *samples,
unsigned int num_samples,
1842 unsigned int timeout_ms);
1987 const char *firmware);
2013 const char *fpga_image);
2121 #define BLADERF_IMAGE_MAGIC_LEN 7
2126 #define BLADERF_IMAGE_CHECKSUM_LEN 32
2131 #define BLADERF_IMAGE_RESERVED_LEN 128
2245 uint16_t vctcxo_trim);
2331 uint8_t
address, uint8_t *val);
2344 uint8_t
address, uint8_t val);
2400 uint8_t address, uint8_t *val);
2413 uint8_t address, uint8_t val);
2448 #define BLADERF_GPIO_LMS_RX_ENABLE (1 << 1)
2455 #define BLADERF_GPIO_LMS_TX_ENABLE (1 << 2)
2462 #define BLADERF_GPIO_TX_LB_ENABLE (2 << 3)
2469 #define BLADERF_GPIO_TX_HB_ENABLE (1 << 3)
2480 #define BLADERF_GPIO_COUNTER_ENABLE (1 << 9)
2487 #define BLADERF_GPIO_RX_LB_ENABLE (2 << 5)
2494 #define BLADERF_GPIO_RX_HB_ENABLE (1 << 5)
2506 #define BLADERF_GPIO_FEATURE_SMALL_DMA_XFER (1 << 7)
2511 #define BLADERF_GPIO_TIMESTAMP (1 << 16)
2522 #define BLADERF_GPIO_TIMESTAMP_DIV2 (1 << 17)
2672 #define BLADERF_FLASH_TOTAL_SIZE (4 * 1024 * 1024)
2675 #define BLADERF_FLASH_PAGE_SIZE 256
2678 #define BLADERF_FLASH_EB_SIZE (64 * 1024)
2681 #define BLADERF_FLASH_NUM_PAGES \
2682 (BLADERF_FLASH_TOTAL_SIZE / BLADERF_FLASH_PAGE_SIZE)
2685 #define BLADERF_FLASH_NUM_EBS \
2686 (BLADERF_FLASH_TOTAL_SIZE / BLADERF_FLASH_EB_SIZE)
2691 #define BLADERF_FLASH_TO_PAGES(bytes) ((bytes) / BLADERF_FLASH_PAGE_SIZE)
2694 #define BLADERF_FLASH_TO_EB(bytes) ((bytes) / BLADERF_FLASH_EB_SIZE)
2699 #define BLADERF_FLASH_ADDR_FIRMWARE 0x00000000
2702 #define BLADERF_FLASH_PAGE_FIRMWARE \
2703 (BLADERF_FLASH_TO_PAGES(BLADERF_FLASH_ADDR_FIRMWARE))
2706 #define BLADERF_FLASH_EB_FIRMWARE \
2707 (BLADERF_FLASH_TO_EB(BLADERF_FLASH_ADDR_FIRMWARE))
2710 #define BLADERF_FLASH_BYTE_LEN_FIRMWARE 0x00030000
2713 #define BLADERF_FLASH_PAGE_LEN_FIRMWARE \
2714 (BLADERF_FLASH_TO_PAGES(BLADERF_FLASH_BYTE_LEN_FIRMWARE))
2717 #define BLADERF_FLASH_EB_LEN_FIRMWARE \
2718 (BLADERF_FLASH_TO_EB(BLADERF_FLASH_BYTE_LEN_FIRMWARE))
2722 #define BLADERF_FLASH_ADDR_CAL 0x00030000
2725 #define BLADERF_FLASH_PAGE_CAL (BLADERF_FLASH_TO_PAGES(BLADERF_FLASH_ADDR_CAL))
2728 #define BLADERF_FLASH_EB_CAL (BLADERF_FLASH_TO_EB(BLADERF_FLASH_ADDR_CAL))
2731 #define BLADERF_FLASH_BYTE_LEN_CAL 0x100
2734 #define BLADERF_FLASH_PAGE_LEN_CAL \
2735 (BLADERF_FLASH_TO_PAGES(FLASH_BYTE_LEN_CAL))
2742 #define BLADERF_FLASH_EB_LEN_CAL 1
2750 #define BLADERF_FLASH_ADDR_FPGA 0x00040000
2753 #define BLADERF_FLASH_PAGE_FPGA \
2754 (BLADERF_FLASH_TO_PAGES(BLADERF_FLASH_ADDR_FPGA))
2757 #define BLADERF_FLASH_EB_FPGA \
2758 (BLADERF_FLASH_TO_EB(BLADERF_FLASH_ADDR_FPGA))
2761 #define BLADERF_FLASH_BYTE_LEN_FPGA 0x00370000
2764 #define BLADERF_FLASH_EB_LEN_FPGA \
2765 (BLADERF_FLASH_TO_EB(BLADERF_FLASH_BYTE_LEN_FPGA))
2781 uint32_t erase_block, uint32_t count);
2800 uint32_t page, uint32_t count);
2817 uint32_t page, uint32_t count);
2882 uint8_t bus, uint8_t addr,
API_EXPORT int CALL_CONV bladerf_get_vctcxo_trim(struct bladerf *dev, uint16_t *trim)
API_EXPORT int CALL_CONV bladerf_si5338_read(struct bladerf *dev, uint8_t address, uint8_t *val)
API_EXPORT int CALL_CONV bladerf_lms_read(struct bladerf *dev, uint8_t address, uint8_t *val)
API_EXPORT int CALL_CONV bladerf_image_read(struct bladerf_image *image, const char *file)
API_EXPORT int CALL_CONV bladerf_get_timestamp(struct bladerf *dev, bladerf_module mod, uint64_t *value)
API_EXPORT int CALL_CONV bladerf_read_flash(struct bladerf *dev, uint8_t *buf, uint32_t page, uint32_t count)
API_EXPORT int CALL_CONV bladerf_get_bandwidth(struct bladerf *dev, bladerf_module module, unsigned int *bandwidth)
API_EXPORT int CALL_CONV bladerf_get_fpga_size(struct bladerf *dev, bladerf_fpga_size *size)
API_EXPORT int CALL_CONV bladerf_erase_flash(struct bladerf *dev, uint32_t erase_block, uint32_t count)
API_EXPORT int CALL_CONV bladerf_load_fpga(struct bladerf *dev, const char *fpga)
API_EXPORT int CALL_CONV bladerf_set_frequency(struct bladerf *dev, bladerf_module module, unsigned int frequency)
API_EXPORT int CALL_CONV bladerf_set_bandwidth(struct bladerf *dev, bladerf_module module, unsigned int bandwidth, unsigned int *actual)
API_EXPORT int CALL_CONV bladerf_expansion_gpio_read(struct bladerf *dev, uint32_t *val)
API_EXPORT int CALL_CONV bladerf_get_rxvga1(struct bladerf *dev, int *gain)
char magic[BLADERF_IMAGE_MAGIC_LEN+1]
char reserved[BLADERF_IMAGE_RESERVED_LEN]
char serial[BLADERF_SERIAL_LENGTH+1]
API_EXPORT int CALL_CONV bladerf_set_rxvga1(struct bladerf *dev, int gain)
API_EXPORT int CALL_CONV bladerf_get_devinfo_from_str(const char *devstr, struct bladerf_devinfo *info)
API_EXPORT int CALL_CONV bladerf_xb_spi_write(struct bladerf *dev, uint32_t val)
API_EXPORT bool CALL_CONV bladerf_devstr_matches(const char *dev_str, struct bladerf_devinfo *info)
API_EXPORT int CALL_CONV bladerf_is_fpga_configured(struct bladerf *dev)
API_EXPORT int CALL_CONV bladerf_config_gpio_write(struct bladerf *dev, uint32_t val)
API_EXPORT int CALL_CONV bladerf_get_correction(struct bladerf *dev, bladerf_module module, bladerf_correction corr, int16_t *value)
API_EXPORT bladerf_dev_speed CALL_CONV bladerf_device_speed(struct bladerf *dev)
API_EXPORT int CALL_CONV bladerf_get_device_list(struct bladerf_devinfo **devices)
API_EXPORT struct bladerf_image *CALL_CONV bladerf_alloc_cal_image(bladerf_fpga_size fpga_size, uint16_t vctcxo_trim)
API_EXPORT int CALL_CONV bladerf_get_lna_gain(struct bladerf *dev, bladerf_lna_gain *gain)
API_EXPORT int CALL_CONV bladerf_fpga_version(struct bladerf *dev, struct bladerf_version *version)
API_EXPORT int CALL_CONV bladerf_get_rxvga2(struct bladerf *dev, int *gain)
API_EXPORT int CALL_CONV bladerf_init_stream(struct bladerf_stream **stream, struct bladerf *dev, bladerf_stream_cb callback, void ***buffers, size_t num_buffers, bladerf_format format, size_t samples_per_buffer, size_t num_transfers, void *user_data)
API_EXPORT int CALL_CONV bladerf_set_correction(struct bladerf *dev, bladerf_module module, bladerf_correction corr, int16_t value)
API_EXPORT int CALL_CONV bladerf_get_stream_timeout(struct bladerf *dev, bladerf_module module, unsigned int *timeout)
API_EXPORT int CALL_CONV bladerf_lms_set_dc_cals(struct bladerf *dev, const struct bladerf_lms_dc_cals *dc_cals)
API_EXPORT int CALL_CONV bladerf_set_txvga2(struct bladerf *dev, int gain)
API_EXPORT int CALL_CONV bladerf_set_rxvga2(struct bladerf *dev, int gain)
API_EXPORT int CALL_CONV bladerf_get_bootloader_list(struct bladerf_devinfo **list)
API_EXPORT int CALL_CONV bladerf_get_sample_rate(struct bladerf *dev, bladerf_module module, unsigned int *rate)
API_EXPORT int CALL_CONV bladerf_stream(struct bladerf_stream *stream, bladerf_module module)
API_EXPORT int CALL_CONV bladerf_expansion_gpio_dir_write(struct bladerf *dev, uint32_t val)
API_EXPORT int CALL_CONV bladerf_set_sampling(struct bladerf *dev, bladerf_sampling sampling)
API_EXPORT int CALL_CONV bladerf_calibrate_dc(struct bladerf *dev, bladerf_cal_module module)
API_EXPORT int CALL_CONV bladerf_jump_to_bootloader(struct bladerf *dev)
API_EXPORT const char *CALL_CONV bladerf_backend_str(bladerf_backend backend)
API_EXPORT int CALL_CONV bladerf_get_frequency(struct bladerf *dev, bladerf_module module, unsigned int *frequency)
API_EXPORT int CALL_CONV bladerf_flash_firmware(struct bladerf *dev, const char *firmware)
API_EXPORT int CALL_CONV bladerf_get_txvga1(struct bladerf *dev, int *gain)
API_EXPORT int CALL_CONV bladerf_set_lpf_mode(struct bladerf *dev, bladerf_module module, bladerf_lpf_mode mode)
API_EXPORT int CALL_CONV bladerf_sync_config(struct bladerf *dev, bladerf_module module, bladerf_format format, unsigned int num_buffers, unsigned int buffer_size, unsigned int num_transfers, unsigned int stream_timeout)
API_EXPORT int CALL_CONV bladerf_flash_fpga(struct bladerf *dev, const char *fpga_image)
void *(* bladerf_stream_cb)(struct bladerf *dev, struct bladerf_stream *stream, struct bladerf_metadata *meta, void *samples, size_t num_samples, void *user_data)
API_EXPORT int CALL_CONV bladerf_get_rational_sample_rate(struct bladerf *dev, bladerf_module module, struct bladerf_rational_rate *rate)
API_EXPORT int CALL_CONV bladerf_xb200_get_path(struct bladerf *dev, bladerf_module module, bladerf_xb200_path *path)
#define BLADERF_IMAGE_CHECKSUM_LEN
API_EXPORT int CALL_CONV bladerf_device_reset(struct bladerf *dev)
API_EXPORT void CALL_CONV bladerf_deinit_stream(struct bladerf_stream *stream)
API_EXPORT int CALL_CONV bladerf_open(struct bladerf **device, const char *device_identifier)
API_EXPORT int CALL_CONV bladerf_set_txvga1(struct bladerf *dev, int gain)
uint8_t checksum[BLADERF_IMAGE_CHECKSUM_LEN]
API_EXPORT int CALL_CONV bladerf_set_rational_sample_rate(struct bladerf *dev, bladerf_module module, struct bladerf_rational_rate *rate, struct bladerf_rational_rate *actual)
API_EXPORT void CALL_CONV bladerf_free_image(struct bladerf_image *image)
#define BLADERF_IMAGE_RESERVED_LEN
API_EXPORT int CALL_CONV bladerf_submit_stream_buffer(struct bladerf_stream *stream, void *buffer, unsigned int timeout_ms)
API_EXPORT int CALL_CONV bladerf_expansion_gpio_write(struct bladerf *dev, uint32_t val)
API_EXPORT struct bladerf_image *CALL_CONV bladerf_alloc_image(bladerf_image_type type, uint32_t address, uint32_t length)
API_EXPORT int CALL_CONV bladerf_set_loopback(struct bladerf *dev, bladerf_loopback l)
API_EXPORT int CALL_CONV bladerf_load_fw_from_bootloader(const char *device_identifier, bladerf_backend backend, uint8_t bus, uint8_t addr, const char *file)
API_EXPORT int CALL_CONV bladerf_fw_version(struct bladerf *dev, struct bladerf_version *version)
API_EXPORT int CALL_CONV bladerf_lms_get_dc_cals(struct bladerf *dev, struct bladerf_lms_dc_cals *dc_cals)
API_EXPORT int CALL_CONV bladerf_write_flash(struct bladerf *dev, const uint8_t *buf, uint32_t page, uint32_t count)
API_EXPORT int CALL_CONV bladerf_si5338_set_rx_freq(struct bladerf *dev, unsigned freq)
API_EXPORT void CALL_CONV bladerf_init_devinfo(struct bladerf_devinfo *info)
API_EXPORT int CALL_CONV bladerf_lms_write(struct bladerf *dev, uint8_t address, uint8_t val)
API_EXPORT int CALL_CONV bladerf_get_serial(struct bladerf *dev, char *serial)
API_EXPORT int CALL_CONV bladerf_enable_module(struct bladerf *dev, bladerf_module m, bool enable)
API_EXPORT int CALL_CONV bladerf_select_band(struct bladerf *dev, bladerf_module module, unsigned int frequency)
API_EXPORT int CALL_CONV bladerf_xb200_set_filterbank(struct bladerf *dev, bladerf_module mod, bladerf_xb200_filter filter)
API_EXPORT int CALL_CONV bladerf_set_lna_gain(struct bladerf *dev, bladerf_lna_gain gain)
API_EXPORT int CALL_CONV bladerf_erase_stored_fpga(struct bladerf *dev)
API_EXPORT int CALL_CONV bladerf_sync_tx(struct bladerf *dev, void *samples, unsigned int num_samples, struct bladerf_metadata *metadata, unsigned int timeout_ms)
API_EXPORT int CALL_CONV bladerf_get_sampling(struct bladerf *dev, bladerf_sampling *sampling)
API_EXPORT void CALL_CONV bladerf_log_set_verbosity(bladerf_log_level level)
API_EXPORT int CALL_CONV bladerf_get_loopback(struct bladerf *dev, bladerf_loopback *l)
API_EXPORT int CALL_CONV bladerf_get_txvga2(struct bladerf *dev, int *gain)
API_EXPORT int CALL_CONV bladerf_set_gain(struct bladerf *dev, bladerf_module mod, int gain)
API_EXPORT int CALL_CONV bladerf_set_sample_rate(struct bladerf *dev, bladerf_module module, unsigned int rate, unsigned int *actual)
API_EXPORT int CALL_CONV bladerf_set_tx_gain(struct bladerf *dev, int gain)
API_EXPORT void CALL_CONV bladerf_free_device_list(struct bladerf_devinfo *devices)
API_EXPORT int CALL_CONV bladerf_expansion_attach(struct bladerf *dev, bladerf_xb xb)
API_EXPORT int CALL_CONV bladerf_expansion_gpio_dir_read(struct bladerf *dev, uint32_t *val)
API_EXPORT const char *CALL_CONV bladerf_strerror(int error)
API_EXPORT int CALL_CONV bladerf_get_lpf_mode(struct bladerf *dev, bladerf_module module, bladerf_lpf_mode *mode)
API_EXPORT bool CALL_CONV bladerf_devinfo_matches(const struct bladerf_devinfo *a, const struct bladerf_devinfo *b)
API_EXPORT int CALL_CONV bladerf_dac_write(struct bladerf *dev, uint16_t val)
API_EXPORT void CALL_CONV bladerf_version(struct bladerf_version *version)
API_EXPORT int CALL_CONV bladerf_image_write(struct bladerf_image *image, const char *file)
API_EXPORT int CALL_CONV bladerf_expansion_get_attached(struct bladerf *dev, bladerf_xb *xb)
#define BLADERF_SERIAL_LENGTH
API_EXPORT int CALL_CONV bladerf_sync_rx(struct bladerf *dev, void *samples, unsigned int num_samples, struct bladerf_metadata *metadata, unsigned int timeout_ms)
API_EXPORT int CALL_CONV bladerf_open_with_devinfo(struct bladerf **device, struct bladerf_devinfo *devinfo)
API_EXPORT int CALL_CONV bladerf_set_stream_timeout(struct bladerf *dev, bladerf_module module, unsigned int timeout)
API_EXPORT void CALL_CONV bladerf_close(struct bladerf *device)
struct bladerf_version version
API_EXPORT int CALL_CONV bladerf_get_devinfo(struct bladerf *dev, struct bladerf_devinfo *info)
API_EXPORT int CALL_CONV bladerf_xb200_get_filterbank(struct bladerf *dev, bladerf_module module, bladerf_xb200_filter *filter)
API_EXPORT int CALL_CONV bladerf_si5338_write(struct bladerf *dev, uint8_t address, uint8_t val)
API_EXPORT int CALL_CONV bladerf_config_gpio_read(struct bladerf *dev, uint32_t *val)
API_EXPORT int CALL_CONV bladerf_si5338_set_tx_freq(struct bladerf *dev, unsigned freq)
char serial[BLADERF_SERIAL_LENGTH]
API_EXPORT int CALL_CONV bladerf_xb200_set_path(struct bladerf *dev, bladerf_module module, bladerf_xb200_path path)
#define BLADERF_IMAGE_MAGIC_LEN