       break;
     }
   }
+}
+
+
+// This function is called from the Library whenever a normal DCC Turnout Packet is received
+void notifyDccAccTurnoutBoard (uint16_t BoardAddr, uint8_t OutputPair, uint8_t Direction, uint8_t OutputPower)
+{
+  uint16_t Addr = ((BoardAddr - 1) * 4) + OutputPair + 1;
+
+  Serial.print(F("notifyDccAccTurnoutBoard: "));
+  Serial.print(Addr,DEC) ;
+  Serial.print(',');
+  Serial.print(Direction,DEC) ;
+  Serial.print(',');
+  Serial.println(OutputPower, HEX) ;
+
+  processTurnoutCommand(Addr, Direction, OutputPower);
 };
 
 #ifdef DISABLE_OUTPUTS_IDLE

#endif
  
  // Call the main DCC Init function to enable the DCC Receiver
  Dcc.init( MAN_ID_DIY, 10, CV29_ACCESSORY_DECODER | CV29_OUTPUT_ADDRESS_MODE, 0 );
}

void setup()

uint8_t lastDirection = 0xFF;
int     lastStep = 0;


void processTurnoutCommand(uint16_t Addr, uint8_t Direction, uint8_t OutputPower)
{
  Serial.print(F("processTurnoutCommand: "));
  
  for (int i = 0; i < MAX_TURNOUT_POSITIONS ; i++)
  {
    if ((Addr == turnoutPositions[i].dccAddress) && ((Addr != lastAddr) || (Direction != lastDirection)) && OutputPower)
