What does error CIFX_DEV_FUNCTION_FAILED (0x800C0025) mean?

This error occurs if a device does not respond to the commands from the host. It usually happens when trying to execute commands that are transmitted to the firmware using the so-called change of state mechanism.

If a change of state action (e.g. CHANNEL_INIT) is transferred to the hardware the host needs to wait for the firmware to release the change-of-state handshake bits inside the dual-port memory, before a new change-of-state command can be executed.

 

The following functions issue a change-of-state command to the firmware:

  • xChannelBusState
  • xChannelHostState
  • xChannelReset
  • xChannelDMAState
  • xChannelConfigLock

Possible Reasons:

  • Timeout passed to function is too short
  • Firmware does not handle the change-of-state commands anymore (crashed or bug)
  • In interrupt mode an interrupt may have been lost due to reading of handshake cells, when not allowed to (e.g. debugging output)
  • (theoretical issue, never observed) When using the cifX Toolkit the implementation of OS_EnterLock/OS_LeaveLock might be wrong, resulting in wrong handshake flag synchronization and possible double toggling of handshake flags