Skip to content

Commit

Permalink
Merge branch 'main' into maint-3.10
Browse files Browse the repository at this point in the history
  • Loading branch information
daniestevez committed Sep 3, 2024
2 parents 83b0aef + d82589b commit e26c1f9
Show file tree
Hide file tree
Showing 139 changed files with 6,076 additions and 89 deletions.
116 changes: 115 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,117 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## Unreleased

## [5.6.0], [4.13.0], [3.20.0] - 2024-09-03

### Added
- 19k2 transmitter for RESHUCUBE
- 19k2 transmitter for ISOI
- AFSK transmitter for CUBEBUG-3
- HADES deframer in SatYAML and core flowgraph
- Support for AVION
- Support for BELIEFSAT-0
- Support for CATSAT
- Support for CUAVA-2
- Support for ERMINAZ
- Support for GRBBeta
- Support for Kashiwa
- Support for KILICSAT
- Support for MOVE-II and Nanolink transport
- Support for NANOFF-A and -B
- Support for OOV-Cube
- Support for ROBUSTA-3A
- Support for SATURN
- Support for SONATE-2
- Support for VDNH-80
- Support for WS-1
- Policy for commercial missions
- Waveform plot Python script (in tools)

### Fixed
- AHMAT-1 NORAD ID
- Astrocast 0.1 frequency
- BISONSAT NORAD ID
- CCSDS Deframer example
- Crashes when the BME Submitter fails
- Fixedlen to Pdu GRC YAML
- Hayasat NORAD ID
- IRIS NORAD ID
- KS-1Q NORAD ID
- MCUBED-2 NORAD ID
- MONITOR-2 NORAD ID and transmitters
- PDU add meta GRC YAML
- QARMAN NORAD ID
- ROBUSTA-3A NORAD ID
- SCOOB-II NORAD ID
- USP AX.25 Crop GRC YAML
- Varlen Packet Framer and Varlen Packet Tagger GRC YAML

### Changed
- FSK deviation for AALTO-1
- FSK deviation for AISTECHSAT-2 and -3
- FSK deviation for al-Farabi-2
- FSK deviation for ARCCUBE-1
- FSK deviation for Astrocast 0.1
- FSK deviation for BCCSAT 1
- FSK deviation for BDSAT-2
- FSK deviation for BEESAT-2 and -9
- FSK deviation for BISONSAT
- FSK deviation for BlueWalker 3
- FSK deviation for CIRBE
- FSK deviation for CubeBel-2
- FSK deviation for CUBEBUG-3
- FSK deviation for CUBE-L
- FSK deviation for CubeSX-HSE, -HSE-2, -HSE-3 and -Sirius-HSE
- FSK deviation for CUTE
- FSK deviation for DEKART
- FSK deviation for D-STAR One LightSat, iSat and Sparrow
- FSK deviaiton for EIRSAT-1
- FSK deviaiton for ENSO
- FSK deviation for GO-32
- FSK deviation for GRBAlpha
- FSK deviation for GREENCUBE
- FSK deviation for Hayasat
- FSK deviation for INS-2TD
- FSK deviation for INSPIRE-SAT 1 and 7
- FSK deviation for ION-MK01
- FSK deviation for IRIS-A
- FSK deviation for KAFASAT
- FSK deviation for KSU CubeSat
- FSK deviation for LEDSAT
- FSK deviation for LilacSat-2
- FSK deviation for Lucky-7
- FSK deviation for Luojia-1
- FSK deviation for MCUBED-2
- FSK deviation for MIMAN
- FSK deviation for MONITOR-3 and -4
- FSK deviation for NANOFF-A and -B
- FSK deviation for NANOZOND
- FSK deviation for NETSAT 2
- FSK deviation for NORBI
- FSK deviation for OrbiCraft-Zorkiy
- FSK deviation for PEARL-1C and -1H
- FSK deviation for POLYITAN-1
- FSK deviation for SelfieSat
- FSK deviation for Sharjahsat-1
- FSK deviation for SKOLTECH-B1
- FSK deviation for SNUGLITE
- FSK deviation for SOMP 2b
- FSK deviation for SONATE-2
- FSK deviation for SSS-2B
- FSK deviation for STRATOSAT-TK1
- FSK deviation for SUCHAI-2 and -3
- FSK deviation for Suomi 100
- FSK deviation for TIGRISAT
- FSK deviation for TTU-100
- FSK deviation for TUBIN
- FSK deviation for UmKA-1
- FSK deviation for UPMSat 2
- FSK deviation for UTMN-2
- FSK deviation for UWE-4
- FSK deviation for VERONIKA
- FSK deviation for VIZARD-METEO
- FSK deviation for VZLUSAT-2

## [5.5.0], [4.12.0], [3.19.0] - 2023-12-28

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

[Unreleased]: https://github.com/daniestevez/gr-satellites/compare/v5.5.0...main
[Unreleased]: https://github.com/daniestevez/gr-satellites/compare/v5.6.0...main
[5.5.0]: https://github.com/daniestevez/gr-satellites/compare/v5.5.0...v5.6.0
[5.5.0]: https://github.com/daniestevez/gr-satellites/compare/v5.4.0...v5.5.0
[5.4.0]: https://github.com/daniestevez/gr-satellites/compare/v5.3.0...v5.4.0
[5.3.0]: https://github.com/daniestevez/gr-satellites/compare/v5.2.0...v5.3.0
[5.2.0]: https://github.com/daniestevez/gr-satellites/compare/v5.1.1...v5.2.0
[5.1.1]: https://github.com/daniestevez/gr-satellites/compare/v5.1.0...v5.1.1
[5.1.0]: https://github.com/daniestevez/gr-satellites/compare/v5.0.0...v5.1.0
[5.0.0]: https://github.com/daniestevez/gr-satellites/compare/v4.6.0...v5.0.0
[4.13.0]: https://github.com/daniestevez/gr-satellites/compare/v4.12.0...v4.13.0
[4.12.0]: https://github.com/daniestevez/gr-satellites/compare/v4.11.0...v4.12.0
[4.11.0]: https://github.com/daniestevez/gr-satellites/compare/v4.10.0...v4.11.0
[4.10.0]: https://github.com/daniestevez/gr-satellites/compare/v4.9.0...v4.10.0
Expand All @@ -680,6 +793,7 @@ First gr-satellites release using semantic versioning
[4.1.0]: https://github.com/daniestevez/gr-satellites/compare/v4.0.0...v4.1.0
[4.0.0]: https://github.com/daniestevez/gr-satellites/compare/v4.0.0-rc1...v4.0.0
[4.0.0-rc1]: https://github.com/daniestevez/gr-satellites/compare/v3.7.0...v4.0.0-rc1
[3.20.0]: https://github.com/daniestevez/gr-satellites/compare/v3.19.0...v3.20.0
[3.19.0]: https://github.com/daniestevez/gr-satellites/compare/v3.18.0...v3.19.0
[3.18.0]: https://github.com/daniestevez/gr-satellites/compare/v3.17.0...v3.18.0
[3.17.0]: https://github.com/daniestevez/gr-satellites/compare/v3.16.0...v3.17.0
Expand Down
2 changes: 1 addition & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ list(INSERT CMAKE_MODULE_PATH 0 ${CMAKE_SOURCE_DIR}/cmake/Modules)

# Set the version information here
set(VERSION_MAJOR 5)
set(VERSION_API 5)
set(VERSION_API 6)
set(VERSION_ABI 0)
set(VERSION_PATCH 0)

Expand Down
8 changes: 7 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -111,11 +111,17 @@ the `VOLK_GENERIC=1` environment variable. See

## Satellite teams

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

## Commercial satellites

[This note](https://github.com/daniestevez/gr-satellites/blob/main/commercial_satellites.md)
describes the policy of the gr-satellites project with respect to code
contributions that add support for commercial satellite missions.

## CCSDS TM and TC Space Datalink and SpacePacket blocks

Athanasios Theocharis made under ESA Summer of Code in Space 2019 a collection
Expand Down
1 change: 1 addition & 0 deletions apps/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ include(GrPython)
GR_PYTHON_INSTALL(
PROGRAMS
gr_satellites
erminaz_ssdv
jy1sat_ssdv
smog_p_spectrum
DESTINATION bin
Expand Down
88 changes: 88 additions & 0 deletions apps/erminaz_ssdv
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-

# Copyright 2019-2020, 2024 Daniel Estevez <[email protected]>
#
# This file is part of gr-satellites
#
# SPDX-License-Identifier: GPL-3.0-or-later
#

import subprocess
import sys

import numpy as np

from satellites.kiss import *
from satellites.telemetry.erminaz import *


def print_usage():
print(f'Usage {sys.argv[0]} <erminaz_frames.kss> <output_path>')


def seqnum(packet):
return packet[8]*256 + packet[9]


def read_kiss_file(path):
frames = list()
frame = list()
transpose = False
with open(path, 'rb') as f:
for c in f.read():
if c == FEND:
if len(frame) > 1 and (frame[0] & 0x0f) == 0:
frames.append(frame[1:])
frame = list()
elif transpose:
if c == TFEND:
frame.append(FEND)
elif c == TFESC:
frame.append(FESC)
transpose = False
elif c == FESC:
transpose = True
else:
frame.append(c)
return np.array(frames, dtype='uint8')


def main():
if len(sys.argv) != 3:
print_usage()
sys.exit(1)

input_file = sys.argv[1]
output_file = sys.argv[2]

# Read frames
x = read_kiss_file(input_file)

# Filter out by virtual channel
vcid = 4
headers = [TMPrimaryHeader.parse(y) for y in x]
x = np.array([y for h, y in zip(headers, x)
if h.virtual_channel_id == vcid])
if x.size == 0:
# there are no SSDV packets
return

# Extract SSDV packets
x = x[:, TMPrimaryHeader.sizeof() + 2:]
id_idx = 6
ids = set(x[:, id_idx])

for i in ids:
L = list(x[x[:, id_idx] == i, :])
L.sort(key=seqnum)
ssdv = '{}_{:03}.ssdv'.format(output_file, i)
jpeg = '{}_{:03}.jpg'.format(output_file, i)
np.array(L).tofile(ssdv)
print('Calling SSDV decoder for image {}'.format(hex(i)))
subprocess.call(['ssdv', '-d', '-l', str(x.shape[1]), ssdv, jpeg])
print()


if __name__ == '__main__':
main()
40 changes: 40 additions & 0 deletions commercial_satellites.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
# gr-satellites policy for commercial satellites

The main mission of the gr-satellites project is to provide GNU Radio decoders
for all (or most) satellites that transmit on amateur radio spectrum. This is in
agreement with the self-training and technical experimentation purposes that
define the amateur service in the ITU Radio Regulations, and with the principle
of not encoding amateur transmissions with the purpose of obscuring their
meaning.

gr-satellites can also be a useful tool for commercial satellite missions, and
it is in fact used in several such missions. However, the gr-satellites project
reckons and respects that some commercial satellite operators might not be
approving of amateur radio operators and amateur satellite observers decoding
data transmitted by their satellites (and this act might be illegal in some
jurisdictions).

The gr-satellites project will only accept code contributions (whether in the
form of SatYAML files or GNU Radio blocks) specifically intended for the
reception of a commercial satellite if those contributions are endorsed or
acknowledged by the satellite operator or owner. This restriction only affects
amateurs using gr-satellites to receive commercial satellites. Commercial
satellite operators are encouraged and welcome to upstream code contributions to
gr-satellites regarding their own satellites, if they wish to do so.

Code contributions which are generic in nature, such as GNU Radio blocks that
implement support for a radio that could potentially be used in amateur and
commercial missions, are not affected by this restriction and are always
accepted in gr-satellites.

The gr-satellites project also acknowledges that there exist many satellites
that transmit on amateur radio spectrum that are not amateur in nature, and that
these satellites should not be using amateur spectrum. Some of these satellites
are fully supported by gr-satellites. This is in line with the common practice
of self-monitoring of amateur radio spectrum by amateur operators. Hopefully the
existence of these decoders and a community that uses them to monitor the
missions will be another incentive that makes non-amateur missions avoid using
amateur spectrum in the future. For this reason, gr-satellites will continue
trying to support any satellite that transmits on amateur radio spectrum,
regardless of the nature of the mission, and accepts all contributions to this
end.
6 changes: 6 additions & 0 deletions debian/changelog
Original file line number Diff line number Diff line change
@@ -1,3 +1,9 @@
gr-satellites (5.6.0-0) noble; urgency=medium

* Mainstream release v5.6.0

-- <[email protected]> Tue, 3 Sep 2024 16:00:00 +0000

gr-satellites (5.5.0-1) mantic; urgency=medium

* Mainstream release v5.5.0
Expand Down
2 changes: 2 additions & 0 deletions docs/requirements.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
Sphinx>=5,<6
sphinx_rtd_theme
62 changes: 62 additions & 0 deletions docs/requirements.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
#
# This file is autogenerated by pip-compile with Python 3.11
# by the following command:
#
# pip-compile requirements.in
#
alabaster==0.7.13
# via sphinx
babel==2.14.0
# via sphinx
certifi==2023.11.17
# via requests
charset-normalizer==3.3.2
# via requests
docutils==0.19
# via
# sphinx
# sphinx-rtd-theme
idna==3.6
# via requests
imagesize==1.4.1
# via sphinx
jinja2==3.1.2
# via sphinx
markupsafe==2.1.3
# via jinja2
packaging==23.2
# via sphinx
pygments==2.17.2
# via sphinx
requests==2.31.0
# via sphinx
snowballstemmer==2.2.0
# via sphinx
sphinx==5.3.0
# via
# -r requirements.in
# sphinx-rtd-theme
# sphinxcontrib-applehelp
# sphinxcontrib-devhelp
# sphinxcontrib-htmlhelp
# sphinxcontrib-jquery
# sphinxcontrib-qthelp
# sphinxcontrib-serializinghtml
sphinx-rtd-theme==2.0.0
# via -r requirements.in
sphinxcontrib-applehelp==1.0.7
# via sphinx
sphinxcontrib-devhelp==1.0.5
# via sphinx
sphinxcontrib-htmlhelp==2.0.4
# via sphinx
sphinxcontrib-jquery==4.1
# via sphinx-rtd-theme
sphinxcontrib-jsmath==1.0.1
# via sphinx
sphinxcontrib-qthelp==1.0.6
# via sphinx
sphinxcontrib-serializinghtml==1.1.9
# via sphinx
urllib3==2.1.0
# via requests
2 changes: 1 addition & 1 deletion docs/source/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@
# The short X.Y version
version = ''
# The full version, including alpha/beta/rc tags
release = '5.5.0'
release = '5.6.0'


# -- General configuration ---------------------------------------------------
Expand Down
Loading

0 comments on commit e26c1f9

Please sign in to comment.