In order to enable EtherNet/IP support in GOAL, the goal_eipInit function must be called within the appl_init function. The configuration and creation of a new EtherNet/IP instance is done within the appl_setup function.
static GOAL_EIP_T *pHdlEip; /**< GOAL Ethernet/ IP handle */ GOAL_STATUS_T appl_init( void ) { GOAL_STATUS_T res; /* result */ res = goal_eipInit(); if (GOAL_RES_ERR(res)) { goal_logErr("Initialization of Ethernet/IP failed"); } return res; } /****************************************************************************/ /** Application Setup * * Setup the application. */ GOAL_STATUS_T appl_setup( void ) { GOAL_STATUS_T res; /* result */ /* for a real device the serial number should be unique per device */ res = goal_eipCfgSerialNumSet(123456789); if (GOAL_RES_ERR(res)) { goal_logErr("failed to set Serial Number"); return res; } goal_logInfo("create new instance"); res = goal_eipNew(&pHdlEip, EIP_INSTANCE_DEFAULT, main_eipCallback); if (GOAL_RES_ERR(res)) { goal_logErr("failed to create a new EtherNet/IP instance"); return res; } res = main_eipApplInit(pHdlEip); if (GOAL_RES_ERR(res)) { goal_logErr("failed to initialize assembly and attribute configuration"); return res; } return GOAL_OK; }