[D
	/LoadSW [P
		[A LoadFlag ]	% LoadFlag = False -> Check only if Files are existing 	
		
		/Result #1 def
		/MissingFile '' def	
		
		/SWFile FilePath IntfSel.IntfDir add '\' add IntfSel.IntfSWFileName add IntftypeExt add def
		/SWFile SWFile '_V' add IntfSel.IntfSWVersion cvs add 'S' add IntfSel.IntfSWSubVersion cvs add def 
		IntfSel.IntfSWBetaInfo '' ne [B
			/SWFile SWFile '_' add IntfSel.IntfSWBetaInfo add def
		] if
		/SWFile SWFile '.HX3' add def
		
		
		/TreeFile FilePath IntfSel.IntfDir add '\' add IntfSel.IntfTreeFileName add IntftypeExt add def
		/TreeFile TreeFile '_V' add IntfSel.IntfTreeVersion cvs add 'S' add IntfSel.IntfTreeSubVersion cvs add def 
		IntfSel.IntfTreeBetaInfo '' ne [B
			/TreeFile TreeFile '_' add IntfSel.IntfTreeBetaInfo add def
		] if
		/TreeFile TreeFile '.HX2' add def
		
		/DefaultParFile FilePath IntfSel.IntfDir add '\' add IntfSel.IntfTreeFileName add IntftypeExt add def
		/DefaultParFile DefaultParFile '_V' add IntfSel.IntfTreeVersion cvs add 'S' add IntfSel.IntfTreeSubVersion cvs add def 
		IntfSel.IntfTreeBetaInfo '' ne [B
			/DefaultParFile DefaultParFile '_' add IntfSel.IntfTreeBetaInfo add def
		] if
		/DefaultParFile DefaultParFile '.GR3' add def
		
		% check if files are existing
		Result [B
			SWFile FileExist not [B
				/Result #0 def 
				/MissingFile SWFile def
			] if
		] if
		Result [B
			TreeFile FileExist not [B
				/Result #0 def 
				/MissingFile TreeFile def
			] if
		] if
		Result [B
			DefaultParFile FileExist not [B
				/Result #0 def 
				/MissingFile DefaultParFile def
			] if
		] if
		Result [B
			IntfSel /IntfSpecificSetup known [B
				/SpecificSetupName IntfSel.IntfSpecificSetup def		    
				#0 'IntfLoader:' SpecificSetupName add cvn exec			    
				/MissingFile exch def
				/Result exch def
			] if
		] if
		
		
		Result LoadFlag and [B
			'Erasing interface firmware sector...' log     
			3 TalkIntf.ClearInstanceAll
			'Downloading interface software...' log
			SWFile dup loadobj exch PackInst:DownloadHX3File
			'Downloading interface parameter tree...' log     		
			TreeFile dup loadobj exch PackInst:DownloadHX2File		
			'Updating UPID list...' log
			TalkIntf.UpdateUPIDList       
			'Downloading interface default parameters...' log
			DefaultParFile dup loadobj exch PackInst:DownloadGR3File
			IntfSel /IntfSpecificSetup known [B				
				'Interface specific setup...' log
				LoadFlag 'IntfLoader:' SpecificSetupName add cvn exec
			] if
		] if
		[A /MissingFile /Result]
	]
	
	/EtherCATSetup [P
		[A /LoadFlag ]
		/Result #1 def
		/MissingFile '' def
		/ModuleParFile FilePath IntfSel.IntfDir add IntfSel.IntfModulePar add def
		ModuleParFile FileExist not [B
			/Result #0 def 
			/MissingFile ModuleParFile def			    
		] if 
		LoadFlag [B
			/ModuleType  $A3000000 ReadMemory def            
			ModuleType $10 eq [B
				'Downloading module parameter...' log     		
				ModuleParFile dup loadobj exch PackInst:DownloadHX2File	
				/Value $A200068E ReadMemory def
				$A400001C Value WriteWordToElo
				/Value $A200068C ReadMemory def
				$A400001E Value WriteWordToElo			
			]
			[B
				'Warning: EtherCAT module is not connected!' log
			] ifelse  
		] if
		[A /Result /MissingFile] 
	]
	
	/ProfiNetSetup [P
		[A /LoadFlag ]
		/Result #1 def
		/MissingFile '' def
		/ModuleParFile FilePath IntfSel.IntfDir add IntfSel.IntfModulePar add def
		ModuleParFile FileExist not [B
			/Result #0 def 
			/MissingFile ModuleParFile def			    
		] if 
		LoadFlag [B
			/ModuleType  $A3000000 ReadMemory def            
			ModuleType $70 eq [B
				'Downloading module parameter...' log     		
				ModuleParFile dup loadobj exch PackInst:DownloadHX2File	
				%/Value $A200068E ReadMemory def
				%$A400001C Value WriteWordToElo
				%/Value $A200068C ReadMemory def
				%$A400001E Value WriteWordToElo			
			]
			[B
				'Warning: EtherCAT module is not connected!' log
			] ifelse  
		] if
		[A /Result /MissingFile] 
	]

	/POWERLINKSetup [P
		[A /LoadFlag ]
		
		/ModuleFWType		$0100 def		% PL
		/ModuleHWVersion	$0103 def		% latest HW Version: Version 1, Revision B
		
		/ModuleTypeAddress $A3000000 def		
		/ModuleFWTypeAddress $A3000070 def		
		/ModuleFWVersionAddress $A3000072 def
		/ModuleHWVersionAddress $A3000002 def
		
		/Result #1 def
		/MissingFile '' def
		
		/ModuleType  ModuleTypeAddress ReadMemory def  		
	
		% check Module Type
		ModuleType $40 eq[B
			/ModuleFWTypeRead  ModuleFWTypeAddress ReadMemory def            
			/ModuleFWVersionRead  ModuleFWVersionAddress ReadMemory def       
			/ModuleHWVersionRead  ModuleHWVersionAddress ReadMemory def  
		
			% check HW module version
			ModuleHWVersionRead ModuleHWVersion ge[B
				% Module HW >= V1.0.2 
				/ModuleFWVersion	$0103 def	% latest compatibel FW Version: Version 1, Subversion 3
				
				/ModuleParFile FilePath IntfSel.IntfDir add IntfSel.IntfModulePar add def
				ModuleParFile FileExist not [B
					/Result #0 def 
					/MissingFile ModuleParFile def			    
				] 
				[B
					ModuleFWTypeRead ModuleFWType eq[B
						LoadFlag  ModuleFWVersionRead ModuleFWVersion ne and[B
							'Programming FPGA...' log     	
							/JTAG_START_EXECUTION $A5A5 def
							/JTAG_Execute $C0000200 def
							JTAG_Execute JTAG_START_EXECUTION WriteWordToElo						
							ModuleParFile dup loadobj exch PackInst:DownloadHX2File	
							ModuleFWVersionAddress ModuleFWVersion WriteWordToElo
							'Done' log	
						]if
					] 
					[B
					'Warning: POWERLINK module is not connected!' log					
					] ifelse
				] ifelse
			]
			[B
				% Module HW < V1.0.2
				/ModuleFWVersion	$0102 def	% latest compatibel FW Version: Version 1, Subversion 2
				
				/ModulePar '\FPGA\EPLHUB_FPGA_V1_2.HX2'	def
				/ModuleParFile FilePath IntfSel.IntfDir add ModulePar add def
				ModuleParFile FileExist not [B
					/Result #0 def 
					/MissingFile ModuleParFile def			    
				]
				[B				
					ModuleFWTypeRead ModuleFWType eq[B
						LoadFlag  ModuleFWVersionRead ModuleFWVersion ne and[B
							'Programming FPGA...' log     	
							/JTAG_START_EXECUTION $A5A5 def
							/JTAG_Execute $C0000200 def
							JTAG_Execute JTAG_START_EXECUTION WriteWordToElo						
							ModuleParFile dup loadobj exch PackInst:DownloadHX2File	
							ModuleFWVersionAddress ModuleFWVersion WriteWordToElo
							'Done' log	
						]if
					] 
					[B
					'Warning: POWERLINK module is not connected!' log					
					] ifelse
				]ifelse
				
			]ifelse
		]
		[B
		'Warning: Wrong HW Module Type connected!' log
		] ifelse 
		
		[A /Result /MissingFile] 
	]
	
	/SERCOSIIISetup [P
		[A /LoadFlag ]
		
		/ModuleFWType		$0200 def		% SC
		/ModuleFWVersion	$0101 def		% Version 1, Subversion 1
		
		/ModuleFWTypeAddress $A3000070 def		
		/ModuleFWVersionAddress $A3000072 def
		
		/Result #1 def
		/MissingFile '' def
		/ModuleParFile FilePath IntfSel.IntfDir add IntfSel.IntfModulePar add def
			ModuleParFile FileExist not [B
			/Result #0 def 
			/MissingFile ModuleParFile def			    
		] if 

		/ModuleFWTypeRead  ModuleFWTypeAddress ReadMemory def            
		/ModuleFWVersionRead  ModuleFWVersionAddress ReadMemory def            

		LoadFlag ModuleFWTypeRead ModuleFWType ne ModuleFWVersionRead ModuleFWVersion ne or and [B
			/ModuleType  $A3000000 ReadMemory def            
			ModuleType $40 eq [B
				'Programming FPGA...' log     	
				/JTAG_START_EXECUTION $A5A5 def
				/JTAG_Execute $C0000200 def
				JTAG_Execute JTAG_START_EXECUTION WriteWordToElo						
				ModuleParFile dup loadobj exch PackInst:DownloadHX2File	
				ModuleFWTypeAddress ModuleFWType WriteWordToElo
				ModuleFWVersionAddress ModuleFWVersion WriteWordToElo
			]
			[B
			'Warning: SERCOSIII module is not connected!' log
			] ifelse 
		] 
		[B
		'Done' log					
		] ifelse
		[A /Result /MissingFile] 
	]
	
	
	
]
