CameraController is an interface and provides an API one can use to control a tethered camera of a supported make and model from an application. Basic functionalities include taking pictures, and setting exposure, shutter speed, etc. Other functionalities such as live-viewing may be supported, depending on the camera make. Under the hood, CameraController is an adapter/wrapper to the SDKs provided by the various camera manufacturers.