From 0fe73359873cbe41cccba2959833aa7d62b30be1 Mon Sep 17 00:00:00 2001 From: Kilian Hofmann Date: Sun, 4 Sep 2022 03:06:09 +0200 Subject: [PATCH] Style, Analyze --- .clang-format | 1 + .vscode/cmake-kits.json | 17 ++ .vscode/settings.json | 3 - CMakeLists.txt | 1 + Jenkinsfile | 6 + file/pathSegment.hpp | 73 ++++---- file/recordingPath.hpp | 22 +-- makerwysxp/CMakeLists.txt | 2 +- makerwysxp/include/gate.hpp | 47 +++--- makerwysxp/include/runway.hpp | 157 +++++++++--------- nlohmann/{ => include}/json.hpp | 0 socket/include/socket.h | 18 +- socket/include/types.h | 44 ++--- .../include}/stringExtensions.hpp | 0 {file => utilities/include}/util.hpp | 0 xplugin/CMakeLists.txt | 3 +- xplugin/main.cpp | 6 + 17 files changed, 216 insertions(+), 184 deletions(-) create mode 100644 .vscode/cmake-kits.json rename nlohmann/{ => include}/json.hpp (100%) rename {file => utilities/include}/stringExtensions.hpp (100%) rename {file => utilities/include}/util.hpp (100%) diff --git a/.clang-format b/.clang-format index 18f4351..9173886 100644 --- a/.clang-format +++ b/.clang-format @@ -25,6 +25,7 @@ ContinuationIndentWidth: 4 Cpp11BracedListStyle: true DerivePointerBinding: false ExperimentalAutoDetectBinPacking: false +IndentAccessModifiers: true IndentCaseLabels: true IndentFunctionDeclarationAfterType: true IndentWidth: 2 diff --git a/.vscode/cmake-kits.json b/.vscode/cmake-kits.json new file mode 100644 index 0000000..4d5b3df --- /dev/null +++ b/.vscode/cmake-kits.json @@ -0,0 +1,17 @@ +[{ + "name": "Clang 13.0.0 Mac", + "toolchainFile": "${workspaceFolder}/toolchain-mac.cmake" + }, + { + "name": "Clang 13.0.0 Linux", + "toolchainFile": "${workspaceFolder}/toolchain-lin.cmake" + }, + { + "name": "Clang 13.0.0 Windows 32", + "toolchainFile": "${workspaceFolder}/toolchain-win-32.cmake" + }, + { + "name": "Clang 13.0.0 Windows 64", + "toolchainFile": "${workspaceFolder}/toolchain-win-64.cmake" + } +] \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json index 76b8183..e90f610 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,8 +1,5 @@ { "cmake.generator": "Unix Makefiles", - "cmake.configureArgs": [ - "-DIBM=ON" - ], "C_Cpp.default.configurationProvider": "ms-vscode.cmake-tools", "files.associations": { "cmath": "cpp" diff --git a/CMakeLists.txt b/CMakeLists.txt index 84f88e1..93e16a3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -8,6 +8,7 @@ set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_EXTENSIONS OFF) set(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE) set(CMAKE_BUILD_WITH_INSTALL_NAME_DIR TRUE) +set(CMAKE_EXPORT_COMPILE_COMMANDS TRUE) set(PLUGIN_NAME GAConnector) option(DEBUG "Debug symbols" OFF) diff --git a/Jenkinsfile b/Jenkinsfile index 7cfff57..32ebd4e 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -17,7 +17,9 @@ pipeline { } steps { sh 'bash ./build.sh win32' + sh 'analyze-build --verbose --cdb build/compile_commands.json --output build/Analysis/win32' sh 'bash ./build.sh win64' + sh 'analyze-build --verbose --cdb build/compile_commands.json --output build/Analysis/win64' } } stage('Build Linux Debug') { @@ -36,7 +38,9 @@ pipeline { } steps { sh 'bash ./build.sh lin32' + sh 'analyze-build --verbose --cdb build/compile_commands.json --output build/Analysis/lin32' sh 'bash ./build.sh lin64' + sh 'analyze-build --verbose --cdb build/compile_commands.json --output build/Analysis/lin64' } } stage('Build MacOSX Debug') { @@ -55,6 +59,7 @@ pipeline { } steps { sh 'bash ./build.sh mac' + sh 'analyze-build --verbose --cdb build/compile_commands.json --output build/Analysis/mac' } } stage('Archive Debug') { @@ -63,6 +68,7 @@ pipeline { } steps { zip zipFile: 'Debug.zip', archive: true, dir: 'build/Plugin' + zip zipFile: 'Analysis.zip', archive: true, dir: 'build/Analysis' sh 'rm -rf build' } } diff --git a/file/pathSegment.hpp b/file/pathSegment.hpp index c0dd626..823911b 100644 --- a/file/pathSegment.hpp +++ b/file/pathSegment.hpp @@ -15,47 +15,48 @@ class PathSegment { private: - std::uint16_t altitude = 0; - std::uint16_t groundSpeed = 0; - double latitude = 0; - double longitude = 0; - std::vector file; + std::uint16_t altitude = 0; + std::uint16_t groundSpeed = 0; + double latitude = 0; + double longitude = 0; + std::vector file; public: - PathSegment() = default; - PathSegment(std::uint16_t altitude, - std::uint16_t groundSpeed, - double latitude, - double longitude) - { - this->altitude = altitude; - this->groundSpeed = groundSpeed; - this->latitude = latitude; - this->longitude = longitude; + PathSegment() = default; + PathSegment(std::uint16_t altitude, + std::uint16_t groundSpeed, + double latitude, + double longitude) + { + this->altitude = altitude; + this->groundSpeed = groundSpeed; + this->latitude = latitude; + this->longitude = longitude; - file = std::vector(20, 0); - std::uint8_t *bufPtr = file.data(); - memcpy(bufPtr, &this->altitude, sizeof(this->altitude)); - bufPtr += sizeof(this->altitude); - memcpy(bufPtr, &this->groundSpeed, sizeof(this->groundSpeed)); - bufPtr += sizeof(this->groundSpeed); - memcpy(bufPtr, &this->latitude, sizeof(this->latitude)); - bufPtr += sizeof(this->latitude); - memcpy(bufPtr, &this->longitude, sizeof(this->longitude)); - } + file = std::vector(20, 0); + std::uint8_t *bufPtr = file.data(); + memcpy(bufPtr, &this->altitude, sizeof(this->altitude)); + bufPtr += sizeof(this->altitude); + memcpy(bufPtr, &this->groundSpeed, sizeof(this->groundSpeed)); + bufPtr += sizeof(this->groundSpeed); + memcpy(bufPtr, &this->latitude, sizeof(this->latitude)); + bufPtr += sizeof(this->latitude); + memcpy(bufPtr, &this->longitude, sizeof(this->longitude)); + } - std::uint8_t *getBinaryData() { return file.data(); } - std::size_t getBinaryLength() { return file.size(); } + std::uint8_t *getBinaryData() { return file.data(); } + std::size_t getBinaryLength() { return file.size(); } - friend bool operator==(const PathSegment &lhs, const PathSegment &rhs) - { - return lhs.altitude == rhs.altitude && lhs.groundSpeed == rhs.groundSpeed && - lhs.latitude == rhs.latitude && lhs.longitude == rhs.longitude; - } - friend bool operator!=(const PathSegment &lhs, const PathSegment &rhs) - { - return !(lhs == rhs); - } + friend bool operator==(const PathSegment &lhs, const PathSegment &rhs) + { + return lhs.altitude == rhs.altitude && + lhs.groundSpeed == rhs.groundSpeed && + lhs.latitude == rhs.latitude && lhs.longitude == rhs.longitude; + } + friend bool operator!=(const PathSegment &lhs, const PathSegment &rhs) + { + return !(lhs == rhs); + } }; #endif diff --git a/file/recordingPath.hpp b/file/recordingPath.hpp index 6672c41..70da501 100644 --- a/file/recordingPath.hpp +++ b/file/recordingPath.hpp @@ -10,20 +10,20 @@ class Path { private: - std::uint64_t count = 0; - std::vector file; + std::uint64_t count = 0; + std::vector file; public: - void addSegment(PathSegment segment) - { - file.resize(file.size() + segment.getBinaryLength()); - std::uint8_t *bufPtr = file.data() + count * segment.getBinaryLength(); - memcpy(bufPtr, segment.getBinaryData(), segment.getBinaryLength()); - count++; - } + void addSegment(PathSegment segment) + { + file.resize(file.size() + segment.getBinaryLength()); + std::uint8_t *bufPtr = file.data() + count * segment.getBinaryLength(); + memcpy(bufPtr, segment.getBinaryData(), segment.getBinaryLength()); + count++; + } - std::uint8_t *getBinaryData() { return file.data(); } - std::size_t getBinaryLength() { return file.size(); } + std::uint8_t *getBinaryData() { return file.data(); } + std::size_t getBinaryLength() { return file.size(); } }; #endif \ No newline at end of file diff --git a/makerwysxp/CMakeLists.txt b/makerwysxp/CMakeLists.txt index 0e9c029..2fd18ff 100644 --- a/makerwysxp/CMakeLists.txt +++ b/makerwysxp/CMakeLists.txt @@ -6,7 +6,7 @@ add_library(makerwysxp SHARED target_include_directories(makerwysxp PRIVATE ${CMAKE_SOURCE_DIR}/makerwysxp/include - ${CMAKE_SOURCE_DIR}/file + ${CMAKE_SOURCE_DIR}/utilities/include ) set_target_properties(makerwysxp PROPERTIES diff --git a/makerwysxp/include/gate.hpp b/makerwysxp/include/gate.hpp index 59fe6a4..54f5386 100644 --- a/makerwysxp/include/gate.hpp +++ b/makerwysxp/include/gate.hpp @@ -22,34 +22,35 @@ class Gate { private: - std::string designator; - double latitude; - double longitude; - std::vector file; + std::string designator; + double latitude; + double longitude; + std::vector file; public: - Gate(const std::string &designator, double latitude, double longitude) - { + Gate(const std::string &designator, double latitude, double longitude) + { - this->designator = designator; - this->latitude = latitude; - this->longitude = longitude; + this->designator = designator; + this->latitude = latitude; + this->longitude = longitude; - file = std::vector(18 + this->designator.length(), 0); - std::uint8_t *bufPtr = file.data(); - memset(bufPtr, - static_cast(this->designator.length()), - sizeof(std::uint8_t)); - bufPtr++; // Designator length - memcpy(bufPtr, this->designator.c_str(), this->designator.length()); - bufPtr += this->designator.length() + 1; // Designator plus null termination - memcpy(bufPtr, &this->latitude, sizeof(this->latitude)); - bufPtr += 8; // Latitude - memcpy(bufPtr, &this->longitude, sizeof(this->longitude)); - } + file = std::vector(18 + this->designator.length(), 0); + std::uint8_t *bufPtr = file.data(); + memset(bufPtr, + static_cast(this->designator.length()), + sizeof(std::uint8_t)); + bufPtr++; // Designator length + memcpy(bufPtr, this->designator.c_str(), this->designator.length()); + bufPtr += + this->designator.length() + 1; // Designator plus null termination + memcpy(bufPtr, &this->latitude, sizeof(this->latitude)); + bufPtr += 8; // Latitude + memcpy(bufPtr, &this->longitude, sizeof(this->longitude)); + } - std::uint8_t *getBinaryData() { return file.data(); } - std::size_t getBinaryLength() { return file.size(); } + std::uint8_t *getBinaryData() { return file.data(); } + std::size_t getBinaryLength() { return file.size(); } }; #endif \ No newline at end of file diff --git a/makerwysxp/include/runway.hpp b/makerwysxp/include/runway.hpp index 5d22117..ec6a310 100644 --- a/makerwysxp/include/runway.hpp +++ b/makerwysxp/include/runway.hpp @@ -24,90 +24,91 @@ class Runway { private: - std::string designator; - double latitudeStart; - double longitudeStart; - std::uint8_t width; - std::uint16_t length; - std::uint16_t trueHeading; - std::vector file; + std::string designator; + double latitudeStart; + double longitudeStart; + std::uint8_t width; + std::uint16_t length; + std::uint16_t trueHeading; + std::vector file; public: - Runway(std::string designator, - double latitudeStart, - double longitudeStart, - double latitudeEnd, - double longitudeEnd, - double width) - { - this->designator = std::move(designator); - this->latitudeStart = latitudeStart; - this->longitudeStart = longitudeStart; - this->width = (std::uint8_t)std::round(util::to_feet(width)); - double dist = util::distanceEarth(latitudeStart, - longitudeStart, - latitudeEnd, - longitudeEnd); - this->length = (std::uint16_t)std::round(util::to_feet(dist)); - this->trueHeading = (std::uint16_t)std::round(util::bearing(latitudeStart, - longitudeStart, - latitudeEnd, - longitudeEnd)); + Runway(std::string designator, + double latitudeStart, + double longitudeStart, + double latitudeEnd, + double longitudeEnd, + double width) + { + this->designator = std::move(designator); + this->latitudeStart = latitudeStart; + this->longitudeStart = longitudeStart; + this->width = (std::uint8_t)std::round(util::to_feet(width)); + double dist = util::distanceEarth(latitudeStart, + longitudeStart, + latitudeEnd, + longitudeEnd); + this->length = (std::uint16_t)std::round(util::to_feet(dist)); + this->trueHeading = + (std::uint16_t)std::round(util::bearing(latitudeStart, + longitudeStart, + latitudeEnd, + longitudeEnd)); - file = std::vector(23 + this->designator.length(), 0); - std::uint8_t *bufPtr = file.data(); - memset(bufPtr, - static_cast(this->designator.length()), - sizeof(std::uint8_t)); - bufPtr++; - memcpy(bufPtr, this->designator.c_str(), this->designator.length()); - bufPtr += this->designator.length() + 1; - memcpy(bufPtr, &this->latitudeStart, sizeof(this->latitudeStart)); - bufPtr += sizeof(this->latitudeStart); - memcpy(bufPtr, &this->longitudeStart, sizeof(this->longitudeStart)); - bufPtr += sizeof(this->longitudeStart); - memcpy(bufPtr, &this->width, sizeof(this->width)); - bufPtr += sizeof(this->width); - memcpy(bufPtr, &this->length, sizeof(this->length)); - bufPtr += sizeof(this->length); - memcpy(bufPtr, &this->trueHeading, sizeof(this->trueHeading)); - } + file = std::vector(23 + this->designator.length(), 0); + std::uint8_t *bufPtr = file.data(); + memset(bufPtr, + static_cast(this->designator.length()), + sizeof(std::uint8_t)); + bufPtr++; + memcpy(bufPtr, this->designator.c_str(), this->designator.length()); + bufPtr += this->designator.length() + 1; + memcpy(bufPtr, &this->latitudeStart, sizeof(this->latitudeStart)); + bufPtr += sizeof(this->latitudeStart); + memcpy(bufPtr, &this->longitudeStart, sizeof(this->longitudeStart)); + bufPtr += sizeof(this->longitudeStart); + memcpy(bufPtr, &this->width, sizeof(this->width)); + bufPtr += sizeof(this->width); + memcpy(bufPtr, &this->length, sizeof(this->length)); + bufPtr += sizeof(this->length); + memcpy(bufPtr, &this->trueHeading, sizeof(this->trueHeading)); + } - Runway(std::string designator, - double latitudeStart, - double longitudeStart, - std::uint8_t width, - std::uint16_t length, - std::uint16_t trueHeading) - { - this->designator = std::move(designator); - this->latitudeStart = latitudeStart; - this->longitudeStart = longitudeStart; - this->width = width; - this->length = length; - this->trueHeading = trueHeading; + Runway(std::string designator, + double latitudeStart, + double longitudeStart, + std::uint8_t width, + std::uint16_t length, + std::uint16_t trueHeading) + { + this->designator = std::move(designator); + this->latitudeStart = latitudeStart; + this->longitudeStart = longitudeStart; + this->width = width; + this->length = length; + this->trueHeading = trueHeading; - file = std::vector(23 + this->designator.length(), 0); - std::uint8_t *bufPtr = file.data(); - memset(bufPtr, - static_cast(this->designator.length()), - sizeof(std::uint8_t)); - bufPtr++; - memcpy(bufPtr, this->designator.c_str(), this->designator.length()); - bufPtr += this->designator.length() + 1; - memcpy(bufPtr, &this->latitudeStart, sizeof(this->latitudeStart)); - bufPtr += sizeof(this->latitudeStart); - memcpy(bufPtr, &this->longitudeStart, sizeof(this->longitudeStart)); - bufPtr += sizeof(this->longitudeStart); - memcpy(bufPtr, &this->width, sizeof(this->width)); - bufPtr += sizeof(this->width); - memcpy(bufPtr, &this->length, sizeof(this->length)); - bufPtr += sizeof(this->length); - memcpy(bufPtr, &this->trueHeading, sizeof(this->trueHeading)); - } + file = std::vector(23 + this->designator.length(), 0); + std::uint8_t *bufPtr = file.data(); + memset(bufPtr, + static_cast(this->designator.length()), + sizeof(std::uint8_t)); + bufPtr++; + memcpy(bufPtr, this->designator.c_str(), this->designator.length()); + bufPtr += this->designator.length() + 1; + memcpy(bufPtr, &this->latitudeStart, sizeof(this->latitudeStart)); + bufPtr += sizeof(this->latitudeStart); + memcpy(bufPtr, &this->longitudeStart, sizeof(this->longitudeStart)); + bufPtr += sizeof(this->longitudeStart); + memcpy(bufPtr, &this->width, sizeof(this->width)); + bufPtr += sizeof(this->width); + memcpy(bufPtr, &this->length, sizeof(this->length)); + bufPtr += sizeof(this->length); + memcpy(bufPtr, &this->trueHeading, sizeof(this->trueHeading)); + } - std::uint8_t *getBinaryData() { return file.data(); } - std::size_t getBinaryLength() { return file.size(); } + std::uint8_t *getBinaryData() { return file.data(); } + std::size_t getBinaryLength() { return file.size(); } }; #endif \ No newline at end of file diff --git a/nlohmann/json.hpp b/nlohmann/include/json.hpp similarity index 100% rename from nlohmann/json.hpp rename to nlohmann/include/json.hpp diff --git a/socket/include/socket.h b/socket/include/socket.h index a920cbb..784324f 100644 --- a/socket/include/socket.h +++ b/socket/include/socket.h @@ -20,17 +20,17 @@ class Socket { private: - char lastPath[513] = ""; - char lastHash[2 * MD5LEN + 1] = ""; - std::mutex wsLock; - std::string url; - std::function toLog; + char lastPath[513] = ""; + char lastHash[2 * MD5LEN + 1] = ""; + std::mutex wsLock; + std::string url; + std::function toLog; public: - explicit Socket(std::string url, - std::function toLog); - ~Socket(); - void sendData(data d); + explicit Socket(std::string url, + std::function toLog); + ~Socket(); + void sendData(data d); }; #endif diff --git a/socket/include/types.h b/socket/include/types.h index 2a46798..6316166 100644 --- a/socket/include/types.h +++ b/socket/include/types.h @@ -5,24 +5,24 @@ /* Structures and enums */ typedef struct data { - std::int32_t pause = 0; - float pBrake = 0; - std::int32_t onGrnd = 0; - float totFuelKg = 0; - float truHdg = 0; - double alt = 0; - float gs = 0; - float ias = 0; - float vs = 0; - double lat = 0; - double lon = 0; - float ff[8] = {0, 0, 0, 0, 0, 0, 0, 0}; - float maxSpd = 0; - char path[513] = ""; - float uptime = 0; - float magHeading = 0; - float payloadKg = 0; - float totalWeightKg = 0; + std::int32_t pause = 0; + float pBrake = 0; + std::int32_t onGrnd = 0; + float totFuelKg = 0; + float truHdg = 0; + double alt = 0; + float gs = 0; + float ias = 0; + float vs = 0; + double lat = 0; + double lon = 0; + float ff[8] = {0, 0, 0, 0, 0, 0, 0, 0}; + float maxSpd = 0; + char path[513] = ""; + float uptime = 0; + float magHeading = 0; + float payloadKg = 0; + float totalWeightKg = 0; } data; typedef enum commands { @@ -38,16 +38,16 @@ typedef enum commands { } commands; typedef struct command_base { - commands type; + commands type; } command_base; #pragma pack(push) /* push current alignment to stack */ #pragma pack(1) /* set alignment to 1 byte boundary */ typedef struct command_port { - double latitude; - double longitude; - float trueHeading; + double latitude; + double longitude; + float trueHeading; } command_port; #pragma pack(pop) /* restore original alignment from stack */ diff --git a/file/stringExtensions.hpp b/utilities/include/stringExtensions.hpp similarity index 100% rename from file/stringExtensions.hpp rename to utilities/include/stringExtensions.hpp diff --git a/file/util.hpp b/utilities/include/util.hpp similarity index 100% rename from file/util.hpp rename to utilities/include/util.hpp diff --git a/xplugin/CMakeLists.txt b/xplugin/CMakeLists.txt index 1ff6786..4703661 100644 --- a/xplugin/CMakeLists.txt +++ b/xplugin/CMakeLists.txt @@ -10,8 +10,9 @@ add_library(germanairlinesva_xplugin SHARED target_include_directories(germanairlinesva_xplugin PRIVATE ${CMAKE_SOURCE_DIR}/makerwysxp/include ${CMAKE_SOURCE_DIR}/socket/include + ${CMAKE_SOURCE_DIR}/utilities/include + ${CMAKE_SOURCE_DIR}/nlohmann/include ${CMAKE_SOURCE_DIR}/XPSDK/CHeaders - ${CMAKE_SOURCE_DIR}/nlohmann ${CMAKE_SOURCE_DIR}/file ) diff --git a/xplugin/main.cpp b/xplugin/main.cpp index 9fabc9a..db0980b 100644 --- a/xplugin/main.cpp +++ b/xplugin/main.cpp @@ -151,6 +151,12 @@ PLUGIN_API int XPluginStart(char *outName, char *outSig, char *outDesc) recordingThread = std::thread(&recordingWorker); toLog("Workers started"); + for (int i = 0; i < 10000; i++) { + char *t = (char *)calloc(sizeof(char), 11); + memcpy(t, "Take 10Bit", 10); + toLog(t); + } + return 1; }