PROFINET IO Controller Stack 1.0.0
Modern C++ implementation of a PROFINET IO Controller stack
Loading...
Searching...
No Matches
rpc.h File Reference

PROFINET DCE/RPC protocol structures and IO-Device connection API. More...

#include <array>
#include <asio.hpp>
#include <chrono>
#include <cstdint>
#include <map>
#include <optional>
#include <string>
#include <vector>
#include "profinet/IRPCCon.h"
#include "profinet/blocks.h"
#include "profinet/dcp.h"
#include "profinet/diagnosis.h"
#include "profinet/exceptions.h"
#include "profinet/indices.h"
#include "profinet/protocol.h"
#include "profinet/rpcTransport.h"
#include "profinet/rpcTypes.h"
#include "profinet/util.h"
+ Include dependency graph for rpc.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  profinet::rpc::BlockHeaderView
 Generic block header (type + length) used to scan response blocks. More...
 
struct  profinet::rpc::EPMEndpoint
 One RPC endpoint advertised by a device's Endpoint Mapper. More...
 
class  profinet::rpc::RPCCon
 Connection to a PROFINET IO-Device: establishes an AR (Application Relationship) and performs acyclic read/write and CONTROL operations. More...
 

Namespaces

namespace  profinet
 
namespace  profinet::rpc
 

Functions

BlockHeaderView profinet::rpc::PeekBlockHeader (const Bytes &data, std::size_t offset)
 
std::string profinet::rpc::UuidBytesToString (const std::array< std::uint8_t, uuidLenght > &data)
 Format a 16-byte DCE/RPC UUID as a canonical string.
 
std::array< std::uint8_t, uuidLenghtprofinet::rpc::StringToUuidBytes (const std::string &uuidStr)
 Parse a canonical UUID string into 16 raw DCE/RPC UUID bytes.
 
std::vector< EPMEndpointprofinet::rpc::EpmLookup (asio::io_context &ioContext, const std::string &ip, std::uint16_t port=RPC_PORT, double timeoutSec=DEFAULT_TIMEOUT, std::optional< std::string > interfaceFilter=std::nullopt)
 Query a device's Endpoint Mapper for available RPC endpoints.
 
dcp::DCPDeviceDescription profinet::rpc::GetStationInfo (const EthernetSocket &sock, const MacAddress &src, const std::string &name, int timeoutSec=static_cast< int >(DEFAULT_TIMEOUT *2))
 Resolve a device by PROFINET station name via DCP.
 

Detailed Description

PROFINET DCE/RPC protocol structures and IO-Device connection API.

Defines RPC packet structures, Endpoint Mapper support, IOCR configuration, and the RPCCon interface used to establish and operate a PROFINET Application Relationship with an IO-Device.

Ported from profinet-py's profinet/rpc.py.

Provides IO-Controller RPC functionality over UDP port 34964:

  • EpmLookup() / GetStationInfo(): endpoint discovery
  • RPCCon: AR connect/release, acyclic read/write, CONTROL operations (PrmBegin/PrmEnd/ApplicationReady/ReadyForRtClass3), I&M reads

Not yet ported from rpc.py (left for a later pass – they depend on blocks.py/indices.py/diagnosis.py, which hadn't been ported yet when this module was first written): read_inm0filter, read_logbook, read_ar_info, enumerate_records, scan_slots.

Definition in file rpc.h.