Skip to content

Commit 34d9c4c

Browse files
committed
feat: add DESKTOP_COMPAT flag
1 parent 7844534 commit 34d9c4c

File tree

3 files changed

+81
-61
lines changed

3 files changed

+81
-61
lines changed

CMakeLists.txt

Lines changed: 65 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -5,69 +5,73 @@ project(RocketCode2020 C CXX)
55
cmake_host_system_information(RESULT _memfree QUERY AVAILABLE_PHYSICAL_MEMORY)
66
set_property(GLOBAL PROPERTY JOB_POOLS four_jobs=4)
77
if (_memfree LESS 1000)
8-
set(CMAKE_JOB_POOL_COMPILE four_jobs)
9-
endif()
8+
set(CMAKE_JOB_POOL_COMPILE four_jobs)
9+
endif ()
1010

1111
add_subdirectory(./libraries)
1212

13+
if (DEFINED ENV{DESKTOP_COMPAT} OR DESKTOP_COMPAT)
14+
add_compile_definitions(DESKTOP_COMPAT=$ENV{DESKTOP_COMPAT})
15+
endif ()
16+
1317
if (DEFINED ENV{HOTFIRE_TEST} OR HOTFIRE_TEST)
14-
add_compile_definitions(HOTFIRE_TEST=$ENV{HOTFIRE_TEST})
15-
endif()
18+
add_compile_definitions(HOTFIRE_TEST=$ENV{HOTFIRE_TEST})
19+
endif ()
1620

1721
if (DEFINED ENV{USE_LOGGER} OR USE_LOGGER)
18-
add_compile_definitions(USE_LOGGER=$ENV{USE_LOGGER})
19-
endif()
22+
add_compile_definitions(USE_LOGGER=$ENV{USE_LOGGER})
23+
endif ()
2024

2125
if (DEFINED ENV{USE_SOCKET_CLIENT} OR USE_SOCKET_CLIENT)
22-
add_compile_definitions(USE_SOCKET_CLIENT=$ENV{USE_SOCKET_CLIENT})
23-
endif()
26+
add_compile_definitions(USE_SOCKET_CLIENT=$ENV{USE_SOCKET_CLIENT})
27+
endif ()
2428

2529
if (DEFINED ENV{USE_INPUT} OR USE_INPUT)
26-
add_compile_definitions(USE_INPUT=$ENV{USE_INPUT})
27-
endif()
30+
add_compile_definitions(USE_INPUT=$ENV{USE_INPUT})
31+
endif ()
2832

2933
if (DEFINED ENV{SKIP_INIT} OR SKIP_INIT)
30-
add_compile_definitions(SKIP_INIT=$ENV{SKIP_INIT})
31-
endif()
34+
add_compile_definitions(SKIP_INIT=$ENV{SKIP_INIT})
35+
endif ()
3236

3337
if (DEFINED ENV{TESTING} OR TESTING)
34-
add_compile_definitions(TESTING=$ENV{TESTING})
35-
endif()
38+
add_compile_definitions(TESTING=$ENV{TESTING})
39+
endif ()
3640

3741
# Sensors
3842

3943
if (DEFINED ENV{USE_SBG} OR USE_SBG)
40-
add_compile_definitions(USE_SBG=$ENV{USE_SBG})
41-
endif()
44+
add_compile_definitions(USE_SBG=$ENV{USE_SBG})
45+
endif ()
4246

4347
if (DEFINED ENV{USE_RADIO} OR USE_RADIO)
44-
add_compile_definitions(USE_RADIO=$ENV{USE_RADIO})
45-
endif()
48+
add_compile_definitions(USE_RADIO=$ENV{USE_RADIO})
49+
endif ()
4650

4751
if (DEFINED ENV{USE_WIRING_Pi} OR USE_WIRING_Pi)
48-
add_compile_definitions(USE_WIRING_Pi=$ENV{USE_WIRING_Pi})
49-
endif()
52+
add_compile_definitions(USE_WIRING_Pi=$ENV{USE_WIRING_Pi})
53+
endif ()
5054

5155
if (DEFINED ENV{USE_GPIO} OR USE_GPIO)
52-
add_compile_definitions(USE_GPIO=$ENV{USE_GPIO})
53-
endif()
56+
add_compile_definitions(USE_GPIO=$ENV{USE_GPIO})
57+
endif ()
5458

5559
if (DEFINED ENV{USE_ARDUINO_PROXY} OR USE_ARDUINO_PROXY)
56-
add_compile_definitions(USE_ARDUINO_PROXY=$ENV{USE_ARDUINO_PROXY})
57-
endif()
60+
add_compile_definitions(USE_ARDUINO_PROXY=$ENV{USE_ARDUINO_PROXY})
61+
endif ()
5862

5963
# ---------------
6064
# Main executable
6165
# ---------------
62-
find_package (Threads)
66+
find_package(Threads)
6367

6468
if (DEFINED ENV{SERVO_CONTROL} OR SERVO_CONTROL)
65-
file(GLOB_RECURSE MAIN_CONFIG_SRC ${PROJECT_SOURCE_DIR}/projects/ServoControl/*.cpp)
69+
file(GLOB_RECURSE MAIN_CONFIG_SRC ${PROJECT_SOURCE_DIR}/projects/ServoControl/*.cpp)
6670
elseif (DEFINED ENV{HOTFIRE_TEST} OR HOTFIRE_TEST)
67-
file(GLOB_RECURSE MAIN_CONFIG_SRC ${PROJECT_SOURCE_DIR}/projects/HotFire/*.cpp)
68-
else()
69-
file(GLOB_RECURSE MAIN_CONFIG_SRC ${PROJECT_SOURCE_DIR}/projects/OctoberSky1/*.cpp)
70-
endif()
71+
file(GLOB_RECURSE MAIN_CONFIG_SRC ${PROJECT_SOURCE_DIR}/projects/HotFire/*.cpp)
72+
else ()
73+
file(GLOB_RECURSE MAIN_CONFIG_SRC ${PROJECT_SOURCE_DIR}/projects/OctoberSky1/*.cpp)
74+
endif ()
7175

7276
file(GLOB_RECURSE SRC_MAIN ${PROJECT_SOURCE_DIR}/src/*.cpp)
7377

@@ -78,43 +82,43 @@ target_include_directories(MainLoopLib PUBLIC ./src/)
7882
target_precompile_headers(MainLoopLib PUBLIC ${PROJECT_SOURCE_DIR}/src/common/pch.h)
7983

8084
if (DEFINED ENV{SERVO_CONTROL} OR SERVO_CONTROL)
81-
target_include_directories(MainLoopLib PUBLIC
82-
./projects/ServoControl/
83-
)
84-
target_include_directories(MainLoopLib PUBLIC
85-
./projects/HotFire/
86-
)
85+
target_include_directories(MainLoopLib PUBLIC
86+
./projects/ServoControl/
87+
)
88+
target_include_directories(MainLoopLib PUBLIC
89+
./projects/HotFire/
90+
)
8791
elseif (DEFINED ENV{HOTFIRE_TEST} OR HOTFIRE_TEST)
88-
target_include_directories(MainLoopLib PUBLIC
89-
./projects/HotFire/
90-
)
91-
else()
92-
target_include_directories(MainLoopLib PUBLIC
93-
./projects/OctoberSky1/
94-
)
95-
endif()
92+
target_include_directories(MainLoopLib PUBLIC
93+
./projects/HotFire/
94+
)
95+
else ()
96+
target_include_directories(MainLoopLib PUBLIC
97+
./projects/OctoberSky1/
98+
)
99+
endif ()
96100

97101
target_link_libraries(MainLoopLib sbgECom)
98102
add_dependencies(MainLoopLib sbgECom)
99103

100104
target_link_libraries(MainLoopLib WiringPi)
101105
add_dependencies(MainLoopLib WiringPi)
102106

103-
if(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "arm")
104-
105-
target_include_directories(MainLoopLib PUBLIC "$ENV{BOOST_DIRECTORY}")
106-
target_link_directories(MainLoopLib PUBLIC "$ENV{BOOST_DIRECTORY}/stage/lib")
107-
target_link_libraries(MainLoopLib boost_filesystem boost_system)
108-
109-
target_include_directories(MainLoopLib PUBLIC "$ENV{LIBI2C_DIRECTORY}/include")
110-
target_link_directories(MainLoopLib PUBLIC "$ENV{LIBI2C_DIRECTORY}/lib")
111-
112-
else()
113-
target_link_libraries(MainLoopLib systemd)
114-
find_package(Boost 1.65.1 COMPONENTS system filesystem REQUIRED)
115-
target_include_directories(MainLoopLib PUBLIC ${Boost_INCLUDE_DIRS})
116-
target_link_libraries(MainLoopLib ${Boost_LIBRARIES})
117-
endif()
107+
if (${CMAKE_SYSTEM_PROCESSOR} STREQUAL "arm")
108+
109+
target_include_directories(MainLoopLib PUBLIC "$ENV{BOOST_DIRECTORY}")
110+
target_link_directories(MainLoopLib PUBLIC "$ENV{BOOST_DIRECTORY}/stage/lib")
111+
target_link_libraries(MainLoopLib boost_filesystem boost_system)
112+
113+
target_include_directories(MainLoopLib PUBLIC "$ENV{LIBI2C_DIRECTORY}/include")
114+
target_link_directories(MainLoopLib PUBLIC "$ENV{LIBI2C_DIRECTORY}/lib")
115+
116+
else ()
117+
target_link_libraries(MainLoopLib systemd)
118+
find_package(Boost 1.65.1 COMPONENTS system filesystem REQUIRED)
119+
target_include_directories(MainLoopLib PUBLIC ${Boost_INCLUDE_DIRS})
120+
target_link_libraries(MainLoopLib ${Boost_LIBRARIES})
121+
endif ()
118122

119123
target_link_libraries(MainLoopLib i2c)
120124

@@ -124,9 +128,9 @@ target_link_libraries(MainLoopLib protobufDef)
124128

125129
target_link_libraries(MainLoopLib cobs-c)
126130

127-
target_link_libraries (MainLoopLib ${CMAKE_THREAD_LIBS_INIT})
131+
target_link_libraries(MainLoopLib ${CMAKE_THREAD_LIBS_INIT})
128132

129-
target_link_libraries (MainLoopLib i2c)
133+
target_link_libraries(MainLoopLib i2c)
130134
add_executable(MainLoop ./src/init/MainLoop.cpp)
131135
target_link_libraries(MainLoop MainLoopLib)
132136

projects/HotFire/config.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,4 +58,12 @@
5858
#define USE_SENSOR_MAX_31865 1
5959
#endif
6060

61+
// TODO: Remove this when USE_WIRING_Pi is eventually removed
62+
#if DESKTOP_COMPAT == 1
63+
#ifdef USE_WIRING_Pi
64+
#undef USE_WIRING_Pi
65+
#endif
66+
#define USE_WIRING_Pi 0
67+
#endif
68+
6169
// clang-format on

src/IO/SPI.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
SPI::SPI(const char *device, uint8_t mode, uint8_t bitsPerWord, uint32_t speed, bool lsbFirst)
1717
: device(device), bits(bitsPerWord), speed(speed)
1818
{
19+
#if DESKTOP_COMPAT != 1
1920
int ret = 0;
2021

2122
fd = open(device, O_RDWR);
@@ -83,11 +84,14 @@ SPI::SPI(const char *device, uint8_t mode, uint8_t bitsPerWord, uint32_t speed,
8384
{
8485
throw SPIError("Can't set max read speed hz to " + std::to_string(speed));
8586
}
87+
#endif
8688
}
8789

8890
SPI::~SPI()
8991
{
92+
#if DESKTOP_COMPAT != 1
9093
close(fd);
94+
#endif
9195
}
9296

9397
/*!
@@ -101,11 +105,13 @@ SPI::~SPI()
101105
*/
102106
void SPI::write(uint8_t *buffer, size_t len) const
103107
{
108+
#if DESKTOP_COMPAT != 1
104109
auto status = ::write(fd, buffer, len);
105110
if (status < 0)
106111
{
107112
throw SPIError("Error writing to SPI device");
108113
}
114+
#endif
109115
}
110116

111117
/*!
@@ -124,6 +130,7 @@ void SPI::write(uint8_t *buffer, size_t len) const
124130
void SPI::write_then_read(const uint8_t *write_buffer, size_t write_len, uint8_t *read_buffer, size_t read_len,
125131
uint8_t sendvalue) const
126132
{
133+
#if DESKTOP_COMPAT != 1
127134
struct spi_ioc_transfer xfer[2];
128135

129136
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
140147
{
141148
throw SPIError("Error reading to SPI device");
142149
}
150+
#endif
143151
}

0 commit comments

Comments
 (0)