Communication Between Components

The SID API provides only a few ways for components to communicate with each other. Hardware type components tend to use only the pin and bus mechanisms, and other types also use the attribute and relation mechanisms. All of these communication mechanisms may be set up in a SID configuration file.

The SID pin mechanism allows a component to send or receive broadcast events to or from connected components. Each event carries a small integer value as a parameter; how this value is interpreted is up to the involved components. This is an abstraction of individual electrical signal lines that connect hardware parts, modelling a level transition by a function call. A component may maintain several different pin connection networks. Typically, clocking and initialization or shutdown signals are distributed through dedicated pin connections.

The SID bus mechanism allows a component to read or write addressable memory or registers of another component. This is an abstraction of the address, data, and control buses that connect hardware parts together, modelling protocols and signals by a function call from a component (a bus master) to another (a bus slave). A bus mastering component may have several named accessors. Each may point to a bus slave component's named bus.

The SID attribute mechanism allows a component to read or write named internal states of another component. These states are considered to be opaque strings and may represent anything from hexadecimal values of registers through configuration variables to a binary dump of the entire state of the component. Attributes may be categorized, so that standard formatting and interpretation may be applied to groups of attributes.

The SID relation mechanism allows a component to make any SID API call to another component. A component that supervises others has a specific named relationship to them. A supervisor's relation stores pointers to the supervised components.