libbladeRF  1.1.0
Nuand bladeRF library
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Groups
libbladeRF.h
Go to the documentation of this file.
1 
22 #ifndef BLADERF_H_
23 #define BLADERF_H_
24 
25 #include <stdint.h>
26 #include <stdlib.h>
27 
28 #ifdef __cplusplus
29 extern "C" {
30 #else
31 /* stdbool.h is not applicable for C++ programs, as the language inherently
32  * provides the bool type.
33  *
34  * Users of Visual Studio 2012 and earlier will need to supply a stdbool.h
35  * implementation, as it is not included with the toolchain. One is provided
36  * with the bladeRF source code. Visual Studio 2013 onward supplies this header.
37  */
38 #include <stdbool.h>
39 #endif
40 
41 #if defined _WIN32 || defined __CYGWIN__
42 # include <windows.h>
43 # define CALL_CONV __cdecl
44 # ifdef __GNUC__
45 # define API_EXPORT __attribute__ ((dllexport))
46 # else
47 # define API_EXPORT __declspec(dllexport)
48 # endif
49 #elif defined _DOXYGEN_ONLY_
50 
52 # define API_EXPORT
53 
55 # define CALL_CONV
56 #else
57 # define API_EXPORT __attribute__ ((visibility ("default")))
58 # define CALL_CONV
59 #endif
60 
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)
105 struct bladerf;
106 
107 
111 typedef enum {
118 
119 
124 typedef enum {
125  BLADERF_DEVICE_SPEED_UNKNOWN,
126  BLADERF_DEVICE_SPEED_HIGH,
127  BLADERF_DEVICE_SPEED_SUPER,
129 
131 #define BLADERF_SERIAL_LENGTH 33
132 
142  uint8_t usb_bus;
143  uint8_t usb_addr;
144  unsigned int instance;
145 };
146 
157 
165 
188 int CALL_CONV bladerf_open_with_devinfo(struct bladerf **device,
189  struct bladerf_devinfo *devinfo);
190 
236 int CALL_CONV bladerf_open(struct bladerf **device,
237  const char *device_identifier);
238 
250 void CALL_CONV bladerf_close(struct bladerf *device);
251 
273 
286 int CALL_CONV bladerf_get_devinfo(struct bladerf *dev,
287  struct bladerf_devinfo *info);
288 
303 int CALL_CONV bladerf_get_devinfo_from_str(const char *devstr,
304  struct bladerf_devinfo *info);
305 
312  const struct bladerf_devinfo *b);
313 
326 bool CALL_CONV bladerf_devstr_matches(const char *dev_str,
327  struct bladerf_devinfo *info);
328 
339 const char * CALL_CONV bladerf_backend_str(bladerf_backend backend);
340 
341 
355 #define BLADERF_RXVGA1_GAIN_MIN 5
356 
358 #define BLADERF_RXVGA1_GAIN_MAX 30
359 
361 #define BLADERF_RXVGA2_GAIN_MIN 0
362 
364 #define BLADERF_RXVGA2_GAIN_MAX 30
365 
367 #define BLADERF_TXVGA1_GAIN_MIN (-35)
368 
370 #define BLADERF_TXVGA1_GAIN_MAX (-4)
371 
373 #define BLADERF_TXVGA2_GAIN_MIN 0
374 
376 #define BLADERF_TXVGA2_GAIN_MAX 25
377 
379 #define BLADERF_SAMPLERATE_MIN 80000u
380 
382 #define BLADERF_SAMPLERATE_REC_MAX 40000000u
383 
385 #define BLADERF_BANDWIDTH_MIN 1500000u
386 
388 #define BLADERF_BANDWIDTH_MAX 28000000u
389 
391 #define BLADERF_FREQUENCY_MIN 232500000u
392 
400 #define BLADERF_FREQUENCY_MIN_XB200 0u
401 
403 #define BLADERF_FREQUENCY_MAX 3800000000u
404 
408 typedef enum {
409 
414 
419 
424 
429 
434 
440 
441 
447 
453 
458 
460 
461 
466  uint64_t integer;
467  uint64_t num;
468  uint64_t den;
470 };
471 
475 typedef enum {
480 
484 typedef enum {
490 
491 #define BLADERF_LNA_GAIN_MID_DB 3
492 #define BLADERF_LNA_GAIN_MAX_DB 6
497 typedef enum {
502 
506 typedef enum
507 {
511 
515 typedef enum {
522 } bladerf_xb;
523 
527 typedef enum {
530 
533 
540 
555 
563 
572 
576 typedef enum {
580 
584 typedef enum
585 {
586  BLADERF_DC_CAL_LPF_TUNING,
587  BLADERF_DC_CAL_TX_LPF,
588  BLADERF_DC_CAL_RX_LPF,
589  BLADERF_DC_CAL_RXVGA2
591 
601 typedef enum
602 {
609 
616 
622 
630 
648 int CALL_CONV bladerf_enable_module(struct bladerf *dev,
649  bladerf_module m, bool enable);
650 
665 int CALL_CONV bladerf_set_loopback(struct bladerf *dev, bladerf_loopback l);
666 
667 
677 int CALL_CONV bladerf_get_loopback(struct bladerf *dev, bladerf_loopback *l);
678 
700 int CALL_CONV bladerf_set_sample_rate(struct bladerf *dev,
701  bladerf_module module,
702  unsigned int rate,
703  unsigned int *actual);
704 
726  struct bladerf *dev,
727  bladerf_module module,
728  struct bladerf_rational_rate *rate,
729  struct bladerf_rational_rate *actual);
730 
743 int CALL_CONV bladerf_set_sampling(struct bladerf *dev,
744  bladerf_sampling sampling);
745 
756 int CALL_CONV bladerf_get_sampling(struct bladerf *dev,
757  bladerf_sampling *sampling);
758 
769 int CALL_CONV bladerf_get_sample_rate(struct bladerf *dev,
770  bladerf_module module,
771  unsigned int *rate);
772 
784  struct bladerf *dev,
785  bladerf_module module,
786  struct bladerf_rational_rate *rate);
787 
802 int CALL_CONV bladerf_set_correction(struct bladerf *dev, bladerf_module module,
803  bladerf_correction corr, int16_t value);
804 
816 int CALL_CONV bladerf_get_correction(struct bladerf *dev, bladerf_module module,
817  bladerf_correction corr, int16_t *value);
818 
832 int CALL_CONV bladerf_set_txvga2(struct bladerf *dev, int gain);
833 
842 API_EXPORT int
843 CALL_CONV bladerf_get_txvga2(struct bladerf *dev, int *gain);
844 
858 int CALL_CONV bladerf_set_txvga1(struct bladerf *dev, int gain);
859 
869 int CALL_CONV bladerf_get_txvga1(struct bladerf *dev, int *gain);
870 
883 int CALL_CONV bladerf_set_tx_gain(struct bladerf *dev, int gain);
884 
894 int CALL_CONV bladerf_set_lna_gain(struct bladerf *dev, bladerf_lna_gain gain);
895 
903 int CALL_CONV bladerf_get_lna_gain(struct bladerf *dev, bladerf_lna_gain *gain);
904 
918 int CALL_CONV bladerf_set_rxvga1(struct bladerf *dev, int gain);
919 
927 int CALL_CONV bladerf_get_rxvga1(struct bladerf *dev, int *gain);
928 
942 int CALL_CONV bladerf_set_rxvga2(struct bladerf *dev, int gain);
943 
951 int CALL_CONV bladerf_get_rxvga2(struct bladerf *dev, int *gain);
952 
967 int CALL_CONV bladerf_set_gain(struct bladerf *dev, bladerf_module mod, int gain);
968 
990 int CALL_CONV bladerf_set_bandwidth(struct bladerf *dev, bladerf_module module,
991  unsigned int bandwidth,
992  unsigned int *actual);
993 
1003 API_EXPORT
1004 int CALL_CONV bladerf_get_bandwidth(struct bladerf *dev, bladerf_module module,
1005  unsigned int *bandwidth);
1006 
1016 API_EXPORT
1017 int CALL_CONV bladerf_set_lpf_mode(struct bladerf *dev, bladerf_module module,
1018  bladerf_lpf_mode mode);
1019 
1029 API_EXPORT
1030 int CALL_CONV bladerf_get_lpf_mode(struct bladerf *dev, bladerf_module module,
1031  bladerf_lpf_mode *mode);
1032 
1049 API_EXPORT
1050 int CALL_CONV bladerf_select_band(struct bladerf *dev, bladerf_module module,
1051  unsigned int frequency);
1052 
1068 API_EXPORT
1069 int CALL_CONV bladerf_set_frequency(struct bladerf *dev,
1070  bladerf_module module,
1071  unsigned int frequency);
1072 
1080 API_EXPORT
1081 int CALL_CONV bladerf_get_frequency(struct bladerf *dev,
1082  bladerf_module module,
1083  unsigned int *frequency);
1084 
1093 API_EXPORT
1094 int CALL_CONV bladerf_expansion_attach(struct bladerf *dev, bladerf_xb xb);
1095 
1104 API_EXPORT
1105 int CALL_CONV bladerf_expansion_get_attached(struct bladerf *dev, bladerf_xb *xb);
1106 
1116 API_EXPORT
1117 int CALL_CONV bladerf_xb200_set_filterbank(struct bladerf *dev,
1118  bladerf_module mod,
1119  bladerf_xb200_filter filter);
1120 
1131 API_EXPORT
1132 int CALL_CONV bladerf_xb200_get_filterbank(struct bladerf *dev,
1133  bladerf_module module,
1134  bladerf_xb200_filter *filter);
1135 
1145 API_EXPORT
1146 int CALL_CONV bladerf_xb200_set_path(struct bladerf *dev,
1147  bladerf_module module,
1148  bladerf_xb200_path path);
1149 
1159 API_EXPORT
1160 int CALL_CONV bladerf_xb200_get_path(struct bladerf *dev,
1161  bladerf_module module,
1162  bladerf_xb200_path *path);
1163 
1177 typedef enum {
1199 
1222 } bladerf_format;
1223 
1224 /*
1225  * Metadata status bits
1226  *
1227  * These are used in conjunction with the bladerf_metadata structure's
1228  * `status` field.
1229  */
1230 
1235 #define BLADERF_META_STATUS_OVERRUN (1 << 0)
1236 
1243 #define BLADERF_META_STATUS_UNDERRUN (1 << 1)
1244 
1245 
1246 
1247 /*
1248  * Metadata flags
1249  *
1250  * These are used in conjunction with the bladerf_metadata structure's
1251  * `flags` field.
1252  */
1253 
1258 #define BLADERF_META_FLAG_TX_BURST_START (1 << 0)
1259 
1291 #define BLADERF_META_FLAG_TX_BURST_END (1 << 1)
1292 
1301 #define BLADERF_META_FLAG_TX_NOW (1 << 2)
1302 
1308 #define BLADERF_META_FLAG_RX_NOW (1 << 31)
1309 
1318 
1322  uint64_t timestamp;
1323 
1334  uint32_t flags;
1335 
1344  uint32_t status;
1345 
1359  unsigned int actual_count;
1360 
1365  uint8_t reserved[32];
1366 };
1367 
1368 
1389 #define BLADERF_STREAM_SHUTDOWN (NULL)
1390 
1396 #define BLADERF_STREAM_NO_DATA ((void*)(-1))
1397 
1399 struct bladerf_stream;
1400 
1449 typedef void *(*bladerf_stream_cb)(struct bladerf *dev,
1450  struct bladerf_stream *stream,
1451  struct bladerf_metadata *meta,
1452  void *samples,
1453  size_t num_samples,
1454  void *user_data);
1455 
1528 API_EXPORT
1529 int CALL_CONV bladerf_init_stream(struct bladerf_stream **stream,
1530  struct bladerf *dev,
1531  bladerf_stream_cb callback,
1532  void ***buffers,
1533  size_t num_buffers,
1534  bladerf_format format,
1535  size_t samples_per_buffer,
1536  size_t num_transfers,
1537  void *user_data);
1538 
1558 API_EXPORT
1559 int CALL_CONV bladerf_stream(struct bladerf_stream *stream,
1560  bladerf_module module);
1561 
1589 API_EXPORT
1591  void *buffer,
1592  unsigned int timeout_ms);
1593 
1604 API_EXPORT
1605 void CALL_CONV bladerf_deinit_stream(struct bladerf_stream *stream);
1606 
1616 API_EXPORT
1617 int CALL_CONV bladerf_set_stream_timeout(struct bladerf *dev,
1618  bladerf_module module,
1619  unsigned int timeout);
1620 
1621 
1632 API_EXPORT
1633 int CALL_CONV bladerf_get_stream_timeout(struct bladerf *dev,
1634  bladerf_module module,
1635  unsigned int *timeout);
1636 
1748 API_EXPORT
1749 int CALL_CONV bladerf_sync_config(struct bladerf *dev,
1750  bladerf_module module,
1751  bladerf_format format,
1752  unsigned int num_buffers,
1753  unsigned int buffer_size,
1754  unsigned int num_transfers,
1755  unsigned int stream_timeout);
1756 
1794 API_EXPORT
1795 int CALL_CONV bladerf_sync_tx(struct bladerf *dev,
1796  void *samples, unsigned int num_samples,
1797  struct bladerf_metadata *metadata,
1798  unsigned int timeout_ms);
1799 
1838 API_EXPORT
1839 int CALL_CONV bladerf_sync_rx(struct bladerf *dev,
1840  void *samples, unsigned int num_samples,
1841  struct bladerf_metadata *metadata,
1842  unsigned int timeout_ms);
1843 
1844 
1860  uint16_t major;
1861  uint16_t minor;
1862  uint16_t patch;
1863  const char *describe;
1868 };
1869 
1873 typedef enum {
1878 
1879 
1889 API_EXPORT
1890 int CALL_CONV bladerf_get_serial(struct bladerf *dev, char *serial);
1891 
1901 API_EXPORT
1902 int CALL_CONV bladerf_get_vctcxo_trim(struct bladerf *dev, uint16_t *trim);
1903 
1913 API_EXPORT
1914 int CALL_CONV bladerf_get_fpga_size(struct bladerf *dev,
1915  bladerf_fpga_size *size);
1916 
1926 API_EXPORT
1927 int CALL_CONV bladerf_fw_version(struct bladerf *dev,
1928  struct bladerf_version *version);
1929 
1939 API_EXPORT
1940 int CALL_CONV bladerf_is_fpga_configured(struct bladerf *dev);
1941 
1950 API_EXPORT
1951 int CALL_CONV bladerf_fpga_version(struct bladerf *dev,
1952  struct bladerf_version *version);
1953 
1960 API_EXPORT
1961 bladerf_dev_speed CALL_CONV bladerf_device_speed(struct bladerf *dev);
1962 
1985 API_EXPORT
1986 int CALL_CONV bladerf_flash_firmware(struct bladerf *dev,
1987  const char *firmware);
1988 
1998 API_EXPORT
1999 int CALL_CONV bladerf_load_fpga(struct bladerf *dev, const char *fpga);
2000 
2011 API_EXPORT
2012 int CALL_CONV bladerf_flash_fpga(struct bladerf *dev,
2013  const char *fpga_image);
2014 
2020 API_EXPORT
2021 int CALL_CONV bladerf_erase_stored_fpga(struct bladerf *dev);
2022 
2030 API_EXPORT
2031 int CALL_CONV bladerf_device_reset(struct bladerf *dev);
2032 
2040 API_EXPORT
2041 int CALL_CONV bladerf_jump_to_bootloader(struct bladerf *dev);
2042 
2054 typedef enum {
2063 
2072 API_EXPORT
2073 const char * CALL_CONV bladerf_strerror(int error);
2074 
2080 API_EXPORT
2081 void CALL_CONV bladerf_version(struct bladerf_version *version);
2082 
2090 API_EXPORT
2092 
2105 typedef enum {
2117 
2121 #define BLADERF_IMAGE_MAGIC_LEN 7
2122 
2126 #define BLADERF_IMAGE_CHECKSUM_LEN 32
2127 
2131 #define BLADERF_IMAGE_RESERVED_LEN 128
2132 
2145 
2154 
2160 
2167 
2169  uint64_t timestamp;
2170 
2180 
2185 
2190 
2195  uint32_t address;
2196 
2198  uint32_t length;
2199 
2201  uint8_t *data;
2202 };
2203 
2226 API_EXPORT
2228  uint32_t address,
2229  uint32_t length);
2230 
2242 API_EXPORT
2244  bladerf_fpga_size fpga_size,
2245  uint16_t vctcxo_trim);
2246 
2251 API_EXPORT
2252 void CALL_CONV bladerf_free_image(struct bladerf_image *image);
2253 
2254 
2269 API_EXPORT
2270 int CALL_CONV bladerf_image_write(struct bladerf_image *image,
2271  const char *file);
2272 
2296 API_EXPORT
2297 int CALL_CONV bladerf_image_read(struct bladerf_image *image, const char *file);
2298 
2329 API_EXPORT
2330 int CALL_CONV bladerf_si5338_read(struct bladerf *dev,
2331  uint8_t address, uint8_t *val);
2332 
2342 API_EXPORT
2343 int CALL_CONV bladerf_si5338_write(struct bladerf *dev,
2344  uint8_t address, uint8_t val);
2345 
2354 API_EXPORT
2355 int CALL_CONV bladerf_si5338_set_tx_freq(struct bladerf *dev, unsigned freq);
2356 
2365 API_EXPORT
2366 int CALL_CONV bladerf_si5338_set_rx_freq(struct bladerf *dev, unsigned freq);
2367 
2376 {
2377  int16_t lpf_tuning;
2378  int16_t tx_lpf_i;
2379  int16_t tx_lpf_q;
2380  int16_t rx_lpf_i;
2381  int16_t rx_lpf_q;
2382  int16_t dc_ref;
2383  int16_t rxvga2a_i;
2384  int16_t rxvga2a_q;
2385  int16_t rxvga2b_i;
2386  int16_t rxvga2b_q;
2387 };
2388 
2398 API_EXPORT
2399 int CALL_CONV bladerf_lms_read(struct bladerf *dev,
2400  uint8_t address, uint8_t *val);
2401 
2411 API_EXPORT
2412 int CALL_CONV bladerf_lms_write(struct bladerf *dev,
2413  uint8_t address, uint8_t val);
2414 
2427 API_EXPORT
2428 int CALL_CONV bladerf_lms_set_dc_cals(struct bladerf *dev,
2429  const struct bladerf_lms_dc_cals *dc_cals);
2430 
2439 API_EXPORT
2440 int CALL_CONV bladerf_lms_get_dc_cals(struct bladerf *dev,
2441  struct bladerf_lms_dc_cals *dc_cals);
2442 
2448 #define BLADERF_GPIO_LMS_RX_ENABLE (1 << 1)
2449 
2455 #define BLADERF_GPIO_LMS_TX_ENABLE (1 << 2)
2456 
2462 #define BLADERF_GPIO_TX_LB_ENABLE (2 << 3)
2463 
2469 #define BLADERF_GPIO_TX_HB_ENABLE (1 << 3)
2470 
2480 #define BLADERF_GPIO_COUNTER_ENABLE (1 << 9)
2481 
2487 #define BLADERF_GPIO_RX_LB_ENABLE (2 << 5)
2488 
2494 #define BLADERF_GPIO_RX_HB_ENABLE (1 << 5)
2495 
2506 #define BLADERF_GPIO_FEATURE_SMALL_DMA_XFER (1 << 7)
2507 
2511 #define BLADERF_GPIO_TIMESTAMP (1 << 16)
2512 
2522 #define BLADERF_GPIO_TIMESTAMP_DIV2 (1 << 17)
2523 
2532 API_EXPORT
2533 int CALL_CONV bladerf_config_gpio_read(struct bladerf *dev, uint32_t *val);
2534 
2545 API_EXPORT
2546 int CALL_CONV bladerf_config_gpio_write(struct bladerf *dev, uint32_t val);
2547 
2556 API_EXPORT
2557 int CALL_CONV bladerf_expansion_gpio_read(struct bladerf *dev, uint32_t *val);
2558 
2569 API_EXPORT
2570 int CALL_CONV bladerf_expansion_gpio_write(struct bladerf *dev, uint32_t val);
2571 
2580 API_EXPORT
2581 int CALL_CONV bladerf_expansion_gpio_dir_read(struct bladerf *dev,
2582  uint32_t *val);
2583 
2594 API_EXPORT
2595 int CALL_CONV bladerf_expansion_gpio_dir_write(struct bladerf *dev,
2596  uint32_t val);
2597 
2607 API_EXPORT
2608 int CALL_CONV bladerf_get_timestamp(struct bladerf *dev, bladerf_module mod,
2609  uint64_t *value);
2610 
2619 API_EXPORT
2620 int CALL_CONV bladerf_dac_write(struct bladerf *dev, uint16_t val);
2621 
2622 
2631 API_EXPORT
2632 int CALL_CONV bladerf_xb_spi_write(struct bladerf *dev, uint32_t val);
2633 
2634 
2643 API_EXPORT
2644 int CALL_CONV bladerf_calibrate_dc(struct bladerf *dev,
2645  bladerf_cal_module module);
2646 
2672 #define BLADERF_FLASH_TOTAL_SIZE (4 * 1024 * 1024)
2673 
2675 #define BLADERF_FLASH_PAGE_SIZE 256
2676 
2678 #define BLADERF_FLASH_EB_SIZE (64 * 1024)
2679 
2681 #define BLADERF_FLASH_NUM_PAGES \
2682  (BLADERF_FLASH_TOTAL_SIZE / BLADERF_FLASH_PAGE_SIZE)
2683 
2685 #define BLADERF_FLASH_NUM_EBS \
2686  (BLADERF_FLASH_TOTAL_SIZE / BLADERF_FLASH_EB_SIZE)
2687 
2688 
2689 
2691 #define BLADERF_FLASH_TO_PAGES(bytes) ((bytes) / BLADERF_FLASH_PAGE_SIZE)
2692 
2694 #define BLADERF_FLASH_TO_EB(bytes) ((bytes) / BLADERF_FLASH_EB_SIZE)
2695 
2696 
2697 
2699 #define BLADERF_FLASH_ADDR_FIRMWARE 0x00000000
2700 
2702 #define BLADERF_FLASH_PAGE_FIRMWARE \
2703  (BLADERF_FLASH_TO_PAGES(BLADERF_FLASH_ADDR_FIRMWARE))
2704 
2706 #define BLADERF_FLASH_EB_FIRMWARE \
2707  (BLADERF_FLASH_TO_EB(BLADERF_FLASH_ADDR_FIRMWARE))
2708 
2710 #define BLADERF_FLASH_BYTE_LEN_FIRMWARE 0x00030000
2711 
2713 #define BLADERF_FLASH_PAGE_LEN_FIRMWARE \
2714  (BLADERF_FLASH_TO_PAGES(BLADERF_FLASH_BYTE_LEN_FIRMWARE))
2715 
2717 #define BLADERF_FLASH_EB_LEN_FIRMWARE \
2718  (BLADERF_FLASH_TO_EB(BLADERF_FLASH_BYTE_LEN_FIRMWARE))
2719 
2720 
2722 #define BLADERF_FLASH_ADDR_CAL 0x00030000
2723 
2725 #define BLADERF_FLASH_PAGE_CAL (BLADERF_FLASH_TO_PAGES(BLADERF_FLASH_ADDR_CAL))
2726 
2728 #define BLADERF_FLASH_EB_CAL (BLADERF_FLASH_TO_EB(BLADERF_FLASH_ADDR_CAL))
2729 
2731 #define BLADERF_FLASH_BYTE_LEN_CAL 0x100
2732 
2734 #define BLADERF_FLASH_PAGE_LEN_CAL \
2735  (BLADERF_FLASH_TO_PAGES(FLASH_BYTE_LEN_CAL))
2736 
2742 #define BLADERF_FLASH_EB_LEN_CAL 1
2743 
2744 
2750 #define BLADERF_FLASH_ADDR_FPGA 0x00040000
2751 
2753 #define BLADERF_FLASH_PAGE_FPGA \
2754  (BLADERF_FLASH_TO_PAGES(BLADERF_FLASH_ADDR_FPGA))
2755 
2757 #define BLADERF_FLASH_EB_FPGA \
2758  (BLADERF_FLASH_TO_EB(BLADERF_FLASH_ADDR_FPGA))
2759 
2761 #define BLADERF_FLASH_BYTE_LEN_FPGA 0x00370000
2762 
2764 #define BLADERF_FLASH_EB_LEN_FPGA \
2765  (BLADERF_FLASH_TO_EB(BLADERF_FLASH_BYTE_LEN_FPGA))
2766 
2779 API_EXPORT
2780 int CALL_CONV bladerf_erase_flash(struct bladerf *dev,
2781  uint32_t erase_block, uint32_t count);
2782 
2798 API_EXPORT
2799 int CALL_CONV bladerf_read_flash(struct bladerf *dev, uint8_t *buf,
2800  uint32_t page, uint32_t count);
2801 
2815 API_EXPORT
2816 int CALL_CONV bladerf_write_flash(struct bladerf *dev, const uint8_t *buf,
2817  uint32_t page, uint32_t count);
2818 
2847 API_EXPORT
2849 
2879 API_EXPORT
2880 int CALL_CONV bladerf_load_fw_from_bootloader(const char *device_identifier,
2881  bladerf_backend backend,
2882  uint8_t bus, uint8_t addr,
2883  const char *file);
2884 
2887 #ifdef __cplusplus
2888 }
2889 #endif
2890 
2891 #endif /* BLADERF_H_ */
uint8_t * data
Definition: libbladeRF.h:2201
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)
bladerf_lna_gain
Definition: libbladeRF.h:484
unsigned int instance
Definition: libbladeRF.h:144
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)
uint16_t minor
Definition: libbladeRF.h:1861
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]
Definition: libbladeRF.h:2153
char reserved[BLADERF_IMAGE_RESERVED_LEN]
Definition: libbladeRF.h:2184
bladerf_xb200_path
Definition: libbladeRF.h:576
char serial[BLADERF_SERIAL_LENGTH+1]
Definition: libbladeRF.h:2179
uint16_t major
Definition: libbladeRF.h:1860
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)
uint64_t timestamp
Definition: libbladeRF.h:1322
API_EXPORT int CALL_CONV bladerf_xb_spi_write(struct bladerf *dev, uint32_t val)
bladerf_xb
Definition: libbladeRF.h:515
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)
uint64_t timestamp
Definition: libbladeRF.h:2169
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)
bladerf_loopback
Definition: libbladeRF.h:408
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)
uint8_t usb_bus
Definition: libbladeRF.h:142
uint16_t patch
Definition: libbladeRF.h:1862
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)
bladerf_image_type
Definition: libbladeRF.h:2105
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)
bladerf_fpga_size
Definition: libbladeRF.h:1873
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)
Definition: libbladeRF.h:1449
API_EXPORT int CALL_CONV bladerf_get_rational_sample_rate(struct bladerf *dev, bladerf_module module, struct bladerf_rational_rate *rate)
uint8_t usb_addr
Definition: libbladeRF.h:143
bladerf_backend
Definition: libbladeRF.h:111
API_EXPORT int CALL_CONV bladerf_xb200_get_path(struct bladerf *dev, bladerf_module module, bladerf_xb200_path *path)
bladerf_log_level
Definition: libbladeRF.h:2054
#define BLADERF_IMAGE_CHECKSUM_LEN
Definition: libbladeRF.h:2126
API_EXPORT int CALL_CONV bladerf_device_reset(struct bladerf *dev)
bladerf_dev_speed
Definition: libbladeRF.h:124
bladerf_format
Definition: libbladeRF.h:1177
bladerf_cal_module
Definition: libbladeRF.h:584
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)
bladerf_correction
Definition: libbladeRF.h:601
uint8_t checksum[BLADERF_IMAGE_CHECKSUM_LEN]
Definition: libbladeRF.h:2159
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
Definition: libbladeRF.h:2131
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)
#define CALL_CONV
Definition: libbladeRF.h:55
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)
bladerf_xb200_filter
Definition: libbladeRF.h:527
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)
bladerf_backend backend
Definition: libbladeRF.h:140
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)
unsigned int actual_count
Definition: libbladeRF.h:1359
API_EXPORT int CALL_CONV bladerf_set_tx_gain(struct bladerf *dev, int gain)
uint32_t address
Definition: libbladeRF.h:2195
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)
#define API_EXPORT
Definition: libbladeRF.h:52
const char * describe
Definition: libbladeRF.h:1863
API_EXPORT int CALL_CONV bladerf_expansion_gpio_dir_read(struct bladerf *dev, uint32_t *val)
bladerf_sampling
Definition: libbladeRF.h:475
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)
bladerf_lpf_mode
Definition: libbladeRF.h:497
API_EXPORT int CALL_CONV bladerf_dac_write(struct bladerf *dev, uint16_t val)
uint8_t reserved[32]
Definition: libbladeRF.h:1365
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
Definition: libbladeRF.h:131
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
Definition: libbladeRF.h:2166
API_EXPORT int CALL_CONV bladerf_get_devinfo(struct bladerf *dev, struct bladerf_devinfo *info)
bladerf_image_type type
Definition: libbladeRF.h:2189
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]
Definition: libbladeRF.h:141
uint32_t length
Definition: libbladeRF.h:2198
API_EXPORT int CALL_CONV bladerf_xb200_set_path(struct bladerf *dev, bladerf_module module, bladerf_xb200_path path)
bladerf_module
Definition: libbladeRF.h:506
#define BLADERF_IMAGE_MAGIC_LEN
Definition: libbladeRF.h:2121