annotate sinks/@sinkdrop/sinkdrop.m @ 2:7357e1dc2ad6

Simplified scheduler library with new schedule representation.
author samer
date Sat, 22 Dec 2012 16:17:51 +0000
parents 672052bd81f8
children
rev   line source
samer@0 1 % sinkdrop - sink that discards first N samples before sending to subsink.
samer@0 2 %
samer@0 3 % sinkdrop :: N:natural, sink(C,R) -> sink(C,R).
samer@0 4 classdef sinkdrop < sink
samer@0 5 properties (GetAccess=private,SetAccess=immutable)
samer@0 6 todrop % natural
samer@0 7 dest % sink(C,R)
samer@0 8 end
samer@0 9 methods
samer@0 10 function s=sinkdrop(n,sig)
samer@0 11 s.todrop=n;
samer@0 12 s.dest=sig;
samer@0 13 end
samer@0 14 function s=tostring(sig)
samer@0 15 s=sprintf('drop(%d,%s)',sig.todrop,tostring(sig.dest));
samer@0 16 end
samer@0 17 function c=rate(s), c=rate(s.dest); end
samer@0 18 function c=channels(s), c=channels(s.dest); end
samer@0 19 function s=construct(sig)
samer@0 20 s1=construct(sig.dest);
samer@0 21 todrop=sig.todrop;
samer@0 22
samer@0 23 s.start=s1.start;
samer@0 24 s.stop=s1.stop;
samer@0 25 s.dispose=s1.dispose;
samer@0 26 s.writer=@writer
samer@0 27
samer@0 28 function f=writer(n)
samer@0 29 w1=s1.writer(n);
samer@0 30 f=@next
samer@0 31 function rem=next(x)
samer@0 32 n=uint32(size(x,2));
samer@0 33 if todrop==0, rem=w1.next(x);
samer@0 34 elseif n<=todrop
samer@0 35 todrop=todrop-n;
samer@0 36 else
samer@0 37 rem=sinkwriten(s1,n-todrop,x(:,todrop+1:end));
samer@0 38 todrop=0;
samer@0 39 end
samer@0 40 end
samer@0 41 end
samer@0 42 end
samer@0 43 end
samer@0 44 end