diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a8b3ed3c..f3726a6d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,6 +1,12 @@ name: Build and Test on: + workflow_dispatch: + inputs: + opendaq_ref: + description: "openDAQ SDK commit, branch or tag" + required: false + default: "" pull_request: types: [opened, reopened, synchronize, ready_for_review] @@ -12,8 +18,16 @@ jobs: include: - os: ubuntu-latest generator: Ninja + build_type: Debug - os: windows-latest generator: "Visual Studio 17 2022" + build_type: Debug + - os: ubuntu-latest + generator: Ninja + build_type: Release + - os: windows-latest + generator: "Visual Studio 17 2022" + build_type: Release runs-on: ${{ matrix.os }} @@ -28,11 +42,15 @@ jobs: with: ref: ${{ github.event.inputs.branch || github.event.client_payload.branch || github.ref }} + - name: Overwrite opendaq_ref + if: ${{ github.event.inputs.opendaq_ref != '' }} + run: echo "${{ github.event.inputs.opendaq_ref }}" > opendaq_ref + - name: Configure project with CMake - run: cmake -B build/output -S . -G "${{ matrix.generator }}" -DOPENDAQ_MQTT_ENABLE_TESTS=ON -DCMAKE_BUILD_TYPE=Debug + run: cmake -B build/output -S . -G "${{ matrix.generator }}" -DDAQMODULES_MQTT_ENABLE_TESTS=ON -DDAQMODULES_MQTT_DEBUG_WARNINGS_AS_ERRORS=ON -DOPENDAQ_DEBUG_WARNINGS_AS_ERRORS=ON -DCMAKE_BUILD_TYPE="${{ matrix.build_type }}" - name: Build project with CMake - run: cmake --build build/output --config Debug + run: cmake --build build/output --config "${{ matrix.build_type }}" - name: Install and run mosquitto Linux if: matrix.os == 'ubuntu-latest' @@ -41,8 +59,8 @@ jobs: - name: Run project tests with CMake if: matrix.os == 'ubuntu-latest' - run: ctest --test-dir build/output --output-on-failure -C Debug - + run: ctest --test-dir build/output --output-on-failure -C "${{ matrix.build_type }}" + install-build-and-test: strategy: fail-fast: false @@ -50,8 +68,16 @@ jobs: include: - os: ubuntu-latest generator: Ninja + build_type: Debug - os: windows-latest generator: "Visual Studio 17 2022" + build_type: Debug + - os: ubuntu-latest + generator: Ninja + build_type: Release + - os: windows-latest + generator: "Visual Studio 17 2022" + build_type: Release runs-on: ${{ matrix.os }} env: @@ -69,6 +95,11 @@ jobs: ref: ${{ github.event.inputs.branch || github.event.client_payload.branch || github.ref }} path: module + - name: Overwrite opendaq_ref + if: ${{ github.event.inputs.opendaq_ref != '' }} + working-directory: module + run: echo "${{ github.event.inputs.opendaq_ref }}" > opendaq_ref + - name: Read openDAQ version shell: bash working-directory: module @@ -86,9 +117,9 @@ jobs: - name: Configure, build and install openDAQ working-directory: opendaq run: | - cmake -B build/output -S . -G "${{ matrix.generator }}" -DOPENDAQ_ENABLE_TESTS=OFF -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="${{ env.INSTALL_PREFIX }}" - cmake --build build/output --config Release - cmake --install build/output --config Release + cmake -B build/output -S . -G "${{ matrix.generator }}" -DOPENDAQ_ENABLE_TESTS=OFF -DCMAKE_BUILD_TYPE="${{ matrix.build_type }}" -DCMAKE_INSTALL_PREFIX="${{ env.INSTALL_PREFIX }}" + cmake --build build/output --config "${{ matrix.build_type }}" + cmake --install build/output --config "${{ matrix.build_type }}" - name: Add DLL path (Windows only) if: matrix.os == 'windows-latest' @@ -96,18 +127,18 @@ jobs: - name: Configure project with CMake working-directory: module - run: cmake -B build/output -S . -G "${{ matrix.generator }}" -DDAQMODULES_MQTT_ENABLE_TESTS=ON -DCMAKE_BUILD_TYPE=Release -DopenDAQ_DIR="${{ env.INSTALL_PREFIX }}/lib/cmake/opendaq/" + run: cmake -B build/output -S . -G "${{ matrix.generator }}" -DDAQMODULES_MQTT_ENABLE_TESTS=ON -DDAQMODULES_MQTT_DEBUG_WARNINGS_AS_ERRORS=ON -DCMAKE_BUILD_TYPE="${{ matrix.build_type }}" -DopenDAQ_DIR="${{ env.INSTALL_PREFIX }}/lib/cmake/opendaq/" - name: Build project with CMake working-directory: module - run: cmake --build build/output --config Release + run: cmake --build build/output --config "${{ matrix.build_type }}" - name: Install and run mosquitto Linux if: matrix.os == 'ubuntu-latest' run: | sudo apt-get install -y --no-install-recommends mosquitto - + - name: Run project tests with CMake if: matrix.os == 'ubuntu-latest' working-directory: module - run: ctest --test-dir build/output --output-on-failure -C Release + run: ctest --test-dir build/output --output-on-failure -C "${{ matrix.build_type }}" diff --git a/modules/CMakeLists.txt b/modules/CMakeLists.txt index 86463fa9..67cd7382 100644 --- a/modules/CMakeLists.txt +++ b/modules/CMakeLists.txt @@ -1,4 +1,8 @@ cmake_minimum_required(VERSION 3.25) opendaq_set_cmake_folder_context(TARGET_FOLDER_NAME) +if (MSVC) + add_compile_options(/wd4100) +endif() + add_subdirectory(mqtt_streaming_module) diff --git a/modules/mqtt_streaming_module/include/mqtt_streaming_module/atomic_signal_atomic_sample_handler.h b/modules/mqtt_streaming_module/include/mqtt_streaming_module/atomic_signal_atomic_sample_handler.h index 1b2414fd..22090bd2 100644 --- a/modules/mqtt_streaming_module/include/mqtt_streaming_module/atomic_signal_atomic_sample_handler.h +++ b/modules/mqtt_streaming_module/include/mqtt_streaming_module/atomic_signal_atomic_sample_handler.h @@ -18,6 +18,7 @@ #include #include +#include BEGIN_NAMESPACE_OPENDAQ_MQTT_STREAMING_MODULE @@ -41,6 +42,18 @@ class AtomicSignalAtomicSampleHandler : public HandlerBase MqttDataSample processDataPacket(SignalContext& signalContext, const DataPacketPtr& dataPacket, size_t offset); std::string toString(const std::string valueFieldName, daq::DataPacketPtr packet, size_t offset); std::string buildTopicName(const SignalContext& signalContext); + + + inline static const std::set allowedSampleTypes{SampleType::Float64, + SampleType::Float32, + SampleType::UInt8, + SampleType::Int8, + SampleType::UInt16, + SampleType::Int16, + SampleType::UInt32, + SampleType::Int32, + SampleType::UInt64, + SampleType::Int64}; }; END_NAMESPACE_OPENDAQ_MQTT_STREAMING_MODULE diff --git a/modules/mqtt_streaming_module/include/mqtt_streaming_module/group_signal_shared_ts_handler.h b/modules/mqtt_streaming_module/include/mqtt_streaming_module/group_signal_shared_ts_handler.h index f335b6fb..34bcc6b1 100644 --- a/modules/mqtt_streaming_module/include/mqtt_streaming_module/group_signal_shared_ts_handler.h +++ b/modules/mqtt_streaming_module/include/mqtt_streaming_module/group_signal_shared_ts_handler.h @@ -19,6 +19,7 @@ #include #include #include +#include BEGIN_NAMESPACE_OPENDAQ_MQTT_STREAMING_MODULE @@ -70,6 +71,18 @@ class GroupSignalSharedTsHandler : public HandlerBase static std::string messageFromFields(const std::vector& fields); static TimestampTickStruct domainToTs(const MultiReaderStatusPtr status); bool processEvents(const daq::MultiReaderStatusPtr& status); // true if descriptor changed or invalid reader + + + inline static const std::set allowedSampleTypes{SampleType::Float64, + SampleType::Float32, + SampleType::UInt8, + SampleType::Int8, + SampleType::UInt16, + SampleType::Int16, + SampleType::UInt32, + SampleType::Int32, + SampleType::UInt64, + SampleType::Int64}; }; END_NAMESPACE_OPENDAQ_MQTT_STREAMING_MODULE diff --git a/modules/mqtt_streaming_module/include/mqtt_streaming_module/signal_arr_atomic_sample_handler.h b/modules/mqtt_streaming_module/include/mqtt_streaming_module/signal_arr_atomic_sample_handler.h index a4bffc0c..545f9009 100644 --- a/modules/mqtt_streaming_module/include/mqtt_streaming_module/signal_arr_atomic_sample_handler.h +++ b/modules/mqtt_streaming_module/include/mqtt_streaming_module/signal_arr_atomic_sample_handler.h @@ -19,6 +19,7 @@ #include #include #include +#include BEGIN_NAMESPACE_OPENDAQ_MQTT_STREAMING_MODULE @@ -39,6 +40,18 @@ class SignalArrayAtomicSampleHandler : public HandlerBase std::string toString(const std::string valueFieldName, daq::DataPacketPtr packet); std::string buildTopicName(); static std::string messageFromArray(const std::vector& array); + + + inline static const std::set allowedSampleTypes{SampleType::Float64, + SampleType::Float32, + SampleType::UInt8, + SampleType::Int8, + SampleType::UInt16, + SampleType::Int16, + SampleType::UInt32, + SampleType::Int32, + SampleType::UInt64, + SampleType::Int64}; }; END_NAMESPACE_OPENDAQ_MQTT_STREAMING_MODULE diff --git a/modules/mqtt_streaming_module/src/atomic_signal_atomic_sample_handler.cpp b/modules/mqtt_streaming_module/src/atomic_signal_atomic_sample_handler.cpp index 5b8052d9..aba74528 100644 --- a/modules/mqtt_streaming_module/src/atomic_signal_atomic_sample_handler.cpp +++ b/modules/mqtt_streaming_module/src/atomic_signal_atomic_sample_handler.cpp @@ -4,7 +4,6 @@ #include #include #include -#include BEGIN_NAMESPACE_OPENDAQ_MQTT_STREAMING_MODULE @@ -26,16 +25,6 @@ MqttData AtomicSignalAtomicSampleHandler::processSignalContexts(std::vector& signalContexts) const { - static const std::set allowedSampleTypes{SampleType::Float64, - SampleType::Float32, - SampleType::UInt8, - SampleType::Int8, - SampleType::UInt16, - SampleType::Int16, - SampleType::UInt32, - SampleType::Int32, - SampleType::UInt64, - SampleType::Int64}; ProcedureStatus status{true, {}}; for (const auto& sigCtx : signalContexts) { diff --git a/modules/mqtt_streaming_module/src/group_signal_shared_ts_handler.cpp b/modules/mqtt_streaming_module/src/group_signal_shared_ts_handler.cpp index 67ad245a..f83c10df 100644 --- a/modules/mqtt_streaming_module/src/group_signal_shared_ts_handler.cpp +++ b/modules/mqtt_streaming_module/src/group_signal_shared_ts_handler.cpp @@ -7,7 +7,6 @@ #include #include #include -#include BEGIN_NAMESPACE_OPENDAQ_MQTT_STREAMING_MODULE @@ -64,17 +63,6 @@ MqttData GroupSignalSharedTsHandler::processSignalContexts(std::vector& signalContexts) const { - - static const std::set allowedSampleTypes{SampleType::Float64, - SampleType::Float32, - SampleType::UInt8, - SampleType::Int8, - SampleType::UInt16, - SampleType::Int16, - SampleType::UInt32, - SampleType::Int32, - SampleType::UInt64, - SampleType::Int64}; ProcedureStatus status{true, {}}; for (const auto& sigCtx : signalContexts) { diff --git a/modules/mqtt_streaming_module/src/signal_arr_atomic_sample_handler.cpp b/modules/mqtt_streaming_module/src/signal_arr_atomic_sample_handler.cpp index e33973a7..edc79bde 100644 --- a/modules/mqtt_streaming_module/src/signal_arr_atomic_sample_handler.cpp +++ b/modules/mqtt_streaming_module/src/signal_arr_atomic_sample_handler.cpp @@ -6,7 +6,6 @@ #include #include #include -#include BEGIN_NAMESPACE_OPENDAQ_MQTT_STREAMING_MODULE @@ -57,17 +56,6 @@ MqttData SignalArrayAtomicSampleHandler::processSignalContexts(std::vector& signalContexts) const { - - static const std::set allowedSampleTypes{SampleType::Float64, - SampleType::Float32, - SampleType::UInt8, - SampleType::Int8, - SampleType::UInt16, - SampleType::Int16, - SampleType::UInt32, - SampleType::Int32, - SampleType::UInt64, - SampleType::Int64}; ProcedureStatus status{true, {}}; for (const auto& sigCtx : signalContexts) {