libbladeRF  2.5.0
Nuand bladeRF library
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
57 extern "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 
107 struct bladerf;
108 
112 typedef enum {
120 
122 #define BLADERF_DESCRIPTION_LENGTH 33
123 
125 #define BLADERF_SERIAL_LENGTH 33
126 
134  uint8_t usb_bus;
135  uint8_t usb_addr;
136  unsigned int instance;
141 };
142 
148  void *handle;
150  void *lock;
151 };
152 
211 int CALL_CONV bladerf_open(struct bladerf **device,
212  const char *device_identifier);
213 
225 void CALL_CONV bladerf_close(struct bladerf *device);
226 
249 int CALL_CONV bladerf_open_with_devinfo(struct bladerf **device,
250  struct bladerf_devinfo *devinfo);
251 
262 
270 
281 
293 int CALL_CONV bladerf_get_devinfo(struct bladerf *dev,
294  struct bladerf_devinfo *info);
295 
296 
308 int 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 
348 bool 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 
405 };
406 
411  uint16_t major;
412  uint16_t minor;
413  uint16_t patch;
414  const char *describe;
419 };
420 
424 typedef enum {
430  BLADERF_FPGA_A9 = 301
432 
437 typedef enum {
438  BLADERF_DEVICE_SPEED_UNKNOWN,
439  BLADERF_DEVICE_SPEED_HIGH,
440  BLADERF_DEVICE_SPEED_SUPER
442 
449 typedef enum {
454 
470 int CALL_CONV bladerf_get_serial(struct bladerf *dev, char *serial);
471 
495 int CALL_CONV bladerf_get_serial_struct(struct bladerf *dev,
496  struct bladerf_serial *serial);
497 
508 int CALL_CONV bladerf_get_fpga_size(struct bladerf *dev,
509  bladerf_fpga_size *size);
510 
521 int CALL_CONV bladerf_get_fpga_bytes(struct bladerf *dev, size_t *size);
522 
537 int CALL_CONV bladerf_get_flash_size(struct bladerf *dev,
538  uint32_t *size,
539  bool *is_guess);
540 
551 int CALL_CONV bladerf_fw_version(struct bladerf *dev,
552  struct bladerf_version *version);
553 
563 int CALL_CONV bladerf_is_fpga_configured(struct bladerf *dev);
564 
574 int CALL_CONV bladerf_fpga_version(struct bladerf *dev,
575  struct bladerf_version *version);
576 
592 int CALL_CONV bladerf_get_fpga_source(struct bladerf *dev,
593  bladerf_fpga_source *source);
594 
604 
614 const char *CALL_CONV bladerf_get_board_name(struct bladerf *dev);
615 
649 typedef 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`. */
692 typedef 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 
706 typedef enum {
710 
714 typedef enum {
720 
730 size_t CALL_CONV bladerf_get_channel_count(struct bladerf *dev,
731  bladerf_direction dir);
732 
748 typedef int bladerf_gain;
749 
760 typedef enum {
770 
776 
783 
790 
798 
800 #define BLADERF_GAIN_AUTOMATIC BLADERF_GAIN_DEFAULT
802 #define BLADERF_GAIN_MANUAL BLADERF_GAIN_MGC
803 
808  const char *name;
810 };
811 
838 int CALL_CONV bladerf_set_gain(struct bladerf *dev,
839  bladerf_channel ch,
840  bladerf_gain gain);
841 
852 int CALL_CONV bladerf_get_gain(struct bladerf *dev,
853  bladerf_channel ch,
854  bladerf_gain *gain);
855 
875 int CALL_CONV bladerf_set_gain_mode(struct bladerf *dev,
876  bladerf_channel ch,
877  bladerf_gain_mode mode);
878 
893 int CALL_CONV bladerf_get_gain_mode(struct bladerf *dev,
894  bladerf_channel ch,
895  bladerf_gain_mode *mode);
896 
916 int CALL_CONV bladerf_get_gain_modes(struct bladerf *dev,
917  bladerf_channel ch,
918  const struct bladerf_gain_modes **modes);
919 
933 int CALL_CONV bladerf_get_gain_range(struct bladerf *dev,
934  bladerf_channel ch,
935  const struct bladerf_range **range);
936 
950 int CALL_CONV bladerf_set_gain_stage(struct bladerf *dev,
951  bladerf_channel ch,
952  const char *stage,
953  bladerf_gain gain);
954 
968 int CALL_CONV bladerf_get_gain_stage(struct bladerf *dev,
969  bladerf_channel ch,
970  const char *stage,
971  bladerf_gain *gain);
972 
990 int CALL_CONV bladerf_get_gain_stage_range(struct bladerf *dev,
991  bladerf_channel ch,
992  const char *stage,
993  const struct bladerf_range **range);
994 
1009 API_EXPORT
1010 int CALL_CONV bladerf_get_gain_stages(struct bladerf *dev,
1011  bladerf_channel ch,
1012  const char **stages,
1013  size_t count);
1014 
1031 typedef unsigned int bladerf_sample_rate;
1032 
1042  uint64_t integer;
1043  uint64_t num;
1044  uint64_t den;
1046 };
1047 
1065 API_EXPORT
1066 int CALL_CONV bladerf_set_sample_rate(struct bladerf *dev,
1067  bladerf_channel ch,
1068  bladerf_sample_rate rate,
1069  bladerf_sample_rate *actual);
1070 
1085 API_EXPORT
1086 int CALL_CONV
1088  bladerf_channel ch,
1089  struct bladerf_rational_rate *rate,
1090  struct bladerf_rational_rate *actual);
1100 API_EXPORT
1101 int CALL_CONV bladerf_get_sample_rate(struct bladerf *dev,
1102  bladerf_channel ch,
1103  bladerf_sample_rate *rate);
1104 
1114 API_EXPORT
1116  bladerf_channel ch,
1117  const struct bladerf_range **range);
1118 
1128 API_EXPORT
1129 int CALL_CONV
1131  bladerf_channel ch,
1132  struct bladerf_rational_rate *rate);
1133 
1151 typedef unsigned int bladerf_bandwidth;
1152 
1171 API_EXPORT
1172 int CALL_CONV bladerf_set_bandwidth(struct bladerf *dev,
1173  bladerf_channel ch,
1174  bladerf_bandwidth bandwidth,
1175  bladerf_bandwidth *actual);
1176 
1186 API_EXPORT
1187 int CALL_CONV bladerf_get_bandwidth(struct bladerf *dev,
1188  bladerf_channel ch,
1189  bladerf_bandwidth *bandwidth);
1190 
1200 API_EXPORT
1201 int CALL_CONV bladerf_get_bandwidth_range(struct bladerf *dev,
1202  bladerf_channel ch,
1203  const struct bladerf_range **range);
1204 
1229 typedef 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 
1258 API_EXPORT
1259 int CALL_CONV bladerf_select_band(struct bladerf *dev,
1260  bladerf_channel ch,
1261  bladerf_frequency frequency);
1262 
1286 API_EXPORT
1287 int CALL_CONV bladerf_set_frequency(struct bladerf *dev,
1288  bladerf_channel ch,
1289  bladerf_frequency frequency);
1299 API_EXPORT
1300 int CALL_CONV bladerf_get_frequency(struct bladerf *dev,
1301  bladerf_channel ch,
1302  bladerf_frequency *frequency);
1303 
1313 API_EXPORT
1314 int CALL_CONV bladerf_get_frequency_range(struct bladerf *dev,
1315  bladerf_channel ch,
1316  const struct bladerf_range **range);
1317 
1338 typedef enum {
1341 
1344 
1347 
1350 
1353 
1356 
1362 
1368 
1374 
1378 
1383  const char *name;
1385 };
1386 
1402 API_EXPORT
1404  struct bladerf *dev, const struct bladerf_loopback_modes **modes);
1405 
1415  struct bladerf *dev, bladerf_loopback mode);
1416 
1430 API_EXPORT
1431 int CALL_CONV bladerf_set_loopback(struct bladerf *dev, bladerf_loopback lb);
1432 
1441 API_EXPORT
1442 int CALL_CONV bladerf_get_loopback(struct bladerf *dev, bladerf_loopback *lb);
1443 
1567 typedef enum {
1570 
1576 
1582 
1590 
1606 typedef enum {
1621 
1633  uint64_t options;
1635 };
1636 
1652 API_EXPORT
1653 int CALL_CONV bladerf_trigger_init(struct bladerf *dev,
1654  bladerf_channel ch,
1655  bladerf_trigger_signal signal,
1656  struct bladerf_trigger *trigger);
1657 
1678 API_EXPORT
1679 int 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 
1696 API_EXPORT
1697 int CALL_CONV bladerf_trigger_fire(struct bladerf *dev,
1698  const struct bladerf_trigger *trigger);
1699 
1719 API_EXPORT
1720 int 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 
1744 typedef enum {
1747 
1750 
1757 
1764 
1765  /* RX_MUX setting 0x3 is reserved for future use */
1766 
1769 } bladerf_rx_mux;
1770 
1772 /* Backwards compatible mapping for `bladerf_rx_mux`. */
1773 #define BLADERF_RX_MUX_BASEBAND_LMS BLADERF_RX_MUX_BASEBAND
1784 API_EXPORT
1785 int CALL_CONV bladerf_set_rx_mux(struct bladerf *dev, bladerf_rx_mux mux);
1786 
1795 API_EXPORT
1796 int CALL_CONV bladerf_get_rx_mux(struct bladerf *dev, bladerf_rx_mux *mode);
1797 
1818 typedef 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;
1849  uint8_t rffe_profile;
1850  uint8_t port;
1851  uint8_t spdt;
1852  };
1853  };
1854 };
1855 
1884 API_EXPORT
1885 int CALL_CONV bladerf_schedule_retune(struct bladerf *dev,
1886  bladerf_channel ch,
1887  bladerf_timestamp timestamp,
1888  bladerf_frequency frequency,
1889  struct bladerf_quick_tune *quick_tune);
1890 
1903 API_EXPORT
1905  bladerf_channel ch);
1906 
1927 API_EXPORT
1928 int CALL_CONV bladerf_get_quick_tune(struct bladerf *dev,
1929  bladerf_channel ch,
1930  struct bladerf_quick_tune *quick_tune);
1931 
1953 
1963 typedef enum {
1969 
1975 
1981 
1988 
1990 /* Backwards compatible mapping to `bladerf_correction`. */
1991 #define BLADERF_CORR_LMS_DCOFF_I BLADERF_CORR_DCOFF_I
1992 #define BLADERF_CORR_LMS_DCOFF_Q BLADERF_CORR_DCOFF_Q
1993 #define BLADERF_CORR_FPGA_PHASE BLADERF_CORR_PHASE
1994 #define BLADERF_CORR_FPGA_GAIN BLADERF_CORR_GAIN
2010 API_EXPORT
2011 int CALL_CONV bladerf_set_correction(struct bladerf *dev,
2012  bladerf_channel ch,
2013  bladerf_correction corr,
2014  bladerf_correction_value value);
2015 
2026 API_EXPORT
2027 int CALL_CONV bladerf_get_correction(struct bladerf *dev,
2028  bladerf_channel ch,
2029  bladerf_correction corr,
2030  bladerf_correction_value *value);
2031 
2045 #define BLADERF_PRIuTS PRIu64
2047 #define BLADERF_PRIxTS PRIx64
2049 #define BLADERF_SCNuTS SCNu64
2051 #define BLADERF_SCNxTS SCNx64
2052 
2064 typedef enum {
2121 
2162 
2203 
2260 
2301 } bladerf_format;
2302 
2309 /*
2310  * Metadata status bits
2311  *
2312  * These are used in conjunction with the bladerf_metadata structure's `status`
2313  * field.
2314  */
2315 
2322 #define BLADERF_META_STATUS_OVERRUN (1 << 0)
2323 
2332 #define BLADERF_META_STATUS_UNDERRUN (1 << 1)
2333 
2334 /*
2335  * Metadata flags
2336  *
2337  * These are used in conjunction with the bladerf_metadata structure's `flags`
2338  * field.
2339  */
2340 
2355 #define BLADERF_META_FLAG_TX_BURST_START (1 << 0)
2356 
2383 #define BLADERF_META_FLAG_TX_BURST_END (1 << 1)
2384 
2393 #define BLADERF_META_FLAG_TX_NOW (1 << 2)
2394 
2413 #define BLADERF_META_FLAG_TX_UPDATE_TIMESTAMP (1 << 3)
2414 
2420 #define BLADERF_META_FLAG_RX_NOW (1 << 31)
2421 
2426 #define BLADERF_META_FLAG_RX_HW_UNDERFLOW (1 << 0)
2427 
2432 #define BLADERF_META_FLAG_RX_HW_MINIEXP1 (1 << 16)
2433 
2438 #define BLADERF_META_FLAG_RX_HW_MINIEXP2 (1 << 17)
2439 
2453 
2466  uint32_t flags;
2467 
2475  uint32_t status;
2476 
2490  unsigned int actual_count;
2491 
2496  uint8_t reserved[32];
2497 };
2498 
2545 API_EXPORT
2547  bladerf_format format,
2548  unsigned int buffer_size,
2549  void *samples);
2550 
2573 API_EXPORT
2575  bladerf_format format,
2576  unsigned int buffer_size,
2577  void *samples);
2578 
2601 API_EXPORT
2602 int CALL_CONV bladerf_enable_module(struct bladerf *dev,
2603  bladerf_channel ch,
2604  bool enable);
2605 
2647 API_EXPORT
2648 int CALL_CONV bladerf_get_timestamp(struct bladerf *dev,
2649  bladerf_direction dir,
2650  bladerf_timestamp *timestamp);
2651 
2721 API_EXPORT
2722 int CALL_CONV bladerf_sync_config(struct bladerf *dev,
2723  bladerf_channel_layout layout,
2724  bladerf_format format,
2725  unsigned int num_buffers,
2726  unsigned int buffer_size,
2727  unsigned int num_transfers,
2728  unsigned int stream_timeout);
2729 
2763 API_EXPORT
2764 int CALL_CONV bladerf_sync_tx(struct bladerf *dev,
2765  const void *samples,
2766  unsigned int num_samples,
2767  struct bladerf_metadata *metadata,
2768  unsigned int timeout_ms);
2769 
2803 API_EXPORT
2804 int CALL_CONV bladerf_sync_rx(struct bladerf *dev,
2805  void *samples,
2806  unsigned int num_samples,
2807  struct bladerf_metadata *metadata,
2808  unsigned int timeout_ms);
2809 
2810 
2833 #define BLADERF_STREAM_SHUTDOWN (NULL)
2834 
2840 #define BLADERF_STREAM_NO_DATA ((void *)(-1))
2841 
2843 struct bladerf_stream;
2844 
2892 typedef void *(*bladerf_stream_cb)(struct bladerf *dev,
2893  struct bladerf_stream *stream,
2894  struct bladerf_metadata *meta,
2895  void *samples,
2896  size_t num_samples,
2897  void *user_data);
2898 
2961 API_EXPORT
2963  struct bladerf *dev,
2964  bladerf_stream_cb callback,
2965  void ***buffers,
2966  size_t num_buffers,
2967  bladerf_format format,
2968  size_t samples_per_buffer,
2969  size_t num_transfers,
2970  void *user_data);
2971 
2992 API_EXPORT
2994  bladerf_channel_layout layout);
2995 
3023 API_EXPORT
3025  void *buffer,
3026  unsigned int timeout_ms);
3027 
3045 API_EXPORT
3047  void *buffer);
3048 
3049 
3061 API_EXPORT
3063 
3073 API_EXPORT
3074 int CALL_CONV bladerf_set_stream_timeout(struct bladerf *dev,
3075  bladerf_direction dir,
3076  unsigned int timeout);
3077 
3088 API_EXPORT
3089 int CALL_CONV bladerf_get_stream_timeout(struct bladerf *dev,
3090  bladerf_direction dir,
3091  unsigned int *timeout);
3092 
3122 API_EXPORT
3123 int CALL_CONV bladerf_flash_firmware(struct bladerf *dev, const char *firmware);
3124 
3135 API_EXPORT
3136 int CALL_CONV bladerf_load_fpga(struct bladerf *dev, const char *fpga);
3137 
3148 API_EXPORT
3149 int CALL_CONV bladerf_flash_fpga(struct bladerf *dev, const char *fpga_image);
3150 
3158 API_EXPORT
3159 int CALL_CONV bladerf_erase_stored_fpga(struct bladerf *dev);
3160 
3168 API_EXPORT
3169 int CALL_CONV bladerf_device_reset(struct bladerf *dev);
3170 
3180 API_EXPORT
3181 int CALL_CONV bladerf_get_fw_log(struct bladerf *dev, const char *filename);
3182 
3193 API_EXPORT
3194 int CALL_CONV bladerf_jump_to_bootloader(struct bladerf *dev);
3195 
3211 API_EXPORT
3213 
3237 API_EXPORT
3238 int CALL_CONV bladerf_load_fw_from_bootloader(const char *device_identifier,
3239  bladerf_backend backend,
3240  uint8_t bus,
3241  uint8_t addr,
3242  const char *file);
3243 
3258 typedef enum {
3273 
3275 #define BLADERF_IMAGE_MAGIC_LEN 7
3276 
3278 #define BLADERF_IMAGE_CHECKSUM_LEN 32
3279 
3281 #define BLADERF_IMAGE_RESERVED_LEN 128
3282 
3303 
3309 
3315  struct bladerf_version version;
3316 
3318  uint64_t timestamp;
3319 
3329 
3334 
3339 
3344  uint32_t address;
3345 
3347  uint32_t length;
3348 
3350  uint8_t *data;
3351 };
3352 
3376 API_EXPORT
3377 struct bladerf_image *CALL_CONV bladerf_alloc_image(struct bladerf *dev,
3379  uint32_t address,
3380  uint32_t length);
3381 
3395 API_EXPORT
3397  struct bladerf *dev, bladerf_fpga_size fpga_size, uint16_t vctcxo_trim);
3398 
3406 API_EXPORT
3408 
3424 API_EXPORT
3425 int CALL_CONV bladerf_image_write(struct bladerf *dev,
3426  struct bladerf_image *image,
3427  const char *file);
3428 
3450 API_EXPORT
3451 int CALL_CONV bladerf_image_read(struct bladerf_image *image, const char *file);
3452 
3484 typedef enum {
3487 
3490 
3493 
3497 
3506 API_EXPORT
3509 
3520 API_EXPORT
3523 
3544 API_EXPORT
3545 int CALL_CONV bladerf_get_vctcxo_trim(struct bladerf *dev, uint16_t *trim);
3546 
3557 API_EXPORT
3558 int CALL_CONV bladerf_trim_dac_write(struct bladerf *dev, uint16_t val);
3559 
3574 API_EXPORT
3575 int CALL_CONV bladerf_trim_dac_read(struct bladerf *dev, uint16_t *val);
3576 
3608 typedef enum {
3611 
3617 
3621 
3631 API_EXPORT
3632 int CALL_CONV bladerf_set_tuning_mode(struct bladerf *dev,
3633  bladerf_tuning_mode mode);
3634 
3643 API_EXPORT
3644 int CALL_CONV bladerf_get_tuning_mode(struct bladerf *dev,
3645  bladerf_tuning_mode *mode);
3646 
3669 #define BLADERF_TRIGGER_REG_ARM ((uint8_t)(1 << 0))
3670 
3680 #define BLADERF_TRIGGER_REG_FIRE ((uint8_t)(1 << 1))
3681 
3690 #define BLADERF_TRIGGER_REG_MASTER ((uint8_t)(1 << 2))
3691 
3698 #define BLADERF_TRIGGER_REG_LINE ((uint8_t)(1 << 3))
3699 
3712 API_EXPORT
3713 int CALL_CONV bladerf_read_trigger(struct bladerf *dev,
3714  bladerf_channel ch,
3715  bladerf_trigger_signal signal,
3716  uint8_t *val);
3717 
3729 API_EXPORT
3730 int CALL_CONV bladerf_write_trigger(struct bladerf *dev,
3731  bladerf_channel ch,
3732  bladerf_trigger_signal signal,
3733  uint8_t val);
3734 
3757 API_EXPORT
3758 int CALL_CONV bladerf_wishbone_master_read(struct bladerf *dev, uint32_t addr, uint32_t *data);
3759 
3770 API_EXPORT
3771 int CALL_CONV bladerf_wishbone_master_write(struct bladerf *dev, uint32_t addr, uint32_t val);
3772 
3795 API_EXPORT
3796 int CALL_CONV bladerf_config_gpio_read(struct bladerf *dev, uint32_t *val);
3797 
3810 API_EXPORT
3811 int CALL_CONV bladerf_config_gpio_write(struct bladerf *dev, uint32_t val);
3812 
3848 API_EXPORT
3849 int CALL_CONV bladerf_erase_flash(struct bladerf *dev,
3850  uint32_t erase_block,
3851  uint32_t count);
3852 
3866 API_EXPORT
3867 int CALL_CONV bladerf_erase_flash_bytes(struct bladerf *dev,
3868  uint32_t address,
3869  uint32_t length);
3870 
3890 API_EXPORT
3891 int CALL_CONV bladerf_read_flash(struct bladerf *dev,
3892  uint8_t *buf,
3893  uint32_t page,
3894  uint32_t count);
3895 
3911 API_EXPORT
3912 int CALL_CONV bladerf_read_flash_bytes(struct bladerf *dev,
3913  uint8_t *buf,
3914  uint32_t address,
3915  uint32_t bytes);
3916 
3935 API_EXPORT
3936 int CALL_CONV bladerf_write_flash(struct bladerf *dev,
3937  const uint8_t *buf,
3938  uint32_t page,
3939  uint32_t count);
3940 
3955 API_EXPORT
3956 int CALL_CONV bladerf_write_flash_bytes(struct bladerf *dev,
3957  const uint8_t *buf,
3958  uint32_t address,
3959  uint32_t length);
3960 
3971 API_EXPORT
3972 int CALL_CONV bladerf_lock_otp(struct bladerf *dev);
3973 
3986 API_EXPORT
3987 int CALL_CONV bladerf_read_otp(struct bladerf *dev,
3988  uint8_t *buf);
3989 
4002 API_EXPORT
4003 int CALL_CONV bladerf_write_otp(struct bladerf *dev,
4004  uint8_t *buf);
4005 
4028 API_EXPORT
4029 int CALL_CONV bladerf_set_rf_port(struct bladerf *dev,
4030  bladerf_channel ch,
4031  const char *port);
4032 
4042 API_EXPORT
4043 int CALL_CONV bladerf_get_rf_port(struct bladerf *dev,
4044  bladerf_channel ch,
4045  const char **port);
4046 
4061 API_EXPORT
4062 int CALL_CONV bladerf_get_rf_ports(struct bladerf *dev,
4063  bladerf_channel ch,
4064  const char **ports,
4065  unsigned int count);
4066 
4083 typedef enum {
4087 
4097 API_EXPORT
4098 int CALL_CONV bladerf_enable_feature(struct bladerf *dev,
4099  bladerf_feature feature,
4100  bool enable);
4101 
4110 API_EXPORT
4111 int CALL_CONV bladerf_get_feature(struct bladerf *dev,
4112  bladerf_feature* feature);
4113 
4137 typedef enum {
4139  BLADERF_XB_100,
4146 
4155 API_EXPORT
4156 int CALL_CONV bladerf_expansion_attach(struct bladerf *dev, bladerf_xb xb);
4157 
4166 API_EXPORT
4168  bladerf_xb *xb);
4169 
4186 typedef enum {
4195 
4204 API_EXPORT
4206 
4220 API_EXPORT
4222 
4241 // clang-format off
4242 #define BLADERF_ERR_UNEXPECTED (-1)
4243 #define BLADERF_ERR_RANGE (-2)
4244 #define BLADERF_ERR_INVAL (-3)
4245 #define BLADERF_ERR_MEM (-4)
4246 #define BLADERF_ERR_IO (-5)
4247 #define BLADERF_ERR_TIMEOUT (-6)
4248 #define BLADERF_ERR_NODEV (-7)
4249 #define BLADERF_ERR_UNSUPPORTED (-8)
4250 #define BLADERF_ERR_MISALIGNED (-9)
4251 #define BLADERF_ERR_CHECKSUM (-10)
4252 #define BLADERF_ERR_NO_FILE (-11)
4253 #define BLADERF_ERR_UPDATE_FPGA (-12)
4254 #define BLADERF_ERR_UPDATE_FW (-13)
4255 #define BLADERF_ERR_TIME_PAST (-14)
4256 #define BLADERF_ERR_QUEUE_FULL (-15)
4258 #define BLADERF_ERR_FPGA_OP (-16)
4259 #define BLADERF_ERR_PERMISSION (-17)
4261 #define BLADERF_ERR_WOULD_BLOCK (-18)
4266 #define BLADERF_ERR_NOT_INIT (-19)
4268 // clang-format on
4269 
4277 API_EXPORT
4278 const char *CALL_CONV bladerf_strerror(int error);
4279 
4282 #include <bladeRF1.h>
4283 #include <bladeRF2.h>
4284 
4285 #ifdef __cplusplus
4286 }
4287 #endif
4288 
4289 #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
Definition: libbladeRF.h:1151
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
Definition: libbladeRF.h:1963
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
Definition: libbladeRF.h:1952
@ BLADERF_CORR_DCOFF_Q
Definition: libbladeRF.h:1974
@ BLADERF_CORR_PHASE
Definition: libbladeRF.h:1980
@ BLADERF_CORR_GAIN
Definition: libbladeRF.h:1986
@ BLADERF_CORR_DCOFF_I
Definition: libbladeRF.h:1968
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 int CALL_CONV bladerf_image_read(struct bladerf_image *image, const char *file)
API_EXPORT struct bladerf_image *CALL_CONV bladerf_alloc_image(struct bladerf *dev, bladerf_image_type type, uint32_t address, uint32_t length)
bladerf_image_type
Definition: libbladeRF.h:3258
API_EXPORT int CALL_CONV bladerf_image_write(struct bladerf *dev, struct bladerf_image *image, const char *file)
#define BLADERF_IMAGE_RESERVED_LEN
Definition: libbladeRF.h:3281
API_EXPORT void CALL_CONV bladerf_free_image(struct bladerf_image *image)
#define BLADERF_IMAGE_MAGIC_LEN
Definition: libbladeRF.h:3275
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
Definition: libbladeRF.h:3278
@ BLADERF_IMAGE_TYPE_FIRMWARE
Definition: libbladeRF.h:3261
@ BLADERF_IMAGE_TYPE_CALIBRATION
Definition: libbladeRF.h:3266
@ BLADERF_IMAGE_TYPE_RX_IQ_CAL
Definition: libbladeRF.h:3269
@ BLADERF_IMAGE_TYPE_INVALID
Definition: libbladeRF.h:3259
@ BLADERF_IMAGE_TYPE_FPGA_40KLE
Definition: libbladeRF.h:3262
@ BLADERF_IMAGE_TYPE_RX_DC_CAL
Definition: libbladeRF.h:3267
@ BLADERF_IMAGE_TYPE_TX_IQ_CAL
Definition: libbladeRF.h:3270
@ BLADERF_IMAGE_TYPE_TX_DC_CAL
Definition: libbladeRF.h:3268
@ BLADERF_IMAGE_TYPE_FPGA_A9
Definition: libbladeRF.h:3265
@ BLADERF_IMAGE_TYPE_FPGA_A5
Definition: libbladeRF.h:3271
@ BLADERF_IMAGE_TYPE_RAW
Definition: libbladeRF.h:3260
@ BLADERF_IMAGE_TYPE_FPGA_A4
Definition: libbladeRF.h:3264
@ BLADERF_IMAGE_TYPE_FPGA_115KLE
Definition: libbladeRF.h:3263
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 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)
API_EXPORT const char *CALL_CONV bladerf_get_board_name(struct bladerf *dev)
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 const char *CALL_CONV bladerf_backend_str(bladerf_backend backend)
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 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_version(struct bladerf_version *version)
API_EXPORT void CALL_CONV bladerf_log_set_verbosity(bladerf_log_level level)
bladerf_log_level
Definition: libbladeRF.h:4186
@ BLADERF_LOG_LEVEL_ERROR
Definition: libbladeRF.h:4191
@ BLADERF_LOG_LEVEL_SILENT
Definition: libbladeRF.h:4193
@ BLADERF_LOG_LEVEL_INFO
Definition: libbladeRF.h:4189
@ BLADERF_LOG_LEVEL_WARNING
Definition: libbladeRF.h:4190
@ BLADERF_LOG_LEVEL_VERBOSE
Definition: libbladeRF.h:4187
@ BLADERF_LOG_LEVEL_DEBUG
Definition: libbladeRF.h:4188
@ BLADERF_LOG_LEVEL_CRITICAL
Definition: libbladeRF.h:4192
bladerf_loopback
Definition: libbladeRF.h:1338
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
Definition: libbladeRF.h:1376
@ BLADERF_LB_BB_TXVGA1_RXVGA2
Definition: libbladeRF.h:1349
@ BLADERF_LB_BB_TXLPF_RXVGA2
Definition: libbladeRF.h:1346
@ BLADERF_LB_BB_TXLPF_RXLPF
Definition: libbladeRF.h:1352
@ BLADERF_LB_RF_LNA2
Definition: libbladeRF.h:1367
@ BLADERF_LB_RF_LNA3
Definition: libbladeRF.h:1373
@ BLADERF_LB_BB_TXVGA1_RXLPF
Definition: libbladeRF.h:1355
@ BLADERF_LB_NONE
Definition: libbladeRF.h:1340
@ BLADERF_LB_FIRMWARE
Definition: libbladeRF.h:1343
@ BLADERF_LB_RF_LNA1
Definition: libbladeRF.h:1361
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
Definition: libbladeRF.h:1744
@ BLADERF_RX_MUX_DIGITAL_LOOPBACK
Definition: libbladeRF.h:1768
@ BLADERF_RX_MUX_12BIT_COUNTER
Definition: libbladeRF.h:1756
@ BLADERF_RX_MUX_32BIT_COUNTER
Definition: libbladeRF.h:1763
@ BLADERF_RX_MUX_INVALID
Definition: libbladeRF.h:1746
@ BLADERF_RX_MUX_BASEBAND
Definition: libbladeRF.h:1749
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
Definition: libbladeRF.h:1031
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
Definition: libbladeRF.h:4083
@ BLADERF_FEATURE_OVERSAMPLE
Definition: libbladeRF.h:4085
@ BLADERF_FEATURE_DEFAULT
Definition: libbladeRF.h:4084
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)
void *(* bladerf_stream_cb)(struct bladerf *dev, struct bladerf_stream *stream, struct bladerf_metadata *meta, void *samples, size_t num_samples, void *user_data)
Definition: libbladeRF.h:2892
API_EXPORT int CALL_CONV bladerf_get_stream_timeout(struct bladerf *dev, bladerf_direction dir, unsigned int *timeout)
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
Definition: libbladeRF.h:1567
bladerf_trigger_signal
Definition: libbladeRF.h:1606
@ BLADERF_TRIGGER_ROLE_INVALID
Definition: libbladeRF.h:1569
@ BLADERF_TRIGGER_ROLE_MASTER
Definition: libbladeRF.h:1581
@ BLADERF_TRIGGER_ROLE_DISABLED
Definition: libbladeRF.h:1575
@ BLADERF_TRIGGER_ROLE_SLAVE
Definition: libbladeRF.h:1588
@ BLADERF_TRIGGER_USER_4
Definition: libbladeRF.h:1616
@ BLADERF_TRIGGER_USER_1
Definition: libbladeRF.h:1613
@ BLADERF_TRIGGER_USER_5
Definition: libbladeRF.h:1617
@ BLADERF_TRIGGER_USER_2
Definition: libbladeRF.h:1614
@ BLADERF_TRIGGER_USER_7
Definition: libbladeRF.h:1619
@ BLADERF_TRIGGER_MINI_EXP_1
Definition: libbladeRF.h:1610
@ BLADERF_TRIGGER_USER_0
Definition: libbladeRF.h:1612
@ BLADERF_TRIGGER_USER_3
Definition: libbladeRF.h:1615
@ BLADERF_TRIGGER_J51_1
Definition: libbladeRF.h:1609
@ BLADERF_TRIGGER_USER_6
Definition: libbladeRF.h:1618
@ BLADERF_TRIGGER_J71_4
Definition: libbladeRF.h:1608
@ BLADERF_TRIGGER_INVALID
Definition: libbladeRF.h:1607
API_EXPORT int CALL_CONV bladerf_set_tuning_mode(struct bladerf *dev, bladerf_tuning_mode mode)
bladerf_tuning_mode
Definition: libbladeRF.h:3608
API_EXPORT int CALL_CONV bladerf_get_tuning_mode(struct bladerf *dev, bladerf_tuning_mode *mode)
@ BLADERF_TUNING_MODE_FPGA
Definition: libbladeRF.h:3619
@ BLADERF_TUNING_MODE_INVALID
Definition: libbladeRF.h:3610
@ BLADERF_TUNING_MODE_HOST
Definition: libbladeRF.h:3616
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
Definition: libbladeRF.h:1229
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
Definition: libbladeRF.h:3484
@ BLADERF_VCTCXO_TAMER_DISABLED
Definition: libbladeRF.h:3489
@ BLADERF_VCTCXO_TAMER_INVALID
Definition: libbladeRF.h:3486
@ BLADERF_VCTCXO_TAMER_1_PPS
Definition: libbladeRF.h:3492
@ BLADERF_VCTCXO_TAMER_10_MHZ
Definition: libbladeRF.h:3495
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
Definition: libbladeRF.h:4137
@ BLADERF_XB_200
Definition: libbladeRF.h:4143
@ BLADERF_XB_NONE
Definition: libbladeRF.h:4138
@ BLADERF_XB_300
Definition: libbladeRF.h:4144
@ BLADERF_XB_100
Definition: libbladeRF.h:4139
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
Definition: libbladeRF.h:2064
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
Definition: libbladeRF.h:2259
@ BLADERF_FORMAT_SC16_Q11_META
Definition: libbladeRF.h:2161
@ BLADERF_FORMAT_PACKET_META
Definition: libbladeRF.h:2202
@ BLADERF_FORMAT_SC16_Q11
Definition: libbladeRF.h:2120
@ BLADERF_FORMAT_SC8_Q7_META
Definition: libbladeRF.h:2300
uint64_t bladerf_timestamp
Definition: libbladeRF.h:1818
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
uint8_t usb_addr
Definition: libbladeRF.h:135
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
uint8_t usb_bus
Definition: libbladeRF.h:134
const char * name
Definition: libbladeRF.h:808
bladerf_gain_mode mode
Definition: libbladeRF.h:809
char reserved[BLADERF_IMAGE_RESERVED_LEN]
Definition: libbladeRF.h:3333
struct bladerf_version version
Definition: libbladeRF.h:3315
uint64_t timestamp
Definition: libbladeRF.h:3318
uint8_t checksum[BLADERF_IMAGE_CHECKSUM_LEN]
Definition: libbladeRF.h:3308
char magic[BLADERF_IMAGE_MAGIC_LEN+1]
Definition: libbladeRF.h:3302
char serial[BLADERF_SERIAL_LENGTH+1]
Definition: libbladeRF.h:3328
uint8_t * data
Definition: libbladeRF.h:3350
uint32_t address
Definition: libbladeRF.h:3344
uint32_t length
Definition: libbladeRF.h:3347
bladerf_image_type type
Definition: libbladeRF.h:3338
bladerf_loopback mode
Definition: libbladeRF.h:1384
unsigned int actual_count
Definition: libbladeRF.h:2490
uint8_t reserved[32]
Definition: libbladeRF.h:2496
bladerf_timestamp timestamp
Definition: libbladeRF.h:2452
uint16_t nios_profile
Definition: libbladeRF.h:1848
int64_t max
Definition: libbladeRF.h:395
int64_t step
Definition: libbladeRF.h:396
int64_t min
Definition: libbladeRF.h:394
char serial[BLADERF_SERIAL_LENGTH]
Definition: libbladeRF.h:404
bladerf_trigger_signal signal
Definition: libbladeRF.h:1632
bladerf_trigger_role role
Definition: libbladeRF.h:1631
bladerf_channel channel
Definition: libbladeRF.h:1630
uint64_t options
Definition: libbladeRF.h:1633
uint16_t major
Definition: libbladeRF.h:411
const char * describe
Definition: libbladeRF.h:414
uint16_t minor
Definition: libbladeRF.h:412
uint16_t patch
Definition: libbladeRF.h:413