summaryrefslogtreecommitdiffstats
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
* Raise default publishing interval from 100ms to 250msThomas Vanbesien7 hours1-1/+1
|
* Add custom log handler and expand demo node coverageThomas Vanbesien7 hours1-0/+6
| | | | | | | | | Replace default Qt message pattern with a custom handler that matches open62541 server log format: timestamps with UTC offset, colored type/category tags padded to 20 chars, and shortened category names. Add sbyte, byte, datetime, guid, and bytestring node types to all three demo pages. Add Guid type coercion to writeValue.
* Wire monitored property to OPC UA monitored itemsThomas Vanbesien9 hours2-3/+86
| | | | | | | The monitored bool now calls enableMonitoring/disableMonitoring on the Value attribute. Adds publishingInterval property (default 100ms). Value is no longer read at init — delivered by the monitored item. Empty 4th demo page to verify monitoring stops when navigating away.
* Add write support with automatic type coercion to OpcUaMonitoredNodeThomas Vanbesien10 hours2-4/+235
| | | | | | | | | writeValue() Q_INVOKABLE coerces QML JS types to the exact C++ type expected by the OPC UA node (auto-detected from DataType attribute via opcUaDataTypeToQOpcUaType). Handles all scalar types, booleans, and comma-separated array input. Adds writable property derived from AccessLevel bits. Demo shows inline TextField + Write button for writable nodes, "(READ-ONLY)" for others.
* Display all 30 nodes across 3 pages with human-readable tooltipsThomas Vanbesien11 hours2-4/+24
| | | | | | NodePage rewritten with Repeater/ItemDelegate showing 10 nodes per page (RW Scalars, RO Scalars, RW Arrays). DataType resolved via namespace0Id helpers, AccessLevel decoded from bitmask to readable flags.
* Implement OpcUaMonitoredNode attribute reading with OpcUaNodeInfo gadgetThomas Vanbesien11 hours2-0/+212
|
* Add nodeId and monitored properties to OpcUaMonitoredNodeThomas Vanbesien12 hours2-0/+46
|
* Rename classes to OpcUa* prefix, replace BobinkNode with OpcUaMonitoredNode ↵Thomas Vanbesien13 hours9-617/+145
| | | | | | | | | | boilerplate Rename BobinkAuth → OpcUaAuth, BobinkClient → OpcUaClient (C++ class names only; QML module URI and singleton name stay as Bobink). Remove BobinkNode (QQuickItem-based) and add OpcUaMonitoredNode skeleton using QObject + QQmlParserStatus, following Qt convention for non-visual QML types.
* Extract errorChanged lambda into named handleClientError slotThomas Vanbesien24 hours2-10/+14
|
* Refactor BobinkClient and clean up commentsThomas Vanbesien25 hours3-63/+82
| | | | | | | | | | - Format BobinkAuth.cpp to match GNU style used elsewhere - Replace brittle error name array with QMetaEnum in BobinkClient - Move QOpcUaPkiConfiguration include from header to .cpp - Replace m_discoveryInterval member with file-scope constant - Add doc comments to SecurityMode and SecurityPolicy enums - Comment endpoint selection strategy in handleEndpointsReceived - Add missing QML ids to connectionPage and serverListView
* Reorganize BobinkClient by domain and make s_instance privateThomas Vanbesien25 hours3-225/+232
| | | | | | | Group header and source by domain (Connection, Discovery, PKI) so properties, methods, and signal handlers live together. Move enums before constructor, move s_instance to private, and add a public instance() accessor used by BobinkNode.
* Rename QML singleton to Bobink and simplify singleton lifecycleThomas Vanbesien29 hours4-49/+25
| | | | | | | | Replace QML_ELEMENT with QML_NAMED_ELEMENT(Bobink) so QML references use `Bobink` instead of `BobinkClient`. Remove instance()/create() factory in favor of inline s_instance set in the constructor. Import BobinkPlugin statically in demo, link demo to BobinkQtOpcUaplugin, and make library link dependencies PUBLIC. Add .qtcreator to gitignore.
* Log attribute reads to debug console and replace raw C++ types with Qt ↵Thomas Vanbesien35 hours4-33/+160
| | | | | | | | | | | | equivalents Connect QOpcUaNode::attributeRead signal to new handler that logs read results (value or error code) to the debug console via BobinkClient::statusMessage. Add nameFromAttribute() helper. Replace const char* arrays with QLatin1StringView, bare string literals with QStringLiteral, uint with quint32, int with qint32. Rename statusLog to debugLog in Main.qml for consistency.
* Add BobinkNode QML type and two-page demo for node monitoringThomas Vanbesien41 hours3-0/+404
| | | | | | | | | | | | | BobinkNode (QQuickItem) monitors a single OPC UA node with automatic lifecycle: monitoring starts/stops based on item visibility (StackView page switches, Loader, etc.). Properties: nodeId, value (r/w), status, sourceTimestamp, serverTimestamp. On-demand readAttribute() for metadata. writeError signal for failed writes. Demo restructured with StackView: connection page → two node pages demonstrating the visibility-based monitoring lifecycle.
* Rename targets, route messages to debug console, clean upThomas Vanbesien42 hours3-287/+434
| | | | | | | | - Rename CMake project and library target to BobinkQtOpcUa (URI stays Bobink) - Rename demo target to BobinkDemo, output binary to build/bin/ - Route all QML status/error messages to the in-app debug console - Remove discoveryInterval QML property, default to 30s internally - Add errorChanged handler, PKI file validation in applyPki()
* Add direct connect, auto-detect PKI, and rework demo flowThomas Vanbesien2 days2-0/+99
| | | | | | | | | | | - connectDirect(policy, mode): connect without endpoint discovery, for servers with no unencrypted endpoint. Sets user identity token policy matching the auth mode. - autoDetectPki(): scan own/certs/*.der and own/private/*.pem|crt, called automatically at startup. - Demo: discovery auto-starts, PKI section hidden behind toggle with auto-detected cert summary, direct connect appears on connect failure. File/folder dialogs for manual PKI override.
* Refactor and document: fix cert filenames, add Doxygen, improve demoThomas Vanbesien3 days5-46/+158
| | | | | | | | | | | | | | | | | | | Refactoring (issues 1,3,4,5,7,8,9,10 from review): - Replace hardcoded cert filenames with certFile/keyFile properties - Add 30s timeout to certificate trust QEventLoop - Cache servers() QVariantList instead of rebuilding per call - Validate URLs before passing to QtOpcUa - Use ComboBox valueRole for robust enum mapping - Add certificate trust dialog to demo - Remove unnecessary RowLayout wrapper - Remove debug output from BuildDeps.cmake Documentation: - Add Doxygen file blocks to all C++ files - Document AuthMode enum, toAuthenticationInformation(), key Q_INVOKABLE methods, certificateTrustRequested signal contract - Convert section banners to standard format - Add file/target comments to CMake and QML files
* Initial Bobink library: BobinkAuth, BobinkClient, and demo appThomas Vanbesien3 days5-0/+583
Implements the core OPC UA wrapper library with: - Build system with automatic dep building (open62541, QtOpcUa) - BobinkAuth: QML auth component (anonymous/userpass/certificate) - BobinkClient: QML singleton managing connection, LDS discovery, PKI configuration, endpoint selection, and certificate trust flow - Demo app for manual testing of the full connection flow