Skip to content

Commit 6141143

Browse files
committed
Improvements to morse app
1 parent 286e876 commit 6141143

File tree

1 file changed

+28
-8
lines changed

1 file changed

+28
-8
lines changed

src/instrumentman/morse.py

Lines changed: 28 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@
44
from geocompy import open_serial, GeoCom
55

66

7-
def morse_beep(tps: GeoCom, message: str, intensity: int) -> None:
8-
def letter_beep(tps: GeoCom, letter: str, intensity: int) -> None:
7+
def morse_beep(tps: GeoCom, args: argparse.Namespace) -> None:
8+
def letter_beep(letter: str) -> None:
99
lookup = {
1010
"a": ".-",
1111
"b": "-...",
@@ -46,21 +46,27 @@ def letter_beep(tps: GeoCom, letter: str, intensity: int) -> None:
4646
}
4747
code = lookup[letter]
4848
for i, signal in enumerate(code):
49-
tps.bmm.beep_on(intensity)
49+
beepstart(intensity)
5050
match signal:
5151
case ".":
5252
sleep(unit)
5353
case "-":
5454
sleep(unit * 3)
55-
tps.bmm.beep_off()
55+
beepstop()
5656
if i != len(code) - 1:
5757
sleep(unit)
5858

59-
unit = 0.05
60-
words = message.lower().split(" ")
59+
unit = args.unit * 1e-3
60+
intensity = args.intensity
61+
beepstart = tps.bmm.beep_start
62+
beepstop = tps.bmm.beep_stop
63+
if args.compatibility == "TPS1000":
64+
beepstart = tps.bmm.beep_on
65+
beepstop = tps.bmm.beep_off
66+
words = args.message.lower().split(" ")
6167
for i, word in enumerate(words):
6268
for j, letter in enumerate(word):
63-
letter_beep(tps, letter, intensity)
69+
letter_beep(letter)
6470

6571
if j != len(word) - 1:
6672
sleep(unit * 3)
@@ -72,7 +78,7 @@ def letter_beep(tps: GeoCom, letter: str, intensity: int) -> None:
7278
def main(args: argparse.Namespace) -> None:
7379
with open_serial(args.port, speed=args.baud, timeout=args.timeout) as com:
7480
ts = GeoCom(com)
75-
morse_beep(ts, args.message, args.intensity)
81+
morse_beep(ts, args)
7682

7783

7884
def cli() -> argparse.ArgumentParser:
@@ -100,6 +106,20 @@ def cli() -> argparse.ArgumentParser:
100106
type=int,
101107
default=15
102108
)
109+
parser.add_argument(
110+
"-u",
111+
"--unit",
112+
help="beep unit time in milliseconds",
113+
type=int,
114+
default=50
115+
)
116+
parser.add_argument(
117+
"-c",
118+
"--compatibility",
119+
help="instrument compatibility mode",
120+
type=str,
121+
choices=["TPS1000"]
122+
)
103123
parser.add_argument("intensity", help="beep intensity [1-100]", type=int)
104124
parser.add_argument("message", help="message to encode", type=str)
105125

0 commit comments

Comments
 (0)