diff --git a/CMakeLists.txt b/CMakeLists.txt index 05c3f0aa..153dcf28 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -5,69 +5,73 @@ project(RocketCode2020 C CXX) cmake_host_system_information(RESULT _memfree QUERY AVAILABLE_PHYSICAL_MEMORY) set_property(GLOBAL PROPERTY JOB_POOLS four_jobs=4) if (_memfree LESS 1000) - set(CMAKE_JOB_POOL_COMPILE four_jobs) -endif() + set(CMAKE_JOB_POOL_COMPILE four_jobs) +endif () add_subdirectory(./libraries) +if (DEFINED ENV{DESKTOP_COMPAT} OR DESKTOP_COMPAT) + add_compile_definitions(DESKTOP_COMPAT=$ENV{DESKTOP_COMPAT}) +endif () + if (DEFINED ENV{HOTFIRE_TEST} OR HOTFIRE_TEST) - add_compile_definitions(HOTFIRE_TEST=$ENV{HOTFIRE_TEST}) -endif() + add_compile_definitions(HOTFIRE_TEST=$ENV{HOTFIRE_TEST}) +endif () if (DEFINED ENV{USE_LOGGER} OR USE_LOGGER) - add_compile_definitions(USE_LOGGER=$ENV{USE_LOGGER}) -endif() + add_compile_definitions(USE_LOGGER=$ENV{USE_LOGGER}) +endif () if (DEFINED ENV{USE_SOCKET_CLIENT} OR USE_SOCKET_CLIENT) - add_compile_definitions(USE_SOCKET_CLIENT=$ENV{USE_SOCKET_CLIENT}) -endif() + add_compile_definitions(USE_SOCKET_CLIENT=$ENV{USE_SOCKET_CLIENT}) +endif () if (DEFINED ENV{USE_INPUT} OR USE_INPUT) - add_compile_definitions(USE_INPUT=$ENV{USE_INPUT}) -endif() + add_compile_definitions(USE_INPUT=$ENV{USE_INPUT}) +endif () if (DEFINED ENV{SKIP_INIT} OR SKIP_INIT) - add_compile_definitions(SKIP_INIT=$ENV{SKIP_INIT}) -endif() + add_compile_definitions(SKIP_INIT=$ENV{SKIP_INIT}) +endif () if (DEFINED ENV{TESTING} OR TESTING) - add_compile_definitions(TESTING=$ENV{TESTING}) -endif() + add_compile_definitions(TESTING=$ENV{TESTING}) +endif () # Sensors if (DEFINED ENV{USE_SBG} OR USE_SBG) - add_compile_definitions(USE_SBG=$ENV{USE_SBG}) -endif() + add_compile_definitions(USE_SBG=$ENV{USE_SBG}) +endif () if (DEFINED ENV{USE_RADIO} OR USE_RADIO) - add_compile_definitions(USE_RADIO=$ENV{USE_RADIO}) -endif() + add_compile_definitions(USE_RADIO=$ENV{USE_RADIO}) +endif () if (DEFINED ENV{USE_WIRING_Pi} OR USE_WIRING_Pi) - add_compile_definitions(USE_WIRING_Pi=$ENV{USE_WIRING_Pi}) -endif() + add_compile_definitions(USE_WIRING_Pi=$ENV{USE_WIRING_Pi}) +endif () if (DEFINED ENV{USE_GPIO} OR USE_GPIO) - add_compile_definitions(USE_GPIO=$ENV{USE_GPIO}) -endif() + add_compile_definitions(USE_GPIO=$ENV{USE_GPIO}) +endif () if (DEFINED ENV{USE_ARDUINO_PROXY} OR USE_ARDUINO_PROXY) - add_compile_definitions(USE_ARDUINO_PROXY=$ENV{USE_ARDUINO_PROXY}) -endif() + add_compile_definitions(USE_ARDUINO_PROXY=$ENV{USE_ARDUINO_PROXY}) +endif () # --------------- # Main executable # --------------- -find_package (Threads) +find_package(Threads) if (DEFINED ENV{SERVO_CONTROL} OR SERVO_CONTROL) - file(GLOB_RECURSE MAIN_CONFIG_SRC ${PROJECT_SOURCE_DIR}/projects/ServoControl/*.cpp) + file(GLOB_RECURSE MAIN_CONFIG_SRC ${PROJECT_SOURCE_DIR}/projects/ServoControl/*.cpp) elseif (DEFINED ENV{HOTFIRE_TEST} OR HOTFIRE_TEST) - file(GLOB_RECURSE MAIN_CONFIG_SRC ${PROJECT_SOURCE_DIR}/projects/HotFire/*.cpp) -else() - file(GLOB_RECURSE MAIN_CONFIG_SRC ${PROJECT_SOURCE_DIR}/projects/OctoberSky1/*.cpp) -endif() + file(GLOB_RECURSE MAIN_CONFIG_SRC ${PROJECT_SOURCE_DIR}/projects/HotFire/*.cpp) +else () + file(GLOB_RECURSE MAIN_CONFIG_SRC ${PROJECT_SOURCE_DIR}/projects/OctoberSky1/*.cpp) +endif () file(GLOB_RECURSE SRC_MAIN ${PROJECT_SOURCE_DIR}/src/*.cpp) @@ -78,21 +82,21 @@ target_include_directories(MainLoopLib PUBLIC ./src/) target_precompile_headers(MainLoopLib PUBLIC ${PROJECT_SOURCE_DIR}/src/common/pch.h) if (DEFINED ENV{SERVO_CONTROL} OR SERVO_CONTROL) - target_include_directories(MainLoopLib PUBLIC - ./projects/ServoControl/ - ) - target_include_directories(MainLoopLib PUBLIC - ./projects/HotFire/ - ) + target_include_directories(MainLoopLib PUBLIC + ./projects/ServoControl/ + ) + target_include_directories(MainLoopLib PUBLIC + ./projects/HotFire/ + ) elseif (DEFINED ENV{HOTFIRE_TEST} OR HOTFIRE_TEST) - target_include_directories(MainLoopLib PUBLIC - ./projects/HotFire/ - ) -else() - target_include_directories(MainLoopLib PUBLIC - ./projects/OctoberSky1/ - ) -endif() + target_include_directories(MainLoopLib PUBLIC + ./projects/HotFire/ + ) +else () + target_include_directories(MainLoopLib PUBLIC + ./projects/OctoberSky1/ + ) +endif () target_link_libraries(MainLoopLib sbgECom) add_dependencies(MainLoopLib sbgECom) @@ -100,21 +104,21 @@ add_dependencies(MainLoopLib sbgECom) target_link_libraries(MainLoopLib WiringPi) add_dependencies(MainLoopLib WiringPi) -if(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "arm") - - target_include_directories(MainLoopLib PUBLIC "$ENV{BOOST_DIRECTORY}") - target_link_directories(MainLoopLib PUBLIC "$ENV{BOOST_DIRECTORY}/stage/lib") - target_link_libraries(MainLoopLib boost_filesystem boost_system) - - target_include_directories(MainLoopLib PUBLIC "$ENV{LIBI2C_DIRECTORY}/include") - target_link_directories(MainLoopLib PUBLIC "$ENV{LIBI2C_DIRECTORY}/lib") - -else() - target_link_libraries(MainLoopLib systemd) - find_package(Boost 1.65.1 COMPONENTS system filesystem REQUIRED) - target_include_directories(MainLoopLib PUBLIC ${Boost_INCLUDE_DIRS}) - target_link_libraries(MainLoopLib ${Boost_LIBRARIES}) -endif() +if (${CMAKE_SYSTEM_PROCESSOR} STREQUAL "arm") + + target_include_directories(MainLoopLib PUBLIC "$ENV{BOOST_DIRECTORY}") + target_link_directories(MainLoopLib PUBLIC "$ENV{BOOST_DIRECTORY}/stage/lib") + target_link_libraries(MainLoopLib boost_filesystem boost_system) + + target_include_directories(MainLoopLib PUBLIC "$ENV{LIBI2C_DIRECTORY}/include") + target_link_directories(MainLoopLib PUBLIC "$ENV{LIBI2C_DIRECTORY}/lib") + +else () + target_link_libraries(MainLoopLib systemd) + find_package(Boost 1.65.1 COMPONENTS system filesystem REQUIRED) + target_include_directories(MainLoopLib PUBLIC ${Boost_INCLUDE_DIRS}) + target_link_libraries(MainLoopLib ${Boost_LIBRARIES}) +endif () target_link_libraries(MainLoopLib i2c) @@ -124,9 +128,9 @@ target_link_libraries(MainLoopLib protobufDef) target_link_libraries(MainLoopLib cobs-c) -target_link_libraries (MainLoopLib ${CMAKE_THREAD_LIBS_INIT}) +target_link_libraries(MainLoopLib ${CMAKE_THREAD_LIBS_INIT}) -target_link_libraries (MainLoopLib i2c) +target_link_libraries(MainLoopLib i2c) add_executable(MainLoop ./src/init/MainLoop.cpp) target_link_libraries(MainLoop MainLoopLib) diff --git a/projects/HotFire/config.h b/projects/HotFire/config.h index 271fc7b0..c7de4956 100644 --- a/projects/HotFire/config.h +++ b/projects/HotFire/config.h @@ -58,4 +58,12 @@ #define USE_SENSOR_MAX_31865 1 #endif +// TODO: Remove this when USE_WIRING_Pi is eventually removed +#if DESKTOP_COMPAT == 1 + #ifdef USE_WIRING_Pi + #undef USE_WIRING_Pi + #endif + #define USE_WIRING_Pi 0 +#endif + // clang-format on diff --git a/src/IO/SPI.cpp b/src/IO/SPI.cpp index f5ba8c1d..b42e7563 100644 --- a/src/IO/SPI.cpp +++ b/src/IO/SPI.cpp @@ -16,6 +16,7 @@ SPI::SPI(const char *device, uint8_t mode, uint8_t bitsPerWord, uint32_t speed, bool lsbFirst) : device(device), bits(bitsPerWord), speed(speed) { +#if DESKTOP_COMPAT != 1 int ret = 0; fd = open(device, O_RDWR); @@ -83,11 +84,14 @@ SPI::SPI(const char *device, uint8_t mode, uint8_t bitsPerWord, uint32_t speed, { throw SPIError("Can't set max read speed hz to " + std::to_string(speed)); } +#endif } SPI::~SPI() { +#if DESKTOP_COMPAT != 1 close(fd); +#endif } /*! @@ -101,11 +105,13 @@ SPI::~SPI() */ void SPI::write(uint8_t *buffer, size_t len) const { +#if DESKTOP_COMPAT != 1 auto status = ::write(fd, buffer, len); if (status < 0) { throw SPIError("Error writing to SPI device"); } +#endif } /*! @@ -124,6 +130,7 @@ void SPI::write(uint8_t *buffer, size_t len) const void SPI::write_then_read(const uint8_t *write_buffer, size_t write_len, uint8_t *read_buffer, size_t read_len, uint8_t sendvalue) const { +#if DESKTOP_COMPAT != 1 struct spi_ioc_transfer xfer[2]; memset(xfer, 0, sizeof xfer); @@ -140,4 +147,5 @@ void SPI::write_then_read(const uint8_t *write_buffer, size_t write_len, uint8_t { throw SPIError("Error reading to SPI device"); } +#endif }