Quoted from AmokSolderer:
The USB interface is still under heavy discussion as we're currently implementing some changes. It's not yet complete, but you can see the latest dev version here:
http://docs.missionpinball.org/en/dev/hardware/lisy/protocol.html#protocol-reference-v0-09-rfc
Basically you could also use the APC alone to control additional HW - there is this 'Hardware extensions interface video' link on my GitHub page which is showing the use of an additional LED Controller and as you suggested, the USB interface could be used also. At a later stage, I might expand my SW to also support stuff like DMDs and so on, but at the moment most people seem to be interested in using MPF. Therefore they need to have an external master PC or Raspi and then it's probably easier to let this device control additional HW also.
In the end it depends on the demand. If some guys are starting to use the APC alone, I'm going to spend more of my time for supporting my own API, but at the moment I'm lucky to have very competent guys working on APC support for MPF and PinMame, so I'm doing my best to keep the pace.
You're welcome. Feel free to participate by pointing out unclear parts or gaps in the documentation for example. This is a work in progress and every helping hand is welcome.
Great doc to plan out the protocol. In my earliest lesson of a master "Arduino" & Slave "Raspberry Pi" was boot order.
The arduino default state for the pins caused all my solenoids to fire on boot up, blowing a fuse on the playfield. This lead to a procedure to what got booted first. Simple fix but explains how some confussion can happen on Master slave relationships.
As the APC ages, some things can go wrong. System diagnostics would be handy to test especially after everything is all nicely soldered to the board.
A simple 3 led Red, Yellow, Green diagnostic is ok. But, what I would suggest be a consideration is a simple I2c connector for a 20x4 LCD/LED display.
Having a Momentary switch or two enable a diagnostic test or dipswitch setting which cycles through a health test of the APC board with output feeding the 20x4 LCD/LED display and/or the 3 led Red,Yellow, Green lights.
Watchdog and Solenoid On/Off (Which came first the chicken or the watch dog timer). This may cause issues for the inexperienced homebrew coders.
Default values, of which overrides the other could cause machine gunning solenoid bumpers or weak flippers activations. Another avenue to watch is latency between master and slave configuration. Some form of messaging "Like stuck on solenoid to a LCD/LED" would be handy.
Sound On/Off/index#. Pinmame uses samples and a collection of zip files. Plus it also can use the native rom file and its associated sound file references.
It sometimes confuses when you having custom sound samples that overide the original rom sound. Documenting how the sound index number work will save for confussion of the homebrew developer. The index number can for example be (0-100 rom index sounds), (101-200 samples zip file references), etc.
I noticed the protocol usually consisted of individual lamps, solenoid status instead of using an array status of all lamps or solenoids.
Same is true for changed status. I don't want to spark an academic debate, just wondered if exchanging an array state was considered in the discussion.
I really like what I see so far thank you for openning the door to see whats going on.