44from 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:
7278def 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
7884def 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