weaklink-modem 0.7.2__tar.gz → 0.7.3__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {weaklink_modem-0.7.2 → weaklink_modem-0.7.3}/PKG-INFO +6 -37
- {weaklink_modem-0.7.2 → weaklink_modem-0.7.3}/pyproject.toml +1 -1
- {weaklink_modem-0.7.2 → weaklink_modem-0.7.3}/readme-pypi.md +5 -36
- {weaklink_modem-0.7.2 → weaklink_modem-0.7.3}/LICENSE +0 -0
- {weaklink_modem-0.7.2 → weaklink_modem-0.7.3}/src/weaklink/modem/__init__.py +0 -0
- {weaklink_modem-0.7.2 → weaklink_modem-0.7.3}/src/weaklink/modem/api.py +0 -0
- {weaklink_modem-0.7.2 → weaklink_modem-0.7.3}/src/weaklink/modem/audio.py +0 -0
- {weaklink_modem-0.7.2 → weaklink_modem-0.7.3}/src/weaklink/modem/benchmark.py +0 -0
- {weaklink_modem-0.7.2 → weaklink_modem-0.7.3}/src/weaklink/modem/cli.py +0 -0
- {weaklink_modem-0.7.2 → weaklink_modem-0.7.3}/src/weaklink/modem/codec.py +0 -0
- {weaklink_modem-0.7.2 → weaklink_modem-0.7.3}/src/weaklink/modem/constants.py +0 -0
- {weaklink_modem-0.7.2 → weaklink_modem-0.7.3}/src/weaklink/modem/exceptions.py +0 -0
- {weaklink_modem-0.7.2 → weaklink_modem-0.7.3}/src/weaklink/modem/fec.py +0 -0
- {weaklink_modem-0.7.2 → weaklink_modem-0.7.3}/src/weaklink/modem/interleaver.py +0 -0
- {weaklink_modem-0.7.2 → weaklink_modem-0.7.3}/src/weaklink/modem/ptt.py +0 -0
- {weaklink_modem-0.7.2 → weaklink_modem-0.7.3}/src/weaklink/modem/py.typed +0 -0
- {weaklink_modem-0.7.2 → weaklink_modem-0.7.3}/src/weaklink/modem/rs.py +0 -0
- {weaklink_modem-0.7.2 → weaklink_modem-0.7.3}/src/weaklink/modem/streaming.py +0 -0
- {weaklink_modem-0.7.2 → weaklink_modem-0.7.3}/src/weaklink/modem/waveform.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: weaklink-modem
|
|
3
|
-
Version: 0.7.
|
|
3
|
+
Version: 0.7.3
|
|
4
4
|
Summary: N-FSK streaming modem for HF SSB and wider channels: Reed-Solomon framing, soft Viterbi, round-robin block repetition, byte-pipe semantics.
|
|
5
5
|
License: MIT
|
|
6
6
|
Author: ivica3730k
|
|
@@ -27,7 +27,7 @@ Project-URL: Homepage, https://github.com/ivica3730k/weaklink-9a3ice
|
|
|
27
27
|
Project-URL: Repository, https://github.com/ivica3730k/weaklink-9a3ice
|
|
28
28
|
Description-Content-Type: text/markdown
|
|
29
29
|
|
|
30
|
-
<!-- generated from README.md at tag v0.7.
|
|
30
|
+
<!-- generated from README.md at tag v0.7.3 by scripts/build_pypi_readme.py; do not hand-edit -->
|
|
31
31
|
|
|
32
32
|
# weaklink
|
|
33
33
|
|
|
@@ -37,7 +37,7 @@ with `tail -f`; no memory buffering, no wait-for-EOF. RS + convolutional
|
|
|
37
37
|
soft-LLR combining. Modes: **OOK (1-tone)** through **16-FSK**, at
|
|
38
38
|
**45 / 300 / 1200 baud**.
|
|
39
39
|
|
|
40
|
-

|
|
41
41
|
|
|
42
42
|
Distribution: `weaklink-modem` (PyPI + release binaries).
|
|
43
43
|
|
|
@@ -121,7 +121,7 @@ cross-baud comparison convention, not a physical channel filter.
|
|
|
121
121
|
|
|
122
122
|
Doubling `--modem-block-repeats` buys ~2–3 dB via soft-LLR combining
|
|
123
123
|
at proportional air time. Full sweep of every combo we test is in
|
|
124
|
-
[`results.md`](https://github.com/ivica3730k/weaklink-9a3ice/blob/v0.7.
|
|
124
|
+
[`results.md`](https://github.com/ivica3730k/weaklink-9a3ice/blob/v0.7.3/results.md).
|
|
125
125
|
|
|
126
126
|
### OOK / 1-tone mode
|
|
127
127
|
|
|
@@ -131,7 +131,7 @@ bandwidth of any mode (no tone stack — just the carrier and its
|
|
|
131
131
|
modulation sidelobes). Same 1 bit/symbol as 2-FSK but a few dB worse
|
|
132
132
|
in AWGN — the trade you make for the narrow spectrum. Cliff at
|
|
133
133
|
45 baud with `block_repeats=4`: ≈ −14 dB, matching 4-FSK at the same
|
|
134
|
-
settings. See [`results.md`](https://github.com/ivica3730k/weaklink-9a3ice/blob/v0.7.
|
|
134
|
+
settings. See [`results.md`](https://github.com/ivica3730k/weaklink-9a3ice/blob/v0.7.3/results.md) for the per-baud numbers.
|
|
135
135
|
|
|
136
136
|
### One tone at a time (constant envelope, any N)
|
|
137
137
|
|
|
@@ -142,37 +142,6 @@ transmitter emits exactly one sinusoid at any instant, hopping between
|
|
|
142
142
|
frequencies at the symbol clock. Constant envelope (PAPR = 3 dB, the
|
|
143
143
|
peak-to-RMS of a pure sine) regardless of N.
|
|
144
144
|
|
|
145
|
-
Time-frequency view of a 4-FSK burst — each column is one symbol,
|
|
146
|
-
each row is one of the 4 available frequencies:
|
|
147
|
-
|
|
148
|
-
```
|
|
149
|
-
freq
|
|
150
|
-
↑
|
|
151
|
-
F₃ │ . ▓ . . . ▓ . .
|
|
152
|
-
F₂ │ . . . ▓ . . . .
|
|
153
|
-
F₁ │ ▓ . . . . . ▓ .
|
|
154
|
-
F₀ │ . . ▓ . ▓ . . ▓
|
|
155
|
-
└────────────────────────→ time
|
|
156
|
-
s₀ s₁ s₂ s₃ s₄ s₅ s₆ s₇
|
|
157
|
-
|
|
158
|
-
Exactly one ▓ per column: at any instant, one tone at full amplitude.
|
|
159
|
-
Over 8 symbols the modem has visited all 4 slots (that's what you see
|
|
160
|
-
on an SDR waterfall over time), but never more than one at once.
|
|
161
|
-
```
|
|
162
|
-
|
|
163
|
-
vs. what parallel multi-tone (OFDM-style; **not** this modem) would do:
|
|
164
|
-
|
|
165
|
-
```
|
|
166
|
-
freq
|
|
167
|
-
↑
|
|
168
|
-
F₃ │ ▓ . ▓ ▓ . ▓ . ▓
|
|
169
|
-
F₂ │ . ▓ ▓ . ▓ . ▓ ▓ Multiple ▓ per column: N tones
|
|
170
|
-
F₁ │ ▓ ▓ . ▓ . ▓ ▓ . summed at each instant. PAPR grows
|
|
171
|
-
F₀ │ ▓ . ▓ . ▓ ▓ . ▓ with N (~10·log₁₀(N)).
|
|
172
|
-
└────────────────────────→ time
|
|
173
|
-
s₀ s₁ s₂ s₃ s₄ s₅ s₆ s₇
|
|
174
|
-
```
|
|
175
|
-
|
|
176
145
|
Why single-tone:
|
|
177
146
|
|
|
178
147
|
- **All transmit power in one tone at a time** — maximum per-symbol SNR, no `1/N` power split across a stack.
|
|
@@ -197,7 +166,7 @@ On an SDR waterfall you'll see all N frequency slots "lit up" during a long tran
|
|
|
197
166
|
## Full SNR sweep
|
|
198
167
|
|
|
199
168
|
Every baud × num_tones × RS × repeats combo is measured in
|
|
200
|
-
[`results.md`](https://github.com/ivica3730k/weaklink-9a3ice/blob/v0.7.
|
|
169
|
+
[`results.md`](https://github.com/ivica3730k/weaklink-9a3ice/blob/v0.7.3/results.md). Re-run `poetry run weaklink-modem-benchmark` to
|
|
201
170
|
refresh.
|
|
202
171
|
|
|
203
172
|
---
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[tool.poetry]
|
|
2
2
|
name = "weaklink-modem"
|
|
3
|
-
version = "0.7.
|
|
3
|
+
version = "0.7.3"
|
|
4
4
|
description = "N-FSK streaming modem for HF SSB and wider channels: Reed-Solomon framing, soft Viterbi, round-robin block repetition, byte-pipe semantics."
|
|
5
5
|
authors = ["ivica3730k"]
|
|
6
6
|
license = "MIT"
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<!-- generated from README.md at tag v0.7.
|
|
1
|
+
<!-- generated from README.md at tag v0.7.3 by scripts/build_pypi_readme.py; do not hand-edit -->
|
|
2
2
|
|
|
3
3
|
# weaklink
|
|
4
4
|
|
|
@@ -8,7 +8,7 @@ with `tail -f`; no memory buffering, no wait-for-EOF. RS + convolutional
|
|
|
8
8
|
soft-LLR combining. Modes: **OOK (1-tone)** through **16-FSK**, at
|
|
9
9
|
**45 / 300 / 1200 baud**.
|
|
10
10
|
|
|
11
|
-

|
|
12
12
|
|
|
13
13
|
Distribution: `weaklink-modem` (PyPI + release binaries).
|
|
14
14
|
|
|
@@ -92,7 +92,7 @@ cross-baud comparison convention, not a physical channel filter.
|
|
|
92
92
|
|
|
93
93
|
Doubling `--modem-block-repeats` buys ~2–3 dB via soft-LLR combining
|
|
94
94
|
at proportional air time. Full sweep of every combo we test is in
|
|
95
|
-
[`results.md`](https://github.com/ivica3730k/weaklink-9a3ice/blob/v0.7.
|
|
95
|
+
[`results.md`](https://github.com/ivica3730k/weaklink-9a3ice/blob/v0.7.3/results.md).
|
|
96
96
|
|
|
97
97
|
### OOK / 1-tone mode
|
|
98
98
|
|
|
@@ -102,7 +102,7 @@ bandwidth of any mode (no tone stack — just the carrier and its
|
|
|
102
102
|
modulation sidelobes). Same 1 bit/symbol as 2-FSK but a few dB worse
|
|
103
103
|
in AWGN — the trade you make for the narrow spectrum. Cliff at
|
|
104
104
|
45 baud with `block_repeats=4`: ≈ −14 dB, matching 4-FSK at the same
|
|
105
|
-
settings. See [`results.md`](https://github.com/ivica3730k/weaklink-9a3ice/blob/v0.7.
|
|
105
|
+
settings. See [`results.md`](https://github.com/ivica3730k/weaklink-9a3ice/blob/v0.7.3/results.md) for the per-baud numbers.
|
|
106
106
|
|
|
107
107
|
### One tone at a time (constant envelope, any N)
|
|
108
108
|
|
|
@@ -113,37 +113,6 @@ transmitter emits exactly one sinusoid at any instant, hopping between
|
|
|
113
113
|
frequencies at the symbol clock. Constant envelope (PAPR = 3 dB, the
|
|
114
114
|
peak-to-RMS of a pure sine) regardless of N.
|
|
115
115
|
|
|
116
|
-
Time-frequency view of a 4-FSK burst — each column is one symbol,
|
|
117
|
-
each row is one of the 4 available frequencies:
|
|
118
|
-
|
|
119
|
-
```
|
|
120
|
-
freq
|
|
121
|
-
↑
|
|
122
|
-
F₃ │ . ▓ . . . ▓ . .
|
|
123
|
-
F₂ │ . . . ▓ . . . .
|
|
124
|
-
F₁ │ ▓ . . . . . ▓ .
|
|
125
|
-
F₀ │ . . ▓ . ▓ . . ▓
|
|
126
|
-
└────────────────────────→ time
|
|
127
|
-
s₀ s₁ s₂ s₃ s₄ s₅ s₆ s₇
|
|
128
|
-
|
|
129
|
-
Exactly one ▓ per column: at any instant, one tone at full amplitude.
|
|
130
|
-
Over 8 symbols the modem has visited all 4 slots (that's what you see
|
|
131
|
-
on an SDR waterfall over time), but never more than one at once.
|
|
132
|
-
```
|
|
133
|
-
|
|
134
|
-
vs. what parallel multi-tone (OFDM-style; **not** this modem) would do:
|
|
135
|
-
|
|
136
|
-
```
|
|
137
|
-
freq
|
|
138
|
-
↑
|
|
139
|
-
F₃ │ ▓ . ▓ ▓ . ▓ . ▓
|
|
140
|
-
F₂ │ . ▓ ▓ . ▓ . ▓ ▓ Multiple ▓ per column: N tones
|
|
141
|
-
F₁ │ ▓ ▓ . ▓ . ▓ ▓ . summed at each instant. PAPR grows
|
|
142
|
-
F₀ │ ▓ . ▓ . ▓ ▓ . ▓ with N (~10·log₁₀(N)).
|
|
143
|
-
└────────────────────────→ time
|
|
144
|
-
s₀ s₁ s₂ s₃ s₄ s₅ s₆ s₇
|
|
145
|
-
```
|
|
146
|
-
|
|
147
116
|
Why single-tone:
|
|
148
117
|
|
|
149
118
|
- **All transmit power in one tone at a time** — maximum per-symbol SNR, no `1/N` power split across a stack.
|
|
@@ -168,7 +137,7 @@ On an SDR waterfall you'll see all N frequency slots "lit up" during a long tran
|
|
|
168
137
|
## Full SNR sweep
|
|
169
138
|
|
|
170
139
|
Every baud × num_tones × RS × repeats combo is measured in
|
|
171
|
-
[`results.md`](https://github.com/ivica3730k/weaklink-9a3ice/blob/v0.7.
|
|
140
|
+
[`results.md`](https://github.com/ivica3730k/weaklink-9a3ice/blob/v0.7.3/results.md). Re-run `poetry run weaklink-modem-benchmark` to
|
|
172
141
|
refresh.
|
|
173
142
|
|
|
174
143
|
---
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|