diff options
author | Dimitri Stolnikov <horiz0n@gmx.net> | 2014-05-03 22:25:23 +0200 |
---|---|---|
committer | Dimitri Stolnikov <horiz0n@gmx.net> | 2014-11-25 20:47:59 +0100 |
commit | aa4094b3fd103a5b7fbcd3b8a0e225cfe70a6c6f (patch) | |
tree | 14d075a6fc39e9438bde344e74f795dbac817760 /grc | |
parent | da27f3fb0a614c2cb9f5f867be8df77f53058f28 (diff) |
introduce time & clock synchronisation APIs
Diffstat (limited to 'grc')
-rw-r--r-- | grc/gen_osmosdr_blocks.py | 97 |
1 files changed, 96 insertions, 1 deletions
diff --git a/grc/gen_osmosdr_blocks.py b/grc/gen_osmosdr_blocks.py index a10c871..07d9d79 100644 --- a/grc/gen_osmosdr_blocks.py +++ b/grc/gen_osmosdr_blocks.py @@ -26,7 +26,24 @@ MAIN_TMPL = """\ <category>$($sourk.title())s</category> <throttle>1</throttle> <import>import osmosdr</import> + <import>import time</import> <make>osmosdr.$(sourk)( args="numchan=" + str(\$nchan) + " " + \$args ) +#for $m in range($max_mboards) +######################################################################## +\#if \$num_mboards() > $m and \$clock_source$(m)() +self.\$(id).set_clock_source(\$clock_source$(m), $m) +\#end if +######################################################################## +\#if \$num_mboards() > $m and \$time_source$(m)() +self.\$(id).set_time_source(\$time_source$(m), $m) +\#end if +######################################################################## +#end for +\#if \$sync() == 'sync' +self.\$(id).set_time_unknown_pps(osmosdr.time_spec_t()) +\#elif \$sync() == 'pc_clock' +self.\$(id).set_time_now(osmosdr.time_spec_t(time.time()), osmosdr.ALL_MBOARDS) +\#end if self.\$(id).set_sample_rate(\$sample_rate) #for $n in range($max_nchan) \#if \$nchan() > $n @@ -84,6 +101,79 @@ self.\$(id).set_bandwidth(\$bw$(n), $n) </hide> </param> <param> + <name>Sync</name> + <key>sync</key> + <value></value> + <type>enum</type> + <hide>\#if \$sync() then 'none' else 'part'#</hide> + <option> + <name>unknown PPS</name> + <key>sync</key> + </option> + <option> + <name>PC Clock</name> + <key>pc_clock</key> + </option> + <option> + <name>don't sync</name> + <key></key> + </option> + </param> + <param> + <name>Num Mboards</name> + <key>num_mboards</key> + <value>1</value> + <type>int</type> + <hide>part</hide> + #for $m in range(1, $max_mboards+1) + <option> + <name>$(m)</name> + <key>$m</key> + </option> + #end for + </param> + #for $m in range($max_mboards) + <param> + <name>Mb$(m): Clock Source</name> + <key>clock_source$(m)</key> + <value></value> + <type>string</type> + <hide> + \#if not \$num_mboards() > $m + all + \#elif \$clock_source$(m)() + none + \#else + part + \#end if + </hide> + <option><name>Default</name><key></key></option> + <option><name>Internal</name><key>internal</key></option> + <option><name>External</name><key>external</key></option> + <option><name>MIMO Cable</name><key>mimo</key></option> + <option><name>O/B GPSDO</name><key>gpsdo</key></option> + </param> + <param> + <name>Mb$(m): Time Source</name> + <key>time_source$(m)</key> + <value></value> + <type>string</type> + <hide> + \#if not \$num_mboards() > $m + all + \#elif \$time_source$(m)() + none + \#else + part + \#end if + </hide> + <option><name>Default</name><key></key></option> + <option><name>External</name><key>external</key></option> + <option><name>MIMO Cable</name><key>mimo</key></option> + <option><name>O/B GPSDO</name><key>gpsdo</key></option> + </param> + #end for + <param> <name>Num Channels</name> <key>nchan</key> <value>1</value> @@ -104,6 +194,9 @@ self.\$(id).set_bandwidth(\$bw$(n), $n) $params <check>$max_nchan >= \$nchan</check> <check>\$nchan > 0</check> + <check>$max_mboards >= \$num_mboards</check> + <check>\$num_mboards > 0</check> + <check>\$nchan >= \$num_mboards</check> <$sourk> <name>$dir</name> <type>\$type.type</type> @@ -351,7 +444,8 @@ def parse_tmpl(_tmpl, **kwargs): from Cheetah import Template return str(Template.Template(_tmpl, kwargs)) -max_num_channels = 5 +max_num_mboards = 8 +max_num_channels = max_num_mboards*4 import os.path @@ -379,6 +473,7 @@ if __name__ == '__main__': params = ''.join([parse_tmpl(PARAMS_TMPL, n=n, sourk=sourk) for n in range(max_num_channels)]) open(file, 'w').write(parse_tmpl(MAIN_TMPL, max_nchan=max_num_channels, + max_mboards=max_num_mboards, params=params, title=title, prefix=prefix, |