02212e99ab562b80829de5d2c6e6b79c0b9d62bb
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 done on the basis of complete boards, not individual components like an ADC. Abstractions for individual components should be made separately, such as in BFHAL.
- Node: A node hosts peripherals. A node can have a master but does not need one. A node can ignore or even override commands from the master computer. In a complex system, nodes are intended to be kept simple, less likely to encounter an error than the master, and in many cases should check for obvious problems in commands from the master.
- Master: A master hosts nodes. It is possible for a device to be both a node and a master at the same time, although it may not be the best idea to make such a setup.
Languages
Rust
100%