<div dir="ltr"><div>Hi,</div><div>I am working for a EU founded project named CORBYS (<a href="http://www.corbys.eu">www.corbys.eu</a>) developing a training device for gait rehabilitation. We plan to use Igh Ethercat together with OROCOS and ROS running Linux 10.04 for our robotic system.</div>
<div> </div><div>I have tested a very basic test application as a C program based on the Igh examples.</div><div>  This works as expected.</div><div> </div><div>I have started to make a C++ framework for an application interfacing to Igh.</div>
<div>  This is based on my working C test program rewritten into a C++ class structure.</div><div>  The final program is planned to support 15 slavetypes with 50 slaves instances.</div><div> </div><div>It seems that C++ doesnt like the way ecrt.h does forward referencing of data structures.</div>
<div> </div><div>In the file ecrt.h file the structure ec_master is declared as follows:</div><div>    /******************************************************************************<br>     * Data types<br>     *****************************************************************************/</div>
<div>    struct ec_master;<br>    typedef struct ec_master ec_master_t; /**< \see ec_master */</div><div> </div><div>This is the only declaration of the structure in this header file.</div><div>My impression is that the content of the structure is resolved when linking with the library</div>
<div>    /opt/etherlab/lib/libethercat.a</div><div> </div><div> </div><div>When including this in my C++ files i am importing ecrt.h in "C-mode"</div><div>    extern "C" {<br>    #include "ecrt.h"<br>
    }<br></div><div>The data structures declared in ecrt.h are used as members in class objects.</div><div>    class RtnIf {<br>    protected:<br>        ec_master_t *MasterPtr;<br></div><div>When compiling the compiler reports the following error:</div>
<div>    /home/ecmaster/ros_workspace/rtn_test/RTN-master-inc/rtnm_if.h:49: error: ISO C++ forbids declaration of ‘ec_master_t’ with no type<br>    /home/ecmaster/ros_workspace/rtn_test/RTN-master-inc/rtnm_if.h:49: error: expected ‘;’ before ‘*’ token</div>
<div> </div><div>Do you have experience interfacing Igh to C++?</div><div> </div><div>Currently I have tested this as a user space application.</div><div>Do you have experience using C++ in kernel-mode?</div><div> </div><div>
I wonder whether there has to be made a set of wrapper functions copying the data needed into new locally defined data structures.</div><div> </div><div>More details and examples can be added if needed.</div><div> </div><div>
Any comments welcome.</div><div> </div><div>Best regards </div><div>Steffen Dalgard</div><div>SINTEF ICT</div><div>Norway</div></div>