Fit & function: tested - the two bingo buttons are a little weird as I can't install a c-clip or split washer on them. Pulling hard enough makes them removable, therefore.
The other buttons sit proud of the surface just like the buttons on my Turf King and operate much the same. Very pleased.
The bingo buttons are a bit more stiff as I very slightly bent in the edges of the restrictor plate. Their amount of travel is only a couple of cm because of this, but they work.
I taught myself ufw as well (I'm an old ipchains and iptables kinda guy, and thought I'd branch out a bit. ufw stands for Uncomplicated FireWall, so - how hard could it be?). I route the pis ethernet connection through the main computer, enable ip forwarding, and then nat/masquerade the traffic so the pis could get those packages they needed direct from the wide, wide Internet.
It worked, but ufw has some... interesting syntax when it comes to NAT. I should probably spend more time with it, but you basically end up writing iptables commands if you are doing anything remotely complex, so I guess I'll stick with iptables from now on. Also, it overwrites all of your sysctl config when you enable ufw... that took me a couple of minutes to figure out (why is /proc/sys/net/ipv4/ip_forward set to zero?!? I just set it to 1!).
So here's the current status:
1) 10 games, totally working.
2) Ancillary displays, also totally working (now they do not turn off until the game is turned off).
3) Menu system written, and also working (star and flag to select between games, play all button to turn the game on).
Using a newer version of Ubuntu as the base for the Multi-Races computer, I needed to install a newer version of libFTDI. This version seems to have a new bit of detection code that prevents starting multiple applications that require access to the device you're speaking to over USB. In this case, the P3-ROC. The way that the menu system works, it basically creates a connection to the P3-ROC to allow for button presses when selecting a game, then when play all is pressed, it imports the game code in a new thread. When the game code is imported, the game code itself also creates a connection to the P3-ROC (note that the menu code is still running, just in the background). This is part of why my menuing system is super fast. The menu never really disappears until you exit the game.
I've tried a variety of commands before initiating the thread to start the game, but the detection code seems to need a few minutes to cool down before it will allow another program to speak with the P3-ROC. I have no idea why this was added (probably to prevent crashes for USB devices that are less good ), but it's really annoying.
I will need to either fix this problem, or start over completely with this computer. That means installing an older version of the base Ubuntu, then installing all the ancillary packages needed to run the game, then downloading my code and assets for the game. A bit of a pain, and it will likely take me a day or so of concentrated work to get things back to normal, which I won't have time to do until (maybe) this weekend. Also I run the risk of not having the drivers that I need pre-installed with an older version, so compilation and more time + effort needed.
Until that time, I'm going to see if there's a way I can avoid having to do all that work. I'm nothing if not lazy.
Oh, and I fixed a race condition with the control unit that prevents it from shutting off when certain buttons are pressed in certain games. (hooray!)