DUNE-DAQ
DUNE Trigger and Data Acquisition software
Toggle main menu visibility
Loading...
Searching...
No Matches
dunedaq
sourcecode
tdemodules
include
tdemodules
AMCProtocolClient.hpp
Go to the documentation of this file.
1
#ifndef __DUNEDAQ_TDEMODULES_INCLUDE_AMCPROTOCOLCLIENT_HPP___
2
#define __DUNEDAQ_TDEMODULES_INCLUDE_AMCPROTOCOLCLIENT_HPP___
3
4
#include <vector>
5
#include <cstdint>
6
7
#include <boost/endian/arithmetic.hpp>
8
#include <boost/asio.hpp>
9
10
#include "
logging/Logging.hpp
"
11
12
namespace
dunedaq
{
13
14
15
ERS_DECLARE_ISSUE
(
16
tdemodules
,
17
AMCProtocolIssue,
18
prefix <<
"AMCProtocolResponse: "
<< text,
19
((std::string)prefix)((std::string)text)
20
);
21
22
ERS_DECLARE_ISSUE
(
23
tdemodules
,
24
AMCResponseErr,
25
prefix <<
"Received Error packet:"
<<
"\n"
<<
"Error code:"
<< code <<
"\nMessage: "
<< text,
26
((std::string)prefix)((uint16_t)code)((std::string)text)
27
);
28
29
ERS_DECLARE_ISSUE
(
30
tdemodules
,
31
AMCUnknownOpCode,
32
prefix <<
"Unknown opcode recived: "
<< opcode,
33
((std::string)prefix)((uint16_t)opcode)
34
);
35
36
namespace
tdemodules
{
37
38
class
AMCProtocolClient
{
39
public
:
40
enum
TFTPOpCode
: uint16_t {
41
RRQ
= 1,
42
WRQ
= 2,
43
DAT
= 3,
44
ACK
= 4,
45
ERR
= 5,
46
};
47
48
49
#pragma pack(push, 1)
50
struct
TFTP_Data_Header
{
51
boost::endian::big_uint16_t
opcode
;
52
boost::endian::big_uint16_t
block
;
53
};
54
55
struct
TFTP_Error_Header
{
56
boost::endian::big_uint16_t
opcode
;
57
boost::endian::big_uint16_t
error_code
;
58
};
59
60
struct
TFTP_Ack_Header
{
61
boost::endian::big_uint16_t
opcode
;
62
boost::endian::big_uint16_t
block
;
63
};
64
#pragma pack(pop)
65
66
67
68
AMCProtocolClient
(
const
std::string& server_ip, uint16_t port);
69
70
std::vector<uint8_t>
send_request
(
TFTPOpCode
opcode,
const
std::vector<uint8_t>& payload);
71
72
std::vector<uint8_t>
send_rrq
(
const
std::vector<uint8_t>& payload) {
73
return
send_request
(
RRQ
, payload);
74
}
75
76
std::vector<uint8_t>
send_wrq
(
const
std::vector<uint8_t>& payload) {
77
return
send_request
(
WRQ
, payload);
78
}
79
80
private
:
81
82
std::string
m_host
;
83
uint16_t
m_port
;
84
uint16_t
m_timeout
;
85
86
const
std::string
m_log_prefix
=
"AMC with ip:"
+
m_host
+
" and port: "
+ std::to_string(
m_port
) +
" | "
;
87
88
boost::asio::io_context
m_io_context
;
89
boost::asio::ip::udp::socket
m_socket
;
90
boost::asio::ip::udp::endpoint
m_server_endpoint
;
91
92
};
93
94
}
// namespace tdemodules
95
}
// namespace dunedaq
96
97
#endif
// __DUNEDAQ_TDEMODULES_INCLUDE_AMCPROTOCOLCLIENT_HPP___
dunedaq::tdemodules::AMCProtocolClient::send_wrq
std::vector< uint8_t > send_wrq(const std::vector< uint8_t > &payload)
Definition
AMCProtocolClient.hpp:76
dunedaq::tdemodules::AMCProtocolClient::AMCProtocolClient
AMCProtocolClient(const std::string &server_ip, uint16_t port)
Definition
AMCProtocolClient.cpp:13
dunedaq::tdemodules::AMCProtocolClient::m_log_prefix
const std::string m_log_prefix
Definition
AMCProtocolClient.hpp:86
dunedaq::tdemodules::AMCProtocolClient::m_port
uint16_t m_port
Definition
AMCProtocolClient.hpp:83
dunedaq::tdemodules::AMCProtocolClient::m_timeout
uint16_t m_timeout
Definition
AMCProtocolClient.hpp:84
dunedaq::tdemodules::AMCProtocolClient::m_host
std::string m_host
Definition
AMCProtocolClient.hpp:82
dunedaq::tdemodules::AMCProtocolClient::send_request
std::vector< uint8_t > send_request(TFTPOpCode opcode, const std::vector< uint8_t > &payload)
Definition
AMCProtocolClient.cpp:31
dunedaq::tdemodules::AMCProtocolClient::m_server_endpoint
boost::asio::ip::udp::endpoint m_server_endpoint
Definition
AMCProtocolClient.hpp:90
dunedaq::tdemodules::AMCProtocolClient::m_io_context
boost::asio::io_context m_io_context
Definition
AMCProtocolClient.hpp:88
dunedaq::tdemodules::AMCProtocolClient::send_rrq
std::vector< uint8_t > send_rrq(const std::vector< uint8_t > &payload)
Definition
AMCProtocolClient.hpp:72
dunedaq::tdemodules::AMCProtocolClient::m_socket
boost::asio::ip::udp::socket m_socket
Definition
AMCProtocolClient.hpp:89
dunedaq::tdemodules::AMCProtocolClient::TFTPOpCode
TFTPOpCode
Definition
AMCProtocolClient.hpp:40
dunedaq::tdemodules::AMCProtocolClient::RRQ
@ RRQ
Definition
AMCProtocolClient.hpp:41
dunedaq::tdemodules::AMCProtocolClient::WRQ
@ WRQ
Definition
AMCProtocolClient.hpp:42
dunedaq::tdemodules::AMCProtocolClient::ERR
@ ERR
Definition
AMCProtocolClient.hpp:45
dunedaq::tdemodules::AMCProtocolClient::DAT
@ DAT
Definition
AMCProtocolClient.hpp:43
dunedaq::tdemodules::AMCProtocolClient::ACK
@ ACK
Definition
AMCProtocolClient.hpp:44
Logging.hpp
ERS_DECLARE_ISSUE
#define ERS_DECLARE_ISSUE( namespace_name, class_name, message_, attributes)
Definition
macro.hpp:65
dunedaq
Including Qt Headers.
Definition
module.cpp:16
tdemodules
Definition
__init__.py:1
dunedaq::tdemodules::AMCProtocolClient::TFTP_Ack_Header
Definition
AMCProtocolClient.hpp:60
dunedaq::tdemodules::AMCProtocolClient::TFTP_Ack_Header::block
boost::endian::big_uint16_t block
Definition
AMCProtocolClient.hpp:62
dunedaq::tdemodules::AMCProtocolClient::TFTP_Ack_Header::opcode
boost::endian::big_uint16_t opcode
Definition
AMCProtocolClient.hpp:61
dunedaq::tdemodules::AMCProtocolClient::TFTP_Data_Header
Definition
AMCProtocolClient.hpp:50
dunedaq::tdemodules::AMCProtocolClient::TFTP_Data_Header::block
boost::endian::big_uint16_t block
Definition
AMCProtocolClient.hpp:52
dunedaq::tdemodules::AMCProtocolClient::TFTP_Data_Header::opcode
boost::endian::big_uint16_t opcode
Definition
AMCProtocolClient.hpp:51
dunedaq::tdemodules::AMCProtocolClient::TFTP_Error_Header
Definition
AMCProtocolClient.hpp:55
dunedaq::tdemodules::AMCProtocolClient::TFTP_Error_Header::opcode
boost::endian::big_uint16_t opcode
Definition
AMCProtocolClient.hpp:56
dunedaq::tdemodules::AMCProtocolClient::TFTP_Error_Header::error_code
boost::endian::big_uint16_t error_code
Definition
AMCProtocolClient.hpp:57
Generated on
for DUNE-DAQ by
1.17.0