<span class="comment">// sample_for_working_with_FFS.cpp program operations: </span>
<span class="comment">//</span>
<span class="comment">// - gets and displays the information about FFS status (XI_PRM_FREE_FFS_SIZE, XI_PRM_USED_FFS_SIZE)</span>
<span class="comment">// - write short text from variable test_text to FFS as file with name test.txt</span>
<span class="comment">// - read short text from FFS from file test.txt to variable read_text</span>
<span class="comment">// - gets and displays the information about FFS status (XI_PRM_FREE_FFS_SIZE, XI_PRM_USED_FFS_SIZE)</span>
<span class="preprocessor">#include</span> <span class="include">"stdafx.h"</span>
<span class="preprocessor">#ifdef</span> __APPLE__
<span class="preprocessor">#include</span> <span class="include"><m3api/xiApi.h></span>
<span class="preprocessor">#include</span> <span class="include"><m3api/xiExt.h></span>
<span class="preprocessor">#else</span>
<span class="preprocessor">#include</span> <span class="include">"xiApi.h"</span>
<span class="preprocessor">#include</span> <span class="include">"xiExt.h"</span>
<span class="preprocessor">#endif</span>
<span class="preprocessor">#define</span> HandleResult(res,place) <span class="keyword">if</span> (res!=XI_OK) {printf(<span class="string"><span class="delimiter">"</span><span class="content">Error after %s (%d)</span><span class="char">\n</span><span class="delimiter">"</span></span>,place,res);<span class="keyword">goto</span> finish;}
<span class="predefined-type">int</span> _tmain(<span class="predefined-type">int</span> argc, _TCHAR* argv[])
{
<span class="comment">// image buffer</span>
XI_IMG image;
image.size = <span class="keyword">sizeof</span>(XI_IMG);
image.bp = <span class="predefined-constant">NULL</span>;
image.bp_size = <span class="integer">0</span>;
<span class="comment">// Sample for XIMEA API V2.10</span>
HANDLE xiH = <span class="predefined-constant">NULL</span>;
XI_RETURN stat = XI_OK;
<span class="comment">// Get number of camera devices</span>
DWORD dwNumberOfDevices = <span class="integer">0</span>;
stat = xiGetNumberDevices(&dwNumberOfDevices);
HandleResult(stat,<span class="string"><span class="delimiter">"</span><span class="content">xiGetNumberDevices (no camera found)</span><span class="delimiter">"</span></span>);
<span class="keyword">if</span> (!dwNumberOfDevices)
{
printf(<span class="string"><span class="delimiter">"</span><span class="content">No camera found</span><span class="char">\n</span><span class="delimiter">"</span></span>);
<span class="keyword">goto</span> finish;
}
<span class="comment">// Retrieving a handle to the camera device </span>
stat = xiOpenDevice(<span class="integer">0</span>, &xiH);
HandleResult(stat,<span class="string"><span class="delimiter">"</span><span class="content">xiOpenDevice</span><span class="delimiter">"</span></span>);
<span class="comment">//---------------------------------------------------------------</span>
<span class="comment">// get FFS info</span>
<span class="predefined-type">int</span> num_free = <span class="integer">0</span>;
<span class="predefined-type">int</span> num_used = <span class="integer">0</span>;
<span class="comment">// get FFS info</span>
stat = xiGetParamInt(xiH, XI_PRM_FREE_FFS_SIZE, &num_free);
HandleResult(stat,<span class="string"><span class="delimiter">"</span><span class="content">xiGetParamInt (XI_PRM_FREE_FFS_SIZE)</span><span class="delimiter">"</span></span>);
stat = xiGetParamInt(xiH, XI_PRM_USED_FFS_SIZE, &num_used);
HandleResult(stat,<span class="string"><span class="delimiter">"</span><span class="content">xiGetParamInt (XI_PRM_USED_FFS_SIZE)</span><span class="char">\n</span><span class="char">\n</span><span class="delimiter">"</span></span>);
printf(<span class="string"><span class="delimiter">"</span><span class="content">FFS stats:</span><span class="char">\n</span><span class="delimiter">"</span></span>);
printf(<span class="string"><span class="delimiter">"</span><span class="content">Free bytes : %d </span><span class="char">\n</span><span class="delimiter">"</span></span>, num_free);
printf(<span class="string"><span class="delimiter">"</span><span class="content">Used bytes : %d </span><span class="char">\n</span><span class="delimiter">"</span></span>, num_used);
<span class="comment">//---------------------------------------------------------------</span>
<span class="comment">// write file to FFS</span>
<span class="predefined-type">char</span> test_file[MAX_PATH]=<span class="string"><span class="delimiter">"</span><span class="content">test.txt</span><span class="delimiter">"</span></span>;
<span class="predefined-type">char</span> test_text[MAX_PATH]=<span class="string"><span class="delimiter">"</span><span class="content">XIMEA was created by the group of industry leading Imaging and Vision veterans originating from DELARO and SOFTHARD companies.</span><span class="delimiter">"</span></span>;
stat = xiSetParamString(xiH, XI_PRM_FFS_FILE_NAME, test_file, MAX_PATH);
HandleResult(stat,<span class="string"><span class="delimiter">"</span><span class="content">xiSetParamString (XI_PRM_FFS_FILE_NAME)</span><span class="delimiter">"</span></span>);
stat = xiSetParamString(xiH, XI_PRM_WRITE_FILE_FFS, test_text, MAX_PATH);
HandleResult(stat,<span class="string"><span class="delimiter">"</span><span class="content">xiSetParamString (XI_PRM_WRITE_FILE_FFS)</span><span class="delimiter">"</span></span>);
<span class="comment">//---------------------------------------------------------------</span>
<span class="comment">// read data from FFS</span>
<span class="predefined-type">char</span> read_text[MAX_PATH]=<span class="string"><span class="delimiter">"</span><span class="delimiter">"</span></span>;
stat = xiGetParamString(xiH, XI_PRM_READ_FILE_FFS, read_text, MAX_PATH);
HandleResult(stat,<span class="string"><span class="delimiter">"</span><span class="content">xiSetParamString (XI_PRM_READ_FILE_FFS)</span><span class="delimiter">"</span></span>);
printf(<span class="string"><span class="delimiter">"</span><span class="content">Text read from FFS:</span><span class="char">\n</span><span class="content">%s</span><span class="char">\n</span><span class="char">\n</span><span class="delimiter">"</span></span>, read_text);
<span class="comment">//---------------------------------------------------------------</span>
<span class="comment">// get FFS info</span>
stat = xiGetParamInt(xiH, XI_PRM_FREE_FFS_SIZE, &num_free);
HandleResult(stat,<span class="string"><span class="delimiter">"</span><span class="content">xiGetParamInt (XI_PRM_FREE_FFS_SIZE)</span><span class="delimiter">"</span></span>);
stat = xiGetParamInt(xiH, XI_PRM_USED_FFS_SIZE, &num_used);
HandleResult(stat,<span class="string"><span class="delimiter">"</span><span class="content">xiGetParamInt (XI_PRM_USED_FFS_SIZE)</span><span class="char">\n</span><span class="char">\n</span><span class="delimiter">"</span></span>);
printf(<span class="string"><span class="delimiter">"</span><span class="content">FFS stats:</span><span class="char">\n</span><span class="delimiter">"</span></span>);
printf(<span class="string"><span class="delimiter">"</span><span class="content">Free bytes : %d </span><span class="char">\n</span><span class="delimiter">"</span></span>, num_free);
printf(<span class="string"><span class="delimiter">"</span><span class="content">Used bytes : %d </span><span class="char">\n</span><span class="delimiter">"</span></span>, num_used);
<span class="label">finish:</span>
<span class="comment">// Close device</span>
<span class="keyword">if</span> (xiH)
xiCloseDevice(xiH);
printf(<span class="string"><span class="delimiter">"</span><span class="content">Done</span><span class="char">\n</span><span class="delimiter">"</span></span>);
getchar();
<span class="keyword">return</span> <span class="integer">0</span>;
}