Critical Link MityCam SoC Firmware  1.0
Critical Link MityCam SoC Firmware
Software Architecture

This section outlines the main C++ objects and actors involved with receiving an image from an attached sensor device and routing the output to a given destination.

Class Hierarchy

The class collaboration diagram, below, illustrates the main classes involved in managing image IO the MityCAM-SDK framework. The SocCamera::tcControlApplication is responsible for parsing the system configuration file and generating (as a class factory) each of the defined SocCamera::tcCommandInterface and tcIOChannel classes as well as the main SocCamera::tcSensorBoard class (generally loaded via the plugin API). The SocCamera::tcCommandInterface implementations handle all of the sensor/camera command and control portions of the external interface logic. For the AIA GigE protocol, for example, the implmentation of the SocCamera::tcCommandInterface would cover the GVCP portion of the specification. The tcIOChannel implementations are responsible for routing received image data (typcally in image stream) to the external interface logic. For the AIA GigE protocol, as an example, the impelmentation of the tcIOChannel would implement the GVSP portion of the specification. The SocCamera::tcSensorBoard class implementation manages the physically connected sensor (e.g., controlling power sequencing, interfacing to the SPI or I2C control interface on most imagers, etc.) as well as any firmware components involved with transferring sensor image data to the tcIOChannel input destinations (generally an "FPGA pipeline" between the sensor output and memory buffers managed by the tcRAMStreamer class). Note: the digram does not show all possible Command Interface or IO Channel impelmentations in the current library.

Image Class Hierarchy

The SocCamera::tcCommandInterface bridges command information from a host via the SocCamera::tcAbstractHandler interface, either through direct SocCamera::tcAbstractHandler::execute() method for text based protocols, such as the CameraLink Protocol, or via a callback though the GenICam SocCamera::tcRegisterFile::update_word() mechanism. See (Adding GenICam Registers) for more details regarding GenICam Register access.

Typically, adding support for a new sensor involves implementing a new SocCamera::tcSensorBoard class, while adding a new camera phyiscal interface (or new link layer protocol on an existing interface) involves implementing a new SocCamera::tcCommandInterface and a new tcIOChannel class.