Files
physical/README.md
Zachary Sunforge 9ec29910e8 README.md
2024-06-22 21:47:20 -07:00

24 lines
1.4 KiB
Markdown

# Physical
Physical is a library for interacting with the physical world from a computer. This can broadly be broken down into two
categories:
* Collecting and digitizing data from the physical world.
* Controlling devices that take physical action.
## Concepts
The main concepts of Physical are:
* Peripheral: A peripheral is a board that hosts physical I/O and usually does analog to digital conversion or
digital to analog conversion. A peripheral cannot function on its own, it must be connected to a node. This is more
narrow than the definition of a peripheral in embedded systems generally. Peripheral support is focused on complete
boards, not individual components like an ADC. Although common abstractions for components specific to physical
can be provided in this repository, general component abstractions / drivers should be made separately, such as in
BFPOWER drivers.
* Node: A node hosts peripherals. A node can have a commander but does not need one. A node can ignore or even override
commands from the commander. In a complex system, nodes are intended to be kept simple, less likely to
encounter an error than the commander, and in some cases should check for obvious problems in commands from the
commander. Nodes may also communicate with one another.
* Commander: A commander hosts nodes. It performs long-running complex computation to optimize the system and gives
commands to nodes based on its results.