Commit graph

81 commits

Author SHA1 Message Date
aed7255801
Implement auto-device selection and enhance
channel handling

Refactored code to improve usability and error handling by implementing
automatic device selection when no device is explicitly specified. New
functionalities include opening devices based on provided info, and a
more robust way to retrieve and validate the number of RX and TX
channels. These changes streamline the device and channel setup process,
especially for systems with a single connected device.

- Introduced `openDevice` to encapsulate device opening logic with
fallback to the first available device.
- Added `getDeviceChannels` and `getChannelsFromInfo` for retrieving
channel information.
- Ensured LimeConfig struct now includes a `device` field to store the
selected device.
- Modified experiment setup to automatically select a device if not
configured and validate channel availability.
- Updated HDF attribute population to include device information.

These improvements should reduce the likelihood of user errors and
simplify the configuration process when working with LimeSDR devices.
2024-02-17 16:45:59 +01:00
74c6bd6904
Removed commented out antenna selection code
The outdated and unused code related to antenna selection has been
purged. This cleanup simplifies `run_experiment` by removing the
comments that printed available antenna names and selected an antenna
port. The removal avoids confusion and potential maintenance issues
associated with deprecated sections of code. Future antenna selection
implementations should be designed with a more current context of the
project.
2024-02-17 15:08:54 +01:00
2c7731e1d2
Add RX/TX matching network configuration options
Introduced configuration options for RX and TX matching networks in the
LimeDriver, enabling manual specification of the reception and
transmission paths. This change also includes default logic to maintain
previous behavior when new options are unset. Additionally, bumped the
version to 0.3.0 to reflect new feature addition. This enhancement
provides flexibility for advanced users to optimize signal chain
characteristics based on specific requirements.
2024-02-12 21:28:18 +01:00
038ed21c6b
Updated channel data type in LimeConfig_t
Switched the data type of 'channel' from float to int in LimeConfig
structure to ensure channel numbers are represented as integers,
aligning with typical usage and avoiding potential truncation errors.
This change improves configuration accuracy and safeguards against
invalid fractional channel values.
2024-02-11 09:03:14 +01:00
73abc06d6e
Add channel configuration and update Lime Suite
interactions

Enhanced the Lime driver by introducing channel selection configuration
which enables specifying the channel to be used within the driver's
processes. Adapted various Lime Suite API calls throughout the
`run_experiment` function to utilize the `LimeCfg.channel` as an
argument, ensuring dynamic channel management. This update facilitates
operations with multi-channel setups and aligns API calls with the new
configuration option. Additionally, improved code comments and removed
redundant TX FIFO slot updates.

Bumped version number to reflect new features and improvements.
2024-02-11 08:50:46 +01:00
9271d46756
Add command line support for "--dump" and
"--devices"

Implemented  "--dump" and "--devices" flags in the parseArguments function.
The "--dump" flag triggers the configuration to
be dumped and the program to exit immediately thereafter. Similarly, the
"--devices" flag lists available devices and exits.

Additionally, the help flow has been revised to only print usage details
when the "--help" flag is detected, preventing invalid argument errors
from appearing when help is requested. Removed redundant code that
handled the "--dump" flag, streamlining argument parsing in the main
function.

These enhancements offer users immediate access to diagnostic
information and available devices, improving usability and support.
2024-02-10 21:03:29 +01:00
052b3a9b5f
Fix typo in argument error message
Corrected a misspelling in the usage error message that is displayed
when the program encounters an invalid argument. This change improves
clarity for end-users troubleshooting command-line input issues.
2024-02-10 20:53:57 +01:00
6cb5cda972
Refactor device list retrieval and cleanup
Refactored the process of retrieving device lists to use a new
`getDeviceList` function, improving code organization and readability.
This function leverages the `std::vector` to dynamically handle the
number of detected devices, eliminating the static array limitation.
Additionally, consolidated the code for obtaining the number of RX/TX
channels and antennas, enhancing maintainability. Replaced hardcoded
device and channel counts with dynamic retrieval to prevent potential
buffer overflows and ensure robustness for varying hardware
configurations.
2024-02-10 20:53:34 +01:00
Julia P
56db4ab23a
Merge pull request #17 from nqrduck/build-command
Fix build command comment
2024-02-10 20:14:15 +01:00
c00715ec5b
Merge branch 'main' of https://github.com/nqrduck/LimeDriver 2024-02-10 20:10:53 +01:00
713e89447f
Updated build command in .cpp 2024-02-10 20:10:49 +01:00
jupfi
77d0534d99 Added Version print. 2024-02-10 18:08:23 +01:00
Julia P
b9c73a5e64
Merge pull request #15 from nqrduck/merge-original
Merge original
Tested with LimeSDR USB
2024-02-10 17:44:13 +01:00
856083b650
Merge branch 'main' of https://github.com/nqrduck/LimeDriver into merge-original 2024-02-10 15:50:30 +01:00
036f4d10a2
Update c-cpp.yml 2024-02-10 15:49:57 +01:00
072a5b210e
Merging old code 2024-02-10 15:41:09 +01:00
Julia Pfitzer
4c5077c5fc
Merge pull request #14 from nqrduck/build-doc
Add build instructions for LimeSDR software
2024-02-10 12:57:59 +01:00
61db351323
Add build instructions for LimeSDR software
Included detailed build instructions for Debian-based and Arch Linux
systems in the README. C++ build dependencies and steps are now
documented, facilitating the setup process for new contributors and
users. The update ensures clarity on how to compile the software and
where to find the resulting `limedriver` executable.
2024-02-10 12:56:07 +01:00
Julia Pfitzer
3e7b2e7195
Merge pull request #13 from nqrduck/runi_confi
Refactoring in preparation for Python bindings
2024-02-09 13:45:34 +01:00
jupfi
b9c226c657 Fixed indentations. 2024-02-09 13:44:01 +01:00
40245eabe9
Enhance CI with build artifact upload
Added a step to the continuous integration workflow to upload compiled
build artifacts. This permits easier access to builds for further
testing and validation post-CI process.
2024-02-09 12:49:25 +01:00
b00b2f08e3
Optimize CI pipeline by bundling setup steps
Streamlined the setup process in the GitHub Actions workflow by
combining system updates and package installations into a single step.
Removed the action for setting up CMake, instead directly installing it
along with build requirements, reducing redundancy and improving build
times. These adjustments enhance the efficiency of the continuous
integration process.
2024-02-09 12:47:35 +01:00
a6b8a3fd67
Merge branch 'dump_from_vector' 2024-02-09 12:39:12 +01:00
4a9fc5c81a
Migrate to CMake build system and remove autoconf
artifacts

Transition the project's build system from Autoconf to CMake,
streamlining the build process and conforming to modern C++ project
standards. Autoconf related files like 'configure', 'install-sh', and
'missing' have been removed while CMakeLists and relevant .cmake
configuration files are added to support the new system. This change
addresses the need for a more portable and easier-to-maintain build
system, particularly beneficial for cross-platform development. As a
result, build process customization and dependency management are
expected to be more straightforward.

Additionally, `.gitignore` has been adjusted to accommodate the CMake
build outputs. The new CMake build system introduces `build/` as the
directory for out-of-source builds, replacing the more scattered build
artifacts of the previous system.
2024-02-09 12:38:41 +01:00
jupfi
1eacc19c71 Updated memory allocation 2024-02-09 08:35:49 +01:00
jupfi
274c2cb5b0 Deallocated HDFattr memory 2024-02-09 08:27:29 +01:00
jupfi
f9d86bd4de Added init of more modulation parameters 2024-02-08 20:25:31 +01:00
jupfi
929a6a8d0d Added init of modulation parameters 2024-02-08 20:20:41 +01:00
jupfi
a158dc193e Added function to header 2024-02-08 17:53:38 +01:00
jupfi
9dcde4d65b Added stuff from argument parsing to the run experiment function 2024-02-08 17:49:10 +01:00
jupfi
af1793d2af Added status return 2024-02-08 17:47:26 +01:00
Julia Pfitzer
844b2d9191
Merge pull request #12 from nqrduck/bindi_pythi
Bindi pythi
2024-02-08 17:44:45 +01:00
jupfi
3d1c7bdf2c Updates ... very important ... 2024-02-08 16:22:00 +01:00
jupfi
34a18f2a88 Added run experiment function 2024-02-08 15:23:16 +01:00
Julia Pfitzer
09e5057452
Merge pull request #11 from nqrduck/bindi_pythi
Added header file for python bindings.
2024-02-07 19:25:33 +01:00
jupfi
a905f258e2 Added header file for python bindings. 2024-02-07 15:48:03 +01:00
Julia Pfitzer
980ae5ad34
Merge pull request #10 from nqrduck/dump_from_vector
Refactor configuration array to vector. 
Tested with LimeSDR USB - works!
2024-02-07 15:08:51 +01:00
77b3f90d34
Refactor configuration array to vector
Replaced the array parameter in `dumpConfig` function with a vector reference, streamlining parameter passing and enhancing code maintainability. Included `<cstddef>` for `size_t` definition and removed redundant code that copied vector contents to an array, thus improving performance. These changes eliminate the need for manual array sizing and copying, reducing potential errors and improving readability.
2024-02-07 14:53:26 +01:00
Julia Pfitzer
8edfbda8f7
Merge pull request #9 from nqrduck/parsi_argi
Added function to parse arguments for future implementation of python…
Tested with the LimeSDR USB.
2024-02-07 14:48:34 +01:00
jupfi
19e336c80a Removed data folder and added it to the gitignore 2024-02-07 14:45:14 +01:00
jupfi
3d500158b2 Added function to parse arguments for future implementation of python binding. 2024-02-07 14:37:13 +01:00
Julia Pfitzer
df82c4af62
Merge pull request #8 from nqrduck/limenqr_merge
Tested with the LimeSDR USB
2024-02-07 14:12:08 +01:00
cc030a82e8
Optimize LimeDriver memory initialization
Enhanced performance and safety of the LimeDriver by passing `LimeCfg` by reference to `getHDFAttributes`. Additionally, zero-initialized `LimeCfg`, pulse duration, and frequency arrays upon creation to prevent potential use of garbage values and ensure determinate behavior. These changes may reduce memory usage and increase reliability when configuring the Lime hardware.
2024-02-07 12:29:43 +01:00
c2ff68a5bc
Merging in most recent (?) version of source cpp 2024-02-07 11:47:02 +01:00
1d67383111
Refactor to use getHDFAttributes function
Replaced inline initialization of HDF attribute structs with getHDFAttributes, a new function isolating HDF configuration setup. This change improves modularity, making the main function cleaner and the codebase easier to maintain. It allows expanding or changing the attribute set without cluttering the main logic. The introduced std::vector further modernizes resource management and supports dynamic attribute collection, followed by a conversion to an array for backward compatibility with existing code.
2024-02-07 10:34:57 +01:00
jupfi
7414d1490c Updated LimeConfig init. 2024-02-05 16:57:52 +01:00
jupfi
bde76f6b68 Refactored LimeConfig_t initalization. 2024-02-05 16:47:49 +01:00
d8fae232db
Merge branch 'main' of https://github.com/nqrduck/LimeDriver 2024-02-05 13:53:33 +01:00
bba19bb51f
Remove unused comment 2024-02-05 13:53:30 +01:00
Julia Pfitzer
8edd98c654
Merge pull request #2 from nqrduck/asdf_fix
Replace "asdf" directory name
Tested with the LimeSDR USB. 

The asdf folder wasn't used anyways with the nqrduck program.
2024-02-05 13:51:53 +01:00