#!/usr/bin/env python3 # Note: this utility can run under python2.7 or python3 program = 'vdifd' author = 'Walter Brisken' version = '0.8' verdate = '20211004' from os import system from sys import exit, argv def printVersion(): print('%s ver. %s %s %s' % (program, version, author, verdate)) def usage(): print('') printVersion() print('') print('A VDIF decoder for multi-thread, single channel VDIF data. Uses vmux') print('and m5d to do the heavy lifting.\n') print('Usage : %s [ [] ]\n' % program) print(' is the name of the VDIF file\n') print(' is the size of each input VDIF frame, inc. header (e.g., 5032)\n') print(' is the stream data rate (Mbps)\n') print(' is the number of samples per channel to decode\n') print(' optionally jump into input file by this many bytes\n') print(' is number of bits per sample (default is 2)\n') if '--version' in argv: printVersion() exit() if len(argv) < 6: usage() exit() infile = argv[1] framesize = int(argv[2]) datarate = int(argv[3]) threadlist = argv[4] nt = len(threadlist.split(',')) n = int(argv[5]) if len(argv) > 6: offset = int(argv[6]) else: offset = 0 if len(argv) > 7: nbit = int(argv[7]) else: nbit = 2 nc = 1 while(nc < nt): nc *= 2 outputpayload = nc*(framesize-32) framespersecond = (datarate*1000000)//(nt*(framesize-32)*8) outputdatarate = outputpayload*framespersecond*8//1000000 cmd = 'vmux %s %d %d %s - %d | m5d - VDIF_%d-%d-%d-%d %d' % (infile, framesize, framespersecond, threadlist, offset, outputpayload, outputdatarate, nc, nbit, n) print('Executing: %s' % cmd) system(cmd)