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 Dec 28, 2023
2 parents 0fbccdd + 4861b80 commit 83b0aef
Show file tree
Hide file tree
Showing 52 changed files with 1,721 additions and 100 deletions.
34 changes: 33 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,35 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## Unreleased

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

### Added
- Auto-Polarization Python block
- --fm-deviation option to AFSK Demodulator
- TLE to Doppler file Python script
- HADES-D deframer and example decoder
- Support for CLARKSAT-1
- Support for ENSO
- Support for GALASSIA-2
- Support for Hayasat
- Support for IRIS-C
- Support for KAFASAT
- Support for PEARL-1C and PEARL-1H
- Support for SCOOB-II
- Support for VELOX-AM
- Support for VERONIKA

### Fixed
- BME Telemetry Submitter GRC file
- SNET Deframer GRC file typo
- AF deviation in SALSAT SatYAML file
- Added missing SanoSat Deframer GRC file

### Changed
- Ported Manchester Sync block to C++
- CPU usage improvement for Selector block
- Final NORAD ID for EIRSAT-1

## [5.4.0], [4.11.0], [3.18.0] - 2023-08-28

### Added
Expand Down Expand Up @@ -627,13 +656,15 @@ 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.4.0...main
[Unreleased]: https://github.com/daniestevez/gr-satellites/compare/v5.5.0...main
[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.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
[4.9.0]: https://github.com/daniestevez/gr-satellites/compare/v4.8.1...v4.9.0
Expand All @@ -649,6 +680,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.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
[3.16.0]: https://github.com/daniestevez/gr-satellites/compare/v3.15.1...v3.16.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 4)
set(VERSION_API 5)
set(VERSION_ABI 0)
set(VERSION_PATCH 0)

Expand Down
12 changes: 12 additions & 0 deletions debian/changelog
Original file line number Diff line number Diff line change
@@ -1,3 +1,15 @@
gr-satellites (5.5.0-1) mantic; urgency=medium

* Mainstream release v5.5.0

-- <[email protected]> Thu, 28 Dec 2023 15:00:00 +0000

gr-satellites (5.5.0-0) jammy; urgency=medium

* Mainstream release v5.5.0

-- <[email protected]> Thu, 28 Dec 2023 15:00:00 +0000

gr-satellites (5.4.0-1) kinetic; urgency=medium

* Mainstream release v5.4.0
Expand Down
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.4.0'
release = '5.5.0'


# -- General configuration ---------------------------------------------------
Expand Down
4 changes: 3 additions & 1 deletion docs/source/satyaml.rst
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,9 @@ The modulations allowed in the ``modulation`` field are the following:
``True`` is used to perform non-coherent demodulation

The ``AFSK`` modulation also needs the ``deviation`` and ``af_carrier`` fields
that indicate the AFSK tone frequencies in Hz, as in the AFSK demodulator.
that indicate the AFSK tone frequencies in Hz, as in the AFSK demodulator. Optionally,
it is possible to indicate the deviation of the FM modulation using the ``fm_deviation``
field. By default, an FM deviation of 3 kHz is assumed.

The framings allowed in the ``framing`` field are the following:

Expand Down
83 changes: 82 additions & 1 deletion docs/source/supported_satellites.rst
Original file line number Diff line number Diff line change
Expand Up @@ -495,6 +495,13 @@ The list is auto-generated by reading the SatYAML files and using the script ``d
* **9k6 FSK downlink** (437.250 MHz): FSK modulation with AX.25 G3RUH framing
* **19k2 FSK downlink** (437.250 MHz): FSK modulation with AX.25 G3RUH framing

**CLARKSAT-1**
NORAD ID: 58613

Transmitters:

* **4k8 G3RUH FSK downlink** (435.130 MHz): FSK modulation with AX.25 G3RUH framing

**COLUMBIA**
Alternative names: US04, ON04US

Expand Down Expand Up @@ -744,7 +751,7 @@ The list is auto-generated by reading the SatYAML files and using the script ``d
* **1k2 AFSK downlink** (437.095 MHz): AFSK modulation with AX.25 framing

**EIRSAT-1**
NORAD ID: 99320
NORAD ID: 58472

Transmitters:

Expand Down Expand Up @@ -780,6 +787,15 @@ The list is auto-generated by reading the SatYAML files and using the script ``d

* **9k6 FSK downlink** (437.050 MHz): FSK modulation with AX.25 G3RUH framing

**ENSO**
Alternative names: ROBUSTA 1E

NORAD ID: 58470

Transmitters:

* **2k4 FSK downlink** (436.500 MHz): FSK modulation with AX.25 framing

**EntrySat**
NORAD ID: 44429

Expand Down Expand Up @@ -887,6 +903,13 @@ The list is auto-generated by reading the SatYAML files and using the script ``d

* **4k8 AFSK downlink** (436.400 MHz): AFSK modulation with U482C framing

**GALASSIA-2**
NORAD ID: 57486

Transmitters:

* **1k2 FSK downlink** (436.400 MHz): FSK modulation with AX100 ASM+Golay framing

**GASPACS**
NORAD ID: 51439

Expand Down Expand Up @@ -978,6 +1001,13 @@ The list is auto-generated by reading the SatYAML files and using the script ``d

* **9k6 FSK downlink** (437.175 MHz): FSK modulation with AX.25 G3RUH framing

**Hayasat**
NORAD ID: 99032

Transmitters:

* **9k6 FSK downlink** (437.020 MHz): FSK modulation with AX.25 G3RUH framing

**HSKSAT**
NORAD ID: 55182

Expand Down Expand Up @@ -1101,6 +1131,15 @@ The list is auto-generated by reading the SatYAML files and using the script ``d

* **9k6 FSK downlink** (436.915 MHz): FSK modulation with AX.25 G3RUH framing

**IRIS-C**
NORAD ID: 56221

Transmitters:

* **1k2 BPSK downlink** (436.915 MHz): BPSK modulation with AX.25 G3RUH framing
* **2k4 BPSK downlink** (436.915 MHz): BPSK modulation with AX.25 G3RUH framing
* **9k6 BPSK downlink** (436.915 MHz): BPSK modulation with AX.25 G3RUH framing

**IRVINE-01**
NORAD ID: 43693

Expand Down Expand Up @@ -1157,6 +1196,13 @@ The list is auto-generated by reading the SatYAML files and using the script ``d

* **1k2 BPSK downlink** (145.840 MHz): DBPSK modulation with AO-40 FEC framing

**KAFASAT**
NORAD ID: 58317

Transmitters:

* **1k2 FSK downlink** (435.835 MHz): FSK modulation with AX.25 G3RUH framing

**KAI-1**
Alternative names: KNRTU-KAI, KNITU-KAI, RS26S

Expand Down Expand Up @@ -1659,6 +1705,20 @@ The list is auto-generated by reading the SatYAML files and using the script ``d

* **9k6 FSK downlink** (437.475 MHz): FSK modulation with AX.25 G3RUH framing

**PEARL-1C**
NORAD ID: 58342

Transmitters:

* **9k6 FSK downlink** (435.310 MHz): FSK modulation with AX.25 G3RUH framing

**PEARL-1H**
NORAD ID: 58265

Transmitters:

* **9k6 FSK downlink** (435.390 MHz): FSK modulation with AX.25 G3RUH framing

**PHOENIX**
Alternative names: TW01, ON01TW

Expand Down Expand Up @@ -1852,6 +1912,13 @@ The list is auto-generated by reading the SatYAML files and using the script ``d

* **500baud FSK downlink** (436.235 MHz): FSK modulation with SanoSat framing

**SCOOB-II**
NORAD ID: 99057

Transmitters:

* **9k6 FSK downlink** (437.500 MHz): FSK modulation with AX.25 G3RUH framing

**SelfieSat**
NORAD ID: 53951

Expand Down Expand Up @@ -2605,6 +2672,20 @@ The list is auto-generated by reading the SatYAML files and using the script ``d

* **9k6 FSK downlink** (435.600 MHz): FSK modulation with AX.25 G3RUH framing

**VELOX-AM**
NORAD ID: 57482

Transmitters:

* **4k8 FSK downlink** (437.125 MHz): FSK modulation with AX100 ASM+Golay framing

**VERONIKA**
NORAD ID: 58261

Transmitters:

* **9k6 FSK downlink** (436.680 MHz): FSK modulation with AX.25 G3RUH framing

**VIZARD**
Alternative names: SXC3-215, RS33S

Expand Down
87 changes: 87 additions & 0 deletions examples/doppler_correction/tle_to_doppler_file.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
#!/usr/bin/env python3

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

import argparse
import datetime

import numpy as np
import scipy.constants
import skyfield.api
from skyfield.api import wgs84, EarthSatellite


DAY_S = 24 * 3600


ts = skyfield.api.load.timescale()


def parse_args():
parser = argparse.ArgumentParser(
description='Generates a Doppler file from a TLE')
parser.add_argument(
'--tle-file', required=True,
help='Input TLE file')
parser.add_argument(
'--output-file', required=True,
help='Ouptut text file')
parser.add_argument(
'--unix-timestamp', required=True, type=float,
help='Initial UNIX timestamp')
parser.add_argument(
'--time-step', default=0.1, type=float,
help='Time step (seconds) [default=%(default)r]')
parser.add_argument(
'--duration', default=15*60, type=float,
help='Doppler file duration (seconds) [default=%(default)r]')
parser.add_argument(
'--f-carrier', required=True, type=float,
help='Carrier frequency (Hz)')
parser.add_argument(
'--lat', required=True, type=float,
help='Groundstation latitude (degrees)')
parser.add_argument(
'--lon', required=True, type=float,
help='Groundstation longitude (degrees)')
parser.add_argument(
'--alt', default=0.0, type=float,
help='Groundstation altitude (meters) [default=%(default)r]')
return parser.parse_args()


def main():
args = parse_args()
with open(args.tle_file) as f:
lines = f.readlines()
if len(lines) == 3:
# drop first line (contains the name of the satellite)
lines = lines[1:]
if len(lines) != 2:
raise RuntimeError('TLE file must have either 2 or 3 lines')
unix_epoch = datetime.datetime(1970, 1, 1, tzinfo=skyfield.api.utc)
satellite = EarthSatellite(lines[0], lines[1], 'satellite', ts)
t0 = unix_epoch + datetime.timedelta(seconds=args.unix_timestamp)
t0 = ts.from_datetime(t0.replace(tzinfo=skyfield.api.utc))
t = t0 + np.arange(0, (args.duration + args.time_step) / DAY_S,
args.time_step / DAY_S)
t = ts.tai_jd([s.tai for s in t])
groundstation = wgs84.latlon(
args.lat, args.lon, args.alt)
topocentric = (satellite - groundstation).at(t)
range_rate = topocentric.frame_latlon_and_rates(
groundstation)[5].km_per_s * 1e3
doppler = - range_rate / scipy.constants.c * args.f_carrier
with open(args.output_file, 'w') as output_file:
for s, f in zip(t, doppler):
s = (s.utc_datetime() - unix_epoch).total_seconds()
print(f'{s}\t{f}', file=output_file)


if __name__ == '__main__':
main()
Loading

0 comments on commit 83b0aef

Please sign in to comment.