libbladeRF 2.5.0-0.2024.05-1
Nuand bladeRF library
Loading...
Searching...
No Matches
libbladeRF.h
Go to the documentation of this file.
1
22#ifndef LIBBLADERF_H_
23#define LIBBLADERF_H_
24
25#include <inttypes.h>
26#include <stdint.h>
27#include <stdlib.h>
28
54#define LIBBLADERF_API_VERSION (0x02050000)
55
56#ifdef __cplusplus
57extern "C" {
58#else
67#include <stdbool.h>
68#endif
69
70// clang-format off
71#if defined _WIN32 || defined __CYGWIN__
72# include <windows.h>
73# define CALL_CONV __cdecl
74# ifdef __GNUC__
75# define API_EXPORT __attribute__ ((dllexport))
76# else
77# define API_EXPORT __declspec(dllexport)
78# endif
79#elif defined _DOXYGEN_ONLY_ || defined MATLAB_LINUX_THUNK_BUILD_
82# define API_EXPORT
85# define CALL_CONV
86#else
87# define API_EXPORT __attribute__ ((visibility ("default")))
88# define CALL_CONV
89#endif
90// clang-format on
91
107struct bladerf;
108
120
122#define BLADERF_DESCRIPTION_LENGTH 33
123
125#define BLADERF_SERIAL_LENGTH 33
126
142
152
211int CALL_CONV bladerf_open(struct bladerf **device,
212 const char *device_identifier);
213
225void CALL_CONV bladerf_close(struct bladerf *device);
226
249int CALL_CONV bladerf_open_with_devinfo(struct bladerf **device,
250 struct bladerf_devinfo *devinfo);
251
262
270
281
293int CALL_CONV bladerf_get_devinfo(struct bladerf *dev,
294 struct bladerf_devinfo *info);
295
296
308int CALL_CONV bladerf_get_backendinfo(struct bladerf *dev,
309 struct bladerf_backendinfo *info);
324 struct bladerf_devinfo *info);
325
335 const struct bladerf_devinfo *b);
336
348bool CALL_CONV bladerf_devstr_matches(const char *dev_str,
349 struct bladerf_devinfo *info);
350
360
376
394 int64_t min;
395 int64_t max;
396 int64_t step;
397 float scale;
398};
399
406
411 uint16_t major;
412 uint16_t minor;
413 uint16_t patch;
414 const char *describe;
419};
420
432
437typedef enum {
438 BLADERF_DEVICE_SPEED_UNKNOWN,
439 BLADERF_DEVICE_SPEED_HIGH,
440 BLADERF_DEVICE_SPEED_SUPER
442
454
470int CALL_CONV bladerf_get_serial(struct bladerf *dev, char *serial);
471
495int CALL_CONV bladerf_get_serial_struct(struct bladerf *dev,
496 struct bladerf_serial *serial);
497
508int CALL_CONV bladerf_get_fpga_size(struct bladerf *dev,
509 bladerf_fpga_size *size);
510
521int CALL_CONV bladerf_get_fpga_bytes(struct bladerf *dev, size_t *size);
522
537int CALL_CONV bladerf_get_flash_size(struct bladerf *dev,
538 uint32_t *size,
539 bool *is_guess);
540
551int CALL_CONV bladerf_fw_version(struct bladerf *dev,
552 struct bladerf_version *version);
553
563int CALL_CONV bladerf_is_fpga_configured(struct bladerf *dev);
564
574int CALL_CONV bladerf_fpga_version(struct bladerf *dev,
575 struct bladerf_version *version);
576
592int CALL_CONV bladerf_get_fpga_source(struct bladerf *dev,
593 bladerf_fpga_source *source);
594
604
614const char *CALL_CONV bladerf_get_board_name(struct bladerf *dev);
615
649typedef int bladerf_channel;
650
664#define BLADERF_CHANNEL_RX(ch) (bladerf_channel)(((ch) << 1) | 0x0)
665
679#define BLADERF_CHANNEL_TX(ch) (bladerf_channel)(((ch) << 1) | 0x1)
680
684#define BLADERF_CHANNEL_INVALID (bladerf_channel)(-1)
685
687#define BLADERF_DIRECTION_MASK (0x1)
691/* Backwards compatible mapping to `bladerf_module`. */
692typedef bladerf_channel bladerf_module;
693#define BLADERF_MODULE_INVALID BLADERF_CHANNEL_INVALID
694#define BLADERF_MODULE_RX BLADERF_CHANNEL_RX(0)
695#define BLADERF_MODULE_TX BLADERF_CHANNEL_TX(0)
701#define BLADERF_CHANNEL_IS_TX(ch) (ch & BLADERF_TX)
702
706typedef enum {
710
720
730size_t CALL_CONV bladerf_get_channel_count(struct bladerf *dev,
732
748typedef int bladerf_gain;
749
798
800#define BLADERF_GAIN_AUTOMATIC BLADERF_GAIN_DEFAULT
802#define BLADERF_GAIN_MANUAL BLADERF_GAIN_MGC
803
811
838int CALL_CONV bladerf_set_gain(struct bladerf *dev,
840 bladerf_gain gain);
841
852int CALL_CONV bladerf_get_gain(struct bladerf *dev,
854 bladerf_gain *gain);
855
875int CALL_CONV bladerf_set_gain_mode(struct bladerf *dev,
877 bladerf_gain_mode mode);
878
893int CALL_CONV bladerf_get_gain_mode(struct bladerf *dev,
895 bladerf_gain_mode *mode);
896
916int CALL_CONV bladerf_get_gain_modes(struct bladerf *dev,
918 const struct bladerf_gain_modes **modes);
919
933int CALL_CONV bladerf_get_gain_range(struct bladerf *dev,
935 const struct bladerf_range **range);
936
950int CALL_CONV bladerf_set_gain_stage(struct bladerf *dev,
952 const char *stage,
953 bladerf_gain gain);
954
968int CALL_CONV bladerf_get_gain_stage(struct bladerf *dev,
970 const char *stage,
971 bladerf_gain *gain);
972
992 const char *stage,
993 const struct bladerf_range **range);
994
1010int CALL_CONV bladerf_get_gain_stages(struct bladerf *dev,
1011 bladerf_channel ch,
1012 const char **stages,
1013 size_t count);
1014
1031typedef unsigned int bladerf_sample_rate;
1032
1042 uint64_t integer;
1043 uint64_t num;
1044 uint64_t den;
1046};
1047
1066int CALL_CONV bladerf_set_sample_rate(struct bladerf *dev,
1067 bladerf_channel ch,
1069 bladerf_sample_rate *actual);
1070
1086int CALL_CONV
1088 bladerf_channel ch,
1089 struct bladerf_rational_rate *rate,
1090 struct bladerf_rational_rate *actual);
1101int CALL_CONV bladerf_get_sample_rate(struct bladerf *dev,
1102 bladerf_channel ch,
1103 bladerf_sample_rate *rate);
1104
1116 bladerf_channel ch,
1117 const struct bladerf_range **range);
1118
1129int CALL_CONV
1131 bladerf_channel ch,
1132 struct bladerf_rational_rate *rate);
1133
1151typedef unsigned int bladerf_bandwidth;
1152
1172int CALL_CONV bladerf_set_bandwidth(struct bladerf *dev,
1173 bladerf_channel ch,
1174 bladerf_bandwidth bandwidth,
1175 bladerf_bandwidth *actual);
1176
1187int CALL_CONV bladerf_get_bandwidth(struct bladerf *dev,
1188 bladerf_channel ch,
1189 bladerf_bandwidth *bandwidth);
1190
1202 bladerf_channel ch,
1203 const struct bladerf_range **range);
1204
1229typedef uint64_t bladerf_frequency;
1230
1232#define BLADERF_PRIuFREQ PRIu64
1234#define BLADERF_PRIxFREQ PRIx64
1236#define BLADERF_SCNuFREQ SCNu64
1238#define BLADERF_SCNxFREQ SCNx64
1239
1259int CALL_CONV bladerf_select_band(struct bladerf *dev,
1260 bladerf_channel ch,
1261 bladerf_frequency frequency);
1262
1287int CALL_CONV bladerf_set_frequency(struct bladerf *dev,
1288 bladerf_channel ch,
1289 bladerf_frequency frequency);
1300int CALL_CONV bladerf_get_frequency(struct bladerf *dev,
1301 bladerf_channel ch,
1302 bladerf_frequency *frequency);
1303
1315 bladerf_channel ch,
1316 const struct bladerf_range **range);
1317
1378
1386
1404 struct bladerf *dev, const struct bladerf_loopback_modes **modes);
1405
1415 struct bladerf *dev, bladerf_loopback mode);
1416
1432
1443
1590
1621
1636
1653int CALL_CONV bladerf_trigger_init(struct bladerf *dev,
1654 bladerf_channel ch,
1656 struct bladerf_trigger *trigger);
1657
1679int CALL_CONV bladerf_trigger_arm(struct bladerf *dev,
1680 const struct bladerf_trigger *trigger,
1681 bool arm,
1682 uint64_t resv1,
1683 uint64_t resv2);
1684
1697int CALL_CONV bladerf_trigger_fire(struct bladerf *dev,
1698 const struct bladerf_trigger *trigger);
1699
1720int CALL_CONV bladerf_trigger_state(struct bladerf *dev,
1721 const struct bladerf_trigger *trigger,
1722 bool *is_armed,
1723 bool *has_fired,
1724 bool *fire_requested,
1725 uint64_t *resv1,
1726 uint64_t *resv2);
1727
1744typedef enum {
1747
1750
1757
1764
1765 /* RX_MUX setting 0x3 is reserved for future use */
1766
1770
1772/* Backwards compatible mapping for `bladerf_rx_mux`. */
1773#define BLADERF_RX_MUX_BASEBAND_LMS BLADERF_RX_MUX_BASEBAND
1785int CALL_CONV bladerf_set_rx_mux(struct bladerf *dev, bladerf_rx_mux mux);
1786
1796int CALL_CONV bladerf_get_rx_mux(struct bladerf *dev, bladerf_rx_mux *mode);
1797
1818typedef uint64_t bladerf_timestamp;
1819
1824#define BLADERF_RETUNE_NOW (bladerf_timestamp)0
1825
1836 union {
1837 /* bladeRF1 quick tune parameters */
1838 struct {
1839 uint8_t freqsel;
1840 uint8_t vcocap;
1841 uint16_t nint;
1842 uint32_t nfrac;
1843 uint8_t flags;
1844 uint8_t xb_gpio;
1845 };
1846 /* bladeRF2 quick tune parameters */
1847 struct {
1848 uint16_t nios_profile;
1850 uint8_t port;
1851 uint8_t spdt;
1852 };
1853 };
1854};
1855
1887int CALL_CONV bladerf_schedule_retune(struct bladerf *dev,
1888 bladerf_channel ch,
1889 bladerf_timestamp timestamp,
1890 bladerf_frequency frequency,
1891 struct bladerf_quick_tune *quick_tune);
1892
1907 bladerf_channel ch);
1908
1930int CALL_CONV bladerf_get_quick_tune(struct bladerf *dev,
1931 bladerf_channel ch,
1932 struct bladerf_quick_tune *quick_tune);
1933
1955
1990
1992/* Backwards compatible mapping to `bladerf_correction`. */
1993#define BLADERF_CORR_LMS_DCOFF_I BLADERF_CORR_DCOFF_I
1994#define BLADERF_CORR_LMS_DCOFF_Q BLADERF_CORR_DCOFF_Q
1995#define BLADERF_CORR_FPGA_PHASE BLADERF_CORR_PHASE
1996#define BLADERF_CORR_FPGA_GAIN BLADERF_CORR_GAIN
2013int CALL_CONV bladerf_set_correction(struct bladerf *dev,
2014 bladerf_channel ch,
2015 bladerf_correction corr,
2017
2029int CALL_CONV bladerf_get_correction(struct bladerf *dev,
2030 bladerf_channel ch,
2031 bladerf_correction corr,
2033
2047#define BLADERF_PRIuTS PRIu64
2049#define BLADERF_PRIxTS PRIx64
2051#define BLADERF_SCNuTS SCNu64
2053#define BLADERF_SCNxTS SCNx64
2054
2303
2310/*
2311 * Metadata status bits
2312 *
2313 * These are used in conjunction with the bladerf_metadata structure's `status`
2314 * field.
2315 */
2316
2323#define BLADERF_META_STATUS_OVERRUN (1 << 0)
2324
2333#define BLADERF_META_STATUS_UNDERRUN (1 << 1)
2334
2335/*
2336 * Metadata flags
2337 *
2338 * These are used in conjunction with the bladerf_metadata structure's `flags`
2339 * field.
2340 */
2341
2356#define BLADERF_META_FLAG_TX_BURST_START (1 << 0)
2357
2384#define BLADERF_META_FLAG_TX_BURST_END (1 << 1)
2385
2394#define BLADERF_META_FLAG_TX_NOW (1 << 2)
2395
2414#define BLADERF_META_FLAG_TX_UPDATE_TIMESTAMP (1 << 3)
2415
2421#define BLADERF_META_FLAG_RX_NOW (1 << 31)
2422
2427#define BLADERF_META_FLAG_RX_HW_UNDERFLOW (1 << 0)
2428
2433#define BLADERF_META_FLAG_RX_HW_MINIEXP1 (1 << 16)
2434
2439#define BLADERF_META_FLAG_RX_HW_MINIEXP2 (1 << 17)
2440
2454
2467 uint32_t flags;
2468
2476 uint32_t status;
2477
2491 unsigned int actual_count;
2492
2497 uint8_t reserved[32];
2498};
2499
2548 bladerf_format format,
2549 unsigned int buffer_size,
2550 void *samples);
2551
2576 bladerf_format format,
2577 unsigned int buffer_size,
2578 void *samples);
2579
2603int CALL_CONV bladerf_enable_module(struct bladerf *dev,
2604 bladerf_channel ch,
2605 bool enable);
2606
2649int CALL_CONV bladerf_get_timestamp(struct bladerf *dev,
2651 bladerf_timestamp *timestamp);
2652
2723int CALL_CONV bladerf_sync_config(struct bladerf *dev,
2725 bladerf_format format,
2726 unsigned int num_buffers,
2727 unsigned int buffer_size,
2728 unsigned int num_transfers,
2729 unsigned int stream_timeout);
2730
2765int CALL_CONV bladerf_sync_tx(struct bladerf *dev,
2766 const void *samples,
2767 unsigned int num_samples,
2768 struct bladerf_metadata *metadata,
2769 unsigned int timeout_ms);
2770
2805int CALL_CONV bladerf_sync_rx(struct bladerf *dev,
2806 void *samples,
2807 unsigned int num_samples,
2808 struct bladerf_metadata *metadata,
2809 unsigned int timeout_ms);
2810
2811
2834#define BLADERF_STREAM_SHUTDOWN (NULL)
2835
2841#define BLADERF_STREAM_NO_DATA ((void *)(-1))
2842
2844struct bladerf_stream;
2845
2893typedef void *(*bladerf_stream_cb)(struct bladerf *dev,
2894 struct bladerf_stream *stream,
2895 struct bladerf_metadata *meta,
2896 void *samples,
2897 size_t num_samples,
2898 void *user_data);
2899
2964 struct bladerf *dev,
2965 bladerf_stream_cb callback,
2966 void ***buffers,
2967 size_t num_buffers,
2968 bladerf_format format,
2969 size_t samples_per_buffer,
2970 size_t num_transfers,
2971 void *user_data);
2972
2995 bladerf_channel_layout layout);
2996
3026 void *buffer,
3027 unsigned int timeout_ms);
3028
3048 void *buffer);
3049
3050
3064
3077 unsigned int timeout);
3078
3092 unsigned int *timeout);
3093
3124int CALL_CONV bladerf_flash_firmware(struct bladerf *dev, const char *firmware);
3125
3137int CALL_CONV bladerf_load_fpga(struct bladerf *dev, const char *fpga);
3138
3150int CALL_CONV bladerf_flash_fpga(struct bladerf *dev, const char *fpga_image);
3151
3160int CALL_CONV bladerf_erase_stored_fpga(struct bladerf *dev);
3161
3170int CALL_CONV bladerf_device_reset(struct bladerf *dev);
3171
3182int CALL_CONV bladerf_get_fw_log(struct bladerf *dev, const char *filename);
3183
3195int CALL_CONV bladerf_jump_to_bootloader(struct bladerf *dev);
3196
3214
3239int CALL_CONV bladerf_load_fw_from_bootloader(const char *device_identifier,
3240 bladerf_backend backend,
3241 uint8_t bus,
3242 uint8_t addr,
3243 const char *file);
3244
3274
3276#define BLADERF_IMAGE_MAGIC_LEN 7
3277
3279#define BLADERF_IMAGE_CHECKSUM_LEN 32
3280
3282#define BLADERF_IMAGE_RESERVED_LEN 128
3283
3353
3378struct bladerf_image *CALL_CONV bladerf_alloc_image(struct bladerf *dev,
3380 uint32_t address,
3381 uint32_t length);
3382
3398 struct bladerf *dev, bladerf_fpga_size fpga_size, uint16_t vctcxo_trim);
3399
3409
3426int CALL_CONV bladerf_image_write(struct bladerf *dev,
3427 struct bladerf_image *image,
3428 const char *file);
3429
3452int CALL_CONV bladerf_image_read(struct bladerf_image *image, const char *file);
3453
3498
3510
3524
3546int CALL_CONV bladerf_get_vctcxo_trim(struct bladerf *dev, uint16_t *trim);
3547
3559int CALL_CONV bladerf_trim_dac_write(struct bladerf *dev, uint16_t val);
3560
3576int CALL_CONV bladerf_trim_dac_read(struct bladerf *dev, uint16_t *val);
3577
3618
3629int CALL_CONV bladerf_set_tuning_mode(struct bladerf *dev,
3630 bladerf_tuning_mode mode);
3631
3641int CALL_CONV bladerf_get_tuning_mode(struct bladerf *dev,
3642 bladerf_tuning_mode *mode);
3643
3666#define BLADERF_TRIGGER_REG_ARM ((uint8_t)(1 << 0))
3667
3677#define BLADERF_TRIGGER_REG_FIRE ((uint8_t)(1 << 1))
3678
3687#define BLADERF_TRIGGER_REG_MASTER ((uint8_t)(1 << 2))
3688
3695#define BLADERF_TRIGGER_REG_LINE ((uint8_t)(1 << 3))
3696
3710int CALL_CONV bladerf_read_trigger(struct bladerf *dev,
3711 bladerf_channel ch,
3713 uint8_t *val);
3714
3727int CALL_CONV bladerf_write_trigger(struct bladerf *dev,
3728 bladerf_channel ch,
3730 uint8_t val);
3731
3755int CALL_CONV bladerf_wishbone_master_read(struct bladerf *dev, uint32_t addr, uint32_t *data);
3756
3768int CALL_CONV bladerf_wishbone_master_write(struct bladerf *dev, uint32_t addr, uint32_t val);
3769
3793int CALL_CONV bladerf_config_gpio_read(struct bladerf *dev, uint32_t *val);
3794
3808int CALL_CONV bladerf_config_gpio_write(struct bladerf *dev, uint32_t val);
3809
3846int CALL_CONV bladerf_erase_flash(struct bladerf *dev,
3847 uint32_t erase_block,
3848 uint32_t count);
3849
3864int CALL_CONV bladerf_erase_flash_bytes(struct bladerf *dev,
3865 uint32_t address,
3866 uint32_t length);
3867
3888int CALL_CONV bladerf_read_flash(struct bladerf *dev,
3889 uint8_t *buf,
3890 uint32_t page,
3891 uint32_t count);
3892
3909int CALL_CONV bladerf_read_flash_bytes(struct bladerf *dev,
3910 uint8_t *buf,
3911 uint32_t address,
3912 uint32_t bytes);
3913
3933int CALL_CONV bladerf_write_flash(struct bladerf *dev,
3934 const uint8_t *buf,
3935 uint32_t page,
3936 uint32_t count);
3937
3953int CALL_CONV bladerf_write_flash_bytes(struct bladerf *dev,
3954 const uint8_t *buf,
3955 uint32_t address,
3956 uint32_t length);
3957
3969int CALL_CONV bladerf_lock_otp(struct bladerf *dev);
3970
3984int CALL_CONV bladerf_read_otp(struct bladerf *dev,
3985 uint8_t *buf);
3986
4000int CALL_CONV bladerf_write_otp(struct bladerf *dev,
4001 uint8_t *buf);
4002
4026int CALL_CONV bladerf_set_rf_port(struct bladerf *dev,
4027 bladerf_channel ch,
4028 const char *port);
4029
4040int CALL_CONV bladerf_get_rf_port(struct bladerf *dev,
4041 bladerf_channel ch,
4042 const char **port);
4043
4059int CALL_CONV bladerf_get_rf_ports(struct bladerf *dev,
4060 bladerf_channel ch,
4061 const char **ports,
4062 unsigned int count);
4063
4084
4095int CALL_CONV bladerf_enable_feature(struct bladerf *dev,
4096 bladerf_feature feature,
4097 bool enable);
4098
4108int CALL_CONV bladerf_get_feature(struct bladerf *dev,
4109 bladerf_feature* feature);
4110
4143
4153int CALL_CONV bladerf_expansion_attach(struct bladerf *dev, bladerf_xb xb);
4154
4165 bladerf_xb *xb);
4166
4192
4203
4219
4238// clang-format off
4239#define BLADERF_ERR_UNEXPECTED (-1)
4240#define BLADERF_ERR_RANGE (-2)
4241#define BLADERF_ERR_INVAL (-3)
4242#define BLADERF_ERR_MEM (-4)
4243#define BLADERF_ERR_IO (-5)
4244#define BLADERF_ERR_TIMEOUT (-6)
4245#define BLADERF_ERR_NODEV (-7)
4246#define BLADERF_ERR_UNSUPPORTED (-8)
4247#define BLADERF_ERR_MISALIGNED (-9)
4248#define BLADERF_ERR_CHECKSUM (-10)
4249#define BLADERF_ERR_NO_FILE (-11)
4250#define BLADERF_ERR_UPDATE_FPGA (-12)
4251#define BLADERF_ERR_UPDATE_FW (-13)
4252#define BLADERF_ERR_TIME_PAST (-14)
4253#define BLADERF_ERR_QUEUE_FULL (-15)
4255#define BLADERF_ERR_FPGA_OP (-16)
4256#define BLADERF_ERR_PERMISSION (-17)
4258#define BLADERF_ERR_WOULD_BLOCK (-18)
4263#define BLADERF_ERR_NOT_INIT (-19)
4265// clang-format on
4266
4275const char *CALL_CONV bladerf_strerror(int error);
4276
4279#include <bladeRF1.h>
4280#include <bladeRF2.h>
4281
4282#ifdef __cplusplus
4283}
4284#endif
4285
4286#endif /* LIBBLADERF_H_ */
bladeRF1-specific API
bladeRF2-specific API
API_EXPORT int CALL_CONV bladerf_set_bandwidth(struct bladerf *dev, bladerf_channel ch, bladerf_bandwidth bandwidth, bladerf_bandwidth *actual)
API_EXPORT int CALL_CONV bladerf_get_bandwidth(struct bladerf *dev, bladerf_channel ch, bladerf_bandwidth *bandwidth)
API_EXPORT int CALL_CONV bladerf_get_bandwidth_range(struct bladerf *dev, bladerf_channel ch, const struct bladerf_range **range)
unsigned int bladerf_bandwidth
bladerf_channel_layout
Definition libbladeRF.h:714
API_EXPORT size_t CALL_CONV bladerf_get_channel_count(struct bladerf *dev, bladerf_direction dir)
int bladerf_channel
Definition libbladeRF.h:649
bladerf_direction
Definition libbladeRF.h:706
@ BLADERF_RX_X1
Definition libbladeRF.h:715
@ BLADERF_RX_X2
Definition libbladeRF.h:717
@ BLADERF_TX_X2
Definition libbladeRF.h:718
@ BLADERF_TX_X1
Definition libbladeRF.h:716
@ BLADERF_TX
Definition libbladeRF.h:708
@ BLADERF_RX
Definition libbladeRF.h:707
API_EXPORT int CALL_CONV bladerf_config_gpio_read(struct bladerf *dev, uint32_t *val)
API_EXPORT int CALL_CONV bladerf_config_gpio_write(struct bladerf *dev, uint32_t val)
API_EXPORT int CALL_CONV bladerf_set_correction(struct bladerf *dev, bladerf_channel ch, bladerf_correction corr, bladerf_correction_value value)
bladerf_correction
API_EXPORT int CALL_CONV bladerf_get_correction(struct bladerf *dev, bladerf_channel ch, bladerf_correction corr, bladerf_correction_value *value)
int16_t bladerf_correction_value
@ BLADERF_CORR_DCOFF_Q
@ BLADERF_CORR_PHASE
@ BLADERF_CORR_GAIN
@ BLADERF_CORR_DCOFF_I
API_EXPORT int CALL_CONV bladerf_get_gain_mode(struct bladerf *dev, bladerf_channel ch, bladerf_gain_mode *mode)
API_EXPORT int CALL_CONV bladerf_set_gain_mode(struct bladerf *dev, bladerf_channel ch, bladerf_gain_mode mode)
API_EXPORT int CALL_CONV bladerf_get_gain_modes(struct bladerf *dev, bladerf_channel ch, const struct bladerf_gain_modes **modes)
API_EXPORT int CALL_CONV bladerf_set_gain_stage(struct bladerf *dev, bladerf_channel ch, const char *stage, bladerf_gain gain)
API_EXPORT int CALL_CONV bladerf_get_gain_stage(struct bladerf *dev, bladerf_channel ch, const char *stage, bladerf_gain *gain)
API_EXPORT int CALL_CONV bladerf_get_gain_stages(struct bladerf *dev, bladerf_channel ch, const char **stages, size_t count)
API_EXPORT int CALL_CONV bladerf_get_gain_range(struct bladerf *dev, bladerf_channel ch, const struct bladerf_range **range)
int bladerf_gain
Definition libbladeRF.h:748
API_EXPORT int CALL_CONV bladerf_get_gain_stage_range(struct bladerf *dev, bladerf_channel ch, const char *stage, const struct bladerf_range **range)
API_EXPORT int CALL_CONV bladerf_set_gain(struct bladerf *dev, bladerf_channel ch, bladerf_gain gain)
bladerf_gain_mode
Definition libbladeRF.h:760
API_EXPORT int CALL_CONV bladerf_get_gain(struct bladerf *dev, bladerf_channel ch, bladerf_gain *gain)
@ BLADERF_GAIN_SLOWATTACK_AGC
Definition libbladeRF.h:789
@ BLADERF_GAIN_DEFAULT
Definition libbladeRF.h:769
@ BLADERF_GAIN_MGC
Definition libbladeRF.h:775
@ BLADERF_GAIN_FASTATTACK_AGC
Definition libbladeRF.h:782
@ BLADERF_GAIN_HYBRID_AGC
Definition libbladeRF.h:796
API_EXPORT struct bladerf_image *CALL_CONV bladerf_alloc_image(struct bladerf *dev, bladerf_image_type type, uint32_t address, uint32_t length)
API_EXPORT int CALL_CONV bladerf_image_read(struct bladerf_image *image, const char *file)
bladerf_image_type
API_EXPORT int CALL_CONV bladerf_image_write(struct bladerf *dev, struct bladerf_image *image, const char *file)
#define BLADERF_IMAGE_RESERVED_LEN
API_EXPORT void CALL_CONV bladerf_free_image(struct bladerf_image *image)
#define BLADERF_IMAGE_MAGIC_LEN
API_EXPORT struct bladerf_image *CALL_CONV bladerf_alloc_cal_image(struct bladerf *dev, bladerf_fpga_size fpga_size, uint16_t vctcxo_trim)
#define BLADERF_IMAGE_CHECKSUM_LEN
@ BLADERF_IMAGE_TYPE_FIRMWARE
@ BLADERF_IMAGE_TYPE_CALIBRATION
@ BLADERF_IMAGE_TYPE_RX_IQ_CAL
@ BLADERF_IMAGE_TYPE_INVALID
@ BLADERF_IMAGE_TYPE_FPGA_40KLE
@ BLADERF_IMAGE_TYPE_RX_DC_CAL
@ BLADERF_IMAGE_TYPE_TX_IQ_CAL
@ BLADERF_IMAGE_TYPE_TX_DC_CAL
@ BLADERF_IMAGE_TYPE_FPGA_A9
@ BLADERF_IMAGE_TYPE_FPGA_A5
@ BLADERF_IMAGE_TYPE_RAW
@ BLADERF_IMAGE_TYPE_FPGA_A4
@ BLADERF_IMAGE_TYPE_FPGA_115KLE
API_EXPORT int CALL_CONV bladerf_get_fpga_source(struct bladerf *dev, bladerf_fpga_source *source)
API_EXPORT int CALL_CONV bladerf_get_serial_struct(struct bladerf *dev, struct bladerf_serial *serial)
bladerf_fpga_size
Definition libbladeRF.h:424
API_EXPORT int CALL_CONV bladerf_get_serial(struct bladerf *dev, char *serial)
API_EXPORT const char *CALL_CONV bladerf_get_board_name(struct bladerf *dev)
API_EXPORT int CALL_CONV bladerf_is_fpga_configured(struct bladerf *dev)
bladerf_dev_speed
Definition libbladeRF.h:437
API_EXPORT int CALL_CONV bladerf_get_fpga_bytes(struct bladerf *dev, size_t *size)
API_EXPORT int CALL_CONV bladerf_fw_version(struct bladerf *dev, struct bladerf_version *version)
API_EXPORT int CALL_CONV bladerf_get_fpga_size(struct bladerf *dev, bladerf_fpga_size *size)
API_EXPORT int CALL_CONV bladerf_get_flash_size(struct bladerf *dev, uint32_t *size, bool *is_guess)
API_EXPORT int CALL_CONV bladerf_fpga_version(struct bladerf *dev, struct bladerf_version *version)
bladerf_fpga_source
Definition libbladeRF.h:449
API_EXPORT bladerf_dev_speed CALL_CONV bladerf_device_speed(struct bladerf *dev)
@ BLADERF_FPGA_UNKNOWN
Definition libbladeRF.h:425
@ BLADERF_FPGA_A5
Definition libbladeRF.h:429
@ BLADERF_FPGA_A4
Definition libbladeRF.h:428
@ BLADERF_FPGA_40KLE
Definition libbladeRF.h:426
@ BLADERF_FPGA_115KLE
Definition libbladeRF.h:427
@ BLADERF_FPGA_A9
Definition libbladeRF.h:430
@ BLADERF_FPGA_SOURCE_HOST
Definition libbladeRF.h:452
@ BLADERF_FPGA_SOURCE_UNKNOWN
Definition libbladeRF.h:450
@ BLADERF_FPGA_SOURCE_FLASH
Definition libbladeRF.h:451
API_EXPORT void CALL_CONV bladerf_set_usb_reset_on_open(bool enabled)
API_EXPORT void CALL_CONV bladerf_free_device_list(struct bladerf_devinfo *devices)
API_EXPORT int CALL_CONV bladerf_get_devinfo(struct bladerf *dev, struct bladerf_devinfo *info)
API_EXPORT int CALL_CONV bladerf_get_device_list(struct bladerf_devinfo **devices)
bladerf_backend
Definition libbladeRF.h:112
API_EXPORT void CALL_CONV bladerf_init_devinfo(struct bladerf_devinfo *info)
#define BLADERF_DESCRIPTION_LENGTH
Definition libbladeRF.h:122
API_EXPORT int CALL_CONV bladerf_get_backendinfo(struct bladerf *dev, struct bladerf_backendinfo *info)
API_EXPORT int CALL_CONV bladerf_get_devinfo_from_str(const char *devstr, struct bladerf_devinfo *info)
#define BLADERF_SERIAL_LENGTH
Definition libbladeRF.h:125
API_EXPORT void CALL_CONV bladerf_close(struct bladerf *device)
API_EXPORT bool CALL_CONV bladerf_devstr_matches(const char *dev_str, struct bladerf_devinfo *info)
API_EXPORT int CALL_CONV bladerf_open(struct bladerf **device, const char *device_identifier)
API_EXPORT int CALL_CONV bladerf_open_with_devinfo(struct bladerf **device, struct bladerf_devinfo *devinfo)
API_EXPORT const char *CALL_CONV bladerf_backend_str(bladerf_backend backend)
API_EXPORT bool CALL_CONV bladerf_devinfo_matches(const struct bladerf_devinfo *a, const struct bladerf_devinfo *b)
@ BLADERF_BACKEND_ANY
Definition libbladeRF.h:113
@ BLADERF_BACKEND_LIBUSB
Definition libbladeRF.h:116
@ BLADERF_BACKEND_LINUX
Definition libbladeRF.h:115
@ BLADERF_BACKEND_CYPRESS
Definition libbladeRF.h:117
@ BLADERF_BACKEND_DUMMY
Definition libbladeRF.h:118
API_EXPORT void CALL_CONV bladerf_log_set_verbosity(bladerf_log_level level)
bladerf_log_level
@ BLADERF_LOG_LEVEL_ERROR
@ BLADERF_LOG_LEVEL_SILENT
@ BLADERF_LOG_LEVEL_INFO
@ BLADERF_LOG_LEVEL_WARNING
@ BLADERF_LOG_LEVEL_VERBOSE
@ BLADERF_LOG_LEVEL_DEBUG
@ BLADERF_LOG_LEVEL_CRITICAL
bladerf_loopback
API_EXPORT bool CALL_CONV bladerf_is_loopback_mode_supported(struct bladerf *dev, bladerf_loopback mode)
API_EXPORT int CALL_CONV bladerf_set_loopback(struct bladerf *dev, bladerf_loopback lb)
API_EXPORT int CALL_CONV bladerf_get_loopback_modes(struct bladerf *dev, const struct bladerf_loopback_modes **modes)
API_EXPORT int CALL_CONV bladerf_get_loopback(struct bladerf *dev, bladerf_loopback *lb)
@ BLADERF_LB_RFIC_BIST
@ BLADERF_LB_BB_TXVGA1_RXVGA2
@ BLADERF_LB_BB_TXLPF_RXVGA2
@ BLADERF_LB_BB_TXLPF_RXLPF
@ BLADERF_LB_RF_LNA2
@ BLADERF_LB_RF_LNA3
@ BLADERF_LB_BB_TXVGA1_RXLPF
@ BLADERF_LB_NONE
@ BLADERF_LB_FIRMWARE
@ BLADERF_LB_RF_LNA1
API_EXPORT int CALL_CONV bladerf_get_fw_log(struct bladerf *dev, const char *filename)
API_EXPORT int CALL_CONV bladerf_load_fpga(struct bladerf *dev, const char *fpga)
API_EXPORT int CALL_CONV bladerf_flash_firmware(struct bladerf *dev, const char *firmware)
API_EXPORT int CALL_CONV bladerf_jump_to_bootloader(struct bladerf *dev)
API_EXPORT int CALL_CONV bladerf_get_bootloader_list(struct bladerf_devinfo **list)
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_device_reset(struct bladerf *dev)
API_EXPORT int CALL_CONV bladerf_erase_stored_fpga(struct bladerf *dev)
API_EXPORT int CALL_CONV bladerf_flash_fpga(struct bladerf *dev, const char *fpga_image)
API_EXPORT int CALL_CONV bladerf_get_rx_mux(struct bladerf *dev, bladerf_rx_mux *mode)
API_EXPORT int CALL_CONV bladerf_set_rx_mux(struct bladerf *dev, bladerf_rx_mux mux)
bladerf_rx_mux
@ BLADERF_RX_MUX_DIGITAL_LOOPBACK
@ BLADERF_RX_MUX_12BIT_COUNTER
@ BLADERF_RX_MUX_32BIT_COUNTER
@ BLADERF_RX_MUX_INVALID
@ BLADERF_RX_MUX_BASEBAND
API_EXPORT int CALL_CONV bladerf_get_rf_ports(struct bladerf *dev, bladerf_channel ch, const char **ports, unsigned int count)
API_EXPORT int CALL_CONV bladerf_get_rf_port(struct bladerf *dev, bladerf_channel ch, const char **port)
API_EXPORT int CALL_CONV bladerf_set_rf_port(struct bladerf *dev, bladerf_channel ch, const char *port)
API_EXPORT int CALL_CONV bladerf_get_sample_rate_range(struct bladerf *dev, bladerf_channel ch, const struct bladerf_range **range)
API_EXPORT int CALL_CONV bladerf_get_sample_rate(struct bladerf *dev, bladerf_channel ch, bladerf_sample_rate *rate)
unsigned int bladerf_sample_rate
API_EXPORT int CALL_CONV bladerf_get_rational_sample_rate(struct bladerf *dev, bladerf_channel ch, struct bladerf_rational_rate *rate)
API_EXPORT int CALL_CONV bladerf_set_rational_sample_rate(struct bladerf *dev, bladerf_channel ch, struct bladerf_rational_rate *rate, struct bladerf_rational_rate *actual)
API_EXPORT int CALL_CONV bladerf_set_sample_rate(struct bladerf *dev, bladerf_channel ch, bladerf_sample_rate rate, bladerf_sample_rate *actual)
API_EXPORT int CALL_CONV bladerf_get_quick_tune(struct bladerf *dev, bladerf_channel ch, struct bladerf_quick_tune *quick_tune)
API_EXPORT int CALL_CONV bladerf_schedule_retune(struct bladerf *dev, bladerf_channel ch, bladerf_timestamp timestamp, bladerf_frequency frequency, struct bladerf_quick_tune *quick_tune)
API_EXPORT int CALL_CONV bladerf_cancel_scheduled_retunes(struct bladerf *dev, bladerf_channel ch)
API_EXPORT int CALL_CONV bladerf_get_feature(struct bladerf *dev, bladerf_feature *feature)
API_EXPORT int CALL_CONV bladerf_enable_feature(struct bladerf *dev, bladerf_feature feature, bool enable)
bladerf_feature
@ BLADERF_FEATURE_OVERSAMPLE
@ BLADERF_FEATURE_DEFAULT
API_EXPORT int CALL_CONV bladerf_erase_flash_bytes(struct bladerf *dev, uint32_t address, uint32_t length)
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_read_otp(struct bladerf *dev, uint8_t *buf)
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_read_flash_bytes(struct bladerf *dev, uint8_t *buf, uint32_t address, uint32_t bytes)
API_EXPORT int CALL_CONV bladerf_erase_flash(struct bladerf *dev, uint32_t erase_block, uint32_t count)
API_EXPORT int CALL_CONV bladerf_write_otp(struct bladerf *dev, uint8_t *buf)
API_EXPORT int CALL_CONV bladerf_write_flash_bytes(struct bladerf *dev, const uint8_t *buf, uint32_t address, uint32_t length)
API_EXPORT int CALL_CONV bladerf_lock_otp(struct bladerf *dev)
API_EXPORT int CALL_CONV bladerf_submit_stream_buffer_nb(struct bladerf_stream *stream, void *buffer)
API_EXPORT void CALL_CONV bladerf_deinit_stream(struct bladerf_stream *stream)
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_get_stream_timeout(struct bladerf *dev, bladerf_direction dir, unsigned int *timeout)
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_stream(struct bladerf_stream *stream, bladerf_channel_layout layout)
API_EXPORT int CALL_CONV bladerf_set_stream_timeout(struct bladerf *dev, bladerf_direction dir, unsigned int timeout)
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_sync_config(struct bladerf *dev, bladerf_channel_layout layout, 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_sync_tx(struct bladerf *dev, const void *samples, unsigned int num_samples, struct bladerf_metadata *metadata, unsigned int timeout_ms)
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_write_trigger(struct bladerf *dev, bladerf_channel ch, bladerf_trigger_signal signal, uint8_t val)
API_EXPORT int CALL_CONV bladerf_read_trigger(struct bladerf *dev, bladerf_channel ch, bladerf_trigger_signal signal, uint8_t *val)
API_EXPORT int CALL_CONV bladerf_trigger_arm(struct bladerf *dev, const struct bladerf_trigger *trigger, bool arm, uint64_t resv1, uint64_t resv2)
API_EXPORT int CALL_CONV bladerf_trigger_init(struct bladerf *dev, bladerf_channel ch, bladerf_trigger_signal signal, struct bladerf_trigger *trigger)
API_EXPORT int CALL_CONV bladerf_trigger_state(struct bladerf *dev, const struct bladerf_trigger *trigger, bool *is_armed, bool *has_fired, bool *fire_requested, uint64_t *resv1, uint64_t *resv2)
API_EXPORT int CALL_CONV bladerf_trigger_fire(struct bladerf *dev, const struct bladerf_trigger *trigger)
bladerf_trigger_role
bladerf_trigger_signal
@ BLADERF_TRIGGER_ROLE_INVALID
@ BLADERF_TRIGGER_ROLE_MASTER
@ BLADERF_TRIGGER_ROLE_DISABLED
@ BLADERF_TRIGGER_ROLE_SLAVE
@ BLADERF_TRIGGER_USER_4
@ BLADERF_TRIGGER_USER_1
@ BLADERF_TRIGGER_USER_5
@ BLADERF_TRIGGER_USER_2
@ BLADERF_TRIGGER_USER_7
@ BLADERF_TRIGGER_MINI_EXP_1
@ BLADERF_TRIGGER_USER_0
@ BLADERF_TRIGGER_USER_3
@ BLADERF_TRIGGER_J51_1
@ BLADERF_TRIGGER_USER_6
@ BLADERF_TRIGGER_J71_4
@ BLADERF_TRIGGER_INVALID
API_EXPORT int CALL_CONV bladerf_set_tuning_mode(struct bladerf *dev, bladerf_tuning_mode mode)
bladerf_tuning_mode
API_EXPORT int CALL_CONV bladerf_get_tuning_mode(struct bladerf *dev, bladerf_tuning_mode *mode)
@ BLADERF_TUNING_MODE_FPGA
@ BLADERF_TUNING_MODE_INVALID
@ BLADERF_TUNING_MODE_HOST
API_EXPORT int CALL_CONV bladerf_get_frequency(struct bladerf *dev, bladerf_channel ch, bladerf_frequency *frequency)
API_EXPORT int CALL_CONV bladerf_set_frequency(struct bladerf *dev, bladerf_channel ch, bladerf_frequency frequency)
uint64_t bladerf_frequency
API_EXPORT int CALL_CONV bladerf_select_band(struct bladerf *dev, bladerf_channel ch, bladerf_frequency frequency)
API_EXPORT int CALL_CONV bladerf_get_frequency_range(struct bladerf *dev, bladerf_channel ch, const struct bladerf_range **range)
API_EXPORT int CALL_CONV bladerf_set_vctcxo_tamer_mode(struct bladerf *dev, bladerf_vctcxo_tamer_mode mode)
API_EXPORT int CALL_CONV bladerf_get_vctcxo_tamer_mode(struct bladerf *dev, bladerf_vctcxo_tamer_mode *mode)
bladerf_vctcxo_tamer_mode
@ BLADERF_VCTCXO_TAMER_DISABLED
@ BLADERF_VCTCXO_TAMER_INVALID
@ BLADERF_VCTCXO_TAMER_1_PPS
@ BLADERF_VCTCXO_TAMER_10_MHZ
API_EXPORT int CALL_CONV bladerf_trim_dac_read(struct bladerf *dev, uint16_t *val)
API_EXPORT int CALL_CONV bladerf_trim_dac_write(struct bladerf *dev, uint16_t val)
API_EXPORT int CALL_CONV bladerf_get_vctcxo_trim(struct bladerf *dev, uint16_t *trim)
API_EXPORT int CALL_CONV bladerf_wishbone_master_read(struct bladerf *dev, uint32_t addr, uint32_t *data)
API_EXPORT int CALL_CONV bladerf_wishbone_master_write(struct bladerf *dev, uint32_t addr, uint32_t val)
API_EXPORT int CALL_CONV bladerf_expansion_attach(struct bladerf *dev, bladerf_xb xb)
API_EXPORT int CALL_CONV bladerf_expansion_get_attached(struct bladerf *dev, bladerf_xb *xb)
bladerf_xb
@ BLADERF_XB_200
@ BLADERF_XB_NONE
@ BLADERF_XB_300
@ BLADERF_XB_100
API_EXPORT const char *CALL_CONV bladerf_strerror(int error)
API_EXPORT int CALL_CONV bladerf_interleave_stream_buffer(bladerf_channel_layout layout, bladerf_format format, unsigned int buffer_size, void *samples)
bladerf_format
API_EXPORT int CALL_CONV bladerf_deinterleave_stream_buffer(bladerf_channel_layout layout, bladerf_format format, unsigned int buffer_size, void *samples)
@ BLADERF_FORMAT_SC8_Q7
@ BLADERF_FORMAT_SC16_Q11_META
@ BLADERF_FORMAT_PACKET_META
@ BLADERF_FORMAT_SC16_Q11
@ BLADERF_FORMAT_SC8_Q7_META
uint64_t bladerf_timestamp
API_EXPORT int CALL_CONV bladerf_enable_module(struct bladerf *dev, bladerf_channel ch, bool enable)
API_EXPORT int CALL_CONV bladerf_get_timestamp(struct bladerf *dev, bladerf_direction dir, bladerf_timestamp *timestamp)
#define API_EXPORT
Definition libbladeRF.h:82
#define CALL_CONV
Definition libbladeRF.h:85
unsigned int instance
Definition libbladeRF.h:136
char product[BLADERF_DESCRIPTION_LENGTH]
Definition libbladeRF.h:140
bladerf_backend backend
Definition libbladeRF.h:131
char serial[BLADERF_SERIAL_LENGTH]
Definition libbladeRF.h:133
char manufacturer[BLADERF_DESCRIPTION_LENGTH]
Definition libbladeRF.h:139
const char * name
Definition libbladeRF.h:808
bladerf_gain_mode mode
Definition libbladeRF.h:809
char reserved[BLADERF_IMAGE_RESERVED_LEN]
struct bladerf_version version
uint64_t timestamp
uint8_t checksum[BLADERF_IMAGE_CHECKSUM_LEN]
char magic[BLADERF_IMAGE_MAGIC_LEN+1]
char serial[BLADERF_SERIAL_LENGTH+1]
uint8_t * data
uint32_t address
uint32_t length
bladerf_image_type type
bladerf_loopback mode
unsigned int actual_count
uint8_t reserved[32]
bladerf_timestamp timestamp
char serial[BLADERF_SERIAL_LENGTH]
Definition libbladeRF.h:404
bladerf_trigger_signal signal
bladerf_trigger_role role
bladerf_channel channel
const char * describe
Definition libbladeRF.h:414