/**
 * \ingroup dev_examples
 *
 * \defgroup fakeFrameGrabber_basic Example for fakeFrameGrabber (fakeFrameGrabber_basic)

Instantiates \ref cmd_device_fakeFrameGrabber "fakeFrameGrabber" device implemented by FakeFrameGrabber.
\verbatim
# start up a fake image source of size 640x480, with 4 images per second
device fakeFrameGrabber
width 640
height 480
period 0.25
\endverbatim
If this text is saved in a file called fakeFrameGrabber_basic.ini then the device can be created by doing:
\verbatim
yarpdev --file fakeFrameGrabber_basic.ini
\endverbatim
Of course, the configuration could be passed just as command line options, or as a yarp::os::Property object in a program:
\code
Property p;
p.fromConfigFile("fakeFrameGrabber_basic.ini");
// of course you could construct the Property object on-the-fly
PolyDriver dev;
dev.open(p);
if (dev.isValid()) { /* use the device via view method */ }
\endcode
Here is a list of properties checked when starting up a device based on this configuration file.
Note that which properties are checked can depend on whether other properties are present.
In some cases properties can also vary between operating systems.
So this is just an example

<table>
<tr><td>PROPERTY</td><td>DESCRIPTION</td><td>DEFAULT</td></tr>
<tr><td>device</td><td></td><td></td></tr>
<tr><td>fakeFrameGrabber_rpc_port</td><td>rpc port for the fakeFrameGrabber</td><td>/fakeFrameGrabber/rpc</td></tr>
<tr><td>width</td><td>desired width of test image</td><td>320</td></tr>
<tr><td>height</td><td>desired height of test image</td><td>240</td></tr>
<tr><td>horizontalFov</td><td>desired horizontal fov of test image</td><td>1.0</td></tr>
<tr><td>verticalFov</td><td>desired vertical fov of test image</td><td>2.0</td></tr>
<tr><td>mirror</td><td>mirroring disabled by default</td><td>0</td></tr>
<tr><td>syncro</td><td>syncronize producer and consumer, so that all images are used once and only once</td><td>0</td></tr>
<tr><td>topIsLow</td><td>explicitly set the topIsLow field in the images</td><td>1</td></tr>
<tr><td>physFocalLength</td><td>Physical focal length of the fakeFrameGrabber</td><td>3.0</td></tr>
<tr><td>focalLengthX</td><td>Horizontal component of the focal length of the fakeFrameGrabber</td><td>4.0</td></tr>
<tr><td>focalLengthY</td><td>Vertical component of the focal length of the fakeFrameGrabber</td><td>5.0</td></tr>
<tr><td>principalPointX</td><td>X coordinate of the principal point of the fakeFrameGrabber</td><td>6.0</td></tr>
<tr><td>principalPointY</td><td>Y coordinate of the principal point of the fakeFrameGrabber</td><td>7.0</td></tr>
<tr><td>rectificationMatrix</td><td>Matrix that describes the lens' distortion(fake)</td><td>1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0</td></tr>
<tr><td>distortionModel</td><td>Reference to group of parameters describing the distortion model of the camera</td><td>FishEye</td></tr>
<tr><td>k1</td><td>Radial distortion coefficient of the lens(fake)</td><td>8.0</td></tr>
<tr><td>k2</td><td>Radial distortion coefficient of the lens(fake)</td><td>9.0</td></tr>
<tr><td>k3</td><td>Radial distortion coefficient of the lens(fake)</td><td>10.0</td></tr>
<tr><td>t1</td><td>Tangential distortion of the lens(fake)</td><td>11.0</td></tr>
<tr><td>t2</td><td>Tangential distortion of the lens(fake)</td><td>12.0</td></tr>
<tr><td>freq</td><td>rate of test images in Hz</td><td></td></tr>
<tr><td>period</td><td>period of test images in seconds</td><td></td></tr>
<tr><td>mode</td><td>bouncy [ball], scrolly [line], grid [grid], grid multisize [size], random [rand], none [none], time test[time]</td><td>line</td></tr>
<tr><td>src</td><td></td><td></td></tr>
<tr><td>timestamp</td><td>should write the timestamp in the first bytes of the image</td><td></td></tr>
<tr><td>noise</td><td>Should add noise to the image (uses snr)</td><td></td></tr>
<tr><td>snr</td><td>Signal noise ratio ([0.0-1.0] default 0.5)</td><td>0.5</td></tr>
<tr><td>bayer</td><td>should emit bayer test image?</td><td></td></tr>
<tr><td>mono</td><td>should emit a monochrome image?</td><td></td></tr>
</table>

\sa FakeFrameGrabber

 */
