diff --git a/BladeRF/BladeRFDevice.cs b/BladeRF/BladeRFDevice.cs index 614bd80..6bc4300 100644 --- a/BladeRF/BladeRFDevice.cs +++ b/BladeRF/BladeRFDevice.cs @@ -24,6 +24,7 @@ public sealed class BladeRFDevice : IDisposable private double _sampleRate = DefaultSamplerate; private int _bandwidth; private bool _isFpgaLoaded = false; + private bool _RXConfigured = false; private string _fpga_path = Utils.GetStringSetting("BladeRFFPGA", ""); private bladerf_lna_gain _lnaGain = (bladerf_lna_gain)Utils.GetIntSetting("BladeRFLNAGain", (int) bladerf_lna_gain.BLADERF_LNA_GAIN_MID); private int _vga1Gain = Utils.GetIntSetting("BladeRFRXVGA1Gain", 20); @@ -398,6 +399,10 @@ private unsafe void ReceiveSamples_sync() } if ((status = NativeMethods.bladerf_sync_config(_dev, bladerf_module.BLADERF_MODULE_RX, bladerf_format.BLADERF_FORMAT_SC16_Q11, NumBuffers, cur_len, NumBuffers / 2, SampleTimeoutMs)) != 0) _isStreaming = false; + lock(syncLock) + { + _RXConfigured = true; + } while (status == 0 && cur_len == new_len) { try @@ -567,6 +572,14 @@ public unsafe void Start() _sampleThread.Priority = ThreadPriority.Highest; _isStreaming = true; _sampleThread.Start(); + bool ready = false; + while (!ready) + { + lock (syncLock) + { + ready = _RXConfigured; + } + } if ((error = NativeMethods.bladerf_enable_module(_dev, bladerf_module.BLADERF_MODULE_RX, 1)) != 0) throw new ApplicationException(String.Format("bladerf_enable_module() error. {0}", NativeMethods.bladerf_strerror(error))); } diff --git a/BladeRF/NativeMethods.cs b/BladeRF/NativeMethods.cs index 77dbec3..539e10a 100644 --- a/BladeRF/NativeMethods.cs +++ b/BladeRF/NativeMethods.cs @@ -37,7 +37,8 @@ public enum bladerf_error_codes BLADERF_ERR_CHECKSUM = -10, /**< Invalid checksum */ BLADERF_ERR_NO_FILE = -11, /**< File not found */ BLADERF_ERR_UPDATE_FPGA = -12, /**< An FPGA update is required */ - BLADERF_ERR_UPDATE_FW = -13 /**< A firmware update is requied */ + BLADERF_ERR_UPDATE_FW = -13, /**< A firmware update is requied */ + BLADERF_ERR_TIME_PAST = -14 /**< Requested timestamp is in the past */ } public enum bladerf_module @@ -162,6 +163,7 @@ public enum bladerf_correction public enum bladerf_format { BLADERF_FORMAT_SC16_Q11 = 0, /**< Signed, Complex 16-bit Q11.*/ + BLADERF_FORMAT_SC16_Q11_META = 1 } public enum bladerf_xb @@ -192,6 +194,12 @@ public enum bladerf_log_level BLADERF_LOG_LEVEL_CRITICAL = 5, /**< Fatal error level logging */ BLADERF_LOG_LEVEL_SILENT = 6 /**< No output */ } + + public enum bladerf_xb200_path + { + BLADERF_XB200_BYPASS = 0, /**< Bypass the XB-200 mixer */ + BLADERF_XB200_MIX = 1 /**< Pass signals through the XB-200 mixer */ + } #endregion #region Internal structs diff --git a/BladeRF/SDRSharp.BladeRF.csproj b/BladeRF/SDRSharp.BladeRF.csproj index 2df37ea..da93339 100644 --- a/BladeRF/SDRSharp.BladeRF.csproj +++ b/BladeRF/SDRSharp.BladeRF.csproj @@ -105,7 +105,9 @@ - + + Designer +