1
0
mirror of https://github.com/preble/libpinproc synced 2026-02-24 18:25:23 +01:00

Merge branch 'master' of git@github.com:preble/P-ROC

This commit is contained in:
gstellenberg
2009-06-28 22:35:58 -05:00
4 changed files with 132 additions and 12 deletions

View File

@@ -8,7 +8,8 @@ Library for Gerry Stellenberg's [P-ROC](http://pinballcontrollers.com/) (Pinball
libpinproc requires:
- [libusb-0.1.12](http://libusb.wiki.sourceforge.net/): Install with the default /usr/local prefix.
- [libusb-0.1.12](http://libusb.wiki.sourceforge.net/): Install with the default /usr/local prefix. Version 0.1.12 has been tested on Mac and Linux. Mac users: If you want to use libpinproc under Cocoa or pygame, you may wish to try libusb 1.0. See below.
- [libftdi-0.16](http://www.intra2net.com/en/developer/libftdi/): Install with the default /usr/local prefix.
The pinproctest example requires [yaml-cpp](http://code.google.com/p/yaml-cpp/). Follow the build instructions, creating the build subdirectory. After building, from the main source directory, run the following commands to manually install it:
@@ -17,6 +18,14 @@ The pinproctest example requires [yaml-cpp](http://code.google.com/p/yaml-cpp/).
sudo mkdir /usr/local/include/yaml-cpp
sudo cp include/*.h /usr/local/include/yaml-cpp/
##### libusb-1.0 and libusb-compat
Version 1.0.2 does not work out of the box since libftdi is written against libusb-0.1. You can use the libusb-compat-0.1.2 project, however, which creates a library that provides the older libusb interface. Because Macs do not come with pkg-config, you may need to run configure for libusb-compat as follows:
./configure LIBUSB_1_0_CFLAGS=-I/usr/local/include/libusb-1.0 LIBUSB_1_0_LIBS="-L/usr/local/lib -lusb-1.0"
Note that libusb-1.0 must have been built and installed prior to this step. This also assumes that you installed libusb-1.0 with the default /usr/local prefix.
#### Building with CMake
Download and install [CMake](http://www.cmake.org/cmake/resources/software.html). Then:

View File

@@ -11,17 +11,67 @@ PRBumpers:
- slingR
PRSwitches:
flipperLwR:
number: 1
number: SF2
flipperLwL:
number: 3
number: SF4
flipperUpR:
number: 5
number: SF6
flipperUpL:
number: 7
number: SF8
fireL:
number: S11
fireR:
number: S12
startButton:
number: S13
shooterL:
number: S15
subwayEnter1:
number: S37
subwayEnter2:
number: S38
shooterR:
number: S41
buyIn:
number: S31
ballShooterR:
number: S41
superGame:
number: S44
slingL:
number: 96
number: S51
slingR:
number: 97
number: S52
captiveBall2:
number: S53
dropTargetJ:
number: S54
dropTargetU:
number: S55
dropTargetD:
number: S56
dropTargetG:
number: S57
dropTargetE:
number: S58
popperL:
number: S73
popperR:
number: S74
trough1:
number: S81
trough2:
number: S82
trough3:
number: S83
trough4:
number: S84
trough5:
number: S85
trough6:
number: S86
troughTop:
number: S87
PRCoils:
flipperLwRMain:
number: 32
@@ -39,7 +89,46 @@ PRCoils:
number: 38
flipperUpLHold:
number: 39
popperL:
number: C02
popperR:
number: C03
resetDropTarget:
number: C05
shooterR:
number: C08
shooterL:
number: C09
trough:
number: C13
slingL:
number: 54
number: C15
slingR:
number: 55
number: C16
PRLamps:
buyIn:
number: L38
dropTargetJ:
number: L71
dropTargetU:
number: L72
dropTargetD:
number: L73
dropTargetG:
number: L74
dropTargetE:
number: L75
superGame:
number: L87
startButton:
number: L88
gi01:
number: G01
gi02:
number: G02
gi03:
number: G03
gi04:
number: G04
gi05:
number: G05

View File

@@ -22,6 +22,24 @@ PRSwitches:
number: S34
slingR:
number: S35
outhole:
number: S18
troughFarLeft:
number: S25
troughLeft:
number: S17
troughMiddle:
number: S16
troughRight:
number: S15
shooterLane:
number: S27
startButton:
number: S13
rocketKickout:
number: S28
slotKickout:
number: S58
PRCoils:
flipperLwRMain:
number: 32
@@ -52,5 +70,7 @@ PRCoils:
ballRelease:
number: C09
PRLamps:
startButton:
number: L88
doorTheCamera:
number: L11

View File

@@ -770,7 +770,7 @@ PRResult PRDevice::PrepareWriteData(uint32_t * words, int32_t numWords)
// words will be too many, flush the currently prepared words to the P-ROC now.
if (numPreparedWriteWords + numWords > maxWriteWords)
{
if (FlushWriteData() == kPRFailure);
if (FlushWriteData() == kPRFailure)
return kPRFailure;
}
@@ -830,13 +830,15 @@ PRResult PRDevice::WriteData(uint32_t * words, int32_t numWords)
PRResult PRDevice::WriteDataRaw(uint32_t moduleSelect, uint32_t startingAddr, int32_t numWriteWords, uint32_t * writeBuffer)
{
PRResult res;
uint32_t * buffer;
buffer = (uint32_t *)malloc((numWriteWords * 4) + 1);
buffer[0] = CreateBurstCommand(moduleSelect, startingAddr, numWriteWords);
memcpy(buffer+1, writeBuffer, numWriteWords * 4);
WriteData(buffer, numWriteWords + 1);
res = WriteData(buffer, numWriteWords + 1);
free (buffer);
return res;
}
PRResult PRDevice::ReadDataRaw(uint32_t moduleSelect, uint32_t startingAddr, int32_t numReadWords, uint32_t * readBuffer)