Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions python_bladerf/pylibbladerf/cbladerf.pxd
Original file line number Diff line number Diff line change
Expand Up @@ -326,6 +326,7 @@ cdef extern from 'libbladeRF.h' nogil:

ctypedef enum bladerf_format:
BLADERF_FORMAT_SC16_Q11
BLADERF_FORMAT_SC16_Q11_PACKED
BLADERF_FORMAT_SC16_Q11_META
BLADERF_FORMAT_PACKET_META
BLADERF_FORMAT_SC8_Q7
Expand Down Expand Up @@ -402,6 +403,7 @@ cdef extern from 'libbladeRF.h' nogil:
BLADERF_IMAGE_TYPE_RX_IQ_CAL
BLADERF_IMAGE_TYPE_TX_IQ_CAL
BLADERF_IMAGE_TYPE_FPGA_A5
BLADERF_IMAGE_TYPE_GAIN_CAL

const int BLADERF_IMAGE_MAGIC_LEN

Expand Down
16 changes: 14 additions & 2 deletions python_bladerf/pylibbladerf/pybladerf.pyx
Original file line number Diff line number Diff line change
Expand Up @@ -316,7 +316,9 @@ class pybladerf_correction(IntEnum):

class pybladerf_format(IntEnum):
PYBLADERF_FORMAT_SC16_Q11 = cbladerf.BLADERF_FORMAT_SC16_Q11
PYBLADERF_FORMAT_SC16_Q11_PACKED = cbladerf.BLADERF_FORMAT_SC16_Q11_PACKED
PYBLADERF_FORMAT_SC16_Q11_META = cbladerf.BLADERF_FORMAT_SC16_Q11_META
PYBLADERF_FORMAT_PACKET_META = cbladerf.BLADERF_FORMAT_PACKET_META
PYBLADERF_FORMAT_SC8_Q7 = cbladerf.BLADERF_FORMAT_SC8_Q7
PYBLADERF_FORMAT_SC8_Q7_META = cbladerf.BLADERF_FORMAT_SC8_Q7_META

Expand Down Expand Up @@ -1709,7 +1711,12 @@ cdef class PyBladerfDevice:
cdef void **buffers
cdef int result = -1

async_data.bytes_per_sample = 4 if data_format == pybladerf_format.PYBLADERF_FORMAT_SC16_Q11 else 2
# SC16_Q11 and SC16_Q11_META carry 16-bit I and Q, so 4 bytes per
# sample; the SC8_Q7 formats carry 8-bit I and Q, so 2 bytes.
async_data.bytes_per_sample = 2 if data_format in (
pybladerf_format.PYBLADERF_FORMAT_SC8_Q7,
pybladerf_format.PYBLADERF_FORMAT_SC8_Q7_META,
) else 4
async_data.package_size = USB_PACKAGE_SIZE_SS if self.pybladerf_device_speed() == pybladerf_dev_speed.PYBLADERF_DEVICE_SPEED_SUPER else USB_PACKAGE_SIZE_HS
async_data.packages_per_buffer = samples_per_buffer // (async_data.package_size // async_data.bytes_per_sample)
async_data.samples_per_package = (samples_per_buffer - PYMETADATA_HEADER_SIZE) // async_data.bytes_per_sample
Expand Down Expand Up @@ -1737,7 +1744,12 @@ cdef class PyBladerfDevice:
cdef void **buffers
cdef int result = -1

async_data.bytes_per_sample = 4 if data_format == pybladerf_format.PYBLADERF_FORMAT_SC16_Q11 else 2
# SC16_Q11 and SC16_Q11_META carry 16-bit I and Q, so 4 bytes per
# sample; the SC8_Q7 formats carry 8-bit I and Q, so 2 bytes.
async_data.bytes_per_sample = 2 if data_format in (
pybladerf_format.PYBLADERF_FORMAT_SC8_Q7,
pybladerf_format.PYBLADERF_FORMAT_SC8_Q7_META,
) else 4
async_data.package_size = USB_PACKAGE_SIZE_SS if self.pybladerf_device_speed() == pybladerf_dev_speed.PYBLADERF_DEVICE_SPEED_SUPER else USB_PACKAGE_SIZE_HS
async_data.packages_per_buffer = samples_per_buffer // (async_data.package_size // async_data.bytes_per_sample)
async_data.samples_per_package = (samples_per_buffer - PYMETADATA_HEADER_SIZE) // async_data.bytes_per_sample
Expand Down