diff --git a/.gitattributes b/.gitattributes deleted file mode 100644 index 1ff0c42..0000000 --- a/.gitattributes +++ /dev/null @@ -1,63 +0,0 @@ -############################################################################### -# Set default behavior to automatically normalize line endings. -############################################################################### -* text=auto - -############################################################################### -# Set default behavior for command prompt diff. -# -# This is need for earlier builds of msysgit that does not have it on by -# default for csharp files. -# Note: This is only used by command line -############################################################################### -#*.cs diff=csharp - -############################################################################### -# Set the merge driver for project and solution files -# -# Merging from the command prompt will add diff markers to the files if there -# are conflicts (Merging from VS is not affected by the settings below, in VS -# the diff markers are never inserted). Diff markers may cause the following -# file extensions to fail to load in VS. An alternative would be to treat -# these files as binary and thus will always conflict and require user -# intervention with every merge. To do so, just uncomment the entries below -############################################################################### -#*.sln merge=binary -#*.csproj merge=binary -#*.vbproj merge=binary -#*.vcxproj merge=binary -#*.vcproj merge=binary -#*.dbproj merge=binary -#*.fsproj merge=binary -#*.lsproj merge=binary -#*.wixproj merge=binary -#*.modelproj merge=binary -#*.sqlproj merge=binary -#*.wwaproj merge=binary - -############################################################################### -# behavior for image files -# -# image files are treated as binary by default. -############################################################################### -#*.jpg binary -#*.png binary -#*.gif binary - -############################################################################### -# diff behavior for common document formats -# -# Convert binary document formats to text before diffing them. This feature -# is only available from the command line. Turn it on by uncommenting the -# entries below. -############################################################################### -#*.doc diff=astextplain -#*.DOC diff=astextplain -#*.docx diff=astextplain -#*.DOCX diff=astextplain -#*.dot diff=astextplain -#*.DOT diff=astextplain -#*.pdf diff=astextplain -#*.PDF diff=astextplain -#*.rtf diff=astextplain -#*.RTF diff=astextplain diff --git a/.github/workflows/clang-format.yml b/.github/workflows/clang-format.yml new file mode 100644 index 0000000..ceef301 --- /dev/null +++ b/.github/workflows/clang-format.yml @@ -0,0 +1,18 @@ +name: Clang Format + +on: [push, pull_request] + +jobs: + check-formatting: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v3 + - name: Run clang-format + uses: DoozyX/clang-format-lint-action@v0.16.2 + with: + source: '.' + exclude: './3rdparty ./modules/bglib/include/cmd_def.h ./modules/bglib/src/cmd_def.cpp' + extensions: 'h,c,hpp,cpp' + clangFormatVersion: 16 + inplace: False diff --git a/.github/workflows/cppcheck.yml b/.github/workflows/cppcheck.yml new file mode 100644 index 0000000..a76d606 --- /dev/null +++ b/.github/workflows/cppcheck.yml @@ -0,0 +1,27 @@ +name: C/C++ Static Code Analysis + +on: [push, pull_request] + +jobs: + cppcheck: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v3 + - name: Install CppCheck + run: | + sudo -H apt-get update -y + sudo -H apt-get install cppcheck + env: + DEBIAN_FRONTEND: noninteractive + - name: Run Cppcheck + run: cppcheck --std=c++20 --error-exitcode=1 --xml --xml-version=2 --force modules 2>cppcheck_results.xml + - name: Generate Report + if: ${{ failure() }} + run: cppcheck-htmlreport --title=NativeSDK --file=cppcheck_results.xml --report-dir=report + - name: Upload Report + if: ${{ failure() }} + uses: actions/upload-artifact@v1 + with: + name: report + path: report diff --git a/.github/workflows/spellcheck.yml b/.github/workflows/spellcheck.yml new file mode 100644 index 0000000..19b7576 --- /dev/null +++ b/.github/workflows/spellcheck.yml @@ -0,0 +1,11 @@ +name: 'Check Spelling' +on: + pull_request: + push: + +jobs: + spellcheck: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - uses: streetsidesoftware/cspell-action@v2 \ No newline at end of file diff --git a/.gitignore b/.gitignore index 7464f7f..911ec70 100644 --- a/.gitignore +++ b/.gitignore @@ -1,369 +1,98 @@ -## Ignore Visual Studio temporary files, build results, and -## files generated by popular Visual Studio add-ons. -## -## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore +# Prerequisites +*.d -# User-specific files -*.suo -*.user -*.userosscache -*.sln.docstates - -# User-specific files (MonoDevelop/Xamarin Studio) -*.userprefs - -# Build results -[Dd]ebug/ -[Dd]ebugPublic/ -[Rr]elease/ -[Rr]eleases/ -x64/ -x86/ -bld/ -[Bb]in/ -[Oo]bj/ -[Ll]og/ - -# Visual Studio 2015/2017 cache/options directory -.vs/ -# Uncomment if you have tasks that create the project's static files in wwwroot -#wwwroot/ - -# Visual Studio 2017 auto generated files -Generated\ Files/ - -# MSTest test Results -[Tt]est[Rr]esult*/ -[Bb]uild[Ll]og.* - -# NUNIT -*.VisualState.xml -TestResult.xml - -# Build Results of an ATL Project -[Dd]ebugPS/ -[Rr]eleasePS/ -dlldata.c - -# Benchmark Results -BenchmarkDotNet.Artifacts/ - -# .NET Core -project.lock.json -project.fragment.lock.json -artifacts/ - -# StyleCop -StyleCopReport.xml - -# Files built by Visual Studio -*_i.c -*_p.c -*_i.h -*.ilk -*.meta +# Compiled Object files +*.slo +*.lo +*.o *.obj -*.iobj -*.pch -*.pdb -*.ipdb -*.pgc -*.pgd -*.rsp -*.sbr -*.tlb -*.tli -*.tlh -*.tmp -*.tmp_proj -*.log -*.vspscc -*.vssscc -.builds -*.pidb -*.svclog -*.scc - -# Chutzpah Test files -_Chutzpah* - -# Visual C++ cache files -ipch/ -*.aps -*.ncb -*.opendb -*.opensdf -*.sdf -*.cachefile -*.VC.db -*.VC.VC.opendb - -# Visual Studio profiler -*.psess -*.vsp -*.vspx -*.sap - -# Visual Studio Trace Files -*.e2e - -# TFS 2012 Local Workspace -$tf/ - -# Guidance Automation Toolkit -*.gpState - -# ReSharper is a .NET coding add-in -_ReSharper*/ -*.[Rr]e[Ss]harper -*.DotSettings.user - -# JustCode is a .NET coding add-in -.JustCode - -# TeamCity is a build add-in -_TeamCity* - -# DotCover is a Code Coverage Tool -*.dotCover - -# AxoCover is a Code Coverage Tool -.axoCover/* -!.axoCover/settings.json - -# Visual Studio code coverage results -*.coverage -*.coveragexml - -# NCrunch -_NCrunch_* -.*crunch*.local.xml -nCrunchTemp_* - -# MightyMoose -*.mm.* -AutoTest.Net/ - -# Web workbench (sass) -.sass-cache/ - -# Installshield output folder -[Ee]xpress/ - -# DocProject is a documentation generator add-in -DocProject/buildhelp/ -DocProject/Help/*.HxT -DocProject/Help/*.HxC -DocProject/Help/*.hhc -DocProject/Help/*.hhk -DocProject/Help/*.hhp -DocProject/Help/Html2 -DocProject/Help/html - -# Click-Once directory -publish/ - -# Publish Web Output -*.[Pp]ublish.xml -*.azurePubxml -# Note: Comment the next line if you want to checkin your web deploy settings, -# but database connection strings (with potential passwords) will be unencrypted -*.pubxml -*.publishproj - -# Microsoft Azure Web App publish settings. Comment the next line if you want to -# checkin your Azure Web App publish settings, but sensitive information contained -# in these scripts will be unencrypted -PublishScripts/ - -# NuGet Packages -*.nupkg -# The packages folder can be ignored because of Package Restore -**/[Pp]ackages/* -# except build/, which is used as an MSBuild target. -!**/[Pp]ackages/build/ -# Uncomment if necessary however generally it will be regenerated when needed -#!**/[Pp]ackages/repositories.config -# NuGet v3's project.json files produces more ignorable files -*.nuget.props -*.nuget.targets - -# Microsoft Azure Build Output -csx/ -*.build.csdef - -# Microsoft Azure Emulator -ecf/ -rcf/ -# Windows Store app package directories and files -AppPackages/ -BundleArtifacts/ -Package.StoreAssociation.xml -_pkginfo.txt -*.appx - -# Visual Studio cache files -# files ending in .cache can be ignored -*.[Cc]ache -# but keep track of directories ending in .cache -!*.[Cc]ache/ - -# Others -ClientBin/ -~$* -*~ -*.dbmdl -*.dbproj.schemaview -*.jfm -*.pfx -*.publishsettings -orleans.codegen.cs - -# Including strong name files can present a security risk -# (https://github.com/github/gitignore/pull/2483#issue-259490424) -#*.snk - -# Since there are multiple workflows, uncomment next line to ignore bower_components -# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) -#bower_components/ - -# RIA/Silverlight projects -Generated_Code/ - -# Backup & report files from converting an old project file -# to a newer Visual Studio version. Backup files are not needed, -# because we have git ;-) -_UpgradeReport_Files/ -Backup*/ -UpgradeLog*.XML -UpgradeLog*.htm -ServiceFabricBackup/ -*.rptproj.bak - -# SQL Server files -*.mdf -*.ldf -*.ndf - -# Business Intelligence projects -*.rdl.data -*.bim.layout -*.bim_*.settings -*.rptproj.rsuser - -# Microsoft Fakes -FakesAssemblies/ - -# GhostDoc plugin setting file -*.GhostDoc.xml - -# Node.js Tools for Visual Studio -.ntvs_analysis.dat -node_modules/ - -# Visual Studio 6 build log -*.plg - -# Visual Studio 6 workspace options file -*.opt - -# Visual Studio 6 auto-generated workspace file (contains which files were open etc.) -*.vbw - -# Visual Studio LightSwitch build output -**/*.HTMLClient/GeneratedArtifacts -**/*.DesktopClient/GeneratedArtifacts -**/*.DesktopClient/ModelManifest.xml -**/*.Server/GeneratedArtifacts -**/*.Server/ModelManifest.xml -_Pvt_Extensions - -# Paket dependency manager -.paket/paket.exe -paket-files/ - -# FAKE - F# Make -.fake/ - -# JetBrains Rider -.idea/ -*.sln.iml - -# CodeRush -.cr/ - -# Python Tools for Visual Studio (PTVS) -__pycache__/ -*.pyc -*.egg-info -*.egg - -# Cake - Uncomment if you are using it -# tools/** -# !tools/packages.config - -# Tabs Studio -*.tss - -# Telerik's JustMock configuration file -*.jmconfig - -# BizTalk build output -*.btp.cs -*.btm.cs -*.odx.cs -*.xsd.cs - -# OpenCover UI analysis results -OpenCover/ - -# Azure Stream Analytics local run output -ASALocalRun/ - -# MSBuild Binary and Structured Log -*.binlog - -# NVidia Nsight GPU debugger configuration file -*.nvuser - -# MFractors (Xamarin productivity tool) working folder -.mfractor/ +# Precompiled Headers +*.gch +*.pch -.exe -.raw -.txt +# Compiled Dynamic libraries +*.so +*.dylib +*.dll + +# Fortran module files +*.mod +*.smod + +# Compiled Static libraries +*.lai +*.la +*.a +*.lib +*.exp +*.pdb -#Environment file -.env -.vscode/ +# Executables +*.exe +*.out +*.app -build* -!build_deploy.yml -installed* +# Build files +build/ compiled/ -python/flowcat.egg-info/ -.Rproj.user +java-package/openbci_gui_helpers/target/ -# Build files -java-package/brainflow/target -java-package/brainflow/.classpath -java-package/brainflow/.project -csharp-package/brainflow/brainflow/lib/brainflow_boards.json -csharp-package/brainflow/brainflow/libBoardController.dylib -csharp-package/brainflow/brainflow/libDataHandler.dylib -java-package/brainflow/.settings/org.eclipse.jdt.apt.core.prefs -java-package/brainflow/.settings/org.eclipse.jdt.core.prefs -java-package/brainflow/.settings/org.eclipse.m2e.core.prefs -java-package/brainflow/src/main/resources/brainflow_boards.json -java-package/brainflow/src/main/resources/libBoardController.dylib -java-package/brainflow/src/main/resources/libDataHandler.dylib -matlab-package/lib/brainflow_boards.json -python-package/brainflow/lib/brainflow_boards.json -python-package/brainflow/lib/libBoardController.dylib -python-package/brainflow/lib/libDataHandler.dylib -java-package/openbci_gui_helpers/target/classes/openbci_gui_helpers/GUIHelper.class -java-package/openbci_gui_helpers/target/classes/openbci_gui_helpers/GUIHelper$DllInterface.class -java-package/openbci_gui_helpers/target/classes/openbci_gui_helpers/GUIHelper$DllNativeInterface.class -java-package/openbci_gui_helpers/target/classes/openbci_gui_helpers/examples/TestDiscovery.class -java-package/openbci_gui_helpers/target/classes/openbci_gui_helpers/examples/TestNativeDiscovery.class +# VS Code +.vscode/ +ALL_BUILD.vcxproj +ALL_BUILD.vcxproj.filters +cmake_install.cmake +CMakeCache.txt +GanglionNativeScan.vcxproj +GanglionNativeScan.vcxproj.filters +GanglionScan.vcxproj +GanglionScan.vcxproj.filters +openbci-gui-helpers.sln +ZERO_CHECK.vcxproj +ZERO_CHECK.vcxproj.filters +3rdparty/SimpleBLE/simpleble/ALL_BUILD.vcxproj +3rdparty/SimpleBLE/simpleble/ALL_BUILD.vcxproj.filters +3rdparty/SimpleBLE/simpleble/cmake_install.cmake +3rdparty/SimpleBLE/simpleble/simpleble-c.vcxproj +3rdparty/SimpleBLE/simpleble/simpleble-c.vcxproj.filters +3rdparty/SimpleBLE/simpleble/SimpleBLE.sln +3rdparty/SimpleBLE/simpleble/simpleble.vcxproj +3rdparty/SimpleBLE/simpleble/simpleble.vcxproj.filters +3rdparty/SimpleBLE/simpleble/VERSION +3rdparty/SimpleBLE/simpleble/CMakeFiles/generate.stamp +3rdparty/SimpleBLE/simpleble/CMakeFiles/generate.stamp.depend +3rdparty/SimpleBLE/simpleble/export/simpleble/export.h +3rdparty/SimpleBLE/simpleble/libfmt/ALL_BUILD.vcxproj +3rdparty/SimpleBLE/simpleble/libfmt/ALL_BUILD.vcxproj.filters +3rdparty/SimpleBLE/simpleble/libfmt/cmake_install.cmake +3rdparty/SimpleBLE/simpleble/libfmt/FMT.sln +3rdparty/SimpleBLE/simpleble/libfmt/fmt.vcxproj +3rdparty/SimpleBLE/simpleble/libfmt/fmt.vcxproj.filters +3rdparty/SimpleBLE/simpleble/libfmt/CMakeFiles/generate.stamp +3rdparty/SimpleBLE/simpleble/libfmt/CMakeFiles/generate.stamp.depend +CMakeFiles/cmake.check_cache +CMakeFiles/CMakeConfigureLog.yaml +CMakeFiles/generate.stamp +CMakeFiles/generate.stamp.depend +CMakeFiles/generate.stamp.list +CMakeFiles/TargetDirectories.txt +CMakeFiles/169bdb6ecb54b9cb29a827f249608a2d/generate.stamp.rule +CMakeFiles/3.27.4/CMakeCXXCompiler.cmake +CMakeFiles/3.27.4/CMakeDetermineCompilerABI_CXX.bin +CMakeFiles/3.27.4/CMakeRCCompiler.cmake +CMakeFiles/3.27.4/CMakeSystem.cmake +CMakeFiles/3.27.4/VCTargetsPath.txt +CMakeFiles/3.27.4/VCTargetsPath.vcxproj +CMakeFiles/3.27.4/CompilerIdCXX/CMakeCXXCompilerId.cpp +CMakeFiles/3.27.4/CompilerIdCXX/CompilerIdCXX.vcxproj +CMakeFiles/3.27.4/CompilerIdCXX/Debug/CompilerIdCXX.exe.recipe +CMakeFiles/3.27.4/CompilerIdCXX/Debug/CompilerIdCXX.tlog/CL.command.1.tlog +CMakeFiles/3.27.4/CompilerIdCXX/Debug/CompilerIdCXX.tlog/CL.read.1.tlog +CMakeFiles/3.27.4/CompilerIdCXX/Debug/CompilerIdCXX.tlog/CL.write.1.tlog +CMakeFiles/3.27.4/CompilerIdCXX/Debug/CompilerIdCXX.tlog/CompilerIdCXX.lastbuildstate +CMakeFiles/3.27.4/CompilerIdCXX/Debug/CompilerIdCXX.tlog/link.command.1.tlog +CMakeFiles/3.27.4/CompilerIdCXX/Debug/CompilerIdCXX.tlog/link.read.1.tlog +CMakeFiles/3.27.4/CompilerIdCXX/Debug/CompilerIdCXX.tlog/link.write.1.tlog +CMakeFiles/3.27.4/x64/Debug/VCTargetsPath.recipe +CMakeFiles/3.27.4/x64/Debug/VCTargetsPath.tlog/VCTargetsPath.lastbuildstate diff --git a/third_party/SimpleBLE/.clang-format b/3rdparty/SimpleBLE/.clang-format similarity index 100% rename from third_party/SimpleBLE/.clang-format rename to 3rdparty/SimpleBLE/.clang-format diff --git a/third_party/SimpleBLE/.github/workflows/ci_build_examples.yml b/3rdparty/SimpleBLE/.github/workflows/ci_build_examples.yml similarity index 100% rename from third_party/SimpleBLE/.github/workflows/ci_build_examples.yml rename to 3rdparty/SimpleBLE/.github/workflows/ci_build_examples.yml diff --git a/third_party/SimpleBLE/.github/workflows/ci_build_lib.yml b/3rdparty/SimpleBLE/.github/workflows/ci_build_lib.yml similarity index 100% rename from third_party/SimpleBLE/.github/workflows/ci_build_lib.yml rename to 3rdparty/SimpleBLE/.github/workflows/ci_build_lib.yml diff --git a/third_party/SimpleBLE/.github/workflows/ci_docs.yml b/3rdparty/SimpleBLE/.github/workflows/ci_docs.yml similarity index 100% rename from third_party/SimpleBLE/.github/workflows/ci_docs.yml rename to 3rdparty/SimpleBLE/.github/workflows/ci_docs.yml diff --git a/third_party/SimpleBLE/.github/workflows/ci_lint.yml b/3rdparty/SimpleBLE/.github/workflows/ci_lint.yml similarity index 100% rename from third_party/SimpleBLE/.github/workflows/ci_lint.yml rename to 3rdparty/SimpleBLE/.github/workflows/ci_lint.yml diff --git a/third_party/SimpleBLE/.github/workflows/ci_release.yml b/3rdparty/SimpleBLE/.github/workflows/ci_release.yml similarity index 100% rename from third_party/SimpleBLE/.github/workflows/ci_release.yml rename to 3rdparty/SimpleBLE/.github/workflows/ci_release.yml diff --git a/third_party/SimpleBLE/.github/workflows/ci_release_test.yml b/3rdparty/SimpleBLE/.github/workflows/ci_release_test.yml similarity index 100% rename from third_party/SimpleBLE/.github/workflows/ci_release_test.yml rename to 3rdparty/SimpleBLE/.github/workflows/ci_release_test.yml diff --git a/third_party/SimpleBLE/.github/workflows/ci_test.yml b/3rdparty/SimpleBLE/.github/workflows/ci_test.yml similarity index 100% rename from third_party/SimpleBLE/.github/workflows/ci_test.yml rename to 3rdparty/SimpleBLE/.github/workflows/ci_test.yml diff --git a/third_party/SimpleBLE/.gitignore b/3rdparty/SimpleBLE/.gitignore similarity index 100% rename from third_party/SimpleBLE/.gitignore rename to 3rdparty/SimpleBLE/.gitignore diff --git a/third_party/SimpleBLE/.readthedocs.yaml b/3rdparty/SimpleBLE/.readthedocs.yaml similarity index 100% rename from third_party/SimpleBLE/.readthedocs.yaml rename to 3rdparty/SimpleBLE/.readthedocs.yaml diff --git a/third_party/SimpleBLE/LICENSE.md b/3rdparty/SimpleBLE/LICENSE.md similarity index 100% rename from third_party/SimpleBLE/LICENSE.md rename to 3rdparty/SimpleBLE/LICENSE.md diff --git a/third_party/SimpleBLE/README.rst b/3rdparty/SimpleBLE/README.rst similarity index 100% rename from third_party/SimpleBLE/README.rst rename to 3rdparty/SimpleBLE/README.rst diff --git a/third_party/SimpleBLE/VERSION b/3rdparty/SimpleBLE/VERSION similarity index 100% rename from third_party/SimpleBLE/VERSION rename to 3rdparty/SimpleBLE/VERSION diff --git a/third_party/SimpleBLE/cmake/epilogue.cmake b/3rdparty/SimpleBLE/cmake/epilogue.cmake similarity index 100% rename from third_party/SimpleBLE/cmake/epilogue.cmake rename to 3rdparty/SimpleBLE/cmake/epilogue.cmake diff --git a/third_party/SimpleBLE/cmake/find/FindDBus1.cmake b/3rdparty/SimpleBLE/cmake/find/FindDBus1.cmake similarity index 100% rename from third_party/SimpleBLE/cmake/find/FindDBus1.cmake rename to 3rdparty/SimpleBLE/cmake/find/FindDBus1.cmake diff --git a/third_party/SimpleBLE/cmake/find/Findfmt.cmake b/3rdparty/SimpleBLE/cmake/find/Findfmt.cmake similarity index 100% rename from third_party/SimpleBLE/cmake/find/Findfmt.cmake rename to 3rdparty/SimpleBLE/cmake/find/Findfmt.cmake diff --git a/third_party/SimpleBLE/cmake/parse_version.cmake b/3rdparty/SimpleBLE/cmake/parse_version.cmake similarity index 100% rename from third_party/SimpleBLE/cmake/parse_version.cmake rename to 3rdparty/SimpleBLE/cmake/parse_version.cmake diff --git a/third_party/SimpleBLE/cmake/prelude.cmake b/3rdparty/SimpleBLE/cmake/prelude.cmake similarity index 100% rename from third_party/SimpleBLE/cmake/prelude.cmake rename to 3rdparty/SimpleBLE/cmake/prelude.cmake diff --git a/third_party/SimpleBLE/docs/Doxyfile b/3rdparty/SimpleBLE/docs/Doxyfile similarity index 100% rename from third_party/SimpleBLE/docs/Doxyfile rename to 3rdparty/SimpleBLE/docs/Doxyfile diff --git a/third_party/SimpleBLE/docs/Makefile b/3rdparty/SimpleBLE/docs/Makefile similarity index 100% rename from third_party/SimpleBLE/docs/Makefile rename to 3rdparty/SimpleBLE/docs/Makefile diff --git a/third_party/SimpleBLE/docs/changelog.rst b/3rdparty/SimpleBLE/docs/changelog.rst similarity index 100% rename from third_party/SimpleBLE/docs/changelog.rst rename to 3rdparty/SimpleBLE/docs/changelog.rst diff --git a/third_party/SimpleBLE/docs/conf.py b/3rdparty/SimpleBLE/docs/conf.py similarity index 100% rename from third_party/SimpleBLE/docs/conf.py rename to 3rdparty/SimpleBLE/docs/conf.py diff --git a/third_party/SimpleBLE/docs/extras.rst b/3rdparty/SimpleBLE/docs/extras.rst similarity index 100% rename from third_party/SimpleBLE/docs/extras.rst rename to 3rdparty/SimpleBLE/docs/extras.rst diff --git a/third_party/SimpleBLE/docs/index.rst b/3rdparty/SimpleBLE/docs/index.rst similarity index 100% rename from third_party/SimpleBLE/docs/index.rst rename to 3rdparty/SimpleBLE/docs/index.rst diff --git a/third_party/SimpleBLE/docs/overview.rst b/3rdparty/SimpleBLE/docs/overview.rst similarity index 100% rename from third_party/SimpleBLE/docs/overview.rst rename to 3rdparty/SimpleBLE/docs/overview.rst diff --git a/third_party/SimpleBLE/docs/requirements.txt b/3rdparty/SimpleBLE/docs/requirements.txt similarity index 100% rename from third_party/SimpleBLE/docs/requirements.txt rename to 3rdparty/SimpleBLE/docs/requirements.txt diff --git a/third_party/SimpleBLE/docs/simpleble/api.rst b/3rdparty/SimpleBLE/docs/simpleble/api.rst similarity index 100% rename from third_party/SimpleBLE/docs/simpleble/api.rst rename to 3rdparty/SimpleBLE/docs/simpleble/api.rst diff --git a/third_party/SimpleBLE/docs/simpleble/faq.rst b/3rdparty/SimpleBLE/docs/simpleble/faq.rst similarity index 100% rename from third_party/SimpleBLE/docs/simpleble/faq.rst rename to 3rdparty/SimpleBLE/docs/simpleble/faq.rst diff --git a/third_party/SimpleBLE/docs/simpleble/tutorial.rst b/3rdparty/SimpleBLE/docs/simpleble/tutorial.rst similarity index 100% rename from third_party/SimpleBLE/docs/simpleble/tutorial.rst rename to 3rdparty/SimpleBLE/docs/simpleble/tutorial.rst diff --git a/third_party/SimpleBLE/docs/simpleble/usage.rst b/3rdparty/SimpleBLE/docs/simpleble/usage.rst similarity index 100% rename from third_party/SimpleBLE/docs/simpleble/usage.rst rename to 3rdparty/SimpleBLE/docs/simpleble/usage.rst diff --git a/third_party/SimpleBLE/docs/simplebluez/api.rst b/3rdparty/SimpleBLE/docs/simplebluez/api.rst similarity index 100% rename from third_party/SimpleBLE/docs/simplebluez/api.rst rename to 3rdparty/SimpleBLE/docs/simplebluez/api.rst diff --git a/third_party/SimpleBLE/docs/simplebluez/usage.rst b/3rdparty/SimpleBLE/docs/simplebluez/usage.rst similarity index 100% rename from third_party/SimpleBLE/docs/simplebluez/usage.rst rename to 3rdparty/SimpleBLE/docs/simplebluez/usage.rst diff --git a/third_party/SimpleBLE/docs/simpledbus/api.rst b/3rdparty/SimpleBLE/docs/simpledbus/api.rst similarity index 100% rename from third_party/SimpleBLE/docs/simpledbus/api.rst rename to 3rdparty/SimpleBLE/docs/simpledbus/api.rst diff --git a/third_party/SimpleBLE/docs/simpledbus/usage.rst b/3rdparty/SimpleBLE/docs/simpledbus/usage.rst similarity index 100% rename from third_party/SimpleBLE/docs/simpledbus/usage.rst rename to 3rdparty/SimpleBLE/docs/simpledbus/usage.rst diff --git a/third_party/SimpleBLE/docs/simplepyble/api.rst b/3rdparty/SimpleBLE/docs/simplepyble/api.rst similarity index 100% rename from third_party/SimpleBLE/docs/simplepyble/api.rst rename to 3rdparty/SimpleBLE/docs/simplepyble/api.rst diff --git a/third_party/SimpleBLE/docs/simplepyble/usage.rst b/3rdparty/SimpleBLE/docs/simplepyble/usage.rst similarity index 100% rename from third_party/SimpleBLE/docs/simplepyble/usage.rst rename to 3rdparty/SimpleBLE/docs/simplepyble/usage.rst diff --git a/third_party/SimpleBLE/examples/simpleble/CMakeLists.txt b/3rdparty/SimpleBLE/examples/simpleble/CMakeLists.txt similarity index 100% rename from third_party/SimpleBLE/examples/simpleble/CMakeLists.txt rename to 3rdparty/SimpleBLE/examples/simpleble/CMakeLists.txt diff --git a/third_party/SimpleBLE/examples/simpleble/c/connect/CMakeLists.txt b/3rdparty/SimpleBLE/examples/simpleble/c/connect/CMakeLists.txt similarity index 100% rename from third_party/SimpleBLE/examples/simpleble/c/connect/CMakeLists.txt rename to 3rdparty/SimpleBLE/examples/simpleble/c/connect/CMakeLists.txt diff --git a/third_party/SimpleBLE/examples/simpleble/c/connect/connect.c b/3rdparty/SimpleBLE/examples/simpleble/c/connect/connect.c similarity index 100% rename from third_party/SimpleBLE/examples/simpleble/c/connect/connect.c rename to 3rdparty/SimpleBLE/examples/simpleble/c/connect/connect.c diff --git a/third_party/SimpleBLE/examples/simpleble/c/notify/CMakeLists.txt b/3rdparty/SimpleBLE/examples/simpleble/c/notify/CMakeLists.txt similarity index 100% rename from third_party/SimpleBLE/examples/simpleble/c/notify/CMakeLists.txt rename to 3rdparty/SimpleBLE/examples/simpleble/c/notify/CMakeLists.txt diff --git a/third_party/SimpleBLE/examples/simpleble/c/notify/notify.c b/3rdparty/SimpleBLE/examples/simpleble/c/notify/notify.c similarity index 100% rename from third_party/SimpleBLE/examples/simpleble/c/notify/notify.c rename to 3rdparty/SimpleBLE/examples/simpleble/c/notify/notify.c diff --git a/third_party/SimpleBLE/examples/simpleble/c/scan/CMakeLists.txt b/3rdparty/SimpleBLE/examples/simpleble/c/scan/CMakeLists.txt similarity index 100% rename from third_party/SimpleBLE/examples/simpleble/c/scan/CMakeLists.txt rename to 3rdparty/SimpleBLE/examples/simpleble/c/scan/CMakeLists.txt diff --git a/third_party/SimpleBLE/examples/simpleble/c/scan/scan.c b/3rdparty/SimpleBLE/examples/simpleble/c/scan/scan.c similarity index 100% rename from third_party/SimpleBLE/examples/simpleble/c/scan/scan.c rename to 3rdparty/SimpleBLE/examples/simpleble/c/scan/scan.c diff --git a/third_party/SimpleBLE/examples/simpleble/cpp/common/utils.cpp b/3rdparty/SimpleBLE/examples/simpleble/cpp/common/utils.cpp similarity index 100% rename from third_party/SimpleBLE/examples/simpleble/cpp/common/utils.cpp rename to 3rdparty/SimpleBLE/examples/simpleble/cpp/common/utils.cpp diff --git a/third_party/SimpleBLE/examples/simpleble/cpp/common/utils.hpp b/3rdparty/SimpleBLE/examples/simpleble/cpp/common/utils.hpp similarity index 100% rename from third_party/SimpleBLE/examples/simpleble/cpp/common/utils.hpp rename to 3rdparty/SimpleBLE/examples/simpleble/cpp/common/utils.hpp diff --git a/third_party/SimpleBLE/examples/simpleble/cpp/connect/CMakeLists.txt b/3rdparty/SimpleBLE/examples/simpleble/cpp/connect/CMakeLists.txt similarity index 100% rename from third_party/SimpleBLE/examples/simpleble/cpp/connect/CMakeLists.txt rename to 3rdparty/SimpleBLE/examples/simpleble/cpp/connect/CMakeLists.txt diff --git a/third_party/SimpleBLE/examples/simpleble/cpp/connect/connect.cpp b/3rdparty/SimpleBLE/examples/simpleble/cpp/connect/connect.cpp similarity index 100% rename from third_party/SimpleBLE/examples/simpleble/cpp/connect/connect.cpp rename to 3rdparty/SimpleBLE/examples/simpleble/cpp/connect/connect.cpp diff --git a/third_party/SimpleBLE/examples/simpleble/cpp/connect_safe/CMakeLists.txt b/3rdparty/SimpleBLE/examples/simpleble/cpp/connect_safe/CMakeLists.txt similarity index 100% rename from third_party/SimpleBLE/examples/simpleble/cpp/connect_safe/CMakeLists.txt rename to 3rdparty/SimpleBLE/examples/simpleble/cpp/connect_safe/CMakeLists.txt diff --git a/third_party/SimpleBLE/examples/simpleble/cpp/connect_safe/connect_safe.cpp b/3rdparty/SimpleBLE/examples/simpleble/cpp/connect_safe/connect_safe.cpp similarity index 100% rename from third_party/SimpleBLE/examples/simpleble/cpp/connect_safe/connect_safe.cpp rename to 3rdparty/SimpleBLE/examples/simpleble/cpp/connect_safe/connect_safe.cpp diff --git a/third_party/SimpleBLE/examples/simpleble/cpp/list_adapters/CMakeLists.txt b/3rdparty/SimpleBLE/examples/simpleble/cpp/list_adapters/CMakeLists.txt similarity index 100% rename from third_party/SimpleBLE/examples/simpleble/cpp/list_adapters/CMakeLists.txt rename to 3rdparty/SimpleBLE/examples/simpleble/cpp/list_adapters/CMakeLists.txt diff --git a/third_party/SimpleBLE/examples/simpleble/cpp/list_adapters/list_adapters.cpp b/3rdparty/SimpleBLE/examples/simpleble/cpp/list_adapters/list_adapters.cpp similarity index 100% rename from third_party/SimpleBLE/examples/simpleble/cpp/list_adapters/list_adapters.cpp rename to 3rdparty/SimpleBLE/examples/simpleble/cpp/list_adapters/list_adapters.cpp diff --git a/third_party/SimpleBLE/examples/simpleble/cpp/notify/CMakeLists.txt b/3rdparty/SimpleBLE/examples/simpleble/cpp/notify/CMakeLists.txt similarity index 100% rename from third_party/SimpleBLE/examples/simpleble/cpp/notify/CMakeLists.txt rename to 3rdparty/SimpleBLE/examples/simpleble/cpp/notify/CMakeLists.txt diff --git a/third_party/SimpleBLE/examples/simpleble/cpp/notify/notify.cpp b/3rdparty/SimpleBLE/examples/simpleble/cpp/notify/notify.cpp similarity index 100% rename from third_party/SimpleBLE/examples/simpleble/cpp/notify/notify.cpp rename to 3rdparty/SimpleBLE/examples/simpleble/cpp/notify/notify.cpp diff --git a/third_party/SimpleBLE/examples/simpleble/cpp/notify_multi/CMakeLists.txt b/3rdparty/SimpleBLE/examples/simpleble/cpp/notify_multi/CMakeLists.txt similarity index 100% rename from third_party/SimpleBLE/examples/simpleble/cpp/notify_multi/CMakeLists.txt rename to 3rdparty/SimpleBLE/examples/simpleble/cpp/notify_multi/CMakeLists.txt diff --git a/third_party/SimpleBLE/examples/simpleble/cpp/notify_multi/notify_multi.cpp b/3rdparty/SimpleBLE/examples/simpleble/cpp/notify_multi/notify_multi.cpp similarity index 100% rename from third_party/SimpleBLE/examples/simpleble/cpp/notify_multi/notify_multi.cpp rename to 3rdparty/SimpleBLE/examples/simpleble/cpp/notify_multi/notify_multi.cpp diff --git a/third_party/SimpleBLE/examples/simpleble/cpp/read/CMakeLists.txt b/3rdparty/SimpleBLE/examples/simpleble/cpp/read/CMakeLists.txt similarity index 100% rename from third_party/SimpleBLE/examples/simpleble/cpp/read/CMakeLists.txt rename to 3rdparty/SimpleBLE/examples/simpleble/cpp/read/CMakeLists.txt diff --git a/third_party/SimpleBLE/examples/simpleble/cpp/read/read.cpp b/3rdparty/SimpleBLE/examples/simpleble/cpp/read/read.cpp similarity index 100% rename from third_party/SimpleBLE/examples/simpleble/cpp/read/read.cpp rename to 3rdparty/SimpleBLE/examples/simpleble/cpp/read/read.cpp diff --git a/third_party/SimpleBLE/examples/simpleble/cpp/scan/CMakeLists.txt b/3rdparty/SimpleBLE/examples/simpleble/cpp/scan/CMakeLists.txt similarity index 100% rename from third_party/SimpleBLE/examples/simpleble/cpp/scan/CMakeLists.txt rename to 3rdparty/SimpleBLE/examples/simpleble/cpp/scan/CMakeLists.txt diff --git a/third_party/SimpleBLE/examples/simpleble/cpp/scan/scan.cpp b/3rdparty/SimpleBLE/examples/simpleble/cpp/scan/scan.cpp similarity index 100% rename from third_party/SimpleBLE/examples/simpleble/cpp/scan/scan.cpp rename to 3rdparty/SimpleBLE/examples/simpleble/cpp/scan/scan.cpp diff --git a/third_party/SimpleBLE/examples/simpleble/cpp/write/CMakeLists.txt b/3rdparty/SimpleBLE/examples/simpleble/cpp/write/CMakeLists.txt similarity index 100% rename from third_party/SimpleBLE/examples/simpleble/cpp/write/CMakeLists.txt rename to 3rdparty/SimpleBLE/examples/simpleble/cpp/write/CMakeLists.txt diff --git a/third_party/SimpleBLE/examples/simpleble/cpp/write/write.cpp b/3rdparty/SimpleBLE/examples/simpleble/cpp/write/write.cpp similarity index 100% rename from third_party/SimpleBLE/examples/simpleble/cpp/write/write.cpp rename to 3rdparty/SimpleBLE/examples/simpleble/cpp/write/write.cpp diff --git a/third_party/SimpleBLE/examples/simplebluez/CMakeLists.txt b/3rdparty/SimpleBLE/examples/simplebluez/CMakeLists.txt similarity index 100% rename from third_party/SimpleBLE/examples/simplebluez/CMakeLists.txt rename to 3rdparty/SimpleBLE/examples/simplebluez/CMakeLists.txt diff --git a/third_party/SimpleBLE/examples/simplebluez/ble_nus/CMakeLists.txt b/3rdparty/SimpleBLE/examples/simplebluez/ble_nus/CMakeLists.txt similarity index 100% rename from third_party/SimpleBLE/examples/simplebluez/ble_nus/CMakeLists.txt rename to 3rdparty/SimpleBLE/examples/simplebluez/ble_nus/CMakeLists.txt diff --git a/third_party/SimpleBLE/examples/simplebluez/ble_nus/ble_nus.cpp b/3rdparty/SimpleBLE/examples/simplebluez/ble_nus/ble_nus.cpp similarity index 100% rename from third_party/SimpleBLE/examples/simplebluez/ble_nus/ble_nus.cpp rename to 3rdparty/SimpleBLE/examples/simplebluez/ble_nus/ble_nus.cpp diff --git a/third_party/SimpleBLE/examples/simplebluez/connect/CMakeLists.txt b/3rdparty/SimpleBLE/examples/simplebluez/connect/CMakeLists.txt similarity index 100% rename from third_party/SimpleBLE/examples/simplebluez/connect/CMakeLists.txt rename to 3rdparty/SimpleBLE/examples/simplebluez/connect/CMakeLists.txt diff --git a/third_party/SimpleBLE/examples/simplebluez/connect/connect.cpp b/3rdparty/SimpleBLE/examples/simplebluez/connect/connect.cpp similarity index 100% rename from third_party/SimpleBLE/examples/simplebluez/connect/connect.cpp rename to 3rdparty/SimpleBLE/examples/simplebluez/connect/connect.cpp diff --git a/third_party/SimpleBLE/examples/simplebluez/list_adapters/CMakeLists.txt b/3rdparty/SimpleBLE/examples/simplebluez/list_adapters/CMakeLists.txt similarity index 100% rename from third_party/SimpleBLE/examples/simplebluez/list_adapters/CMakeLists.txt rename to 3rdparty/SimpleBLE/examples/simplebluez/list_adapters/CMakeLists.txt diff --git a/third_party/SimpleBLE/examples/simplebluez/list_adapters/list_adapters.cpp b/3rdparty/SimpleBLE/examples/simplebluez/list_adapters/list_adapters.cpp similarity index 100% rename from third_party/SimpleBLE/examples/simplebluez/list_adapters/list_adapters.cpp rename to 3rdparty/SimpleBLE/examples/simplebluez/list_adapters/list_adapters.cpp diff --git a/third_party/SimpleBLE/examples/simplebluez/list_paired/CMakeLists.txt b/3rdparty/SimpleBLE/examples/simplebluez/list_paired/CMakeLists.txt similarity index 100% rename from third_party/SimpleBLE/examples/simplebluez/list_paired/CMakeLists.txt rename to 3rdparty/SimpleBLE/examples/simplebluez/list_paired/CMakeLists.txt diff --git a/third_party/SimpleBLE/examples/simplebluez/list_paired/list_paired.cpp b/3rdparty/SimpleBLE/examples/simplebluez/list_paired/list_paired.cpp similarity index 100% rename from third_party/SimpleBLE/examples/simplebluez/list_paired/list_paired.cpp rename to 3rdparty/SimpleBLE/examples/simplebluez/list_paired/list_paired.cpp diff --git a/third_party/SimpleBLE/examples/simplebluez/notify/CMakeLists.txt b/3rdparty/SimpleBLE/examples/simplebluez/notify/CMakeLists.txt similarity index 100% rename from third_party/SimpleBLE/examples/simplebluez/notify/CMakeLists.txt rename to 3rdparty/SimpleBLE/examples/simplebluez/notify/CMakeLists.txt diff --git a/third_party/SimpleBLE/examples/simplebluez/notify/notify.cpp b/3rdparty/SimpleBLE/examples/simplebluez/notify/notify.cpp similarity index 100% rename from third_party/SimpleBLE/examples/simplebluez/notify/notify.cpp rename to 3rdparty/SimpleBLE/examples/simplebluez/notify/notify.cpp diff --git a/third_party/SimpleBLE/examples/simplebluez/pair/CMakeLists.txt b/3rdparty/SimpleBLE/examples/simplebluez/pair/CMakeLists.txt similarity index 100% rename from third_party/SimpleBLE/examples/simplebluez/pair/CMakeLists.txt rename to 3rdparty/SimpleBLE/examples/simplebluez/pair/CMakeLists.txt diff --git a/third_party/SimpleBLE/examples/simplebluez/pair/pair.cpp b/3rdparty/SimpleBLE/examples/simplebluez/pair/pair.cpp similarity index 100% rename from third_party/SimpleBLE/examples/simplebluez/pair/pair.cpp rename to 3rdparty/SimpleBLE/examples/simplebluez/pair/pair.cpp diff --git a/third_party/SimpleBLE/examples/simplebluez/read/CMakeLists.txt b/3rdparty/SimpleBLE/examples/simplebluez/read/CMakeLists.txt similarity index 100% rename from third_party/SimpleBLE/examples/simplebluez/read/CMakeLists.txt rename to 3rdparty/SimpleBLE/examples/simplebluez/read/CMakeLists.txt diff --git a/third_party/SimpleBLE/examples/simplebluez/read/read.cpp b/3rdparty/SimpleBLE/examples/simplebluez/read/read.cpp similarity index 100% rename from third_party/SimpleBLE/examples/simplebluez/read/read.cpp rename to 3rdparty/SimpleBLE/examples/simplebluez/read/read.cpp diff --git a/third_party/SimpleBLE/examples/simplebluez/scan/CMakeLists.txt b/3rdparty/SimpleBLE/examples/simplebluez/scan/CMakeLists.txt similarity index 100% rename from third_party/SimpleBLE/examples/simplebluez/scan/CMakeLists.txt rename to 3rdparty/SimpleBLE/examples/simplebluez/scan/CMakeLists.txt diff --git a/third_party/SimpleBLE/examples/simplebluez/scan/scan.cpp b/3rdparty/SimpleBLE/examples/simplebluez/scan/scan.cpp similarity index 100% rename from third_party/SimpleBLE/examples/simplebluez/scan/scan.cpp rename to 3rdparty/SimpleBLE/examples/simplebluez/scan/scan.cpp diff --git a/third_party/SimpleBLE/examples/simpledbus/CMakeLists.txt b/3rdparty/SimpleBLE/examples/simpledbus/CMakeLists.txt similarity index 100% rename from third_party/SimpleBLE/examples/simpledbus/CMakeLists.txt rename to 3rdparty/SimpleBLE/examples/simpledbus/CMakeLists.txt diff --git a/third_party/SimpleBLE/examples/simpledbus/notification/CMakeLists.txt b/3rdparty/SimpleBLE/examples/simpledbus/notification/CMakeLists.txt similarity index 100% rename from third_party/SimpleBLE/examples/simpledbus/notification/CMakeLists.txt rename to 3rdparty/SimpleBLE/examples/simpledbus/notification/CMakeLists.txt diff --git a/third_party/SimpleBLE/examples/simpledbus/notification/main.cpp b/3rdparty/SimpleBLE/examples/simpledbus/notification/main.cpp similarity index 100% rename from third_party/SimpleBLE/examples/simpledbus/notification/main.cpp rename to 3rdparty/SimpleBLE/examples/simpledbus/notification/main.cpp diff --git a/third_party/SimpleBLE/examples/simplepyble/connect.py b/3rdparty/SimpleBLE/examples/simplepyble/connect.py similarity index 100% rename from third_party/SimpleBLE/examples/simplepyble/connect.py rename to 3rdparty/SimpleBLE/examples/simplepyble/connect.py diff --git a/third_party/SimpleBLE/examples/simplepyble/list_adapters.py b/3rdparty/SimpleBLE/examples/simplepyble/list_adapters.py similarity index 100% rename from third_party/SimpleBLE/examples/simplepyble/list_adapters.py rename to 3rdparty/SimpleBLE/examples/simplepyble/list_adapters.py diff --git a/third_party/SimpleBLE/examples/simplepyble/notify.py b/3rdparty/SimpleBLE/examples/simplepyble/notify.py similarity index 100% rename from third_party/SimpleBLE/examples/simplepyble/notify.py rename to 3rdparty/SimpleBLE/examples/simplepyble/notify.py diff --git a/third_party/SimpleBLE/examples/simplepyble/read.py b/3rdparty/SimpleBLE/examples/simplepyble/read.py similarity index 100% rename from third_party/SimpleBLE/examples/simplepyble/read.py rename to 3rdparty/SimpleBLE/examples/simplepyble/read.py diff --git a/third_party/SimpleBLE/examples/simplepyble/scan.py b/3rdparty/SimpleBLE/examples/simplepyble/scan.py similarity index 100% rename from third_party/SimpleBLE/examples/simplepyble/scan.py rename to 3rdparty/SimpleBLE/examples/simplepyble/scan.py diff --git a/third_party/SimpleBLE/examples/simplepyble/write.py b/3rdparty/SimpleBLE/examples/simplepyble/write.py similarity index 100% rename from third_party/SimpleBLE/examples/simplepyble/write.py rename to 3rdparty/SimpleBLE/examples/simplepyble/write.py diff --git a/third_party/SimpleBLE/simpleble/CMakeLists.txt b/3rdparty/SimpleBLE/simpleble/CMakeLists.txt similarity index 100% rename from third_party/SimpleBLE/simpleble/CMakeLists.txt rename to 3rdparty/SimpleBLE/simpleble/CMakeLists.txt diff --git a/third_party/SimpleBLE/simpleble/cmake/simpleble.pc.in b/3rdparty/SimpleBLE/simpleble/cmake/simpleble.pc.in similarity index 100% rename from third_party/SimpleBLE/simpleble/cmake/simpleble.pc.in rename to 3rdparty/SimpleBLE/simpleble/cmake/simpleble.pc.in diff --git a/third_party/SimpleBLE/simpleble/include/simpleble/Adapter.h b/3rdparty/SimpleBLE/simpleble/include/simpleble/Adapter.h similarity index 100% rename from third_party/SimpleBLE/simpleble/include/simpleble/Adapter.h rename to 3rdparty/SimpleBLE/simpleble/include/simpleble/Adapter.h diff --git a/third_party/SimpleBLE/simpleble/include/simpleble/AdapterSafe.h b/3rdparty/SimpleBLE/simpleble/include/simpleble/AdapterSafe.h similarity index 100% rename from third_party/SimpleBLE/simpleble/include/simpleble/AdapterSafe.h rename to 3rdparty/SimpleBLE/simpleble/include/simpleble/AdapterSafe.h diff --git a/third_party/SimpleBLE/simpleble/include/simpleble/Characteristic.h b/3rdparty/SimpleBLE/simpleble/include/simpleble/Characteristic.h similarity index 100% rename from third_party/SimpleBLE/simpleble/include/simpleble/Characteristic.h rename to 3rdparty/SimpleBLE/simpleble/include/simpleble/Characteristic.h diff --git a/third_party/SimpleBLE/simpleble/include/simpleble/Descriptor.h b/3rdparty/SimpleBLE/simpleble/include/simpleble/Descriptor.h similarity index 100% rename from third_party/SimpleBLE/simpleble/include/simpleble/Descriptor.h rename to 3rdparty/SimpleBLE/simpleble/include/simpleble/Descriptor.h diff --git a/third_party/SimpleBLE/simpleble/include/simpleble/Exceptions.h b/3rdparty/SimpleBLE/simpleble/include/simpleble/Exceptions.h similarity index 100% rename from third_party/SimpleBLE/simpleble/include/simpleble/Exceptions.h rename to 3rdparty/SimpleBLE/simpleble/include/simpleble/Exceptions.h diff --git a/third_party/SimpleBLE/simpleble/include/simpleble/Logging.h b/3rdparty/SimpleBLE/simpleble/include/simpleble/Logging.h similarity index 100% rename from third_party/SimpleBLE/simpleble/include/simpleble/Logging.h rename to 3rdparty/SimpleBLE/simpleble/include/simpleble/Logging.h diff --git a/third_party/SimpleBLE/simpleble/include/simpleble/Peripheral.h b/3rdparty/SimpleBLE/simpleble/include/simpleble/Peripheral.h similarity index 100% rename from third_party/SimpleBLE/simpleble/include/simpleble/Peripheral.h rename to 3rdparty/SimpleBLE/simpleble/include/simpleble/Peripheral.h diff --git a/third_party/SimpleBLE/simpleble/include/simpleble/PeripheralSafe.h b/3rdparty/SimpleBLE/simpleble/include/simpleble/PeripheralSafe.h similarity index 100% rename from third_party/SimpleBLE/simpleble/include/simpleble/PeripheralSafe.h rename to 3rdparty/SimpleBLE/simpleble/include/simpleble/PeripheralSafe.h diff --git a/third_party/SimpleBLE/simpleble/include/simpleble/Service.h b/3rdparty/SimpleBLE/simpleble/include/simpleble/Service.h similarity index 100% rename from third_party/SimpleBLE/simpleble/include/simpleble/Service.h rename to 3rdparty/SimpleBLE/simpleble/include/simpleble/Service.h diff --git a/third_party/SimpleBLE/simpleble/include/simpleble/SimpleBLE.h b/3rdparty/SimpleBLE/simpleble/include/simpleble/SimpleBLE.h similarity index 100% rename from third_party/SimpleBLE/simpleble/include/simpleble/SimpleBLE.h rename to 3rdparty/SimpleBLE/simpleble/include/simpleble/SimpleBLE.h diff --git a/third_party/SimpleBLE/simpleble/include/simpleble/Types.h b/3rdparty/SimpleBLE/simpleble/include/simpleble/Types.h similarity index 100% rename from third_party/SimpleBLE/simpleble/include/simpleble/Types.h rename to 3rdparty/SimpleBLE/simpleble/include/simpleble/Types.h diff --git a/third_party/SimpleBLE/simpleble/include/simpleble/Utils.h b/3rdparty/SimpleBLE/simpleble/include/simpleble/Utils.h similarity index 100% rename from third_party/SimpleBLE/simpleble/include/simpleble/Utils.h rename to 3rdparty/SimpleBLE/simpleble/include/simpleble/Utils.h diff --git a/third_party/SimpleBLE/simpleble/include/simpleble_c/adapter.h b/3rdparty/SimpleBLE/simpleble/include/simpleble_c/adapter.h similarity index 100% rename from third_party/SimpleBLE/simpleble/include/simpleble_c/adapter.h rename to 3rdparty/SimpleBLE/simpleble/include/simpleble_c/adapter.h diff --git a/third_party/SimpleBLE/simpleble/include/simpleble_c/logging.h b/3rdparty/SimpleBLE/simpleble/include/simpleble_c/logging.h similarity index 100% rename from third_party/SimpleBLE/simpleble/include/simpleble_c/logging.h rename to 3rdparty/SimpleBLE/simpleble/include/simpleble_c/logging.h diff --git a/third_party/SimpleBLE/simpleble/include/simpleble_c/peripheral.h b/3rdparty/SimpleBLE/simpleble/include/simpleble_c/peripheral.h similarity index 100% rename from third_party/SimpleBLE/simpleble/include/simpleble_c/peripheral.h rename to 3rdparty/SimpleBLE/simpleble/include/simpleble_c/peripheral.h diff --git a/third_party/SimpleBLE/simpleble/include/simpleble_c/simpleble.h b/3rdparty/SimpleBLE/simpleble/include/simpleble_c/simpleble.h similarity index 100% rename from third_party/SimpleBLE/simpleble/include/simpleble_c/simpleble.h rename to 3rdparty/SimpleBLE/simpleble/include/simpleble_c/simpleble.h diff --git a/third_party/SimpleBLE/simpleble/include/simpleble_c/types.h b/3rdparty/SimpleBLE/simpleble/include/simpleble_c/types.h similarity index 100% rename from third_party/SimpleBLE/simpleble/include/simpleble_c/types.h rename to 3rdparty/SimpleBLE/simpleble/include/simpleble_c/types.h diff --git a/third_party/SimpleBLE/simpleble/include/simpleble_c/utils.h b/3rdparty/SimpleBLE/simpleble/include/simpleble_c/utils.h similarity index 100% rename from third_party/SimpleBLE/simpleble/include/simpleble_c/utils.h rename to 3rdparty/SimpleBLE/simpleble/include/simpleble_c/utils.h diff --git a/third_party/SimpleBLE/simpleble/src/CommonUtils.h b/3rdparty/SimpleBLE/simpleble/src/CommonUtils.h similarity index 100% rename from third_party/SimpleBLE/simpleble/src/CommonUtils.h rename to 3rdparty/SimpleBLE/simpleble/src/CommonUtils.h diff --git a/third_party/SimpleBLE/simpleble/src/Exceptions.cpp b/3rdparty/SimpleBLE/simpleble/src/Exceptions.cpp similarity index 100% rename from third_party/SimpleBLE/simpleble/src/Exceptions.cpp rename to 3rdparty/SimpleBLE/simpleble/src/Exceptions.cpp diff --git a/third_party/SimpleBLE/simpleble/src/Logging.cpp b/3rdparty/SimpleBLE/simpleble/src/Logging.cpp similarity index 100% rename from third_party/SimpleBLE/simpleble/src/Logging.cpp rename to 3rdparty/SimpleBLE/simpleble/src/Logging.cpp diff --git a/third_party/SimpleBLE/simpleble/src/LoggingInternal.h b/3rdparty/SimpleBLE/simpleble/src/LoggingInternal.h similarity index 100% rename from third_party/SimpleBLE/simpleble/src/LoggingInternal.h rename to 3rdparty/SimpleBLE/simpleble/src/LoggingInternal.h diff --git a/third_party/SimpleBLE/simpleble/src/Utils.cpp b/3rdparty/SimpleBLE/simpleble/src/Utils.cpp similarity index 100% rename from third_party/SimpleBLE/simpleble/src/Utils.cpp rename to 3rdparty/SimpleBLE/simpleble/src/Utils.cpp diff --git a/third_party/SimpleBLE/simpleble/src/backends/common/AdapterBaseTypes.h b/3rdparty/SimpleBLE/simpleble/src/backends/common/AdapterBaseTypes.h similarity index 100% rename from third_party/SimpleBLE/simpleble/src/backends/common/AdapterBaseTypes.h rename to 3rdparty/SimpleBLE/simpleble/src/backends/common/AdapterBaseTypes.h diff --git a/third_party/SimpleBLE/simpleble/src/backends/common/CharacteristicBase.cpp b/3rdparty/SimpleBLE/simpleble/src/backends/common/CharacteristicBase.cpp similarity index 100% rename from third_party/SimpleBLE/simpleble/src/backends/common/CharacteristicBase.cpp rename to 3rdparty/SimpleBLE/simpleble/src/backends/common/CharacteristicBase.cpp diff --git a/third_party/SimpleBLE/simpleble/src/backends/common/CharacteristicBase.h b/3rdparty/SimpleBLE/simpleble/src/backends/common/CharacteristicBase.h similarity index 100% rename from third_party/SimpleBLE/simpleble/src/backends/common/CharacteristicBase.h rename to 3rdparty/SimpleBLE/simpleble/src/backends/common/CharacteristicBase.h diff --git a/third_party/SimpleBLE/simpleble/src/backends/common/DescriptorBase.cpp b/3rdparty/SimpleBLE/simpleble/src/backends/common/DescriptorBase.cpp similarity index 100% rename from third_party/SimpleBLE/simpleble/src/backends/common/DescriptorBase.cpp rename to 3rdparty/SimpleBLE/simpleble/src/backends/common/DescriptorBase.cpp diff --git a/third_party/SimpleBLE/simpleble/src/backends/common/DescriptorBase.h b/3rdparty/SimpleBLE/simpleble/src/backends/common/DescriptorBase.h similarity index 100% rename from third_party/SimpleBLE/simpleble/src/backends/common/DescriptorBase.h rename to 3rdparty/SimpleBLE/simpleble/src/backends/common/DescriptorBase.h diff --git a/third_party/SimpleBLE/simpleble/src/backends/common/ServiceBase.cpp b/3rdparty/SimpleBLE/simpleble/src/backends/common/ServiceBase.cpp similarity index 100% rename from third_party/SimpleBLE/simpleble/src/backends/common/ServiceBase.cpp rename to 3rdparty/SimpleBLE/simpleble/src/backends/common/ServiceBase.cpp diff --git a/third_party/SimpleBLE/simpleble/src/backends/common/ServiceBase.h b/3rdparty/SimpleBLE/simpleble/src/backends/common/ServiceBase.h similarity index 100% rename from third_party/SimpleBLE/simpleble/src/backends/common/ServiceBase.h rename to 3rdparty/SimpleBLE/simpleble/src/backends/common/ServiceBase.h diff --git a/third_party/SimpleBLE/simpleble/src/backends/linux/AdapterBase.cpp b/3rdparty/SimpleBLE/simpleble/src/backends/linux/AdapterBase.cpp similarity index 100% rename from third_party/SimpleBLE/simpleble/src/backends/linux/AdapterBase.cpp rename to 3rdparty/SimpleBLE/simpleble/src/backends/linux/AdapterBase.cpp diff --git a/third_party/SimpleBLE/simpleble/src/backends/linux/AdapterBase.h b/3rdparty/SimpleBLE/simpleble/src/backends/linux/AdapterBase.h similarity index 100% rename from third_party/SimpleBLE/simpleble/src/backends/linux/AdapterBase.h rename to 3rdparty/SimpleBLE/simpleble/src/backends/linux/AdapterBase.h diff --git a/third_party/SimpleBLE/simpleble/src/backends/linux/Bluez.cpp b/3rdparty/SimpleBLE/simpleble/src/backends/linux/Bluez.cpp similarity index 100% rename from third_party/SimpleBLE/simpleble/src/backends/linux/Bluez.cpp rename to 3rdparty/SimpleBLE/simpleble/src/backends/linux/Bluez.cpp diff --git a/third_party/SimpleBLE/simpleble/src/backends/linux/Bluez.h b/3rdparty/SimpleBLE/simpleble/src/backends/linux/Bluez.h similarity index 100% rename from third_party/SimpleBLE/simpleble/src/backends/linux/Bluez.h rename to 3rdparty/SimpleBLE/simpleble/src/backends/linux/Bluez.h diff --git a/third_party/SimpleBLE/simpleble/src/backends/linux/PeripheralBase.cpp b/3rdparty/SimpleBLE/simpleble/src/backends/linux/PeripheralBase.cpp similarity index 100% rename from third_party/SimpleBLE/simpleble/src/backends/linux/PeripheralBase.cpp rename to 3rdparty/SimpleBLE/simpleble/src/backends/linux/PeripheralBase.cpp diff --git a/third_party/SimpleBLE/simpleble/src/backends/linux/PeripheralBase.h b/3rdparty/SimpleBLE/simpleble/src/backends/linux/PeripheralBase.h similarity index 100% rename from third_party/SimpleBLE/simpleble/src/backends/linux/PeripheralBase.h rename to 3rdparty/SimpleBLE/simpleble/src/backends/linux/PeripheralBase.h diff --git a/third_party/SimpleBLE/simpleble/src/backends/macos/AdapterBase.h b/3rdparty/SimpleBLE/simpleble/src/backends/macos/AdapterBase.h similarity index 100% rename from third_party/SimpleBLE/simpleble/src/backends/macos/AdapterBase.h rename to 3rdparty/SimpleBLE/simpleble/src/backends/macos/AdapterBase.h diff --git a/third_party/SimpleBLE/simpleble/src/backends/macos/AdapterBase.mm b/3rdparty/SimpleBLE/simpleble/src/backends/macos/AdapterBase.mm similarity index 100% rename from third_party/SimpleBLE/simpleble/src/backends/macos/AdapterBase.mm rename to 3rdparty/SimpleBLE/simpleble/src/backends/macos/AdapterBase.mm diff --git a/third_party/SimpleBLE/simpleble/src/backends/macos/AdapterBaseMacOS.h b/3rdparty/SimpleBLE/simpleble/src/backends/macos/AdapterBaseMacOS.h similarity index 100% rename from third_party/SimpleBLE/simpleble/src/backends/macos/AdapterBaseMacOS.h rename to 3rdparty/SimpleBLE/simpleble/src/backends/macos/AdapterBaseMacOS.h diff --git a/third_party/SimpleBLE/simpleble/src/backends/macos/AdapterBaseMacOS.mm b/3rdparty/SimpleBLE/simpleble/src/backends/macos/AdapterBaseMacOS.mm similarity index 100% rename from third_party/SimpleBLE/simpleble/src/backends/macos/AdapterBaseMacOS.mm rename to 3rdparty/SimpleBLE/simpleble/src/backends/macos/AdapterBaseMacOS.mm diff --git a/third_party/SimpleBLE/simpleble/src/backends/macos/PeripheralBase.h b/3rdparty/SimpleBLE/simpleble/src/backends/macos/PeripheralBase.h similarity index 100% rename from third_party/SimpleBLE/simpleble/src/backends/macos/PeripheralBase.h rename to 3rdparty/SimpleBLE/simpleble/src/backends/macos/PeripheralBase.h diff --git a/third_party/SimpleBLE/simpleble/src/backends/macos/PeripheralBase.mm b/3rdparty/SimpleBLE/simpleble/src/backends/macos/PeripheralBase.mm similarity index 100% rename from third_party/SimpleBLE/simpleble/src/backends/macos/PeripheralBase.mm rename to 3rdparty/SimpleBLE/simpleble/src/backends/macos/PeripheralBase.mm diff --git a/third_party/SimpleBLE/simpleble/src/backends/macos/PeripheralBaseMacOS.h b/3rdparty/SimpleBLE/simpleble/src/backends/macos/PeripheralBaseMacOS.h similarity index 100% rename from third_party/SimpleBLE/simpleble/src/backends/macos/PeripheralBaseMacOS.h rename to 3rdparty/SimpleBLE/simpleble/src/backends/macos/PeripheralBaseMacOS.h diff --git a/third_party/SimpleBLE/simpleble/src/backends/macos/PeripheralBaseMacOS.mm b/3rdparty/SimpleBLE/simpleble/src/backends/macos/PeripheralBaseMacOS.mm similarity index 100% rename from third_party/SimpleBLE/simpleble/src/backends/macos/PeripheralBaseMacOS.mm rename to 3rdparty/SimpleBLE/simpleble/src/backends/macos/PeripheralBaseMacOS.mm diff --git a/third_party/SimpleBLE/simpleble/src/backends/macos/Utils.h b/3rdparty/SimpleBLE/simpleble/src/backends/macos/Utils.h similarity index 100% rename from third_party/SimpleBLE/simpleble/src/backends/macos/Utils.h rename to 3rdparty/SimpleBLE/simpleble/src/backends/macos/Utils.h diff --git a/third_party/SimpleBLE/simpleble/src/backends/macos/Utils.mm b/3rdparty/SimpleBLE/simpleble/src/backends/macos/Utils.mm similarity index 100% rename from third_party/SimpleBLE/simpleble/src/backends/macos/Utils.mm rename to 3rdparty/SimpleBLE/simpleble/src/backends/macos/Utils.mm diff --git a/third_party/SimpleBLE/simpleble/src/backends/plain/AdapterBase.cpp b/3rdparty/SimpleBLE/simpleble/src/backends/plain/AdapterBase.cpp similarity index 100% rename from third_party/SimpleBLE/simpleble/src/backends/plain/AdapterBase.cpp rename to 3rdparty/SimpleBLE/simpleble/src/backends/plain/AdapterBase.cpp diff --git a/third_party/SimpleBLE/simpleble/src/backends/plain/AdapterBase.h b/3rdparty/SimpleBLE/simpleble/src/backends/plain/AdapterBase.h similarity index 100% rename from third_party/SimpleBLE/simpleble/src/backends/plain/AdapterBase.h rename to 3rdparty/SimpleBLE/simpleble/src/backends/plain/AdapterBase.h diff --git a/third_party/SimpleBLE/simpleble/src/backends/plain/PeripheralBase.cpp b/3rdparty/SimpleBLE/simpleble/src/backends/plain/PeripheralBase.cpp similarity index 100% rename from third_party/SimpleBLE/simpleble/src/backends/plain/PeripheralBase.cpp rename to 3rdparty/SimpleBLE/simpleble/src/backends/plain/PeripheralBase.cpp diff --git a/third_party/SimpleBLE/simpleble/src/backends/plain/PeripheralBase.h b/3rdparty/SimpleBLE/simpleble/src/backends/plain/PeripheralBase.h similarity index 100% rename from third_party/SimpleBLE/simpleble/src/backends/plain/PeripheralBase.h rename to 3rdparty/SimpleBLE/simpleble/src/backends/plain/PeripheralBase.h diff --git a/third_party/SimpleBLE/simpleble/src/backends/windows/AdapterBase.cpp b/3rdparty/SimpleBLE/simpleble/src/backends/windows/AdapterBase.cpp similarity index 100% rename from third_party/SimpleBLE/simpleble/src/backends/windows/AdapterBase.cpp rename to 3rdparty/SimpleBLE/simpleble/src/backends/windows/AdapterBase.cpp diff --git a/third_party/SimpleBLE/simpleble/src/backends/windows/AdapterBase.h b/3rdparty/SimpleBLE/simpleble/src/backends/windows/AdapterBase.h similarity index 100% rename from third_party/SimpleBLE/simpleble/src/backends/windows/AdapterBase.h rename to 3rdparty/SimpleBLE/simpleble/src/backends/windows/AdapterBase.h diff --git a/third_party/SimpleBLE/simpleble/src/backends/windows/PeripheralBase.cpp b/3rdparty/SimpleBLE/simpleble/src/backends/windows/PeripheralBase.cpp similarity index 100% rename from third_party/SimpleBLE/simpleble/src/backends/windows/PeripheralBase.cpp rename to 3rdparty/SimpleBLE/simpleble/src/backends/windows/PeripheralBase.cpp diff --git a/third_party/SimpleBLE/simpleble/src/backends/windows/PeripheralBase.h b/3rdparty/SimpleBLE/simpleble/src/backends/windows/PeripheralBase.h similarity index 100% rename from third_party/SimpleBLE/simpleble/src/backends/windows/PeripheralBase.h rename to 3rdparty/SimpleBLE/simpleble/src/backends/windows/PeripheralBase.h diff --git a/third_party/SimpleBLE/simpleble/src/backends/windows/Utils.cpp b/3rdparty/SimpleBLE/simpleble/src/backends/windows/Utils.cpp similarity index 100% rename from third_party/SimpleBLE/simpleble/src/backends/windows/Utils.cpp rename to 3rdparty/SimpleBLE/simpleble/src/backends/windows/Utils.cpp diff --git a/third_party/SimpleBLE/simpleble/src/backends/windows/Utils.h b/3rdparty/SimpleBLE/simpleble/src/backends/windows/Utils.h similarity index 100% rename from third_party/SimpleBLE/simpleble/src/backends/windows/Utils.h rename to 3rdparty/SimpleBLE/simpleble/src/backends/windows/Utils.h diff --git a/third_party/SimpleBLE/simpleble/src/builders/AdapterBuilder.cpp b/3rdparty/SimpleBLE/simpleble/src/builders/AdapterBuilder.cpp similarity index 100% rename from third_party/SimpleBLE/simpleble/src/builders/AdapterBuilder.cpp rename to 3rdparty/SimpleBLE/simpleble/src/builders/AdapterBuilder.cpp diff --git a/third_party/SimpleBLE/simpleble/src/builders/AdapterBuilder.h b/3rdparty/SimpleBLE/simpleble/src/builders/AdapterBuilder.h similarity index 100% rename from third_party/SimpleBLE/simpleble/src/builders/AdapterBuilder.h rename to 3rdparty/SimpleBLE/simpleble/src/builders/AdapterBuilder.h diff --git a/third_party/SimpleBLE/simpleble/src/builders/CharacteristicBuilder.cpp b/3rdparty/SimpleBLE/simpleble/src/builders/CharacteristicBuilder.cpp similarity index 100% rename from third_party/SimpleBLE/simpleble/src/builders/CharacteristicBuilder.cpp rename to 3rdparty/SimpleBLE/simpleble/src/builders/CharacteristicBuilder.cpp diff --git a/third_party/SimpleBLE/simpleble/src/builders/CharacteristicBuilder.h b/3rdparty/SimpleBLE/simpleble/src/builders/CharacteristicBuilder.h similarity index 100% rename from third_party/SimpleBLE/simpleble/src/builders/CharacteristicBuilder.h rename to 3rdparty/SimpleBLE/simpleble/src/builders/CharacteristicBuilder.h diff --git a/third_party/SimpleBLE/simpleble/src/builders/DescriptorBuilder.cpp b/3rdparty/SimpleBLE/simpleble/src/builders/DescriptorBuilder.cpp similarity index 100% rename from third_party/SimpleBLE/simpleble/src/builders/DescriptorBuilder.cpp rename to 3rdparty/SimpleBLE/simpleble/src/builders/DescriptorBuilder.cpp diff --git a/third_party/SimpleBLE/simpleble/src/builders/DescriptorBuilder.h b/3rdparty/SimpleBLE/simpleble/src/builders/DescriptorBuilder.h similarity index 100% rename from third_party/SimpleBLE/simpleble/src/builders/DescriptorBuilder.h rename to 3rdparty/SimpleBLE/simpleble/src/builders/DescriptorBuilder.h diff --git a/third_party/SimpleBLE/simpleble/src/builders/PeripheralBuilder.cpp b/3rdparty/SimpleBLE/simpleble/src/builders/PeripheralBuilder.cpp similarity index 100% rename from third_party/SimpleBLE/simpleble/src/builders/PeripheralBuilder.cpp rename to 3rdparty/SimpleBLE/simpleble/src/builders/PeripheralBuilder.cpp diff --git a/third_party/SimpleBLE/simpleble/src/builders/PeripheralBuilder.h b/3rdparty/SimpleBLE/simpleble/src/builders/PeripheralBuilder.h similarity index 100% rename from third_party/SimpleBLE/simpleble/src/builders/PeripheralBuilder.h rename to 3rdparty/SimpleBLE/simpleble/src/builders/PeripheralBuilder.h diff --git a/third_party/SimpleBLE/simpleble/src/builders/ServiceBuilder.cpp b/3rdparty/SimpleBLE/simpleble/src/builders/ServiceBuilder.cpp similarity index 100% rename from third_party/SimpleBLE/simpleble/src/builders/ServiceBuilder.cpp rename to 3rdparty/SimpleBLE/simpleble/src/builders/ServiceBuilder.cpp diff --git a/third_party/SimpleBLE/simpleble/src/builders/ServiceBuilder.h b/3rdparty/SimpleBLE/simpleble/src/builders/ServiceBuilder.h similarity index 100% rename from third_party/SimpleBLE/simpleble/src/builders/ServiceBuilder.h rename to 3rdparty/SimpleBLE/simpleble/src/builders/ServiceBuilder.h diff --git a/third_party/SimpleBLE/simpleble/src/external/kvn_safe_callback.hpp b/3rdparty/SimpleBLE/simpleble/src/external/kvn_safe_callback.hpp similarity index 100% rename from third_party/SimpleBLE/simpleble/src/external/kvn_safe_callback.hpp rename to 3rdparty/SimpleBLE/simpleble/src/external/kvn_safe_callback.hpp diff --git a/third_party/SimpleBLE/simpleble/src/external/logfwd.hpp b/3rdparty/SimpleBLE/simpleble/src/external/logfwd.hpp similarity index 100% rename from third_party/SimpleBLE/simpleble/src/external/logfwd.hpp rename to 3rdparty/SimpleBLE/simpleble/src/external/logfwd.hpp diff --git a/third_party/SimpleBLE/simpleble/src/frontends/base/Adapter.cpp b/3rdparty/SimpleBLE/simpleble/src/frontends/base/Adapter.cpp similarity index 100% rename from third_party/SimpleBLE/simpleble/src/frontends/base/Adapter.cpp rename to 3rdparty/SimpleBLE/simpleble/src/frontends/base/Adapter.cpp diff --git a/third_party/SimpleBLE/simpleble/src/frontends/base/Characteristic.cpp b/3rdparty/SimpleBLE/simpleble/src/frontends/base/Characteristic.cpp similarity index 100% rename from third_party/SimpleBLE/simpleble/src/frontends/base/Characteristic.cpp rename to 3rdparty/SimpleBLE/simpleble/src/frontends/base/Characteristic.cpp diff --git a/third_party/SimpleBLE/simpleble/src/frontends/base/Descriptor.cpp b/3rdparty/SimpleBLE/simpleble/src/frontends/base/Descriptor.cpp similarity index 100% rename from third_party/SimpleBLE/simpleble/src/frontends/base/Descriptor.cpp rename to 3rdparty/SimpleBLE/simpleble/src/frontends/base/Descriptor.cpp diff --git a/third_party/SimpleBLE/simpleble/src/frontends/base/Peripheral.cpp b/3rdparty/SimpleBLE/simpleble/src/frontends/base/Peripheral.cpp similarity index 100% rename from third_party/SimpleBLE/simpleble/src/frontends/base/Peripheral.cpp rename to 3rdparty/SimpleBLE/simpleble/src/frontends/base/Peripheral.cpp diff --git a/third_party/SimpleBLE/simpleble/src/frontends/base/Service.cpp b/3rdparty/SimpleBLE/simpleble/src/frontends/base/Service.cpp similarity index 100% rename from third_party/SimpleBLE/simpleble/src/frontends/base/Service.cpp rename to 3rdparty/SimpleBLE/simpleble/src/frontends/base/Service.cpp diff --git a/third_party/SimpleBLE/simpleble/src/frontends/safe/AdapterSafe.cpp b/3rdparty/SimpleBLE/simpleble/src/frontends/safe/AdapterSafe.cpp similarity index 100% rename from third_party/SimpleBLE/simpleble/src/frontends/safe/AdapterSafe.cpp rename to 3rdparty/SimpleBLE/simpleble/src/frontends/safe/AdapterSafe.cpp diff --git a/third_party/SimpleBLE/simpleble/src/frontends/safe/PeripheralSafe.cpp b/3rdparty/SimpleBLE/simpleble/src/frontends/safe/PeripheralSafe.cpp similarity index 100% rename from third_party/SimpleBLE/simpleble/src/frontends/safe/PeripheralSafe.cpp rename to 3rdparty/SimpleBLE/simpleble/src/frontends/safe/PeripheralSafe.cpp diff --git a/third_party/SimpleBLE/simpleble/src_c/adapter.cpp b/3rdparty/SimpleBLE/simpleble/src_c/adapter.cpp similarity index 100% rename from third_party/SimpleBLE/simpleble/src_c/adapter.cpp rename to 3rdparty/SimpleBLE/simpleble/src_c/adapter.cpp diff --git a/third_party/SimpleBLE/simpleble/src_c/logging.cpp b/3rdparty/SimpleBLE/simpleble/src_c/logging.cpp similarity index 100% rename from third_party/SimpleBLE/simpleble/src_c/logging.cpp rename to 3rdparty/SimpleBLE/simpleble/src_c/logging.cpp diff --git a/third_party/SimpleBLE/simpleble/src_c/peripheral.cpp b/3rdparty/SimpleBLE/simpleble/src_c/peripheral.cpp similarity index 100% rename from third_party/SimpleBLE/simpleble/src_c/peripheral.cpp rename to 3rdparty/SimpleBLE/simpleble/src_c/peripheral.cpp diff --git a/third_party/SimpleBLE/simpleble/src_c/simpleble.cpp b/3rdparty/SimpleBLE/simpleble/src_c/simpleble.cpp similarity index 100% rename from third_party/SimpleBLE/simpleble/src_c/simpleble.cpp rename to 3rdparty/SimpleBLE/simpleble/src_c/simpleble.cpp diff --git a/third_party/SimpleBLE/simpleble/src_c/utils.cpp b/3rdparty/SimpleBLE/simpleble/src_c/utils.cpp similarity index 100% rename from third_party/SimpleBLE/simpleble/src_c/utils.cpp rename to 3rdparty/SimpleBLE/simpleble/src_c/utils.cpp diff --git a/third_party/SimpleBLE/simpleble/test/src/main.cpp b/3rdparty/SimpleBLE/simpleble/test/src/main.cpp similarity index 100% rename from third_party/SimpleBLE/simpleble/test/src/main.cpp rename to 3rdparty/SimpleBLE/simpleble/test/src/main.cpp diff --git a/third_party/SimpleBLE/simpleble/test/src/test_utils.cpp b/3rdparty/SimpleBLE/simpleble/test/src/test_utils.cpp similarity index 100% rename from third_party/SimpleBLE/simpleble/test/src/test_utils.cpp rename to 3rdparty/SimpleBLE/simpleble/test/src/test_utils.cpp diff --git a/third_party/SimpleBLE/simplebluez/CMakeLists.txt b/3rdparty/SimpleBLE/simplebluez/CMakeLists.txt similarity index 100% rename from third_party/SimpleBLE/simplebluez/CMakeLists.txt rename to 3rdparty/SimpleBLE/simplebluez/CMakeLists.txt diff --git a/third_party/SimpleBLE/simplebluez/cmake/simplebluez.pc.in b/3rdparty/SimpleBLE/simplebluez/cmake/simplebluez.pc.in similarity index 100% rename from third_party/SimpleBLE/simplebluez/cmake/simplebluez.pc.in rename to 3rdparty/SimpleBLE/simplebluez/cmake/simplebluez.pc.in diff --git a/third_party/SimpleBLE/simplebluez/include/simplebluez/Adapter.h b/3rdparty/SimpleBLE/simplebluez/include/simplebluez/Adapter.h similarity index 100% rename from third_party/SimpleBLE/simplebluez/include/simplebluez/Adapter.h rename to 3rdparty/SimpleBLE/simplebluez/include/simplebluez/Adapter.h diff --git a/third_party/SimpleBLE/simplebluez/include/simplebluez/Agent.h b/3rdparty/SimpleBLE/simplebluez/include/simplebluez/Agent.h similarity index 100% rename from third_party/SimpleBLE/simplebluez/include/simplebluez/Agent.h rename to 3rdparty/SimpleBLE/simplebluez/include/simplebluez/Agent.h diff --git a/third_party/SimpleBLE/simplebluez/include/simplebluez/Bluez.h b/3rdparty/SimpleBLE/simplebluez/include/simplebluez/Bluez.h similarity index 100% rename from third_party/SimpleBLE/simplebluez/include/simplebluez/Bluez.h rename to 3rdparty/SimpleBLE/simplebluez/include/simplebluez/Bluez.h diff --git a/third_party/SimpleBLE/simplebluez/include/simplebluez/Characteristic.h b/3rdparty/SimpleBLE/simplebluez/include/simplebluez/Characteristic.h similarity index 100% rename from third_party/SimpleBLE/simplebluez/include/simplebluez/Characteristic.h rename to 3rdparty/SimpleBLE/simplebluez/include/simplebluez/Characteristic.h diff --git a/third_party/SimpleBLE/simplebluez/include/simplebluez/Descriptor.h b/3rdparty/SimpleBLE/simplebluez/include/simplebluez/Descriptor.h similarity index 100% rename from third_party/SimpleBLE/simplebluez/include/simplebluez/Descriptor.h rename to 3rdparty/SimpleBLE/simplebluez/include/simplebluez/Descriptor.h diff --git a/third_party/SimpleBLE/simplebluez/include/simplebluez/Device.h b/3rdparty/SimpleBLE/simplebluez/include/simplebluez/Device.h similarity index 100% rename from third_party/SimpleBLE/simplebluez/include/simplebluez/Device.h rename to 3rdparty/SimpleBLE/simplebluez/include/simplebluez/Device.h diff --git a/third_party/SimpleBLE/simplebluez/include/simplebluez/Exceptions.h b/3rdparty/SimpleBLE/simplebluez/include/simplebluez/Exceptions.h similarity index 100% rename from third_party/SimpleBLE/simplebluez/include/simplebluez/Exceptions.h rename to 3rdparty/SimpleBLE/simplebluez/include/simplebluez/Exceptions.h diff --git a/third_party/SimpleBLE/simplebluez/include/simplebluez/ProxyOrg.h b/3rdparty/SimpleBLE/simplebluez/include/simplebluez/ProxyOrg.h similarity index 100% rename from third_party/SimpleBLE/simplebluez/include/simplebluez/ProxyOrg.h rename to 3rdparty/SimpleBLE/simplebluez/include/simplebluez/ProxyOrg.h diff --git a/third_party/SimpleBLE/simplebluez/include/simplebluez/ProxyOrgBluez.h b/3rdparty/SimpleBLE/simplebluez/include/simplebluez/ProxyOrgBluez.h similarity index 100% rename from third_party/SimpleBLE/simplebluez/include/simplebluez/ProxyOrgBluez.h rename to 3rdparty/SimpleBLE/simplebluez/include/simplebluez/ProxyOrgBluez.h diff --git a/third_party/SimpleBLE/simplebluez/include/simplebluez/Service.h b/3rdparty/SimpleBLE/simplebluez/include/simplebluez/Service.h similarity index 100% rename from third_party/SimpleBLE/simplebluez/include/simplebluez/Service.h rename to 3rdparty/SimpleBLE/simplebluez/include/simplebluez/Service.h diff --git a/third_party/SimpleBLE/simplebluez/include/simplebluez/Types.h b/3rdparty/SimpleBLE/simplebluez/include/simplebluez/Types.h similarity index 100% rename from third_party/SimpleBLE/simplebluez/include/simplebluez/Types.h rename to 3rdparty/SimpleBLE/simplebluez/include/simplebluez/Types.h diff --git a/third_party/SimpleBLE/simplebluez/include/simplebluez/interfaces/Adapter1.h b/3rdparty/SimpleBLE/simplebluez/include/simplebluez/interfaces/Adapter1.h similarity index 100% rename from third_party/SimpleBLE/simplebluez/include/simplebluez/interfaces/Adapter1.h rename to 3rdparty/SimpleBLE/simplebluez/include/simplebluez/interfaces/Adapter1.h diff --git a/third_party/SimpleBLE/simplebluez/include/simplebluez/interfaces/Agent1.h b/3rdparty/SimpleBLE/simplebluez/include/simplebluez/interfaces/Agent1.h similarity index 100% rename from third_party/SimpleBLE/simplebluez/include/simplebluez/interfaces/Agent1.h rename to 3rdparty/SimpleBLE/simplebluez/include/simplebluez/interfaces/Agent1.h diff --git a/third_party/SimpleBLE/simplebluez/include/simplebluez/interfaces/AgentManager1.h b/3rdparty/SimpleBLE/simplebluez/include/simplebluez/interfaces/AgentManager1.h similarity index 100% rename from third_party/SimpleBLE/simplebluez/include/simplebluez/interfaces/AgentManager1.h rename to 3rdparty/SimpleBLE/simplebluez/include/simplebluez/interfaces/AgentManager1.h diff --git a/third_party/SimpleBLE/simplebluez/include/simplebluez/interfaces/Battery1.h b/3rdparty/SimpleBLE/simplebluez/include/simplebluez/interfaces/Battery1.h similarity index 100% rename from third_party/SimpleBLE/simplebluez/include/simplebluez/interfaces/Battery1.h rename to 3rdparty/SimpleBLE/simplebluez/include/simplebluez/interfaces/Battery1.h diff --git a/third_party/SimpleBLE/simplebluez/include/simplebluez/interfaces/Device1.h b/3rdparty/SimpleBLE/simplebluez/include/simplebluez/interfaces/Device1.h similarity index 100% rename from third_party/SimpleBLE/simplebluez/include/simplebluez/interfaces/Device1.h rename to 3rdparty/SimpleBLE/simplebluez/include/simplebluez/interfaces/Device1.h diff --git a/third_party/SimpleBLE/simplebluez/include/simplebluez/interfaces/GattCharacteristic1.h b/3rdparty/SimpleBLE/simplebluez/include/simplebluez/interfaces/GattCharacteristic1.h similarity index 100% rename from third_party/SimpleBLE/simplebluez/include/simplebluez/interfaces/GattCharacteristic1.h rename to 3rdparty/SimpleBLE/simplebluez/include/simplebluez/interfaces/GattCharacteristic1.h diff --git a/third_party/SimpleBLE/simplebluez/include/simplebluez/interfaces/GattDescriptor1.h b/3rdparty/SimpleBLE/simplebluez/include/simplebluez/interfaces/GattDescriptor1.h similarity index 100% rename from third_party/SimpleBLE/simplebluez/include/simplebluez/interfaces/GattDescriptor1.h rename to 3rdparty/SimpleBLE/simplebluez/include/simplebluez/interfaces/GattDescriptor1.h diff --git a/third_party/SimpleBLE/simplebluez/include/simplebluez/interfaces/GattService1.h b/3rdparty/SimpleBLE/simplebluez/include/simplebluez/interfaces/GattService1.h similarity index 100% rename from third_party/SimpleBLE/simplebluez/include/simplebluez/interfaces/GattService1.h rename to 3rdparty/SimpleBLE/simplebluez/include/simplebluez/interfaces/GattService1.h diff --git a/third_party/SimpleBLE/simplebluez/src/Adapter.cpp b/3rdparty/SimpleBLE/simplebluez/src/Adapter.cpp similarity index 100% rename from third_party/SimpleBLE/simplebluez/src/Adapter.cpp rename to 3rdparty/SimpleBLE/simplebluez/src/Adapter.cpp diff --git a/third_party/SimpleBLE/simplebluez/src/Agent.cpp b/3rdparty/SimpleBLE/simplebluez/src/Agent.cpp similarity index 100% rename from third_party/SimpleBLE/simplebluez/src/Agent.cpp rename to 3rdparty/SimpleBLE/simplebluez/src/Agent.cpp diff --git a/third_party/SimpleBLE/simplebluez/src/Bluez.cpp b/3rdparty/SimpleBLE/simplebluez/src/Bluez.cpp similarity index 100% rename from third_party/SimpleBLE/simplebluez/src/Bluez.cpp rename to 3rdparty/SimpleBLE/simplebluez/src/Bluez.cpp diff --git a/third_party/SimpleBLE/simplebluez/src/Characteristic.cpp b/3rdparty/SimpleBLE/simplebluez/src/Characteristic.cpp similarity index 100% rename from third_party/SimpleBLE/simplebluez/src/Characteristic.cpp rename to 3rdparty/SimpleBLE/simplebluez/src/Characteristic.cpp diff --git a/third_party/SimpleBLE/simplebluez/src/Descriptor.cpp b/3rdparty/SimpleBLE/simplebluez/src/Descriptor.cpp similarity index 100% rename from third_party/SimpleBLE/simplebluez/src/Descriptor.cpp rename to 3rdparty/SimpleBLE/simplebluez/src/Descriptor.cpp diff --git a/third_party/SimpleBLE/simplebluez/src/Device.cpp b/3rdparty/SimpleBLE/simplebluez/src/Device.cpp similarity index 100% rename from third_party/SimpleBLE/simplebluez/src/Device.cpp rename to 3rdparty/SimpleBLE/simplebluez/src/Device.cpp diff --git a/third_party/SimpleBLE/simplebluez/src/Exceptions.cpp b/3rdparty/SimpleBLE/simplebluez/src/Exceptions.cpp similarity index 100% rename from third_party/SimpleBLE/simplebluez/src/Exceptions.cpp rename to 3rdparty/SimpleBLE/simplebluez/src/Exceptions.cpp diff --git a/third_party/SimpleBLE/simplebluez/src/Logging.cpp b/3rdparty/SimpleBLE/simplebluez/src/Logging.cpp similarity index 100% rename from third_party/SimpleBLE/simplebluez/src/Logging.cpp rename to 3rdparty/SimpleBLE/simplebluez/src/Logging.cpp diff --git a/third_party/SimpleBLE/simplebluez/src/Logging.h b/3rdparty/SimpleBLE/simplebluez/src/Logging.h similarity index 100% rename from third_party/SimpleBLE/simplebluez/src/Logging.h rename to 3rdparty/SimpleBLE/simplebluez/src/Logging.h diff --git a/third_party/SimpleBLE/simplebluez/src/ProxyOrg.cpp b/3rdparty/SimpleBLE/simplebluez/src/ProxyOrg.cpp similarity index 100% rename from third_party/SimpleBLE/simplebluez/src/ProxyOrg.cpp rename to 3rdparty/SimpleBLE/simplebluez/src/ProxyOrg.cpp diff --git a/third_party/SimpleBLE/simplebluez/src/ProxyOrgBluez.cpp b/3rdparty/SimpleBLE/simplebluez/src/ProxyOrgBluez.cpp similarity index 100% rename from third_party/SimpleBLE/simplebluez/src/ProxyOrgBluez.cpp rename to 3rdparty/SimpleBLE/simplebluez/src/ProxyOrgBluez.cpp diff --git a/third_party/SimpleBLE/simplebluez/src/Service.cpp b/3rdparty/SimpleBLE/simplebluez/src/Service.cpp similarity index 100% rename from third_party/SimpleBLE/simplebluez/src/Service.cpp rename to 3rdparty/SimpleBLE/simplebluez/src/Service.cpp diff --git a/third_party/SimpleBLE/simplebluez/src/interfaces/Adapter1.cpp b/3rdparty/SimpleBLE/simplebluez/src/interfaces/Adapter1.cpp similarity index 100% rename from third_party/SimpleBLE/simplebluez/src/interfaces/Adapter1.cpp rename to 3rdparty/SimpleBLE/simplebluez/src/interfaces/Adapter1.cpp diff --git a/third_party/SimpleBLE/simplebluez/src/interfaces/Agent1.cpp b/3rdparty/SimpleBLE/simplebluez/src/interfaces/Agent1.cpp similarity index 100% rename from third_party/SimpleBLE/simplebluez/src/interfaces/Agent1.cpp rename to 3rdparty/SimpleBLE/simplebluez/src/interfaces/Agent1.cpp diff --git a/third_party/SimpleBLE/simplebluez/src/interfaces/AgentManager1.cpp b/3rdparty/SimpleBLE/simplebluez/src/interfaces/AgentManager1.cpp similarity index 100% rename from third_party/SimpleBLE/simplebluez/src/interfaces/AgentManager1.cpp rename to 3rdparty/SimpleBLE/simplebluez/src/interfaces/AgentManager1.cpp diff --git a/third_party/SimpleBLE/simplebluez/src/interfaces/Battery1.cpp b/3rdparty/SimpleBLE/simplebluez/src/interfaces/Battery1.cpp similarity index 100% rename from third_party/SimpleBLE/simplebluez/src/interfaces/Battery1.cpp rename to 3rdparty/SimpleBLE/simplebluez/src/interfaces/Battery1.cpp diff --git a/third_party/SimpleBLE/simplebluez/src/interfaces/Device1.cpp b/3rdparty/SimpleBLE/simplebluez/src/interfaces/Device1.cpp similarity index 100% rename from third_party/SimpleBLE/simplebluez/src/interfaces/Device1.cpp rename to 3rdparty/SimpleBLE/simplebluez/src/interfaces/Device1.cpp diff --git a/third_party/SimpleBLE/simplebluez/src/interfaces/GattCharacteristic1.cpp b/3rdparty/SimpleBLE/simplebluez/src/interfaces/GattCharacteristic1.cpp similarity index 100% rename from third_party/SimpleBLE/simplebluez/src/interfaces/GattCharacteristic1.cpp rename to 3rdparty/SimpleBLE/simplebluez/src/interfaces/GattCharacteristic1.cpp diff --git a/third_party/SimpleBLE/simplebluez/src/interfaces/GattDescriptor1.cpp b/3rdparty/SimpleBLE/simplebluez/src/interfaces/GattDescriptor1.cpp similarity index 100% rename from third_party/SimpleBLE/simplebluez/src/interfaces/GattDescriptor1.cpp rename to 3rdparty/SimpleBLE/simplebluez/src/interfaces/GattDescriptor1.cpp diff --git a/third_party/SimpleBLE/simplebluez/src/interfaces/GattService1.cpp b/3rdparty/SimpleBLE/simplebluez/src/interfaces/GattService1.cpp similarity index 100% rename from third_party/SimpleBLE/simplebluez/src/interfaces/GattService1.cpp rename to 3rdparty/SimpleBLE/simplebluez/src/interfaces/GattService1.cpp diff --git a/third_party/SimpleBLE/simplebluez/test/python/interfaces/__init__.py b/3rdparty/SimpleBLE/simplebluez/test/python/interfaces/__init__.py similarity index 100% rename from third_party/SimpleBLE/simplebluez/test/python/interfaces/__init__.py rename to 3rdparty/SimpleBLE/simplebluez/test/python/interfaces/__init__.py diff --git a/third_party/SimpleBLE/simplebluez/test/python/interfaces/general.py b/3rdparty/SimpleBLE/simplebluez/test/python/interfaces/general.py similarity index 100% rename from third_party/SimpleBLE/simplebluez/test/python/interfaces/general.py rename to 3rdparty/SimpleBLE/simplebluez/test/python/interfaces/general.py diff --git a/third_party/SimpleBLE/simplebluez/test/python/test_fixture.py b/3rdparty/SimpleBLE/simplebluez/test/python/test_fixture.py similarity index 100% rename from third_party/SimpleBLE/simplebluez/test/python/test_fixture.py rename to 3rdparty/SimpleBLE/simplebluez/test/python/test_fixture.py diff --git a/third_party/SimpleBLE/simplebluez/test/requirements.txt b/3rdparty/SimpleBLE/simplebluez/test/requirements.txt similarity index 100% rename from third_party/SimpleBLE/simplebluez/test/requirements.txt rename to 3rdparty/SimpleBLE/simplebluez/test/requirements.txt diff --git a/third_party/SimpleBLE/simplebluez/test/src/helpers/PythonRunner.cpp b/3rdparty/SimpleBLE/simplebluez/test/src/helpers/PythonRunner.cpp similarity index 100% rename from third_party/SimpleBLE/simplebluez/test/src/helpers/PythonRunner.cpp rename to 3rdparty/SimpleBLE/simplebluez/test/src/helpers/PythonRunner.cpp diff --git a/third_party/SimpleBLE/simplebluez/test/src/helpers/PythonRunner.h b/3rdparty/SimpleBLE/simplebluez/test/src/helpers/PythonRunner.h similarity index 100% rename from third_party/SimpleBLE/simplebluez/test/src/helpers/PythonRunner.h rename to 3rdparty/SimpleBLE/simplebluez/test/src/helpers/PythonRunner.h diff --git a/third_party/SimpleBLE/simplebluez/test/src/main.cpp b/3rdparty/SimpleBLE/simplebluez/test/src/main.cpp similarity index 100% rename from third_party/SimpleBLE/simplebluez/test/src/main.cpp rename to 3rdparty/SimpleBLE/simplebluez/test/src/main.cpp diff --git a/third_party/SimpleBLE/simpledbus/CMakeLists.txt b/3rdparty/SimpleBLE/simpledbus/CMakeLists.txt similarity index 100% rename from third_party/SimpleBLE/simpledbus/CMakeLists.txt rename to 3rdparty/SimpleBLE/simpledbus/CMakeLists.txt diff --git a/third_party/SimpleBLE/simpledbus/cmake/simpledbus.pc.in b/3rdparty/SimpleBLE/simpledbus/cmake/simpledbus.pc.in similarity index 100% rename from third_party/SimpleBLE/simpledbus/cmake/simpledbus.pc.in rename to 3rdparty/SimpleBLE/simpledbus/cmake/simpledbus.pc.in diff --git a/third_party/SimpleBLE/simpledbus/include/simpledbus/advanced/Interface.h b/3rdparty/SimpleBLE/simpledbus/include/simpledbus/advanced/Interface.h similarity index 100% rename from third_party/SimpleBLE/simpledbus/include/simpledbus/advanced/Interface.h rename to 3rdparty/SimpleBLE/simpledbus/include/simpledbus/advanced/Interface.h diff --git a/third_party/SimpleBLE/simpledbus/include/simpledbus/advanced/Proxy.h b/3rdparty/SimpleBLE/simpledbus/include/simpledbus/advanced/Proxy.h similarity index 100% rename from third_party/SimpleBLE/simpledbus/include/simpledbus/advanced/Proxy.h rename to 3rdparty/SimpleBLE/simpledbus/include/simpledbus/advanced/Proxy.h diff --git a/third_party/SimpleBLE/simpledbus/include/simpledbus/base/Connection.h b/3rdparty/SimpleBLE/simpledbus/include/simpledbus/base/Connection.h similarity index 100% rename from third_party/SimpleBLE/simpledbus/include/simpledbus/base/Connection.h rename to 3rdparty/SimpleBLE/simpledbus/include/simpledbus/base/Connection.h diff --git a/third_party/SimpleBLE/simpledbus/include/simpledbus/base/Exceptions.h b/3rdparty/SimpleBLE/simpledbus/include/simpledbus/base/Exceptions.h similarity index 100% rename from third_party/SimpleBLE/simpledbus/include/simpledbus/base/Exceptions.h rename to 3rdparty/SimpleBLE/simpledbus/include/simpledbus/base/Exceptions.h diff --git a/third_party/SimpleBLE/simpledbus/include/simpledbus/base/Holder.h b/3rdparty/SimpleBLE/simpledbus/include/simpledbus/base/Holder.h similarity index 100% rename from third_party/SimpleBLE/simpledbus/include/simpledbus/base/Holder.h rename to 3rdparty/SimpleBLE/simpledbus/include/simpledbus/base/Holder.h diff --git a/third_party/SimpleBLE/simpledbus/include/simpledbus/base/Message.h b/3rdparty/SimpleBLE/simpledbus/include/simpledbus/base/Message.h similarity index 100% rename from third_party/SimpleBLE/simpledbus/include/simpledbus/base/Message.h rename to 3rdparty/SimpleBLE/simpledbus/include/simpledbus/base/Message.h diff --git a/third_party/SimpleBLE/simpledbus/include/simpledbus/base/Path.h b/3rdparty/SimpleBLE/simpledbus/include/simpledbus/base/Path.h similarity index 100% rename from third_party/SimpleBLE/simpledbus/include/simpledbus/base/Path.h rename to 3rdparty/SimpleBLE/simpledbus/include/simpledbus/base/Path.h diff --git a/third_party/SimpleBLE/simpledbus/include/simpledbus/external/kvn_safe_callback.hpp b/3rdparty/SimpleBLE/simpledbus/include/simpledbus/external/kvn_safe_callback.hpp similarity index 100% rename from third_party/SimpleBLE/simpledbus/include/simpledbus/external/kvn_safe_callback.hpp rename to 3rdparty/SimpleBLE/simpledbus/include/simpledbus/external/kvn_safe_callback.hpp diff --git a/third_party/SimpleBLE/simpledbus/include/simpledbus/external/logfwd.hpp b/3rdparty/SimpleBLE/simpledbus/include/simpledbus/external/logfwd.hpp similarity index 100% rename from third_party/SimpleBLE/simpledbus/include/simpledbus/external/logfwd.hpp rename to 3rdparty/SimpleBLE/simpledbus/include/simpledbus/external/logfwd.hpp diff --git a/third_party/SimpleBLE/simpledbus/include/simpledbus/interfaces/ObjectManager.h b/3rdparty/SimpleBLE/simpledbus/include/simpledbus/interfaces/ObjectManager.h similarity index 100% rename from third_party/SimpleBLE/simpledbus/include/simpledbus/interfaces/ObjectManager.h rename to 3rdparty/SimpleBLE/simpledbus/include/simpledbus/interfaces/ObjectManager.h diff --git a/third_party/SimpleBLE/simpledbus/src/advanced/Interface.cpp b/3rdparty/SimpleBLE/simpledbus/src/advanced/Interface.cpp similarity index 100% rename from third_party/SimpleBLE/simpledbus/src/advanced/Interface.cpp rename to 3rdparty/SimpleBLE/simpledbus/src/advanced/Interface.cpp diff --git a/third_party/SimpleBLE/simpledbus/src/advanced/Proxy.cpp b/3rdparty/SimpleBLE/simpledbus/src/advanced/Proxy.cpp similarity index 100% rename from third_party/SimpleBLE/simpledbus/src/advanced/Proxy.cpp rename to 3rdparty/SimpleBLE/simpledbus/src/advanced/Proxy.cpp diff --git a/third_party/SimpleBLE/simpledbus/src/base/Connection.cpp b/3rdparty/SimpleBLE/simpledbus/src/base/Connection.cpp similarity index 100% rename from third_party/SimpleBLE/simpledbus/src/base/Connection.cpp rename to 3rdparty/SimpleBLE/simpledbus/src/base/Connection.cpp diff --git a/third_party/SimpleBLE/simpledbus/src/base/Exceptions.cpp b/3rdparty/SimpleBLE/simpledbus/src/base/Exceptions.cpp similarity index 100% rename from third_party/SimpleBLE/simpledbus/src/base/Exceptions.cpp rename to 3rdparty/SimpleBLE/simpledbus/src/base/Exceptions.cpp diff --git a/third_party/SimpleBLE/simpledbus/src/base/Holder.cpp b/3rdparty/SimpleBLE/simpledbus/src/base/Holder.cpp similarity index 100% rename from third_party/SimpleBLE/simpledbus/src/base/Holder.cpp rename to 3rdparty/SimpleBLE/simpledbus/src/base/Holder.cpp diff --git a/third_party/SimpleBLE/simpledbus/src/base/Logging.cpp b/3rdparty/SimpleBLE/simpledbus/src/base/Logging.cpp similarity index 100% rename from third_party/SimpleBLE/simpledbus/src/base/Logging.cpp rename to 3rdparty/SimpleBLE/simpledbus/src/base/Logging.cpp diff --git a/third_party/SimpleBLE/simpledbus/src/base/Logging.h b/3rdparty/SimpleBLE/simpledbus/src/base/Logging.h similarity index 100% rename from third_party/SimpleBLE/simpledbus/src/base/Logging.h rename to 3rdparty/SimpleBLE/simpledbus/src/base/Logging.h diff --git a/third_party/SimpleBLE/simpledbus/src/base/Message.cpp b/3rdparty/SimpleBLE/simpledbus/src/base/Message.cpp similarity index 100% rename from third_party/SimpleBLE/simpledbus/src/base/Message.cpp rename to 3rdparty/SimpleBLE/simpledbus/src/base/Message.cpp diff --git a/third_party/SimpleBLE/simpledbus/src/base/Path.cpp b/3rdparty/SimpleBLE/simpledbus/src/base/Path.cpp similarity index 100% rename from third_party/SimpleBLE/simpledbus/src/base/Path.cpp rename to 3rdparty/SimpleBLE/simpledbus/src/base/Path.cpp diff --git a/third_party/SimpleBLE/simpledbus/src/interfaces/ObjectManager.cpp b/3rdparty/SimpleBLE/simpledbus/src/interfaces/ObjectManager.cpp similarity index 100% rename from third_party/SimpleBLE/simpledbus/src/interfaces/ObjectManager.cpp rename to 3rdparty/SimpleBLE/simpledbus/src/interfaces/ObjectManager.cpp diff --git a/third_party/SimpleBLE/simpledbus/test/python/interfaces/__init__.py b/3rdparty/SimpleBLE/simpledbus/test/python/interfaces/__init__.py similarity index 100% rename from third_party/SimpleBLE/simpledbus/test/python/interfaces/__init__.py rename to 3rdparty/SimpleBLE/simpledbus/test/python/interfaces/__init__.py diff --git a/third_party/SimpleBLE/simpledbus/test/python/interfaces/general.py b/3rdparty/SimpleBLE/simpledbus/test/python/interfaces/general.py similarity index 100% rename from third_party/SimpleBLE/simpledbus/test/python/interfaces/general.py rename to 3rdparty/SimpleBLE/simpledbus/test/python/interfaces/general.py diff --git a/third_party/SimpleBLE/simpledbus/test/python/interfaces/unit_message.py b/3rdparty/SimpleBLE/simpledbus/test/python/interfaces/unit_message.py similarity index 100% rename from third_party/SimpleBLE/simpledbus/test/python/interfaces/unit_message.py rename to 3rdparty/SimpleBLE/simpledbus/test/python/interfaces/unit_message.py diff --git a/third_party/SimpleBLE/simpledbus/test/python/test_fixture.py b/3rdparty/SimpleBLE/simpledbus/test/python/test_fixture.py similarity index 100% rename from third_party/SimpleBLE/simpledbus/test/python/test_fixture.py rename to 3rdparty/SimpleBLE/simpledbus/test/python/test_fixture.py diff --git a/third_party/SimpleBLE/simpledbus/test/requirements.txt b/3rdparty/SimpleBLE/simpledbus/test/requirements.txt similarity index 100% rename from third_party/SimpleBLE/simpledbus/test/requirements.txt rename to 3rdparty/SimpleBLE/simpledbus/test/requirements.txt diff --git a/third_party/SimpleBLE/simpledbus/test/src/helpers/PythonRunner.cpp b/3rdparty/SimpleBLE/simpledbus/test/src/helpers/PythonRunner.cpp similarity index 100% rename from third_party/SimpleBLE/simpledbus/test/src/helpers/PythonRunner.cpp rename to 3rdparty/SimpleBLE/simpledbus/test/src/helpers/PythonRunner.cpp diff --git a/third_party/SimpleBLE/simpledbus/test/src/helpers/PythonRunner.h b/3rdparty/SimpleBLE/simpledbus/test/src/helpers/PythonRunner.h similarity index 100% rename from third_party/SimpleBLE/simpledbus/test/src/helpers/PythonRunner.h rename to 3rdparty/SimpleBLE/simpledbus/test/src/helpers/PythonRunner.h diff --git a/third_party/SimpleBLE/simpledbus/test/src/main.cpp b/3rdparty/SimpleBLE/simpledbus/test/src/main.cpp similarity index 100% rename from third_party/SimpleBLE/simpledbus/test/src/main.cpp rename to 3rdparty/SimpleBLE/simpledbus/test/src/main.cpp diff --git a/third_party/SimpleBLE/simpledbus/test/src/test_holder.cpp b/3rdparty/SimpleBLE/simpledbus/test/src/test_holder.cpp similarity index 100% rename from third_party/SimpleBLE/simpledbus/test/src/test_holder.cpp rename to 3rdparty/SimpleBLE/simpledbus/test/src/test_holder.cpp diff --git a/third_party/SimpleBLE/simpledbus/test/src/test_message.cpp b/3rdparty/SimpleBLE/simpledbus/test/src/test_message.cpp similarity index 100% rename from third_party/SimpleBLE/simpledbus/test/src/test_message.cpp rename to 3rdparty/SimpleBLE/simpledbus/test/src/test_message.cpp diff --git a/third_party/SimpleBLE/simpledbus/test/src/test_path.cpp b/3rdparty/SimpleBLE/simpledbus/test/src/test_path.cpp similarity index 100% rename from third_party/SimpleBLE/simpledbus/test/src/test_path.cpp rename to 3rdparty/SimpleBLE/simpledbus/test/src/test_path.cpp diff --git a/third_party/SimpleBLE/simpledbus/test/src/test_proxy_children.cpp b/3rdparty/SimpleBLE/simpledbus/test/src/test_proxy_children.cpp similarity index 100% rename from third_party/SimpleBLE/simpledbus/test/src/test_proxy_children.cpp rename to 3rdparty/SimpleBLE/simpledbus/test/src/test_proxy_children.cpp diff --git a/third_party/SimpleBLE/simpledbus/test/src/test_proxy_interfaces.cpp b/3rdparty/SimpleBLE/simpledbus/test/src/test_proxy_interfaces.cpp similarity index 100% rename from third_party/SimpleBLE/simpledbus/test/src/test_proxy_interfaces.cpp rename to 3rdparty/SimpleBLE/simpledbus/test/src/test_proxy_interfaces.cpp diff --git a/third_party/SimpleBLE/simplepyble/CMakeLists.txt b/3rdparty/SimpleBLE/simplepyble/CMakeLists.txt similarity index 100% rename from third_party/SimpleBLE/simplepyble/CMakeLists.txt rename to 3rdparty/SimpleBLE/simplepyble/CMakeLists.txt diff --git a/third_party/SimpleBLE/simplepyble/README.rst b/3rdparty/SimpleBLE/simplepyble/README.rst similarity index 100% rename from third_party/SimpleBLE/simplepyble/README.rst rename to 3rdparty/SimpleBLE/simplepyble/README.rst diff --git a/third_party/SimpleBLE/simplepyble/cmake_build_extension/__init__.py b/3rdparty/SimpleBLE/simplepyble/cmake_build_extension/__init__.py similarity index 100% rename from third_party/SimpleBLE/simplepyble/cmake_build_extension/__init__.py rename to 3rdparty/SimpleBLE/simplepyble/cmake_build_extension/__init__.py diff --git a/third_party/SimpleBLE/simplepyble/cmake_build_extension/build_ext_option.py b/3rdparty/SimpleBLE/simplepyble/cmake_build_extension/build_ext_option.py similarity index 100% rename from third_party/SimpleBLE/simplepyble/cmake_build_extension/build_ext_option.py rename to 3rdparty/SimpleBLE/simplepyble/cmake_build_extension/build_ext_option.py diff --git a/third_party/SimpleBLE/simplepyble/cmake_build_extension/build_extension.py b/3rdparty/SimpleBLE/simplepyble/cmake_build_extension/build_extension.py similarity index 100% rename from third_party/SimpleBLE/simplepyble/cmake_build_extension/build_extension.py rename to 3rdparty/SimpleBLE/simplepyble/cmake_build_extension/build_extension.py diff --git a/third_party/SimpleBLE/simplepyble/cmake_build_extension/cmake_extension.py b/3rdparty/SimpleBLE/simplepyble/cmake_build_extension/cmake_extension.py similarity index 100% rename from third_party/SimpleBLE/simplepyble/cmake_build_extension/cmake_extension.py rename to 3rdparty/SimpleBLE/simplepyble/cmake_build_extension/cmake_extension.py diff --git a/third_party/SimpleBLE/simplepyble/cmake_build_extension/sdist_command.py b/3rdparty/SimpleBLE/simplepyble/cmake_build_extension/sdist_command.py similarity index 100% rename from third_party/SimpleBLE/simplepyble/cmake_build_extension/sdist_command.py rename to 3rdparty/SimpleBLE/simplepyble/cmake_build_extension/sdist_command.py diff --git a/third_party/SimpleBLE/simplepyble/pyproject.toml b/3rdparty/SimpleBLE/simplepyble/pyproject.toml similarity index 100% rename from third_party/SimpleBLE/simplepyble/pyproject.toml rename to 3rdparty/SimpleBLE/simplepyble/pyproject.toml diff --git a/third_party/SimpleBLE/simplepyble/requirements.txt b/3rdparty/SimpleBLE/simplepyble/requirements.txt similarity index 100% rename from third_party/SimpleBLE/simplepyble/requirements.txt rename to 3rdparty/SimpleBLE/simplepyble/requirements.txt diff --git a/third_party/SimpleBLE/simplepyble/setup.py b/3rdparty/SimpleBLE/simplepyble/setup.py similarity index 100% rename from third_party/SimpleBLE/simplepyble/setup.py rename to 3rdparty/SimpleBLE/simplepyble/setup.py diff --git a/third_party/SimpleBLE/simplepyble/src/main.cpp b/3rdparty/SimpleBLE/simplepyble/src/main.cpp similarity index 100% rename from third_party/SimpleBLE/simplepyble/src/main.cpp rename to 3rdparty/SimpleBLE/simplepyble/src/main.cpp diff --git a/third_party/SimpleBLE/simplepyble/src/wrap_adapter.cpp b/3rdparty/SimpleBLE/simplepyble/src/wrap_adapter.cpp similarity index 100% rename from third_party/SimpleBLE/simplepyble/src/wrap_adapter.cpp rename to 3rdparty/SimpleBLE/simplepyble/src/wrap_adapter.cpp diff --git a/third_party/SimpleBLE/simplepyble/src/wrap_characteristic.cpp b/3rdparty/SimpleBLE/simplepyble/src/wrap_characteristic.cpp similarity index 100% rename from third_party/SimpleBLE/simplepyble/src/wrap_characteristic.cpp rename to 3rdparty/SimpleBLE/simplepyble/src/wrap_characteristic.cpp diff --git a/third_party/SimpleBLE/simplepyble/src/wrap_descriptor.cpp b/3rdparty/SimpleBLE/simplepyble/src/wrap_descriptor.cpp similarity index 100% rename from third_party/SimpleBLE/simplepyble/src/wrap_descriptor.cpp rename to 3rdparty/SimpleBLE/simplepyble/src/wrap_descriptor.cpp diff --git a/third_party/SimpleBLE/simplepyble/src/wrap_peripheral.cpp b/3rdparty/SimpleBLE/simplepyble/src/wrap_peripheral.cpp similarity index 100% rename from third_party/SimpleBLE/simplepyble/src/wrap_peripheral.cpp rename to 3rdparty/SimpleBLE/simplepyble/src/wrap_peripheral.cpp diff --git a/third_party/SimpleBLE/simplepyble/src/wrap_service.cpp b/3rdparty/SimpleBLE/simplepyble/src/wrap_service.cpp similarity index 100% rename from third_party/SimpleBLE/simplepyble/src/wrap_service.cpp rename to 3rdparty/SimpleBLE/simplepyble/src/wrap_service.cpp diff --git a/third_party/SimpleBLE/simplepyble/test/test_simpleble.py b/3rdparty/SimpleBLE/simplepyble/test/test_simpleble.py similarity index 100% rename from third_party/SimpleBLE/simplepyble/test/test_simpleble.py rename to 3rdparty/SimpleBLE/simplepyble/test/test_simpleble.py diff --git a/third_party/SimpleBLE/utils/build_lib.bat b/3rdparty/SimpleBLE/utils/build_lib.bat similarity index 100% rename from third_party/SimpleBLE/utils/build_lib.bat rename to 3rdparty/SimpleBLE/utils/build_lib.bat diff --git a/third_party/SimpleBLE/utils/build_lib.ps1 b/3rdparty/SimpleBLE/utils/build_lib.ps1 similarity index 100% rename from third_party/SimpleBLE/utils/build_lib.ps1 rename to 3rdparty/SimpleBLE/utils/build_lib.ps1 diff --git a/third_party/SimpleBLE/utils/build_lib.sh b/3rdparty/SimpleBLE/utils/build_lib.sh similarity index 100% rename from third_party/SimpleBLE/utils/build_lib.sh rename to 3rdparty/SimpleBLE/utils/build_lib.sh diff --git a/third_party/SimpleBLE/utils/build_py.sh b/3rdparty/SimpleBLE/utils/build_py.sh similarity index 100% rename from third_party/SimpleBLE/utils/build_py.sh rename to 3rdparty/SimpleBLE/utils/build_py.sh diff --git a/third_party/fmt/.clang-format b/3rdparty/fmt/.clang-format similarity index 100% rename from third_party/fmt/.clang-format rename to 3rdparty/fmt/.clang-format diff --git a/third_party/fmt/.github/pull_request_template.md b/3rdparty/fmt/.github/pull_request_template.md similarity index 100% rename from third_party/fmt/.github/pull_request_template.md rename to 3rdparty/fmt/.github/pull_request_template.md diff --git a/third_party/fmt/.github/workflows/doc.yml b/3rdparty/fmt/.github/workflows/doc.yml similarity index 100% rename from third_party/fmt/.github/workflows/doc.yml rename to 3rdparty/fmt/.github/workflows/doc.yml diff --git a/third_party/fmt/.github/workflows/linux.yml b/3rdparty/fmt/.github/workflows/linux.yml similarity index 100% rename from third_party/fmt/.github/workflows/linux.yml rename to 3rdparty/fmt/.github/workflows/linux.yml diff --git a/third_party/fmt/.github/workflows/macos.yml b/3rdparty/fmt/.github/workflows/macos.yml similarity index 100% rename from third_party/fmt/.github/workflows/macos.yml rename to 3rdparty/fmt/.github/workflows/macos.yml diff --git a/third_party/fmt/.github/workflows/windows.yml b/3rdparty/fmt/.github/workflows/windows.yml similarity index 100% rename from third_party/fmt/.github/workflows/windows.yml rename to 3rdparty/fmt/.github/workflows/windows.yml diff --git a/third_party/fmt/.gitignore b/3rdparty/fmt/.gitignore similarity index 100% rename from third_party/fmt/.gitignore rename to 3rdparty/fmt/.gitignore diff --git a/third_party/fmt/CMakeLists.txt b/3rdparty/fmt/CMakeLists.txt similarity index 100% rename from third_party/fmt/CMakeLists.txt rename to 3rdparty/fmt/CMakeLists.txt diff --git a/third_party/fmt/CONTRIBUTING.md b/3rdparty/fmt/CONTRIBUTING.md similarity index 100% rename from third_party/fmt/CONTRIBUTING.md rename to 3rdparty/fmt/CONTRIBUTING.md diff --git a/third_party/fmt/ChangeLog.rst b/3rdparty/fmt/ChangeLog.rst similarity index 100% rename from third_party/fmt/ChangeLog.rst rename to 3rdparty/fmt/ChangeLog.rst diff --git a/third_party/fmt/LICENSE.rst b/3rdparty/fmt/LICENSE.rst similarity index 100% rename from third_party/fmt/LICENSE.rst rename to 3rdparty/fmt/LICENSE.rst diff --git a/third_party/fmt/README.rst b/3rdparty/fmt/README.rst similarity index 100% rename from third_party/fmt/README.rst rename to 3rdparty/fmt/README.rst diff --git a/third_party/fmt/doc/CMakeLists.txt b/3rdparty/fmt/doc/CMakeLists.txt similarity index 100% rename from third_party/fmt/doc/CMakeLists.txt rename to 3rdparty/fmt/doc/CMakeLists.txt diff --git a/third_party/fmt/doc/_static/bootstrap.min.js b/3rdparty/fmt/doc/_static/bootstrap.min.js similarity index 100% rename from third_party/fmt/doc/_static/bootstrap.min.js rename to 3rdparty/fmt/doc/_static/bootstrap.min.js diff --git a/third_party/fmt/doc/_static/breathe.css b/3rdparty/fmt/doc/_static/breathe.css similarity index 100% rename from third_party/fmt/doc/_static/breathe.css rename to 3rdparty/fmt/doc/_static/breathe.css diff --git a/third_party/fmt/doc/_static/fonts/glyphicons-halflings-regular.eot b/3rdparty/fmt/doc/_static/fonts/glyphicons-halflings-regular.eot similarity index 100% rename from third_party/fmt/doc/_static/fonts/glyphicons-halflings-regular.eot rename to 3rdparty/fmt/doc/_static/fonts/glyphicons-halflings-regular.eot diff --git a/third_party/fmt/doc/_static/fonts/glyphicons-halflings-regular.svg b/3rdparty/fmt/doc/_static/fonts/glyphicons-halflings-regular.svg similarity index 100% rename from third_party/fmt/doc/_static/fonts/glyphicons-halflings-regular.svg rename to 3rdparty/fmt/doc/_static/fonts/glyphicons-halflings-regular.svg diff --git a/third_party/fmt/doc/_static/fonts/glyphicons-halflings-regular.ttf b/3rdparty/fmt/doc/_static/fonts/glyphicons-halflings-regular.ttf similarity index 100% rename from third_party/fmt/doc/_static/fonts/glyphicons-halflings-regular.ttf rename to 3rdparty/fmt/doc/_static/fonts/glyphicons-halflings-regular.ttf diff --git a/third_party/fmt/doc/_static/fonts/glyphicons-halflings-regular.woff b/3rdparty/fmt/doc/_static/fonts/glyphicons-halflings-regular.woff similarity index 100% rename from third_party/fmt/doc/_static/fonts/glyphicons-halflings-regular.woff rename to 3rdparty/fmt/doc/_static/fonts/glyphicons-halflings-regular.woff diff --git a/third_party/fmt/doc/_templates/layout.html b/3rdparty/fmt/doc/_templates/layout.html similarity index 100% rename from third_party/fmt/doc/_templates/layout.html rename to 3rdparty/fmt/doc/_templates/layout.html diff --git a/third_party/fmt/doc/_templates/search.html b/3rdparty/fmt/doc/_templates/search.html similarity index 100% rename from third_party/fmt/doc/_templates/search.html rename to 3rdparty/fmt/doc/_templates/search.html diff --git a/third_party/fmt/doc/api.rst b/3rdparty/fmt/doc/api.rst similarity index 100% rename from third_party/fmt/doc/api.rst rename to 3rdparty/fmt/doc/api.rst diff --git a/third_party/fmt/doc/basic-bootstrap/README b/3rdparty/fmt/doc/basic-bootstrap/README similarity index 100% rename from third_party/fmt/doc/basic-bootstrap/README rename to 3rdparty/fmt/doc/basic-bootstrap/README diff --git a/third_party/fmt/doc/basic-bootstrap/layout.html b/3rdparty/fmt/doc/basic-bootstrap/layout.html similarity index 100% rename from third_party/fmt/doc/basic-bootstrap/layout.html rename to 3rdparty/fmt/doc/basic-bootstrap/layout.html diff --git a/third_party/fmt/doc/basic-bootstrap/theme.conf b/3rdparty/fmt/doc/basic-bootstrap/theme.conf similarity index 100% rename from third_party/fmt/doc/basic-bootstrap/theme.conf rename to 3rdparty/fmt/doc/basic-bootstrap/theme.conf diff --git a/third_party/fmt/doc/bootstrap/alerts.less b/3rdparty/fmt/doc/bootstrap/alerts.less similarity index 100% rename from third_party/fmt/doc/bootstrap/alerts.less rename to 3rdparty/fmt/doc/bootstrap/alerts.less diff --git a/third_party/fmt/doc/bootstrap/badges.less b/3rdparty/fmt/doc/bootstrap/badges.less similarity index 100% rename from third_party/fmt/doc/bootstrap/badges.less rename to 3rdparty/fmt/doc/bootstrap/badges.less diff --git a/third_party/fmt/doc/bootstrap/bootstrap.less b/3rdparty/fmt/doc/bootstrap/bootstrap.less similarity index 100% rename from third_party/fmt/doc/bootstrap/bootstrap.less rename to 3rdparty/fmt/doc/bootstrap/bootstrap.less diff --git a/third_party/fmt/doc/bootstrap/breadcrumbs.less b/3rdparty/fmt/doc/bootstrap/breadcrumbs.less similarity index 100% rename from third_party/fmt/doc/bootstrap/breadcrumbs.less rename to 3rdparty/fmt/doc/bootstrap/breadcrumbs.less diff --git a/third_party/fmt/doc/bootstrap/button-groups.less b/3rdparty/fmt/doc/bootstrap/button-groups.less similarity index 100% rename from third_party/fmt/doc/bootstrap/button-groups.less rename to 3rdparty/fmt/doc/bootstrap/button-groups.less diff --git a/third_party/fmt/doc/bootstrap/buttons.less b/3rdparty/fmt/doc/bootstrap/buttons.less similarity index 100% rename from third_party/fmt/doc/bootstrap/buttons.less rename to 3rdparty/fmt/doc/bootstrap/buttons.less diff --git a/third_party/fmt/doc/bootstrap/carousel.less b/3rdparty/fmt/doc/bootstrap/carousel.less similarity index 100% rename from third_party/fmt/doc/bootstrap/carousel.less rename to 3rdparty/fmt/doc/bootstrap/carousel.less diff --git a/third_party/fmt/doc/bootstrap/close.less b/3rdparty/fmt/doc/bootstrap/close.less similarity index 100% rename from third_party/fmt/doc/bootstrap/close.less rename to 3rdparty/fmt/doc/bootstrap/close.less diff --git a/third_party/fmt/doc/bootstrap/code.less b/3rdparty/fmt/doc/bootstrap/code.less similarity index 100% rename from third_party/fmt/doc/bootstrap/code.less rename to 3rdparty/fmt/doc/bootstrap/code.less diff --git a/third_party/fmt/doc/bootstrap/component-animations.less b/3rdparty/fmt/doc/bootstrap/component-animations.less similarity index 100% rename from third_party/fmt/doc/bootstrap/component-animations.less rename to 3rdparty/fmt/doc/bootstrap/component-animations.less diff --git a/third_party/fmt/doc/bootstrap/dropdowns.less b/3rdparty/fmt/doc/bootstrap/dropdowns.less similarity index 100% rename from third_party/fmt/doc/bootstrap/dropdowns.less rename to 3rdparty/fmt/doc/bootstrap/dropdowns.less diff --git a/third_party/fmt/doc/bootstrap/forms.less b/3rdparty/fmt/doc/bootstrap/forms.less similarity index 100% rename from third_party/fmt/doc/bootstrap/forms.less rename to 3rdparty/fmt/doc/bootstrap/forms.less diff --git a/third_party/fmt/doc/bootstrap/glyphicons.less b/3rdparty/fmt/doc/bootstrap/glyphicons.less similarity index 100% rename from third_party/fmt/doc/bootstrap/glyphicons.less rename to 3rdparty/fmt/doc/bootstrap/glyphicons.less diff --git a/third_party/fmt/doc/bootstrap/grid.less b/3rdparty/fmt/doc/bootstrap/grid.less similarity index 100% rename from third_party/fmt/doc/bootstrap/grid.less rename to 3rdparty/fmt/doc/bootstrap/grid.less diff --git a/third_party/fmt/doc/bootstrap/input-groups.less b/3rdparty/fmt/doc/bootstrap/input-groups.less similarity index 100% rename from third_party/fmt/doc/bootstrap/input-groups.less rename to 3rdparty/fmt/doc/bootstrap/input-groups.less diff --git a/third_party/fmt/doc/bootstrap/jumbotron.less b/3rdparty/fmt/doc/bootstrap/jumbotron.less similarity index 100% rename from third_party/fmt/doc/bootstrap/jumbotron.less rename to 3rdparty/fmt/doc/bootstrap/jumbotron.less diff --git a/third_party/fmt/doc/bootstrap/labels.less b/3rdparty/fmt/doc/bootstrap/labels.less similarity index 100% rename from third_party/fmt/doc/bootstrap/labels.less rename to 3rdparty/fmt/doc/bootstrap/labels.less diff --git a/third_party/fmt/doc/bootstrap/list-group.less b/3rdparty/fmt/doc/bootstrap/list-group.less similarity index 100% rename from third_party/fmt/doc/bootstrap/list-group.less rename to 3rdparty/fmt/doc/bootstrap/list-group.less diff --git a/third_party/fmt/doc/bootstrap/media.less b/3rdparty/fmt/doc/bootstrap/media.less similarity index 100% rename from third_party/fmt/doc/bootstrap/media.less rename to 3rdparty/fmt/doc/bootstrap/media.less diff --git a/third_party/fmt/doc/bootstrap/mixins.less b/3rdparty/fmt/doc/bootstrap/mixins.less similarity index 100% rename from third_party/fmt/doc/bootstrap/mixins.less rename to 3rdparty/fmt/doc/bootstrap/mixins.less diff --git a/third_party/fmt/doc/bootstrap/mixins/alerts.less b/3rdparty/fmt/doc/bootstrap/mixins/alerts.less similarity index 100% rename from third_party/fmt/doc/bootstrap/mixins/alerts.less rename to 3rdparty/fmt/doc/bootstrap/mixins/alerts.less diff --git a/third_party/fmt/doc/bootstrap/mixins/background-variant.less b/3rdparty/fmt/doc/bootstrap/mixins/background-variant.less similarity index 100% rename from third_party/fmt/doc/bootstrap/mixins/background-variant.less rename to 3rdparty/fmt/doc/bootstrap/mixins/background-variant.less diff --git a/third_party/fmt/doc/bootstrap/mixins/border-radius.less b/3rdparty/fmt/doc/bootstrap/mixins/border-radius.less similarity index 100% rename from third_party/fmt/doc/bootstrap/mixins/border-radius.less rename to 3rdparty/fmt/doc/bootstrap/mixins/border-radius.less diff --git a/third_party/fmt/doc/bootstrap/mixins/buttons.less b/3rdparty/fmt/doc/bootstrap/mixins/buttons.less similarity index 100% rename from third_party/fmt/doc/bootstrap/mixins/buttons.less rename to 3rdparty/fmt/doc/bootstrap/mixins/buttons.less diff --git a/third_party/fmt/doc/bootstrap/mixins/center-block.less b/3rdparty/fmt/doc/bootstrap/mixins/center-block.less similarity index 100% rename from third_party/fmt/doc/bootstrap/mixins/center-block.less rename to 3rdparty/fmt/doc/bootstrap/mixins/center-block.less diff --git a/third_party/fmt/doc/bootstrap/mixins/clearfix.less b/3rdparty/fmt/doc/bootstrap/mixins/clearfix.less similarity index 100% rename from third_party/fmt/doc/bootstrap/mixins/clearfix.less rename to 3rdparty/fmt/doc/bootstrap/mixins/clearfix.less diff --git a/third_party/fmt/doc/bootstrap/mixins/forms.less b/3rdparty/fmt/doc/bootstrap/mixins/forms.less similarity index 100% rename from third_party/fmt/doc/bootstrap/mixins/forms.less rename to 3rdparty/fmt/doc/bootstrap/mixins/forms.less diff --git a/third_party/fmt/doc/bootstrap/mixins/gradients.less b/3rdparty/fmt/doc/bootstrap/mixins/gradients.less similarity index 100% rename from third_party/fmt/doc/bootstrap/mixins/gradients.less rename to 3rdparty/fmt/doc/bootstrap/mixins/gradients.less diff --git a/third_party/fmt/doc/bootstrap/mixins/grid-framework.less b/3rdparty/fmt/doc/bootstrap/mixins/grid-framework.less similarity index 100% rename from third_party/fmt/doc/bootstrap/mixins/grid-framework.less rename to 3rdparty/fmt/doc/bootstrap/mixins/grid-framework.less diff --git a/third_party/fmt/doc/bootstrap/mixins/grid.less b/3rdparty/fmt/doc/bootstrap/mixins/grid.less similarity index 100% rename from third_party/fmt/doc/bootstrap/mixins/grid.less rename to 3rdparty/fmt/doc/bootstrap/mixins/grid.less diff --git a/third_party/fmt/doc/bootstrap/mixins/hide-text.less b/3rdparty/fmt/doc/bootstrap/mixins/hide-text.less similarity index 100% rename from third_party/fmt/doc/bootstrap/mixins/hide-text.less rename to 3rdparty/fmt/doc/bootstrap/mixins/hide-text.less diff --git a/third_party/fmt/doc/bootstrap/mixins/image.less b/3rdparty/fmt/doc/bootstrap/mixins/image.less similarity index 100% rename from third_party/fmt/doc/bootstrap/mixins/image.less rename to 3rdparty/fmt/doc/bootstrap/mixins/image.less diff --git a/third_party/fmt/doc/bootstrap/mixins/labels.less b/3rdparty/fmt/doc/bootstrap/mixins/labels.less similarity index 100% rename from third_party/fmt/doc/bootstrap/mixins/labels.less rename to 3rdparty/fmt/doc/bootstrap/mixins/labels.less diff --git a/third_party/fmt/doc/bootstrap/mixins/list-group.less b/3rdparty/fmt/doc/bootstrap/mixins/list-group.less similarity index 100% rename from third_party/fmt/doc/bootstrap/mixins/list-group.less rename to 3rdparty/fmt/doc/bootstrap/mixins/list-group.less diff --git a/third_party/fmt/doc/bootstrap/mixins/nav-divider.less b/3rdparty/fmt/doc/bootstrap/mixins/nav-divider.less similarity index 100% rename from third_party/fmt/doc/bootstrap/mixins/nav-divider.less rename to 3rdparty/fmt/doc/bootstrap/mixins/nav-divider.less diff --git a/third_party/fmt/doc/bootstrap/mixins/nav-vertical-align.less b/3rdparty/fmt/doc/bootstrap/mixins/nav-vertical-align.less similarity index 100% rename from third_party/fmt/doc/bootstrap/mixins/nav-vertical-align.less rename to 3rdparty/fmt/doc/bootstrap/mixins/nav-vertical-align.less diff --git a/third_party/fmt/doc/bootstrap/mixins/opacity.less b/3rdparty/fmt/doc/bootstrap/mixins/opacity.less similarity index 100% rename from third_party/fmt/doc/bootstrap/mixins/opacity.less rename to 3rdparty/fmt/doc/bootstrap/mixins/opacity.less diff --git a/third_party/fmt/doc/bootstrap/mixins/pagination.less b/3rdparty/fmt/doc/bootstrap/mixins/pagination.less similarity index 100% rename from third_party/fmt/doc/bootstrap/mixins/pagination.less rename to 3rdparty/fmt/doc/bootstrap/mixins/pagination.less diff --git a/third_party/fmt/doc/bootstrap/mixins/panels.less b/3rdparty/fmt/doc/bootstrap/mixins/panels.less similarity index 100% rename from third_party/fmt/doc/bootstrap/mixins/panels.less rename to 3rdparty/fmt/doc/bootstrap/mixins/panels.less diff --git a/third_party/fmt/doc/bootstrap/mixins/progress-bar.less b/3rdparty/fmt/doc/bootstrap/mixins/progress-bar.less similarity index 100% rename from third_party/fmt/doc/bootstrap/mixins/progress-bar.less rename to 3rdparty/fmt/doc/bootstrap/mixins/progress-bar.less diff --git a/third_party/fmt/doc/bootstrap/mixins/reset-filter.less b/3rdparty/fmt/doc/bootstrap/mixins/reset-filter.less similarity index 100% rename from third_party/fmt/doc/bootstrap/mixins/reset-filter.less rename to 3rdparty/fmt/doc/bootstrap/mixins/reset-filter.less diff --git a/third_party/fmt/doc/bootstrap/mixins/resize.less b/3rdparty/fmt/doc/bootstrap/mixins/resize.less similarity index 100% rename from third_party/fmt/doc/bootstrap/mixins/resize.less rename to 3rdparty/fmt/doc/bootstrap/mixins/resize.less diff --git a/third_party/fmt/doc/bootstrap/mixins/responsive-visibility.less b/3rdparty/fmt/doc/bootstrap/mixins/responsive-visibility.less similarity index 100% rename from third_party/fmt/doc/bootstrap/mixins/responsive-visibility.less rename to 3rdparty/fmt/doc/bootstrap/mixins/responsive-visibility.less diff --git a/third_party/fmt/doc/bootstrap/mixins/size.less b/3rdparty/fmt/doc/bootstrap/mixins/size.less similarity index 100% rename from third_party/fmt/doc/bootstrap/mixins/size.less rename to 3rdparty/fmt/doc/bootstrap/mixins/size.less diff --git a/third_party/fmt/doc/bootstrap/mixins/tab-focus.less b/3rdparty/fmt/doc/bootstrap/mixins/tab-focus.less similarity index 100% rename from third_party/fmt/doc/bootstrap/mixins/tab-focus.less rename to 3rdparty/fmt/doc/bootstrap/mixins/tab-focus.less diff --git a/third_party/fmt/doc/bootstrap/mixins/table-row.less b/3rdparty/fmt/doc/bootstrap/mixins/table-row.less similarity index 100% rename from third_party/fmt/doc/bootstrap/mixins/table-row.less rename to 3rdparty/fmt/doc/bootstrap/mixins/table-row.less diff --git a/third_party/fmt/doc/bootstrap/mixins/text-emphasis.less b/3rdparty/fmt/doc/bootstrap/mixins/text-emphasis.less similarity index 100% rename from third_party/fmt/doc/bootstrap/mixins/text-emphasis.less rename to 3rdparty/fmt/doc/bootstrap/mixins/text-emphasis.less diff --git a/third_party/fmt/doc/bootstrap/mixins/text-overflow.less b/3rdparty/fmt/doc/bootstrap/mixins/text-overflow.less similarity index 100% rename from third_party/fmt/doc/bootstrap/mixins/text-overflow.less rename to 3rdparty/fmt/doc/bootstrap/mixins/text-overflow.less diff --git a/third_party/fmt/doc/bootstrap/mixins/vendor-prefixes.less b/3rdparty/fmt/doc/bootstrap/mixins/vendor-prefixes.less similarity index 100% rename from third_party/fmt/doc/bootstrap/mixins/vendor-prefixes.less rename to 3rdparty/fmt/doc/bootstrap/mixins/vendor-prefixes.less diff --git a/third_party/fmt/doc/bootstrap/modals.less b/3rdparty/fmt/doc/bootstrap/modals.less similarity index 100% rename from third_party/fmt/doc/bootstrap/modals.less rename to 3rdparty/fmt/doc/bootstrap/modals.less diff --git a/third_party/fmt/doc/bootstrap/navbar.less b/3rdparty/fmt/doc/bootstrap/navbar.less similarity index 100% rename from third_party/fmt/doc/bootstrap/navbar.less rename to 3rdparty/fmt/doc/bootstrap/navbar.less diff --git a/third_party/fmt/doc/bootstrap/navs.less b/3rdparty/fmt/doc/bootstrap/navs.less similarity index 100% rename from third_party/fmt/doc/bootstrap/navs.less rename to 3rdparty/fmt/doc/bootstrap/navs.less diff --git a/third_party/fmt/doc/bootstrap/normalize.less b/3rdparty/fmt/doc/bootstrap/normalize.less similarity index 100% rename from third_party/fmt/doc/bootstrap/normalize.less rename to 3rdparty/fmt/doc/bootstrap/normalize.less diff --git a/third_party/fmt/doc/bootstrap/pager.less b/3rdparty/fmt/doc/bootstrap/pager.less similarity index 100% rename from third_party/fmt/doc/bootstrap/pager.less rename to 3rdparty/fmt/doc/bootstrap/pager.less diff --git a/third_party/fmt/doc/bootstrap/pagination.less b/3rdparty/fmt/doc/bootstrap/pagination.less similarity index 100% rename from third_party/fmt/doc/bootstrap/pagination.less rename to 3rdparty/fmt/doc/bootstrap/pagination.less diff --git a/third_party/fmt/doc/bootstrap/panels.less b/3rdparty/fmt/doc/bootstrap/panels.less similarity index 100% rename from third_party/fmt/doc/bootstrap/panels.less rename to 3rdparty/fmt/doc/bootstrap/panels.less diff --git a/third_party/fmt/doc/bootstrap/popovers.less b/3rdparty/fmt/doc/bootstrap/popovers.less similarity index 100% rename from third_party/fmt/doc/bootstrap/popovers.less rename to 3rdparty/fmt/doc/bootstrap/popovers.less diff --git a/third_party/fmt/doc/bootstrap/print.less b/3rdparty/fmt/doc/bootstrap/print.less similarity index 100% rename from third_party/fmt/doc/bootstrap/print.less rename to 3rdparty/fmt/doc/bootstrap/print.less diff --git a/third_party/fmt/doc/bootstrap/progress-bars.less b/3rdparty/fmt/doc/bootstrap/progress-bars.less similarity index 100% rename from third_party/fmt/doc/bootstrap/progress-bars.less rename to 3rdparty/fmt/doc/bootstrap/progress-bars.less diff --git a/third_party/fmt/doc/bootstrap/responsive-embed.less b/3rdparty/fmt/doc/bootstrap/responsive-embed.less similarity index 100% rename from third_party/fmt/doc/bootstrap/responsive-embed.less rename to 3rdparty/fmt/doc/bootstrap/responsive-embed.less diff --git a/third_party/fmt/doc/bootstrap/responsive-utilities.less b/3rdparty/fmt/doc/bootstrap/responsive-utilities.less similarity index 100% rename from third_party/fmt/doc/bootstrap/responsive-utilities.less rename to 3rdparty/fmt/doc/bootstrap/responsive-utilities.less diff --git a/third_party/fmt/doc/bootstrap/scaffolding.less b/3rdparty/fmt/doc/bootstrap/scaffolding.less similarity index 100% rename from third_party/fmt/doc/bootstrap/scaffolding.less rename to 3rdparty/fmt/doc/bootstrap/scaffolding.less diff --git a/third_party/fmt/doc/bootstrap/tables.less b/3rdparty/fmt/doc/bootstrap/tables.less similarity index 100% rename from third_party/fmt/doc/bootstrap/tables.less rename to 3rdparty/fmt/doc/bootstrap/tables.less diff --git a/third_party/fmt/doc/bootstrap/theme.less b/3rdparty/fmt/doc/bootstrap/theme.less similarity index 100% rename from third_party/fmt/doc/bootstrap/theme.less rename to 3rdparty/fmt/doc/bootstrap/theme.less diff --git a/third_party/fmt/doc/bootstrap/thumbnails.less b/3rdparty/fmt/doc/bootstrap/thumbnails.less similarity index 100% rename from third_party/fmt/doc/bootstrap/thumbnails.less rename to 3rdparty/fmt/doc/bootstrap/thumbnails.less diff --git a/third_party/fmt/doc/bootstrap/tooltip.less b/3rdparty/fmt/doc/bootstrap/tooltip.less similarity index 100% rename from third_party/fmt/doc/bootstrap/tooltip.less rename to 3rdparty/fmt/doc/bootstrap/tooltip.less diff --git a/third_party/fmt/doc/bootstrap/type.less b/3rdparty/fmt/doc/bootstrap/type.less similarity index 100% rename from third_party/fmt/doc/bootstrap/type.less rename to 3rdparty/fmt/doc/bootstrap/type.less diff --git a/third_party/fmt/doc/bootstrap/utilities.less b/3rdparty/fmt/doc/bootstrap/utilities.less similarity index 100% rename from third_party/fmt/doc/bootstrap/utilities.less rename to 3rdparty/fmt/doc/bootstrap/utilities.less diff --git a/third_party/fmt/doc/bootstrap/variables.less b/3rdparty/fmt/doc/bootstrap/variables.less similarity index 100% rename from third_party/fmt/doc/bootstrap/variables.less rename to 3rdparty/fmt/doc/bootstrap/variables.less diff --git a/third_party/fmt/doc/bootstrap/wells.less b/3rdparty/fmt/doc/bootstrap/wells.less similarity index 100% rename from third_party/fmt/doc/bootstrap/wells.less rename to 3rdparty/fmt/doc/bootstrap/wells.less diff --git a/third_party/fmt/doc/build.py b/3rdparty/fmt/doc/build.py similarity index 100% rename from third_party/fmt/doc/build.py rename to 3rdparty/fmt/doc/build.py diff --git a/third_party/fmt/doc/conf.py b/3rdparty/fmt/doc/conf.py similarity index 100% rename from third_party/fmt/doc/conf.py rename to 3rdparty/fmt/doc/conf.py diff --git a/third_party/fmt/doc/contents.rst b/3rdparty/fmt/doc/contents.rst similarity index 100% rename from third_party/fmt/doc/contents.rst rename to 3rdparty/fmt/doc/contents.rst diff --git a/third_party/fmt/doc/fmt.less b/3rdparty/fmt/doc/fmt.less similarity index 100% rename from third_party/fmt/doc/fmt.less rename to 3rdparty/fmt/doc/fmt.less diff --git a/third_party/fmt/doc/index.rst b/3rdparty/fmt/doc/index.rst similarity index 100% rename from third_party/fmt/doc/index.rst rename to 3rdparty/fmt/doc/index.rst diff --git a/third_party/fmt/doc/python-license.txt b/3rdparty/fmt/doc/python-license.txt similarity index 100% rename from third_party/fmt/doc/python-license.txt rename to 3rdparty/fmt/doc/python-license.txt diff --git a/third_party/fmt/doc/syntax.rst b/3rdparty/fmt/doc/syntax.rst similarity index 100% rename from third_party/fmt/doc/syntax.rst rename to 3rdparty/fmt/doc/syntax.rst diff --git a/third_party/fmt/doc/usage.rst b/3rdparty/fmt/doc/usage.rst similarity index 100% rename from third_party/fmt/doc/usage.rst rename to 3rdparty/fmt/doc/usage.rst diff --git a/third_party/fmt/include/fmt/args.h b/3rdparty/fmt/include/fmt/args.h similarity index 100% rename from third_party/fmt/include/fmt/args.h rename to 3rdparty/fmt/include/fmt/args.h diff --git a/third_party/fmt/include/fmt/chrono.h b/3rdparty/fmt/include/fmt/chrono.h similarity index 100% rename from third_party/fmt/include/fmt/chrono.h rename to 3rdparty/fmt/include/fmt/chrono.h diff --git a/third_party/fmt/include/fmt/color.h b/3rdparty/fmt/include/fmt/color.h similarity index 100% rename from third_party/fmt/include/fmt/color.h rename to 3rdparty/fmt/include/fmt/color.h diff --git a/third_party/fmt/include/fmt/compile.h b/3rdparty/fmt/include/fmt/compile.h similarity index 100% rename from third_party/fmt/include/fmt/compile.h rename to 3rdparty/fmt/include/fmt/compile.h diff --git a/third_party/fmt/include/fmt/core.h b/3rdparty/fmt/include/fmt/core.h similarity index 100% rename from third_party/fmt/include/fmt/core.h rename to 3rdparty/fmt/include/fmt/core.h diff --git a/third_party/fmt/include/fmt/format-inl.h b/3rdparty/fmt/include/fmt/format-inl.h similarity index 100% rename from third_party/fmt/include/fmt/format-inl.h rename to 3rdparty/fmt/include/fmt/format-inl.h diff --git a/third_party/fmt/include/fmt/format.h b/3rdparty/fmt/include/fmt/format.h similarity index 100% rename from third_party/fmt/include/fmt/format.h rename to 3rdparty/fmt/include/fmt/format.h diff --git a/third_party/fmt/include/fmt/locale.h b/3rdparty/fmt/include/fmt/locale.h similarity index 100% rename from third_party/fmt/include/fmt/locale.h rename to 3rdparty/fmt/include/fmt/locale.h diff --git a/third_party/fmt/include/fmt/os.h b/3rdparty/fmt/include/fmt/os.h similarity index 100% rename from third_party/fmt/include/fmt/os.h rename to 3rdparty/fmt/include/fmt/os.h diff --git a/third_party/fmt/include/fmt/ostream.h b/3rdparty/fmt/include/fmt/ostream.h similarity index 100% rename from third_party/fmt/include/fmt/ostream.h rename to 3rdparty/fmt/include/fmt/ostream.h diff --git a/third_party/fmt/include/fmt/printf.h b/3rdparty/fmt/include/fmt/printf.h similarity index 100% rename from third_party/fmt/include/fmt/printf.h rename to 3rdparty/fmt/include/fmt/printf.h diff --git a/third_party/fmt/include/fmt/ranges.h b/3rdparty/fmt/include/fmt/ranges.h similarity index 100% rename from third_party/fmt/include/fmt/ranges.h rename to 3rdparty/fmt/include/fmt/ranges.h diff --git a/third_party/fmt/include/fmt/xchar.h b/3rdparty/fmt/include/fmt/xchar.h similarity index 100% rename from third_party/fmt/include/fmt/xchar.h rename to 3rdparty/fmt/include/fmt/xchar.h diff --git a/third_party/fmt/src/fmt.cc b/3rdparty/fmt/src/fmt.cc similarity index 100% rename from third_party/fmt/src/fmt.cc rename to 3rdparty/fmt/src/fmt.cc diff --git a/third_party/fmt/src/format.cc b/3rdparty/fmt/src/format.cc similarity index 100% rename from third_party/fmt/src/format.cc rename to 3rdparty/fmt/src/format.cc diff --git a/third_party/fmt/src/os.cc b/3rdparty/fmt/src/os.cc similarity index 100% rename from third_party/fmt/src/os.cc rename to 3rdparty/fmt/src/os.cc diff --git a/third_party/fmt/support/Android.mk b/3rdparty/fmt/support/Android.mk similarity index 100% rename from third_party/fmt/support/Android.mk rename to 3rdparty/fmt/support/Android.mk diff --git a/third_party/fmt/support/AndroidManifest.xml b/3rdparty/fmt/support/AndroidManifest.xml similarity index 100% rename from third_party/fmt/support/AndroidManifest.xml rename to 3rdparty/fmt/support/AndroidManifest.xml diff --git a/third_party/fmt/support/C++.sublime-syntax b/3rdparty/fmt/support/C++.sublime-syntax similarity index 100% rename from third_party/fmt/support/C++.sublime-syntax rename to 3rdparty/fmt/support/C++.sublime-syntax diff --git a/third_party/fmt/support/README b/3rdparty/fmt/support/README similarity index 100% rename from third_party/fmt/support/README rename to 3rdparty/fmt/support/README diff --git a/third_party/fmt/support/Vagrantfile b/3rdparty/fmt/support/Vagrantfile similarity index 100% rename from third_party/fmt/support/Vagrantfile rename to 3rdparty/fmt/support/Vagrantfile diff --git a/third_party/fmt/support/appveyor-build.py b/3rdparty/fmt/support/appveyor-build.py similarity index 100% rename from third_party/fmt/support/appveyor-build.py rename to 3rdparty/fmt/support/appveyor-build.py diff --git a/third_party/fmt/support/appveyor.yml b/3rdparty/fmt/support/appveyor.yml similarity index 100% rename from third_party/fmt/support/appveyor.yml rename to 3rdparty/fmt/support/appveyor.yml diff --git a/third_party/fmt/support/bazel/.bazelrc b/3rdparty/fmt/support/bazel/.bazelrc similarity index 100% rename from third_party/fmt/support/bazel/.bazelrc rename to 3rdparty/fmt/support/bazel/.bazelrc diff --git a/third_party/fmt/support/bazel/.bazelversion b/3rdparty/fmt/support/bazel/.bazelversion similarity index 100% rename from third_party/fmt/support/bazel/.bazelversion rename to 3rdparty/fmt/support/bazel/.bazelversion diff --git a/third_party/fmt/support/bazel/BUILD.bazel b/3rdparty/fmt/support/bazel/BUILD.bazel similarity index 100% rename from third_party/fmt/support/bazel/BUILD.bazel rename to 3rdparty/fmt/support/bazel/BUILD.bazel diff --git a/third_party/fmt/support/bazel/README.md b/3rdparty/fmt/support/bazel/README.md similarity index 100% rename from third_party/fmt/support/bazel/README.md rename to 3rdparty/fmt/support/bazel/README.md diff --git a/third_party/fmt/support/bazel/WORKSPACE.bazel b/3rdparty/fmt/support/bazel/WORKSPACE.bazel similarity index 100% rename from third_party/fmt/support/bazel/WORKSPACE.bazel rename to 3rdparty/fmt/support/bazel/WORKSPACE.bazel diff --git a/third_party/fmt/support/build-docs.py b/3rdparty/fmt/support/build-docs.py similarity index 100% rename from third_party/fmt/support/build-docs.py rename to 3rdparty/fmt/support/build-docs.py diff --git a/third_party/fmt/support/build.gradle b/3rdparty/fmt/support/build.gradle similarity index 100% rename from third_party/fmt/support/build.gradle rename to 3rdparty/fmt/support/build.gradle diff --git a/third_party/fmt/support/cmake/FindSetEnv.cmake b/3rdparty/fmt/support/cmake/FindSetEnv.cmake similarity index 100% rename from third_party/fmt/support/cmake/FindSetEnv.cmake rename to 3rdparty/fmt/support/cmake/FindSetEnv.cmake diff --git a/third_party/fmt/support/cmake/JoinPaths.cmake b/3rdparty/fmt/support/cmake/JoinPaths.cmake similarity index 100% rename from third_party/fmt/support/cmake/JoinPaths.cmake rename to 3rdparty/fmt/support/cmake/JoinPaths.cmake diff --git a/third_party/fmt/support/cmake/cxx14.cmake b/3rdparty/fmt/support/cmake/cxx14.cmake similarity index 100% rename from third_party/fmt/support/cmake/cxx14.cmake rename to 3rdparty/fmt/support/cmake/cxx14.cmake diff --git a/third_party/fmt/support/cmake/fmt-config.cmake.in b/3rdparty/fmt/support/cmake/fmt-config.cmake.in similarity index 100% rename from third_party/fmt/support/cmake/fmt-config.cmake.in rename to 3rdparty/fmt/support/cmake/fmt-config.cmake.in diff --git a/third_party/fmt/support/cmake/fmt.pc.in b/3rdparty/fmt/support/cmake/fmt.pc.in similarity index 100% rename from third_party/fmt/support/cmake/fmt.pc.in rename to 3rdparty/fmt/support/cmake/fmt.pc.in diff --git a/third_party/fmt/support/compute-powers.py b/3rdparty/fmt/support/compute-powers.py similarity index 100% rename from third_party/fmt/support/compute-powers.py rename to 3rdparty/fmt/support/compute-powers.py diff --git a/third_party/fmt/support/docopt.py b/3rdparty/fmt/support/docopt.py similarity index 100% rename from third_party/fmt/support/docopt.py rename to 3rdparty/fmt/support/docopt.py diff --git a/third_party/fmt/support/manage.py b/3rdparty/fmt/support/manage.py similarity index 100% rename from third_party/fmt/support/manage.py rename to 3rdparty/fmt/support/manage.py diff --git a/third_party/fmt/support/printable.py b/3rdparty/fmt/support/printable.py similarity index 100% rename from third_party/fmt/support/printable.py rename to 3rdparty/fmt/support/printable.py diff --git a/third_party/fmt/support/rst2md.py b/3rdparty/fmt/support/rst2md.py similarity index 100% rename from third_party/fmt/support/rst2md.py rename to 3rdparty/fmt/support/rst2md.py diff --git a/third_party/fmt/support/rtd/conf.py b/3rdparty/fmt/support/rtd/conf.py similarity index 100% rename from third_party/fmt/support/rtd/conf.py rename to 3rdparty/fmt/support/rtd/conf.py diff --git a/third_party/fmt/support/rtd/index.rst b/3rdparty/fmt/support/rtd/index.rst similarity index 100% rename from third_party/fmt/support/rtd/index.rst rename to 3rdparty/fmt/support/rtd/index.rst diff --git a/third_party/fmt/support/rtd/theme/layout.html b/3rdparty/fmt/support/rtd/theme/layout.html similarity index 100% rename from third_party/fmt/support/rtd/theme/layout.html rename to 3rdparty/fmt/support/rtd/theme/layout.html diff --git a/third_party/fmt/support/rtd/theme/theme.conf b/3rdparty/fmt/support/rtd/theme/theme.conf similarity index 100% rename from third_party/fmt/support/rtd/theme/theme.conf rename to 3rdparty/fmt/support/rtd/theme/theme.conf diff --git a/third_party/fmt/test/CMakeLists.txt b/3rdparty/fmt/test/CMakeLists.txt similarity index 100% rename from third_party/fmt/test/CMakeLists.txt rename to 3rdparty/fmt/test/CMakeLists.txt diff --git a/third_party/fmt/test/add-subdirectory-test/CMakeLists.txt b/3rdparty/fmt/test/add-subdirectory-test/CMakeLists.txt similarity index 100% rename from third_party/fmt/test/add-subdirectory-test/CMakeLists.txt rename to 3rdparty/fmt/test/add-subdirectory-test/CMakeLists.txt diff --git a/third_party/fmt/test/add-subdirectory-test/main.cc b/3rdparty/fmt/test/add-subdirectory-test/main.cc similarity index 100% rename from third_party/fmt/test/add-subdirectory-test/main.cc rename to 3rdparty/fmt/test/add-subdirectory-test/main.cc diff --git a/third_party/fmt/test/args-test.cc b/3rdparty/fmt/test/args-test.cc similarity index 100% rename from third_party/fmt/test/args-test.cc rename to 3rdparty/fmt/test/args-test.cc diff --git a/third_party/fmt/test/assert-test.cc b/3rdparty/fmt/test/assert-test.cc similarity index 100% rename from third_party/fmt/test/assert-test.cc rename to 3rdparty/fmt/test/assert-test.cc diff --git a/third_party/fmt/test/chrono-test.cc b/3rdparty/fmt/test/chrono-test.cc similarity index 100% rename from third_party/fmt/test/chrono-test.cc rename to 3rdparty/fmt/test/chrono-test.cc diff --git a/third_party/fmt/test/color-test.cc b/3rdparty/fmt/test/color-test.cc similarity index 100% rename from third_party/fmt/test/color-test.cc rename to 3rdparty/fmt/test/color-test.cc diff --git a/third_party/fmt/test/compile-error-test/CMakeLists.txt b/3rdparty/fmt/test/compile-error-test/CMakeLists.txt similarity index 100% rename from third_party/fmt/test/compile-error-test/CMakeLists.txt rename to 3rdparty/fmt/test/compile-error-test/CMakeLists.txt diff --git a/third_party/fmt/test/compile-fp-test.cc b/3rdparty/fmt/test/compile-fp-test.cc similarity index 100% rename from third_party/fmt/test/compile-fp-test.cc rename to 3rdparty/fmt/test/compile-fp-test.cc diff --git a/third_party/fmt/test/compile-test.cc b/3rdparty/fmt/test/compile-test.cc similarity index 100% rename from third_party/fmt/test/compile-test.cc rename to 3rdparty/fmt/test/compile-test.cc diff --git a/third_party/fmt/test/core-test.cc b/3rdparty/fmt/test/core-test.cc similarity index 100% rename from third_party/fmt/test/core-test.cc rename to 3rdparty/fmt/test/core-test.cc diff --git a/third_party/fmt/test/cuda-test/CMakeLists.txt b/3rdparty/fmt/test/cuda-test/CMakeLists.txt similarity index 100% rename from third_party/fmt/test/cuda-test/CMakeLists.txt rename to 3rdparty/fmt/test/cuda-test/CMakeLists.txt diff --git a/third_party/fmt/test/cuda-test/cpp14.cc b/3rdparty/fmt/test/cuda-test/cpp14.cc similarity index 100% rename from third_party/fmt/test/cuda-test/cpp14.cc rename to 3rdparty/fmt/test/cuda-test/cpp14.cc diff --git a/third_party/fmt/test/cuda-test/cuda-cpp14.cu b/3rdparty/fmt/test/cuda-test/cuda-cpp14.cu similarity index 100% rename from third_party/fmt/test/cuda-test/cuda-cpp14.cu rename to 3rdparty/fmt/test/cuda-test/cuda-cpp14.cu diff --git a/third_party/fmt/test/enforce-checks-test.cc b/3rdparty/fmt/test/enforce-checks-test.cc similarity index 100% rename from third_party/fmt/test/enforce-checks-test.cc rename to 3rdparty/fmt/test/enforce-checks-test.cc diff --git a/third_party/fmt/test/find-package-test/CMakeLists.txt b/3rdparty/fmt/test/find-package-test/CMakeLists.txt similarity index 100% rename from third_party/fmt/test/find-package-test/CMakeLists.txt rename to 3rdparty/fmt/test/find-package-test/CMakeLists.txt diff --git a/third_party/fmt/test/find-package-test/main.cc b/3rdparty/fmt/test/find-package-test/main.cc similarity index 100% rename from third_party/fmt/test/find-package-test/main.cc rename to 3rdparty/fmt/test/find-package-test/main.cc diff --git a/third_party/fmt/test/format-impl-test.cc b/3rdparty/fmt/test/format-impl-test.cc similarity index 100% rename from third_party/fmt/test/format-impl-test.cc rename to 3rdparty/fmt/test/format-impl-test.cc diff --git a/third_party/fmt/test/format-test.cc b/3rdparty/fmt/test/format-test.cc similarity index 100% rename from third_party/fmt/test/format-test.cc rename to 3rdparty/fmt/test/format-test.cc diff --git a/third_party/fmt/test/fuzzing/.gitignore b/3rdparty/fmt/test/fuzzing/.gitignore similarity index 100% rename from third_party/fmt/test/fuzzing/.gitignore rename to 3rdparty/fmt/test/fuzzing/.gitignore diff --git a/third_party/fmt/test/fuzzing/CMakeLists.txt b/3rdparty/fmt/test/fuzzing/CMakeLists.txt similarity index 100% rename from third_party/fmt/test/fuzzing/CMakeLists.txt rename to 3rdparty/fmt/test/fuzzing/CMakeLists.txt diff --git a/third_party/fmt/test/fuzzing/README.md b/3rdparty/fmt/test/fuzzing/README.md similarity index 100% rename from third_party/fmt/test/fuzzing/README.md rename to 3rdparty/fmt/test/fuzzing/README.md diff --git a/third_party/fmt/test/fuzzing/build.sh b/3rdparty/fmt/test/fuzzing/build.sh similarity index 100% rename from third_party/fmt/test/fuzzing/build.sh rename to 3rdparty/fmt/test/fuzzing/build.sh diff --git a/third_party/fmt/test/fuzzing/chrono-duration.cc b/3rdparty/fmt/test/fuzzing/chrono-duration.cc similarity index 100% rename from third_party/fmt/test/fuzzing/chrono-duration.cc rename to 3rdparty/fmt/test/fuzzing/chrono-duration.cc diff --git a/third_party/fmt/test/fuzzing/chrono-timepoint.cc b/3rdparty/fmt/test/fuzzing/chrono-timepoint.cc similarity index 100% rename from third_party/fmt/test/fuzzing/chrono-timepoint.cc rename to 3rdparty/fmt/test/fuzzing/chrono-timepoint.cc diff --git a/third_party/fmt/test/fuzzing/float.cc b/3rdparty/fmt/test/fuzzing/float.cc similarity index 100% rename from third_party/fmt/test/fuzzing/float.cc rename to 3rdparty/fmt/test/fuzzing/float.cc diff --git a/third_party/fmt/test/fuzzing/fuzzer-common.h b/3rdparty/fmt/test/fuzzing/fuzzer-common.h similarity index 100% rename from third_party/fmt/test/fuzzing/fuzzer-common.h rename to 3rdparty/fmt/test/fuzzing/fuzzer-common.h diff --git a/third_party/fmt/test/fuzzing/main.cc b/3rdparty/fmt/test/fuzzing/main.cc similarity index 100% rename from third_party/fmt/test/fuzzing/main.cc rename to 3rdparty/fmt/test/fuzzing/main.cc diff --git a/third_party/fmt/test/fuzzing/named-arg.cc b/3rdparty/fmt/test/fuzzing/named-arg.cc similarity index 100% rename from third_party/fmt/test/fuzzing/named-arg.cc rename to 3rdparty/fmt/test/fuzzing/named-arg.cc diff --git a/third_party/fmt/test/fuzzing/one-arg.cc b/3rdparty/fmt/test/fuzzing/one-arg.cc similarity index 100% rename from third_party/fmt/test/fuzzing/one-arg.cc rename to 3rdparty/fmt/test/fuzzing/one-arg.cc diff --git a/third_party/fmt/test/fuzzing/two-args.cc b/3rdparty/fmt/test/fuzzing/two-args.cc similarity index 100% rename from third_party/fmt/test/fuzzing/two-args.cc rename to 3rdparty/fmt/test/fuzzing/two-args.cc diff --git a/third_party/fmt/test/gtest-extra-test.cc b/3rdparty/fmt/test/gtest-extra-test.cc similarity index 100% rename from third_party/fmt/test/gtest-extra-test.cc rename to 3rdparty/fmt/test/gtest-extra-test.cc diff --git a/third_party/fmt/test/gtest-extra.cc b/3rdparty/fmt/test/gtest-extra.cc similarity index 100% rename from third_party/fmt/test/gtest-extra.cc rename to 3rdparty/fmt/test/gtest-extra.cc diff --git a/third_party/fmt/test/gtest-extra.h b/3rdparty/fmt/test/gtest-extra.h similarity index 100% rename from third_party/fmt/test/gtest-extra.h rename to 3rdparty/fmt/test/gtest-extra.h diff --git a/third_party/fmt/test/gtest/.clang-format b/3rdparty/fmt/test/gtest/.clang-format similarity index 100% rename from third_party/fmt/test/gtest/.clang-format rename to 3rdparty/fmt/test/gtest/.clang-format diff --git a/third_party/fmt/test/gtest/CMakeLists.txt b/3rdparty/fmt/test/gtest/CMakeLists.txt similarity index 100% rename from third_party/fmt/test/gtest/CMakeLists.txt rename to 3rdparty/fmt/test/gtest/CMakeLists.txt diff --git a/third_party/fmt/test/gtest/gmock-gtest-all.cc b/3rdparty/fmt/test/gtest/gmock-gtest-all.cc similarity index 100% rename from third_party/fmt/test/gtest/gmock-gtest-all.cc rename to 3rdparty/fmt/test/gtest/gmock-gtest-all.cc diff --git a/third_party/fmt/test/gtest/gmock/gmock.h b/3rdparty/fmt/test/gtest/gmock/gmock.h similarity index 100% rename from third_party/fmt/test/gtest/gmock/gmock.h rename to 3rdparty/fmt/test/gtest/gmock/gmock.h diff --git a/third_party/fmt/test/gtest/gtest/gtest-spi.h b/3rdparty/fmt/test/gtest/gtest/gtest-spi.h similarity index 100% rename from third_party/fmt/test/gtest/gtest/gtest-spi.h rename to 3rdparty/fmt/test/gtest/gtest/gtest-spi.h diff --git a/third_party/fmt/test/gtest/gtest/gtest.h b/3rdparty/fmt/test/gtest/gtest/gtest.h similarity index 100% rename from third_party/fmt/test/gtest/gtest/gtest.h rename to 3rdparty/fmt/test/gtest/gtest/gtest.h diff --git a/third_party/fmt/test/header-only-test.cc b/3rdparty/fmt/test/header-only-test.cc similarity index 100% rename from third_party/fmt/test/header-only-test.cc rename to 3rdparty/fmt/test/header-only-test.cc diff --git a/third_party/fmt/test/mock-allocator.h b/3rdparty/fmt/test/mock-allocator.h similarity index 100% rename from third_party/fmt/test/mock-allocator.h rename to 3rdparty/fmt/test/mock-allocator.h diff --git a/third_party/fmt/test/module-test.cc b/3rdparty/fmt/test/module-test.cc similarity index 100% rename from third_party/fmt/test/module-test.cc rename to 3rdparty/fmt/test/module-test.cc diff --git a/third_party/fmt/test/noexception-test.cc b/3rdparty/fmt/test/noexception-test.cc similarity index 100% rename from third_party/fmt/test/noexception-test.cc rename to 3rdparty/fmt/test/noexception-test.cc diff --git a/third_party/fmt/test/os-test.cc b/3rdparty/fmt/test/os-test.cc similarity index 100% rename from third_party/fmt/test/os-test.cc rename to 3rdparty/fmt/test/os-test.cc diff --git a/third_party/fmt/test/ostream-test.cc b/3rdparty/fmt/test/ostream-test.cc similarity index 100% rename from third_party/fmt/test/ostream-test.cc rename to 3rdparty/fmt/test/ostream-test.cc diff --git a/third_party/fmt/test/posix-mock-test.cc b/3rdparty/fmt/test/posix-mock-test.cc similarity index 100% rename from third_party/fmt/test/posix-mock-test.cc rename to 3rdparty/fmt/test/posix-mock-test.cc diff --git a/third_party/fmt/test/posix-mock.h b/3rdparty/fmt/test/posix-mock.h similarity index 100% rename from third_party/fmt/test/posix-mock.h rename to 3rdparty/fmt/test/posix-mock.h diff --git a/third_party/fmt/test/printf-test.cc b/3rdparty/fmt/test/printf-test.cc similarity index 100% rename from third_party/fmt/test/printf-test.cc rename to 3rdparty/fmt/test/printf-test.cc diff --git a/third_party/fmt/test/ranges-odr-test.cc b/3rdparty/fmt/test/ranges-odr-test.cc similarity index 100% rename from third_party/fmt/test/ranges-odr-test.cc rename to 3rdparty/fmt/test/ranges-odr-test.cc diff --git a/third_party/fmt/test/ranges-test.cc b/3rdparty/fmt/test/ranges-test.cc similarity index 100% rename from third_party/fmt/test/ranges-test.cc rename to 3rdparty/fmt/test/ranges-test.cc diff --git a/third_party/fmt/test/scan-test.cc b/3rdparty/fmt/test/scan-test.cc similarity index 100% rename from third_party/fmt/test/scan-test.cc rename to 3rdparty/fmt/test/scan-test.cc diff --git a/third_party/fmt/test/scan.h b/3rdparty/fmt/test/scan.h similarity index 100% rename from third_party/fmt/test/scan.h rename to 3rdparty/fmt/test/scan.h diff --git a/third_party/fmt/test/static-export-test/CMakeLists.txt b/3rdparty/fmt/test/static-export-test/CMakeLists.txt similarity index 100% rename from third_party/fmt/test/static-export-test/CMakeLists.txt rename to 3rdparty/fmt/test/static-export-test/CMakeLists.txt diff --git a/third_party/fmt/test/static-export-test/library.cc b/3rdparty/fmt/test/static-export-test/library.cc similarity index 100% rename from third_party/fmt/test/static-export-test/library.cc rename to 3rdparty/fmt/test/static-export-test/library.cc diff --git a/third_party/fmt/test/static-export-test/main.cc b/3rdparty/fmt/test/static-export-test/main.cc similarity index 100% rename from third_party/fmt/test/static-export-test/main.cc rename to 3rdparty/fmt/test/static-export-test/main.cc diff --git a/third_party/fmt/test/test-assert.h b/3rdparty/fmt/test/test-assert.h similarity index 100% rename from third_party/fmt/test/test-assert.h rename to 3rdparty/fmt/test/test-assert.h diff --git a/third_party/fmt/test/test-main.cc b/3rdparty/fmt/test/test-main.cc similarity index 100% rename from third_party/fmt/test/test-main.cc rename to 3rdparty/fmt/test/test-main.cc diff --git a/third_party/fmt/test/unicode-test.cc b/3rdparty/fmt/test/unicode-test.cc similarity index 100% rename from third_party/fmt/test/unicode-test.cc rename to 3rdparty/fmt/test/unicode-test.cc diff --git a/third_party/fmt/test/util.cc b/3rdparty/fmt/test/util.cc similarity index 100% rename from third_party/fmt/test/util.cc rename to 3rdparty/fmt/test/util.cc diff --git a/third_party/fmt/test/util.h b/3rdparty/fmt/test/util.h similarity index 100% rename from third_party/fmt/test/util.h rename to 3rdparty/fmt/test/util.h diff --git a/third_party/fmt/test/xchar-test.cc b/3rdparty/fmt/test/xchar-test.cc similarity index 100% rename from third_party/fmt/test/xchar-test.cc rename to 3rdparty/fmt/test/xchar-test.cc diff --git a/third_party/json/json.hpp b/3rdparty/json/json.hpp similarity index 100% rename from third_party/json/json.hpp rename to 3rdparty/json/json.hpp diff --git a/CMakeLists.txt b/CMakeLists.txt index ac029a9..8d78dab 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,115 +1,10 @@ -cmake_minimum_required (VERSION 3.10) -project (OpenBCI_GUI_Helpers) +cmake_minimum_required(VERSION 3.5 FATAL_ERROR) -set (CMAKE_CXX_STANDARD 17) -set (CMAKE_VERBOSE_MAKEFILE ON) -set (BRAINFLOW_VERSION 2.1.0) +project(openbci-gui-helpers LANGUAGES CXX) +SET(VERSION "3.0.0" CACHE STRING "Version") -# dont export sumbols on unix by default -set(CMAKE_CXX_VISIBILITY_PRESET hidden) -set(CMAKE_C_VISIBILITY_PRESET hidden) +include(cmake/default.cmake) +include(modules/bglib/build.cmake) +include(modules/native-ble/build.cmake) -macro (configure_msvc_runtime) - if (MSVC) - # Default to statically-linked runtime. - if ("${MSVC_RUNTIME}" STREQUAL "") - set (MSVC_RUNTIME "static") - endif () - # Set compiler options. - set (variables - CMAKE_C_FLAGS_DEBUG - CMAKE_C_FLAGS_MINSIZEREL - CMAKE_C_FLAGS_RELEASE - CMAKE_C_FLAGS_RELWITHDEBINFO - CMAKE_CXX_FLAGS_DEBUG - CMAKE_CXX_FLAGS_MINSIZEREL - CMAKE_CXX_FLAGS_RELEASE - CMAKE_CXX_FLAGS_RELWITHDEBINFO - ) - if (${MSVC_RUNTIME} STREQUAL "static") - message(STATUS - "MSVC -> forcing use of statically-linked runtime." - ) - foreach (variable ${variables}) - if (${variable} MATCHES "/MD") - string (REGEX REPLACE "/MD" "/MT" ${variable} "${${variable}}") - endif () - endforeach () - else () - message (STATUS - "MSVC -> forcing use of dynamically-linked runtime." - ) - foreach (variable ${variables}) - if (${variable} MATCHES "/MT") - string (REGEX REPLACE "/MT" "/MD" ${variable} "${${variable}}") - endif () - endforeach () - endif () - endif () -endmacro () - -# link msvc runtime statically -configure_msvc_runtime () - -add_subdirectory(${CMAKE_HOME_DIRECTORY}/third_party/SimpleBLE/simpleble) - -SET (GANGLION_LIB "GanglionScan") -set (GANGLION_SOURCE_LIB - ${CMAKE_HOME_DIRECTORY}/src/callbacks.cpp - ${CMAKE_HOME_DIRECTORY}/src/cmd_def.cpp - ${CMAKE_HOME_DIRECTORY}/src/stubs.cpp - ${CMAKE_HOME_DIRECTORY}/src/uart.cpp - ${CMAKE_HOME_DIRECTORY}/src/openbci_gui_helpers.cpp -) - -add_library (${GANGLION_LIB} SHARED ${GANGLION_SOURCE_LIB}) - -target_include_directories (${GANGLION_LIB} PUBLIC - $ - $ -) - -set_property (TARGET ${GANGLION_LIB} PROPERTY POSITION_INDEPENDENT_CODE ON) - -set_target_properties (${GANGLION_LIB} - PROPERTIES - ARCHIVE_OUTPUT_DIRECTORY_RELEASE ${CMAKE_HOME_DIRECTORY}/java-package/openbci_gui_helpers/src/main/resources/ - LIBRARY_OUTPUT_DIRECTORY_RELEASE ${CMAKE_HOME_DIRECTORY}/java-package/openbci_gui_helpers/src/main/resources/ - RUNTIME_OUTPUT_DIRECTORY_RELEASE ${CMAKE_HOME_DIRECTORY}/java-package/openbci_gui_helpers/src/main/resources/ - ARCHIVE_OUTPUT_DIRECTORY_DEBUG ${CMAKE_HOME_DIRECTORY}/java-package/openbci_gui_helpers/src/main/resources/ - LIBRARY_OUTPUT_DIRECTORY_DEBUG ${CMAKE_HOME_DIRECTORY}/java-package/openbci_gui_helpers/src/main/resources/ - RUNTIME_OUTPUT_DIRECTORY_DEBUG ${CMAKE_HOME_DIRECTORY}/java-package/openbci_gui_helpers/src/main/resources/ - ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_HOME_DIRECTORY}/java-package/openbci_gui_helpers/src/main/resources/ - LIBRARY_OUTPUT_DIRECTORY ${CMAKE_HOME_DIRECTORY}/java-package/openbci_gui_helpers/src/main/resources/ - RUNTIME_OUTPUT_DIRECTORY ${CMAKE_HOME_DIRECTORY}/java-package/openbci_gui_helpers/src/main/resources/ -) - -SET (GANGLION_NATIVE_LIB "GanglionNativeScan") -set (GANGLION_NATIVE_SOURCE_LIB - ${CMAKE_HOME_DIRECTORY}/src/openbci_gui_native_helpers.cpp -) - -add_library (${GANGLION_NATIVE_LIB} SHARED ${GANGLION_NATIVE_SOURCE_LIB}) - -target_include_directories (${GANGLION_NATIVE_LIB} PUBLIC - $ - $ - $ -) - -target_link_libraries (${GANGLION_NATIVE_LIB} PRIVATE simpleble) - -set_property (TARGET ${GANGLION_NATIVE_LIB} PROPERTY POSITION_INDEPENDENT_CODE ON) - -set_target_properties (${GANGLION_NATIVE_LIB} - PROPERTIES - ARCHIVE_OUTPUT_DIRECTORY_RELEASE ${CMAKE_HOME_DIRECTORY}/java-package/openbci_gui_helpers/src/main/resources/ - LIBRARY_OUTPUT_DIRECTORY_RELEASE ${CMAKE_HOME_DIRECTORY}/java-package/openbci_gui_helpers/src/main/resources/ - RUNTIME_OUTPUT_DIRECTORY_RELEASE ${CMAKE_HOME_DIRECTORY}/java-package/openbci_gui_helpers/src/main/resources/ - ARCHIVE_OUTPUT_DIRECTORY_DEBUG ${CMAKE_HOME_DIRECTORY}/java-package/openbci_gui_helpers/src/main/resources/ - LIBRARY_OUTPUT_DIRECTORY_DEBUG ${CMAKE_HOME_DIRECTORY}/java-package/openbci_gui_helpers/src/main/resources/ - RUNTIME_OUTPUT_DIRECTORY_DEBUG ${CMAKE_HOME_DIRECTORY}/java-package/openbci_gui_helpers/src/main/resources/ - ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_HOME_DIRECTORY}/java-package/openbci_gui_helpers/src/main/resources/ - LIBRARY_OUTPUT_DIRECTORY ${CMAKE_HOME_DIRECTORY}/java-package/openbci_gui_helpers/src/main/resources/ - RUNTIME_OUTPUT_DIRECTORY ${CMAKE_HOME_DIRECTORY}/java-package/openbci_gui_helpers/src/main/resources/ -) \ No newline at end of file +add_subdirectory(3rdparty/SimpleBLE/simpleble) \ No newline at end of file diff --git a/README.md b/README.md index 0847585..22828f9 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,15 @@ # OpenBCI GUI Helpers -Helpers for [OpenBCI GUI](https://github.com/OpenBCI/OpenBCI_GUI) +Helpers for the [OpenBCI GUI](https://github.com/OpenBCI/OpenBCI_GUI) -Built using Github Actions for all OS. The .dylib files for Mac are also provided as an artifact. These files should be included in the `libraries` folder outside of the .jar file as shown below. As a result, we do not need to extract them from the .jar file on Mac. +These libraries provide utilities for native functions required by the OpenBCI GUI application. This includes support for: + +* Native BLE discovery +* BLED112 Bluetooth discovery + +# Usage + +These files should be included in the `libraries` folder outside of the .jar file as shown below. Note that the .dylib files should be included outside of the .jar file so that they do not need to be extracted on MacOS systems. When updating this library in the GUI, use the following folder structure: @@ -15,6 +22,22 @@ When updating this library in the GUI, use the following folder structure: - `libGanglionNativeScan.dylib` - `libGanglionScan.dylib` -## License: +# Building + +## Dependencies + +- [CMake](https://cmake.org/) +- [Maven](https://maven.apache.org/) + +## Build Process + +- [Run CMake](https://cmake.org/runningcmake/) using the `CMakeLists.txt` configuration at the root of the repository to build the native libraries. +- Navigate to the `java-package/openbci_gui_helpers` directory. +- Run `mvn package` + +Libraries will be built in the `compiled/` directory. +The .jar file will be built in the `java-package/openbci_gui_helpers/target` directory. + +# Examples -MIT +There are several examples that can be used to test the features supported in the project. These examples are located in the `java-package/openbci_gui_helpers/src/main/java/openbci_gui_helpers/examples` directory. \ No newline at end of file diff --git a/cmake/default.cmake b/cmake/default.cmake new file mode 100644 index 0000000..07f0692 --- /dev/null +++ b/cmake/default.cmake @@ -0,0 +1,45 @@ +set(CMAKE_CXX_STANDARD 20) +set(CMAKE_CXX_EXTENSIONS OFF) +set(CMAKE_CXX_STANDARD_REQUIRED ON) + +set(CMAKE_CXX_VISIBILITY_PRESET hidden) +set(CMAKE_C_VISIBILITY_PRESET hidden) +set(CMAKE_POSITION_INDEPENDENT_CODE ON) + +set(CMAKE_VERBOSE_MAKEFILE ON) + +if(NOT CMAKE_SIZEOF_VOID_P EQUAL 8) + set(OPENBCI_ARCHITECTURE "-32") +endif() + +function(message) + if(NOT OPENBCI_MESSAGE_QUIET) + _message(${ARGN}) + endif() +endfunction() + +if(MSVC) + add_definitions(-D_CRT_SECURE_NO_WARNINGS -D_SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING -D_CRT_NONSTDC_NO_DEPRECATE) + + # Set compiler options. + set(variables + CMAKE_C_FLAGS_DEBUG + CMAKE_C_FLAGS_MINSIZEREL + CMAKE_C_FLAGS_RELEASE + CMAKE_C_FLAGS_RELWITHDEBINFO + CMAKE_CXX_FLAGS_DEBUG + CMAKE_CXX_FLAGS_MINSIZEREL + CMAKE_CXX_FLAGS_RELEASE + CMAKE_CXX_FLAGS_RELWITHDEBINFO + ) +endif() + +if(MSVC) + set(OPENBCI_LIBRARY_EXTENSION "dll") +elseif(APPLE) + set(OPENBCI_LIBRARY_EXTENSION "dylib") +elseif(UNIX) + set(OPENBCI_LIBRARY_EXTENSION "so") +endif() + +include(FetchContent) \ No newline at end of file diff --git a/cspell.json b/cspell.json new file mode 100644 index 0000000..0b924ae --- /dev/null +++ b/cspell.json @@ -0,0 +1,39 @@ +{ + "version": "0.2", + "language": "en", + // Words to be considered correct that CSpell will not flag. + "words": [ + "gson", + "dylib", + "bglib", + "uart", + "hwaddr", + "APITYPES", + "PACKSTRUCT", + "anglion", + "lolen", + "simblee", + "openbci", + "simpleble", + "rdparty" + ], + // These words will always be flagged as incorrect. + "flagWords": [], + "ignorePaths": [ + ".vscode", + ".git", + ".github", + ".clang-format", + ".gitignore", + "cspell.json", + "build", + "compiled", + "3rdparty", + "cmake/default.cmake", + "CMakeLists.txt", + "modules/bglib/include/cmd_def.h", + "modules/bglib/src/cmd_def.cpp", + "modules/bglib/src/stubs.cpp", + "modules/bglib/src/uart.cpp" + ] +} \ No newline at end of file diff --git a/java-package/openbci_gui_helpers/pom.xml b/java-package/openbci_gui_helpers/pom.xml index dce49d7..6f9bdfd 100644 --- a/java-package/openbci_gui_helpers/pom.xml +++ b/java-package/openbci_gui_helpers/pom.xml @@ -38,13 +38,6 @@ gson 2.6.2 - - com.vmichalak - protocol.ssdp - 1.0-SNAPSHOT - system - ${project.basedir}/../../third_party/protocol.ssdp-1.0-SNAPSHOT.jar - openbci_gui_helpers diff --git a/java-package/openbci_gui_helpers/src/main/java/openbci_gui_helpers/GUIHelper.java b/java-package/openbci_gui_helpers/src/main/java/openbci_gui_helpers/GUIHelper.java index 60a31a1..98842e3 100644 --- a/java-package/openbci_gui_helpers/src/main/java/openbci_gui_helpers/GUIHelper.java +++ b/java-package/openbci_gui_helpers/src/main/java/openbci_gui_helpers/GUIHelper.java @@ -1,87 +1,71 @@ package openbci_gui_helpers; -import java.io.BufferedReader; import java.io.File; import java.io.InputStream; -import java.io.InputStreamReader; -import java.lang.reflect.Type; -import java.nio.charset.StandardCharsets; import java.nio.file.Files; -import java.nio.file.Paths; -import java.nio.file.Path; -import java.util.Map; -import java.util.stream.Collectors; +import java.util.ArrayList; import org.apache.commons.lang3.SystemUtils; import com.google.gson.Gson; -import com.google.gson.reflect.TypeToken; import com.sun.jna.Library; import com.sun.jna.Native; -public class GUIHelper -{ - private interface DllInterface extends Library - { - int scan_for_ganglions (String serial_port, int timeout_sec, byte[] output, int[] output_len); +public class GUIHelper { + + private interface DllInterface extends Library { + int scan_for_ganglions(String serial_port, int timeout_sec, byte[] output, int[] output_len); } - private interface DllNativeInterface extends Library - { - int scan_for_ganglions (int timeout_sec, byte[] output, int[] output_len); + private interface DllNativeInterface extends Library { + int scan_for_ganglions(int timeout_sec, byte[] output, int[] output_len); } private static DllInterface instance; private static DllNativeInterface instance_native; - private static final String VERSION = "2.0.1"; + private static final String VERSION = "3.0.0"; - static - { + static { System.out.println("OpenBCI_GUI_Helpers Version: " + VERSION); String lib_name = "libGanglionScan.so"; String lib_native_name = "libGanglionNativeScan.so"; - if (SystemUtils.IS_OS_WINDOWS) - { + if (SystemUtils.IS_OS_WINDOWS) { lib_name = "GanglionScan.dll"; lib_native_name = "GanglionNativeScan.dll"; - } else if (SystemUtils.IS_OS_MAC) - { + } else if (SystemUtils.IS_OS_MAC) { lib_name = "libGanglionScan.dylib"; lib_native_name = "libGanglionNativeScan.dylib"; } // need to extract libraries from jar - String lib_path = unpack_from_jar (lib_name); - String lib_native_path = unpack_from_jar (lib_native_name); + String lib_path = unpack_from_jar(lib_name); + String lib_native_path = unpack_from_jar(lib_native_name); - instance = (DllInterface) Native.load (lib_path, DllInterface.class); - instance_native = (DllNativeInterface) Native.load (lib_native_path, DllNativeInterface.class); + instance = (DllInterface) Native.load(lib_path, DllInterface.class); + instance_native = (DllNativeInterface) Native.load(lib_native_path, DllNativeInterface.class); } - private static String unpack_from_jar (String lib_name) - { + private static String unpack_from_jar(String lib_name) { File file = null; InputStream link = null; - try - { - file = new File (lib_name); - if (file.exists ()) - file.delete (); - link = (GUIHelper.class.getResourceAsStream (lib_name)); + try { + file = new File(lib_name); + if (file.exists()) + file.delete(); + link = (GUIHelper.class.getResourceAsStream(lib_name)); if (SystemUtils.IS_OS_MAC) { String jarPath = GUIHelper.class.getProtectionDomain().getCodeSource().getLocation().getPath(); File jarFile = new File(jarPath); String libPathString = jarFile.getParentFile().getAbsolutePath() + File.separator + lib_name; return libPathString; } else { - Files.copy (link, file.getAbsoluteFile ().toPath ()); + Files.copy(link, file.getAbsoluteFile().toPath()); } return file.getAbsolutePath(); - } catch (Exception io) - { - io.printStackTrace (); + } catch (Exception io) { + io.printStackTrace(); System.err.println("native library: " + lib_name + " is not found in jar file"); System.err.println("file absolute to path: " + file.getAbsoluteFile().toPath()); System.err.println("file get absolute path: " + file.getAbsolutePath()); @@ -89,40 +73,51 @@ private static String unpack_from_jar (String lib_name) } } - public static Map scan_for_ganglions (String port_name, int timeout_sec) throws GanglionError - { + public static GanglionDevice[] scan_for_ganglions(String port_name, int timeout_sec) throws GanglionError { int[] len = new int[1]; byte[] output_json = new byte[10240]; - int ec = instance.scan_for_ganglions (port_name, timeout_sec, output_json, len); - if (ec != GanglionExitCodes.STATUS_OK.get_code ()) - { - throw new GanglionError ("Error in scan for ganglions", ec); + + int ec = instance.scan_for_ganglions(port_name, timeout_sec, output_json, len); + if (ec != GanglionExitCodes.STATUS_OK.get_code()) { + throw new GanglionError("Error in scan for ganglions", ec); + } + + String json = new String(output_json, 0, len[0]); + Gson gson = new Gson(); + + GanglionDevice[] devices = gson.fromJson(json, GanglionDevice[].class); + + ArrayList uniqueDevices = new ArrayList(); + for (GanglionDevice device : devices) { + if (!uniqueDevices.stream().anyMatch(entry -> entry.mac_address.equals(device.mac_address))) { + uniqueDevices.add(device); + } } - String json = new String (output_json, 0, len[0]); - Gson gson = new Gson (); - Type type = new TypeToken> () - { - }.getType (); - Map map = gson.fromJson (json, type); - return map; + + return uniqueDevices.toArray(new GanglionDevice[uniqueDevices.size()]); } - public static Map scan_for_ganglions (int timeout_sec) throws GanglionError - { + public static GanglionDevice[] scan_for_ganglions(int timeout_sec) throws GanglionError { int[] len = new int[1]; byte[] output_json = new byte[10240]; - int ec = instance_native.scan_for_ganglions (timeout_sec, output_json, len); - if (ec != GanglionExitCodes.STATUS_OK.get_code ()) - { - throw new GanglionError ("Error in scan for ganglions", ec); + + int ec = instance_native.scan_for_ganglions(timeout_sec, output_json, len); + if (ec != GanglionExitCodes.STATUS_OK.get_code()) { + throw new GanglionError("Error in scan for ganglions", ec); } - String json = new String (output_json, 0, len[0]); - Gson gson = new Gson (); - Type type = new TypeToken> () - { - }.getType (); - Map map = gson.fromJson (json, type); - return map; - } + String json = new String(output_json, 0, len[0]); + Gson gson = new Gson(); + + GanglionDevice[] devices = gson.fromJson(json, GanglionDevice[].class); + + ArrayList uniqueDevices = new ArrayList(); + for (GanglionDevice device : devices) { + if (!uniqueDevices.stream().anyMatch(entry -> entry.mac_address.equals(device.mac_address))) { + uniqueDevices.add(device); + } + } + + return uniqueDevices.toArray(new GanglionDevice[uniqueDevices.size()]); + } } diff --git a/java-package/openbci_gui_helpers/src/main/java/openbci_gui_helpers/GanglionDevice.java b/java-package/openbci_gui_helpers/src/main/java/openbci_gui_helpers/GanglionDevice.java new file mode 100644 index 0000000..c7aeb7e --- /dev/null +++ b/java-package/openbci_gui_helpers/src/main/java/openbci_gui_helpers/GanglionDevice.java @@ -0,0 +1,7 @@ +package openbci_gui_helpers; + +public class GanglionDevice { + public int firmware_version; + public String identifier; + public String mac_address; +} \ No newline at end of file diff --git a/java-package/openbci_gui_helpers/src/main/java/openbci_gui_helpers/examples/TestDiscovery.java b/java-package/openbci_gui_helpers/src/main/java/openbci_gui_helpers/examples/TestDiscovery.java index 543b26d..e991e30 100644 --- a/java-package/openbci_gui_helpers/src/main/java/openbci_gui_helpers/examples/TestDiscovery.java +++ b/java-package/openbci_gui_helpers/src/main/java/openbci_gui_helpers/examples/TestDiscovery.java @@ -1,19 +1,16 @@ package openbci_gui_helpers.examples; -import java.util.Map; - import openbci_gui_helpers.GUIHelper; import openbci_gui_helpers.GanglionError; +import openbci_gui_helpers.GanglionDevice; -public class TestDiscovery -{ +public class TestDiscovery { - public static void main (String[] args) throws GanglionError - { - Map map = GUIHelper.scan_for_ganglions (args[0], 3); - for (Map.Entry entry : map.entrySet ()) - { - System.out.println ("Key = " + entry.getKey () + ", Value = " + entry.getValue ()); + public static void main(String[] args) throws GanglionError { + GanglionDevice[] devices = GUIHelper.scan_for_ganglions(args[0], 3); + for (GanglionDevice device : devices) { + System.out.println("Identifier = " + device.identifier + ", Mac Address = " + device.mac_address + + ", Firmware = " + device.firmware_version); } } } diff --git a/java-package/openbci_gui_helpers/src/main/java/openbci_gui_helpers/examples/TestNativeDiscovery.java b/java-package/openbci_gui_helpers/src/main/java/openbci_gui_helpers/examples/TestNativeDiscovery.java index ca8dc7f..7f987ef 100644 --- a/java-package/openbci_gui_helpers/src/main/java/openbci_gui_helpers/examples/TestNativeDiscovery.java +++ b/java-package/openbci_gui_helpers/src/main/java/openbci_gui_helpers/examples/TestNativeDiscovery.java @@ -1,20 +1,17 @@ package openbci_gui_helpers.examples; -import java.util.Map; - import openbci_gui_helpers.GUIHelper; +import openbci_gui_helpers.GanglionDevice; import openbci_gui_helpers.GanglionError; -public class TestNativeDiscovery -{ +public class TestNativeDiscovery { - public static void main (String[] args) throws GanglionError - { - Map map = GUIHelper.scan_for_ganglions (3); - for (Map.Entry entry : map.entrySet ()) - { - System.out.println ("Key = " + entry.getKey () + ", Value = " + entry.getValue ()); + public static void main(String[] args) throws GanglionError { + GanglionDevice[] devices = GUIHelper.scan_for_ganglions(3); + for (GanglionDevice device : devices) { + System.out.println("Identifier = " + device.identifier + ", Mac Address = " + device.mac_address + + ", Firmware = " + device.firmware_version); } - System.out.println ("Completed"); + System.out.println("Completed"); } } diff --git a/java-package/openbci_gui_helpers/src/main/java/openbci_gui_helpers/examples/TestWifiDiscovery.java b/java-package/openbci_gui_helpers/src/main/java/openbci_gui_helpers/examples/TestWifiDiscovery.java deleted file mode 100644 index d12c355..0000000 --- a/java-package/openbci_gui_helpers/src/main/java/openbci_gui_helpers/examples/TestWifiDiscovery.java +++ /dev/null @@ -1,30 +0,0 @@ -package openbci_gui_helpers.examples; - -import java.io.BufferedReader; -import java.io.IOException; -import java.io.InputStreamReader; -import java.net.URL; -import java.util.List; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -import openbci_gui_helpers.GanglionError; -import com.vmichalak.protocol.ssdp.Device; -import com.vmichalak.protocol.ssdp.SSDPClient; - -public class TestWifiDiscovery -{ - public static void main (String[] args) throws GanglionError, IOException - { - List devices = SSDPClient.discover (3000, "urn:schemas-upnp-org:device:Basic:1"); - System.out.println (devices.size () + " devices found"); - for (int i = 0; i < devices.size (); i++) - { - System.out.println ("Location: " + devices.get (i).getIPAddress ()); - System.out.println ("Description: " + devices.get (i).getDescriptionUrl ()); - System.out.println ("Server: " + devices.get (i).getServer ()); - System.out.println ("Service Type: " + devices.get (i).getServiceType ()); - System.out.println ("Device Name: " + devices.get (i).getName ()); - } - } -} diff --git a/modules/bglib/build.cmake b/modules/bglib/build.cmake new file mode 100644 index 0000000..015f69f --- /dev/null +++ b/modules/bglib/build.cmake @@ -0,0 +1,32 @@ +SET(GANGLION_LIB "GanglionScan") + +add_library( + ${GANGLION_LIB} SHARED + modules/common/src/serialization.cpp + modules/bglib/src/callbacks.cpp + modules/bglib/src/cmd_def.cpp + modules/bglib/src/stubs.cpp + modules/bglib/src/uart.cpp + modules/bglib/src/openbci_gui_helpers.cpp +) + +target_include_directories( + ${GANGLION_LIB} PUBLIC + 3rdparty/json + modules/bglib/include + modules/common/include +) + +set_property(TARGET ${GANGLION_LIB} PROPERTY POSITION_INDEPENDENT_CODE ON) + +set_target_properties(${GANGLION_LIB} + PROPERTIES + + ARCHIVE_OUTPUT_DIRECTORY_RELEASE ${CMAKE_HOME_DIRECTORY}/java-package/openbci_gui_helpers/src/main/resources/ + LIBRARY_OUTPUT_DIRECTORY_RELEASE ${CMAKE_HOME_DIRECTORY}/java-package/openbci_gui_helpers/src/main/resources/ + RUNTIME_OUTPUT_DIRECTORY_RELEASE ${CMAKE_HOME_DIRECTORY}/java-package/openbci_gui_helpers/src/main/resources/ + + ARCHIVE_OUTPUT_DIRECTORY_DEBUG ${CMAKE_HOME_DIRECTORY}/java-package/openbci_gui_helpers/src/main/resources/ + LIBRARY_OUTPUT_DIRECTORY_DEBUG ${CMAKE_HOME_DIRECTORY}/java-package/openbci_gui_helpers/src/main/resources/ + RUNTIME_OUTPUT_DIRECTORY_DEBUG ${CMAKE_HOME_DIRECTORY}/java-package/openbci_gui_helpers/src/main/resources/ +) \ No newline at end of file diff --git a/src/inc/apitypes.h b/modules/bglib/include/apitypes.h similarity index 100% rename from src/inc/apitypes.h rename to modules/bglib/include/apitypes.h diff --git a/src/inc/cmd_def.h b/modules/bglib/include/cmd_def.h similarity index 100% rename from src/inc/cmd_def.h rename to modules/bglib/include/cmd_def.h diff --git a/src/inc/openbci_gui_helpers.h b/modules/bglib/include/openbci_gui_helpers.h similarity index 81% rename from src/inc/openbci_gui_helpers.h rename to modules/bglib/include/openbci_gui_helpers.h index 95bd14d..1dbb079 100644 --- a/src/inc/openbci_gui_helpers.h +++ b/modules/bglib/include/openbci_gui_helpers.h @@ -1,10 +1,10 @@ #pragma once #ifdef _WIN32 -#define SHARED_EXPORT __declspec(dllexport) +#define SHARED_EXPORT __declspec (dllexport) #define CALLING_CONVENTION __cdecl #else -#define SHARED_EXPORT __attribute__((visibility("default"))) +#define SHARED_EXPORT __attribute__ ((visibility ("default"))) #define CALLING_CONVENTION #endif diff --git a/src/inc/uart.h b/modules/bglib/include/uart.h similarity index 85% rename from src/inc/uart.h rename to modules/bglib/include/uart.h index 9ac2699..1fd43c6 100644 --- a/src/inc/uart.h +++ b/modules/bglib/include/uart.h @@ -2,7 +2,7 @@ #define UART_H void uart_list_devices (); -int uart_find_serialport (char *name); +int uart_find_serial_port (char *name); int uart_open (char *port); void uart_close (); int uart_tx (int len, unsigned char *data); diff --git a/src/callbacks.cpp b/modules/bglib/src/callbacks.cpp similarity index 79% rename from src/callbacks.cpp rename to modules/bglib/src/callbacks.cpp index 85cc0ce..fb423c7 100644 --- a/src/callbacks.cpp +++ b/modules/bglib/src/callbacks.cpp @@ -1,19 +1,21 @@ #include #include -#include +#include #include #include #include #include + #include "cmd_def.h" #include "openbci_gui_helpers.h" +#include "serialization.h" namespace GanglionDetails { extern int exit_code; - extern std::map devices; + extern std::list devices; } void ble_evt_gap_scan_response (const struct ble_msg_gap_scan_response_evt_t *msg) @@ -57,7 +59,15 @@ void ble_evt_gap_scan_response (const struct ble_msg_gap_scan_response_evt_t *ms mac_addr << ":"; } } - GanglionDetails::devices[std::string (name)] = mac_addr.str (); + + uint8_t firmware = strstr (name, "anglion 1.3") == NULL ? 2 : 3; + + GanglionDevice device; + device.identifier = name; + device.mac_address = mac_addr.str (); + device.firmware_version = firmware; + + GanglionDetails::devices.push_back (device); GanglionDetails::exit_code = (int)GanglionDetails::GanglionScanExitCodes::STATUS_OK; } } diff --git a/src/cmd_def.cpp b/modules/bglib/src/cmd_def.cpp similarity index 100% rename from src/cmd_def.cpp rename to modules/bglib/src/cmd_def.cpp diff --git a/src/openbci_gui_helpers.cpp b/modules/bglib/src/openbci_gui_helpers.cpp similarity index 96% rename from src/openbci_gui_helpers.cpp rename to modules/bglib/src/openbci_gui_helpers.cpp index fbe798d..ad53df8 100644 --- a/src/openbci_gui_helpers.cpp +++ b/modules/bglib/src/openbci_gui_helpers.cpp @@ -1,12 +1,13 @@ #include #include -#include +#include #include #include #include #include "cmd_def.h" #include "openbci_gui_helpers.h" +#include "serialization.h" #include "uart.h" #ifdef _WIN32 @@ -15,14 +16,12 @@ #include #endif -#include "json.hpp" - using json = nlohmann::json; namespace GanglionDetails { int exit_code = (int)GanglionScanExitCodes::STATUS_OK; - std::map devices; + std::list devices; void output (uint8 len1, uint8 *data1, uint16 len2, uint8 *data2) { @@ -138,7 +137,7 @@ int scan_for_ganglions (char *serial_port, int timeout_sec, char *output_json, i json result (GanglionDetails::devices); std::string s = result.dump (); strcpy (output_json, s.c_str ()); - *output_len = s.length (); + *output_len = (int)s.length (); } ble_cmd_gap_end_procedure (); uart_close (); diff --git a/src/stubs.cpp b/modules/bglib/src/stubs.cpp similarity index 100% rename from src/stubs.cpp rename to modules/bglib/src/stubs.cpp diff --git a/src/uart.cpp b/modules/bglib/src/uart.cpp similarity index 99% rename from src/uart.cpp rename to modules/bglib/src/uart.cpp index 9cf03b1..e5daf50 100644 --- a/src/uart.cpp +++ b/modules/bglib/src/uart.cpp @@ -92,7 +92,7 @@ void uart_list_devices () return; } -int uart_find_serialport (char *name) +int uart_find_serial_port (char *name) { BYTE *pbuf = NULL; DWORD reqSize = 0; diff --git a/modules/common/include/serialization.h b/modules/common/include/serialization.h new file mode 100644 index 0000000..ef1345d --- /dev/null +++ b/modules/common/include/serialization.h @@ -0,0 +1,16 @@ +#pragma once + +#include "json.hpp" + +#include +#include + +typedef struct GanglionDevice +{ + std::string identifier; + std::string mac_address; + uint8_t firmware_version; +} GanglionDevice; + +void to_json (nlohmann::json &result, const GanglionDevice &device); +void from_json (const nlohmann::json &string, GanglionDevice &device); \ No newline at end of file diff --git a/modules/common/src/serialization.cpp b/modules/common/src/serialization.cpp new file mode 100644 index 0000000..e080249 --- /dev/null +++ b/modules/common/src/serialization.cpp @@ -0,0 +1,14 @@ +#include "serialization.h" + +void to_json (nlohmann::json &result, const GanglionDevice &device) +{ + result = nlohmann::json {{"identifier", device.identifier}, {"mac_address", device.mac_address}, + {"firmware_version", std::to_string (device.firmware_version)}}; +} + +void from_json (const nlohmann::json &string, GanglionDevice &device) +{ + string.at ("identifier").get_to (device.identifier); + string.at ("mac_address").get_to (device.mac_address); + string.at ("firmware_version").get_to (device.firmware_version); +} \ No newline at end of file diff --git a/modules/native-ble/build.cmake b/modules/native-ble/build.cmake new file mode 100644 index 0000000..b40dea6 --- /dev/null +++ b/modules/native-ble/build.cmake @@ -0,0 +1,34 @@ +SET(OPENBCI_GANGLION_NATIVE_LIB "GanglionNativeScan") + +add_library( + ${OPENBCI_GANGLION_NATIVE_LIB} SHARED + modules/common/src/serialization.cpp + modules/native-ble/src/openbci_gui_native_helpers.cpp +) + +target_include_directories( + ${OPENBCI_GANGLION_NATIVE_LIB} PUBLIC + modules/native-ble/include + modules/common/include + 3rdparty/json + 3rdparty/SimpleBLE/simpleble/include/simpleble +) + +target_link_libraries( + ${OPENBCI_GANGLION_NATIVE_LIB} PRIVATE + simpleble +) + +set_property(TARGET ${OPENBCI_GANGLION_NATIVE_LIB} PROPERTY POSITION_INDEPENDENT_CODE ON) + +set_target_properties(${OPENBCI_GANGLION_NATIVE_LIB} + PROPERTIES + + ARCHIVE_OUTPUT_DIRECTORY_RELEASE ${CMAKE_HOME_DIRECTORY}/java-package/openbci_gui_helpers/src/main/resources/ + LIBRARY_OUTPUT_DIRECTORY_RELEASE ${CMAKE_HOME_DIRECTORY}/java-package/openbci_gui_helpers/src/main/resources/ + RUNTIME_OUTPUT_DIRECTORY_RELEASE ${CMAKE_HOME_DIRECTORY}/java-package/openbci_gui_helpers/src/main/resources/ + + ARCHIVE_OUTPUT_DIRECTORY_DEBUG ${CMAKE_HOME_DIRECTORY}/java-package/openbci_gui_helpers/src/main/resources/ + LIBRARY_OUTPUT_DIRECTORY_DEBUG ${CMAKE_HOME_DIRECTORY}/java-package/openbci_gui_helpers/src/main/resources/ + RUNTIME_OUTPUT_DIRECTORY_DEBUG ${CMAKE_HOME_DIRECTORY}/java-package/openbci_gui_helpers/src/main/resources/ +) \ No newline at end of file diff --git a/src/inc/openbci_gui_native_helpers.h b/modules/native-ble/include/openbci_gui_native_helpers.h similarity index 91% rename from src/inc/openbci_gui_native_helpers.h rename to modules/native-ble/include/openbci_gui_native_helpers.h index 410d7a8..69ac422 100644 --- a/src/inc/openbci_gui_native_helpers.h +++ b/modules/native-ble/include/openbci_gui_native_helpers.h @@ -1,7 +1,7 @@ #pragma once #ifdef _WIN32 -#define SHARED_EXPORT __declspec(dllexport) +#define SHARED_EXPORT __declspec (dllexport) #define CALLING_CONVENTION __cdecl #else #define SHARED_EXPORT __attribute__ ((visibility ("default"))) diff --git a/modules/native-ble/src/openbci_gui_native_helpers.cpp b/modules/native-ble/src/openbci_gui_native_helpers.cpp new file mode 100644 index 0000000..196a91d --- /dev/null +++ b/modules/native-ble/src/openbci_gui_native_helpers.cpp @@ -0,0 +1,66 @@ +#include +#include +#include +#include +#include + +#include "SimpleBLE.h" +#include "openbci_gui_native_helpers.h" +#include "serialization.h" + +using json = nlohmann::json; + +#define SOFTWARE_REVISION_CHARACTERISTIC "00002a28-0000-1000-8000-00805f9b34fb" +#define DEVICE_INFORMATION_SERVICE "0000180a-0000-1000-8000-00805f9b34fb" + +int scan_for_ganglions (int timeout_sec, char *output_json, int *output_len) +{ + std::list peripherals; + auto adapter_list = SimpleBLE::Adapter::get_adapters (); + if (adapter_list.empty ()) + { + return (int)GanglionScanExitCodes::PORT_OPEN_ERROR; + } + + adapter_list[0].set_callback_on_scan_found ( + [&peripherals] (SimpleBLE::Peripheral peripheral) + { + std::string identifier = peripheral.identifier (); + + if (strncmp (identifier.c_str (), "Ganglion", 8) == 0 || + strncmp (identifier.c_str (), "Simblee", 7) == 0) + { + peripherals.push_back (peripheral); + } + }); + + adapter_list[0].scan_for (timeout_sec * 1000); + + std::list devices; + for (auto peripheral : peripherals) + { + GanglionDevice device; + device.identifier = peripheral.identifier (); + device.mac_address = peripheral.address (); + + peripheral.connect (); + + // Read the software revision characteristic to get the firmware version + SimpleBLE::ByteArray software_revision = + peripheral.read (DEVICE_INFORMATION_SERVICE, SOFTWARE_REVISION_CHARACTERISTIC); + + peripheral.disconnect (); + + // Version should be in the form x.x.x stored as ASCII values in the data buffer + device.firmware_version = (software_revision[0] == '3') ? 3 : 2; + + devices.push_back (device); + } + + json result = devices; + std::string s = result.dump (); + strcpy (output_json, s.c_str ()); + *output_len = (int)s.length (); + + return (int)GanglionScanExitCodes::STATUS_OK; +} diff --git a/src/inc/multicast_client.h b/src/inc/multicast_client.h deleted file mode 100644 index e561c81..0000000 --- a/src/inc/multicast_client.h +++ /dev/null @@ -1,51 +0,0 @@ -#pragma once - -#ifdef _WIN32 -#include -#else -#include -#include -#include -#endif - -#include -#include - - -enum class MultiCastReturnCodes -{ - STATUS_OK = 0, - WSA_STARTUP_ERROR = 1, - CREATE_SOCKET_ERROR = 2, - BIND_ERROR = 3, - PTON_ERROR = 4, - SET_OPT_ERROR = 5 -}; - -class MultiCastClient -{ - -public: - MultiCastClient (const char *port_name, int port); - ~MultiCastClient () - { - close (); - } - - int init (); - int recv (void *data, int size); - int send (void *data, int size); - void close (); - - -private: - char ip_addr[32]; - int port; -#ifdef _WIN32 - SOCKET client_socket; - struct sockaddr_in socket_addr; -#else - int client_socket; - struct sockaddr_in socket_addr; -#endif -}; diff --git a/src/openbci_gui_native_helpers.cpp b/src/openbci_gui_native_helpers.cpp deleted file mode 100644 index dbaaba2..0000000 --- a/src/openbci_gui_native_helpers.cpp +++ /dev/null @@ -1,48 +0,0 @@ -#include -#include -#include -#include -#include -#include - -#include "SimpleBLE.h" -#include "openbci_gui_native_helpers.h" - -#include "json.hpp" - -using json = nlohmann::json; - - -int scan_for_ganglions (int timeout_sec, char *output_json, int *output_len) -{ - std::map devices; - auto adapter_list = SimpleBLE::Adapter::get_adapters (); - if (adapter_list.empty ()) - { - return (int)GanglionScanExitCodes::PORT_OPEN_ERROR; - } - - adapter_list[0].set_callback_on_scan_found ( - [&devices] (SimpleBLE::Peripheral peripheral) - { - std::string identifier = peripheral.identifier (); - std::string mac_address = peripheral.address (); - if (strncmp (identifier.c_str (), "Ganglion", 8) == 0) - { - devices[identifier] = mac_address; - } - else if (strncmp (identifier.c_str (), "Simblee", 7) == 0) - { - devices[identifier] = mac_address; - } - }); - - adapter_list[0].scan_for (timeout_sec * 1000); - - json result (devices); - std::string s = result.dump (); - strcpy (output_json, s.c_str ()); - *output_len = s.length (); - - return (int)GanglionScanExitCodes::STATUS_OK; -} diff --git a/third_party/protocol.ssdp-1.0-SNAPSHOT.jar b/third_party/protocol.ssdp-1.0-SNAPSHOT.jar deleted file mode 100644 index e4939cd..0000000 Binary files a/third_party/protocol.ssdp-1.0-SNAPSHOT.jar and /dev/null differ diff --git a/third_party/ssdp-client/.gitignore b/third_party/ssdp-client/.gitignore deleted file mode 100644 index b8bb4e9..0000000 --- a/third_party/ssdp-client/.gitignore +++ /dev/null @@ -1,55 +0,0 @@ -# User-specific stuff: -.idea/* -.idea/workspace.xml -.idea/tasks.xml - -# Sensitive or high-churn files: -.idea/dataSources.ids -.idea/dataSources.xml -.idea/dataSources.local.xml -.idea/sqlDataSources.xml -.idea/dynamic.xml -.idea/uiDesigner.xml - -# Gradle: -.idea/gradle.xml -.idea/libraries - -# Mongo Explorer plugin: -.idea/mongoSettings.xml - -## File-based project format: -*.iws - -## Plugin-specific files: - -# IntelliJ -/out/ - -# mpeltonen/sbt-idea plugin -.idea_modules/ - -# JIRA plugin -atlassian-ide-plugin.xml - -# Crashlytics plugin (for Android Studio and IntelliJ) -com_crashlytics_export_strings.xml -crashlytics.properties -crashlytics-build.properties -fabric.properties - -#gradle -.gradle -/build/ - -# Ignore Gradle GUI config -gradle-app.setting - -# Cache of project -.gradletasknamecache - -# Eclipse -/.classpath -/.project -/.settings/ -/bin/ diff --git a/third_party/ssdp-client/LICENSE b/third_party/ssdp-client/LICENSE deleted file mode 100644 index c70546b..0000000 --- a/third_party/ssdp-client/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2016 Valentin Michalak - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/third_party/ssdp-client/README.md b/third_party/ssdp-client/README.md deleted file mode 100644 index 6a19b3d..0000000 --- a/third_party/ssdp-client/README.md +++ /dev/null @@ -1,33 +0,0 @@ -# MY OWN CHANGES IN README START -# I patched this project significantly to use it with WIFI Shield!!!! - -To compile it and use with OpenBCI_GUI_Helpers run: -``` -gradle build -``` -And copy generated jar from build folder to third-party folder -# MY OWN CHANGES IN README END - -# ssdp-client -Java client for discovering UPNP devices with [SSDP (Simple Service Discovery Protocol)](https://en.wikipedia.org/wiki/Simple_Service_Discovery_Protocol "SSDP Wikipedia Page") - -## How to use it ? - -For exemple, if you want to discover all SONOS devices on your network. - -_(for information, Sonos Service Type: "urn:schemas-upnp-org:device:ZonePlayer:1")_ - -```java -public static void main(String[] args) throws IOException { - List devices = SSDPClient.discover(1000, "urn:schemas-upnp-org:device:ZonePlayer:1"); - System.out.println(devices.size() + " sonos devices found"); -} -``` - -## People - -The current lead maintainer is [Valentin Michalak] (https://github.com/vmichalak) - -## Licence - -[MIT](LICENCE) \ No newline at end of file diff --git a/third_party/ssdp-client/gradle/wrapper/gradle-wrapper.jar b/third_party/ssdp-client/gradle/wrapper/gradle-wrapper.jar deleted file mode 100644 index ca78035..0000000 Binary files a/third_party/ssdp-client/gradle/wrapper/gradle-wrapper.jar and /dev/null differ diff --git a/third_party/ssdp-client/gradle/wrapper/gradle-wrapper.properties b/third_party/ssdp-client/gradle/wrapper/gradle-wrapper.properties deleted file mode 100644 index d3ca73d..0000000 --- a/third_party/ssdp-client/gradle/wrapper/gradle-wrapper.properties +++ /dev/null @@ -1,6 +0,0 @@ -#Sun Dec 25 17:30:17 CET 2016 -distributionBase=GRADLE_USER_HOME -distributionPath=wrapper/dists -zipStoreBase=GRADLE_USER_HOME -zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-3.2.1-bin.zip \ No newline at end of file diff --git a/third_party/ssdp-client/gradlew b/third_party/ssdp-client/gradlew deleted file mode 100644 index 27309d9..0000000 --- a/third_party/ssdp-client/gradlew +++ /dev/null @@ -1,164 +0,0 @@ -#!/usr/bin/env bash - -############################################################################## -## -## Gradle start up script for UN*X -## -############################################################################## - -# Attempt to set APP_HOME -# Resolve links: $0 may be a link -PRG="$0" -# Need this for relative symlinks. -while [ -h "$PRG" ] ; do - ls=`ls -ld "$PRG"` - link=`expr "$ls" : '.*-> \(.*\)$'` - if expr "$link" : '/.*' > /dev/null; then - PRG="$link" - else - PRG=`dirname "$PRG"`"/$link" - fi -done -SAVED="`pwd`" -cd "`dirname \"$PRG\"`/" >/dev/null -APP_HOME="`pwd -P`" -cd "$SAVED" >/dev/null - -APP_NAME="Gradle" -APP_BASE_NAME=`basename "$0"` - -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS="" - -# Use the maximum available, or set MAX_FD != -1 to use that value. -MAX_FD="maximum" - -warn ( ) { - echo "$*" -} - -die ( ) { - echo - echo "$*" - echo - exit 1 -} - -# OS specific support (must be 'true' or 'false'). -cygwin=false -msys=false -darwin=false -nonstop=false -case "`uname`" in - CYGWIN* ) - cygwin=true - ;; - Darwin* ) - darwin=true - ;; - MINGW* ) - msys=true - ;; - NONSTOP* ) - nonstop=true - ;; -esac - -CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar - -# Determine the Java command to use to start the JVM. -if [ -n "$JAVA_HOME" ] ; then - if [ -x "$JAVA_HOME/jre/sh/java" ] ; then - # IBM's JDK on AIX uses strange locations for the executables - JAVACMD="$JAVA_HOME/jre/sh/java" - else - JAVACMD="$JAVA_HOME/bin/java" - fi - if [ ! -x "$JAVACMD" ] ; then - die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." - fi -else - JAVACMD="java" - which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." -fi - -# Increase the maximum file descriptors if we can. -if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then - MAX_FD_LIMIT=`ulimit -H -n` - if [ $? -eq 0 ] ; then - if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then - MAX_FD="$MAX_FD_LIMIT" - fi - ulimit -n $MAX_FD - if [ $? -ne 0 ] ; then - warn "Could not set maximum file descriptor limit: $MAX_FD" - fi - else - warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" - fi -fi - -# For Darwin, add options to specify how the application appears in the dock -if $darwin; then - GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" -fi - -# For Cygwin, switch paths to Windows format before running java -if $cygwin ; then - APP_HOME=`cygpath --path --mixed "$APP_HOME"` - CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` - JAVACMD=`cygpath --unix "$JAVACMD"` - - # We build the pattern for arguments to be converted via cygpath - ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` - SEP="" - for dir in $ROOTDIRSRAW ; do - ROOTDIRS="$ROOTDIRS$SEP$dir" - SEP="|" - done - OURCYGPATTERN="(^($ROOTDIRS))" - # Add a user-defined pattern to the cygpath arguments - if [ "$GRADLE_CYGPATTERN" != "" ] ; then - OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" - fi - # Now convert the arguments - kludge to limit ourselves to /bin/sh - i=0 - for arg in "$@" ; do - CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` - CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option - - if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition - eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` - else - eval `echo args$i`="\"$arg\"" - fi - i=$((i+1)) - done - case $i in - (0) set -- ;; - (1) set -- "$args0" ;; - (2) set -- "$args0" "$args1" ;; - (3) set -- "$args0" "$args1" "$args2" ;; - (4) set -- "$args0" "$args1" "$args2" "$args3" ;; - (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; - (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; - (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; - (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; - (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; - esac -fi - -# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules -function splitJvmOpts() { - JVM_OPTS=("$@") -} -eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS -JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" - -exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" diff --git a/third_party/ssdp-client/gradlew.bat b/third_party/ssdp-client/gradlew.bat deleted file mode 100644 index 832fdb6..0000000 --- a/third_party/ssdp-client/gradlew.bat +++ /dev/null @@ -1,90 +0,0 @@ -@if "%DEBUG%" == "" @echo off -@rem ########################################################################## -@rem -@rem Gradle startup script for Windows -@rem -@rem ########################################################################## - -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal - -set DIRNAME=%~dp0 -if "%DIRNAME%" == "" set DIRNAME=. -set APP_BASE_NAME=%~n0 -set APP_HOME=%DIRNAME% - -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS= - -@rem Find java.exe -if defined JAVA_HOME goto findJavaFromJavaHome - -set JAVA_EXE=java.exe -%JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto init - -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:findJavaFromJavaHome -set JAVA_HOME=%JAVA_HOME:"=% -set JAVA_EXE=%JAVA_HOME%/bin/java.exe - -if exist "%JAVA_EXE%" goto init - -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:init -@rem Get command-line arguments, handling Windows variants - -if not "%OS%" == "Windows_NT" goto win9xME_args -if "%@eval[2+2]" == "4" goto 4NT_args - -:win9xME_args -@rem Slurp the command line arguments. -set CMD_LINE_ARGS= -set _SKIP=2 - -:win9xME_args_slurp -if "x%~1" == "x" goto execute - -set CMD_LINE_ARGS=%* -goto execute - -:4NT_args -@rem Get arguments from the 4NT Shell from JP Software -set CMD_LINE_ARGS=%$ - -:execute -@rem Setup the command line - -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar - -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% - -:end -@rem End local scope for the variables with windows NT shell -if "%ERRORLEVEL%"=="0" goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 -exit /b 1 - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega diff --git a/third_party/ssdp-client/settings.gradle b/third_party/ssdp-client/settings.gradle deleted file mode 100644 index 1f6fcb6..0000000 --- a/third_party/ssdp-client/settings.gradle +++ /dev/null @@ -1 +0,0 @@ -rootProject.name = 'protocol.ssdp' \ No newline at end of file diff --git a/third_party/ssdp-client/src/main/java/com/vmichalak/protocol/ssdp/Device.java b/third_party/ssdp-client/src/main/java/com/vmichalak/protocol/ssdp/Device.java deleted file mode 100644 index 673f645..0000000 --- a/third_party/ssdp-client/src/main/java/com/vmichalak/protocol/ssdp/Device.java +++ /dev/null @@ -1,136 +0,0 @@ -package com.vmichalak.protocol.ssdp; - -import java.net.DatagramPacket; -import java.util.HashMap; -import java.util.regex.Matcher; -import java.util.regex.Pattern; -import java.io.BufferedReader; -import java.io.IOException; -import java.io.InputStreamReader; -import java.net.URL; - -/** - * Represent a Device discovered by SSDP. - */ -public class Device { - private final String ip; - private final String descriptionUrl; - private final String server; - private final String serviceType; - private final String usn; - private final String name; - - public Device(String ip, String descriptionUrl, String server, String serviceType, String usn, String name) { - this.ip = ip; - this.descriptionUrl = descriptionUrl; - this.server = server; - this.serviceType = serviceType; - this.usn = usn; - this.name = name; - } - - /** - * Instantiate a new Device Object from a SSDP discovery response packet. - * @param ssdpResult SSDP Discovery Response packet. - * @return Device - */ - public static Device parse(DatagramPacket ssdpResult) throws IOException { - HashMap headers = new HashMap(); - Pattern pattern = Pattern.compile("(.*): (.*)"); - - String[] lines = new String(ssdpResult.getData()).split("\r\n"); - - for (String line : lines) { - Matcher matcher = pattern.matcher(line); - if(matcher.matches()) { - headers.put(matcher.group(1).toUpperCase(), matcher.group(2)); - } - } - - String device_name = ""; - URL url = new URL (headers.get("LOCATION")); - BufferedReader read = new BufferedReader (new InputStreamReader (url.openStream ())); - StringBuilder sb = new StringBuilder (); - String inline = ""; - while ((inline = read.readLine ()) != null) - { - sb.append (inline); - } - String input = sb.toString (); - Pattern p = Pattern.compile ("(.*)"); - Matcher matcher = p.matcher (input); - if (matcher.find ()) - { - device_name = matcher.group(1); - } - - return new Device( - ssdpResult.getAddress().getHostAddress(), - headers.get("LOCATION"), - headers.get("SERVER"), - headers.get("ST"), - headers.get("USN"), - device_name); - } - - public String getIPAddress() { - return ip; - } - - public String getDescriptionUrl() { - return descriptionUrl; - } - - public String getServer() { - return server; - } - - public String getServiceType() { - return serviceType; - } - - public String getUSN() { - return usn; - } - - public String getName() { - return name; - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - - Device device = (Device) o; - - if (ip != null ? !ip.equals(device.ip) : device.ip != null) return false; - if (descriptionUrl != null ? !descriptionUrl.equals(device.descriptionUrl) : device.descriptionUrl != null) - return false; - if (server != null ? !server.equals(device.server) : device.server != null) return false; - if (serviceType != null ? !serviceType.equals(device.serviceType) : device.serviceType != null) return false; - return usn != null ? usn.equals(device.usn) : device.usn == null; - - } - - @Override - public int hashCode() { - int result = ip != null ? ip.hashCode() : 0; - result = 31 * result + (descriptionUrl != null ? descriptionUrl.hashCode() : 0); - result = 31 * result + (server != null ? server.hashCode() : 0); - result = 31 * result + (serviceType != null ? serviceType.hashCode() : 0); - result = 31 * result + (usn != null ? usn.hashCode() : 0); - return result; - } - - @Override - public String toString() { - return "Device{" + - "ip='" + ip + '\'' + - ", descriptionUrl='" + descriptionUrl + '\'' + - ", server='" + server + '\'' + - ", serviceType='" + serviceType + '\'' + - ", usn='" + usn + '\'' + - '}'; - } -} diff --git a/third_party/ssdp-client/src/main/java/com/vmichalak/protocol/ssdp/SSDPClient.java b/third_party/ssdp-client/src/main/java/com/vmichalak/protocol/ssdp/SSDPClient.java deleted file mode 100644 index 14d338a..0000000 --- a/third_party/ssdp-client/src/main/java/com/vmichalak/protocol/ssdp/SSDPClient.java +++ /dev/null @@ -1,60 +0,0 @@ -package com.vmichalak.protocol.ssdp; - -import java.io.IOException; -import java.net.DatagramPacket; -import java.net.DatagramSocket; -import java.net.InetAddress; -import java.net.SocketTimeoutException; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; - -/** - * Client for discovering UPNP devices with SSDP (Simple Service Discovery Protocol). - */ -public class SSDPClient { - /** - * Discover any UPNP device using SSDP (Simple Service Discovery Protocol). - * @param timeout in milliseconds - * @param searchTarget if null it use "ssdp:all" - * @return List of devices discovered - * @throws IOException - * @see SSDP Wikipedia Page - */ - public static List discover(int timeout, String searchTarget) throws IOException { - ArrayList devices = new ArrayList(); - byte[] sendData; - byte[] receiveData = new byte[250]; - - /* Create the search request */ - StringBuilder msearch = new StringBuilder("M-SEARCH * HTTP/1.1\r\nHost: 239.255.255.250:1900\r\nMAN: ssdp:discover\r\n"); - msearch.append("ST: ").append(searchTarget).append("\r\n"); - msearch.append("MX: 3\r\n"); - msearch.append("\r\n"); - msearch.append("\r\n"); - - /* Send the request */ - sendData = msearch.toString().getBytes(); - DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, InetAddress.getByName("239.255.255.250"), 1900); - DatagramSocket clientSocket = new DatagramSocket(); - clientSocket.setSoTimeout(timeout); - clientSocket.send(sendPacket); - - /* Receive all responses */ - while (true) { - try { - DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length); - clientSocket.receive(receivePacket); - if (searchTarget == null || new String(receivePacket.getData()).contains(searchTarget)) { - devices.add(Device.parse(receivePacket)); - } - } - catch (SocketTimeoutException e) { - break; - } - } - - clientSocket.close(); - return Collections.unmodifiableList(devices); - } -} diff --git a/tools/github-release.exe b/tools/github-release.exe deleted file mode 100644 index 7d33f61..0000000 Binary files a/tools/github-release.exe and /dev/null differ