From 689d6da345bf20d7724e20f3dd3aa3f78a6dc28c Mon Sep 17 00:00:00 2001 From: Robert Ghilduta Date: Mon, 13 Feb 2023 00:25:25 -0800 Subject: [PATCH] host: python v1.3.0 --- .../python/bladerf/_bladerf.py | 4 ++- .../python/bladerf/_cdef.py | 31 +++++++++++++++++-- .../libbladeRF_bindings/python/setup.py | 2 +- 3 files changed, 32 insertions(+), 5 deletions(-) diff --git a/host/libraries/libbladeRF_bindings/python/bladerf/_bladerf.py b/host/libraries/libbladeRF_bindings/python/bladerf/_bladerf.py index ddbf09d9a..7b426d322 100644 --- a/host/libraries/libbladeRF_bindings/python/bladerf/_bladerf.py +++ b/host/libraries/libbladeRF_bindings/python/bladerf/_bladerf.py @@ -206,6 +206,8 @@ class Format(enum.Enum): SC16_Q11 = libbladeRF.BLADERF_FORMAT_SC16_Q11 SC16_Q11_META = libbladeRF.BLADERF_FORMAT_SC16_Q11_META PACKET_META = libbladeRF.BLADERF_FORMAT_PACKET_META + SC8_Q7 = libbladeRF.BLADERF_FORMAT_SC8_Q7 + SC8_Q7_META = libbladeRF.BLADERF_FORMAT_SC8_Q7_META class Loopback(enum.Enum): @@ -850,7 +852,7 @@ def deinterleave_stream_buffer(self, layout, format, buffer_size, samples): def sync_config(self, layout, fmt, num_buffers, buffer_size, num_transfers, stream_timeout): - if fmt != Format.SC16_Q11: + if fmt not in [Format.SC16_Q11, Format.SC8_Q7]: raise NotImplementedError("Format not supported by binding.") ret = libbladeRF.bladerf_sync_config(self.dev[0], diff --git a/host/libraries/libbladeRF_bindings/python/bladerf/_cdef.py b/host/libraries/libbladeRF_bindings/python/bladerf/_cdef.py index b3c1b1404..1e92b79cd 100644 --- a/host/libraries/libbladeRF_bindings/python/bladerf/_cdef.py +++ b/host/libraries/libbladeRF_bindings/python/bladerf/_cdef.py @@ -20,6 +20,13 @@ char manufacturer[33]; char product[33]; }; + struct bladerf_backendinfo + { + int handle_count; + void *handle; + int lock_count; + void *lock; + }; int bladerf_open(struct bladerf **device, const char *device_identifier); void bladerf_close(struct bladerf *device); @@ -30,6 +37,8 @@ void bladerf_init_devinfo(struct bladerf_devinfo *info); int bladerf_get_devinfo(struct bladerf *dev, struct bladerf_devinfo *info); + int bladerf_get_backendinfo(struct bladerf *dev, struct + bladerf_backendinfo *info); int bladerf_get_devinfo_from_str(const char *devstr, struct bladerf_devinfo *info); bool bladerf_devinfo_matches(const struct bladerf_devinfo *a, const @@ -262,6 +271,7 @@ uint16_t nint; uint32_t nfrac; uint8_t flags; + uint8_t xb_gpio; }; struct { @@ -295,7 +305,9 @@ { BLADERF_FORMAT_SC16_Q11, BLADERF_FORMAT_SC16_Q11_META, - BLADERF_FORMAT_PACKET_META + BLADERF_FORMAT_PACKET_META, + BLADERF_FORMAT_SC8_Q7, + BLADERF_FORMAT_SC8_Q7_META } bladerf_format; struct bladerf_metadata { @@ -365,7 +377,7 @@ BLADERF_IMAGE_TYPE_TX_DC_CAL, BLADERF_IMAGE_TYPE_RX_IQ_CAL, BLADERF_IMAGE_TYPE_TX_IQ_CAL, - BLADERF_IMAGE_TYPE_FPGA_A5, + BLADERF_IMAGE_TYPE_FPGA_A5 } bladerf_image_type; struct bladerf_image { @@ -416,6 +428,10 @@ bladerf_trigger_signal signal, uint8_t *val); int bladerf_write_trigger(struct bladerf *dev, bladerf_channel ch, bladerf_trigger_signal signal, uint8_t val); + int bladerf_wishbone_master_read(struct bladerf *dev, uint32_t addr, + uint32_t *data); + int bladerf_wishbone_master_write(struct bladerf *dev, uint32_t addr, + uint32_t val); int bladerf_config_gpio_read(struct bladerf *dev, uint32_t *val); int bladerf_config_gpio_write(struct bladerf *dev, uint32_t val); int bladerf_erase_flash(struct bladerf *dev, uint32_t erase_block, @@ -430,9 +446,9 @@ uint32_t page, uint32_t count); int bladerf_write_flash_bytes(struct bladerf *dev, const uint8_t *buf, uint32_t address, uint32_t length); + int bladerf_lock_otp(struct bladerf *dev); int bladerf_read_otp(struct bladerf *dev, uint8_t *buf); int bladerf_write_otp(struct bladerf *dev, uint8_t *buf); - int bladerf_lock_otp(struct bladerf *dev); int bladerf_set_rf_port(struct bladerf *dev, bladerf_channel ch, const char *port); int bladerf_get_rf_port(struct bladerf *dev, bladerf_channel ch, const @@ -440,6 +456,15 @@ int bladerf_get_rf_ports(struct bladerf *dev, bladerf_channel ch, const char **ports, unsigned int count); typedef enum + { + BLADERF_FEATURE_DEFAULT = 0, + BLADERF_FEATURE_OVERSAMPLE + } bladerf_feature; + int bladerf_enable_feature(struct bladerf *dev, bladerf_feature + feature, bool enable); + int bladerf_get_feature(struct bladerf *dev, bladerf_feature + *feature); + typedef enum { BLADERF_XB_NONE = 0, BLADERF_XB_100, diff --git a/host/libraries/libbladeRF_bindings/python/setup.py b/host/libraries/libbladeRF_bindings/python/setup.py index 410a4cf5d..08702441b 100644 --- a/host/libraries/libbladeRF_bindings/python/setup.py +++ b/host/libraries/libbladeRF_bindings/python/setup.py @@ -19,7 +19,7 @@ setup( name='bladerf', - version='1.2.1', + version='1.3.0', description='CFFI-based Python 3 binding to libbladeRF', long_description=long_description, url='https://github.com/Nuand/bladeRF',