DUNE-DAQ
DUNE Trigger and Data Acquisition software
Loading...
Searching...
No Matches
AddressTable.hh
Go to the documentation of this file.
1#ifndef __ADDRESSTABLE_HPP__
2#define __ADDRESSTABLE_HPP__
3
4#include <string>
5#include <vector>
6#include <boost/unordered_map.hpp>
7#include <map>
8
9#include <stdint.h>
10
13
14class Item{
15public:
16 enum ModeMask{EMPTY=0x0,READ = 0x1,WRITE =0x2, ACTION = 0x4};
17 std::string name;
18 uint16_t address;
19 uint32_t mask;
20 uint8_t offset;
21 uint8_t mode; // r :0, w :1, a:2
22 boost::unordered_map<std::string,std::string> user;
24};
25
27 public:
28 AddressTable(std::string const & addressTableName, std::string const & deviceAddress,uint16_t offset);
29 uint32_t Read(uint16_t);
30 uint32_t Read(std::string registerName);
31 uint32_t ReadWithRetry(uint16_t);
32 uint32_t ReadWithRetry(std::string registerName);
33 void Write(uint16_t, uint32_t);
34 void Write(std::string registerName,uint32_t val);
35 void WriteWithRetry(uint16_t, uint32_t);
36 void WriteWithRetry(std::string registerName,uint32_t val);
37 void Write(uint16_t, std::vector<uint32_t> const & values);
38 void Write(std::string registerName,std::vector<uint32_t> const & values);
39 void Write(uint16_t, uint32_t const * values, size_t word_count);
40 void Write(std::string registerName, uint32_t const * values, size_t word_count);
41 Item const * GetItem(std::string const &);
42 std::vector<Item const *> GetTagged(std::string const & tag);
43 std::vector<std::string> GetNames();
44 std::vector<std::string> GetNames(std::string const &regex);
45 std::vector<std::string> GetAddresses(uint16_t lower, uint16_t upper);
46 std::string GetRemoteAddress(){return io->GetAddress();};
47 std::vector<std::string> GetTables(std::string const &regex);
48 uint64_t GetRetryCount(){return io->GetRetryCount();};
49 private:
50 //default constructor is forbidden
52 //preventcopying
55
57 void LoadFile(std::string const &, std::string const & prefix = "",uint16_t offset=0);
58 void ProcessLine(std::string const &,size_t,std::string const & prefix = "",uint16_t offset=0);
59 //Ds of entries
60 //req req req req tokenized
61 //name address mask mode user
62 void AddEntry(Item *);
63 //Map of address to Items (master book-keeping; delete from here)
64 std::map<uint32_t,std::vector<Item*> > addressItemMap;
65 //Map of names to Items
66 std::map<std::string,Item*> nameItemMap;
67
69};
70#endif
void LoadFile(std::string const &, std::string const &prefix="", uint16_t offset=0)
std::map< uint32_t, std::vector< Item * > > addressItemMap
std::vector< std::string > GetAddresses(uint16_t lower, uint16_t upper)
void AddEntry(Item *)
void Write(uint16_t, uint32_t)
AddressTable & operator=(const AddressTable &)
BNL_UDP * io
std::string GetRemoteAddress()
std::vector< std::string > GetNames()
Item const * GetItem(std::string const &)
uint32_t ReadWithRetry(uint16_t)
void WriteWithRetry(uint16_t, uint32_t)
uint32_t Read(uint16_t)
uint64_t GetRetryCount()
AddressTable(const AddressTable &)
std::vector< Item const * > GetTagged(std::string const &tag)
std::map< std::string, Item * > nameItemMap
std::vector< std::string > GetTables(std::string const &regex)
void ProcessLine(std::string const &, size_t, std::string const &prefix="", uint16_t offset=0)
std::string name
boost::unordered_map< std::string, std::string > user
uint16_t address
uint32_t mask
uint8_t offset
ItemConversion * sc_conv
uint8_t mode
double offset