Skip to content

Commit

Permalink
feat: add DESKTOP_COMPAT flag
Browse files Browse the repository at this point in the history
  • Loading branch information
jonapap committed Mar 15, 2022
1 parent 569ab30 commit 3ce8922
Show file tree
Hide file tree
Showing 3 changed files with 81 additions and 61 deletions.
126 changes: 65 additions & 61 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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)

Expand All @@ -78,43 +82,43 @@ 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)

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)

Expand All @@ -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)

Expand Down
8 changes: 8 additions & 0 deletions projects/HotFire/config.h
Original file line number Diff line number Diff line change
Expand Up @@ -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
8 changes: 8 additions & 0 deletions src/IO/SPI.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down Expand Up @@ -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
}

/*!
Expand All @@ -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
}

/*!
Expand All @@ -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);
Expand All @@ -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
}

0 comments on commit 3ce8922

Please sign in to comment.