Skip to content

Commit 65cb60d

Browse files
committed
Merge branch 'master' into maint-3.9
2 parents f37e39c + 90b2b3c commit 65cb60d

40 files changed

+2417
-79
lines changed

.github/workflows/build-ubuntu.yml

+16
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
name: build-ubuntu
2+
3+
# Controls when the action will run.
4+
on:
5+
push:
6+
pull_request:
7+
workflow_dispatch:
8+
9+
jobs:
10+
build-ubuntu:
11+
runs-on: ubuntu-latest
12+
13+
steps:
14+
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
15+
- uses: actions/checkout@v2
16+
- uses: daniestevez/[email protected]

CHANGELOG.md

+25-2
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,25 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
66

77
## Unreleased
88

9+
## [4.4.0], [3.11.0] - 2021-11-03
10+
11+
### Added
12+
- Support for BINAR-1
13+
- Support for CUAVA-1
14+
- Support for CUTE
15+
- CCSDS Uncoded Deframer block
16+
17+
### Changed
18+
- Default output path for file receiver changed to current directory
19+
- Added 9k6 mode to BEESAT-1
20+
21+
### Fixed
22+
- CSP header parsing in AAUSAT-4 and BY70-1 telemetry parsers
23+
- YUSAT deframer
24+
25+
### Removed
26+
- Deleted unused test_satellites.cc test code
27+
928
## [4.3.1], [3.10.1] - 2021-09-11
1029

1130
### Changed
@@ -417,13 +436,17 @@ Large refactor release bringing new functionality and improvements. This is an o
417436
## [1.0.0] - 2018-08-02
418437
First gr-satellites release using semantic versioning
419438

420-
[Unreleased]: https://github.com/daniestevez/gr-satellites/compare/v4.3.0...master
439+
[Unreleased]: https://github.com/daniestevez/gr-satellites/compare/v4.4.0...master
440+
[4.4.0]: https://github.com/daniestevez/gr-satellites/compare/v4.3.1...v4.4.0
441+
[4.3.1]: https://github.com/daniestevez/gr-satellites/compare/v4.3.0...v4.3.1
421442
[4.3.0]: https://github.com/daniestevez/gr-satellites/compare/v4.2.0...v4.3.0
422443
[4.2.0]: https://github.com/daniestevez/gr-satellites/compare/v4.1.0...v4.2.0
423444
[4.1.0]: https://github.com/daniestevez/gr-satellites/compare/v4.0.0...v4.1.0
424445
[4.0.0]: https://github.com/daniestevez/gr-satellites/compare/v4.0.0-rc1...v4.0.0
425446
[4.0.0-rc1]: https://github.com/daniestevez/gr-satellites/compare/v3.7.0...v4.0.0-rc1
426-
[3.9.0]: https://github.com/daniestevez/gr-satellites/compare/v3.9.0...v3.10.0
447+
[3.11.1]: https://github.com/daniestevez/gr-satellites/compare/v3.11.0...v3.11.1
448+
[3.11.0]: https://github.com/daniestevez/gr-satellites/compare/v3.10.0...v3.11.0
449+
[3.10.0]: https://github.com/daniestevez/gr-satellites/compare/v3.9.0...v3.10.0
427450
[3.9.0]: https://github.com/daniestevez/gr-satellites/compare/v3.8.0...v3.9.0
428451
[3.8.0]: https://github.com/daniestevez/gr-satellites/compare/v3.7.0...v3.8.0
429452
[3.7.0]: https://github.com/daniestevez/gr-satellites/compare/v3.6.0...v3.7.0

CMakeLists.txt

+3-2
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,9 @@ list(INSERT CMAKE_MODULE_PATH 0 ${CMAKE_SOURCE_DIR}/cmake/Modules)
4343

4444
# Set the version information here
4545
set(VERSION_MAJOR 4)
46-
set(VERSION_API 3)
47-
set(VERSION_ABI 1)
46+
set(VERSION_API 4)
47+
set(VERSION_ABI 0)
48+
set(VERSION_PATCH 0)
4849

4950
cmake_policy(SET CMP0011 NEW)
5051

CODE_OF_CONDUCT.md

+142
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,142 @@
1+
# gr-satellites Code of Conduct
2+
3+
As a GNU Radio out-of-tree module and a project which is part of the GNU Radio
4+
community understood in a wide sense, gr-satellites follows the same code of
5+
conduct as GNU Radio. This is a copy of the Code of Conduct. It might be out of
6+
date. The latest version can be found [on the gnuradio/gr-governance
7+
repository](https://github.com/gnuradio/gr-governance/blob/main/CODE_OF_CONDUCT.md).
8+
9+
## Our Pledge
10+
11+
We as members, contributors, and leaders pledge to make participation in our
12+
community a harassment-free experience for everyone, regardless of age, body
13+
size, visible or invisible disability, ethnicity, sex characteristics, gender
14+
identity and expression, level of experience, education, socio-economic status,
15+
nationality, personal appearance, race, caste, color, religion, or sexual identity
16+
and orientation.
17+
18+
We pledge to act and interact in ways that contribute to an open, welcoming,
19+
diverse, inclusive, and healthy community.
20+
21+
## Our Standards
22+
23+
Examples of behavior that contributes to a positive environment for our
24+
community include:
25+
26+
* Demonstrating empathy and kindness toward other people
27+
* Being respectful of differing opinions, viewpoints, and experiences
28+
* Giving and gracefully accepting constructive feedback
29+
* Accepting responsibility and apologizing to those affected by our mistakes,
30+
and learning from the experience
31+
* Focusing on what is best not just for us as individuals, but for the
32+
overall community
33+
34+
Examples of unacceptable behavior include:
35+
36+
* The use of sexualized language or imagery, and sexual attention or
37+
advances of any kind
38+
* Trolling, insulting or derogatory comments, and personal or political attacks
39+
* Public or private harassment
40+
* Publishing others' private information, such as a physical or email
41+
address, without their explicit permission
42+
* Other conduct which could reasonably be considered inappropriate in a
43+
professional setting
44+
45+
## Enforcement Responsibilities
46+
47+
Community leaders are responsible for clarifying and enforcing our standards of
48+
acceptable behavior and will take appropriate and fair corrective action in
49+
response to any behavior that they deem inappropriate, threatening, offensive,
50+
or harmful.
51+
52+
Community leaders have the right and responsibility to remove, edit, or reject
53+
comments, commits, code, wiki edits, issues, and other contributions that are
54+
not aligned to this Code of Conduct, and will communicate reasons for moderation
55+
decisions when appropriate.
56+
57+
## Scope
58+
59+
This Code of Conduct applies within all community spaces, and also applies when
60+
an individual is officially representing the community in public spaces.
61+
Examples of representing our community include using an official e-mail address,
62+
posting via an official social media account, or acting as an appointed
63+
representative at an online or offline event.
64+
65+
## Enforcement
66+
67+
Instances of abusive, harassing, or otherwise unacceptable behavior may be
68+
reported by contacting Daniel Estevez at [email protected] (who is the
69+
gr-satellite main developer) or the GNU Radio project Code of Conduct team at
70+
[email protected] (only if applicable; gr-satellites is related to the GNU
71+
Radio project and community, but formally not part of the GNU Radio project and
72+
governance). All complaints will be reviewed and investigated promptly and
73+
fairly.
74+
75+
All community leaders are obligated to respect the privacy and security of the
76+
reporter of any incident.
77+
78+
## Enforcement Guidelines
79+
80+
Community leaders will follow these Community Impact Guidelines in determining
81+
the consequences for any action they deem in violation of this Code of Conduct:
82+
83+
### 1. Correction
84+
85+
**Community Impact**: Use of inappropriate language or other behavior deemed
86+
unprofessional or unwelcome in the community.
87+
88+
**Consequence**: A private, written warning from community leaders, providing
89+
clarity around the nature of the violation and an explanation of why the
90+
behavior was inappropriate. A public apology may be requested.
91+
92+
### 2. Warning
93+
94+
**Community Impact**: A violation through a single incident or series
95+
of actions.
96+
97+
**Consequence**: A warning with consequences for continued behavior. No
98+
interaction with the people involved, including unsolicited interaction with
99+
those enforcing the Code of Conduct, for a specified period of time. This
100+
includes avoiding interactions in community spaces as well as external channels
101+
like social media. Violating these terms may lead to a temporary or
102+
permanent ban.
103+
104+
### 3. Temporary Ban
105+
106+
**Community Impact**: A serious violation of community standards, including
107+
sustained inappropriate behavior.
108+
109+
**Consequence**: A temporary ban from any sort of interaction or public
110+
communication with the community for a specified period of time. No public or
111+
private interaction with the people involved, including unsolicited interaction
112+
with those enforcing the Code of Conduct, is allowed during this period.
113+
Violating these terms may lead to a permanent ban.
114+
115+
### 4. Permanent Ban
116+
117+
**Community Impact**: Demonstrating a pattern of violation of community
118+
standards, including sustained inappropriate behavior, harassment of an
119+
individual, or aggression toward or disparagement of classes of individuals.
120+
121+
**Consequence**: A permanent ban from any sort of public interaction within
122+
the community.
123+
124+
## Attribution
125+
126+
This Code of Conduct is adapted from the [Contributor Covenant][homepage],
127+
version 2.0, available at
128+
[https://www.contributor-covenant.org/version/2/0/code_of_conduct.html][v2.0].
129+
130+
Community Impact Guidelines were inspired by
131+
[Mozilla's code of conduct enforcement ladder][Mozilla CoC].
132+
133+
For answers to common questions about this code of conduct, see the FAQ at
134+
[https://www.contributor-covenant.org/faq][FAQ]. Translations are available
135+
at [https://www.contributor-covenant.org/translations][translations].
136+
137+
[homepage]: https://www.contributor-covenant.org
138+
[v2.0]: https://www.contributor-covenant.org/version/2/0/code_of_conduct.html
139+
[Mozilla CoC]: https://github.com/mozilla/diversity
140+
[FAQ]: https://www.contributor-covenant.org/faq
141+
[translations]: https://www.contributor-covenant.org/translations
142+

CONTRIBUTING.md

+70
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
# Contributing to gr-satellites
2+
3+
These guidelines are based on the [contributing guidelines for GNU
4+
Radio](https://github.com/gnuradio/gnuradio/blob/master/CONTRIBUTING.md). Since
5+
gr-satellites is a GNU Radio out-of-tree module, we follow the same guidelines
6+
for consistency wherever it makes sense: coding style, code of conduct, etc.
7+
8+
## Coding Guidelines
9+
10+
gr-satellites follows the same coding guidelines as GNU Radio. These are
11+
described in [GREP1][grep1].
12+
13+
For C++, clang-format is used. Formatting is checked in the CI pipeline and
14+
can also be checked locally with the `tools/clang_format.py` helper script.
15+
16+
For Python, we follow PEP8. In contrast to GNU Radio, which doesn't use a Python
17+
formatting checker, since a large amount of the gr-satellites code base is
18+
Python, we use pycodestyle to check PEP8 formatting. This is part of the
19+
CI pipeline and can be checked locally by running pycodestyle. Note that there
20+
are some [folders that are excluded]
21+
(https://github.com/daniestevez/gr-satellites-pycodestyle-action/blob/master/Dockerfile)
22+
from pycodestyle checking.
23+
24+
## Python or C++?
25+
26+
While GNU Radio has most of its code base written in C++, gr-satellites has the
27+
majority of its code base written in Python. This allows for a faster
28+
development, and performance is often not so critical, since small satellites
29+
typically transmit using low data rates. In particular, telemetry parsing is
30+
always written in Python using [construct](https://construct.readthedocs.io/).
31+
32+
However, some kinds of blocks are equally simple to implement in C++ or in
33+
Python, so C++ should be preferred for those.
34+
35+
## Git commit messages are very important
36+
37+
The same guidelines as for GNU Radio apply regarding commit messages:
38+
- Keep the lines below 72 characters
39+
- Avoid empty git commit messages
40+
- The git commit message explains the change, the code only explains the current
41+
state
42+
43+
## Include Unit Tests
44+
45+
If you have an obvious test, that might speed up the time it takes to convince
46+
reviewers that your code is correct.
47+
48+
## Adding support for a new satellite
49+
50+
Adding support for a new satellite can be as easy as writing a [SatYAML
51+
file](https://gr-satellites.readthedocs.io/en/latest/satyaml.html) describing
52+
the satellite if the satellite only uses protocols already supported by
53+
gr-satellites. Since most satellites use a custom telemetry format, a new telemetry
54+
parser should be written using
55+
[construct](https://construct.readthedocs.io/). See the
56+
[python/telemetry](https://github.com/daniestevez/gr-satellites/tree/master/python/telemetry)
57+
folder for some examples, and take note that your new parser should be added
58+
both to `python/telemetry/__index__.py` and to
59+
`python/telemetry/CMakeLists.txt`.
60+
61+
For satellites using new or ad-hoc custom protocols, some
62+
[components](https://gr-satellites.readthedocs.io/en/latest/components.html)
63+
will need to be written to support them. Most likely, a new deframer will need
64+
to be written. Examples can be found in
65+
[python/components/deframers](https://github.com/daniestevez/gr-satellites/tree/master/python/components/deframers).
66+
67+
See also the [note to satellite teams] planning to use gr-satellites for their
68+
mission.
69+
70+
[grep1]: https://github.com/gnuradio/greps/blob/master/grep-0001-coding-guidelines.md

README.md

+3
Original file line numberDiff line numberDiff line change
@@ -85,8 +85,11 @@ how to build and install gr-satellites are given in the
8585

8686
Support for gr-satellites is handled only through
8787
[Github issues](https://github.com/daniestevez/gr-satellites/issues)
88+
and [Github discussions](https://github.com/daniestevez/gr-satellites/discussions)
8889
so that the whole community can benefit, rather than through private
8990
channels such as email. Please understand this when asking for support.
91+
Take a look [here](https://github.com/daniestevez/gr-satellites/discussions/304) to
92+
check whether a new topic fits better in the issues page or in the discussions page.
9093

9194
## Satellite teams
9295

debian/changelog

+6
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
1+
gr-satellites (3.11.0-0) hirsute; urgency=medium
2+
3+
* Mainstream release v3.11.0
4+
5+
-- <[email protected]> Sat, 03 Nov 2021 18:40:00 +0000
6+
17
gr-satellites (3.10.1-0) hirsute; urgency=medium
28

39
* Mainstream release v3.10.1

docs/source/components.rst

+12-7
Original file line numberDiff line numberDiff line change
@@ -380,16 +380,21 @@ Reed-Solomon codeword and is used by SMOG-P and ATL-1.
380380
CCSDS deframers
381381
"""""""""""""""
382382

383-
The CCSDS Concatenated deframer and CCSDS Reed-Solomon deframer blocks implement
384-
some of the CCSDS protocols defined in the TM Synchronization and Channel Coding
385-
Blue Book (see the `CCSDS Blue Books`_).
383+
The CCSDS Uncoded deframer, CCSDS Concatenated deframer, and CCSDS Reed-Solomon
384+
deframer blocks implement some of the CCSDS protocols defined in the TM
385+
Synchronization and Channel Coding Blue Book (see the `CCSDS Blue Books`_).
386+
387+
The CCSDS Uncoded deframer implements uncoded TM frames.
386388

387389
The CCSDS Reed-Solomon deframer implements Reed-Solomon TM frames, which use a
388390
Reed-Solmon (255, 223) code (or a shortened version of this code) and the CCSDS
389-
synchronous scrambler. There is support for several interleave Reed-Solomon codewords.
390-
The CCSDS Concatenated deframer implements
391-
concatenated TM frames, which add an r=1/2, k=7 convolutional code as an inner
392-
coding to the Reed-Solomon frames. The usage of both deframers is very similar.
391+
synchronous scrambler. There is support for several interleave Reed-Solomon
392+
codewords.
393+
394+
The CCSDS Concatenated deframer implements concatenated TM frames, which add an
395+
r=1/2, k=7 convolutional code as an inner coding to the Reed-Solomon frames.
396+
397+
The usage of all three of these deframers is very similar.
393398

394399
The figure below shows an example flowgraph of the CCSDS Concatenated deframer
395400
block. This example can be found in

docs/source/conf.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
# The short X.Y version
2727
version = ''
2828
# The full version, including alpha/beta/rc tags
29-
release = '4.3.1'
29+
release = '4.4.0'
3030

3131

3232
# -- General configuration ---------------------------------------------------

docs/source/satyaml.rst

+4
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,8 @@ The framings allowed in the ``framing`` field are the following:
136136
* ``AO-40 FEC CRC-16-ARC short``, AO-40 FEC protocol with short frames and a
137137
CRC-16 ARC, as used by SMOG-1
138138

139+
* ``CCSDS Uncoded``, uncoded CCSDS codeworks (see :ref:`CCSDS deframers`)
140+
139141
* ``CCSDS Reed-Solomon``, CCSDS Reed-Solomon TM codewords (see :ref:`CCSDS deframers`)
140142

141143
* ``CCSDS Concatenated``, CCSDS Concatenated TM codewords (see :ref:`CCSDS deframers`)
@@ -239,6 +241,8 @@ The framings allowed in the ``framing`` field are the following:
239241
with custom synchronization and a PLS based on DVB-S2.
240242

241243
* ``DIY-1``, the custom framing used by DIY-1, which uses an RFM22 chip transceiver.
244+
245+
* ``BINAR-1``, the custom framing used by the BINAR-1 satellite.
242246

243247
Some framings, such as the CCSDS protocols need the additional field
244248
``frame size`` to indicate the frame size.

0 commit comments

Comments
 (0)