startmacro/ps=2m u:device[pic1iia] a:mode[USD] d:freq[2e6]

res rate 104e6
res dec  12
res nfft 2k
res psz  32k

if mode eqs "USD" then
 res flg "XPPC=^mode,MUXCLK=P,TCLK=105000000|CPC=2"
elseif mode eqs "HLY" then
 res flg "MUXCLK=N,CPC=1,OVSR=2"
 res rate 10e6
else
 res flg "PPC=^mode,MUXCLK=N,TCLK=105000000|CPC=2"
endif

res crate rate/dec/2
res orate rate/dec
res frep freq+1e3
res skp 50
if mode eqs "CSD1" then res flg "IOC=IO|^flg"

pic/round=psz create wbfile si rate rate
pic/round=psz create nafile ci crate crate
pic/round=psz create nbfile ci crate crate
pic/round=psz create ncfile ci crate crate
pic/round=psz create ndfile ci crate crate
pic/round=psz create cafile ci crate crate
pic/round=psz create cbfile ci crate crate
pic/round=psz create ctfile ci crate crate

if /noreset le 0
 picd/flags=(^flg) reset ^device
endif

xpipe/setup/nw=256 on

if /nowb le 0
  ! wideband data source
  sourcepic/wb=6/port=module1/flags=(^flg)/host=n wbfile(fs=nfft) _wb ^device skp*16 
endif

  ! other data sources
if mode eqs "CSD1" then
  sourcepic/wb=1/port=tuner1/flags=(NODMA|^flg)/replay=0/master=2002/timeout=1000 nafile(fs=nfft) _na ^device dec freq 
  sourcepic/wb=2/port=tuner9/flags=(NODMA|^flg)/replay=0/slave=ss/master=3002/timeout=1000 nbfile(fs=nfft) _nb ^device dec frep 
  sourcepic/wb=3/port=core11/flags=(IPORT=TUNER1|^flg)/slave=ss/master=5002 cafile(fs=nfft) _ca(ps=16m) ^device   1    0 
  sinkpic/wb=4/port=module2/flags=(MUXCLK=P)/replay=0/throttle=4/bits=16/srate=crate*6 _ca(fs=0) ctfile                        
  sourcepic/wb=5/port=core12/flags=(^flg)/slave cbfile(fs=nfft) _cb ^device   1    0 

elseif mode eqs "CSD2" then
  sourcepic/wb=1/port=tuner1  nafile{fs=nfft} _na ^device dec freq /flags=(NODMA|^flg) /slave /master=snb /timeout=1000
  sourcepic/wb=2/port=tuner9  nbfile{fs=nfft} _nb ^device dec frep /flags=(NODMA|^flg) /slave /master=snc /timeout=1000
  sourcepic/wb=3/port=tuner2  ncfile{fs=nfft} _nc ^device dec freq /flags=(NODMA|^flg) /slave /master=snd /timeout=1000
  sourcepic/wb=4/port=tuner10 ndfile{fs=nfft} _nd ^device dec frep /flags=(NODMA|^flg) /slave /master=sca /timeout=1000
  sourcepic/wb=5/port=core11  cafile{fs=nfft} _ca ^device   1    0 /flags=(IPORT=TUNER1|^flg) /slave /master=scb
  sourcepic/wb=6/port=core12  cbfile{fs=nfft} _cb ^device   1    0 /flags=(IPORT=TUNER2|^flg) /slave

elseif mode eqs "USD" then
  sourcepic/wb=1/port=tuner1/flags=(OPORT=NONE,^flg)/master=2002 nafile(fs=nfft) _na ^device dec freq 
  sourcepic/wb=2/port=tuner2/flags=(OPORT=NONE,^flg)/master=3002/slave nbfile(fs=nfft) _nb ^device dec freq 
  sourcepic/wb=3/port=core11/flags=(IPORT=TUNER1|^flg)/master=4002/slave=ss cafile(fs=nfft) _ca ^device 1 0 
  sourcepic/wb=4/port=core12/flags=(IPORT=TUNER2|^flg)/slave=ss cbfile(fs=nfft) _cb ^device 1 0 

elseif mode eqs "HLY" then
  sourcepic/wb=1/flags=(^flg)/replay=0/master=2002/port=tuner9            nafile(fs=nfft) _na ^device dec frep
  sourcepic/wb=2/flags=(^flg)/replay=0/master=3002/slave=ss/port=tuner17  nbfile(fs=nfft) _nb ^device dec frep
  sourcepic/wb=3/flags=(^flg)/replay=0/slave=ss/port=tuner25              ncfile(fs=nfft) _nc ^device dec frep
endif

  ! displays
if _wb fexists
  mfft _wb _wbf nfft
  xrtplot/xs=2/dbrange=140/xn=WB _wbf ,,, l2
endif
if _na fexists
  mfft _na _naf nfft
  xrtplot/xs=3/dbrange=140/xn=NA _naf ,,, l2
endif
if _nb fexists
  mfft _nb _nbf nfft
  xrtplot/xs=4/dbrange=140/xn=NB _nbf ,,, l2
endif
if _nc fexists
  mfft _nc _ncf nfft
  xrtplot/xs=6/dbrange=140/xn=NB _ncf ,,, l2
endif
if _ca fexists
  mfft _ca(fs=0) _caf nfft ,, -50
  xrtplot/xs=5/dbrange=140/xn=CA _caf ,,, l2
endif
if _cb fexists
  mfft _cb(fs=0) _cbf nfft ,, -50
  xrtplot/xs=6/dbrange=140/xn=CB _cbf ,,, l2
endif

if /dump gt 0 then
  noop _ca testca
  noop _cb testcb
endif

xpipe off

endmacro

startcontrols

label initialentry
xcontrol prompt "MODE" "Mode" mode
xcontrol/lab=xxx menu item 0 "Do;Run,Once,Stop,RunWB,StopWB,Exit" 
return

label xxx
if item eq 1 then
  res w_1001 2
elseif item eq 2 then
  res w_1001 1
elseif item eq 3 then
  res w_1001 4
elseif item eq 4 then
  res w_6001 2
elseif item eq 5 then
  res w_6001 4
elseif item eq 6 then
  stop
endif
return

endcontrols
