Skip to content

Commit f2ba60a

Browse files
committed
[morse] added logging
1 parent 32bbbc5 commit f2ba60a

File tree

1 file changed

+21
-3
lines changed

1 file changed

+21
-3
lines changed

src/instrumentman/morse/app.py

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
from time import sleep
22
from typing import Callable, Any
3+
from logging import Logger, getLogger
34

45
from rich.progress import Progress, TextColumn, BarColumn, TaskProgressColumn
56

@@ -73,7 +74,7 @@ def encode_message(
7374
message: str
7475
) -> str:
7576
words: list[str] = []
76-
for word in message.lower().split(" "):
77+
for word in message.casefold().split(" "):
7778
w: list[str] = []
7879
for letter in word:
7980
w.append("|".join(MORSE_TABLE.get(letter, "")))
@@ -84,12 +85,16 @@ def encode_message(
8485

8586

8687
def relay_message(
88+
logger: Logger,
8789
beepstart: Callable[[], Any],
8890
beepstop: Callable[[], Any],
8991
message: str,
9092
unittime: float
9193
) -> None:
94+
logger.info(f"Starting morse message: '{message}'")
9295
encoded = encode_message(message)
96+
logger.info("Message encoded")
97+
logger.info("Relaying message...")
9398
with Progress(
9499
TextColumn("[progress.description]{task.description}"),
95100
BarColumn(),
@@ -116,6 +121,9 @@ def relay_message(
116121
f"Invalid morse stream character: '{char}'"
117122
)
118123

124+
echo_green("Message complete")
125+
logger.info("Message complete")
126+
119127

120128
def main(
121129
port: str,
@@ -129,34 +137,44 @@ def main(
129137
unittime: int = 50,
130138
compatibility: str = "none",
131139
) -> None:
140+
logger = getLogger("iman.morse")
132141
if not ignore_non_ascii:
133142
try:
134143
message.casefold().encode("ascii")
135144
except UnicodeEncodeError:
136145
echo_red("The message contains non-ASCII characters.")
146+
logger.critical("Message contains non-ASCII characters.")
137147
exit(1)
138148

149+
logger.info(f"Opening connection on {port}")
150+
logger.debug(
151+
f"Connection parameters: baud={baud:d}, timeout={timeout:d}, "
152+
f"tries={retry:d}, sync-after-timeout={str(sync_after_timeout)}"
153+
)
139154
with open_serial(
140155
port,
141156
speed=baud,
142157
timeout=timeout,
143158
retry=retry,
144159
sync_after_timeout=sync_after_timeout
145160
) as com:
146-
tps = GeoCom(com)
161+
tps = GeoCom(com, logger.getChild("instrument"))
147162
beepstart = tps.bmm.beep_start
148163
beepstop = tps.bmm.beep_stop
149164
match compatibility.lower():
150165
case "tps1000":
166+
logger.debug(f"Running with '{compatibility}' compatibility")
151167
beepstart = tps.bmm.beep_on
152168
beepstop = tps.bmm.beep_off
153169
case "none":
154170
pass
155171

156172
relay_message(
173+
logger,
157174
lambda: beepstart(intensity),
158175
beepstop,
159176
message,
160177
unittime * 1e-3
161178
)
162-
echo_green("Message complete.")
179+
180+
logger.info(f"Closed connection on {port}")

0 commit comments

Comments
 (0)