diff --git a/CMakeLists.txt b/CMakeLists.txt
index 272d4b374..a9fefe587 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -206,7 +206,7 @@ include(CMakeDependentOption)
cmake_dependent_option(ENABLE_API_DOXYGEN "Enable LMS API Doxygen documentation" ON "DOXYGEN_FOUND" OFF)
add_feature_info(LimeSuiteDocAPI ENABLE_API_DOXYGEN "LMS API Doxygen documentation")
if (ENABLE_API_DOXYGEN)
- configure_file(${CMAKE_CURRENT_SOURCE_DIR}/DoxyfileAPI.in ${CMAKE_CURRENT_BINARY_DIR}/doc/Doxyfile @ONLY)
+ configure_file(${CMAKE_CURRENT_SOURCE_DIR}/docs/doxygen/DoxyfileAPI.in ${CMAKE_CURRENT_BINARY_DIR}/doc/Doxyfile @ONLY)
add_custom_target(docAPI ALL
${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/doc/Doxyfile
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
@@ -215,7 +215,7 @@ if (ENABLE_API_DOXYGEN)
endif()
if(DOXYGEN_FOUND)
- configure_file(${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile @ONLY)
+ configure_file(${CMAKE_CURRENT_SOURCE_DIR}/docs/doxygen/Doxyfile.in ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile @ONLY)
add_custom_target(doc
${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
diff --git a/Changelog.txt b/Changelog.txt
index 1dca69da8..583f74efe 100644
--- a/Changelog.txt
+++ b/Changelog.txt
@@ -3,6 +3,7 @@ Release 18.06.1 (pending)
- Fix CalibrateTxGain() XBUF settings for 3rd party boards
- Add interpolation/decimation support for SISODDR mode
+- Fix Rx filter calibration for 2nd channel with low bandwidth values
Release 18.06.0 (2018-06-13)
==========================
diff --git a/docs/Lime_Suite_Compilation_Guide.odt b/docs/Lime_Suite_Compilation_Guide.odt
index 71b577c24..352507b10 100644
Binary files a/docs/Lime_Suite_Compilation_Guide.odt and b/docs/Lime_Suite_Compilation_Guide.odt differ
diff --git a/docs/Lime_Suite_Compilation_Guide.pdf b/docs/Lime_Suite_Compilation_Guide.pdf
index 813173901..fc570dae8 100644
Binary files a/docs/Lime_Suite_Compilation_Guide.pdf and b/docs/Lime_Suite_Compilation_Guide.pdf differ
diff --git a/Doxyfile.in b/docs/doxygen/Doxyfile.in
similarity index 100%
rename from Doxyfile.in
rename to docs/doxygen/Doxyfile.in
diff --git a/DoxyfileAPI.in b/docs/doxygen/DoxyfileAPI.in
similarity index 99%
rename from DoxyfileAPI.in
rename to docs/doxygen/DoxyfileAPI.in
index 14fda3cbf..204cc34f4 100644
--- a/DoxyfileAPI.in
+++ b/docs/doxygen/DoxyfileAPI.in
@@ -38,7 +38,7 @@ PROJECT_NAME = "LMS API Documentation"
# could be handy for archiving the generated documentation or if some version
# control system is used.
-PROJECT_NUMBER =
+PROJECT_NUMBER = "v@LIME_SUITE_LIBVER@"
# Using the PROJECT_BRIEF tag one can provide an optional one line description
# for a project that appears at the top of each page and should give viewer a
@@ -764,7 +764,7 @@ WARN_LOGFILE =
# spaces.
# Note: If this tag is empty the current directory is searched.
-INPUT = @CMAKE_SOURCE_DIR@/src/lime
+INPUT = @CMAKE_SOURCE_DIR@/src/lime/LimeSuite.h @CMAKE_SOURCE_DIR@/docs/doxygen/mainpage.dox
# This tag can be used to specify the character encoding of the source files
# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses
diff --git a/docs/doxygen/mainpage.dox b/docs/doxygen/mainpage.dox
new file mode 100644
index 000000000..fcd3ceef7
--- /dev/null
+++ b/docs/doxygen/mainpage.dox
@@ -0,0 +1,32 @@
+/*! \mainpage Introduction
+
+LMS API is a set of C functions that are exported by LimeSuite library. Its main purpose is to provide a relatively simple interface for controlling LimeSDR boards. LMS API provides both high-level and low-level methods for configuring devices. \ref FN_HIGH_LVL allow to quickly configure device by accessing and modifying multiple internal device settings during their execution. Meanwhile, \ref FN_LOW_LVL provide an ability to individually access various internal device settings (registers, clocks, etc.).
+
+
+### Further Information
+
+\li \ref page_changelog "LMS API Changelog"
+\li LimeSDR boards
+\li LimeSuite GitHub page
+
+*/
+
+/*! \page page_changelog Changelog
+
+### v18.06.1
+
+\li Fixed LMS_SetLPFBW() failing to bandwidth lower than ~2MHz for second channel
+
+### v18.06.0
+
+\li Added log level definitions (\ref LMS_LOG_LEVEL) to LimeSuite.h
+\li Zeros filled packet is no longer transmited every ~500 ms when Tx FIFO is empty
+\li Added support of oversample=1 to LMS_SetSampleRate() for LimeSDR-USB board
+\li LMS_SetNormalizedGain() and LMS_SetGaindB() no longer calibrate gain everytime Tx gain is changed
+\li Updated parameter range information returned by API to match datasheets/schematics
+\li Fixed some sample timing isues when using LMS_SetGFIRLPF()
+
+*/
+
+
+
diff --git a/src/lime/LimeSuite.h b/src/lime/LimeSuite.h
index 350aaf180..37501b65b 100644
--- a/src/lime/LimeSuite.h
+++ b/src/lime/LimeSuite.h
@@ -144,7 +144,7 @@ API_EXPORT bool CALL_CONV LMS_IsOpen(lms_device_t *device, int port);
* @defgroup FN_HIGH_LVL High-level control functions
*
* The functions in this section provide the ability to easily configure the
- * device for operation.
+ * device for operation. They modify multiple internal device settings.
*
* @{
*/
@@ -569,7 +569,17 @@ API_EXPORT int CALL_CONV LMS_SetTestSignal(lms_device_t *device, bool dir_tx,
API_EXPORT int CALL_CONV LMS_GetTestSignal(lms_device_t *device, bool dir_tx,
size_t chan, lms_testsig_t *sig);
-/** @} (End FN_HIGH_LVL) */
+/**
+ * Read LMS7 chip internal temperature sensor
+ *
+ * @param dev Device handle previously obtained by LMS_Open().
+ * @param ind chip index
+ * @param temp temperature value
+ *
+ * @return 0 on success, (-1) on failure
+ */
+API_EXPORT int CALL_CONV LMS_GetChipTemperature(lms_device_t *dev, size_t ind,
+ float_type *temp);
/**
* @defgroup FN_ADVANCED Advanced control functions
@@ -577,7 +587,7 @@ API_EXPORT int CALL_CONV LMS_GetTestSignal(lms_device_t *device, bool dir_tx,
* The functions in this section provides some additional control compared to
* High-Level functions. They are labeled advanced because they require better
* understanding of hardware and provide functionality that may conflict with
- * certain High-Level functions.
+ * other High-Level functions.
* @{
*/
@@ -709,30 +719,6 @@ API_EXPORT int CALL_CONV LMS_SetNCOIndex(lms_device_t *device, bool dir_tx,
API_EXPORT int CALL_CONV LMS_GetNCOIndex(lms_device_t *device, bool dir_tx,
size_t chan);
-/**
- * Read device parameter. Parameter defines specific bits in device register.
- *
- * @param device Device handle previously obtained by LMS_Open().
- * @param param Parameter.
- * @param val Current parameter value.
- *
- * @return 0 on success, (-1) on failure
- */
-API_EXPORT int CALL_CONV LMS_ReadParam(lms_device_t *device,
- struct LMS7Parameter param, uint16_t *val);
-
-/**
- * Write device parameter. Parameter defines specific bits in device register.
- *
- * @param device Device handle previously obtained by LMS_Open().
- * @param param Parameter.
- * @param val Parameter value to write
- *
- * @return 0 on success, (-1) on failure
- */
-API_EXPORT int CALL_CONV LMS_WriteParam(lms_device_t *device,
- struct LMS7Parameter param, uint16_t val);
-
/**
* Configure LMS GFIR using specified filter coefficients. Maximum number of
* coefficients is 40 for GFIR1 and GFIR2, and 120 for GFIR3.
@@ -779,31 +765,25 @@ API_EXPORT int CALL_CONV LMS_SetGFIR(lms_device_t * device, bool dir_tx,
size_t chan, lms_gfir_t filt, bool enabled);
/**
- * Write value to VCTCXO trim DAC. Used to adjust/calibrate reference clock
- * generated by voltage controlled oscillator.
- * @note calling this functions switches clock source to VCTCXO
+ * Enables or disable caching of calibration values.
*
* @param dev Device handle previously obtained by LMS_Open().
- * @param val Value to write to VCTCXO trim DAC, range 0-255
- *
- * @return 0 on success, (-1) on failure
- */
-API_EXPORT int CALL_CONV LMS_VCTCXOWrite(lms_device_t * dev, uint16_t val);
-
-/**
- * Read value from VCTCXO trim DAC.
- *
- * @param[in] dev Device handle previously obtained by LMS_Open().
- * @param[out] val Value to read from VCTCXO trim DAC
+ * @param enable true to enable cache
*
* @return 0 on success, (-1) on failure
*/
-API_EXPORT int CALL_CONV LMS_VCTCXORead(lms_device_t * dev, uint16_t *val);
+API_EXPORT int CALL_CONV LMS_EnableCalibCache(lms_device_t *dev, bool enable);
/** @} (End FN_ADVANCED) */
+/** @} (End FN_HIGH_LVL) */
+
/**
* @defgroup FN_LOW_LVL Low-Level control functions
+ * The functions in this section provide a low access to device such as modifying
+ * device internal register or clock frequency. Low-Level functions can be used
+ * to configure device entirely, however a more practical use is to fine-tune
+ * device settings after configuring it with /ref FN_HIGH_LVL.
* @{
*/
@@ -841,6 +821,30 @@ API_EXPORT int CALL_CONV LMS_ReadLMSReg(lms_device_t *device, uint32_t address,
API_EXPORT int CALL_CONV LMS_WriteLMSReg(lms_device_t *device, uint32_t address,
uint16_t val);
+/**
+ * Read device parameter. Parameter defines specific bits in device register.
+ *
+ * @param device Device handle previously obtained by LMS_Open().
+ * @param param Parameter.
+ * @param val Current parameter value.
+ *
+ * @return 0 on success, (-1) on failure
+ */
+API_EXPORT int CALL_CONV LMS_ReadParam(lms_device_t *device,
+ struct LMS7Parameter param, uint16_t *val);
+
+/**
+ * Write device parameter. Parameter defines specific bits in device register.
+ *
+ * @param device Device handle previously obtained by LMS_Open().
+ * @param param Parameter.
+ * @param val Parameter value to write
+ *
+ * @return 0 on success, (-1) on failure
+ */
+API_EXPORT int CALL_CONV LMS_WriteParam(lms_device_t *device,
+ struct LMS7Parameter param, uint16_t val);
+
/**
* Read device FPGA register
*
@@ -935,6 +939,28 @@ API_EXPORT int CALL_CONV LMS_GetClockFreq(lms_device_t *dev, size_t clk_id,
API_EXPORT int CALL_CONV LMS_SetClockFreq(lms_device_t *dev, size_t clk_id,
float_type freq);
+/**
+ * Write value to VCTCXO trim DAC. Used to adjust/calibrate reference clock
+ * generated by voltage controlled oscillator.
+ * @note calling this functions switches clock source to VCTCXO
+ *
+ * @param dev Device handle previously obtained by LMS_Open().
+ * @param val Value to write to VCTCXO trim DAC, range 0-255
+ *
+ * @return 0 on success, (-1) on failure
+ */
+API_EXPORT int CALL_CONV LMS_VCTCXOWrite(lms_device_t * dev, uint16_t val);
+
+/**
+ * Read value from VCTCXO trim DAC.
+ *
+ * @param[in] dev Device handle previously obtained by LMS_Open().
+ * @param[out] val Value to read from VCTCXO trim DAC
+ *
+ * @return 0 on success, (-1) on failure
+ */
+API_EXPORT int CALL_CONV LMS_VCTCXORead(lms_device_t * dev, uint16_t *val);
+
/**
* Synchronizes register values between API cache and chip
*
@@ -981,28 +1007,6 @@ API_EXPORT int CALL_CONV LMS_GPIODirRead(lms_device_t *dev, uint8_t* buffer, siz
*/
API_EXPORT int CALL_CONV LMS_GPIODirWrite(lms_device_t *dev, const uint8_t* buffer, size_t len);
-/**
- * Enables or disable caching of calibration values.
- *
- * @param dev Device handle previously obtained by LMS_Open().
- * @param enable true to enable cache
- *
- * @return 0 on success, (-1) on failure
- */
-API_EXPORT int CALL_CONV LMS_EnableCalibCache(lms_device_t *dev, bool enable);
-
-/**
- * Read LMS7 chip internal temperature sensor
- *
- * @param dev Device handle previously obtained by LMS_Open().
- * @param ind chip index
- * @param temp temperature value
- *
- * @return 0 on success, (-1) on failure
- */
-API_EXPORT int CALL_CONV LMS_GetChipTemperature(lms_device_t *dev, size_t ind,
- float_type *temp);
-
/** @} (End FN_LOW_LVL) */
/**