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 <cstdint>
5
#include <vector>
6
7
#include <boost/asio.hpp>
8
#include <boost/endian/arithmetic.hpp>
9
10
#include "
logging/Logging.hpp
"
11
12
namespace
dunedaq
{
13
14
ERS_DECLARE_ISSUE
(
tdemodules
,
15
AMCProtocolIssue,
16
prefix <<
"AMCProtocolResponse: "
<< text,
17
((std::string)prefix)((std::string)text));
18
19
ERS_DECLARE_ISSUE
(
tdemodules
,
20
AMCResponseErr,
21
prefix <<
"Received Error packet:"
<<
"\n"
22
<<
"Error code:"
<< code <<
"\nMessage: "
<< text,
23
((std::string)prefix)((uint16_t)code)((std::string)text));
24
25
ERS_DECLARE_ISSUE
(
tdemodules
,
26
AMCUnknownOpCode,
27
prefix <<
"Unknown opcode recived: "
<< opcode,
28
((std::string)prefix)((uint16_t)opcode));
29
30
namespace
tdemodules
{
31
32
class
AMCProtocolClient
33
{
34
public
:
35
enum
TFTPOpCode
: uint16_t
36
{
37
RRQ
= 1,
38
WRQ
= 2,
39
DAT
= 3,
40
ACK
= 4,
41
ERR
= 5,
42
};
43
44
#pragma pack(push, 1)
45
struct
TFTP_Data_Header
46
{
47
boost::endian::big_uint16_t
opcode
;
48
boost::endian::big_uint16_t
block
;
49
};
50
51
struct
TFTP_Error_Header
52
{
53
boost::endian::big_uint16_t
opcode
;
54
boost::endian::big_uint16_t
error_code
;
55
};
56
57
struct
TFTP_Ack_Header
58
{
59
boost::endian::big_uint16_t
opcode
;
60
boost::endian::big_uint16_t
block
;
61
};
62
#pragma pack(pop)
63
64
AMCProtocolClient
(
const
std::string& server_ip, uint16_t port);
65
66
std::vector<uint8_t>
send_request
(
TFTPOpCode
opcode,
const
std::vector<uint8_t>& payload);
67
68
std::vector<uint8_t>
send_rrq
(
const
std::vector<uint8_t>& payload) {
return
send_request
(
RRQ
, payload); }
69
70
std::vector<uint8_t>
send_wrq
(
const
std::vector<uint8_t>& payload) {
return
send_request
(
WRQ
, payload); }
71
72
private
:
73
std::string
m_host
;
74
uint16_t
m_port
;
75
uint16_t
m_timeout
;
76
77
const
std::string
m_log_prefix
=
"AMC with ip:"
+
m_host
+
" and port: "
+ std::to_string(
m_port
) +
" | "
;
78
79
boost::asio::io_context
m_io_context
;
80
boost::asio::ip::udp::socket
m_socket
;
81
boost::asio::ip::udp::endpoint
m_server_endpoint
;
82
};
83
84
}
// namespace tdemodules
85
}
// namespace dunedaq
86
87
#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:70
dunedaq::tdemodules::AMCProtocolClient::AMCProtocolClient
AMCProtocolClient(const std::string &server_ip, uint16_t port)
Definition
AMCProtocolClient.cpp:12
dunedaq::tdemodules::AMCProtocolClient::m_log_prefix
const std::string m_log_prefix
Definition
AMCProtocolClient.hpp:77
dunedaq::tdemodules::AMCProtocolClient::m_port
uint16_t m_port
Definition
AMCProtocolClient.hpp:74
dunedaq::tdemodules::AMCProtocolClient::m_timeout
uint16_t m_timeout
Definition
AMCProtocolClient.hpp:75
dunedaq::tdemodules::AMCProtocolClient::m_host
std::string m_host
Definition
AMCProtocolClient.hpp:73
dunedaq::tdemodules::AMCProtocolClient::send_request
std::vector< uint8_t > send_request(TFTPOpCode opcode, const std::vector< uint8_t > &payload)
Definition
AMCProtocolClient.cpp:29
dunedaq::tdemodules::AMCProtocolClient::m_server_endpoint
boost::asio::ip::udp::endpoint m_server_endpoint
Definition
AMCProtocolClient.hpp:81
dunedaq::tdemodules::AMCProtocolClient::m_io_context
boost::asio::io_context m_io_context
Definition
AMCProtocolClient.hpp:79
dunedaq::tdemodules::AMCProtocolClient::send_rrq
std::vector< uint8_t > send_rrq(const std::vector< uint8_t > &payload)
Definition
AMCProtocolClient.hpp:68
dunedaq::tdemodules::AMCProtocolClient::m_socket
boost::asio::ip::udp::socket m_socket
Definition
AMCProtocolClient.hpp:80
dunedaq::tdemodules::AMCProtocolClient::TFTPOpCode
TFTPOpCode
Definition
AMCProtocolClient.hpp:36
dunedaq::tdemodules::AMCProtocolClient::RRQ
@ RRQ
Definition
AMCProtocolClient.hpp:37
dunedaq::tdemodules::AMCProtocolClient::WRQ
@ WRQ
Definition
AMCProtocolClient.hpp:38
dunedaq::tdemodules::AMCProtocolClient::ERR
@ ERR
Definition
AMCProtocolClient.hpp:41
dunedaq::tdemodules::AMCProtocolClient::DAT
@ DAT
Definition
AMCProtocolClient.hpp:39
dunedaq::tdemodules::AMCProtocolClient::ACK
@ ACK
Definition
AMCProtocolClient.hpp:40
Logging.hpp
dunedaq
The DUNE-DAQ namespace.
Definition
cib_utilities.cpp:5
dunedaq::ERS_DECLARE_ISSUE
ERS_DECLARE_ISSUE(cibmodules, CIBCommunicationError, " CIB Hardware Communication Error: "<< descriptor,((std::string) descriptor)) ERS_DECLARE_ISSUE(cibmodules
tdemodules
Definition
__init__.py:1
dunedaq::tdemodules::AMCProtocolClient::TFTP_Ack_Header
Definition
AMCProtocolClient.hpp:58
dunedaq::tdemodules::AMCProtocolClient::TFTP_Ack_Header::block
boost::endian::big_uint16_t block
Definition
AMCProtocolClient.hpp:60
dunedaq::tdemodules::AMCProtocolClient::TFTP_Ack_Header::opcode
boost::endian::big_uint16_t opcode
Definition
AMCProtocolClient.hpp:59
dunedaq::tdemodules::AMCProtocolClient::TFTP_Data_Header
Definition
AMCProtocolClient.hpp:46
dunedaq::tdemodules::AMCProtocolClient::TFTP_Data_Header::block
boost::endian::big_uint16_t block
Definition
AMCProtocolClient.hpp:48
dunedaq::tdemodules::AMCProtocolClient::TFTP_Data_Header::opcode
boost::endian::big_uint16_t opcode
Definition
AMCProtocolClient.hpp:47
dunedaq::tdemodules::AMCProtocolClient::TFTP_Error_Header
Definition
AMCProtocolClient.hpp:52
dunedaq::tdemodules::AMCProtocolClient::TFTP_Error_Header::opcode
boost::endian::big_uint16_t opcode
Definition
AMCProtocolClient.hpp:53
dunedaq::tdemodules::AMCProtocolClient::TFTP_Error_Header::error_code
boost::endian::big_uint16_t error_code
Definition
AMCProtocolClient.hpp:54
Generated on
for DUNE-DAQ by
1.18.0