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