DUNE-DAQ
DUNE Trigger and Data Acquisition software
Toggle main menu visibility
Loading...
Searching...
No Matches
dunedaq
sourcecode
tdemodules
src
AMCController.cpp
Go to the documentation of this file.
1
#include "
tdemodules/AMCController.hpp
"
2
#include "
tdemodules/AMCProtocolClient.hpp
"
3
#include "
utilities.hpp
"
4
5
#include <fmt/core.h>
6
#include <iostream>
7
8
#include "
logging/Logging.hpp
"
9
10
namespace
dunedaq
{
11
namespace
tdemodules
{
12
13
AMCController::AMCController
(
const
std::string& ip, uint16_t data_port)
14
:
m_ctrl_ip
(ip)
15
,
m_data_port
(data_port)
16
{
17
18
// Initialize status command payload
19
m_status_cmd
.clear();
20
append_big_uint32
(
m_status_cmd
, 0x0);
21
append_big_uint32
(
m_status_cmd
, 0x0);
22
23
// Initialise start command payload
24
append_big_uint32
(
m_start_cmd
, data_port);
25
append_big_uint32
(
m_start_cmd
,
kCmdStart
);
26
append_big_uint32
(
m_start_cmd
, 0x0);
27
append_big_uint32
(
m_start_cmd
, 0x0);
28
29
// Initialise stop command payload
30
append_big_uint32
(
m_stop_cmd
, data_port);
31
append_big_uint32
(
m_stop_cmd
,
kCmdStop
);
32
append_big_uint32
(
m_stop_cmd
, 0x0);
33
append_big_uint32
(
m_stop_cmd
, 0x0);
34
35
// Initialise reset command payload
36
append_big_uint32
(
m_reset_cmd
, data_port);
37
append_big_uint32
(
m_reset_cmd
,
kCmdReset
);
38
append_big_uint32
(
m_reset_cmd
, 0x0);
39
append_big_uint32
(
m_reset_cmd
, 0x0);
40
}
41
42
std::vector<uint8_t>
43
AMCController::send_cmd
(
const
std::vector<uint8_t>& cmd)
44
{
45
std::vector<uint8_t> reply;
46
try
{
47
48
auto
client =
AMCProtocolClient
(
m_ctrl_ip
,
m_ctrl_port
);
49
50
reply = client.send_wrq(cmd);
51
52
}
catch
(
const
std::exception& e) {
53
ers::error
(AMCCommandIssue(
ERS_HERE
,
m_ctrl_ip
,
m_data_port
, e.what()));
54
// std::cerr << "Exception: " << e.what() << "\n";
55
}
56
return
reply;
57
}
58
59
void
60
AMCController::card_reset
()
61
{
62
send_cmd
(
m_reset_cmd
);
63
}
64
65
void
66
AMCController::card_start
()
67
{
68
send_cmd
(
m_start_cmd
);
69
}
70
71
void
72
AMCController::card_stop
()
73
{
74
send_cmd
(
m_stop_cmd
);
75
}
76
77
void
78
AMCController::card_status
()
79
{
80
std::vector<uint8_t> reply =
send_cmd
(
m_status_cmd
);
81
82
if
(reply.empty()) {
83
TLOG
() <<
"Recieved an empty reply."
;
84
return
;
85
}
86
87
// Take the first 4 bytes
88
boost::endian::big_uint32_t word0_be;
89
uint32_t word0;
90
91
std::memcpy(&word0_be, reply.data(),
sizeof
(word0_be));
92
fmt::print(
"word0 {:08x}\n"
, word0_be);
93
94
// word0 = ntohl(word0);
95
word0 = word0_be;
96
fmt::print(
"word0 {:08x}\n"
, word0);
97
98
uint32_t status = (word0 >> 16) & 0xffff;
99
uint32_t
version
= (word0) & 0xffff;
100
101
// # meaning of error bits
102
// ErrorBits = { 0:"ADC_CHIPID_ERR",
103
// 1:"ADC_SPEED_GRADE_ERR",
104
// 2:"ADC_ALIGN_0_ERR",
105
// 3:"ADC_ALIGN_1_ERR",
106
// 4:"ADC_SERIAL_CTRL_ERR",
107
// 5:"ADC_SAMPLE_RATE_ERR",
108
// 6:"ADC_OUTPUT_MODE_ERR",
109
// 7:"ADC_TEST_MODE_ERR",
110
// 8:"WRLEN_AMC_TIME_VALID_ERR",
111
// 9:"WRLEN_BITSLIP_ERR" }
112
113
fmt::print(
"status {:04x}, version {:04x}\n"
, status,
version
);
114
}
115
116
}
// namespace tdemodules
117
}
// namespace dunedaq
AMCController.hpp
AMCProtocolClient.hpp
ERS_HERE
#define ERS_HERE
Definition
LocalContext.hpp:127
version
version
Definition
TriggerActivity_serialization.hpp:50
dunedaq::tdemodules::AMCController::m_ctrl_port
uint16_t m_ctrl_port
Definition
AMCController.hpp:38
dunedaq::tdemodules::AMCController::card_reset
void card_reset()
Definition
AMCController.cpp:60
dunedaq::tdemodules::AMCController::m_status_cmd
std::vector< uint8_t > m_status_cmd
Definition
AMCController.hpp:41
dunedaq::tdemodules::AMCController::card_stop
void card_stop()
Definition
AMCController.cpp:72
dunedaq::tdemodules::AMCController::m_start_cmd
std::vector< uint8_t > m_start_cmd
Definition
AMCController.hpp:42
dunedaq::tdemodules::AMCController::AMCController
AMCController(const std::string &ip, uint16_t data_port)
Definition
AMCController.cpp:13
dunedaq::tdemodules::AMCController::m_ctrl_ip
std::string m_ctrl_ip
Definition
AMCController.hpp:37
dunedaq::tdemodules::AMCController::m_reset_cmd
std::vector< uint8_t > m_reset_cmd
Definition
AMCController.hpp:44
dunedaq::tdemodules::AMCController::send_cmd
std::vector< uint8_t > send_cmd(const std::vector< uint8_t > &cmd)
Definition
AMCController.cpp:43
dunedaq::tdemodules::AMCController::kCmdStart
@ kCmdStart
Definition
AMCController.hpp:25
dunedaq::tdemodules::AMCController::kCmdReset
@ kCmdReset
Definition
AMCController.hpp:26
dunedaq::tdemodules::AMCController::kCmdStop
@ kCmdStop
Definition
AMCController.hpp:24
dunedaq::tdemodules::AMCController::m_stop_cmd
std::vector< uint8_t > m_stop_cmd
Definition
AMCController.hpp:43
dunedaq::tdemodules::AMCController::m_data_port
uint16_t m_data_port
Definition
AMCController.hpp:39
dunedaq::tdemodules::AMCController::card_start
void card_start()
Definition
AMCController.cpp:66
dunedaq::tdemodules::AMCController::card_status
void card_status()
Definition
AMCController.cpp:78
dunedaq::tdemodules::AMCProtocolClient::AMCProtocolClient
AMCProtocolClient(const std::string &server_ip, uint16_t port)
Definition
AMCProtocolClient.cpp:12
Logging.hpp
TLOG
#define TLOG(...)
Definition
macro.hpp:21
dunedaq::tdemodules
Definition
AMCController.hpp:17
dunedaq::tdemodules::append_big_uint32
void append_big_uint32(std::vector< uint8_t > &buffer, uint32_t value)
Definition
utilities.cpp:19
dunedaq
The DUNE-DAQ namespace.
Definition
cib_utilities.cpp:5
ers::error
void error(const Issue &issue)
Definition
ers.hpp:101
utilities.hpp
Generated on
for DUNE-DAQ by
1.18.0