DUNE-DAQ
DUNE Trigger and Data Acquisition software
Loading...
Searching...
No Matches
dunedaq::tdemodules::AMCController Class Reference

#include <AMCController.hpp>

Public Types

enum  CmdCode : uint32_t { kCmdStop = 0 , kCmdStart = 1 , kCmdReset = 4 }

Public Member Functions

 AMCController (const std::string &ip, uint16_t data_port)
void card_start ()
void card_stop ()
void card_status ()
void card_reset ()

Private Member Functions

std::vector< uint8_t > send_cmd (const std::vector< uint8_t > &cmd)

Private Attributes

std::string m_ctrl_ip
uint16_t m_ctrl_port = 325
uint16_t m_data_port
std::vector< uint8_t > m_status_cmd
std::vector< uint8_t > m_start_cmd
std::vector< uint8_t > m_stop_cmd
std::vector< uint8_t > m_reset_cmd

Detailed Description

Definition at line 19 of file AMCController.hpp.

Member Enumeration Documentation

◆ CmdCode

Enumerator
kCmdStop 
kCmdStart 
kCmdReset 

Definition at line 22 of file AMCController.hpp.

Constructor & Destructor Documentation

◆ AMCController()

dunedaq::tdemodules::AMCController::AMCController ( const std::string & ip,
uint16_t data_port )

Definition at line 13 of file AMCController.cpp.

14 : m_ctrl_ip(ip)
15 , m_data_port(data_port)
16{
17
18 // Initialize status command payload
19 m_status_cmd.clear();
22
23 // Initialise start command payload
28
29 // Initialise stop command payload
30 append_big_uint32(m_stop_cmd, data_port);
34
35 // Initialise reset command payload
40}
std::vector< uint8_t > m_status_cmd
std::vector< uint8_t > m_start_cmd
std::vector< uint8_t > m_reset_cmd
std::vector< uint8_t > m_stop_cmd
void append_big_uint32(std::vector< uint8_t > &buffer, uint32_t value)
Definition utilities.cpp:19

Member Function Documentation

◆ card_reset()

void dunedaq::tdemodules::AMCController::card_reset ( )

Definition at line 60 of file AMCController.cpp.

61{
63}
std::vector< uint8_t > send_cmd(const std::vector< uint8_t > &cmd)

◆ card_start()

void dunedaq::tdemodules::AMCController::card_start ( )

Definition at line 66 of file AMCController.cpp.

67{
69}

◆ card_status()

void dunedaq::tdemodules::AMCController::card_status ( )

Definition at line 78 of file AMCController.cpp.

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}
#define TLOG(...)
Definition macro.hpp:21

◆ card_stop()

void dunedaq::tdemodules::AMCController::card_stop ( )

Definition at line 72 of file AMCController.cpp.

73{
75}

◆ send_cmd()

std::vector< uint8_t > dunedaq::tdemodules::AMCController::send_cmd ( const std::vector< uint8_t > & cmd)
private

Definition at line 43 of file AMCController.cpp.

44{
45 std::vector<uint8_t> reply;
46 try {
47
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}
#define ERS_HERE
AMCProtocolClient(const std::string &server_ip, uint16_t port)
void error(const Issue &issue)
Definition ers.hpp:101

Member Data Documentation

◆ m_ctrl_ip

std::string dunedaq::tdemodules::AMCController::m_ctrl_ip
private

Definition at line 37 of file AMCController.hpp.

◆ m_ctrl_port

uint16_t dunedaq::tdemodules::AMCController::m_ctrl_port = 325
private

Definition at line 38 of file AMCController.hpp.

◆ m_data_port

uint16_t dunedaq::tdemodules::AMCController::m_data_port
private

Definition at line 39 of file AMCController.hpp.

◆ m_reset_cmd

std::vector<uint8_t> dunedaq::tdemodules::AMCController::m_reset_cmd
private

Definition at line 44 of file AMCController.hpp.

◆ m_start_cmd

std::vector<uint8_t> dunedaq::tdemodules::AMCController::m_start_cmd
private

Definition at line 42 of file AMCController.hpp.

◆ m_status_cmd

std::vector<uint8_t> dunedaq::tdemodules::AMCController::m_status_cmd
private

Definition at line 41 of file AMCController.hpp.

◆ m_stop_cmd

std::vector<uint8_t> dunedaq::tdemodules::AMCController::m_stop_cmd
private

Definition at line 43 of file AMCController.hpp.


The documentation for this class was generated from the following files: