Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/ntia/scos-usrp
USRP support for scos-sensor
https://github.com/ntia/scos-usrp
Last synced: 6 days ago
JSON representation
USRP support for scos-sensor
- Host: GitHub
- URL: https://github.com/ntia/scos-usrp
- Owner: NTIA
- License: other
- Created: 2020-03-24T20:28:44.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2024-05-07T19:18:19.000Z (6 months ago)
- Last Synced: 2024-05-08T17:24:06.618Z (6 months ago)
- Language: Python
- Size: 393 KB
- Stars: 2
- Watchers: 8
- Forks: 3
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
README
# NTIA/ITS SCOS USRP Plugin
This repository is a scos-sensor plugin to add support for the Ettus B2xx line of
signal analyzers. See the [scos-sensor README](
https://github.com/NTIA/scos-sensor/blob/master/README.md)
for more information about scos-sensor, especially the [Architecture](
https://github.com/NTIA/scos-sensor/blob/master/README.md#architecture
) and the [Actions and Hardware Support](
https://github.com/NTIA/scos-sensor/blob/master/README.md#actions-and-hardware-support
) sections which explain the scos-sensor plugin architecture.This repository includes many 700MHz band actions in [scos_usrp/configs/actions](
scos_usrp/configs/actions). Action classes, SignalAnalyzerInterface,
GPSInterface, and signals are used from [scos_actions](https://github.com/NTIA/scos-actions).For information on adding actions, see the [scos_actions documentation](
https://github.com/NTIA/scos-actions/blob/master/README.md#adding-actions).## Table of Contents
- [Overview of Repo Structure](#overview-of-repo-structure)
- [Running in scos-sensor](#running-in-scos-sensor)
- [Development](#development)
- [License](#license)
- [Contact](#contact)## Overview of Repo Structure
- scos_usrp/configs: This folder contains the yaml files with the parameters
used to initialize the USRP supported actions and sample calibration files.
- scos_usrp/discover: This includes the code to read yaml files and make actions
available to scos-sensor.
- scos_usrp/hardware: This includes the USRP implementation of the signal analyzer
interface and GPS interface. It also includes supporting calibration and test code.## Running in scos-sensor
Requires pip>=18.1 (upgrade using `python3 -m pip install --upgrade pip`).
Below are steps to run scos-sensor with the scos-usrp plugin:
1. Clone scos-sensor: `git clone https://github.com/NTIA/scos-sensor.git`
2. Navigate to scos-sensor: `cd scos-sensor`
3. If it does not exist, create env file while in the root scos-sensor directory:
`cp env.template ./env`
4. Replace the line starting with `scos-tekrsa` in the `requirements.in` file in
scos-sensor/src with the following:
`scos_usrp @ git+https://github.com/NTIA/scos-usrp@master`.
If you are using a different branch than master, change `master` to the branch
or tag you are using. Make sure `pip-tools` package is installed in your Python
environment (`python -m pip install pip-tools`). Then run
`pip-compile requirements.in` and `pip-compile requirements-dev.in` to update
`requirements.txt` and `requirements-dev.txt` with the dependencies needed for
scos-usrp.
5. Make sure `BASE_IMAGE` is set to `BASE_IMAGE=ghcr.io/ntia/scos-usrp/scos_usrp_uhd:0.0.2`
in the env file. This is a publicly available docker image with the necessary
UHD drivers hosted within the GitHub container registry.
6. Get environment variables: `source ./env`
7. Build and start containers: `docker-compose up -d --build --force-recreate`## Development
### Requirements and Configuration
Set up a development environment using a tool like [Conda](https://docs.conda.io/en/latest/)
or [venv](https://docs.python.org/3/library/venv.html#module-venv),
with `python>=3.8`. This repository dependends on the Python UHD library. In
Ubuntu, you can get this by installing the `python3-uhd` package. Then, you can
get access to this package in your 'venv' virtual environment using the
`--system-site-packages` option. Then, from the cloned directory, install the
development dependencies by running:```bash
pip install .[dev]
```This will install the project itself, along with development dependencies for pre-commit
hooks, building distributions, and running tests. Set up pre-commit, which runs
auto-formatting and code-checking automatically when you make a commit, by running:```bash
pre-commit install
```The pre-commit tool will auto-format Python code using [Black](https://github.com/psf/black)
and [isort](https://github.com/pycqa/isort). Other pre-commit hooks are also
enabled, and can be found in [`.pre-commit-config.yaml`](.pre-commit-config.yaml).### Building New Releases
This project uses [Hatchling](https://github.com/pypa/hatch/tree/master/backend)
as a backend. Hatchling makes versioning and building new releases easy. The
package version can be updated easily by using any of the following commands.```bash
hatchling version major # 1.0.0 -> 2.0.0
hatchling version minor # 1.0.0 -> 1.1.0
hatchling version micro # 1.0.0 -> 1.0.1
hatchling version "X.X.X" # 1.0.0 -> X.X.X
```To build a new release (both wheel and sdist/tarball), run:
```bash
hatchling build
```### Running Tests
Since the UHD drivers are required, a docker container is used for testing. [Install
Docker](https://docs.docker.com/get-docker/).```bash
docker build -f docker/Dockerfile-test -t usrp_test .
docker run usrp_test
```### Committing
Besides running the test suite and ensuring that all tests are passing, we also expect
all Python code that's checked in to have been run through an auto-formatter.This project uses a Python auto-formatter called Black. Additionally, import statement
sorting is handled by isort.There are several ways to autoformat your code before committing. First, IDE
integration with on-save hooks is very useful. Second, if you've already pip-installed
the dev requirements from the section above, you already have a utility called
pre-commit installed that will automate setting up this project's git pre-commit
hooks. Simply type the following once, and each time you make a commit, it will be
appropriately autoformatted.```bash
pre-commit install
```You can manually run the pre-commit hooks using the following command.
```bash
pre-commit run --all-files
```In addition to Black and isort, various other pre-commit tools are enabled including
markdownlint. Markdownlint will show an error message if it detects any style
issues in markdown files. See [.pre-commit-config.yaml](.pre-commit-config.yaml)
for the list of pre-commit tools enabled for this repository.### Updating the scos_usrp_uhd package
Run the following commands to build, tag, and push the docker image to the Github
Container Registry. Replace X.X.X with the desired version number.```bash
docker build -f docker/Dockerfile-uhd -t scos_usrp_uhd .
docker tag scos_usrp_uhd ghcr.io/ntia/scos-usrp/scos_usrp_uhd:X.X.X
docker push ghcr.io/ntia/scos-usrp/scos_usrp_uhd:X.X.X.
```## License
See [LICENSE](LICENSE.md).
## Contact
For technical questions about scos-usrp, contact Justin Haze,