93 lines
3.1 KiB
Markdown
93 lines
3.1 KiB
Markdown
# Monocoque
|
|
```
|
|
___ |/ /____________________________________ ____ ______
|
|
__ /|_/ /_ __ \_ __ \ __ \ ___/ __ \ __ `/ / / / _ \
|
|
_ / / / / /_/ / / / / /_/ / /__ / /_/ / /_/ // /_/ // __/
|
|
/_/ /_/ \____//_/ /_/\____/\___/ \____/\__, / \__,_/ \___/
|
|
/_/
|
|
```
|
|
Cross Platform device manager for driving and flight simulators, for use with common simulator software titles.
|
|
|
|
## Features
|
|
- Updates at 120 frames per seconds.
|
|
- Modular design for support with various titles and devices.
|
|
- Supports bass shakers, tachometers, simlights, simwind etc, through usb and arduino serial.
|
|
- Tachometer support is currently limited to the Revburner model. Supports existing revburner xml configuration files.
|
|
- Includes utility to configure revburner tachometer
|
|
- Can send data to any serial device. So far only tested with arduino. Includes sample arduino sketch for sim lights.
|
|
- The support for haptic bass shakers is limited and needs the most work. So far the engine rev is a simple sine wave, which I find convincing. The gear shift event works but not convincing enough for me.
|
|
|
|
## Dependencies
|
|
- libserialport - arduino serial devices
|
|
- hidapi - usb hid devices
|
|
- libusb - used by hidapi
|
|
- portaudio - sound devices (haptic bass shakers)
|
|
- libenet - UDP support (not yet implemented)
|
|
- libxml2
|
|
- argtable2
|
|
- libconfig
|
|
- [slog](https://github.com/kala13x/slog) (static)
|
|
- [wine-linux-shm-adapter](https://github.com/spacefreak18/simshmbridge) - for sims that need shared memory mapping like AC.
|
|
- [simapi](https://github.com/spacefreak18/simapi)
|
|
|
|
## Building
|
|
This code depends on the shared memory data headers in the simapi [repo](https://github.com/spacefreak18/simapi). When pulling lastest if the submodule does not download run:
|
|
```
|
|
git submodule sync --recursive
|
|
git submodule update --init --recursive
|
|
```
|
|
|
|
Then to compile simply:
|
|
```
|
|
mkdir build; cd build
|
|
cmake ..
|
|
make
|
|
```
|
|
|
|
### A note about GitHub's ssh cloning policy
|
|
|
|
if you do not have an ssh key set up in you environment that is registered to a GitHub account, Microsoft will decline the clone request and you'll see a permission error like this:
|
|
|
|
```
|
|
git@github.com: Permission denied (publickey).
|
|
fatal: Could not read from remote repository.
|
|
|
|
Please make sure you have the correct access rights
|
|
and the repository exists.
|
|
```
|
|
|
|
to get around this, first clone the repository over https, then modify the `.gitmodules` file locally such that ssh urls are replaced with https urls.
|
|
You can then continue on to sync and update submodules.
|
|
|
|
```
|
|
git clone https://github.com/Spacefreak18/monocoque
|
|
cd monocoque
|
|
# vim .gitmodules
|
|
git submodule sync --recursive
|
|
git submodule update --init --recursive
|
|
```
|
|
|
|
## Testing
|
|
|
|
### Setting up Your Arduino Device
|
|
|
|
### Static Analysis
|
|
```
|
|
mkdir build; cd build
|
|
make clean
|
|
cmake -Danalyze=on ..
|
|
make
|
|
```
|
|
### Valgrind
|
|
```
|
|
cd build
|
|
valgrind -v --leak-check=full --show-leak-kinds=all --suppressions=../.valgrindrc ./monocoque play
|
|
```
|
|
|
|
## ToDo
|
|
- windows port
|
|
- more memory testing
|
|
- move config code around
|
|
- cleanup tests which are basically just copies of the example from their respective projects
|
|
- much, much more
|