diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..5416d63 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,51 @@ +cmake_minimum_required(VERSION 3.13) + +if(ESP_PLATFORM) + # Build LoRaSerialization as an ESP-IDF component + # required because ESP-IDF runs cmake in script mode + # and needs idf_component_register() + file(GLOB_RECURSE LORA_SERIALIZATION_ESP_SOURCES + "src/*.*" + ) + + idf_component_register( + SRCS ${LORA_SERIALIZATION_ESP_SOURCES} + INCLUDE_DIRS . src + ) + + return() +endif() + +if(CMAKE_SCRIPT_MODE_FILE) + message(FATAL_ERROR "Attempted to build LoRaSerialization in script mode") +endif() + +project(radiolib) + +file(GLOB_RECURSE LORA_SERIALIZATION_SOURCES + "src/*.cpp" +) + +add_library(LoRaSerialization ${LORA_SERIALIZATION_SOURCES}) + +target_include_directories(LoRaSerialization + PUBLIC $ + $) + +# use c++20 standard +set_property(TARGET LoRaSerialization PROPERTY CXX_STANDARD 20) + +# enable most warnings +target_compile_options(LoRaSerialization PRIVATE -Wall -Wextra) + +include(GNUInstallDirs) + +install(TARGETS LoRaSerialization + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} +) + +install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/src/ + DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/LoRaSerialization + FILES_MATCHING PATTERN "*.h" +) diff --git a/README.md b/README.md index f74eaf3..805a207 100644 --- a/README.md +++ b/README.md @@ -368,3 +368,23 @@ The decode method already does most of the necessary transformations, so in most * Check the coverage (JavaScript) via `yarn coverage` (see `coverage/lcov-report`) The CI will kick off once you create a pull request automatically. + +# Installation + +## ESP-IDF + +Add the `lora-serialization` dependency to the `main/idf_component.yml` file in your ESP-IDF project: + +``` +dependencies: + lora-serialization: + git: https://github.com/thesolarnomad/lora-serialization.git +``` + +As well as to the `main/CMakeLists.txt` + +``` +idf_component_register( ... + REQUIRES .... lora-serialization + ) +``` diff --git a/idf_component.yml b/idf_component.yml new file mode 100644 index 0000000..77dd0bc --- /dev/null +++ b/idf_component.yml @@ -0,0 +1,11 @@ +dependencies: + idf: '>=4.1' +description: LoRaWAN serialization/deserialization library for The Things Network +license: MIT +repository: https://github.com/thesolarnomad/lora-serialization.git +tags: +- LoRaWAN +- encoding +- serialization +- deserialization +version: 3.2.1 diff --git a/src/LoraMessage.cpp b/src/LoraMessage.cpp index a70e614..9e3d056 100644 --- a/src/LoraMessage.cpp +++ b/src/LoraMessage.cpp @@ -1,6 +1,9 @@ #if ARDUINO >= 100 #include "Arduino.h" #endif +#ifdef ESP_PLATFORM + #include +#endif #include #include "LoraMessage.h" #include "LoraEncoder.h"