PROFINET IO Controller Stack 1.0.0
Modern C++ implementation of a PROFINET IO Controller stack
Loading...
Searching...
No Matches
asioEthernetSocket.cpp
Go to the documentation of this file.
1
3
5
7
8namespace profinet
9{
10AsioEthernetSocket::AsioEthernetSocket(asio::io_context& ioContext, const std::string& interface, std::uint16_t ethertype)
11 : ioContext(ioContext), backend(std::make_unique<EthernetPacketBackend>(ioContext, interface, ethertype))
12{
13}
14
16
17void AsioEthernetSocket::Send(const std::vector<std::uint8_t>& frame)
18{
19 backend->Send(frame);
20}
21
22void AsioEthernetSocket::SetTimeout(std::chrono::milliseconds newTimeout)
23{
24 backend->SetTimeout(newTimeout);
25}
26
27std::vector<std::uint8_t> AsioEthernetSocket::Recv()
28{
29 return backend->Recv();
30}
31
32} // namespace profinet
Asio-backed platform-independent raw Ethernet transport.
Private packet-capture backend for complete Ethernet frames.
AsioEthernetSocket(asio::io_context &ioContext, const std::string &interface, std::uint16_t ethertype=0)
Construct an Ethernet transport for a network interface.
void Send(const std::vector< std::uint8_t > &frame) override
Send one complete Ethernet frame.
std::vector< std::uint8_t > Recv() override
Receive one complete Ethernet frame.
std::unique_ptr< EthernetPacketBackend > backend
Platform packet-access implementation.
void SetTimeout(std::chrono::milliseconds timeout) override
Set the receive timeout.
~AsioEthernetSocket() override
Destroy the Ethernet transport.
Private Ethernet packet backend used by AsioEthernetSocket.
Bytes frame
std::unique_ptr< asio::io_context > ioContext
Shared ASIO context.