+       for (uint8_t PipeNum = 1; PipeNum < PIPE_TOTAL_PIPES; PipeNum++)
+       {
+               uint16_t Size;
+               uint8_t  Type;
+               uint8_t  Token;
+               uint8_t  EndpointAddress;
+               uint8_t  InterruptPeriod;
+               bool     DoubleBanked;
+
+               if (PipeNum == SIInterfaceInfo->Config.DataINPipeNumber)
+               {
+                       Size            = DataINEndpoint->EndpointSize;
+                       EndpointAddress = DataINEndpoint->EndpointAddress;
+                       Token           = PIPE_TOKEN_IN;
+                       Type            = EP_TYPE_BULK;
+                       DoubleBanked    = SIInterfaceInfo->Config.DataINPipeDoubleBank;
+                       InterruptPeriod = 0;
+
+                       SIInterfaceInfo->State.DataINPipeSize = DataINEndpoint->EndpointSize;
+               }
+               else if (PipeNum == SIInterfaceInfo->Config.DataOUTPipeNumber)
+               {
+                       Size            = DataOUTEndpoint->EndpointSize;
+                       EndpointAddress = DataOUTEndpoint->EndpointAddress;
+                       Token           = PIPE_TOKEN_OUT;
+                       Type            = EP_TYPE_BULK;
+                       DoubleBanked    = SIInterfaceInfo->Config.DataOUTPipeDoubleBank;
+                       InterruptPeriod = 0;
+
+                       SIInterfaceInfo->State.DataOUTPipeSize = DataOUTEndpoint->EndpointSize;
+               }
+               else if (PipeNum == SIInterfaceInfo->Config.EventsPipeNumber)
+               {
+                       Size            = EventsEndpoint->EndpointSize;
+                       EndpointAddress = EventsEndpoint->EndpointAddress;
+                       Token           = PIPE_TOKEN_IN;
+                       Type            = EP_TYPE_INTERRUPT;
+                       DoubleBanked    = SIInterfaceInfo->Config.EventsPipeDoubleBank;
+                       InterruptPeriod = EventsEndpoint->PollingIntervalMS;
+
+                       SIInterfaceInfo->State.EventsPipeSize = EventsEndpoint->EndpointSize;
+               }
+               else
+               {
+                       continue;