From b2336b89f0ed9376bcc6edb5e8d5e03d654cbf5e Mon Sep 17 00:00:00 2001 From: ronanj Date: Sat, 5 Oct 2024 10:49:55 +0200 Subject: [PATCH 1/2] Add support for ESP-IDF component --- CMakeLists.txt | 51 +++++++++++++++++++++++++++++++++++++++++++++ idf_component.yml | 11 ++++++++++ src/LoraMessage.cpp | 3 +++ 3 files changed, 65 insertions(+) create mode 100644 CMakeLists.txt create mode 100644 idf_component.yml 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/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" From ef4f6f7ad79fc5965a97f375f82b947d5895e1d6 Mon Sep 17 00:00:00 2001 From: ronanj Date: Sat, 5 Oct 2024 11:13:33 +0200 Subject: [PATCH 2/2] Add support for ESP-IDF component --- README.md | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) 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 + ) +```