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 22 of file AMCController.hpp.

Member Enumeration Documentation

◆ CmdCode

Enumerator
kCmdStop 
kCmdStart 
kCmdReset 

Definition at line 25 of file AMCController.hpp.

Constructor & Destructor Documentation

◆ AMCController()

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

Definition at line 14 of file AMCController.cpp.

14 :
15m_ctrl_ip(ip),
16m_data_port(data_port) {
17
18// Initialize status command payload
19m_status_cmd.clear();
22
23// Initialise start command payload
28
29
30// Initialise stop command payload
35
36
37// Initialise reset command payload
42
43}
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:17

Member Function Documentation

◆ card_reset()

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

Definition at line 61 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.

66 {
68}

◆ card_status()

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

Definition at line 76 of file AMCController.cpp.

76 {
77 std::vector<uint8_t> reply = send_cmd(m_status_cmd);
78
79 if (reply.empty()) {
80 TLOG() << "No reply from the AMC.";
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}
#define TLOG(...)
Definition macro.hpp:22

◆ card_stop()

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

Definition at line 71 of file AMCController.cpp.

71 {
73}

◆ send_cmd()

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

Definition at line 45 of file AMCController.cpp.

45 {
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}
#define ERS_HERE
void error(const Issue &issue)
Definition ers.hpp:81

Member Data Documentation

◆ m_ctrl_ip

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

Definition at line 39 of file AMCController.hpp.

◆ m_ctrl_port

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

Definition at line 40 of file AMCController.hpp.

◆ m_data_port

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

Definition at line 41 of file AMCController.hpp.

◆ m_reset_cmd

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

Definition at line 47 of file AMCController.hpp.

◆ m_start_cmd

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

Definition at line 45 of file AMCController.hpp.

◆ m_status_cmd

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

Definition at line 44 of file AMCController.hpp.

◆ m_stop_cmd

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

Definition at line 46 of file AMCController.hpp.


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