From def93db21b2417d7a3be861e28db88f48f164afb Mon Sep 17 00:00:00 2001 From: Paris Date: Wed, 6 Dec 2023 11:50:34 +0100 Subject: [PATCH 1/9] Update conf.py: import subprocess and datetime; add get_git_commit_hash() and get_current_date() functions; update project variable to lowercase; update html_context to include commit hash and date. --- Documentation/source/conf.py | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/Documentation/source/conf.py b/Documentation/source/conf.py index 7eeccd23..c9ae2af3 100644 --- a/Documentation/source/conf.py +++ b/Documentation/source/conf.py @@ -14,10 +14,21 @@ # import sys # sys.path.insert(0, os.path.abspath('.')) +import subprocess +import datetime + +def get_git_commit_hash(): + try: + return subprocess.check_output(['git', 'rev-parse', 'HEAD']).decode('ascii').strip() + except Exception: + return 'N/A' + +def get_current_date(): + return datetime.datetime.now().strftime("%Y-%m-%d") # -- Project information ----------------------------------------------------- -project = 'Quasar' +project = 'quasar' copyright = '2022, Paris Moschovakos' author = 'Paris Moschovakos' @@ -64,7 +75,7 @@ locale_dirs = ['../locales'] html_context = { - "display_github": False, - "last_updated": True, - "commit": True -} + "display_github": False, + "commit": get_git_commit_hash(), + "last_updated": get_current_date(), +} \ No newline at end of file From 4066904c4b8d1fee22c01b6abef5087a99cf9ce5 Mon Sep 17 00:00:00 2001 From: Paris Moschovakos Date: Wed, 6 Dec 2023 11:58:23 +0100 Subject: [PATCH 2/9] Update deploy_documentation.yml --- .github/workflows/deploy_documentation.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/deploy_documentation.yml b/.github/workflows/deploy_documentation.yml index a3a3db3e..ff33bfff 100644 --- a/.github/workflows/deploy_documentation.yml +++ b/.github/workflows/deploy_documentation.yml @@ -53,12 +53,12 @@ jobs: export SPHINXBUILD=`which sphinx-build` make epub - cp ./build/epub/Quasar.epub ./_build/${{ env.VERSION_NAME }} - mv ./_build/${{ env.VERSION_NAME }}/Quasar.epub ./_build/${{ env.VERSION_NAME }}/Quasar\ ${{ env.VERSION_NAME }}.epub + cp ./build/epub/quasar.epub ./_build/${{ env.VERSION_NAME }} + mv ./_build/${{ env.VERSION_NAME }}/quasar.epub ./_build/${{ env.VERSION_NAME }}/quasar\ ${{ env.VERSION_NAME }}.epub make latexpdf cp ./build/latex/quasar.pdf ./_build/${{ env.VERSION_NAME }} - mv ./_build/${{ env.VERSION_NAME }}/quasar.pdf ./_build/${{ env.VERSION_NAME }}/Quasar\ ${{ env.VERSION_NAME }}.pdf + mv ./_build/${{ env.VERSION_NAME }}/quasar.pdf ./_build/${{ env.VERSION_NAME }}/quasar\ ${{ env.VERSION_NAME }}.pdf - name: Update server run: | From efc05aaa46a44215a9a73493012656fce2a8b37d Mon Sep 17 00:00:00 2001 From: Paris Date: Wed, 6 Dec 2023 12:02:45 +0100 Subject: [PATCH 3/9] Update get_git_commit_hash() to use --short flag for git rev-parse --- Documentation/source/conf.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Documentation/source/conf.py b/Documentation/source/conf.py index c9ae2af3..f9d3e3a8 100644 --- a/Documentation/source/conf.py +++ b/Documentation/source/conf.py @@ -19,7 +19,7 @@ def get_git_commit_hash(): try: - return subprocess.check_output(['git', 'rev-parse', 'HEAD']).decode('ascii').strip() + return subprocess.check_output(['git', 'rev-parse', '--short', 'HEAD']).decode('ascii').strip() except Exception: return 'N/A' From 64ee3310381c761520a91e76e16b093621ea5db7 Mon Sep 17 00:00:00 2001 From: Paris Date: Wed, 6 Dec 2023 14:02:08 +0100 Subject: [PATCH 4/9] sync terms in docs --- Documentation/source/AlternativeBackends.rst | 4 ++-- Documentation/source/ChangeLog.rst | 14 ++++++------- Documentation/source/LogIt.rst | 12 +++++------ .../UserDefinedCommandLineParameters.rst | 4 ++-- ...efinedRuntimeConfigurationModification.rst | 4 ++-- Documentation/source/_init_index.rst | 2 +- Documentation/source/index.rst | 12 +++++------ Documentation/source/quasarBuildSystem.rst | 8 ++++---- Documentation/source/quasarCommands.rst | 2 +- Documentation/source/yocto.rst | 20 +++++++++---------- 10 files changed, 41 insertions(+), 41 deletions(-) diff --git a/Documentation/source/AlternativeBackends.rst b/Documentation/source/AlternativeBackends.rst index 04d67b45..1aea1095 100644 --- a/Documentation/source/AlternativeBackends.rst +++ b/Documentation/source/AlternativeBackends.rst @@ -1,4 +1,4 @@ -OPC-UA back-ends for quasar +OPC UA back-ends for quasar =========================== Author: Piotr P. Nikiel @@ -47,7 +47,7 @@ quasar developers as one of supported "optional modules". Activating open62541 is a simple procedure which is best described in the quasar tutorials on YouTube, see e.g. ``__ . -OPC-UA Back-end dependent features: a comparison table +OPC UA Back-end dependent features: a comparison table ------------------------------------------------------ +-----------------+-----------------+-----------------+-----------------+ diff --git a/Documentation/source/ChangeLog.rst b/Documentation/source/ChangeLog.rst index 2b2988e8..4c0982eb 100644 --- a/Documentation/source/ChangeLog.rst +++ b/Documentation/source/ChangeLog.rst @@ -1321,7 +1321,7 @@ ChangeLog Task
  • [OPCUA-1971] - - Expose configentry as OPC-UA property - for scalars
  • + - Expose configentry as OPC UA property - for scalars
Improvement
    @@ -2510,7 +2510,7 @@ ChangeLog Task
    • [OPCUA-1128] - - generate device --all doesn't work in SCA OPC-UA
    • + - generate device --all doesn't work in SCA OPC UA
    • [OPCUA-1144] - Remove stale boost/foreach includes in Meta
    • [OPCUA-1147] @@ -2885,7 +2885,7 @@ ChangeLog
    • [OPCUA-106] - Quasar methods
    • [OPCUA-579] - - Easily selectable OPC-UA backend configuration file + - Easily selectable OPC UA backend configuration file (ServerConfig.xml)
    • [OPCUA-668] - Post-merge: missing copyright header in @@ -2961,7 +2961,7 @@ ChangeLog Major features:
        -
      • Compatibility with the API of OPC-UA Toolkit 1.3.x, +
      • Compatibility with the API of OPC UA Toolkit 1.3.x, 1.4.x and 1.5.x.
      @@ -2987,7 +2987,7 @@ ChangeLog Task
      • [OPCUA-588] - - Port quasar to OPC-UA Toolkit 1.4.x
      • + - Port quasar to OPC UA Toolkit 1.4.x
      • [OPCUA-606] - Refresh FAQ of Quasar
      @@ -3116,7 +3116,7 @@ ChangeLog New Feature
      • [OPCUA-489] - - Make QUASAR framework version info available to OPC-UA + - Make QUASAR framework version info available to OPC UA clients from StandardMetaData
      Task @@ -3166,7 +3166,7 @@ ChangeLog New Feature
      • [OPCUA-489] - - Make QUASAR framework version info available to OPC-UA + - Make QUASAR framework version info available to OPC UA clients from StandardMetaData
      Task diff --git a/Documentation/source/LogIt.rst b/Documentation/source/LogIt.rst index 072dbed0..bc917b09 100644 --- a/Documentation/source/LogIt.rst +++ b/Documentation/source/LogIt.rst @@ -23,7 +23,7 @@ Initializing LogIt in the Quasar Server code - sending commands to some target hardware (e.g. calling some 3rd party API) -- accepting input (e.g. handling OPC-UA client item writes and method +- accepting input (e.g. handling OPC UA client item writes and method calls) - handling hardware disconnection/reconnection events @@ -115,7 +115,7 @@ allows for an integrated approach to logging that allows you to configure the verbosity of logging components both - initially, via the quasar server XML configuration -- dynamically, via an OPC-UA client +- dynamically, via an OPC UA client Initial Verbosity: Via Server Config XML ---------------------------------------- @@ -147,14 +147,14 @@ Runtime Verbosity: Via an OPC_UA client --------------------------------------- | Per-component verbosity can be read and set at runtime via standard - quasar OPC-UA items (via *StandardMetaData.Log.ComponentLogLevels*). - The screenshot below shows a graphical OPC-UA client (Unified + quasar OPC UA items (via *StandardMetaData.Log.ComponentLogLevels*). + The screenshot below shows a graphical OPC UA client (Unified Auomtation's uaexpert client) viewing these items. Writing a new verbosity value, for example, setting component *ADDRESS_SPACE_UPDATES* verbosity from *WRN* -> *TRC*, would result in all messages (TRC is the highest verbosity setting) for that component being delivered to the log. -| |screenshot of OPC-UA client setting log component verbosity| +| |screenshot of OPC UA client setting log component verbosity| Quasar Framework Maintainers: Dealing with LogIt as a Git Submodule ------------------------------------------------------------------- @@ -220,4 +220,4 @@ Then your fellow quasar maintainers update their environments with git submodule update --init --recursive -.. |screenshot of OPC-UA client setting log component verbosity| image:: images/opc-ua-items-for-logging-verbosity.PNG +.. |screenshot of OPC UA client setting log component verbosity| image:: images/opc-ua-items-for-logging-verbosity.PNG diff --git a/Documentation/source/UserDefinedCommandLineParameters.rst b/Documentation/source/UserDefinedCommandLineParameters.rst index e03485dc..26b663f1 100644 --- a/Documentation/source/UserDefinedCommandLineParameters.rst +++ b/Documentation/source/UserDefinedCommandLineParameters.rst @@ -4,7 +4,7 @@ User Defined Command Line Parameters Background ---------- -An OPC-UA server may be a rather complex process, as such, developers +An OPC UA server may be a rather complex process, as such, developers may well want to provide implementation specific command line options - to allows end-users to control aspects of the server's runtime behaviour, say specifying additional configuration options outside of @@ -55,7 +55,7 @@ A Simple Example ---------------- This example shows how to add the 2 command line options listed below -such that a quasar OPC-UA server executable, once built, will parse for +such that a quasar OPC UA server executable, once built, will parse for these options, complete with end-user facing, option specifc, documentation: diff --git a/Documentation/source/UserDefinedRuntimeConfigurationModification.rst b/Documentation/source/UserDefinedRuntimeConfigurationModification.rst index 072783ba..4d34fe6b 100644 --- a/Documentation/source/UserDefinedRuntimeConfigurationModification.rst +++ b/Documentation/source/UserDefinedRuntimeConfigurationModification.rst @@ -22,14 +22,14 @@ User Defined Runtime Configuration Modification Background ---------- -| A completely static configuration for an OPC-UA server may not always +| A completely static configuration for an OPC UA server may not always be exactly the desired behaviour; for example - consider a multi-channel, highly modular, power supply system. For such a system it may be beneficial to users to provide functionality from the quasar server such that (with the correct command line options specified of course) the server actually detects the hardware that is connected and uses this as the basis for its runtime configuration. This might be an - efficient way to run an OPC-UA server in situations where, say, the + efficient way to run an OPC UA server in situations where, say, the hardware setup is in flux (maybe an ad-hoc lab configuration) and so manual modification of a static configuration file to describe the system is painful. Equally, in a large production set up, the server diff --git a/Documentation/source/_init_index.rst b/Documentation/source/_init_index.rst index 868ddc19..06bcccde 100644 --- a/Documentation/source/_init_index.rst +++ b/Documentation/source/_init_index.rst @@ -30,5 +30,5 @@ Quasar :hidden: :caption: Quasar OpcUa Server - Summary of known quasar-based OPC-UA servers <./quasar_OPC_UA_servers> + Summary of known quasar-based OPC UA servers <./quasar_OPC_UA_servers> diff --git a/Documentation/source/index.rst b/Documentation/source/index.rst index c64ab712..dee32a8c 100644 --- a/Documentation/source/index.rst +++ b/Documentation/source/index.rst @@ -1,4 +1,4 @@ -Quasar +quasar ====== | The quick opcua server generation framework. @@ -23,10 +23,10 @@ Quasar Design manual <./DesignManual> For quasar developers <./forQuasarDevelopers> LogIt <./LogIt> - Quasar <./quasar> + quasar <./quasar> - Quasar build system <./quasarBuildSystem> - Quasar commands <./quasarCommands> + quasar build system <./quasarBuildSystem> + quasar commands <./quasarCommands> User defined command line parameters <./UserDefinedCommandLineParameters> User defined runtime configuration modification <./UserDefinedRuntimeConfigurationModification> Windows setup <./WindowsSetup> @@ -44,7 +44,7 @@ Quasar .. toctree:: :hidden: - :caption: Quasar OpcUa Server + :caption: quasar OPC UA Servers - Summary of known quasar-based OPC-UA servers <./quasar_OPC_UA_servers> + Summary of known quasar-based OPC UA servers <./quasar_OPC_UA_servers> diff --git a/Documentation/source/quasarBuildSystem.rst b/Documentation/source/quasarBuildSystem.rst index 11b4d164..576c3c65 100644 --- a/Documentation/source/quasarBuildSystem.rst +++ b/Documentation/source/quasarBuildSystem.rst @@ -9,7 +9,7 @@ quasar, quasar-based servers and the build system ================================================= quasar is a framework for rapid and efficient development of -(quasar-based) OPC-UA servers in the C++ programming language. A build +(quasar-based) OPC UA servers in the C++ programming language. A build system must accompany a framework like quasar to offload its users from tasks like: @@ -183,7 +183,7 @@ A build configuration file is a CMake script defining (typically using the set() statement) the configuration of a build. The aspects typically covered by build configs are: -- Path to OPC-UA stack (if used) +- Path to OPC UA stack (if used) - Path to boost headers and libs and list of libraries to link against if they cannot be automatically resolved. Note that by default, the quasar cmake engine uses FindBoost to resolve boost header and lib @@ -196,7 +196,7 @@ In addition, path(s) to cross-compilers and their sysroot(s) are often specified there. You can have (store) multiple build configuration files because one -OPC-UA server project might be built to suit requirements of different +OPC UA server project might be built to suit requirements of different clients. For instance, you can have one build config for Windows Server 2012, one config for Windows 10, one config for Ubuntu and one for cross-compiling for Raspian. @@ -319,4 +319,4 @@ Recommendations to server developers - Never modify the master CMakeLists.txt - Put relevant settings to ProjectSettings.cmake - Use as many build configurations as you need. It is common to reuse - build configurations between multiple OPC-UA server projects. + build configurations between multiple OPC UA server projects. diff --git a/Documentation/source/quasarCommands.rst b/Documentation/source/quasarCommands.rst index 4dc3336a..c9efa903 100644 --- a/Documentation/source/quasarCommands.rst +++ b/Documentation/source/quasarCommands.rst @@ -8,7 +8,7 @@ quasar.py commands help build ----- -| This is the main command to build the project (a quasar-based OPC-UA +| This is the main command to build the project (a quasar-based OPC UA server). | Syntax: diff --git a/Documentation/source/yocto.rst b/Documentation/source/yocto.rst index c30b24ad..e625efdb 100644 --- a/Documentation/source/yocto.rst +++ b/Documentation/source/yocto.rst @@ -11,7 +11,7 @@ Introduction | | This rather short how-to explains how to integrate a Quasar-based - OPC-UA server with Yocto. + OPC UA server with Yocto. | Prerequisites: - familiarity with Quasar: creating Quasar projects, working with @@ -25,7 +25,7 @@ Introduction | The how-to presented here has been attempted in: - Yocto, different versions (including Rocko and Sumo), -- PetaLinux 2017.4, which uses Yocto behind the scenes, to build OPC-UA +- PetaLinux 2017.4, which uses Yocto behind the scenes, to build OPC UA server for a PetaLinux-based project. Note that only few points of those presented here will be of use for PetaLinux integration, especially the recipes will be of value. @@ -44,7 +44,7 @@ The terminology (in this manual it was in the krogoth version). I cloned it from Yocto git repo. I will call it **poky repo**. - ~/gitProjects/poky-quasar - is where I will have my Quasar-based OPC-UA server project. I will + is where I will have my Quasar-based OPC UA server project. I will call it **project repo**. The procedure @@ -201,7 +201,7 @@ Build core-image-minimal (in case it's your first Yocto build) bitbake core-image-minimal -Create a new Yocto layer for your quasar OPC-UA server(s) +Create a new Yocto layer for your quasar OPC UA server(s) --------------------------------------------------------- | From poky repo: @@ -214,7 +214,7 @@ Create a new Yocto layer for your quasar OPC-UA server(s) | -Deploy the Yocto recipe for your OPC-UA server +Deploy the Yocto recipe for your OPC UA server ---------------------------------------------- | @@ -261,7 +261,7 @@ Deploy pygit2 if you want to have your build stamp embedded in the build (and av ---------------------------------------------------------------------------------------------------------- | -| If pygit2 is available at the OPC-UA server build time then later on, +| If pygit2 is available at the OPC UA server build time then later on, from the address-space as well as command line you'll be able to check which project commit has been used to produce the executable. | In case you don't have pygit2 via your Yocto/PetaLinux you can use the @@ -318,7 +318,7 @@ Deploy meta-openembedded layer to get some required Python modules bitbake-layers add-layer ../meta-openembedded/meta-oe bitbake-layers add-layer ../meta-openembedded/meta-python -Add your OPC-UA server artifacts to be installed on the target image +Add your OPC UA server artifacts to be installed on the target image -------------------------------------------------------------------- | @@ -336,7 +336,7 @@ Build the minimal image bitbake core-image-minimal -| You can also build only the OPC-UA server: +| You can also build only the OPC UA server: .. container:: @@ -353,7 +353,7 @@ Run the minimal image in qemu | You should see your operating system bootin in qemu. -Run the OPC-UA server +Run the OPC UA server --------------------- | Once you see login prompt in qemu, login as root. @@ -369,7 +369,7 @@ Run the OPC-UA server just edit (vi) the config file making sure that Configuration.xsd has no path prefix**. -Connect to the OPC-UA server using UaExpert +Connect to the OPC UA server using UaExpert ------------------------------------------- | From c1590f3e5aa65e64d33ac2ffc4ceeb52a1951089 Mon Sep 17 00:00:00 2001 From: Pablo Dubru Carrasco Date: Mon, 8 Jan 2024 11:22:28 +0100 Subject: [PATCH 5/9] Modification of documentation source files to fix format issues --- .../UserDefinedCommandLineParameters.rst | 29 +++++++------------ ...efinedRuntimeConfigurationModification.rst | 19 ++++-------- 2 files changed, 17 insertions(+), 31 deletions(-) diff --git a/Documentation/source/UserDefinedCommandLineParameters.rst b/Documentation/source/UserDefinedCommandLineParameters.rst index 26b663f1..17a7db75 100644 --- a/Documentation/source/UserDefinedCommandLineParameters.rst +++ b/Documentation/source/UserDefinedCommandLineParameters.rst @@ -34,7 +34,7 @@ Adding the command line options As is often the case in quasar, user specific implementation code is included in the server by overriding methods. The virtual method to -override is ```` +override is :: @@ -65,7 +65,7 @@ documentation: - some_string: A named string value So, we want to be able to start the server process wit a command line -like: ```` +like: :: @@ -75,7 +75,6 @@ like: ```` In this case add them to class QuasarServer. | Also add the virtual method override (also to class QuasarServer) Now the class definition pseudo code looks like... -| ```` :: @@ -83,42 +82,36 @@ like: ```` { ...etc... virtual void appendCustomCommandLineOptions(boost::program_options::options_description& commandLineOptions, - boost::program_options::positional_options_description& positionalOptionsDescription - -); ... etc ... bool m_someSwitch; std::string m_someString; } + boost::program_options::positional_options_description& positionalOptionsDescription); + ... etc ... bool m_someSwitch; std::string m_someString; }`` Now add the implementation of the method -'appendCustomCommandLineOptions', for example ```` +'appendCustomCommandLineOptions', for example :: - void QuasarServer::appendCustomCommandLineOptions(boost::program_options::options_description& commandLineOptions, boost::program_options::positional_options_description& positionalOptionsDescription - -) { commandLineOptions.add_options() ("some_switch", -boost::program_options::bool_switch(&m_someSwitch)->default_value(false), -"User documentation of some_switch") ("some_string", -boost::program_options::value(&m_someString)->default_value("anyDefaultValue"), -"User documentation of some_string"); } + void QuasarServer::appendCustomCommandLineOptions(boost::program_options::options_description& commandLineOptions, boost::program_options::positional_options_description& positionalOptionsDescription) { + commandLineOptions.add_options() ("some_switch", boost::program_options::bool_switch(&m_someSwitch)->default_value(false), "User documentation of some_switch") ("some_string", boost::program_options::value(&m_someString)->default_value("anyDefaultValue"), "User documentation of some_string"); } Now, starting the server process with a command line above will result -in values ```` +in values :: QuasarServer::m_someSwitch = true QuasarServer::m_someString "hello, world!" -Furthermore, starting the server process with a command line like ```` +Furthermore, starting the server process with a command line like :: ./myServerExecutable -help will print the help documentation described above, at the command line, -for example: ```` +for example: :: ...etc... --some_switch User documentation of some_switch - --some_string arg User documentation of some_string + --some_string arg User documentation of some_string \ No newline at end of file diff --git a/Documentation/source/UserDefinedRuntimeConfigurationModification.rst b/Documentation/source/UserDefinedRuntimeConfigurationModification.rst index 4d34fe6b..622d3453 100644 --- a/Documentation/source/UserDefinedRuntimeConfigurationModification.rst +++ b/Documentation/source/UserDefinedRuntimeConfigurationModification.rst @@ -76,8 +76,7 @@ Key Functions The start of of the configuration decoration hook is to override method *overridableConfigure*. The virtual method is defined in class -*BaseQuasarServer*, and should be overridden in class *QuasarServer. -* +*BaseQuasarServer*, and should be overridden in class *QuasarServer*. :: @@ -126,8 +125,6 @@ The start of of the configuration decoration hook is to override method :: -:: - Example Code ~~~~~~~~~~~~ @@ -234,13 +231,9 @@ Function decorateConfiguration() content order data. For some applications (e.g. clear()) we provide functions in the DecorationUtils, e.g. -.. container:: - - .. container:: - - Configuration::DecorationUtils::clear(theConfig, - theConfig.ConfiguredClass(), - Configuration::Configuration::ConfiguredClass_id); + :: + Configuration::DecorationUtils::clear(theConfig, theConfig.ConfiguredClass(), + Configuration::Configuration::ConfiguredClass_id); | @@ -283,14 +276,14 @@ called with the correct arguments; namely with the developer's implementation of ConfigXmlDecoratorFunction as the 3rd argument. As is often the case in quasar, injecting user specifc code involves overriding a virtual function. In this case, the virtual function to -override is: ```` +override is: :: bool BaseQuasarServer::overridableConfigure(const std::string& fileName, AddressSpace::ASNodeManager *nm); A typical developer override of this function would be along the lines -of the following pseudo code ```` +of the following pseudo code :: From eec7e09a8784a71d3ac4a27b663c905e7dfe4872 Mon Sep 17 00:00:00 2001 From: pdubru <115780572+pdubru@users.noreply.github.com> Date: Mon, 8 Jan 2024 11:31:14 +0100 Subject: [PATCH 6/9] Update UserDefinedRuntimeConfigurationModification.rst --- .../source/UserDefinedRuntimeConfigurationModification.rst | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/Documentation/source/UserDefinedRuntimeConfigurationModification.rst b/Documentation/source/UserDefinedRuntimeConfigurationModification.rst index 622d3453..0a4f363a 100644 --- a/Documentation/source/UserDefinedRuntimeConfigurationModification.rst +++ b/Documentation/source/UserDefinedRuntimeConfigurationModification.rst @@ -231,9 +231,10 @@ Function decorateConfiguration() content order data. For some applications (e.g. clear()) we provide functions in the DecorationUtils, e.g. - :: - Configuration::DecorationUtils::clear(theConfig, theConfig.ConfiguredClass(), - Configuration::Configuration::ConfiguredClass_id); +:: + + Configuration::DecorationUtils::clear(theConfig, theConfig.ConfiguredClass(), + Configuration::Configuration::ConfiguredClass_id); | From f03b0274ba50394bd8d5ea8e781488c29ba2aa22 Mon Sep 17 00:00:00 2001 From: Paris Moschovakos Date: Mon, 25 Mar 2024 17:44:59 +0100 Subject: [PATCH 7/9] OPCUA-3158 out-of-order calls --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index e8033ba2..b785c976 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -19,8 +19,8 @@ # Author: Stefan Schlenker # Author: Paris Moschovakos -project(opc_ua) cmake_minimum_required(VERSION 3.10) +project(opc_ua) # the line below is added to quasar to keep backwards compatibility for the transition period. cmake_policy(SET CMP0065 NEW) From 460c5777e0ce0cdde09db90248e8d95bff3d4096 Mon Sep 17 00:00:00 2001 From: Paris Moschovakos Date: Thu, 22 Aug 2024 09:55:35 +0200 Subject: [PATCH 8/9] Update copyright year range in conf.py --- Documentation/source/conf.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Documentation/source/conf.py b/Documentation/source/conf.py index f9d3e3a8..40edb931 100644 --- a/Documentation/source/conf.py +++ b/Documentation/source/conf.py @@ -29,7 +29,7 @@ def get_current_date(): # -- Project information ----------------------------------------------------- project = 'quasar' -copyright = '2022, Paris Moschovakos' +copyright = '2021-2024, Paris Moschovakos' author = 'Paris Moschovakos' From 90765e4e6d027b80f487aaf32bc1b8a0f74ac150 Mon Sep 17 00:00:00 2001 From: Paris Moschovakos Date: Thu, 22 Aug 2024 10:17:04 +0200 Subject: [PATCH 9/9] Update quasar documentation: - Added a detailed description of the quasar framework. - Updated the primary contact line formatting. - --- Documentation/source/quasar.rst | 128 ++++++++++---------------------- 1 file changed, 41 insertions(+), 87 deletions(-) diff --git a/Documentation/source/quasar.rst b/Documentation/source/quasar.rst index 6e91d8e6..2e9b13f4 100644 --- a/Documentation/source/quasar.rst +++ b/Documentation/source/quasar.rst @@ -1,11 +1,12 @@ quasar ====== +quasar is a framework for rapidly developing OPC UA (Open Platform Communications Unified Architecture) servers. It provides tools and abstractions to simplify the process of creating industrial-grade OPC UA servers, which are widely used for secure, reliable data exchange in industrial automation and IoT applications. The quick opcua server generation framework. For quick start-up, see our `YouTube tutorial `__ -| Primary contact: quasar-developers@cern.ch +Primary contact: quasar-developers@cern.ch Versions -------- @@ -15,32 +16,15 @@ Versions Credits ------- -This framework was brought to you by (in the alphabetical order): - -- Damian Abalo Miron (damian.abalo@cern.ch) - - Windows compatibility and MSVC10 support - - Python-based scripts and tools - -- Ingo Berg (external contributor not affiliated with CERN) - - muParser formula parser and evaluation engine, used by the - CalculatedVariables and shipped with quasar. (`muParser's - webpage `__) - -- Benjamin Farnham (benjamin.farnham@cern.ch): - - LogIt logging engine - - Meta module - - Use cases & ideas - -- Viatcheslav "Slava" Filimonov (viatcheslav.filimonov@cern.ch): - - XML Configuration (inspiration) - - Calculation engine (inspiration) - - Node manager +This framework was developed through the collaborative efforts of the following: - Paris Moschovakos (paris.moschovakos@cern.ch): - - quasar lead from Sep 2022 + - quasar lead + - Embedded and ARM64 + - quasar.docs.cern.ch + - UaObjects, Cacophony + - quasar Sanitizers - mule (SNMP optional module) - - UaObjects - - documentation revamp - Piotr Nikiel (piotr.nikiel@cern.ch, piotr@nikiel.info): - Framework's concept and architecture and code-generation @@ -57,20 +41,38 @@ This framework was brought to you by (in the alphabetical order): - Stefan Schlenker (stefan.schlenker@cern.ch) - Use cases, ideas, optional modules mechanism +- Benjamin Farnham (benjamin.farnham@cern.ch): + - LogIt logging engine + - Meta module + - Use cases & ideas + +- Damian Abalo Miron (damian.abalo@cern.ch) + - Windows compatibility and MSVC10 support + - Python-based scripts and tools + +- Ingo Berg (external contributor not affiliated with CERN) + - muParser formula parser and evaluation engine, used by the + CalculatedVariables and shipped with quasar. (`muParser's + webpage `__) + +- Viatcheslav "Slava" Filimonov (viatcheslav.filimonov@cern.ch): + - XML Configuration (inspiration) + - Calculation engine (inspiration) + - Node manager + - Cristian-Valeriu Soare - Embedded python module (PyEmbed) - Giordon Holtsberg Stark - quasar with Yocto on a "big" Zynq SoCs: ideas, consulting, development, testing -Dependencies ------------- +Installation and Dependencies +----------------------------- Note: we have specific instructions for the following operating systems: -- CentOS / RHEL (and dependent distributions): - - `version 8 <#cc8>`__ (e.g. CentOS 8, RHEL 8, ...), - - `version 7 <#cc7>`__ (e.g. CentOS 7, RHEL 7, ...). +- AlmaLinux / RHEL (and dependent distributions): + - `version 9 <#el9>`__ (e.g. AlmaLinux 9, RHEL 9, ...), - `Ubuntu <#ubuntu>`__ - `MS Windows <#windows>`__ @@ -80,7 +82,7 @@ For remaining systems (other distros of Linux, other Unix, embedded Linux: PetaL Mandatory: ^^^^^^^^^^ -- C++ compiler with C++11 support (gcc 4.8x is the minimum as of 2022) +- C++ compiler with C++11 support (gcc 11.x is the minimum) - OPCUA protocol stacks / toolkits (either of them is needed): - see `More info on alternative backends `__. @@ -132,51 +134,8 @@ Quick setup hints for AlmaLinux 9 (the most standard way) #. Download UaExpert for an universal test&dev tool for OPC UA. -Quick setup hints for CentOS 8 -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -#. Install latest epel realease - - ``sudo dnf install epel-release`` - -#. Install packages from CentOS 8 default repos: - - ``sudo dnf install gcc-c++ gdb boost-devel boost-regex - boost-program-options boost-signals cmake kdiff3 graphviz valgrind - doxygen rpm-build xsd openssl-devel libxml2-devel xerces-c-devel - python3-colorama python3-jinja2`` - -#. Install packages from epel repo (by default enabled in CentOS 8): - - ``sudo yum install astyle`` - -#. Download UaExpert for an universal test&dev tool for OPC UA. - -Quick setup hints for CC7/CentOs7 users -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -#. Get Eclipse (www.eclipse.org), preferably the C/C++ Developers - version (e.g. - https://www.eclipse.org/downloads/packages/eclipse-ide-cc-developers/oxygenr) - Once installed, install Eclipse add-ons for XML editors -#. Issue this to install software from the official CC7 RPM repos: - - ``sudo yum install gcc-c++ gdb boost-devel boost-regex - boost-program-options boost-signals cmake3 kdiff3 graphviz - valgrind doxygen rpm-build xsd openssl-devel libxml2-devel - xerces-c-devel libgit2 libgit2-devel python36-jinja2 python36-lxml - python36-colorama`` - -#. Deploy Python's pygit2 (recommended) - *WARNING: the version of pygit2 should match the version of - libgit2-devel! At the time of writing it was 0.26.4* - - ``pip install pygit2==0.26.4 --user`` - -#. Download UaExpert for an universal test&dev tool for OPC UA. - -Quick setup hints for Ubuntu 20.04 -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Quick setup hints for Ubuntu 24.04 LTS +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ #. Deploy from standard Ubuntu repos @@ -188,14 +147,6 @@ Quick setup hints for Ubuntu 20.04 ``pip3 install -U Jinja2 --user`` - -Quick setup hints for Ubuntu 19.04 -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - ``sudo apt install cmake g++ libboost-all-dev libxml2-utils astyle - xsdcxx libxerces-c-dev libssl-dev kdiff3 default-jre libxml2-utils - python-enum34 python-lxml`` - Setup for Windows users ~~~~~~~~~~~~~~~~~~~~~~~ @@ -266,8 +217,8 @@ Logging - Generic LogIt documentation can be found `here `__ -Quick FAQ ---------- +Frequently Asked Questions (FAQ) +-------------------------------- #. How to build an executable with debug symbols? @@ -346,9 +297,12 @@ Quick FAQ configurations etc... ? See `build system doc `__. +Contributing +------------ +We welcome contributions to quasar! Whether you're fixing bugs, improving documentation, or proposing new features, your input is valuable. Please contact quasar-developers@cern.ch for more information on how to get started or to discuss your ideas. + -------------- -Written by Piotr Nikiel Report inconsistencies and bugs to -(C) CERN 2015-. All rights not expressly granted are reserved. +© CERN 2015-2024. All rights not expressly granted are reserved.