AM263Px INDUSTRIAL COMMUNICATIONS SDK  10.02.00
icss_dlr.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2021 Texas Instruments Incorporated
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions
6  * are met:
7  *
8  * Redistributions of source code must retain the above copyright
9  * notice, this list of conditions and the following disclaimer.
10  *
11  * Redistributions in binary form must reproduce the above copyright
12  * notice, this list of conditions and the following disclaimer in the
13  * documentation and/or other materials provided with the
14  * distribution.
15  *
16  * Neither the name of Texas Instruments Incorporated nor the names of
17  * its contributors may be used to endorse or promote products derived
18  * from this software without specific prior written permission.
19  *
20  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
23  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
24  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
25  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
26  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
27  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
28  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
29  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
30  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31  */
32 
33 #ifndef ICSS_DLR_H_
34 #define ICSS_DLR_H_
35 
36 #ifdef __cplusplus
37 extern "C"
38 {
39 #endif
40 
41 
42 /* ========================================================================== */
43 /* Include Files */
44 /* ========================================================================== */
45 #include <stdint.h>
47 #include <kernel/dpl/ClockP.h>
48 #include <kernel/dpl/HwiP.h>
49 
50 #ifdef TEST_DEBUG
51 #include "testing.h"
52 #endif
53 
54 /* ========================================================================== */
55 /* Macros & Typedefs */
56 /* ========================================================================== */
57 /*#define DLR_DEBUG*/
58 
60 /*#define IS_A_DLR_SUPERVISOR*/
61 
62 #define DEFAULT_DLR_PACKET_SIZE 60
63 
64 #define ETHERNET_FRAME_SIZE_60 60
65 
67 #define IEP_WD_PRE_DIV_10US 2000
68 
70 #define PORT0_WATCH_DOG_ID 0 /*PD_WD*/
71 
72 #define PORT1_WATCH_DOG_ID 1 /*PDI_WD*/
73 
74 #define IS_A_LINK_STATUS_FRAME DLR_TRUE
75 #define IS_A_NEIGHBOR_STAT_FRAME DLR_FALSE
76 
77 /*Generic flags*/
78 #define BOTH_LINKS_UP 0x0
79 #define PORT0_IS_DOWN 0x2
80 #define PORT1_IS_DOWN 0x1
81 #define BOTH_LINKS_DOWN 0x3
82 
83 /*PRUSS INTC Mask for PRU EVENT 5*/
84 #define PORT0_WD_ISR_MASK 0x2000000
85 /*PRUSS INTC Mask for PRU EVENT 5*/
86 #define PORT1_WD_ISR_MASK 0x4000000
87 
92 #define PDI_WD_TRIGGER_RX_SOF (0 << 4)
93 
98 #define PDI_WD_TRIGGER_LATCH_IN (1 << 4)
99 
104 #define PDI_WD_TRIGGER_SYNC0_OUT (2 << 4)
105 
110 #define PDI_WD_TRIGGER_SYNC1_OUT (3 << 4)
111 
112 #ifdef DLR_DEBUG
113 #define MAX_EVENTS_CAPTURED 1000
114 
115 /*DLR events for debugging*/
116 #define LINK1_BREAK 1
117 #define LINK2_BREAK 2
118 #define BOTH_LINK_DISABLED 3
119 #define EMPTY_SIGNON_FRAME_RCVD 4
120 #define COMPLETE_SIGNON_FRAME_RCVD 5
121 
122 #define RING_FAULT_RCVD_PORT0 6
123 #define RING_FAULT_RCVD_PORT1 7
124 
125 #define RING_FAULT_TRANSITION_PORT0 8
126 #define RING_FAULT_TRANSITION_PORT1 9
127 
128 #define RING_NORMAL_TRANSITION_PORT0 10
129 #define RING_NORMAL_TRANSITION_PORT1 11
130 
131 #define START_TIMER0 12
132 #define START_TIMER1 13
133 
134 #define NCRES_RCVD_PORT0 14
135 #define NCRES_RCVD_PORT1 15
136 
137 #define NCREQ_RCVD_PORT0 16
138 #define NCREQ_RCVD_PORT1 17
139 
140 #define LOCFAULT_RCVD_PORT0 18
141 #define LOCFAULT_RCVD_PORT1 19
142 
143 #define BEACON0_MISSED_FAULT 20
144 #define BEACON1_MISSED_FAULT 21
145 #define BEACON0_MISSED_NORMAL 22
146 #define BEACON1_MISSED_NORMAL 23
147 
148 #define LINK1_FAULT_BREAK 24
149 #define LINK2_FAULT_BREAK 25
150 
151 #define LINK1_NORMAL_BREAK 27
152 #define LINK2_NORMAL_BREAK 28
153 
154 #define NEIGHBOR_TIMEOUT_PORT0_RETRY 29
155 #define NEIGHBOR_TIMEOUT_PORT1_RETRY 30
156 #define NEIGHBOR_TIMEOUT_PORT0_MAX 31
157 #define NEIGHBOR_TIMEOUT_PORT1_MAX 32
158 
159 #define DLR_RESET_MACHINE 33
160 
161 #define BEACON0_MISSED 34
162 #define BEACON1_MISSED 35
163 
164 #define STOP_BOTH_TIMERS_PORT0 36
165 #define STOP_BOTH_TIMERS_PORT1 37
166 
167 #define PORT0_BEACON_STALL 38
168 #define PORT1_BEACON_STALL 39
169 #endif
170 
172 #define DEFAULT_BEACON_INTERVAL_VARIABLE 400 /*in microseconds*/
173 #define DEFAULT_BEACON_TIMEOUT_VARIABLE (DEFAULT_BEACON_INTERVAL_VARIABLE * 4) /*in microseconds*/
174 
175 #define DEFAULT_NEIGHBOR_TIMEOUT_INTERVAL 100 /*in milliseconds*/
176 
177 #define DEFAULT_DLR_PERIODIC_INTERVAL 100 /*in milliseconds*/
178 
180 #define MAX_NUM_RETRIES 2
181 
183 #define BEACON_CPU_STALL_THRESHOLD 4
184 
188 #define DLR_DEFAULT_CAPABILITIES (1 << 7) | (1 << 1)
189 
197 #define DLR_SIGNON_FRAME_SIZE (ICSS_EMAC_MAXMTU - 10U)
198 
199 /*DLR Packet Generation Offsets*/
200 #define DLR_COMMON_FRAME_HEADER_SIZE 18
201 #define DLR_COMMON_FRAME_OFFSET 12
202 
204 #define ICSS_DLR_PORT0_INT_FLAG 0x200000
205 
206 #define ICSS_DLR_PORT1_INT_FLAG 0x400000
207 
208 typedef struct dlr_Config_s *EIP_DLRHandle;
209 
213 typedef enum
214 {
220  NODE_NORMAL = 2
225 typedef enum
226 {
230  RING_FAULT = 2
232 
236 typedef enum
237 {
241  RING_TOP = 1
243 
247 typedef enum
248 {
258  RAPID_FAULT = 4
260 
264 typedef enum
265 {
266  /*indicates the node is functioning as a backup*/
268  /*indicates the device is functioning as the active ring supervisor*/
270  /*indicates the device is functioning as a normal ring node*/
272  /*indicates the device is operating in a non-DLR topology*/
273  NON_DLR = 3,
277 
279 
283 typedef enum {
285  PORT_LINK_UP = 1
287 
288 /* ========================================================================== */
289 /* Structure Declarations */
290 /* ========================================================================== */
291 
295 typedef struct
296 {
298  uint8_t MAC[6];
300  uint8_t numExceptions;
301 
302 } exceptionList;
303 
307 typedef struct
308 {
310  uint8_t node_state;
312  uint8_t ring_state;
314  uint8_t topology;
316  uint8_t status;
318  uint8_t superStatus;
319 
321 
325 typedef struct
326 {
327 
331  uint8_t superEnable;
333  uint32_t beaconInterval;
335  uint32_t beaconTimeout;
336 
338  uint16_t vLanId;
339 
341  uint8_t supPrecedence;
342 
343 } superConfig;
344 
348 typedef struct
349 {
350 
352  uint8_t supMACAddress[6];
353 
355  uint32_t supIPAddress;
356 
358 
363 typedef struct
364 {
366  uint32_t ipAddr;
368  uint8_t macAddr[6];
369 
371  uint16_t deviceNum;
373 
377 typedef struct
378 {
379  uint32_t ipAddr;
380  uint8_t macAddr[6];
382 
386 typedef struct
387 {
394 
395 #ifdef IS_A_DLR_SUPERVISOR
396 
397  lastActiveNode activeNode[2];
398 #endif
399 
410  uint32_t dlrCapabilities;
411 
414 
415  HwiP_Object port0IntObject;
416  HwiP_Object port1IntObject;
419 
421  uint8_t port0IntNum;
422 
424  uint8_t port1IntNum;
425 
428 
431 
432 #ifdef IS_A_DLR_SUPERVISOR
433 
434  uint32_t numRingFaultsPowerUp;
435 
437  uint16_t ringParticipantsCount;
438 
440  protocolParticipants **ringNodes;
441 #endif
442 
443 } dlrStruct;
444 
445 
446 typedef struct dlr_Config_s
447 {
450  uint8_t macId[6];
451  /* MAC ID passed to ICSS-EMAC during ICSS-EMAC initialization*/
452  PRUICSS_Handle pruicssHandle;
454  uint32_t deviceIP;
456  uint32_t sequenceID;
460  ClockP_Object dlrNeighborTimeoutClock[ICSS_EMAC_MAX_PORTS_PER_INSTANCE];
461  /*Clock handle for DLR periodic processing*/
462  ClockP_Object dlrPeriodicTimerObject;
464  uint8_t dlrEmptyFrame[DEFAULT_DLR_PACKET_SIZE];
466  uint8_t checkForLoop;
469  uint8_t pktSendCounter;
470  uint8_t ISRcountPort[ICSS_EMAC_MAX_PORTS_PER_INSTANCE];
471 } dlr_Config;
472 
473 /* ========================================================================== */
474 /* Function Declarations */
475 /* ========================================================================== */
476 
488 void EIP_DLR_init(EIP_DLRHandle dlrHandle);
503 void EIP_DLR_start(EIP_DLRHandle dlrHandle) ;
511 void EIP_DLR_stop(EIP_DLRHandle dlrHandle);
518 void EIP_DLR_port0ISR(uintptr_t arg);
525 void EIP_DLR_port1ISR(uintptr_t arg);
532 void EIP_DLR_beaconTimeoutISR_P0(uintptr_t arg);
533 
540 void EIP_DLR_beaconTimeoutISR_P1(uintptr_t arg);
541 
549 void EIP_DLR_port0ProcessLinkBrk(uint8_t linkStatus, void *arg2);
557 void EIP_DLR_port1ProcessLinkBrk(uint8_t linkStatus, void *arg2);
565 void EIP_DLR_neighborTimeoutISR0(ClockP_Object *obj, void *arg);
573 void EIP_DLR_neighborTimeoutISR1(ClockP_Object *obj, void *arg);
582 void EIP_DLR_addVlanID(uint8_t *src, uint16_t vlanID);
597 void EIP_DLR_genNCReqFrame(EIP_DLRHandle dlrHandle, uint8_t *src,
598  uint8_t sourcePort);
612 void EIP_DLR_genNCResFrame(uint8_t *src, uint8_t sourcePort, uint8_t reqSrcPort,
613  uint32_t sequenceId);
628 void EIP_DLR_genNeighborLinkStatFrame(EIP_DLRHandle dlrHandle, uint8_t *src,
629  uint8_t sourcePort,
630  uint8_t linkOrNeighbor, uint8_t linkStatus);
639 void EIP_DLR_initDLRFrameHeader(uint8_t *src, uint8_t *header);
640 
649 void EIP_DLR_addSignOnNumNodes(uint8_t *src, uint16_t numNodes);
668 void EIP_DLR_processDLRFrame(EIP_DLRHandle dlrHandle, uint8_t *pktBuffer,
669  uint8_t portNum, uint16_t size);
721 int32_t EIP_DLR_isrInit(EIP_DLRHandle dlrHandle);
732 void EIP_DLR_periodicProcessing(ClockP_Object *obj, void *userArg);
733 
734 #ifdef DLR_DEBUG
735 void genSeqOfEvents(uint8_t event);
736 #endif
737 
747 void EIP_DLR_addToExceptionList(EIP_DLRHandle dlrHandle, uint8_t *macId);
758 
769 uint8_t EIP_DLR_checkSupervisorException(uint8_t *macId,
770  EIP_DLRHandle dlrHandle);
779 void EIP_DLR_addModuleIPAddress(EIP_DLRHandle dlrHandle, uint32_t newIP);
780 
788 
796 void EIP_DLR_enable_WD_IEP(EIP_DLRHandle dlrHandle, uint8_t id);
797 
805 void EIP_DLR_disable_WD_IEP(EIP_DLRHandle dlrHandle, uint8_t id);
806 
816  uint16_t periodInMicroSec, uint8_t id);
824 void EIP_DLR_set_pdi_wd_trigger_mode(EIP_DLRHandle dlrHandle, uint32_t mode);
825 
847 
852 #ifdef __cplusplus
853 }
854 #endif
855 
856 #endif /* ICSS_DLR_H_ */
dlr_Config::dlrObj
dlrStruct * dlrObj
Definition: icss_dlr.h:448
superConfig::vLanId
uint16_t vLanId
Definition: icss_dlr.h:338
dlrStateMachineVar
State machine variables, part of DLR Object and L2 implementation.
Definition: icss_dlr.h:308
dlr_Config::dlrPeriodicTimerObject
ClockP_Object dlrPeriodicTimerObject
Definition: icss_dlr.h:462
dlrStruct::beaconTimeoutIntNum_P0
uint8_t beaconTimeoutIntNum_P0
Definition: icss_dlr.h:427
ICSS_EMAC_Handle
struct ICSS_EMAC_Config_s * ICSS_EMAC_Handle
Alias for ICSS EMAC Handle containing base addresses and modules.
Definition: icss_emac.h:467
EIP_DLR_setTimeout_WD_IEP
void EIP_DLR_setTimeout_WD_IEP(EIP_DLRHandle dlrHandle, uint16_t periodInMicroSec, uint8_t id)
Set the timeout value in watchdog.
EIP_DLR_beaconTimeoutISR_P1
void EIP_DLR_beaconTimeoutISR_P1(uintptr_t arg)
ISR for beacon timeout for Port 1.
EIP_DLR_beaconTimeoutISR_P0
void EIP_DLR_beaconTimeoutISR_P0(uintptr_t arg)
ISR for beacon timeout for Port 0.
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.
superConfig::supPrecedence
uint8_t supPrecedence
Definition: icss_dlr.h:341
nwStatus
nwStatus
network status : possible values for Attribute ID 2
Definition: icss_dlr.h:248
dlr_Config::tracePktIntervalCount
uint32_t tracePktIntervalCount
Definition: icss_dlr.h:467
EIP_DLR_enable_WD_IEP
void EIP_DLR_enable_WD_IEP(EIP_DLRHandle dlrHandle, uint8_t id)
Enable the IEP Watch dog timers.
FEATURE_UNSUPPORTED
@ FEATURE_UNSUPPORTED
Definition: icss_dlr.h:276
dlrStruct::port0IntNum
uint8_t port0IntNum
Definition: icss_dlr.h:421
dlr_Config::pruicssHandle
PRUICSS_Handle pruicssHandle
Definition: icss_dlr.h:452
NODE_NORMAL
@ NODE_NORMAL
Definition: icss_dlr.h:220
activeSuperAddr::supIPAddress
uint32_t supIPAddress
Definition: icss_dlr.h:355
nodeState
nodeState
node state machine states
Definition: icss_dlr.h:214
dlr_Config::checkForLoop
uint8_t checkForLoop
Definition: icss_dlr.h:466
EIP_DLR_neighborTimeoutISR1
void EIP_DLR_neighborTimeoutISR1(ClockP_Object *obj, void *arg)
ISR for Neighbor timeout timer for port 1.
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.
BACKUP_NODE
@ BACKUP_NODE
Definition: icss_dlr.h:267
EIP_DLRHandle
struct dlr_Config_s * EIP_DLRHandle
Definition: icss_dlr.h:208
DEFAULT_DLR_PACKET_SIZE
#define DEFAULT_DLR_PACKET_SIZE
Definition: icss_dlr.h:62
NODE_IDLE
@ NODE_IDLE
Definition: icss_dlr.h:216
lastActiveNode::deviceNum
uint16_t deviceNum
Definition: icss_dlr.h:371
EIP_DLR_isrInit
int32_t EIP_DLR_isrInit(EIP_DLRHandle dlrHandle)
UNEXPECTED_LOOP
@ UNEXPECTED_LOOP
Definition: icss_dlr.h:254
icss_emac.h
dlr_Config::deviceIP
uint32_t deviceIP
Definition: icss_dlr.h:454
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.
dlrStruct::port1IntObject
HwiP_Object port1IntObject
Definition: icss_dlr.h:416
NORMAL_STAT
@ NORMAL_STAT
Definition: icss_dlr.h:250
EIP_DLR_genNCReqFrame
void EIP_DLR_genNCReqFrame(EIP_DLRHandle dlrHandle, uint8_t *src, uint8_t sourcePort)
supervisorStatus
supervisorStatus
device role: possible values for Attribute ID 3
Definition: icss_dlr.h:265
dlrStruct::beaconTimeoutIntP0Object
HwiP_Object beaconTimeoutIntP0Object
Definition: icss_dlr.h:417
dlrStruct::addr
activeSuperAddr addr
Definition: icss_dlr.h:391
exceptionList::numExceptions
uint8_t numExceptions
Definition: icss_dlr.h:300
EIP_DLR_setDefaultValue
void EIP_DLR_setDefaultValue(EIP_DLRHandle dlrHandle)
dlr_Config::emacHandle
ICSS_EMAC_Handle emacHandle
Definition: icss_dlr.h:449
EIP_DLR_genNeighborLinkStatFrame
void EIP_DLR_genNeighborLinkStatFrame(EIP_DLRHandle dlrHandle, uint8_t *src, uint8_t sourcePort, uint8_t linkOrNeighbor, uint8_t linkStatus)
EIP_DLR_addToExceptionList
void EIP_DLR_addToExceptionList(EIP_DLRHandle dlrHandle, uint8_t *macId)
RING_NORMAL
@ RING_NORMAL
Definition: icss_dlr.h:228
dlrStruct::beaconTimeoutIntP1Object
HwiP_Object beaconTimeoutIntP1Object
Definition: icss_dlr.h:418
EIP_DLR_addSignOnNumNodes
void EIP_DLR_addSignOnNumNodes(uint8_t *src, uint16_t numNodes)
EIP_DLR_switchToNormal
void EIP_DLR_switchToNormal(EIP_DLRHandle dlrHandle)
dlrStruct::port1IntNum
uint8_t port1IntNum
Definition: icss_dlr.h:424
RING_NODE
@ RING_NODE
Definition: icss_dlr.h:271
RING_TOP
@ RING_TOP
Definition: icss_dlr.h:241
EIP_DLR_neighborTimeoutISR0
void EIP_DLR_neighborTimeoutISR0(ClockP_Object *obj, void *arg)
ISR for Neighbor timeout timer for port 0.
dlr_Config::sequenceID
uint32_t sequenceID
Definition: icss_dlr.h:456
RING_FAULT_STAT
@ RING_FAULT_STAT
Definition: icss_dlr.h:252
EIP_DLR_portLinkStatus
EIP_DLR_portLinkStatus
get the link status - link up/down
Definition: icss_dlr.h:283
dlrStruct::beaconTimeoutIntNum_P1
uint8_t beaconTimeoutIntNum_P1
Definition: icss_dlr.h:430
superConfig
Supervisor configuration. Attribute ID 4.
Definition: icss_dlr.h:326
dlrStruct::SMVariables
dlrStateMachineVar SMVariables
Definition: icss_dlr.h:393
EIP_DLR_resetStateMachine
void EIP_DLR_resetStateMachine(EIP_DLRHandle dlrHandle)
Initialize the state machine when it goes back to idle state.
dlrStruct::dlrCapabilities
uint32_t dlrCapabilities
Definition: icss_dlr.h:410
EIP_DLR_setDivider_WD_IEP
void EIP_DLR_setDivider_WD_IEP(EIP_DLRHandle dlrHandle)
Sets the clock divider to 1us for IEP watch dog timers.
ringState
ringState
ring state values
Definition: icss_dlr.h:226
dlrStateMachineVar::superStatus
uint8_t superStatus
Definition: icss_dlr.h:318
EIP_DLR_start
void EIP_DLR_start(EIP_DLRHandle dlrHandle)
API to start the DLR driver Calling this enables DLR on the device.
protocolParticipants::ipAddr
uint32_t ipAddr
Definition: icss_dlr.h:379
dlrStruct::supConfig
superConfig supConfig
Definition: icss_dlr.h:389
EIP_DLR_disable_WD_IEP
void EIP_DLR_disable_WD_IEP(EIP_DLRHandle dlrHandle, uint8_t id)
Disable the IEP Watch dog timers.
NON_DLR
@ NON_DLR
Definition: icss_dlr.h:273
dlr_Config
Definition: icss_dlr.h:447
EIP_DLR_checkSupervisorException
uint8_t EIP_DLR_checkSupervisorException(uint8_t *macId, EIP_DLRHandle dlrHandle)
EIP_DLR_init
void EIP_DLR_init(EIP_DLRHandle dlrHandle)
API to initialize the DLR driver.
EIP_DLR_clearExceptionList
void EIP_DLR_clearExceptionList(EIP_DLRHandle dlrHandle)
dlrStateMachineVar::status
uint8_t status
Definition: icss_dlr.h:316
EIP_DLR_port1ISR
void EIP_DLR_port1ISR(uintptr_t arg)
Fast ISR for Port 1, bypasses the buffer copy and NDK.
EIP_DLR_switchToFault
void EIP_DLR_switchToFault(EIP_DLRHandle dlrHandle)
dlrStateMachineVar::topology
uint8_t topology
Definition: icss_dlr.h:314
exceptionList
List of MAC ID's which are exempted from Learning, this is for DLR implementation.
Definition: icss_dlr.h:296
nwTopology
nwTopology
network topology : possible values for Attribute ID 1
Definition: icss_dlr.h:237
NODE_FAULT
@ NODE_FAULT
Definition: icss_dlr.h:218
dlrStruct::activeSuperPred
uint8_t activeSuperPred
Definition: icss_dlr.h:413
protocolParticipants
IP and MAC of the Ring devices. Attribute ID 9.
Definition: icss_dlr.h:378
dlrStruct::port0IntObject
HwiP_Object port0IntObject
Definition: icss_dlr.h:415
RAPID_FAULT
@ RAPID_FAULT
Definition: icss_dlr.h:258
superConfig::beaconTimeout
uint32_t beaconTimeout
Definition: icss_dlr.h:335
lastActiveNode
Last active node at the end of the chain Class for Attributes 6 and 7.
Definition: icss_dlr.h:364
PORT_LINK_UP
@ PORT_LINK_UP
Definition: icss_dlr.h:285
EIP_DLR_initDLRFrameHeader
void EIP_DLR_initDLRFrameHeader(uint8_t *src, uint8_t *header)
lastActiveNode::ipAddr
uint32_t ipAddr
Definition: icss_dlr.h:366
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.
dlr_Config::exclusionList
exceptionList * exclusionList
Definition: icss_dlr.h:458
dlr_Config::pktSendCounter
uint8_t pktSendCounter
Definition: icss_dlr.h:469
RING_FAULT
@ RING_FAULT
Definition: icss_dlr.h:230
EIP_DLR_addModuleIPAddress
void EIP_DLR_addModuleIPAddress(EIP_DLRHandle dlrHandle, uint32_t newIP)
PORT_LINK_DOWN
@ PORT_LINK_DOWN
Definition: icss_dlr.h:284
dlrStateMachineVar::node_state
uint8_t node_state
Definition: icss_dlr.h:310
superConfig::beaconInterval
uint32_t beaconInterval
Definition: icss_dlr.h:333
ACTIVE_RING_SUPERVISOR
@ ACTIVE_RING_SUPERVISOR
Definition: icss_dlr.h:269
EIP_DLR_periodicProcessing
void EIP_DLR_periodicProcessing(ClockP_Object *obj, void *userArg)
superConfig::superEnable
uint8_t superEnable
Definition: icss_dlr.h:331
dlrStruct
DLR parent structure through which all other structures can be accessed.
Definition: icss_dlr.h:387
EIP_DLR_set_pdi_wd_trigger_mode
void EIP_DLR_set_pdi_wd_trigger_mode(EIP_DLRHandle dlrHandle, uint32_t mode)
Set the PDI WD trigger mode.
EIP_DLR_deinit
void EIP_DLR_deinit(EIP_DLRHandle dlrHandle)
API to de-initialize the DLR driver.
activeSuperAddr
Supervisor address, part of DLR Object. Attribute ID 10.
Definition: icss_dlr.h:349
dlr_Config::stateMachineCount
uint32_t stateMachineCount
Definition: icss_dlr.h:468
dlrStateMachineVar::ring_state
uint8_t ring_state
Definition: icss_dlr.h:312
EIP_DLR_port0ISR
void EIP_DLR_port0ISR(uintptr_t arg)
Fast ISR for Port 0, bypasses the buffer copy and NDK.
PARTIAL_FAULT
@ PARTIAL_FAULT
Definition: icss_dlr.h:256
EIP_DLR_genNCResFrame
void EIP_DLR_genNCResFrame(uint8_t *src, uint8_t sourcePort, uint8_t reqSrcPort, uint32_t sequenceId)
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.
EIP_DLR_dRAMInit
void EIP_DLR_dRAMInit(EIP_DLRHandle dlrHandle)
EIP_DLR_addVlanID
void EIP_DLR_addVlanID(uint8_t *src, uint16_t vlanID)
ICSS_EMAC_MAX_PORTS_PER_INSTANCE
#define ICSS_EMAC_MAX_PORTS_PER_INSTANCE
Maximum number of Ports in a single ICSS
Definition: icss_emac.h:66
LINEAR_TOP
@ LINEAR_TOP
Definition: icss_dlr.h:239