Skip to content

Commit 83b0aef

Browse files
committed
Merge branch 'main' into maint-3.10
2 parents 0fbccdd + 4861b80 commit 83b0aef

Some content is hidden

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

52 files changed

+1721
-100
lines changed

CHANGELOG.md

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

77
## Unreleased
88

9+
## [5.5.0], [4.12.0], [3.19.0] - 2023-12-28
10+
11+
### Added
12+
- Auto-Polarization Python block
13+
- --fm-deviation option to AFSK Demodulator
14+
- TLE to Doppler file Python script
15+
- HADES-D deframer and example decoder
16+
- Support for CLARKSAT-1
17+
- Support for ENSO
18+
- Support for GALASSIA-2
19+
- Support for Hayasat
20+
- Support for IRIS-C
21+
- Support for KAFASAT
22+
- Support for PEARL-1C and PEARL-1H
23+
- Support for SCOOB-II
24+
- Support for VELOX-AM
25+
- Support for VERONIKA
26+
27+
### Fixed
28+
- BME Telemetry Submitter GRC file
29+
- SNET Deframer GRC file typo
30+
- AF deviation in SALSAT SatYAML file
31+
- Added missing SanoSat Deframer GRC file
32+
33+
### Changed
34+
- Ported Manchester Sync block to C++
35+
- CPU usage improvement for Selector block
36+
- Final NORAD ID for EIRSAT-1
37+
938
## [5.4.0], [4.11.0], [3.18.0] - 2023-08-28
1039

1140
### Added
@@ -627,13 +656,15 @@ Large refactor release bringing new functionality and improvements. This is an o
627656
## [1.0.0] - 2018-08-02
628657
First gr-satellites release using semantic versioning
629658

630-
[Unreleased]: https://github.com/daniestevez/gr-satellites/compare/v5.4.0...main
659+
[Unreleased]: https://github.com/daniestevez/gr-satellites/compare/v5.5.0...main
660+
[5.5.0]: https://github.com/daniestevez/gr-satellites/compare/v5.4.0...v5.5.0
631661
[5.4.0]: https://github.com/daniestevez/gr-satellites/compare/v5.3.0...v5.4.0
632662
[5.3.0]: https://github.com/daniestevez/gr-satellites/compare/v5.2.0...v5.3.0
633663
[5.2.0]: https://github.com/daniestevez/gr-satellites/compare/v5.1.1...v5.2.0
634664
[5.1.1]: https://github.com/daniestevez/gr-satellites/compare/v5.1.0...v5.1.1
635665
[5.1.0]: https://github.com/daniestevez/gr-satellites/compare/v5.0.0...v5.1.0
636666
[5.0.0]: https://github.com/daniestevez/gr-satellites/compare/v4.6.0...v5.0.0
667+
[4.12.0]: https://github.com/daniestevez/gr-satellites/compare/v4.11.0...v4.12.0
637668
[4.11.0]: https://github.com/daniestevez/gr-satellites/compare/v4.10.0...v4.11.0
638669
[4.10.0]: https://github.com/daniestevez/gr-satellites/compare/v4.9.0...v4.10.0
639670
[4.9.0]: https://github.com/daniestevez/gr-satellites/compare/v4.8.1...v4.9.0
@@ -649,6 +680,7 @@ First gr-satellites release using semantic versioning
649680
[4.1.0]: https://github.com/daniestevez/gr-satellites/compare/v4.0.0...v4.1.0
650681
[4.0.0]: https://github.com/daniestevez/gr-satellites/compare/v4.0.0-rc1...v4.0.0
651682
[4.0.0-rc1]: https://github.com/daniestevez/gr-satellites/compare/v3.7.0...v4.0.0-rc1
683+
[3.19.0]: https://github.com/daniestevez/gr-satellites/compare/v3.18.0...v3.19.0
652684
[3.18.0]: https://github.com/daniestevez/gr-satellites/compare/v3.17.0...v3.18.0
653685
[3.17.0]: https://github.com/daniestevez/gr-satellites/compare/v3.16.0...v3.17.0
654686
[3.16.0]: https://github.com/daniestevez/gr-satellites/compare/v3.15.1...v3.16.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 4)
46+
set(VERSION_API 5)
4747
set(VERSION_ABI 0)
4848
set(VERSION_PATCH 0)
4949

debian/changelog

+12
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,15 @@
1+
gr-satellites (5.5.0-1) mantic; urgency=medium
2+
3+
* Mainstream release v5.5.0
4+
5+
-- <[email protected]> Thu, 28 Dec 2023 15:00:00 +0000
6+
7+
gr-satellites (5.5.0-0) jammy; urgency=medium
8+
9+
* Mainstream release v5.5.0
10+
11+
-- <[email protected]> Thu, 28 Dec 2023 15:00:00 +0000
12+
113
gr-satellites (5.4.0-1) kinetic; urgency=medium
214

315
* Mainstream release v5.4.0

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

3131

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

docs/source/satyaml.rst

+3-1
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,9 @@ The modulations allowed in the ``modulation`` field are the following:
109109
``True`` is used to perform non-coherent demodulation
110110

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

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

docs/source/supported_satellites.rst

+82-1
Original file line numberDiff line numberDiff line change
@@ -495,6 +495,13 @@ The list is auto-generated by reading the SatYAML files and using the script ``d
495495
* **9k6 FSK downlink** (437.250 MHz): FSK modulation with AX.25 G3RUH framing
496496
* **19k2 FSK downlink** (437.250 MHz): FSK modulation with AX.25 G3RUH framing
497497

498+
**CLARKSAT-1**
499+
NORAD ID: 58613
500+
501+
Transmitters:
502+
503+
* **4k8 G3RUH FSK downlink** (435.130 MHz): FSK modulation with AX.25 G3RUH framing
504+
498505
**COLUMBIA**
499506
Alternative names: US04, ON04US
500507

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

746753
**EIRSAT-1**
747-
NORAD ID: 99320
754+
NORAD ID: 58472
748755

749756
Transmitters:
750757

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

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

790+
**ENSO**
791+
Alternative names: ROBUSTA 1E
792+
793+
NORAD ID: 58470
794+
795+
Transmitters:
796+
797+
* **2k4 FSK downlink** (436.500 MHz): FSK modulation with AX.25 framing
798+
783799
**EntrySat**
784800
NORAD ID: 44429
785801

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

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

906+
**GALASSIA-2**
907+
NORAD ID: 57486
908+
909+
Transmitters:
910+
911+
* **1k2 FSK downlink** (436.400 MHz): FSK modulation with AX100 ASM+Golay framing
912+
890913
**GASPACS**
891914
NORAD ID: 51439
892915

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

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

1004+
**Hayasat**
1005+
NORAD ID: 99032
1006+
1007+
Transmitters:
1008+
1009+
* **9k6 FSK downlink** (437.020 MHz): FSK modulation with AX.25 G3RUH framing
1010+
9811011
**HSKSAT**
9821012
NORAD ID: 55182
9831013

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

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

1134+
**IRIS-C**
1135+
NORAD ID: 56221
1136+
1137+
Transmitters:
1138+
1139+
* **1k2 BPSK downlink** (436.915 MHz): BPSK modulation with AX.25 G3RUH framing
1140+
* **2k4 BPSK downlink** (436.915 MHz): BPSK modulation with AX.25 G3RUH framing
1141+
* **9k6 BPSK downlink** (436.915 MHz): BPSK modulation with AX.25 G3RUH framing
1142+
11041143
**IRVINE-01**
11051144
NORAD ID: 43693
11061145

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

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

1199+
**KAFASAT**
1200+
NORAD ID: 58317
1201+
1202+
Transmitters:
1203+
1204+
* **1k2 FSK downlink** (435.835 MHz): FSK modulation with AX.25 G3RUH framing
1205+
11601206
**KAI-1**
11611207
Alternative names: KNRTU-KAI, KNITU-KAI, RS26S
11621208

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

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

1708+
**PEARL-1C**
1709+
NORAD ID: 58342
1710+
1711+
Transmitters:
1712+
1713+
* **9k6 FSK downlink** (435.310 MHz): FSK modulation with AX.25 G3RUH framing
1714+
1715+
**PEARL-1H**
1716+
NORAD ID: 58265
1717+
1718+
Transmitters:
1719+
1720+
* **9k6 FSK downlink** (435.390 MHz): FSK modulation with AX.25 G3RUH framing
1721+
16621722
**PHOENIX**
16631723
Alternative names: TW01, ON01TW
16641724

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

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

1915+
**SCOOB-II**
1916+
NORAD ID: 99057
1917+
1918+
Transmitters:
1919+
1920+
* **9k6 FSK downlink** (437.500 MHz): FSK modulation with AX.25 G3RUH framing
1921+
18551922
**SelfieSat**
18561923
NORAD ID: 53951
18571924

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

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

2675+
**VELOX-AM**
2676+
NORAD ID: 57482
2677+
2678+
Transmitters:
2679+
2680+
* **4k8 FSK downlink** (437.125 MHz): FSK modulation with AX100 ASM+Golay framing
2681+
2682+
**VERONIKA**
2683+
NORAD ID: 58261
2684+
2685+
Transmitters:
2686+
2687+
* **9k6 FSK downlink** (436.680 MHz): FSK modulation with AX.25 G3RUH framing
2688+
26082689
**VIZARD**
26092690
Alternative names: SXC3-215, RS33S
26102691

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
#!/usr/bin/env python3
2+
3+
# Copyright 2023 Daniel Estevez <[email protected]>
4+
#
5+
# This file is part of gr-satellites
6+
#
7+
# SPDX-License-Identifier: GPL-3.0-or-later
8+
#
9+
10+
import argparse
11+
import datetime
12+
13+
import numpy as np
14+
import scipy.constants
15+
import skyfield.api
16+
from skyfield.api import wgs84, EarthSatellite
17+
18+
19+
DAY_S = 24 * 3600
20+
21+
22+
ts = skyfield.api.load.timescale()
23+
24+
25+
def parse_args():
26+
parser = argparse.ArgumentParser(
27+
description='Generates a Doppler file from a TLE')
28+
parser.add_argument(
29+
'--tle-file', required=True,
30+
help='Input TLE file')
31+
parser.add_argument(
32+
'--output-file', required=True,
33+
help='Ouptut text file')
34+
parser.add_argument(
35+
'--unix-timestamp', required=True, type=float,
36+
help='Initial UNIX timestamp')
37+
parser.add_argument(
38+
'--time-step', default=0.1, type=float,
39+
help='Time step (seconds) [default=%(default)r]')
40+
parser.add_argument(
41+
'--duration', default=15*60, type=float,
42+
help='Doppler file duration (seconds) [default=%(default)r]')
43+
parser.add_argument(
44+
'--f-carrier', required=True, type=float,
45+
help='Carrier frequency (Hz)')
46+
parser.add_argument(
47+
'--lat', required=True, type=float,
48+
help='Groundstation latitude (degrees)')
49+
parser.add_argument(
50+
'--lon', required=True, type=float,
51+
help='Groundstation longitude (degrees)')
52+
parser.add_argument(
53+
'--alt', default=0.0, type=float,
54+
help='Groundstation altitude (meters) [default=%(default)r]')
55+
return parser.parse_args()
56+
57+
58+
def main():
59+
args = parse_args()
60+
with open(args.tle_file) as f:
61+
lines = f.readlines()
62+
if len(lines) == 3:
63+
# drop first line (contains the name of the satellite)
64+
lines = lines[1:]
65+
if len(lines) != 2:
66+
raise RuntimeError('TLE file must have either 2 or 3 lines')
67+
unix_epoch = datetime.datetime(1970, 1, 1, tzinfo=skyfield.api.utc)
68+
satellite = EarthSatellite(lines[0], lines[1], 'satellite', ts)
69+
t0 = unix_epoch + datetime.timedelta(seconds=args.unix_timestamp)
70+
t0 = ts.from_datetime(t0.replace(tzinfo=skyfield.api.utc))
71+
t = t0 + np.arange(0, (args.duration + args.time_step) / DAY_S,
72+
args.time_step / DAY_S)
73+
t = ts.tai_jd([s.tai for s in t])
74+
groundstation = wgs84.latlon(
75+
args.lat, args.lon, args.alt)
76+
topocentric = (satellite - groundstation).at(t)
77+
range_rate = topocentric.frame_latlon_and_rates(
78+
groundstation)[5].km_per_s * 1e3
79+
doppler = - range_rate / scipy.constants.c * args.f_carrier
80+
with open(args.output_file, 'w') as output_file:
81+
for s, f in zip(t, doppler):
82+
s = (s.utc_datetime() - unix_epoch).total_seconds()
83+
print(f'{s}\t{f}', file=output_file)
84+
85+
86+
if __name__ == '__main__':
87+
main()

0 commit comments

Comments
 (0)