3232
3333# Signal handler to stop pinging on the Omniscan450
3434def signal_handler (sig , frame ):
35- print ("Stopping pinging on Omniscan450..." )
35+ print ("\n Stopping pinging on Omniscan450..." )
3636 myOmniscan450 .control_os_ping_params (enable = 0 )
3737 if myOmniscan450 .iodev :
3838 try :
@@ -50,14 +50,21 @@ def signal_handler(sig, frame):
5050new_log = False
5151log_path = ""
5252replay_path = None
53+ default_dir = Path ("logs/omniscan" ).resolve ()
5354if args .log is not None :
5455 if args .log is True :
5556 # Logging to default directory
56- myOmniscan450 = Omniscan450 (logging = True )
57- print (f"Logging to new file: { myOmniscan450 .current_log } " )
57+ default_dir .mkdir (parents = True , exist_ok = True )
58+ myOmniscan450 = Omniscan450 (logging = True , log_directory = default_dir )
59+ print (f"Logging to new file in: { default_dir } " )
5860 new_log = True
5961 elif isinstance (args .log , str ):
60- log_path = Path (args .log ).expanduser ().resolve ()
62+ log_path = Path (args .log ).expanduser ()
63+
64+ if log_path .suffix == ".svlog" and log_path .parent == Path ("." ):
65+ log_path = default_dir / log_path .name
66+
67+ log_path = log_path .resolve ()
6168
6269 if log_path .suffix == ".svlog" :
6370 if log_path .exists () and log_path .is_file ():
@@ -66,7 +73,6 @@ def signal_handler(sig, frame):
6673 myOmniscan450 = Omniscan450 (logging = False )
6774 replay_path = log_path
6875 print (f"Replaying from: { replay_path } " )
69- # TODO add default path logic
7076 else :
7177 raise FileNotFoundError (f"Log file not found: { log_path } " )
7278
@@ -78,8 +84,6 @@ def signal_handler(sig, frame):
7884
7985 else :
8086 raise ValueError (f"Invalid log argument: { args .log } " )
81- else :
82- log_filename = None
8387
8488if args .device is not None :
8589 myOmniscan450 .connect_serial (args .device , args .baudrate )
@@ -95,8 +99,8 @@ def signal_handler(sig, frame):
9599 print ("Failed to initialize Omniscan450!" )
96100 exit (1 )
97101
98- data1 = myOmniscan450 .get_device_information ()
99- print ("Device type: %s" % data1 [ " device_type" ] )
102+ data1 = myOmniscan450 .readDeviceInformation ()
103+ print ("Device type: %s" % data1 . device_type )
100104
101105print ("------------------------------------" )
102106print ("Starting Omniscan450.." )
@@ -109,43 +113,21 @@ def signal_handler(sig, frame):
109113if args .log is not None and not new_log :
110114 with open (log_path , 'rb' ) as f :
111115 while True :
112- start_bytes = f .read (2 )
113- if len (start_bytes ) < 2 :
114- break # EOF
115-
116- if start_bytes != b'BR' :
117- print ("Invalid start bytes. Skipping..." )
118- continue
119-
120- header = f .read (6 )
121- if len (header ) < 6 :
122- print ("Incomplete header. Ending replay." )
123- break
124-
125- payload_length = int .from_bytes (header [0 :2 ], 'little' )
126- total_len = 2 + 2 + 2 + 2 + payload_length + 2 # BR + num payload bytes + packet id + reserved + payload + checksum
127-
128- remaining = payload_length + 2
129- rest = f .read (remaining )
116+ data = Omniscan450 .read_packet (f )
130117
131- if len (rest ) < remaining :
132- print ("Incomplete payload or checksum. Ending replay." )
133-
134- msg_bytes = start_bytes + header + rest
135- data = PingMessage (msg_data = msg_bytes )
118+ if data == None :
119+ break # EOF or bad packet
136120
137- # print(data)
121+ if data .message_id == definitions .OMNISCAN450_OS_MONO_PROFILE :
122+ # print(data)
138123
139- # Printing the same results as if directly connected to the Omniscan
140- scaled_result = Omniscan450 .scale_power (data )
141- # for i in range(len(scaled_result)):
142- # print(f"{i+1}: Raw: {data.pwr_results[i]}\tScaled: {scaled_result[i]}dB")
143- print (f"Min power: { data .min_pwr_db } dB" )
144- print (f"Max power: { data .max_pwr_db } dB" )
145- print (f"Average power: { sum (scaled_result ) / len (scaled_result )} " )
146-
147- raw_bytes = f .read ()
148- data = PingMessage (msg_data = raw_bytes )
124+ # Printing the same results as if directly connected to the Omniscan
125+ scaled_result = Omniscan450 .scale_power (data )
126+ # for i in range(len(scaled_result)):
127+ # print(f"{i+1}: Raw: {data.pwr_results[i]}\tScaled: {scaled_result[i]}dB")
128+ # print(f"Min power: {data.min_pwr_db} dB")
129+ # print(f"Max power: {data.max_pwr_db} dB")
130+ print (f"Average power: { sum (scaled_result ) / len (scaled_result )} " )
149131
150132# Connected to physical omniscan
151133else :
@@ -186,18 +168,22 @@ def signal_handler(sig, frame):
186168 # )
187169
188170 # View power results
189- while True :
190- data = myOmniscan450 .wait_message ([definitions .OMNISCAN450_OS_MONO_PROFILE ])
191- if data :
192- print ("Message Recieved" )
193- # scaled_result = Omniscan450.scale_power(data)
194- # for i in range(len(scaled_result)):
195- # print(f"{i+1}: Raw: {data.pwr_results[i]}\tScaled: {scaled_result[i]}dB")
196- # print(f"Min power: {data.min_pwr_db} dB")
197- # print(f"Max power: {data.max_pwr_db} dB")
198-
199- else :
200- print ("Failed to get report" )
171+ if new_log :
172+ print ("Logging...\n CTRL+C to stop logging" )
173+ try :
174+ while True :
175+ data = myOmniscan450 .wait_message ([definitions .OMNISCAN450_OS_MONO_PROFILE ])
176+ if data and not new_log :
177+ pass
178+ scaled_result = Omniscan450 .scale_power (data )
179+ for i in range (len (scaled_result )):
180+ print (f"{ i + 1 } : Raw: { data .pwr_results [i ]} \t Scaled: { scaled_result [i ]} dB" )
181+ print (f"Min power: { data .min_pwr_db } dB" )
182+ print (f"Max power: { data .max_pwr_db } dB" )
183+ elif not data :
184+ print ("Failed to get report" )
185+ except KeyboardInterrupt :
186+ print ("Stopping logging..." )
201187
202188 # Disable pinging and close socket
203189 myOmniscan450 .control_os_ping_params (enable = 0 )
@@ -206,9 +192,3 @@ def signal_handler(sig, frame):
206192 myOmniscan450 .iodev .close ()
207193 except Exception as e :
208194 print (f"Failed to close socket: { e } " )
209-
210- if new_log :
211- os .makedirs ("logs/omniscan" , exist_ok = True )
212- log_path = os .path .join ("logs/omniscan" , log_filename )
213- with open (log_path , 'ab' ) as f :
214- f .write (data .msg_data )
0 commit comments