|
PROFINET IO Controller Stack 1.0.0
Modern C++ implementation of a PROFINET IO Controller stack
|
Classes | |
| struct | GSDMLBitDataItem |
| One bit-defined logical signal within a GSDML DataItem. More... | |
| struct | IoSignal |
| Describes one logical process-data signal available from a GSDML device. More... | |
| class | IoSignalCatalog |
| Builds and owns the logical sensor and actuator signals described by a GSDML device. More... | |
Enumerations | |
| enum class | IoSignalDirection { Sensor , Actuator } |
| Logical direction of a process-data signal from the controller's perspective. More... | |
| enum class | IoSignalValueType { Boolean , SignedInteger , UnsignedInteger , FloatingPoint , Unsupported } |
| Logical value category used when exposing a signal to higher layers. More... | |
Functions | |
| IoSignalValueType | ClassifyDataType (std::string_view dataType) noexcept |
| Classify a GSDML DataType into a logical connector value category. | |
| bool | IsReservedSignal (std::string_view textId, std::string_view name) noexcept |
| Determine whether a DataItem should be hidden from the normal signal catalogue. | |
| bool | IsReservedSignal (std::string_view textId, std::string_view bitId, std::string_view name) noexcept |
| Determine whether a DataItem should be hidden from the normal signal catalogue. | |
| TEST (IoSignalTypeTests, ClassifiesAllDoubleCompatibleScalarTypes) | |
| TEST (IoSignalTypeTests, ClassifiesUnsupportedAndUnknownTypes) | |
| TEST (IoSignalReservedTests, DetectsReservedTextIdsCaseInsensitively) | |
| TEST (IoSignalReservedTests, DoesNotMisclassifyNormalSignals) | |
| TEST (IoSignalTests, DirectionAccessorsReportCorrectDirection) | |
| TEST (IoSignalTests, DoubleCompatibilityAccessorMirrorsFlag) | |
| TEST (IoSignalCatalogTests, EmptyDeviceProducesEmptyCatalogue) | |
| TEST (IoSignalCatalogTests, SeparatesInputAndOutputSignals) | |
| TEST (IoSignalCatalogTests, CalculatesIndependentInputAndOutputOffsets) | |
| TEST (IoSignalCatalogTests, ZeroLengthDataItemDoesNotAdvanceOffset) | |
| TEST (IoSignalCatalogTests, NegativeDataItemLengthThrows) | |
| TEST (IoSignalCatalogTests, EmptyTextIdUsesFallbackName) | |
| TEST (IoSignalCatalogTests, FiltersReservedItems) | |
| TEST (IoSignalCatalogTests, ReservedItemStillAdvancesOffset) | |
| TEST (IoSignalCatalogTests, KeepsUnsupportedSignalsWithCompatibilityFalse) | |
| TEST (IoSignalCatalogTests, SupportedScalarSignalsAreDoubleCompatible) | |
| TEST (IoSignalCatalogTests, PreservesModuleAndSubmoduleMetadata) | |
| TEST (IoSignalCatalogTests, CombinesAndNormalizesPossibleModuleSlots) | |
| TEST (IoSignalCatalogTests, CombinesAndNormalizesPossibleInlineSubmoduleSlots) | |
| TEST (IoSignalCatalogTests, IncludesAllModulesWhenNoModuleReferencesExist) | |
| TEST (IoSignalCatalogTests, UsesOnlyReferencedModulesWhenReferencesExist) | |
| TEST (IoSignalCatalogTests, MergesDuplicateModuleReferences) | |
| TEST (IoSignalCatalogTests, ResolvesGlobalSubmoduleReference) | |
| TEST (IoSignalCatalogTests, PrefersInlineSubmoduleOverDuplicateGlobalReference) | |
| TEST (IoSignalCatalogTests, UnknownModuleReferenceThrows) | |
| TEST (IoSignalCatalogTests, MergesDuplicateSubmoduleReferences) | |
| TEST (IoSignalCatalogTests, UnknownSubmoduleReferenceThrows) | |
| TEST (IoSignalCatalogTests, IncludesDapVirtualSubmoduleSignals) | |
| TEST (IoSignalCatalogTests, RetainsDuplicateSignalNamesAcrossSubmodules) | |
| TEST (IoSignalCatalogTests, MaintainsDeterministicCatalogueOrder) | |
| TEST (IoSignalCatalogTests, ExpandsBitDataItemsIntoIndividualSignals) | |
| TEST (IoSignalCatalogTests, BitSignalsAreBooleanAndDoubleCompatible) | |
| TEST (IoSignalCatalogTests, BitDataItemDoesNotCreateParentSignal) | |
| TEST (IoSignalCatalogTests, ConvertsBitOffsetToByteAndBitOffset) | |
| TEST (IoSignalCatalogTests, BitSignalsRetainParentDataItemOffset) | |
|
strong |
Logical direction of a process-data signal from the controller's perspective.
| Enumerator | |
|---|---|
| Sensor | Data received from the PROFINET device and therefore exposed as a sensor. |
| Actuator | Data sent to the PROFINET device and therefore exposed as an actuator. |
Definition at line 29 of file IOSignal.h.
|
strong |
Logical value category used when exposing a signal to higher layers.
Definition at line 39 of file IOSignal.h.
|
noexcept |
Classify a GSDML DataType into a logical connector value category.
| dataType | GSDML DataType string. |
Definition at line 433 of file IOSignal.cpp.
References Boolean, FloatingPoint, SignedInteger, UnsignedInteger, and Unsupported.
Referenced by TEST(), and TEST().
Here is the caller graph for this function:
|
noexcept |
Determine whether a DataItem should be hidden from the normal signal catalogue.
GSDML vendors commonly use name - for reserved bit process-data locations. Matching is deliberately limited to the character -
| textId | GSDML TextId. |
| bitId | GSDML BitId. |
| name | Current display name. |
Definition at line 460 of file IOSignal.cpp.
|
noexcept |
Determine whether a DataItem should be hidden from the normal signal catalogue.
GSDML vendors commonly use TextIds such as T_ID_RESERVE_INPUT for reserved process-data locations. Matching is deliberately limited to the words RESERVE and RESERVED; arbitrary application names are not treated as reserved.
| textId | GSDML TextId. |
| name | Current display name. |
Definition at line 465 of file IOSignal.cpp.
Referenced by TEST(), TEST(), profinet::gsdml::TEST_F(), and profinet::gsdml::TEST_F().
Here is the caller graph for this function:| profinet::io::TEST | ( | IoSignalCatalogTests | , |
| BitDataItemDoesNotCreateParentSignal | |||
| ) |
Definition at line 789 of file test_IOSignal.cpp.
References profinet::io::IoSignalCatalog::FromGsdml(), and profinet::gsdml::GSDMLDevice::modules.
Here is the call graph for this function:| profinet::io::TEST | ( | IoSignalCatalogTests | , |
| BitSignalsAreBooleanAndDoubleCompatible | |||
| ) |
Definition at line 759 of file test_IOSignal.cpp.
References Boolean, profinet::io::IoSignalCatalog::FromGsdml(), and profinet::gsdml::GSDMLDevice::modules.
Here is the call graph for this function:| profinet::io::TEST | ( | IoSignalCatalogTests | , |
| BitSignalsRetainParentDataItemOffset | |||
| ) |
Definition at line 867 of file test_IOSignal.cpp.
References profinet::io::IoSignalCatalog::FromGsdml(), and profinet::gsdml::GSDMLDevice::modules.
Here is the call graph for this function:| profinet::io::TEST | ( | IoSignalCatalogTests | , |
| CalculatesIndependentInputAndOutputOffsets | |||
| ) |
Definition at line 220 of file test_IOSignal.cpp.
References profinet::io::IoSignalCatalog::FromGsdml(), and profinet::gsdml::GSDMLDevice::modules.
Here is the call graph for this function:| profinet::io::TEST | ( | IoSignalCatalogTests | , |
| CombinesAndNormalizesPossibleInlineSubmoduleSlots | |||
| ) |
Definition at line 433 of file test_IOSignal.cpp.
References profinet::io::IoSignalCatalog::FromGsdml(), and profinet::gsdml::GSDMLDevice::modules.
Here is the call graph for this function:| profinet::io::TEST | ( | IoSignalCatalogTests | , |
| CombinesAndNormalizesPossibleModuleSlots | |||
| ) |
Definition at line 412 of file test_IOSignal.cpp.
References profinet::gsdml::GSDMLModuleReference::allowedSlots, profinet::gsdml::GSDMLModuleReference::fixedSlots, profinet::io::IoSignalCatalog::FromGsdml(), profinet::gsdml::GSDMLModuleReference::moduleId, profinet::gsdml::GSDMLDevice::moduleReferences, profinet::gsdml::GSDMLDevice::modules, and profinet::gsdml::GSDMLModuleReference::usedSlots.
Here is the call graph for this function:| profinet::io::TEST | ( | IoSignalCatalogTests | , |
| ConvertsBitOffsetToByteAndBitOffset | |||
| ) |
Definition at line 816 of file test_IOSignal.cpp.
References profinet::io::IoSignalCatalog::FromGsdml(), and profinet::gsdml::GSDMLDevice::modules.
Here is the call graph for this function:| profinet::io::TEST | ( | IoSignalCatalogTests | , |
| EmptyDeviceProducesEmptyCatalogue | |||
| ) |
Definition at line 188 of file test_IOSignal.cpp.
References profinet::io::IoSignalCatalog::FromGsdml().
Here is the call graph for this function:| profinet::io::TEST | ( | IoSignalCatalogTests | , |
| EmptyTextIdUsesFallbackName | |||
| ) |
Definition at line 283 of file test_IOSignal.cpp.
References profinet::io::IoSignalCatalog::FromGsdml(), and profinet::gsdml::GSDMLDevice::modules.
Here is the call graph for this function:| profinet::io::TEST | ( | IoSignalCatalogTests | , |
| ExpandsBitDataItemsIntoIndividualSignals | |||
| ) |
Definition at line 714 of file test_IOSignal.cpp.
References profinet::io::IoSignalCatalog::FromGsdml(), and profinet::gsdml::GSDMLDevice::modules.
Here is the call graph for this function:| profinet::io::TEST | ( | IoSignalCatalogTests | , |
| FiltersReservedItems | |||
| ) |
Definition at line 298 of file test_IOSignal.cpp.
References profinet::io::IoSignalCatalog::FromGsdml(), and profinet::gsdml::GSDMLDevice::modules.
Here is the call graph for this function:| profinet::io::TEST | ( | IoSignalCatalogTests | , |
| IncludesAllModulesWhenNoModuleReferencesExist | |||
| ) |
Definition at line 451 of file test_IOSignal.cpp.
References profinet::io::IoSignalCatalog::FromGsdml(), and profinet::gsdml::GSDMLDevice::modules.
Here is the call graph for this function:| profinet::io::TEST | ( | IoSignalCatalogTests | , |
| IncludesDapVirtualSubmoduleSignals | |||
| ) |
Definition at line 613 of file test_IOSignal.cpp.
References profinet::gsdml::GSDMLDevice::dapModuleId, profinet::gsdml::GSDMLDevice::dapModuleIdentNumber, profinet::gsdml::GSDMLDevice::dapModuleName, profinet::gsdml::GSDMLDevice::dapSubmodules, profinet::io::IoSignalCatalog::FromGsdml(), profinet::gsdml::GSDMLSubmodule::id, profinet::gsdml::GSDMLSubmodule::inputItems, profinet::gsdml::GSDMLSubmodule::name, profinet::gsdml::GSDMLSubmodule::outputItems, and profinet::gsdml::GSDMLSubmodule::submoduleIdentNumber.
Here is the call graph for this function:| profinet::io::TEST | ( | IoSignalCatalogTests | , |
| KeepsUnsupportedSignalsWithCompatibilityFalse | |||
| ) |
Definition at line 348 of file test_IOSignal.cpp.
References profinet::io::IoSignalCatalog::FromGsdml(), profinet::gsdml::GSDMLDevice::modules, and Unsupported.
Here is the call graph for this function:| profinet::io::TEST | ( | IoSignalCatalogTests | , |
| MaintainsDeterministicCatalogueOrder | |||
| ) |
Definition at line 665 of file test_IOSignal.cpp.
References profinet::io::IoSignalCatalog::FromGsdml(), and profinet::gsdml::GSDMLDevice::modules.
Here is the call graph for this function:| profinet::io::TEST | ( | IoSignalCatalogTests | , |
| MergesDuplicateModuleReferences | |||
| ) |
Definition at line 489 of file test_IOSignal.cpp.
References profinet::io::IoSignalCatalog::FromGsdml(), profinet::gsdml::GSDMLDevice::moduleReferences, and profinet::gsdml::GSDMLDevice::modules.
Here is the call graph for this function:| profinet::io::TEST | ( | IoSignalCatalogTests | , |
| MergesDuplicateSubmoduleReferences | |||
| ) |
Definition at line 572 of file test_IOSignal.cpp.
References profinet::io::IoSignalCatalog::FromGsdml(), profinet::gsdml::GSDMLSubmodule::id, profinet::gsdml::GSDMLSubmodule::inputItems, profinet::gsdml::GSDMLDevice::moduleReferences, profinet::gsdml::GSDMLDevice::modules, and profinet::gsdml::GSDMLDevice::submodules.
Here is the call graph for this function:| profinet::io::TEST | ( | IoSignalCatalogTests | , |
| NegativeDataItemLengthThrows | |||
| ) |
Definition at line 272 of file test_IOSignal.cpp.
References profinet::io::IoSignalCatalog::FromGsdml(), and profinet::gsdml::GSDMLDevice::modules.
Here is the call graph for this function:| profinet::io::TEST | ( | IoSignalCatalogTests | , |
| PrefersInlineSubmoduleOverDuplicateGlobalReference | |||
| ) |
Definition at line 540 of file test_IOSignal.cpp.
References profinet::io::IoSignalCatalog::FromGsdml(), profinet::gsdml::GSDMLSubmodule::id, profinet::gsdml::GSDMLSubmodule::inputItems, profinet::gsdml::GSDMLDevice::modules, profinet::gsdml::GSDMLSubmodule::name, and profinet::gsdml::GSDMLDevice::submodules.
Here is the call graph for this function:| profinet::io::TEST | ( | IoSignalCatalogTests | , |
| PreservesModuleAndSubmoduleMetadata | |||
| ) |
Definition at line 390 of file test_IOSignal.cpp.
References profinet::io::IoSignalCatalog::FromGsdml(), and profinet::gsdml::GSDMLDevice::modules.
Here is the call graph for this function:| profinet::io::TEST | ( | IoSignalCatalogTests | , |
| ReservedItemStillAdvancesOffset | |||
| ) |
Definition at line 325 of file test_IOSignal.cpp.
References profinet::io::IoSignalCatalog::FromGsdml(), and profinet::gsdml::GSDMLDevice::modules.
Here is the call graph for this function:| profinet::io::TEST | ( | IoSignalCatalogTests | , |
| ResolvesGlobalSubmoduleReference | |||
| ) |
Definition at line 508 of file test_IOSignal.cpp.
References profinet::gsdml::GSDMLSubmoduleReference::allowedSubslots, profinet::io::IoSignalCatalog::FromGsdml(), profinet::gsdml::GSDMLSubmodule::id, profinet::gsdml::GSDMLSubmodule::inputItems, profinet::gsdml::GSDMLDevice::moduleReferences, profinet::gsdml::GSDMLDevice::modules, profinet::gsdml::GSDMLSubmodule::name, profinet::gsdml::GSDMLSubmoduleReference::submoduleId, profinet::gsdml::GSDMLSubmodule::submoduleIdentNumber, and profinet::gsdml::GSDMLDevice::submodules.
Here is the call graph for this function:| profinet::io::TEST | ( | IoSignalCatalogTests | , |
| RetainsDuplicateSignalNamesAcrossSubmodules | |||
| ) |
Definition at line 646 of file test_IOSignal.cpp.
References profinet::io::IoSignalCatalog::FromGsdml(), and profinet::gsdml::GSDMLDevice::modules.
Here is the call graph for this function:| profinet::io::TEST | ( | IoSignalCatalogTests | , |
| SeparatesInputAndOutputSignals | |||
| ) |
Definition at line 199 of file test_IOSignal.cpp.
References profinet::io::IoSignalCatalog::FromGsdml(), and profinet::gsdml::GSDMLDevice::modules.
Here is the call graph for this function:| profinet::io::TEST | ( | IoSignalCatalogTests | , |
| SupportedScalarSignalsAreDoubleCompatible | |||
| ) |
Definition at line 367 of file test_IOSignal.cpp.
References profinet::io::IoSignalCatalog::FromGsdml(), and profinet::gsdml::GSDMLDevice::modules.
Here is the call graph for this function:| profinet::io::TEST | ( | IoSignalCatalogTests | , |
| UnknownModuleReferenceThrows | |||
| ) |
Definition at line 562 of file test_IOSignal.cpp.
References profinet::io::IoSignalCatalog::FromGsdml(), and profinet::gsdml::GSDMLDevice::moduleReferences.
Here is the call graph for this function:| profinet::io::TEST | ( | IoSignalCatalogTests | , |
| UnknownSubmoduleReferenceThrows | |||
| ) |
Definition at line 598 of file test_IOSignal.cpp.
References profinet::io::IoSignalCatalog::FromGsdml(), profinet::gsdml::GSDMLDevice::moduleReferences, and profinet::gsdml::GSDMLDevice::modules.
Here is the call graph for this function:| profinet::io::TEST | ( | IoSignalCatalogTests | , |
| UsesOnlyReferencedModulesWhenReferencesExist | |||
| ) |
Definition at line 470 of file test_IOSignal.cpp.
References profinet::io::IoSignalCatalog::FromGsdml(), profinet::gsdml::GSDMLDevice::moduleReferences, and profinet::gsdml::GSDMLDevice::modules.
Here is the call graph for this function:| profinet::io::TEST | ( | IoSignalCatalogTests | , |
| ZeroLengthDataItemDoesNotAdvanceOffset | |||
| ) |
Definition at line 251 of file test_IOSignal.cpp.
References profinet::io::IoSignalCatalog::FromGsdml(), and profinet::gsdml::GSDMLDevice::modules.
Here is the call graph for this function:| profinet::io::TEST | ( | IoSignalReservedTests | , |
| DetectsReservedTextIdsCaseInsensitively | |||
| ) |
Definition at line 139 of file test_IOSignal.cpp.
References IsReservedSignal().
Here is the call graph for this function:| profinet::io::TEST | ( | IoSignalReservedTests | , |
| DoesNotMisclassifyNormalSignals | |||
| ) |
Definition at line 150 of file test_IOSignal.cpp.
References IsReservedSignal().
Here is the call graph for this function:| profinet::io::TEST | ( | IoSignalTests | , |
| DirectionAccessorsReportCorrectDirection | |||
| ) |
Definition at line 162 of file test_IOSignal.cpp.
References Actuator, profinet::io::IoSignal::direction, profinet::io::IoSignal::IsActuator(), profinet::io::IoSignal::IsSensor(), and Sensor.
Here is the call graph for this function:| profinet::io::TEST | ( | IoSignalTests | , |
| DoubleCompatibilityAccessorMirrorsFlag | |||
| ) |
Definition at line 176 of file test_IOSignal.cpp.
References profinet::io::IoSignal::doubleCompatible, and profinet::io::IoSignal::IsDoubleCompatible().
Here is the call graph for this function:| profinet::io::TEST | ( | IoSignalTypeTests | , |
| ClassifiesAllDoubleCompatibleScalarTypes | |||
| ) |
Definition at line 95 of file test_IOSignal.cpp.
References Boolean, ClassifyDataType(), FloatingPoint, SignedInteger, and UnsignedInteger.
Here is the call graph for this function:| profinet::io::TEST | ( | IoSignalTypeTests | , |
| ClassifiesUnsupportedAndUnknownTypes | |||
| ) |
Definition at line 119 of file test_IOSignal.cpp.
References ClassifyDataType(), and Unsupported.
Here is the call graph for this function: