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
|