• Bug fixing (HTTP, TCP Client, IP address check, EtherNet/IP, PROFINET, EtherCAT)

  • Examples

    • New example for IP management via HTTP and TCP proxy




  • Conformance against Conformance Test Specification 2.4

  • Support for dynamic module configuration (module pulling and plugging)

  • Simplified API for module creation and definition of transport (cyclic channel, RPC)

  • Alarm Queue support

  • MRP

  • Support for definition of modules with either cyclic channel or RPC transport, thus increase maximum module size to 1434 bytes


Detailed Changelog


Issue key




permitting RPCs from GOAL main task only (clone)

Triggering RPC from high priority timers or interrupts relocates the GOAL loop from GOAL main task into these "area". In result, the whole system may block.

A task check shall ensure, that RPCs are requested from GOAL main task only.


EtherCAT: align handling of numerical and non numerical objects in goal wrapper function goal_ecatObjValGet (clone)



PROFINET: Integration of MRP 

Add MRP entries to GSDML file.
Add MRP Feature to firmware build.
Add MRP activation to application example.


PROFINET: Add missing functions to wrapper (Alarm queue) (clone)

The alarm queue handling is not available on multicore targets, because the functions are missed in RPC wrapper.


EtherNet/IP: Allow definitions of assemblies with arbitrary size using RPC transport (clone)

Allow definitions of assemblies with arbitrary size using RPC transport.


EtherCAT: Allow definition of objects mappable in PDOs with RPC transport (clone)

Allow definition of objects mappable in PDOs with RPC transport.


EtherCAT: Add API to configure EoE (clone)

Extended EtherCAT API to configure EoE.


EtherNet/IP: Integration of ACD

The Stack is now supporting Address Conflict Detection.


Example for tcp proxy forwarding

A new application example shows usage of tcp channels to forward a tcp based service from the host (raspberry pi, SSH).


PROFINET: Cleanup wrapper - remove profinet stack headers from dependencies

Simplify the profinet wrapper by removing dependencies from the profinet stack.


PROFINET: Add dynamic module configuration to wrapper

Allow dynamic module configuration for PROFINET applications.


Example for IP configuration via web server

A new application example shows usage of web server and IP configuration.


EIP CTC Wrapper: add Virtual Class Support 

Virtual classes are now available on multicore targets.



Implement additional configuration flag which enables the following automapping:

  • emulation of cyclic data exchange via Input/Output data API

  • emulation of IOCS/IOPS set/get

  • emulation of DCP blink via Data Provider

  • disable emulated RPC calls if possible (eg. disable DCP blink if Data Provider is mapped)

  • emulate NEW_IO_DATA callback if cycle counter changes (if Data Provider is mapped), otherwise emulate on every update

  • add DM mapping/removal to plug/pull actions


MCTC: Re-add removed statistic counters (clone)



Issue key




PROFINET: False handling of record read PDInterfaceMrpDataAdjust (clone)

In case of MRProle = MRP disabled the record length should be zero.


deviating device information in EEPROM binary and xml file

The strings for product type, product name and vendor name do not match in EEPROM and xml file. Furthermore, the RevisionID differs.


EtherNet/IP: initial run state is not propagated by run/idle callback

The application provides a run/idle callback, which is only triggered if the originator establishs a connection in idle state.


EtherNet/IP: empty assembly config on multi core targets

If the device receives an assembly configuration from a EIP master, the application is unable to read it on multi core targets. The returned assembly configuration is always zero.

The implemented method for reading the config assembly in the examples provided with version 2.0 did not work. Reading of configuration assembly data should be done using the function *_goal_eipAssemblyObjectRead_*. Beside that this assembly should be mapped to RPC because of the update cycle of the content. Examples have been adapted.


EtherCAT: potential crash in PDO mapping with gaps (clone)

If the PDO mapping check gets a gap entry, i.e. a NULL pointer, the interal size of this pointer is not updated. This may lead to a crash.



To fix that, the size is set also in the case of a gap.


EtherCAT: the RPC function goal_ecatObjValGet is unable to get proper values (clone)

The function doesn't correctly handle the RPC stack and thus fails to get proper values.


EtherNet/IP: Request lengths are not checked at TCPIP attributes

Add a length check to evaluate the received requests.


EtherNet/IP: DHCP process restarts if TCPIP configuration will set like before

Check TCPIP configuration for changes before applying.


HTTP: URL string not assigned for POST requests with several chunks

If CC receives a POST request with several chunks and the POST request is not a multipart-formdata, the URL string in the application callback info which CC sends to AC is the null. In case of POST request with multipart-formdata this error does not occur.


Validation of IP address not complete (clone)

IP settings are not completely checked for validity. Following checks have been added to make sure the device always is in operational state:

  • Invalid entries from RFC 6890 are not allowed

  • IP and Gatway must not be a broadcast address

  • IP and Gatway must not be a local address (

  • valid IP / Netmask combination

  • Gateway address must be in the same network as the device

  • Addressed from class D network are not allowed

  • Netmask must a valid combination of bitwise 1s and 0s

  • Reserved entries from RFC 5735



HTTP: formdata in POST message is incorrectly recognized

If first boundary string after header end was not found in the first chunk, the last boundary string can be contained in the last formdata.


EtherNet/IP: Cycle is not propagated to AC (using generic data provider)

The generic data provider contains a field cntUpdate, which should be used to signalize the current cycle to the application controller. Each time the PLC updates assembly data this counter should be changed. Thus the application controller can detect the actual PLC cycle.


EtherNet/IP: Increase possible size of assemblies of connections (clone)

Check if DM can used complete for data exchange.


PROFINET rpc callback ALARM_ACK_TIMEOUT possibly leads to loss of communication (clone)

When PROFINET alarms are not acknowledged a communication loss may occur.


connection reset or aborted at registering an another session (clone)

Check the received request to change the IP-Address, if the IP-Address must be changed or is still the same. If the IP is the same, the Interface must not be restarted.


no response to an invalid set request for TCPIP class attribute 4 (clone)

Check the received request to change the IP-Address, if the IP-Address must be changed or is still the same. If the IP is the same, the Interface must not be restarted.


Invalid delay of for unicast identity responses (clone)

Split the single Socket, which receives both - unicast and broadcast - and add a second additional socket, which handles only unicast-frames. The Stack can now decide based on the given socket, if the received frame is a unicast- or a broadcastframe and must be delayed or not.


EtherNet/IP: Missing error propagation when objects mapped to data mapper exceed the maximum size

Check return-value of the function, which registers the Datamapper partition. Return error, if the partition size exceeds the maxmum size.


EtherCAT Wrapper: Missing error propagation when objects mapped to data mapper exceed the maximum size

Process return value of the function.


PROFINET Wrapper: Missing error propagation when objects mapped to data mapper channel are exceed the maximum size

Process return value of the function.


TCP Client: reconnection of TCP client is not posible

A reconnection (reactivation) of the TCP client does not reopen the connection to the server.


TCP Client: if connection fails a data channel offline occurs

The TCP client leads to a SPI communication stall if the TCP server is not reachable.


HTTP: form data using "POST" leads to crash on STM32 AC when using Safari Browser

Depending on browser or target HTTP post handles data differently.


HTTP: segmentation fault if no template handling function is registered (clone)

A systematic failure occurs when invalid parameters are passed to the api function for registering templates. This should be checked for validity.


CCM RPC: Writing of virtual variables results in overflow, only possible with data length 0

Usage of the correct length information fixed writing of virtual cm variables.


HTTP: POST url-encoded data is not received by the AC

data is received when compiling AC/CC for linux, however on the target it behaves differently


HTTP: Template replacement only happens in first fragment of HTTP data (clone)

Template replacement only happens in the first bytes of the http content. This seams to relate to the RPC fragmentation, thus only the first fragment is processed.


Failstate not entered when process data watchdog occurs

One warning messageis reported with every run of the CTT Test File TF1200[4][10]. The Warning states that DuT remains in OP (AL Status = 0x08) state after the process data communication is stopped:The expected response of the DuT in case of stopped process data communication when in OP, is a transition to ErrSafeOp with AL Status = 0x14, and setting the local Outputs to a safe state. The test case is build according to ETG.1000-part 6, Table 103, case #49 ( ). Depending on the application the safe state may be defined differently. Please check if upon process data loss the safe state of DuT is defined correctly.


occactional CRC errors during SPI transmission when using simple API

could not be reproduced with standard software


Plugfest-Test fail P12.5. (EO/IO test case)

Adapter Device Tests : P12.5 - EO/IO : Class 1 Connection Interaction - Exclusive Owner / Input Only - connection time out occurs


Plugfest-Test fail P9.6.1

Fix the flashing cycle of the MS-LED and NS-LED while major recoverable und unrecoverable fault.


EtherNet/IP: After switch from PNIO to EIP IP settings may be inconsistent

EIP has additional settings for network settings. If in between EIP operation PNIO stack is run, those settings may be inconsistent to the settings of GOAL. One situation should be catched:

  • EIP starts with IP and DHCP disabled -> enable DHCP and store settings