Skip to content

Commit e26c1f9

Browse files
committed
Merge branch 'main' into maint-3.10
2 parents 83b0aef + d82589b commit e26c1f9

File tree

139 files changed

+6076
-89
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

139 files changed

+6076
-89
lines changed

CHANGELOG.md

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

77
## Unreleased
88

9+
## [5.6.0], [4.13.0], [3.20.0] - 2024-09-03
10+
11+
### Added
12+
- 19k2 transmitter for RESHUCUBE
13+
- 19k2 transmitter for ISOI
14+
- AFSK transmitter for CUBEBUG-3
15+
- HADES deframer in SatYAML and core flowgraph
16+
- Support for AVION
17+
- Support for BELIEFSAT-0
18+
- Support for CATSAT
19+
- Support for CUAVA-2
20+
- Support for ERMINAZ
21+
- Support for GRBBeta
22+
- Support for Kashiwa
23+
- Support for KILICSAT
24+
- Support for MOVE-II and Nanolink transport
25+
- Support for NANOFF-A and -B
26+
- Support for OOV-Cube
27+
- Support for ROBUSTA-3A
28+
- Support for SATURN
29+
- Support for SONATE-2
30+
- Support for VDNH-80
31+
- Support for WS-1
32+
- Policy for commercial missions
33+
- Waveform plot Python script (in tools)
34+
35+
### Fixed
36+
- AHMAT-1 NORAD ID
37+
- Astrocast 0.1 frequency
38+
- BISONSAT NORAD ID
39+
- CCSDS Deframer example
40+
- Crashes when the BME Submitter fails
41+
- Fixedlen to Pdu GRC YAML
42+
- Hayasat NORAD ID
43+
- IRIS NORAD ID
44+
- KS-1Q NORAD ID
45+
- MCUBED-2 NORAD ID
46+
- MONITOR-2 NORAD ID and transmitters
47+
- PDU add meta GRC YAML
48+
- QARMAN NORAD ID
49+
- ROBUSTA-3A NORAD ID
50+
- SCOOB-II NORAD ID
51+
- USP AX.25 Crop GRC YAML
52+
- Varlen Packet Framer and Varlen Packet Tagger GRC YAML
53+
54+
### Changed
55+
- FSK deviation for AALTO-1
56+
- FSK deviation for AISTECHSAT-2 and -3
57+
- FSK deviation for al-Farabi-2
58+
- FSK deviation for ARCCUBE-1
59+
- FSK deviation for Astrocast 0.1
60+
- FSK deviation for BCCSAT 1
61+
- FSK deviation for BDSAT-2
62+
- FSK deviation for BEESAT-2 and -9
63+
- FSK deviation for BISONSAT
64+
- FSK deviation for BlueWalker 3
65+
- FSK deviation for CIRBE
66+
- FSK deviation for CubeBel-2
67+
- FSK deviation for CUBEBUG-3
68+
- FSK deviation for CUBE-L
69+
- FSK deviation for CubeSX-HSE, -HSE-2, -HSE-3 and -Sirius-HSE
70+
- FSK deviation for CUTE
71+
- FSK deviation for DEKART
72+
- FSK deviation for D-STAR One LightSat, iSat and Sparrow
73+
- FSK deviaiton for EIRSAT-1
74+
- FSK deviaiton for ENSO
75+
- FSK deviation for GO-32
76+
- FSK deviation for GRBAlpha
77+
- FSK deviation for GREENCUBE
78+
- FSK deviation for Hayasat
79+
- FSK deviation for INS-2TD
80+
- FSK deviation for INSPIRE-SAT 1 and 7
81+
- FSK deviation for ION-MK01
82+
- FSK deviation for IRIS-A
83+
- FSK deviation for KAFASAT
84+
- FSK deviation for KSU CubeSat
85+
- FSK deviation for LEDSAT
86+
- FSK deviation for LilacSat-2
87+
- FSK deviation for Lucky-7
88+
- FSK deviation for Luojia-1
89+
- FSK deviation for MCUBED-2
90+
- FSK deviation for MIMAN
91+
- FSK deviation for MONITOR-3 and -4
92+
- FSK deviation for NANOFF-A and -B
93+
- FSK deviation for NANOZOND
94+
- FSK deviation for NETSAT 2
95+
- FSK deviation for NORBI
96+
- FSK deviation for OrbiCraft-Zorkiy
97+
- FSK deviation for PEARL-1C and -1H
98+
- FSK deviation for POLYITAN-1
99+
- FSK deviation for SelfieSat
100+
- FSK deviation for Sharjahsat-1
101+
- FSK deviation for SKOLTECH-B1
102+
- FSK deviation for SNUGLITE
103+
- FSK deviation for SOMP 2b
104+
- FSK deviation for SONATE-2
105+
- FSK deviation for SSS-2B
106+
- FSK deviation for STRATOSAT-TK1
107+
- FSK deviation for SUCHAI-2 and -3
108+
- FSK deviation for Suomi 100
109+
- FSK deviation for TIGRISAT
110+
- FSK deviation for TTU-100
111+
- FSK deviation for TUBIN
112+
- FSK deviation for UmKA-1
113+
- FSK deviation for UPMSat 2
114+
- FSK deviation for UTMN-2
115+
- FSK deviation for UWE-4
116+
- FSK deviation for VERONIKA
117+
- FSK deviation for VIZARD-METEO
118+
- FSK deviation for VZLUSAT-2
119+
9120
## [5.5.0], [4.12.0], [3.19.0] - 2023-12-28
10121

11122
### Added
@@ -656,14 +767,16 @@ Large refactor release bringing new functionality and improvements. This is an o
656767
## [1.0.0] - 2018-08-02
657768
First gr-satellites release using semantic versioning
658769

659-
[Unreleased]: https://github.com/daniestevez/gr-satellites/compare/v5.5.0...main
770+
[Unreleased]: https://github.com/daniestevez/gr-satellites/compare/v5.6.0...main
771+
[5.5.0]: https://github.com/daniestevez/gr-satellites/compare/v5.5.0...v5.6.0
660772
[5.5.0]: https://github.com/daniestevez/gr-satellites/compare/v5.4.0...v5.5.0
661773
[5.4.0]: https://github.com/daniestevez/gr-satellites/compare/v5.3.0...v5.4.0
662774
[5.3.0]: https://github.com/daniestevez/gr-satellites/compare/v5.2.0...v5.3.0
663775
[5.2.0]: https://github.com/daniestevez/gr-satellites/compare/v5.1.1...v5.2.0
664776
[5.1.1]: https://github.com/daniestevez/gr-satellites/compare/v5.1.0...v5.1.1
665777
[5.1.0]: https://github.com/daniestevez/gr-satellites/compare/v5.0.0...v5.1.0
666778
[5.0.0]: https://github.com/daniestevez/gr-satellites/compare/v4.6.0...v5.0.0
779+
[4.13.0]: https://github.com/daniestevez/gr-satellites/compare/v4.12.0...v4.13.0
667780
[4.12.0]: https://github.com/daniestevez/gr-satellites/compare/v4.11.0...v4.12.0
668781
[4.11.0]: https://github.com/daniestevez/gr-satellites/compare/v4.10.0...v4.11.0
669782
[4.10.0]: https://github.com/daniestevez/gr-satellites/compare/v4.9.0...v4.10.0
@@ -680,6 +793,7 @@ First gr-satellites release using semantic versioning
680793
[4.1.0]: https://github.com/daniestevez/gr-satellites/compare/v4.0.0...v4.1.0
681794
[4.0.0]: https://github.com/daniestevez/gr-satellites/compare/v4.0.0-rc1...v4.0.0
682795
[4.0.0-rc1]: https://github.com/daniestevez/gr-satellites/compare/v3.7.0...v4.0.0-rc1
796+
[3.20.0]: https://github.com/daniestevez/gr-satellites/compare/v3.19.0...v3.20.0
683797
[3.19.0]: https://github.com/daniestevez/gr-satellites/compare/v3.18.0...v3.19.0
684798
[3.18.0]: https://github.com/daniestevez/gr-satellites/compare/v3.17.0...v3.18.0
685799
[3.17.0]: https://github.com/daniestevez/gr-satellites/compare/v3.16.0...v3.17.0

CMakeLists.txt

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

4444
# Set the version information here
4545
set(VERSION_MAJOR 5)
46-
set(VERSION_API 5)
46+
set(VERSION_API 6)
4747
set(VERSION_ABI 0)
4848
set(VERSION_PATCH 0)
4949

README.md

+7-1
Original file line numberDiff line numberDiff line change
@@ -111,11 +111,17 @@ the `VOLK_GENERIC=1` environment variable. See
111111

112112
## Satellite teams
113113

114-
Satellite teams interested in using gr-satellites for you groundstation
114+
Satellite teams interested in using gr-satellites for your groundstation
115115
solution, please read
116116
[this note](https://github.com/daniestevez/gr-satellites/blob/main/satellite_teams.md),
117117
especially if you will be using Amateur radio spectrum.
118118

119+
## Commercial satellites
120+
121+
[This note](https://github.com/daniestevez/gr-satellites/blob/main/commercial_satellites.md)
122+
describes the policy of the gr-satellites project with respect to code
123+
contributions that add support for commercial satellite missions.
124+
119125
## CCSDS TM and TC Space Datalink and SpacePacket blocks
120126

121127
Athanasios Theocharis made under ESA Summer of Code in Space 2019 a collection

apps/CMakeLists.txt

+1
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ include(GrPython)
2323
GR_PYTHON_INSTALL(
2424
PROGRAMS
2525
gr_satellites
26+
erminaz_ssdv
2627
jy1sat_ssdv
2728
smog_p_spectrum
2829
DESTINATION bin

apps/erminaz_ssdv

+88
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
#!/usr/bin/env python3
2+
# -*- coding: utf-8 -*-
3+
4+
# Copyright 2019-2020, 2024 Daniel Estevez <[email protected]>
5+
#
6+
# This file is part of gr-satellites
7+
#
8+
# SPDX-License-Identifier: GPL-3.0-or-later
9+
#
10+
11+
import subprocess
12+
import sys
13+
14+
import numpy as np
15+
16+
from satellites.kiss import *
17+
from satellites.telemetry.erminaz import *
18+
19+
20+
def print_usage():
21+
print(f'Usage {sys.argv[0]} <erminaz_frames.kss> <output_path>')
22+
23+
24+
def seqnum(packet):
25+
return packet[8]*256 + packet[9]
26+
27+
28+
def read_kiss_file(path):
29+
frames = list()
30+
frame = list()
31+
transpose = False
32+
with open(path, 'rb') as f:
33+
for c in f.read():
34+
if c == FEND:
35+
if len(frame) > 1 and (frame[0] & 0x0f) == 0:
36+
frames.append(frame[1:])
37+
frame = list()
38+
elif transpose:
39+
if c == TFEND:
40+
frame.append(FEND)
41+
elif c == TFESC:
42+
frame.append(FESC)
43+
transpose = False
44+
elif c == FESC:
45+
transpose = True
46+
else:
47+
frame.append(c)
48+
return np.array(frames, dtype='uint8')
49+
50+
51+
def main():
52+
if len(sys.argv) != 3:
53+
print_usage()
54+
sys.exit(1)
55+
56+
input_file = sys.argv[1]
57+
output_file = sys.argv[2]
58+
59+
# Read frames
60+
x = read_kiss_file(input_file)
61+
62+
# Filter out by virtual channel
63+
vcid = 4
64+
headers = [TMPrimaryHeader.parse(y) for y in x]
65+
x = np.array([y for h, y in zip(headers, x)
66+
if h.virtual_channel_id == vcid])
67+
if x.size == 0:
68+
# there are no SSDV packets
69+
return
70+
71+
# Extract SSDV packets
72+
x = x[:, TMPrimaryHeader.sizeof() + 2:]
73+
id_idx = 6
74+
ids = set(x[:, id_idx])
75+
76+
for i in ids:
77+
L = list(x[x[:, id_idx] == i, :])
78+
L.sort(key=seqnum)
79+
ssdv = '{}_{:03}.ssdv'.format(output_file, i)
80+
jpeg = '{}_{:03}.jpg'.format(output_file, i)
81+
np.array(L).tofile(ssdv)
82+
print('Calling SSDV decoder for image {}'.format(hex(i)))
83+
subprocess.call(['ssdv', '-d', '-l', str(x.shape[1]), ssdv, jpeg])
84+
print()
85+
86+
87+
if __name__ == '__main__':
88+
main()

commercial_satellites.md

+40
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
# gr-satellites policy for commercial satellites
2+
3+
The main mission of the gr-satellites project is to provide GNU Radio decoders
4+
for all (or most) satellites that transmit on amateur radio spectrum. This is in
5+
agreement with the self-training and technical experimentation purposes that
6+
define the amateur service in the ITU Radio Regulations, and with the principle
7+
of not encoding amateur transmissions with the purpose of obscuring their
8+
meaning.
9+
10+
gr-satellites can also be a useful tool for commercial satellite missions, and
11+
it is in fact used in several such missions. However, the gr-satellites project
12+
reckons and respects that some commercial satellite operators might not be
13+
approving of amateur radio operators and amateur satellite observers decoding
14+
data transmitted by their satellites (and this act might be illegal in some
15+
jurisdictions).
16+
17+
The gr-satellites project will only accept code contributions (whether in the
18+
form of SatYAML files or GNU Radio blocks) specifically intended for the
19+
reception of a commercial satellite if those contributions are endorsed or
20+
acknowledged by the satellite operator or owner. This restriction only affects
21+
amateurs using gr-satellites to receive commercial satellites. Commercial
22+
satellite operators are encouraged and welcome to upstream code contributions to
23+
gr-satellites regarding their own satellites, if they wish to do so.
24+
25+
Code contributions which are generic in nature, such as GNU Radio blocks that
26+
implement support for a radio that could potentially be used in amateur and
27+
commercial missions, are not affected by this restriction and are always
28+
accepted in gr-satellites.
29+
30+
The gr-satellites project also acknowledges that there exist many satellites
31+
that transmit on amateur radio spectrum that are not amateur in nature, and that
32+
these satellites should not be using amateur spectrum. Some of these satellites
33+
are fully supported by gr-satellites. This is in line with the common practice
34+
of self-monitoring of amateur radio spectrum by amateur operators. Hopefully the
35+
existence of these decoders and a community that uses them to monitor the
36+
missions will be another incentive that makes non-amateur missions avoid using
37+
amateur spectrum in the future. For this reason, gr-satellites will continue
38+
trying to support any satellite that transmits on amateur radio spectrum,
39+
regardless of the nature of the mission, and accepts all contributions to this
40+
end.

debian/changelog

+6
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
1+
gr-satellites (5.6.0-0) noble; urgency=medium
2+
3+
* Mainstream release v5.6.0
4+
5+
-- <[email protected]> Tue, 3 Sep 2024 16:00:00 +0000
6+
17
gr-satellites (5.5.0-1) mantic; urgency=medium
28

39
* Mainstream release v5.5.0

docs/requirements.in

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
Sphinx>=5,<6
2+
sphinx_rtd_theme

docs/requirements.txt

+62
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
#
2+
# This file is autogenerated by pip-compile with Python 3.11
3+
# by the following command:
4+
#
5+
# pip-compile requirements.in
6+
#
7+
alabaster==0.7.13
8+
# via sphinx
9+
babel==2.14.0
10+
# via sphinx
11+
certifi==2023.11.17
12+
# via requests
13+
charset-normalizer==3.3.2
14+
# via requests
15+
docutils==0.19
16+
# via
17+
# sphinx
18+
# sphinx-rtd-theme
19+
idna==3.6
20+
# via requests
21+
imagesize==1.4.1
22+
# via sphinx
23+
jinja2==3.1.2
24+
# via sphinx
25+
markupsafe==2.1.3
26+
# via jinja2
27+
packaging==23.2
28+
# via sphinx
29+
pygments==2.17.2
30+
# via sphinx
31+
requests==2.31.0
32+
# via sphinx
33+
snowballstemmer==2.2.0
34+
# via sphinx
35+
sphinx==5.3.0
36+
# via
37+
# -r requirements.in
38+
# sphinx-rtd-theme
39+
# sphinxcontrib-applehelp
40+
# sphinxcontrib-devhelp
41+
# sphinxcontrib-htmlhelp
42+
# sphinxcontrib-jquery
43+
# sphinxcontrib-qthelp
44+
# sphinxcontrib-serializinghtml
45+
sphinx-rtd-theme==2.0.0
46+
# via -r requirements.in
47+
sphinxcontrib-applehelp==1.0.7
48+
# via sphinx
49+
sphinxcontrib-devhelp==1.0.5
50+
# via sphinx
51+
sphinxcontrib-htmlhelp==2.0.4
52+
# via sphinx
53+
sphinxcontrib-jquery==4.1
54+
# via sphinx-rtd-theme
55+
sphinxcontrib-jsmath==1.0.1
56+
# via sphinx
57+
sphinxcontrib-qthelp==1.0.6
58+
# via sphinx
59+
sphinxcontrib-serializinghtml==1.1.9
60+
# via sphinx
61+
urllib3==2.1.0
62+
# via requests

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 = '5.5.0'
29+
release = '5.6.0'
3030

3131

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

0 commit comments

Comments
 (0)