Skip to content

Commit

Permalink
ESP-IDF CMakeLists (#800)
Browse files Browse the repository at this point in the history
* CMake build.

* Fix file extension.

* Cleanup CMakeLists.

* Fix compiler warning (redundant move in return statement).

* Add readme instructions.

* Remove extra newline.

* Cleanup target compile options with comments.

* Add BLE files to the build.

* Apply review comments.

* Add idf_component.yml file.

* Remove "root" marker from the file system path.

* Remove idf_component.yml
  • Loading branch information
bakerstu authored Nov 1, 2024
1 parent eb8ed8b commit 36833d8
Show file tree
Hide file tree
Showing 12 changed files with 190 additions and 5 deletions.
166 changes: 166 additions & 0 deletions etc/esp-idf/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,166 @@
file(REAL_PATH ${COMPONENT_DIR} OPENMRNESPIDFPATH)
set(OPENMRNPATH ${OPENMRNESPIDFPATH}/../..)

set(SRCS
${OPENMRNPATH}/src/ble/Advertisement.cxx
${OPENMRNPATH}/src/ble/Defs.cxx

${OPENMRNPATH}/src/dcc/dcc_constants.cxx
${OPENMRNPATH}/src/dcc/DccDebug.cxx
${OPENMRNPATH}/src/dcc/Defs.cxx
${OPENMRNPATH}/src/dcc/LocalTrackIf.cxx
${OPENMRNPATH}/src/dcc/Loco.cxx
${OPENMRNPATH}/src/dcc/Packet.cxx
${OPENMRNPATH}/src/dcc/RailcomBroadcastDecoder.cxx
${OPENMRNPATH}/src/dcc/RailCom.cxx
${OPENMRNPATH}/src/dcc/RailcomDebug.cxx
${OPENMRNPATH}/src/dcc/SimpleUpdateLoop.cxx
${OPENMRNPATH}/src/dcc/UpdateLoop.cxx

${OPENMRNPATH}/src/executor/AsyncNotifiableBlock.cxx
${OPENMRNPATH}/src/executor/Executor.cxx
${OPENMRNPATH}/src/executor/Notifiable.cxx
${OPENMRNPATH}/src/executor/Service.cxx
${OPENMRNPATH}/src/executor/StateFlow.cxx
${OPENMRNPATH}/src/executor/Timer.cxx

${OPENMRNPATH}/src/freertos_drivers/esp32/Esp32HardwareI2C.cxx
${OPENMRNPATH}/src/freertos_drivers/esp32/Esp32HardwareTwai.cxx
${OPENMRNPATH}/src/freertos_drivers/esp32/Esp32Ledc.cxx
${OPENMRNPATH}/src/freertos_drivers/esp32/Esp32SocInfo.cxx
${OPENMRNPATH}/src/freertos_drivers/esp32/Esp32WiFiManager.cxx

${OPENMRNPATH}/src/openlcb/AliasAllocator.cxx
${OPENMRNPATH}/src/openlcb/AliasCache.cxx
${OPENMRNPATH}/src/openlcb/BLEAdvertisement.cxx
${OPENMRNPATH}/src/openlcb/BLEService.cxx
${OPENMRNPATH}/src/openlcb/BroadcastTime.cxx
${OPENMRNPATH}/src/openlcb/BroadcastTimeClient.cxx
${OPENMRNPATH}/src/openlcb/BroadcastTimeDefs.cxx
${OPENMRNPATH}/src/openlcb/BroadcastTimeServer.cxx
${OPENMRNPATH}/src/openlcb/BulkAliasAllocator.cxx
${OPENMRNPATH}/src/openlcb/CanDefs.cxx
${OPENMRNPATH}/src/openlcb/ConfigEntry.cxx
${OPENMRNPATH}/src/openlcb/ConfigUpdateFlow.cxx
${OPENMRNPATH}/src/openlcb/Datagram.cxx
${OPENMRNPATH}/src/openlcb/DatagramCan.cxx
${OPENMRNPATH}/src/openlcb/DatagramTcp.cxx
${OPENMRNPATH}/src/openlcb/DccAccyProducer.cxx
${OPENMRNPATH}/src/openlcb/DefaultNode.cxx
${OPENMRNPATH}/src/openlcb/DefaultCdi.cxx
${OPENMRNPATH}/src/openlcb/EventHandler.cxx
${OPENMRNPATH}/src/openlcb/EventHandlerContainer.cxx
${OPENMRNPATH}/src/openlcb/EventHandlerTemplates.cxx
${OPENMRNPATH}/src/openlcb/EventService.cxx
${OPENMRNPATH}/src/openlcb/If.cxx
${OPENMRNPATH}/src/openlcb/IfCan.cxx
${OPENMRNPATH}/src/openlcb/IfImpl.cxx
${OPENMRNPATH}/src/openlcb/IfTcp.cxx
${OPENMRNPATH}/src/openlcb/MemoryConfig.cxx
${OPENMRNPATH}/src/openlcb/nmranet_constants.cxx
${OPENMRNPATH}/src/openlcb/Node.cxx
${OPENMRNPATH}/src/openlcb/NodeBrowser.cxx
${OPENMRNPATH}/src/openlcb/NodeInitializeFlow.cxx
${OPENMRNPATH}/src/openlcb/NonAuthoritativeEventProducer.cxx
${OPENMRNPATH}/src/openlcb/PIPClient.cxx
${OPENMRNPATH}/src/openlcb/RoutingLogic.cxx
${OPENMRNPATH}/src/openlcb/SimpleNodeInfo.cxx
${OPENMRNPATH}/src/openlcb/SimpleNodeInfoMockUserFile.cxx
${OPENMRNPATH}/src/openlcb/SimpleNodeInfoResponse.cxx
${OPENMRNPATH}/src/openlcb/SimpleStack.cxx
${OPENMRNPATH}/src/openlcb/StreamReceiver.cxx
${OPENMRNPATH}/src/openlcb/StreamTransport.cxx
${OPENMRNPATH}/src/openlcb/TcpDefs.cxx
${OPENMRNPATH}/src/openlcb/TractionCvSpace.cxx
${OPENMRNPATH}/src/openlcb/TractionDefs.cxx
${OPENMRNPATH}/src/openlcb/TractionProxy.cxx
${OPENMRNPATH}/src/openlcb/TractionTestTrain.cxx
${OPENMRNPATH}/src/openlcb/TractionThrottle.cxx
${OPENMRNPATH}/src/openlcb/TractionTrain.cxx
${OPENMRNPATH}/src/openlcb/Velocity.cxx
${OPENMRNPATH}/src/openlcb/WriteHelper.cxx


${OPENMRNPATH}/src/os/FakeClock.cxx
${OPENMRNPATH}/src/os/logging_malloc.cxx
${OPENMRNPATH}/src/os/MDNS.cxx
${OPENMRNPATH}/src/os/os.c
${OPENMRNPATH}/src/os/OSImpl.cxx
${OPENMRNPATH}/src/os/OSSelectWakeup.cxx
${OPENMRNPATH}/src/os/stack_malloc.c
${OPENMRNPATH}/src/os/TempFile.cxx
${OPENMRNPATH}/src/os/watchdog.c

${OPENMRNPATH}/src/utils/Base64.cxx
${OPENMRNPATH}/src/utils/Blinker.cxx
${OPENMRNPATH}/src/utils/Buffer.cxx
${OPENMRNPATH}/src/utils/CanIf.cxx
${OPENMRNPATH}/src/utils/ClientConnection.cxx
${OPENMRNPATH}/src/utils/ConfigUpdateListener.cxx
${OPENMRNPATH}/src/utils/constants.cxx
${OPENMRNPATH}/src/utils/Crc.cxx
${OPENMRNPATH}/src/utils/DirectHub.cxx
${OPENMRNPATH}/src/utils/DirectHubGc.cxx
${OPENMRNPATH}/src/utils/DirectHubLegacy.cxx
${OPENMRNPATH}/src/utils/errno_exit.c
${OPENMRNPATH}/src/utils/FdUtils.cxx
${OPENMRNPATH}/src/utils/FileUtils.cxx
${OPENMRNPATH}/src/utils/format_utils.cxx
${OPENMRNPATH}/src/utils/ForwardAllocator.cxx
${OPENMRNPATH}/src/utils/GcStreamParser.cxx
${OPENMRNPATH}/src/utils/GcTcpHub.cxx
${OPENMRNPATH}/src/utils/gc_format.cxx
${OPENMRNPATH}/src/utils/GridConnect.cxx
${OPENMRNPATH}/src/utils/GridConnectHub.cxx
${OPENMRNPATH}/src/utils/HubDevice.cxx
${OPENMRNPATH}/src/utils/HubDeviceSelect.cxx
${OPENMRNPATH}/src/utils/ieeehalfprecision.c
${OPENMRNPATH}/src/utils/JSHubPort.cxx
${OPENMRNPATH}/src/utils/logging.cxx
${OPENMRNPATH}/src/utils/Queue.cxx
${OPENMRNPATH}/src/utils/ReflashBootloader.cxx
${OPENMRNPATH}/src/utils/ServiceLocator.cxx
${OPENMRNPATH}/src/utils/SocketCan.cxx
${OPENMRNPATH}/src/utils/SocketClient.cxx
${OPENMRNPATH}/src/utils/socket_listener.cxx
${OPENMRNPATH}/src/utils/Stats.cxx
${OPENMRNPATH}/src/utils/StringPrintf.cxx
)

set(INCLUDE_DIRS
${OPENMRNPATH}/src
${OPENMRNPATH}/include/esp-idf
${OPENMRNPATH}/include
)

set(IDF_DEPS
app_update
bootloader_support
bt
driver
esp_adc
esp_app_format
esp_system
esp_wifi
espcoredump
hal
heap
mdns
pthread
vfs)

idf_component_register(SRCS "${SRCS}"
INCLUDE_DIRS "${INCLUDE_DIRS}"
REQUIRES "${IDF_DEPS}")

###############################################################################
# Warn all and make all warnings into errors in OpenMRN
###############################################################################
target_compile_options(${COMPONENT_LIB} PRIVATE -Wall)
target_compile_options(${COMPONENT_LIB} PRIVATE -Werror=all)
target_compile_options(${COMPONENT_LIB} PRIVATE -Wextra)

###############################################################################
# Suppress compilation warnings in OpenMRN
###############################################################################
target_compile_options(${COMPONENT_LIB} PRIVATE $<$<COMPILE_LANGUAGE:CXX>:-Wno-volatile>)
7 changes: 7 additions & 0 deletions etc/esp-idf/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# ESP-IDF Build Instructions
The ESP-IDF has its own CMake based build environment for application developers. Using the standard ESP-IDF application build environment, The openmrn/etc/esp-idf directory can be linked into the ESP application "components" directory.
```
cd <application path>/components
ln -s <openmrn path>/etc/esp-idf/ openmrn
```
This will result in openmrn being compiled as a registered idf component with the name "openmrn".
1 change: 1 addition & 0 deletions include/esp-idf/CDIXMLGenerator.hxx
1 change: 1 addition & 0 deletions include/esp-idf/can_ioctl.h
1 change: 1 addition & 0 deletions include/esp-idf/freertos_includes.h
1 change: 1 addition & 0 deletions include/esp-idf/ifaddrs.h
1 change: 1 addition & 0 deletions include/esp-idf/stropts.h
9 changes: 8 additions & 1 deletion src/freertos_drivers/esp32/Esp32Gpio.hxx
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@
#ifndef _DRIVERS_ESP32GPIO_HXX_
#define _DRIVERS_ESP32GPIO_HXX_

#include "freertos_drivers/arduino/GpioWrapper.hxx"
#include "freertos_drivers/common/GpioWrapper.hxx"
#include "freertos_drivers/esp32/Esp32AdcOneShot.hxx"
#include "os/Gpio.hxx"
#include "utils/logging.h"
Expand Down Expand Up @@ -365,6 +365,13 @@ public:
hw_init();
}

/// Get the current pin state.
/// @return true if the pin input is seeing HIGH.
static bool get()
{
return instance()->read();
}

/// @return static Gpio object instance that controls this output pin.
static constexpr const Gpio *instance()
{
Expand Down
2 changes: 1 addition & 1 deletion src/freertos_drivers/esp32/Esp32HardwareTwai.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@
#include "can_frame.h"
#include "can_ioctl.h"
#include "executor/Notifiable.hxx"
#include "freertos_drivers/arduino/DeviceBuffer.hxx"
#include "freertos_drivers/common/DeviceBuffer.hxx"
#include "freertos_drivers/esp32/Esp32HardwareTwai.hxx"
#include "utils/Atomic.hxx"
#include "utils/logging.h"
Expand Down
2 changes: 1 addition & 1 deletion src/freertos_drivers/esp32/Esp32Ledc.hxx
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@
#ifndef _DRIVERS_ESP32LEDC_HXX_
#define _DRIVERS_ESP32LEDC_HXX_

#include "freertos_drivers/arduino/PWM.hxx"
#include "freertos_drivers/common/PWM.hxx"
#include "utils/logging.h"
#include "utils/macros.h"
#include "utils/Uninitialized.hxx"
Expand Down
4 changes: 2 additions & 2 deletions src/utils/SocketClient.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -232,7 +232,7 @@ std::unique_ptr<SocketClientParams> SocketClientParams::from_static(
std::unique_ptr<DefaultSocketClientParams> p(new DefaultSocketClientParams);
p->staticHost_ = std::move(hostname);
p->staticPort_ = port;
return std::move(p);
return p;
}

std::unique_ptr<SocketClientParams> SocketClientParams::from_static_and_mdns(
Expand All @@ -242,7 +242,7 @@ std::unique_ptr<SocketClientParams> SocketClientParams::from_static_and_mdns(
p->staticHost_ = std::move(hostname);
p->staticPort_ = port;
p->mdnsService_ = std::move(mdns_service);
return std::move(p);
return p;
}

#endif // OPENMRN_FEATURE_BSD_SOCKETS

0 comments on commit 36833d8

Please sign in to comment.