AM243x INDUSTRIAL COMMUNICATIONS SDK  2025.00.00

Introduction

Functions

void EIP_DLR_init (EIP_DLRHandle dlrHandle)
 API to initialize the DLR driver. More...
 
void EIP_DLR_deinit (EIP_DLRHandle dlrHandle)
 API to de-initialize the DLR driver. More...
 
void EIP_DLR_start (EIP_DLRHandle dlrHandle)
 API to start the DLR driver Calling this enables DLR on the device. More...
 
void EIP_DLR_stop (EIP_DLRHandle dlrHandle)
 API to stop the DLR driver Halt DLR. Calling this disables DLR on the device. More...
 
void EIP_DLR_port0ISR (uintptr_t arg)
 Fast ISR for Port 0, bypasses the buffer copy and NDK. More...
 
void EIP_DLR_port1ISR (uintptr_t arg)
 Fast ISR for Port 1, bypasses the buffer copy and NDK. More...
 
void EIP_DLR_beaconTimeoutISR_P0 (uintptr_t arg)
 ISR for beacon timeout for Port 0. More...
 
void EIP_DLR_beaconTimeoutISR_P1 (uintptr_t arg)
 ISR for beacon timeout for Port 1. More...
 
void EIP_DLR_port0ProcessLinkBrk (uint8_t linkStatus, void *arg2)
 Process DLR state machine in the event of a link break on Port0. More...
 
void EIP_DLR_port1ProcessLinkBrk (uint8_t linkStatus, void *arg2)
 Process DLR state machine in the event of a link break on Port1. More...
 
void EIP_DLR_neighborTimeoutISR0 (ClockP_Object *obj, void *arg)
 ISR for Neighbor timeout timer for port 0. More...
 
void EIP_DLR_neighborTimeoutISR1 (ClockP_Object *obj, void *arg)
 ISR for Neighbor timeout timer for port 1. More...
 
void EIP_DLR_addVlanID (uint8_t *src, uint16_t vlanID)
 
void EIP_DLR_genNCReqFrame (EIP_DLRHandle dlrHandle, uint8_t *src, uint8_t sourcePort)
 
void EIP_DLR_genNCResFrame (uint8_t *src, uint8_t sourcePort, uint8_t reqSrcPort, uint32_t sequenceId)
 
void EIP_DLR_genNeighborLinkStatFrame (EIP_DLRHandle dlrHandle, uint8_t *src, uint8_t sourcePort, uint8_t linkOrNeighbor, uint8_t linkStatus)
 
void EIP_DLR_initDLRFrameHeader (uint8_t *src, uint8_t *header)
 
void EIP_DLR_addSignOnNumNodes (uint8_t *src, uint16_t numNodes)
 
void EIP_DLR_processDLRFrame (EIP_DLRHandle dlrHandle, uint8_t *pktBuffer, uint8_t portNum, uint16_t size)
 Processes a sign on and Neighbor check request frame. More...
 
void EIP_DLR_dRAMInit (EIP_DLRHandle dlrHandle)
 
void EIP_DLR_resetStateMachine (EIP_DLRHandle dlrHandle)
 Initialize the state machine when it goes back to idle state. More...
 
void EIP_DLR_setDefaultValue (EIP_DLRHandle dlrHandle)
 
void EIP_DLR_switchToFault (EIP_DLRHandle dlrHandle)
 
void EIP_DLR_switchToNormal (EIP_DLRHandle dlrHandle)
 
int32_t EIP_DLR_isrInit (EIP_DLRHandle dlrHandle)
 
void EIP_DLR_periodicProcessing (ClockP_Object *obj, void *userArg)
 
void EIP_DLR_addToExceptionList (EIP_DLRHandle dlrHandle, uint8_t *macId)
 
void EIP_DLR_clearExceptionList (EIP_DLRHandle dlrHandle)
 
uint8_t EIP_DLR_checkSupervisorException (uint8_t *macId, EIP_DLRHandle dlrHandle)
 
void EIP_DLR_setDividerIEPWatchdog (EIP_DLRHandle dlrHandle)
 Sets the clock divider to 1us for IEP watch dog timers. More...
 
void EIP_DLR_enableIEPWatchdog (EIP_DLRHandle dlrHandle, uint8_t id)
 Enable the IEP Watch dog timers. More...
 
void EIP_DLR_disableIEPWatchdog (EIP_DLRHandle dlrHandle, uint8_t id)
 Disable the IEP Watch dog timers. More...
 
void EIP_DLR_setTimeoutIEPWatchdog (EIP_DLRHandle dlrHandle, uint16_t periodInMicroSec, uint8_t id)
 Set the timeout value in watchdog. More...
 
void EIP_DLR_setPDIWatchdogTriggerMode (EIP_DLRHandle dlrHandle, uint32_t mode)
 Set the PDI WD trigger mode. More...
 
EIP_DLR_portLinkStatus EIP_DLR_checkOtherPortLinkStatus (EIP_DLRHandle dlrHandle, uint8_t currentPort)
 Checks the link status of the port opposite to the current port. More...
 
int32_t EIP_DLR_isSelfSupervisorCapable ()
 API to check whether the DLR Supervisor capability is supported by the EIP FWHAL Library. More...
 
void EIP_DLR_startBeaconIntervalTimer (EIP_DLRHandle dlrHandle, uint32_t beaconInterval)
 API to start the beacon interval timer. More...
 
void EIP_DLR_configureSupervisorStatus (EIP_DLRHandle dlrHandle)
 
void EIP_DLR_copyBeaconToDMEM (EIP_DLRHandle dlrHandle, uint8_t *port0BeaconFrame, uint8_t *port1BeaconFrame)
 API to copy the Beacon Frames into ICSS DMEM for easy firmware access. More...
 
void EIP_DLR_copySupervisorConfig (EIP_DLRHandle dlrHandle)
 API to copy the DLR Supervisor values into ICSS SMEM for easy firmware access. More...
 
void EIP_DLR_configureSupFrames (EIP_DLRHandle dlrHandle)
 API to configure the frames that need to be sent out by the supervisor. More...
 
void EIP_DLR_configSupervisor (EIP_DLRHandle dlrHandle)
 API to configure the DLR Supervisor Capability Calling this can enable/disable DLR Supervisor. More...
 
int32_t EIP_DLR_beaconTimeoutSupProcessing (EIP_DLRHandle dlrHandle, uint8_t portNum, uint8_t priorNodeState)
 Handle beacon timeout related processing as a DLR Supervisor. More...
 
void EIP_DLR_transitionToNormalStateSupProcessing (EIP_DLRHandle dlrHandle, uint8_t portNum)
 Process state change related handling as a DLR Supervisor. More...
 
int32_t EIP_DLR_processPort0SupLinkBrk (EIP_DLRHandle dlrHandle)
 Perform Supervisor related processing of DLR state machine in the event of a link break on Port0. More...
 
int32_t EIP_DLR_processPort1SupLinkBrk (EIP_DLRHandle dlrHandle)
 Perform Supervisor related processing of DLR state machine in the event of a link break on Port1. More...
 
void EIP_DLR_transmitSignOnFrame (ClockP_Object *obj, void *userArg)
 ISR for Sign-on timer timeout. More...
 
void EIP_DLR_transmitAnnounce (ClockP_Object *obj, void *userArg)
 ISR for Announce timer timeout. More...
 
void EIP_DLR_genSignOnFrame (EIP_DLRHandle dlrHandle, uint8_t *src)
 
void EIP_DLR_genAnnounceFrame (EIP_DLRHandle dlrHandle, uint8_t *src, uint8_t ringState)
 
void EIP_DLR_genLocateFaultFrame (EIP_DLRHandle dlrHandle, uint8_t *src, uint8_t sourcePort)
 
int32_t EIP_DLR_processSignOnFrameAsSupervisor (EIP_DLRHandle dlrHandle, uint8_t *pktBuffer, uint16_t size)
 Processes a sign on frame as the DLR Supervisor. More...
 
void EIP_DLR_processLinkNeighborStatusFrameSup (EIP_DLRHandle dlrHandle, uint8_t *pktBuffer, uint8_t portNum, uint16_t size)
 Processes a Link Status/Neighbor Status frame as the DLR Supervisor. More...
 
void EIP_DLR_addModuleIPAddress (EIP_DLRHandle dlrHandle, uint32_t newIP)
 
int32_t EIP_DLR_handleVerifyFaultLocationReq (EIP_DLRHandle dlrHandle)
 API to handle a Verify_Fault_Location service request. More...
 
void EIP_DLR_transitionToBackupSupervisor (EIP_DLRHandle dlrHandle)
 API to transition from the active ring supervisor to a backup supervisor. More...
 
int32_t EIP_DLR_serviceRingSupConfigSetRequest (EIP_DLRHandle dlrHandle, superConfig *supCfg)
 Sets DLR supervisor configuration parameters. More...
 
int32_t EIP_DLR_resetRingFaultsSincePowerUp (EIP_DLRHandle dlrHandle)
 Resets the count of ring faults since power-up. More...
 
int32_t EIP_DLR_serviceRestartSignOnReq (EIP_DLRHandle dlrHandle)
 Services a DLR Sign-On restart request from a DLR supervisor node. More...
 
int32_t EIP_DLR_serviceClearRapidFaultsReq (EIP_DLRHandle dlrHandle)
 Services a request to clear rapid fault detection state and reset supervisor. More...
 
void EIP_DLR_announceSuppressionTimeoutHandler (EIP_DLRHandle dlrHandle)
 Handles timeout of announce suppression period for DLR supervisor configuration changes. More...
 
int32_t EIP_DLR_startAnnounceSuppressionTimer (EIP_DLRHandle dlrHandle, uint32_t beaconTimeout)
 Configures and starts the DLR announce suppression timer. More...
 
void EIP_DLR_initRapidFaultTracker (EIP_DLRHandle dlrHandle)
 Initialize the Rapid faults tracker. More...
 
void EIP_DLR_processTickRapidFaultTracker (ClockP_Object *obj, void *userArg)
 Process one second tick for fault tracking. More...
 
void EIP_DLR_rapidFaultsDetected (EIP_DLRHandle dlrHandle)
 API to handle Rapid Fault-Restore cycles. More...
 
void EIP_DLR_addRapidFault (EIP_DLRHandle dlrHandle)
 Adds a new rapid fault occurrence. More...
 
void EIP_DLR_copySelfSupervisorConfig (EIP_DLRHandle dlrHandle, supervisorStatusCopyType copyType)
 Copy to or from the Self Supervisor Configuration. More...
 
void EIP_DLR_clearRingProtocolParticipantTable (EIP_DLRHandle dlrHandle)
 Clear ring protocol participants table. More...
 
void EIP_DLR_backupSupCopyActiveRingSupParams (EIP_DLRHandle dlrHandle)
 Copy active ring supervisor parameters as a backup supervisor. More...
 
int32_t EIP_DLR_checkForActiveSupTransition (EIP_DLRHandle dlrHandle, superConfig *supCfg)
 Check if the device can transition from a backup ring supervisor to the active ring supervisor. More...
 
void EIP_DLR_stopBeaconIntervalTimer (EIP_DLRHandle dlrHandle)
 Stop the beacon interval timer - also stops the beacon frame transmission. More...
 

Function Documentation

◆ EIP_DLR_init()

void EIP_DLR_init ( EIP_DLRHandle  dlrHandle)

API to initialize the DLR driver.

    Initializes variables and timers & clocks, call once at the beginning
Parameters
dlrHandle[in] DLR driver handle

◆ EIP_DLR_deinit()

void EIP_DLR_deinit ( EIP_DLRHandle  dlrHandle)

API to de-initialize the DLR driver.

Parameters
dlrHandle[in] DLR driver handle

◆ EIP_DLR_start()

void EIP_DLR_start ( EIP_DLRHandle  dlrHandle)

API to start the DLR driver Calling this enables DLR on the device.

Parameters
dlrHandle[in] DLR driver handle

◆ EIP_DLR_stop()

void EIP_DLR_stop ( EIP_DLRHandle  dlrHandle)

API to stop the DLR driver Halt DLR. Calling this disables DLR on the device.

Parameters
dlrHandle[in] DLR driver handle

◆ EIP_DLR_port0ISR()

void EIP_DLR_port0ISR ( uintptr_t  arg)

Fast ISR for Port 0, bypasses the buffer copy and NDK.

Parameters
arg[in] user argument. DLR handle

◆ EIP_DLR_port1ISR()

void EIP_DLR_port1ISR ( uintptr_t  arg)

Fast ISR for Port 1, bypasses the buffer copy and NDK.

Parameters
arg[in] user argument. DLR handle

◆ EIP_DLR_beaconTimeoutISR_P0()

void EIP_DLR_beaconTimeoutISR_P0 ( uintptr_t  arg)

ISR for beacon timeout for Port 0.

Parameters
arg[in] user argument. DLR handle

◆ EIP_DLR_beaconTimeoutISR_P1()

void EIP_DLR_beaconTimeoutISR_P1 ( uintptr_t  arg)

ISR for beacon timeout for Port 1.

Parameters
arg[in] user argument. DLR handle

◆ EIP_DLR_port0ProcessLinkBrk()

void EIP_DLR_port0ProcessLinkBrk ( uint8_t  linkStatus,
void *  arg2 
)

Process DLR state machine in the event of a link break on Port0.

Parameters
linkStatus[in] link status of the port. Up/Down. 1/0
arg2[in] argument DLR handle

◆ EIP_DLR_port1ProcessLinkBrk()

void EIP_DLR_port1ProcessLinkBrk ( uint8_t  linkStatus,
void *  arg2 
)

Process DLR state machine in the event of a link break on Port1.

Parameters
linkStatus[in] link status of the port. Up/Down. 1/0
arg2[in] argument DLR handle

◆ EIP_DLR_neighborTimeoutISR0()

void EIP_DLR_neighborTimeoutISR0 ( ClockP_Object *  obj,
void *  arg 
)

ISR for Neighbor timeout timer for port 0.

Parameters
obj[in] Clock object associated with this callback
arg[in] user argument. DLR handle

◆ EIP_DLR_neighborTimeoutISR1()

void EIP_DLR_neighborTimeoutISR1 ( ClockP_Object *  obj,
void *  arg 
)

ISR for Neighbor timeout timer for port 1.

Parameters
obj[in] Clock object associated with this callback
arg[in] user argument. DLR handle

◆ EIP_DLR_addVlanID()

void EIP_DLR_addVlanID ( uint8_t *  src,
uint16_t  vlanID 
)

◆ EIP_DLR_genNCReqFrame()

void EIP_DLR_genNCReqFrame ( EIP_DLRHandle  dlrHandle,
uint8_t *  src,
uint8_t  sourcePort 
)

◆ EIP_DLR_genNCResFrame()

void EIP_DLR_genNCResFrame ( uint8_t *  src,
uint8_t  sourcePort,
uint8_t  reqSrcPort,
uint32_t  sequenceId 
)

◆ EIP_DLR_genNeighborLinkStatFrame()

void EIP_DLR_genNeighborLinkStatFrame ( EIP_DLRHandle  dlrHandle,
uint8_t *  src,
uint8_t  sourcePort,
uint8_t  linkOrNeighbor,
uint8_t  linkStatus 
)

◆ EIP_DLR_initDLRFrameHeader()

void EIP_DLR_initDLRFrameHeader ( uint8_t *  src,
uint8_t *  header 
)

◆ EIP_DLR_addSignOnNumNodes()

void EIP_DLR_addSignOnNumNodes ( uint8_t *  src,
uint16_t  numNodes 
)

◆ EIP_DLR_processDLRFrame()

void EIP_DLR_processDLRFrame ( EIP_DLRHandle  dlrHandle,
uint8_t *  pktBuffer,
uint8_t  portNum,
uint16_t  size 
)

Processes a sign on and Neighbor check request frame.

   In case of sign on frames, if size of packet is greater than
   \ref DLR_SIGNON_FRAME_SIZE then the frame is sent directly to host.
   Therefore the 'size' argument must be the size of the incoming frame,
   because it is used as the size of the outgoing frame, only if the
   frame already has maximum size and is sent unchanged but directed to
   the supervisor. Also, 'pktBuffer' passed to the function must provide
   'size'+10 bytes space so that the own MAC and IP addresses can be
   added.
Parameters
dlrHandle[in] DLR handle
pktBuffer[in] pointer to bytestream
portNum[in] Port number wherer the packet arrived
size[in] size of packet

◆ EIP_DLR_dRAMInit()

void EIP_DLR_dRAMInit ( EIP_DLRHandle  dlrHandle)

◆ EIP_DLR_resetStateMachine()

void EIP_DLR_resetStateMachine ( EIP_DLRHandle  dlrHandle)

Initialize the state machine when it goes back to idle state.

Parameters
dlrHandle[in] DLR handle

◆ EIP_DLR_setDefaultValue()

void EIP_DLR_setDefaultValue ( EIP_DLRHandle  dlrHandle)

◆ EIP_DLR_switchToFault()

void EIP_DLR_switchToFault ( EIP_DLRHandle  dlrHandle)

◆ EIP_DLR_switchToNormal()

void EIP_DLR_switchToNormal ( EIP_DLRHandle  dlrHandle)

◆ EIP_DLR_isrInit()

int32_t EIP_DLR_isrInit ( EIP_DLRHandle  dlrHandle)

◆ EIP_DLR_periodicProcessing()

void EIP_DLR_periodicProcessing ( ClockP_Object *  obj,
void *  userArg 
)

◆ EIP_DLR_addToExceptionList()

void EIP_DLR_addToExceptionList ( EIP_DLRHandle  dlrHandle,
uint8_t *  macId 
)

◆ EIP_DLR_clearExceptionList()

void EIP_DLR_clearExceptionList ( EIP_DLRHandle  dlrHandle)

◆ EIP_DLR_checkSupervisorException()

uint8_t EIP_DLR_checkSupervisorException ( uint8_t *  macId,
EIP_DLRHandle  dlrHandle 
)

◆ EIP_DLR_setDividerIEPWatchdog()

void EIP_DLR_setDividerIEPWatchdog ( EIP_DLRHandle  dlrHandle)

Sets the clock divider to 1us for IEP watch dog timers.

Parameters
dlrHandle[in] DLR handle

◆ EIP_DLR_enableIEPWatchdog()

void EIP_DLR_enableIEPWatchdog ( EIP_DLRHandle  dlrHandle,
uint8_t  id 
)

Enable the IEP Watch dog timers.

Parameters
dlrHandle[in] DLR handle
id[in] 0/1 for WD_PD and WD_PDI respectively

◆ EIP_DLR_disableIEPWatchdog()

void EIP_DLR_disableIEPWatchdog ( EIP_DLRHandle  dlrHandle,
uint8_t  id 
)

Disable the IEP Watch dog timers.

Parameters
dlrHandle[in] DLR handle
id[in] 0/1 for WD_PD/WD_PDI respectively

◆ EIP_DLR_setTimeoutIEPWatchdog()

void EIP_DLR_setTimeoutIEPWatchdog ( EIP_DLRHandle  dlrHandle,
uint16_t  periodInMicroSec,
uint8_t  id 
)

Set the timeout value in watchdog.

Parameters
dlrHandle[in] DLR handle
periodInMicroSec[in] Timeout value in microseconds
id[in] watch dog ID

◆ EIP_DLR_setPDIWatchdogTriggerMode()

void EIP_DLR_setPDIWatchdogTriggerMode ( EIP_DLRHandle  dlrHandle,
uint32_t  mode 
)

Set the PDI WD trigger mode.

Parameters
dlrHandle[in] DLR handle
mode[in] mode to be set in DGIO ctrl reg

◆ EIP_DLR_checkOtherPortLinkStatus()

EIP_DLR_portLinkStatus EIP_DLR_checkOtherPortLinkStatus ( EIP_DLRHandle  dlrHandle,
uint8_t  currentPort 
)

Checks the link status of the port opposite to the current port.

This function determines which port to check based on the current port, then queries the MDIO interface to get the physical link status of the other port. This is typically used in DLR (Device Level Ring) topology to verify connectivity status.

Parameters
[in]dlrHandleHandle to the DLR driver instance
[in]currentPortCurrent port number being processed (ICSS_EMAC_PORT_1 or ICSS_EMAC_PORT_2)
Returns
EIP_DLR_portLinkStatus Link status of the other port
Return values
PORT_LINK_UPThe other port's link is active
PORT_LINK_DOWNThe other port's link is inactive
Note
This function assumes the MDIO interface is properly initialized
The port numbers must be either ICSS_EMAC_PORT_1 or ICSS_EMAC_PORT_2
See also
MDIO_phyLinkStatus

◆ EIP_DLR_isSelfSupervisorCapable()

int32_t EIP_DLR_isSelfSupervisorCapable ( )

API to check whether the DLR Supervisor capability is supported by the EIP FWHAL Library.

◆ EIP_DLR_startBeaconIntervalTimer()

void EIP_DLR_startBeaconIntervalTimer ( EIP_DLRHandle  dlrHandle,
uint32_t  beaconInterval 
)

API to start the beacon interval timer.

Parameters
dlrHandle[in] DLR driver handle
beaconInterval[in] Beacon interval value

◆ EIP_DLR_configureSupervisorStatus()

void EIP_DLR_configureSupervisorStatus ( EIP_DLRHandle  dlrHandle)

◆ EIP_DLR_copyBeaconToDMEM()

void EIP_DLR_copyBeaconToDMEM ( EIP_DLRHandle  dlrHandle,
uint8_t *  port0BeaconFrame,
uint8_t *  port1BeaconFrame 
)

API to copy the Beacon Frames into ICSS DMEM for easy firmware access.

Parameters
dlrHandle[in] DLR driver handle
port0BeaconFrame[in] Port 0 beacon frame pointer
port1BeaconFrame[in] Port 1 beacon frame pointer

◆ EIP_DLR_copySupervisorConfig()

void EIP_DLR_copySupervisorConfig ( EIP_DLRHandle  dlrHandle)

API to copy the DLR Supervisor values into ICSS SMEM for easy firmware access.

Parameters
dlrHandle[in] DLR driver handle

◆ EIP_DLR_configureSupFrames()

void EIP_DLR_configureSupFrames ( EIP_DLRHandle  dlrHandle)

API to configure the frames that need to be sent out by the supervisor.

Parameters
dlrHandle[in] DLR driver handle

◆ EIP_DLR_configSupervisor()

void EIP_DLR_configSupervisor ( EIP_DLRHandle  dlrHandle)

API to configure the DLR Supervisor Capability Calling this can enable/disable DLR Supervisor.

Parameters
dlrHandle[in] DLR driver handle

◆ EIP_DLR_beaconTimeoutSupProcessing()

int32_t EIP_DLR_beaconTimeoutSupProcessing ( EIP_DLRHandle  dlrHandle,
uint8_t  portNum,
uint8_t  priorNodeState 
)

Handle beacon timeout related processing as a DLR Supervisor.

Parameters
dlrHandle[in] DLR handle
portNum[in] Port number wherer the packet arrived
priorNodeState[in] The State of the node during beacon timeout
Return values
SystemP_SUCCESSin case Supervisor related processing has been done successfully
SystemP_FAILUREin case Supervisor related processing has not been done

◆ EIP_DLR_transitionToNormalStateSupProcessing()

void EIP_DLR_transitionToNormalStateSupProcessing ( EIP_DLRHandle  dlrHandle,
uint8_t  portNum 
)

Process state change related handling as a DLR Supervisor.

Parameters
dlrHandle[in] DLR handle
portNum[in] Port number wherer the packet arrived

◆ EIP_DLR_processPort0SupLinkBrk()

int32_t EIP_DLR_processPort0SupLinkBrk ( EIP_DLRHandle  dlrHandle)

Perform Supervisor related processing of DLR state machine in the event of a link break on Port0.

Parameters
dlrHandle[in] DLR handle
Return values
SystemP_SUCCESSin case Supervisor related processing has been done successfully
SystemP_FAILUREin case Supervisor related processing has not been done

◆ EIP_DLR_processPort1SupLinkBrk()

int32_t EIP_DLR_processPort1SupLinkBrk ( EIP_DLRHandle  dlrHandle)

Perform Supervisor related processing of DLR state machine in the event of a link break on Port1.

Parameters
dlrHandle[in] DLR handle
Return values
SystemP_SUCCESSin case Supervisor related processing has been done successfully
SystemP_FAILUREin case Supervisor related processing has not been done

◆ EIP_DLR_transmitSignOnFrame()

void EIP_DLR_transmitSignOnFrame ( ClockP_Object *  obj,
void *  userArg 
)

ISR for Sign-on timer timeout.

Parameters
obj[in] Clock object associated with this callback
userArg[in] user argument. DLR handle

◆ EIP_DLR_transmitAnnounce()

void EIP_DLR_transmitAnnounce ( ClockP_Object *  obj,
void *  userArg 
)

ISR for Announce timer timeout.

Parameters
obj[in] Clock object associated with this callback
userArg[in] user argument. DLR handle

◆ EIP_DLR_genSignOnFrame()

void EIP_DLR_genSignOnFrame ( EIP_DLRHandle  dlrHandle,
uint8_t *  src 
)

◆ EIP_DLR_genAnnounceFrame()

void EIP_DLR_genAnnounceFrame ( EIP_DLRHandle  dlrHandle,
uint8_t *  src,
uint8_t  ringState 
)

◆ EIP_DLR_genLocateFaultFrame()

void EIP_DLR_genLocateFaultFrame ( EIP_DLRHandle  dlrHandle,
uint8_t *  src,
uint8_t  sourcePort 
)

◆ EIP_DLR_processSignOnFrameAsSupervisor()

int32_t EIP_DLR_processSignOnFrameAsSupervisor ( EIP_DLRHandle  dlrHandle,
uint8_t *  pktBuffer,
uint16_t  size 
)

Processes a sign on frame as the DLR Supervisor.

Parameters
dlrHandle[in] DLR handle
pktBuffer[in] pointer to bytestream
size[in] size of packet
Return values
SystemP_SUCCESSin case Supervisor related processing has been done successfully
SystemP_FAILUREin case Supervisor related processing has not been done

◆ EIP_DLR_processLinkNeighborStatusFrameSup()

void EIP_DLR_processLinkNeighborStatusFrameSup ( EIP_DLRHandle  dlrHandle,
uint8_t *  pktBuffer,
uint8_t  portNum,
uint16_t  size 
)

Processes a Link Status/Neighbor Status frame as the DLR Supervisor.

Parameters
dlrHandle[in] DLR handle
pktBuffer[in] pointer to bytestream
portNum[in] Port number where the packet arrived
size[in] size of packet

◆ EIP_DLR_addModuleIPAddress()

void EIP_DLR_addModuleIPAddress ( EIP_DLRHandle  dlrHandle,
uint32_t  newIP 
)

◆ EIP_DLR_handleVerifyFaultLocationReq()

int32_t EIP_DLR_handleVerifyFaultLocationReq ( EIP_DLRHandle  dlrHandle)

API to handle a Verify_Fault_Location service request.

Parameters
dlrHandle[in] DLR driver handle

◆ EIP_DLR_transitionToBackupSupervisor()

void EIP_DLR_transitionToBackupSupervisor ( EIP_DLRHandle  dlrHandle)

API to transition from the active ring supervisor to a backup supervisor.

Parameters
dlrHandle[in] DLR driver handle

◆ EIP_DLR_serviceRingSupConfigSetRequest()

int32_t EIP_DLR_serviceRingSupConfigSetRequest ( EIP_DLRHandle  dlrHandle,
superConfig supCfg 
)

Sets DLR supervisor configuration parameters.

This function:

  1. Validates input parameters
  2. Updates supervisor configuration in DLR object:
    • Supervisor enable/disable state
    • Beacon interval timing
    • VLAN ID
    • Supervisor precedence
    • Beacon timeout values
  3. Validates and adjusts beacon timeout value
  4. Applies the new configuration through state machine
Parameters
[in]dlrHandleHandle to DLR instance
[in]supCfgSupervisor configuration parameters
Returns
SystemP_SUCCESS on successful configuration SystemP_FAILURE if validation fails
Note
Beacon timeout must be at least twice the beacon interval
Precondition
  • DLR handle must be initialized
  • DLR object must be initialized
  • Supervisor capability must be supported by hardware

◆ EIP_DLR_resetRingFaultsSincePowerUp()

int32_t EIP_DLR_resetRingFaultsSincePowerUp ( EIP_DLRHandle  dlrHandle)

Resets the count of ring faults since power-up.

This function:

  1. Validates the input parameters
  2. Resets the ring faults counter to zero if validation passes
Parameters
[in]dlrHandlePointer to DLR instance handle
Returns
SystemP_SUCCESS on successful reset SystemP_FAILURE if validation fails
Note
This function should be called with appropriate synchronization if used in a multi-threaded environment
Precondition
  • DLR handle must be initialized
  • DLR object must be initialized

◆ EIP_DLR_serviceRestartSignOnReq()

int32_t EIP_DLR_serviceRestartSignOnReq ( EIP_DLRHandle  dlrHandle)

Services a DLR Sign-On restart request from a DLR supervisor node.

This function:

  1. Validates that the device is an active supervisor capable of handling Sign-On requests
  2. Verifies the current node state is normal (not fault)
  3. Checks if a Sign-On process is already in progress
  4. If not already running, generates and transmits a new Sign-On frame on Port 0
  5. Starts the Sign-On timer to handle periodic Sign-On frame transmission
Parameters
[in]dlrHandleHandle to DLR instance
Returns
SystemP_SUCCESS if Sign-On restart was initiated successfully SystemP_FAILURE if:
  • Device is not an active supervisor
  • Supervisor capability is disabled
  • Node is in fault state
  • Invalid parameters
Note
This function should only be called on active DLR supervisors in normal state
Warning
Sign-On frame transmission will continue periodically until explicitly stopped
Precondition
  • DLR handle must be initialized
  • Device must be an active DLR supervisor
  • Node must be in normal state

◆ EIP_DLR_serviceClearRapidFaultsReq()

int32_t EIP_DLR_serviceClearRapidFaultsReq ( EIP_DLRHandle  dlrHandle)

Services a request to clear rapid fault detection state and reset supervisor.

This function handles clearing of rapid fault detection state when excessive ring faults are detected within a short time window. It:

  1. Validates the device is an active supervisor with supervisor capability enabled
  2. Verifies rapid fault restore mode is currently active
  3. If conditions are met:
    • Resets the DLR state machine
    • Reconfigures and restarts the supervisor functionality
    • Clears rapid fault detection state
Parameters
[in]dlrHandleHandle to DLR instance
Returns
SystemP_SUCCESS if rapid fault state was cleared successfully SystemP_FAILURE if:
  • Device is not an active supervisor
  • Supervisor capability is disabled
  • Rapid fault restore mode is not active
  • Invalid parameters
Note
This request is only valid when the supervisor is in rapid fault restore mode after detecting excessive ring faults within the monitoring window
Warning
Clearing rapid fault state will immediately restart normal supervisor operation, which may impact network traffic
Precondition
  • DLR handle must be initialized
  • Device must be an active DLR supervisor
  • Rapid fault restore mode must be active
See also
EIP_DLR_rapidFaultsDetected()
EIP_DLR_addRapidFault()

◆ EIP_DLR_announceSuppressionTimeoutHandler()

void EIP_DLR_announceSuppressionTimeoutHandler ( EIP_DLRHandle  dlrHandle)

Handles timeout of announce suppression period for DLR supervisor configuration changes.

This function manages the transition after an announce suppression period expires:

  1. If configuration change suppression is active:
    • Clears the suppression flag
    • Resets the DLR state machine
    • Reconfigures supervisor with new parameters
  2. In all cases:
    • Stops any existing announce timer
    • Restarts the announce timer with updated parameters

This handler is typically called after a 2x beacon timeout period when changing supervisor configuration parameters to ensure smooth transition of timing-critical parameters.

Parameters
[in]dlrHandleHandle to DLR instance
Note
No return value as this is an event handler function
Warning
This function modifies supervisor state and should only be called from the announce suppression timer context
Precondition
  • DLR handle must be initialized
  • Should only be called when announce suppression timer expires
See also
EIP_DLR_startAnnounceSuppressionTimer()
EIP_DLR_serviceRingSupConfigSetRequest()

◆ EIP_DLR_startAnnounceSuppressionTimer()

int32_t EIP_DLR_startAnnounceSuppressionTimer ( EIP_DLRHandle  dlrHandle,
uint32_t  beaconTimeout 
)

Configures and starts the DLR announce suppression timer.

This function:

  1. Configures IEP Compare event (CMP15) for announce suppression timing
  2. Calculates next timeout based on current IEP counter and beacon interval
  3. Programs the compare registers for timeout generation
  4. Enables the compare event to generate interrupt when timeout occurs
Parameters
[in]dlrHandlePointer to DLR instance handle
[in]beaconTimeoutBeacon timeout value in microseconds
Returns
SystemP_SUCCESS on success, SystemP_FAILURE on error
Precondition

  • DLR handle must be initialized
  • IEP counter should be running
  • Interrupt handler for CMP15 should be registered
Note
Uses IEP0 CMP15 for timeout generation

◆ EIP_DLR_initRapidFaultTracker()

void EIP_DLR_initRapidFaultTracker ( EIP_DLRHandle  dlrHandle)

Initialize the Rapid faults tracker.

Parameters
[in]dlrHandlePointer to DLR instance handle
Precondition
dlrHandle must not be NULL

◆ EIP_DLR_processTickRapidFaultTracker()

void EIP_DLR_processTickRapidFaultTracker ( ClockP_Object *  obj,
void *  userArg 
)

Process one second tick for fault tracking.

Parameters
obj[in] Clock object associated with this callback
userArg[in] user argument. DLR handle

◆ EIP_DLR_rapidFaultsDetected()

void EIP_DLR_rapidFaultsDetected ( EIP_DLRHandle  dlrHandle)

API to handle Rapid Fault-Restore cycles.

Parameters
[in]dlrHandlePointer to DLR instance handle
Precondition
dlrHandle must not be NULL

◆ EIP_DLR_addRapidFault()

void EIP_DLR_addRapidFault ( EIP_DLRHandle  dlrHandle)

Adds a new rapid fault occurrence.

Parameters
[in]dlrHandlePointer to DLR instance handle
Precondition
dlrHandle must not be NULL

◆ EIP_DLR_copySelfSupervisorConfig()

void EIP_DLR_copySelfSupervisorConfig ( EIP_DLRHandle  dlrHandle,
supervisorStatusCopyType  copyType 
)

Copy to or from the Self Supervisor Configuration.

Parameters
[in]dlrHandlePointer to DLR instance handle
[in]copyTypeCopy type defining whether there is a need to copy to or from the self config
Precondition
dlrHandle must not be NULL

◆ EIP_DLR_clearRingProtocolParticipantTable()

void EIP_DLR_clearRingProtocolParticipantTable ( EIP_DLRHandle  dlrHandle)

Clear ring protocol participants table.

Parameters
[in]dlrHandlePointer to DLR instance handle
Precondition
dlrHandle must not be NULL

◆ EIP_DLR_backupSupCopyActiveRingSupParams()

void EIP_DLR_backupSupCopyActiveRingSupParams ( EIP_DLRHandle  dlrHandle)

Copy active ring supervisor parameters as a backup supervisor.

Parameters
[in]dlrHandlePointer to DLR instance handle
Precondition
dlrHandle must not be NULL

◆ EIP_DLR_checkForActiveSupTransition()

int32_t EIP_DLR_checkForActiveSupTransition ( EIP_DLRHandle  dlrHandle,
superConfig supCfg 
)

Check if the device can transition from a backup ring supervisor to the active ring supervisor.

Parameters
[in]dlrHandlePointer to DLR instance handle
[in]supCfgPointer to the new supervisor configuration
Precondition
dlrHandle must not be NULL

◆ EIP_DLR_stopBeaconIntervalTimer()

void EIP_DLR_stopBeaconIntervalTimer ( EIP_DLRHandle  dlrHandle)

Stop the beacon interval timer - also stops the beacon frame transmission.

Parameters
[in]dlrHandlePointer to DLR instance handle
Precondition
dlrHandle must not be NULL