My Project  v0.0.16
ChanBufferNode.hpp
Go to the documentation of this file.
1 /*
2  * File: BufferManager.hpp
3  * Author: ale
4  *
5  * Created on May 5, 2014, 11:04 AM
6  */
7 
8 #ifndef _mp7_ChanBufferNode_hpp_
9 #define _mp7_ChanBufferNode_hpp_
10 
11 // uHAL Headers
12 #include "uhal/DerivedNode.hpp"
13 
14 namespace mp7 {
15 
16 class ChanBufferNode : public uhal::Node {
18 public:
19  /* @class BufferManager
20  * @brief Handles path & buffer configurations
21  */
22 
23  // PUBLIC ENUMS
24 
25  enum BufMode {
26  Latency = 0, // Latency buffer
27  Capture = 1, // Capture buffer
28  PlayOnce = 2, // Playback
29  PlayLoop = 3 // Repeating playback
30  };
31 
32  enum DataSrc {
33  Input = 0, // input data
34  Buffer = 1, // buffer playback
35  Pattern = 2, // Hard-coded pattern
36  Zeroes = 3 //
37  };
38 
39  ChanBufferNode(const uhal::Node& aNode);
40  virtual ~ChanBufferNode();
41 
43  uint32_t getSize() const;
44 
46  uint32_t getMaxSize() const;
47 
49  void setSize( size_t size = 0x0 );
50 
52  BufMode getBufferMode() const;
53 
55  DataSrc getDataSrc() const;
56 
57 
59  void waitCaptureDone() const;
60 
62  void configure(BufMode aMode, DataSrc aDataSrc) const;
63 
64  // Set capture/playback range
65  void setRange(uint32_t trig_bx, uint32_t words) const;
66 
68  void clear() const;
69 
71  void upload(std::vector<uint32_t> aData) const;
72  std::vector<uint32_t> download(size_t aSize) const;
73 
74  void uploadValid(std::vector<uint64_t> aData) const;
75  std::vector<uint64_t> downloadValid(size_t aSize) const;
76 
78  std::vector<uint32_t> readRaw(uint32_t aSize) const;
79  void writeRaw(std::vector<uint32_t> aRawData) const;
80 
81 private:
82 
83 // const uhal::Node* mCSR;
84 // const uhal::Node* mBuffer;
85 
86  size_t mSize;
87 
88 };
89 
90 }
91 
92 #endif /* _mp7_ChanBufferNode_hpp_ */
93 
-test-ipbusaccess
Definition: AlignmentNode.hpp:15
Definition: ChanBufferNode.hpp:34
void writeRaw(std::vector<uint32_t> aRawData) const
Definition: ChanBufferNode.cpp:127
void clear() const
Clear the buffer block. Fills it with zeroes.
Definition: ChanBufferNode.cpp:146
Definition: ChanBufferNode.hpp:33
std::vector<uint32_t> readRaw(uint32_t aSize) const
Raw buffer access.
Definition: ChanBufferNode.cpp:136
size_t mSize
Definition: ChanBufferNode.hpp:86
void upload(std::vector<uint32_t> aData) const
Uploads data into the buffer up to the buffer maximum size.
Definition: ChanBufferNode.cpp:152
void uploadValid(std::vector<uint64_t> aData) const
Definition: ChanBufferNode.cpp:196
ChanBufferNode(const uhal::Node& aNode)
Definition: ChanBufferNode.cpp:27
Definition: ChanBufferNode.hpp:35
std::vector<uint32_t> download(size_t aSize) const
Definition: ChanBufferNode.cpp:175
void waitCaptureDone() const
wait for the buffer capture to be completed
Definition: ChanBufferNode.cpp:76
std::vector<uint64_t> downloadValid(size_t aSize) const
Definition: ChanBufferNode.cpp:218
uint32_t getMaxSize() const
return the maximum buffer size
Definition: ChanBufferNode.cpp:42
void setSize( size_t size = 0x0 )
sets the size of the buffers to be used. Must be less than max size
Definition: ChanBufferNode.cpp:47
virtual ~ChanBufferNode()
Definition: ChanBufferNode.cpp:32
Definition: ChanBufferNode.hpp:27
Definition: ChanBufferNode.hpp:28
DataSrc
Definition: ChanBufferNode.hpp:32
void setRange(uint32_t trig_bx, uint32_t words) const
Definition: ChanBufferNode.cpp:112
BufMode getBufferMode() const
Get current buffer mode.
Definition: ChanBufferNode.cpp:60
Definition: ChanBufferNode.hpp:26
void configure(BufMode aMode, DataSrc aDataSrc) const
Configure buffer mode and data source.
Definition: ChanBufferNode.cpp:99
Definition: ChanBufferNode.hpp:29
BufMode
Definition: ChanBufferNode.hpp:25
uint32_t getSize() const
returns the current buffer size
Definition: ChanBufferNode.cpp:37
DataSrc getDataSrc() const
Get datasrc for the current buffer.
Definition: ChanBufferNode.cpp:68
UHAL_DERIVEDNODE( ChanBufferNode )
Definition: ChanBufferNode.hpp:36