56 lines
2.6 KiB
Markdown
56 lines
2.6 KiB
Markdown
# FlippR Driver
|
|
This is a driver written to control Zaccaria pinball machines from the 2nd Generation. It controls the hardware that can be found in the [[flippr-circuit|https://gitlab.rhetenor.de/rhetenor/flippr-circuit]] repository.
|
|
|
|
An example game implementation for the Zaccaria Pinball Champ '82 can be found at [[flippr-game|https://gitlab.rhetenor.de/rhetenor/flippr-game]].
|
|
|
|
## Architecture
|
|
|
|
## Build Instructions
|
|
By default a static library gets build together with a networking target which enables communication over a UNIX Socket, for possible games.
|
|
|
|
### Dependencies
|
|
* wiringPi [^1]
|
|
* Boost: program_options thread timer chrono filesystem
|
|
* libthread
|
|
|
|
### Build
|
|
To build the flippr-driver library run the following commands:
|
|
```sh1
|
|
$ mkdir flippr-code/Flippr-Driver/build
|
|
$ cd flippr-code/FlippR-Driver/build
|
|
$ cmake ..
|
|
$ make
|
|
```
|
|
This will create you the static-library file: _flippr-code/FlippR-Driver/bin/libFlippR-Driver.a_
|
|
|
|
The library uses wiringPi Pin numbering important for the config files
|
|
|
|
We added a script /usr/bin/reset_flippr this can be found in the repo and must be chosen in /etc/rc.local. It prevents the solenois from burning!
|
|
|
|
#### Build Options
|
|
* `-DCROSS_COMPILE` Cross compile for raspberry pi. Default: Off
|
|
* `-DBUILD_SHARED_LIB` Build a shared library. Default: Off
|
|
* `-DENABLE_TESTING` Enables Tests after build. Default: On
|
|
* `-DBUILD_NETWORKING` Builds the networking target binary. Default: On
|
|
* `-DBUILD_CLI` Build a basic TUI to control the flipper by hand. Default: Off
|
|
|
|
[^1]: Please note that wiringPi is deprecated and might not work on future releases of raspbian and most probably not on a Raspberry Pi5 and future versions.
|
|
|
|
## Usage
|
|
### Configuration
|
|
The driver must be configured according to your needs and machine through JSON files.
|
|
|
|
Exemplary Files that describe this can be found in [[json_example|https://gitlab.rhetenor.de/rhetenor/flippr-code/src/branch/master/FlippR-Driver/contrib/json_example]].
|
|
The Readme there contains all necessary information about the specific files.
|
|
|
|
### Networking
|
|
When built with the networking target (default), the driver is accessible via two UNIX Domain Socket through a simple REST API.
|
|
The sockets can be found either in the folder specified through the env variable `XDG_RUNTIME_DIR` or if it is not set in `/tmp`.
|
|
|
|
The sockets are:
|
|
* `S.flippR_driver.in`: All input events that occure on the pinball machine get pushed there.
|
|
* `S.flippr_driver.out`: With this socket the driver can be controlled.
|
|
|
|
|
|
An example connector writtin in Python can be found in the TUI [[FlippR_Networking.py|https://gitlab.rhetenor.de/rhetenor/flippr-code/src/branch/master/cli/FlippR_Networking.py]]
|