#!/usr/bin/env python3 from perseus.client import ModuleClient import sys, time # # This is the de_test version of om-init.py 21-Dec-2025 # # Initializes the clock generator, ADC, and trigger system. At the end, # will print some statistics from the ADC for sanity-check purposes. # # Run as: python om-init.py discokraken_XXXXXX.local m = ModuleClient(sys.argv[1]) m.tuber_resolve() print('Initializing clocks') m.timing.init_ad9546() #if m.timing.status()['ref_status']['B']['flags'] == ['valid']: if m.timing.status()['ref_status']['B'] == ['valid']: start_time = time.time() while time.time() - start_time < 120: time.sleep(2) skew = m.timing.skew() print(skew) if skew != 0 and abs(skew) < 10: break print('Final skew:', skew) else: print('No timing SFP installed! Operating in standalone mode') print('Initializing DAQ') try: m.adc.init() if not m.adc.rx_status()['global_aligned']: time.sleep(1) m.adc.init() except: print(m.adc.rx_status()) raise print('RX status:') rxstat = m.adc.rx_status() print(rxstat) print('Aligned: ', rxstat['global_aligned']) if not rxstat['global_aligned']: raise RuntimeError('ADC initialization failed') time.sleep(2) t = m.trigger print('Running for %.2f seconds' % (t.current_sample()/208.33333e6)) print('Mean: ', t.channel_means(100)) print('RMS: ', t.channel_rms(100)) print(t.timecode_sync_data())