My Project  v0.0.16
PathManager.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_PathManager_hpp_
9 #define _mp7_PathManager_hpp_
10 
11 // uHAL Headers
12 #include "uhal/Node.hpp"
13 
14 namespace mp7 {
15 
16 class PathManager {
17 public:
18  /* @class BufferManager
19  * @brief Handles path & buffer configurations
20  */
21 
22  // PUBLIC ENUMS
23 
24  enum BufMode {
25  Latency = 0, // Latency buffer
26  Capture = 1, // Capture buffer
27  PlayOnce = 2, // Playback
28  PlayLoop = 3 // Repeating playback
29  };
30 
31  enum DataSrc {
32  Input = 0, // input data
33  Buffer = 1, // buffer playback
34  Pattern = 2, // Hard-coded pattern
35  Zeroes = 3 //
36  };
37 
38  PathManager(const uhal::Node& aBufferModeNode, const uhal::Node& aBufferNode);
39  virtual ~PathManager();
40 
42  uint32_t getSize() const;
43 
45  uint32_t getMaxSize() const;
46 
48  void setSize( size_t size = 0x0 );
49 
51  BufMode getBufferMode() const;
52 
54  DataSrc getDataSrc() const;
55 
56 
58  void waitCaptureDone() const;
59 
61  void configure(BufMode aMode, DataSrc aDataSrc) const;
62 
63  // Set capture/playback range
64  void setRange(uint32_t trig_bx, uint32_t words) const;
65 
67  void clear() const;
68 
70  void upload(std::vector<uint32_t> aData) const;
71  std::vector<uint32_t> download(size_t aSize) const;
72 
73  void uploadValid(std::vector<uint64_t> aData) const;
74  std::vector<uint64_t> downloadValid(size_t aSize) const;
75 
77  std::vector<uint32_t> readRaw(uint32_t aSize) const;
78  void writeRaw(std::vector<uint32_t> aRawData) const;
79 
80 private:
81 
82  const uhal::Node* mCSR;
83  const uhal::Node* mBuffer;
84 
85  size_t mSize;
86 
87 };
88 
89 }
90 
91 #endif /* _mp7_PathManager_hpp_ */
92 
void writeRaw(std::vector<uint32_t> aRawData) const
Definition: PathManager.hpp:27
Definition: PathManager.hpp:25
-test-ipbusaccess
Definition: AlignmentNode.hpp:15
Definition: PathManager.hpp:26
Definition: PathManager.hpp:28
PathManager(const uhal::Node& aBufferModeNode, const uhal::Node& aBufferNode)
Definition: PathManager.hpp:33
std::vector<uint32_t> download(size_t aSize) const
void clear() const
Clear the buffer block. Fills it with zeroes.
Definition: PathManager.hpp:32
void setRange(uint32_t trig_bx, uint32_t words) const
uint32_t getMaxSize() const
return the maximum buffer size
std::vector<uint32_t> readRaw(uint32_t aSize) const
Raw buffer access.
std::vector<uint64_t> downloadValid(size_t aSize) const
virtual ~PathManager()
void upload(std::vector<uint32_t> aData) const
Uploads data into the buffer up to the buffer maximum size.
void configure(BufMode aMode, DataSrc aDataSrc) const
Configure buffer mode and data source.
DataSrc getDataSrc() const
Get datasrc for the current buffer.
size_t mSize
Definition: PathManager.hpp:85
BufMode
Definition: PathManager.hpp:24
Definition: PathManager.hpp:34
BufMode getBufferMode() const
Get current buffer mode.
const uhal::Node* mCSR
Definition: PathManager.hpp:82
void waitCaptureDone() const
wait for the buffer capture to be completed
const uhal::Node* mBuffer
Definition: PathManager.hpp:83
Definition: PathManager.hpp:35
void uploadValid(std::vector<uint64_t> aData) const
void setSize( size_t size = 0x0 )
sets the size of the buffers to be used. Must be less than max size
uint32_t getSize() const
returns the current buffer size
DataSrc
Definition: PathManager.hpp:31