]> rtime.felk.cvut.cz Git - l4.git/blob - l4/pkg/drivers-frst/nand/include/transfer.h
update
[l4.git] / l4 / pkg / drivers-frst / nand / include / transfer.h
1 #pragma once
2
3 struct Buffer
4 {
5     Buffer()
6           : addr(0), size(0)
7                 {}
8
9       Buffer(char *a, unsigned s)
10             : addr(a), size(s)
11                   {}
12
13         char *addr;
14           unsigned size;
15 };
16
17 struct Transfer
18 {
19   enum
20     { Max = 4, };
21
22 #if 0
23   struct Elem
24     {
25       unsigned char *addr;
26       unsigned size;
27     };
28 #endif
29
30   Transfer()
31     : num(0), len(0)
32     {}
33
34   unsigned num;
35   unsigned len;
36
37   void clear()
38     {
39       num = 0;
40       len = 0;
41     }
42
43   void add(char *addr, unsigned size)
44     {
45       if (num == Max)
46         return;
47
48       _elems[num].addr = addr;
49       _elems[num].size = size;
50       len += size;
51       num++;
52     }
53
54   void add(Buffer buffer)
55     {
56       add(buffer.addr, buffer.size);
57     }
58
59   Buffer &operator [] (int index)
60     {
61       //assert(index < Max);
62       return _elems[index];
63     }
64   
65 private:
66   Buffer _elems[Max];
67 };