12#ifndef DAPHNEMODULES_SRC_DAPHNEV2INTERFACE_HPP_
13#define DAPHNEMODULES_SRC_DAPHNEV2INTERFACE_HPP_
15#include <sys/socket.h>
16#include <netinet/in.h>
35 "Failed to create a socket",
41 "Failed to ping daphne board at " << ip <<
':' << port,
42 ((std::string)ip)((
int)port)
46 FailedSocketInteraction,
47 "Failed to call " << command,
48 ((std::string)command)
53 "Command " << command <<
" timed out after " << timeout_us <<
" microseconds",
54 ((std::string)command)((
unsigned int)timeout_us)
59 "Socket timed out after " << timeout_us <<
" microseconds",
60 ((
unsigned int)timeout_us)
78 std::chrono::milliseconds timeout = std::chrono::milliseconds(500));
88 void write_register(uint64_t addr, std::vector<uint64_t> && data)
const {
write(0x01, addr, std::move(data)) ; }
91 void write_buffer(uint64_t addr, std::vector<uint64_t> && data)
const {
write(0x09, addr, std::move(data)) ; }
108 void write( uint8_t command_id, uint64_t addr, std::vector<uint64_t> && data)
const;
109 std::vector<uint64_t>
read(uint8_t command_id, uint64_t addr, uint8_t
size)
const;
#define ERS_DECLARE_ISSUE(namespace_name, class_name, message, attributes)
void write_register(uint64_t addr, std::vector< uint64_t > &&data) const
std::mutex m_access_mutex
DaphneV2Interface(DaphneV2Interface &&)=delete
bool validate_connection() const
void write(uint8_t command_id, uint64_t addr, std::vector< uint64_t > &&data) const
std::vector< uint64_t > read_buffer(uint64_t addr, uint8_t size) const
std::vector< uint64_t > read(uint8_t command_id, uint64_t addr, uint8_t size) const
void write_buffer(uint64_t addr, std::vector< uint64_t > &&data) const
command_result send_command_retry(std::string cmd, size_t retry=std::numeric_limits< size_t >::max()) const
DaphneV2Interface(const DaphneV2Interface &)=delete
std::mutex m_command_mutex
DaphneV2Interface(const char *ipaddr, int port, std::chrono::milliseconds timeout=std::chrono::milliseconds(500))
std::vector< uint64_t > read_register(uint64_t addr, uint8_t size) const
command_result send_command(std::string cmd) const
DaphneV2Interface & operator=(const DaphneV2Interface &)=delete
command_result send_command_interruptible(std::string cmd, std::function< bool()> can_retry) const
std::chrono::milliseconds m_timeout
FELIX Initialization std::string initerror FELIX queue timed std::string queuename Unexpected chunk size