P-ROC Software Architecture

From PinballControllers Wiki

Jump to: navigation, search

The software components of P-ROC are divided into 3 layers. The purpose of the layer system is to give the developer access to P-ROC at whatever abstraction level they prefer. If a developer wants to control P-ROC at a low level, they can use an existing layer 1 (such as libpinproc) directly in their project. If they prefer a higher level of control, a layer 2 interface such as pyprocgame should be used.

From the top down:

Layer 2 (L2)

Layer 2 describes high-level software that allow the game developer to focus on ruleset development. By making some assumptions about how the developer will be controlling P-ROC it is able to give the developer a somewhat simplified interface that allows them to spend more energy on the game aspects of pinball development rather than the hardware control. L2s may vary from providing a simple set of pinball building blocks, to broad toolsets intended for use in developing modern deep rulesets.

pyprocgame is presently the primary L2.

Layer 1 (L1)

Layer 1 is the low level software interface to P-ROC. An L1 provides the most basic access to the features of the P-ROC hardware, with no assumptions about how the user will want to use those features.

libpinproc is presently the primary L1 interface. It provides a C interface to P-ROC's functionality. A Python wrapper, pypinproc, is available.

Layer 0 (L0)

Layer 0 is the made up of computer operating system level drivers that provide a means to communicate with the P-ROC hardware, usually over USB. This is generally third party software and not developed by P-ROC.

libftdi and libusb are presently used for this purpose.

Personal tools