Generic logic overview
The purpose of the Device Drivers layer is to provide an isolated component which is responsible for particular device type management in a broad sense. This includes but is not limited to decoding of the payload/messages generated by devices into structured data which can be further stored and processed in simple way and implementing and exposing control functions (via RPC mechanism) which usually allow different device manipulation actions like configuration/reconfiguration, enabling or disabling device specific functions and similar.
For uplink communication Device Drivers receive the raw device payload (via DecodeRaw() RPC call) which is pushed to the PixelCore through one of the available Bridges. Then the corresponding Device Driver performs the decoding of the message. Once the message is decoded the corresponding Object (matched to a particular physical device) Properties in PixelCore get updated with new values.
For downlink communication corresponding RPC calls can be used (please see RPC mechanism description for greater detail). In that case Device Driver is responsible for communicating with the related Bridge component to talk to the device (via that Bridge’s RPC mechanism) and reporting intermediary and final result statuses of the call execution.