### Install Qt using aqtinstall Source: https://github.com/dpaulat/supercell-wx/blob/develop/AGENTS.md Installs a specific version of Qt for Windows desktop development using aqtinstall. Ensure Qt is not installed via Conan. ```bash aqt install-qt windows desktop 6.11.0 win64_msvc2022_64 -m qtimageformats qtmultimedia qtpositioning qtserialport ``` -------------------------------- ### Setup Windows Build Environment Source: https://github.com/dpaulat/supercell-wx/blob/develop/AGENTS.md Use this script for setting up the Windows build environment, including specifying the build directory and virtual environment path. ```powershell # Windows (from repo root) .\tools\setup-windows-vs2026-x64-release.bat [BUILD_DIR] [VENV_PATH] ``` -------------------------------- ### Install Conan Profile Source: https://github.com/dpaulat/supercell-wx/blob/develop/AGENTS.md Installs the Conan profile for the specified system, which is a prerequisite for configuring the CMake build. ```bash # 1. Install Conan profile conan config install ./tools/conan/profiles/scwx-windows_vs2026_x64 -tf profiles ``` -------------------------------- ### Setup Linux Build Environment Source: https://github.com/dpaulat/supercell-wx/blob/develop/AGENTS.md Use this script for setting up the Linux build environment, specifying the build directory, Conan profile, virtual environment path, and ASAN enable flag. ```bash # Linux ./tools/setup-linux-ninja-release.sh [BUILD_DIR] [CONAN_PROFILE] [VENV_PATH] [ASAN_ENABLE] ``` -------------------------------- ### GTest Example for NexradFileFactory Source: https://github.com/dpaulat/supercell-wx/blob/develop/AGENTS.md An example Google Test case for the NexradFileFactory class, specifically testing Level 2 V06 files. Requires SCWX_TEST_DATA_DIR to be defined. ```cpp TEST(NexradFileFactory, Level2V06) { std::string filename = std::string(SCWX_TEST_DATA_DIR) + "/data/KLSX20240909_175655_V06"; // ... } ``` -------------------------------- ### Install Conan Dependencies Source: https://github.com/dpaulat/supercell-wx/blob/develop/AGENTS.md Installs project dependencies using Conan, specifying the remote, build policy, profile, settings, and output folder. ```bash # 2. Install dependencies mkdir build && cd build conan install ../ --remote conancenter --build missing --profile:all scwx-windows_vs2026_x64 --settings:all build_type=Release --output-folder ./conan/ ``` -------------------------------- ### Example Data Packet Structure (Hex) Source: https://github.com/dpaulat/supercell-wx/blob/develop/wxdata/archive2_format.txt A hexadecimal representation of a portion of a data packet within an Archive2 file. This packet may contain CTM information, a message header, and digital radar data. ```hex 0000 0000 0980 0000 0002 0000 04B8 0001 0060 1E9E 04B0 1841 0001 0001 0480 14A2 1E9E 1234 6530 0059 0001 0058 0001 0000 FE89 03E8 00FA 01CC 0000 0001 4180 69E8 0064 0000 0000 0000 0015 0000 0000 0000 0000 0064 0000 0000 0000 FFF4 0064 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 005A 5A00 0070 6D51 6455 6060 4F54 0040 5C3F 4049 4900 4D42 4349 434E 4B3D 4430 4340 3F3D 4644 4443 3A3D 473F 3A3A 3D3D 3C45 3A43 433C 3E43 413C 393F 3F40 4038 (etc.) ``` -------------------------------- ### Qt Signal Emission with Q_EMIT Source: https://github.com/dpaulat/supercell-wx/blob/develop/AGENTS.md Illustrates the correct way to emit Qt signals using `Q_EMIT` to avoid conflicts with the `emit` keyword. Using `emit` directly can cause build issues. ```cpp Q_EMIT DataReloaded(); // Correct emit DataReloaded(); // Incorrect - will cause build issues ``` -------------------------------- ### Build and Run Tests with CMake Source: https://github.com/dpaulat/supercell-wx/blob/develop/AGENTS.md Builds the project's test executable and runs tests using ctest. Assumes tests are configured via CMake. ```bash cmake --build . --target wxtest ctest --output-on-failure ``` -------------------------------- ### Build Supercell Wx Source: https://github.com/dpaulat/supercell-wx/blob/develop/AGENTS.md Builds the Supercell Wx application using CMake, targeting the 'supercell-wx' executable. ```bash # 4. Build cmake --build . --target supercell-wx ``` -------------------------------- ### Configure CMake with Conan Source: https://github.com/dpaulat/supercell-wx/blob/develop/AGENTS.md Configures the CMake build, integrating Conan for dependency management. Ensure the Conan provider is included and the correct profiles and build type are set. ```bash # 3. Configure CMake (Conan provider auto-installs deps if conan/ exists) cmake ../ -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_PROJECT_TOP_LEVEL_INCLUDES=../external/cmake-conan/conan_provider.cmake -DCONAN_HOST_PROFILE=scwx-windows_vs2026_x64 -DCONAN_BUILD_PROFILE=scwx-windows_vs2026_x64 ``` -------------------------------- ### Pimpl Idiom Implementation Source: https://github.com/dpaulat/supercell-wx/blob/develop/AGENTS.md Demonstrates the Pimpl (Pointer to Implementation) idiom in C++. The header declares a private pointer to an implementation class, and the source defines the implementation details. ```cpp // Header class MyClass { class Impl; std::unique_ptr p; }; // Source class MyClass::Impl { /* private state */ }; ``` -------------------------------- ### Enable Address Sanitizer Source: https://github.com/dpaulat/supercell-wx/blob/develop/AGENTS.md Enables the Address Sanitizer for memory leak and corruption detection during development. Can be enabled via CMake build options or presets. ```bash -DSCWX_ADDRESS_SANITIZER=ON ``` -------------------------------- ### Message Header Halfword Descriptions Source: https://github.com/dpaulat/supercell-wx/blob/develop/wxdata/archive2_format.txt Details the format and description for specific halfwords within the Message Header. This includes message size and channel/message type identification. ```text Halfword Format Description 7 I*2 Message size in halfwords measured from this halfword to the end of the record. 8 I*1 (Left Byte) Channel ID: 0 = Non-Redundant Site 1 = Redundant Site Channel 1 2 = Redundant Site Channel 2 8 I*1 (Right Byte) Message type, where: 1 = DIGITAL RADAR DATA (This message may contain a combination of either reflectivity, aliased velocity, or spectrum width) 2 = RDA STATUS DATA. 3 = PERFORMANCE/MAINTENANCE DATA. ``` -------------------------------- ### Archive2 Volume Scan Title Structure Source: https://github.com/dpaulat/supercell-wx/blob/develop/wxdata/archive2_format.txt Defines the byte ranges and formats for the initial volume scan title record in an Archive2 data file. This includes filename, modified Julian date, and creation time. ```text Bytes Format Description 0-8 C*9 Filename (root) - "ARCHIVE2." 9-11 C*3 Filename (extension) - "1", "2", etc. 12-15 I*4 Modified Julian Date referenced from 1/1/70 16-19 I*4 Time - Milliseconds from midnight (UTC) of the day when the file was created. 20-23 Unused ``` -------------------------------- ### Message Header Bytes in Data Packet Source: https://github.com/dpaulat/supercell-wx/blob/develop/wxdata/archive2_format.txt Describes the byte ranges (12-27) that constitute the Message Header within a data packet. This header identifies the data type and may contain information for one of thirteen message types. ```text Bytes 12-27 (halfwords 7-14) Message Header: 0000 0000 0980 0000 0002 0000 04B8 0001 This information is 0060 1E9E 04B0 1841 0001 0001 0480 14A2 used to identify 1E9E 1234 6530 0059 0001 0058 0001 0000 either base data or one of thirteen FE89 03E8 00FA 01CC 0000 0001 4180 69E8 types of messages that may follow 0064 0000 0000 0000 0015 0000 0000 0000 in bytes 28 - 2431. This header 0000 0064 0000 0000 0000 FFF4 0064 0000 includes the information indicated 0000 0000 0000 0000 0000 0000 0000 0000 below: 0000 0000 0000 0000 0000 0000 0000 0000 005A 5A00 0070 6D51 6455 6060 4F54 0040 5C3F 4049 4900 4D42 4349 434E 4B3D 4430 4340 3F3D 4644 4443 3A3D 473F 3A3A 3D3D 3C45 3A43 433C 3E43 413C 393F 3F40 4038 (etc.) ``` -------------------------------- ### CTM Information Bytes in Data Packet Source: https://github.com/dpaulat/supercell-wx/blob/develop/wxdata/archive2_format.txt Details the byte ranges (0-11) corresponding to Channel Terminal Manager (CTM) information within a data packet. This section is for transmission integrity checks and can be omitted for base data analysis. ```text Bytes 0-11 (halfwords 1-6) Channel Terminal Manager (CTM) information: 0000 0000 0980 0000 0002 0000 04B8 0001 0060 1E9E 04B0 1841 0001 0001 0480 14A2 Archive II (the data tape) is a 1E9E 1234 6530 0059 0001 0058 0001 0000 copy of messages or data packets FE89 03E8 00FA 01CC 0000 0001 4180 69E8 prepared for transmission from the 0064 0000 0000 0000 0015 0000 0000 0000 RDA to the RPG. CTM information is 0000 0064 0000 0000 0000 FFF4 0064 0000 attached to a message or data 0000 0000 0000 0000 0000 0000 0000 0000 packet for checking data integrity 0000 0000 0000 0000 0000 0000 0000 0000 during the transmission process 005A 5A00 0070 6D51 6455 6060 4F54 0040 and is of no importance to the base 5C3F 4049 4900 4D42 4349 434E 4B3D 4430 data (omit or read past these 4340 3F3D 4644 4443 3A3D 473F 3A3A 3D3D bytes). 3C45 3A43 433C 3E43 413C 393F 3F40 4038 (etc.) ``` === COMPLETE CONTENT === This response contains all available snippets from this library. No additional content exists. Do not make further requests.