DUNE-DAQ
DUNE Trigger and Data Acquisition software
Loading...
Searching...
No Matches
BNL_UDP.hh
Go to the documentation of this file.
1#ifndef __BNL_UDP_HH__
2#define __BNL_UDP_HH__
3
4#include <string>
5#include <vector>
6
7#include <stdint.h>
8#include <sys/socket.h>
9#include <netinet/ip.h>
10
11
12#define WIB_RESPONSE_PACKET_BUFFER_SIZE 4048
13
14class BNL_UDP {
15public:
17 ~BNL_UDP();
18
19 void Setup(std::string const & address, uint16_t port_offset = 0);
20 bool Ready(){return connected;};
21
22 void SetWriteAck(bool val){writeAck=val;};
23 bool GetWriteAck(){return writeAck;};
24
25 uint32_t ReadWithRetry(uint16_t address,uint8_t retry_count=10);
26 uint32_t Read(uint16_t address);
27 void WriteWithRetry(uint16_t address, uint32_t value, uint8_t retry_count=10);
28 void Write(uint16_t address,uint32_t value);
29 void Write(uint16_t address,std::vector<uint32_t> const & values);
30 void Write(uint16_t address,uint32_t const * values, size_t word_count);
31
32 std::string GetAddress(){return remoteAddress;};
33
34 uint64_t GetRetryCount(){return total_retry_count;};
35
36private:
37 // Prevent copying of BNL_UDP objects
38 BNL_UDP( const BNL_UDP& other) ; // prevents construction-copy
39 BNL_UDP& operator=( const BNL_UDP&) ; // prevents copying
40
41 void FlushSocket(int sock);
42
43 //functions
44 void Clear();
45 void Reset();
47
49
50 //Network addresses
51 std::string remoteAddress;
52 int16_t readPort;
53 int16_t writePort;
54 int16_t replyPort;
55
56 //Network sockets and sockaddrs
60 struct sockaddr_in readAddr;
61 struct sockaddr_in writeAddr;
62
63 //Packet buffer
65 uint8_t *buffer;
67};
68#endif
#define WIB_RESPONSE_PACKET_BUFFER_SIZE
Definition BNL_UDP.hh:12
void SetWriteAck(bool val)
Definition BNL_UDP.hh:22
struct sockaddr_in writeAddr
Definition BNL_UDP.hh:61
int16_t readPort
Definition BNL_UDP.hh:52
void Setup(std::string const &address, uint16_t port_offset=0)
Definition BNL_UDP.cpp:96
std::string remoteAddress
Definition BNL_UDP.hh:51
bool Ready()
Definition BNL_UDP.hh:20
void Write(uint16_t address, uint32_t value)
Definition BNL_UDP.cpp:217
bool connected
Definition BNL_UDP.hh:57
void WriteWithRetry(uint16_t address, uint32_t value, uint8_t retry_count=10)
Definition BNL_UDP.cpp:197
uint32_t ReadWithRetry(uint16_t address, uint8_t retry_count=10)
Definition BNL_UDP.cpp:370
int writeSocketFD
Definition BNL_UDP.hh:59
BNL_UDP(const BNL_UDP &other)
uint32_t Read(uint16_t address)
Definition BNL_UDP.cpp:391
void FlushSocket(int sock)
Definition BNL_UDP.cpp:53
uint64_t total_retry_count
Definition BNL_UDP.hh:66
void Clear()
Definition BNL_UDP.cpp:63
struct sockaddr_in readAddr
Definition BNL_UDP.hh:60
std::string GetAddress()
Definition BNL_UDP.hh:32
size_t buffer_size
Definition BNL_UDP.hh:64
bool GetWriteAck()
Definition BNL_UDP.hh:23
int readSocketFD
Definition BNL_UDP.hh:58
uint64_t GetRetryCount()
Definition BNL_UDP.hh:34
BNL_UDP & operator=(const BNL_UDP &)
void Reset()
void ResizeBuffer(size_t size=WIB_RESPONSE_PACKET_BUFFER_SIZE)
Definition BNL_UDP.cpp:464
int16_t replyPort
Definition BNL_UDP.hh:54
BNL_UDP()
Definition BNL_UDP.hh:16
uint8_t * buffer
Definition BNL_UDP.hh:65
int16_t writePort
Definition BNL_UDP.hh:53
bool writeAck
Definition BNL_UDP.hh:48