Compare commits
20
Commits
0.2.4
...
3c81f749b8
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3c81f749b8 | ||
|
|
3c1b1948fd | ||
|
|
3b10509ecd | ||
|
|
b734330d38 | ||
|
|
eb95db1dda | ||
|
|
3a803550ea | ||
|
|
26e0e87cd7 | ||
|
|
7f17a5307c | ||
|
|
ae87a2eaa5 | ||
|
|
738a181d61 | ||
|
|
ba6c624a59 | ||
|
|
822d4096e7 | ||
|
|
a3e932e2dc | ||
|
|
ad53dd654c | ||
|
|
522185d19b | ||
|
|
030813cd4f | ||
|
|
53467a2a5e | ||
|
|
b5fa399f79 | ||
|
|
4a72f760b6 | ||
|
|
89c73a2fd3 |
+36
-6
@@ -1,7 +1,4 @@
|
||||
|
||||
# minimum CMake version required for C++20 support, among other things
|
||||
cmake_minimum_required(VERSION 3.18)
|
||||
|
||||
# detect if Monocoque is being used as a sub-project of another CMake project
|
||||
if(NOT DEFINED PROJECT_NAME)
|
||||
set(MONOCOQUE_SUBPROJECT OFF)
|
||||
@@ -20,9 +17,25 @@ set(CMAKE_EXE_LINKER_FLAGS "-Wl,--no-as-needed -ldl")
|
||||
set(LIBUSB_INCLUDE_DIR /usr/include/libusb-1.0)
|
||||
set(LIBXML_INCLUDE_DIR /usr/include/libxml2)
|
||||
|
||||
FIND_PACKAGE(Lua 5.3 REQUIRED)
|
||||
FIND_PACKAGE(Lua)
|
||||
set(INCLUDE_DIRS ${LUA_INCLUDE_DIR})
|
||||
include_directories(${LUA_INCLUDE_DIR})
|
||||
if(Lua_FOUND AND NOT TARGET Lua::Lua)
|
||||
add_library(Lua::Lua INTERFACE IMPORTED)
|
||||
set_target_properties(
|
||||
Lua::Lua
|
||||
PROPERTIES
|
||||
INTERFACE_INCLUDE_DIRECTORIES "${LUA_INCLUDE_DIR}"
|
||||
INTERFACE_LINK_LIBRARIES "${LUA_LIBRARIES}"
|
||||
)
|
||||
|
||||
endif()
|
||||
message("Lua ${Lua_VERSION} found")
|
||||
if (Lua_VERSION VERSION_GREATER_EQUAL "5.5.0")
|
||||
add_compile_definitions(USE_LUA_55)
|
||||
else()
|
||||
remove_definitions(USE_LUA_55)
|
||||
endif()
|
||||
|
||||
#FIND_PATH(LIBUSB_INCLUDE_DIR libusb.h
|
||||
# HINTS $ENV{LIBUSB_ROOT}
|
||||
@@ -39,14 +52,31 @@ set(BUILD_SHARED_LIBS TRUE) # HIDAPI as static library on all platforms
|
||||
|
||||
add_executable(monocoque src/monocoque/monocoque.c)
|
||||
|
||||
find_package(PkgConfig REQUIRED)
|
||||
pkg_check_modules(LIBPROCPS libprocps)
|
||||
pkg_check_modules(LIBPROC2 libproc2)
|
||||
|
||||
if (LIBPROCPS_FOUND)
|
||||
#add_compile_definitions(USE_OLD_PID_VAL=0)
|
||||
elseif (LIBPROC2_FOUND)
|
||||
if (LIBPROC2_VERSION VERSION_GREATER_EQUAL "4.0.5")
|
||||
#add_compile_definitions(USE_OLD_PID_VAL=0)
|
||||
else()
|
||||
add_compile_definitions(USE_OLD_PID_VAL=1)
|
||||
endif()
|
||||
else()
|
||||
message(FATAL_ERROR "Either libprocps or libproc2 is required")
|
||||
endif()
|
||||
|
||||
#if(USE_PULSEAUDIO)
|
||||
#else()
|
||||
#endif()
|
||||
|
||||
message("Using pulseaudio backend...")
|
||||
add_compile_definitions(USE_PULSEAUDIO=true)
|
||||
target_link_libraries(monocoque m hidapi-hidraw pulse serialport xml2 argtable2 config gameloop helper devices slog simulatorapi uv xdg-basedir ${LUA_LIBRARY} proc2)
|
||||
target_link_libraries(monocoque m hidapi-hidraw pulse serialport xml2 argtable2 config gameloop helper devices slog simulatorapi uv xdg-basedir Lua::Lua proc2)
|
||||
|
||||
target_include_directories(monocoque PUBLIC config ${LIBXML_INCLUDE_DIR})
|
||||
target_include_directories(monocoque PUBLIC config ${LIBXML_INCLUDE_DIR} ${LUA_INCLUDE_DIR})
|
||||
|
||||
add_subdirectory(src/monocoque/gameloop)
|
||||
add_subdirectory(src/monocoque/simulatorapi)
|
||||
|
||||
+2
-2
@@ -95,7 +95,7 @@ install_dependencies() {
|
||||
|
||||
case $DISTRO in
|
||||
arch|manjaro)
|
||||
local deps="yder libuv argtable libserialport libconfig hidapi lua libxdg-basedir mingw-w64-gcc"
|
||||
local deps="yder libuv argtable libserialport libconfig hidapi lua54 libpulse pkgconfig libxdg-basedir mingw-w64-gcc"
|
||||
|
||||
# Check if yay is available for AUR
|
||||
if command -v yay &> /dev/null; then
|
||||
@@ -537,7 +537,7 @@ main() {
|
||||
clone_repositories
|
||||
|
||||
log_info "Building components (this may take a few minutes)..."
|
||||
#build_simapi
|
||||
build_simapi
|
||||
build_simd
|
||||
build_monocoque
|
||||
build_simshmbridge
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
../../monocoque/simulatorapi/simapi/simapi/simdata.h
|
||||
@@ -64,6 +64,39 @@ int simdata_to_lua(lua_State *L, SimData* simdata) {
|
||||
}
|
||||
lua_setfield(L, -2, "pd");
|
||||
|
||||
lua_pushnumber(L, simdata->gas);
|
||||
lua_setfield(L, -2, "gas");
|
||||
|
||||
lua_pushnumber(L, simdata->fuel);
|
||||
lua_setfield(L, -2, "fuel");
|
||||
|
||||
lua_pushnumber(L, simdata->turboboost);
|
||||
lua_setfield(L, -2, "turboboost");
|
||||
|
||||
lua_newtable(L);
|
||||
for(int i = 0; i < 4; i++)
|
||||
{
|
||||
lua_pushnumber(L, simdata->tyreRPS[i]);
|
||||
lua_rawseti(L, -2, i+1);
|
||||
}
|
||||
lua_setfield(L, -2, "tyreRPS");
|
||||
|
||||
lua_newtable(L);
|
||||
for(int i = 0; i < 4; i++)
|
||||
{
|
||||
lua_pushnumber(L, simdata->tyrediameter[i]);
|
||||
lua_rawseti(L, -2, i+1);
|
||||
}
|
||||
lua_setfield(L, -2, "tyrediameter");
|
||||
|
||||
lua_newtable(L);
|
||||
for(int i = 0; i < 4; i++)
|
||||
{
|
||||
lua_pushnumber(L, simdata->tyretemp[i]);
|
||||
lua_rawseti(L, -2, i+1);
|
||||
}
|
||||
lua_setfield(L, -2, "tyretemp");
|
||||
|
||||
return 0; // Return the table to Lua
|
||||
}
|
||||
|
||||
|
||||
@@ -1,9 +1,14 @@
|
||||
#ifndef _ARDUINOLEDLUA_H
|
||||
#define _ARDUINOLEDLUA_H
|
||||
|
||||
#include "lua.h"
|
||||
#include "lauxlib.h"
|
||||
#include "lualib.h"
|
||||
//#include <lua.h>
|
||||
#include <lauxlib.h>
|
||||
#include <lualib.h>
|
||||
|
||||
#ifdef USE_LUA_55
|
||||
/* open all libraries */
|
||||
#define luaL_openlibs(L) luaL_openselectedlibs(L, ~0, 0)
|
||||
#endif
|
||||
|
||||
#include "../../simulatorapi/simapi/simapi/simdata.h"
|
||||
|
||||
|
||||
@@ -140,6 +140,10 @@ int arduino_simhaptic_update(SimDevice* this, SimData* simdata)
|
||||
int result = 1;
|
||||
|
||||
slogt("arduino haptic device updating");
|
||||
serialdevice->u.simhapticdata.motor1 = 0;
|
||||
serialdevice->u.simhapticdata.motor2 = 0;
|
||||
serialdevice->u.simhapticdata.motor3 = 0;
|
||||
serialdevice->u.simhapticdata.motor4 = 0;
|
||||
|
||||
double play = slipeffect(simdata, this->hapticeffect.effecttype, this->hapticeffect.tyre, this->hapticeffect.threshold, this->hapticeffect.useconfig, this->hapticeffect.configcheck, this->hapticeffect.tyrediameterconfig);
|
||||
|
||||
@@ -149,23 +153,25 @@ int arduino_simhaptic_update(SimDevice* this, SimData* simdata)
|
||||
{
|
||||
play = 1.0;
|
||||
}
|
||||
int effectspeed = ceil(255 * play);
|
||||
uint8_t effectspeed = ceil(255 * play);
|
||||
|
||||
int motor = serialdevice->motorsposition;
|
||||
uint8_t motor = serialdevice->motorsposition;
|
||||
|
||||
if (play != serialdevice->state)
|
||||
{
|
||||
// motor 1
|
||||
if (motor == 0 || motor == 4 || motor == 7 || motor == 8 || motor == 10 || motor == 11 || motor == 13 || motor == 14)
|
||||
{
|
||||
serialdevice->u.simhapticdata.effect1 = effectspeed;
|
||||
serialdevice->u.simhapticdata.motor1 = 1;
|
||||
slogt("Updating arduino haptic device with effect type %i speed motor speed %i on motor %i from original effect %f with ampfactor %f", this->hapticeffect.effecttype, serialdevice->u.simhapticdata.effect3, serialdevice->motorsposition, rplay, serialdevice->ampfactor);
|
||||
slogt("Updating arduino haptic device with effect type %i speed motor speed %i on motor %i from original effect %f with ampfactor %f", this->hapticeffect.effecttype, serialdevice->u.simhapticdata.effect1, 1, rplay, serialdevice->ampfactor);
|
||||
}
|
||||
// motor 3
|
||||
if (motor == 2 || motor == 6 || motor == 8 || motor == 9 || motor == 10 || motor == 11 || motor == 12 || motor == 14)
|
||||
{
|
||||
serialdevice->u.simhapticdata.effect3 = effectspeed;
|
||||
serialdevice->u.simhapticdata.motor3 = 1;
|
||||
slogt("Updating arduino haptic device with effect type %i speed motor speed %i on motor %i from original effect %f with ampfactor %f", this->hapticeffect.effecttype, serialdevice->u.simhapticdata.effect3, serialdevice->motorsposition, rplay, serialdevice->ampfactor);
|
||||
slogt("Updating arduino haptic device with effect type %i speed motor speed %i on motor %i from original effect %f with ampfactor %f", this->hapticeffect.effecttype, serialdevice->u.simhapticdata.effect3, 3, rplay, serialdevice->ampfactor);
|
||||
}
|
||||
serialdevice->state = play;
|
||||
}
|
||||
@@ -255,6 +261,10 @@ int serialdev_init(SerialDevice* serialdevice, DeviceSettings* ds, SimInfo* simi
|
||||
{
|
||||
free(serialdevice->m.device_specific_config_file);
|
||||
}
|
||||
if(error > 0)
|
||||
{
|
||||
error = 0;
|
||||
}
|
||||
break;
|
||||
case ARDUINODEV__CUSTOM:
|
||||
serialdevice->m.device_specific_config_file = strdup(ds->specific_config_file);
|
||||
@@ -263,12 +273,24 @@ int serialdev_init(SerialDevice* serialdevice, DeviceSettings* ds, SimInfo* simi
|
||||
{
|
||||
free(serialdevice->m.device_specific_config_file);
|
||||
}
|
||||
if(error > 0)
|
||||
{
|
||||
error = 0;
|
||||
}
|
||||
break;
|
||||
case ARDUINODEV__SIMLED:
|
||||
error = arduino_custom_init(serialdevice, ds->serialdevsettings.portdev, NULL, false);
|
||||
if(error > 0)
|
||||
{
|
||||
error = 0;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
error = arduino_init(serialdevice, ds->serialdevsettings.portdev);
|
||||
if(error > 0)
|
||||
{
|
||||
error = 0;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -399,7 +421,7 @@ SerialDevice* new_serial_device(DeviceSettings* ds, MonocoqueSettings* ms, SimIn
|
||||
|
||||
if (error != 0)
|
||||
{
|
||||
slogw("Did not initialize usb device due to error code %i", error);
|
||||
slogw("Did not initialize serial device due to error code %i", error);
|
||||
free(this);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
#include <stdbool.h>
|
||||
#include <hidapi/hidapi.h>
|
||||
|
||||
#include "lua.h"
|
||||
#include <lua.h>
|
||||
|
||||
#include "usbdevice.h"
|
||||
#include "sounddevice.h"
|
||||
|
||||
@@ -737,6 +737,10 @@ int tester(SimDevice* devices, int numdevices)
|
||||
simdata->tyrediameter[1] = -1;
|
||||
simdata->tyrediameter[2] = -1;
|
||||
simdata->tyrediameter[3] = -1;
|
||||
simdata->tyreslipratio[0] = 0;
|
||||
simdata->tyreslipratio[1] = 0;
|
||||
simdata->tyreslipratio[2] = 0;
|
||||
simdata->tyreslipratio[3] = 0;
|
||||
simdata->Xvelocity = 0;
|
||||
simdata->Yvelocity = 100;
|
||||
simdata->Zvelocity = 0;
|
||||
|
||||
@@ -40,7 +40,6 @@ set(simulatorapi_source_files
|
||||
simapi/simapi/mapping/wreckfest2mapper.c
|
||||
simapi/simapi/mapping/forzamapper.c
|
||||
simapi/simapi/getpid.c
|
||||
simapi/simapi/getpid.h
|
||||
)
|
||||
|
||||
add_library(simulatorapi STATIC ${simulatorapi_source_files})
|
||||
|
||||
Submodule src/monocoque/simulatorapi/simapi updated: 74b8fa3f6e...ea44d0e57f
@@ -122,6 +122,8 @@ if ! distrobox list 2>/dev/null | grep -q "$CONTAINER"; then
|
||||
distrobox create \
|
||||
--image docker.io/library/archlinux:latest \
|
||||
--name "$CONTAINER" \
|
||||
--root \
|
||||
--additional-flags "--privileged --security-opt seccomp=unconfined" \
|
||||
--pre-init-hooks "sed -i 's/^SigLevel.*/SigLevel = Never/' /etc/pacman.conf && pacman -Sy --noconfirm archlinux-keyring && pacman-key --init && pacman-key --populate archlinux && sed -i 's/^SigLevel.*/SigLevel = Required DatabaseOptional/' /etc/pacman.conf"
|
||||
log_success "Container '$CONTAINER' created"
|
||||
else
|
||||
@@ -130,7 +132,7 @@ fi
|
||||
|
||||
# Install packages inside the container
|
||||
log_info "Installing packages inside container (this may take a few minutes)..."
|
||||
distrobox enter "$CONTAINER" -- bash -c '
|
||||
distrobox enter --root "$CONTAINER" -- bash -c '
|
||||
set -euo pipefail
|
||||
|
||||
# Install build dependencies
|
||||
@@ -181,19 +183,19 @@ mkdir -p "$BIN_DIR"
|
||||
|
||||
cat > "$BIN_DIR/start-simd" << 'EOF'
|
||||
#!/usr/bin/env bash
|
||||
exec distrobox enter simracing -- simd "$@"
|
||||
exec distrobox enter --root simracing -- simd "$@"
|
||||
EOF
|
||||
chmod +x "$BIN_DIR/start-simd"
|
||||
|
||||
cat > "$BIN_DIR/start-monocoque" << 'EOF'
|
||||
#!/usr/bin/env bash
|
||||
exec distrobox enter simracing -- monocoque play "$@"
|
||||
exec distrobox enter --root simracing -- monocoque play "$@"
|
||||
EOF
|
||||
chmod +x "$BIN_DIR/start-monocoque"
|
||||
|
||||
cat > "$BIN_DIR/test-monocoque" << 'EOF'
|
||||
#!/usr/bin/env bash
|
||||
exec distrobox enter simracing -- monocoque test -vv "$@"
|
||||
exec distrobox enter --root simracing -- monocoque test -vv "$@"
|
||||
EOF
|
||||
chmod +x "$BIN_DIR/test-monocoque"
|
||||
|
||||
|
||||
@@ -72,9 +72,9 @@ if [ -d "$INSTALL_DIR" ]; then
|
||||
fi
|
||||
|
||||
# Remove distrobox container
|
||||
if distrobox list 2>/dev/null | grep -q "$CONTAINER"; then
|
||||
if distrobox list --root 2>/dev/null | grep -q "$CONTAINER"; then
|
||||
log_info "Removing distrobox container '$CONTAINER'..."
|
||||
distrobox rm --force "$CONTAINER"
|
||||
distrobox rm --root --force "$CONTAINER"
|
||||
log_success "Container '$CONTAINER' removed"
|
||||
else
|
||||
log_info "Container '$CONTAINER' not found, skipping"
|
||||
|
||||
Reference in New Issue
Block a user