<?xml version="1.0" encoding="utf-8" standalone="no" ?>
<!DOCTYPE featureDefinitions SYSTEM "../featureDefinitions.dtd">
<featureDefinitions name="SPI" iconName="SPI" helpIndex="">
	
	<userControlGroup name="none" caption="none">
		<userControlSubGroup name="none" caption="none">
			<userControl name="applyButton">
				<dialogConfig type="applyButton" caption="none"></dialogConfig>
				<userAction name="apply">
					<claimResource type="register" registerField="OWN_SPI%instance%" value="0"></claimResource>
					<claimResource type="pin" pin="SDI%instance%" polarity="Inp"></claimResource>
				</userAction>
			</userControl>
		</userControlSubGroup>
	</userControlGroup>
	
	<userControlGroup name="communicationSettings" caption="Communication Settings">
		<userControlSubGroup name="none" caption="none">
			
			<userControl name="enable">
				<dialogConfig type="CK" caption="Enable on Startup"></dialogConfig>
				<userAction name="enable">
					<claimResource type="register" instance="%instance%" registerField="SPION" value="1"></claimResource>
				</userAction>
				<userAction name="disable">
					<claimResource type="register" instance="%instance%" registerField="SPION" value="0"></claimResource>
				</userAction>
			</userControl>
			
			<userControl name="enableSDOx">
				<dialogConfig type="CK" caption="Enable Data Out on SDO pin"></dialogConfig>
				<userAction name="disable">
					<claimResource type="register" instance="%instance%" registerField="DISSDO" value="1"></claimResource>
				</userAction>
				<userAction name="enable">
					<claimResource type="register" instance="%instance%" registerField="DISSDO" value="0"></claimResource>
					<claimResource type="pin" pin="SDO%instance%" polarity="Out"></claimResource>
				</userAction>
			</userControl>
			
			<userControl name="interruptEnableRx" enableForInt="SPI%instance%RX">
				<dialogConfig type="CK" caption="Enable Interrupt on Startup" />
				<userAction name="enable">
					<claimResource type="register" registerField="SPI%instance%RXIE" value="1" />
				</userAction>
				<userAction name="disable">
					<claimResource type="register" registerField="SPI%instance%RXIE" value="0" />
				</userAction>
			</userControl>

			<userControl name="interruptEnableTx" enableForInt="SPI%instance%TX">
				<dialogConfig type="CK" caption="Enable Interrupt on Startup" />
				<userAction name="enable">
					<claimResource type="register" registerField="SPI%instance%TXIE" value="1" />
				</userAction>
				<userAction name="disable">
					<claimResource type="register" registerField="SPI%instance%TXIE" value="0" />
				</userAction>
			</userControl>
			
			<userControl name="interruptEnableRxOF" enableForInt="SPI%instance%E">
				<dialogConfig type="CK" caption="Enable Interrupt on Startup" />
				<userAction name="enable">
					<claimResource type="register" registerField="SPI%instance%EIE" value="1" />
				</userAction>
				<userAction name="disable">
					<claimResource type="register" registerField="SPI%instance%EIE" value="0" />
				</userAction>
			</userControl>
			
			<userControl name="interruptPriority" priorityForInt="SPI%instance%">
				<dialogConfig type="CB" range="7" caption="Interrupt Priority">
					<selection name="PriorityLevelTo%index%" value="%index%"></selection>
				</dialogConfig>
				<userAction>
					<claimResource type="register" registerField="SPI%instance%IP" method="PriorityLevel3Bit"></claimResource>
				</userAction>
			</userControl>
			
			<userControl name="interruptSubPriority" priorityForInt="SPI%instance%">
				<dialogConfig type="CB" range="3" caption="Interrupt Priority">
					<selection name="PriorityLevelTo%index%" value="%index%"></selection>
				</dialogConfig>
				<userAction>
					<claimResource type="register" registerField="SPI%instance%IS" method="PriorityLevel3Bit"></claimResource>
				</userAction>
			</userControl>
			
			<userControl name="idleClockState">
				<dialogConfig type="CB" caption="Idle Clock Polarity">
					<selection name="low" value="IDLE state is low"></selection>
					<selection name="high" value="IDLE state is high"></selection>
				</dialogConfig>
				<userAction name="high">
					<claimResource type="register" instance="%instance%" registerField="CKP" value="1"></claimResource>
				</userAction>
				<userAction name="low">
					<claimResource type="register" instance="%instance%" registerField="CKP" value="0"></claimResource>
				</userAction>
			</userControl>
			
			<userControl name="transmitClockEdge">
				<dialogConfig type="CB" caption="Transmit Clock Edge">
					<selection name="low" value="Idle clock to Active"></selection>
					<selection name="high" value="Active clock to Idle"></selection>
				</dialogConfig>
				<userAction name="high">
					<claimResource type="register" instance="%instance%" registerField="CKE" value="1"></claimResource>
				</userAction>
				<userAction name="low">
					<claimResource type="register" instance="%instance%" registerField="CKE" value="0"></claimResource>
				</userAction>
			</userControl>
			<userControl name="SPIMode">
				<dialogConfig type="CB" caption="SPI Mode">
					<selection name="MasterFrmSyncDis" value="Master/FrameSyncDisabled"></selection>
					<selection name="SlaveFrmSyncDis" value="Slave/FrameSyncDisabled"></selection>
					<selection name="SlaveFrmSyncDisSlaveSelEnb" value="Slave/FrameSyncDisabled/SlaveSelectEnabled"></selection>
					<selection name="MasterFrmSyncEnbFrameMasterMode" value="Master/FrameSyncEnabled/FrameMasterMode"></selection>
					<selection name="MasterFrmSyncEnbFrameSlaveMode" value="Master/FrameSyncEnabled/FrameSlaveMode"></selection>
					<selection name="SlaveFrmSyncEnbFrameMasterMode" value="Slave/FrameSyncEnabled/FrameMasterMode"></selection>
					<selection name="SlaveFrmSyncEnbFrameSlaveMode" value="Slave/FrameSyncEnabled/FrameSlaveMode"></selection>
				</dialogConfig>
				
				<userAction name="SlaveFrmSyncEnbFrameSlaveMode">
					<claimResource type="register" instance="%instance%" registerField="SSEN" value="0"></claimResource>
					<claimResource type="register" instance="%instance%" registerField="MSTEN" value="0"></claimResource>
					<claimResource type="register" instance="%instance%" registerField="FRMEN" value="1"></claimResource>
					<claimResource type="register" instance="%instance%" registerField="FRMSYNC" value="1"></claimResource>
					<claimResource type="pin" pin="SCK%instance%" polarity="Inp"></claimResource>
				</userAction>

				<userAction name="SlaveFrmSyncEnbFrameMasterMode">
					<claimResource type="register" instance="%instance%" registerField="SSEN" value="0"></claimResource>
					<claimResource type="register" instance="%instance%" registerField="MSTEN" value="0"></claimResource>
					<claimResource type="register" instance="%instance%" registerField="FRMEN" value="1"></claimResource>
					<claimResource type="register" instance="%instance%" registerField="FRMSYNC" value="0"></claimResource>
					<claimResource type="pin" pin="SCK%instance%" polarity="Inp"></claimResource>
				</userAction>

				<userAction name="MasterFrmSyncEnbFrameSlaveMode">
					<claimResource type="register" instance="%instance%" registerField="SSEN" value="0"></claimResource>
					<claimResource type="register" instance="%instance%" registerField="MSTEN" value="1"></claimResource>
					<claimResource type="register" instance="%instance%" registerField="FRMEN" value="1"></claimResource>
					<claimResource type="register" instance="%instance%" registerField="FRMSYNC" value="1"></claimResource>
					<claimResource type="pin" pin="SCK%instance%" polarity="Out"></claimResource>
				</userAction>

				<userAction name="MasterFrmSyncEnbFrameMasterMode">
					<claimResource type="register" instance="%instance%" registerField="SSEN" value="0"></claimResource>
					<claimResource type="register" instance="%instance%" registerField="MSTEN" value="1"></claimResource>
					<claimResource type="register" instance="%instance%" registerField="FRMEN" value="1"></claimResource>
					<claimResource type="register" instance="%instance%" registerField="FRMSYNC" value="0"></claimResource>
					<claimResource type="pin" pin="SCK%instance%" polarity="Out"></claimResource>
				</userAction>

				<userAction name="SlaveFrmSyncDisSlaveSelEnb">
					<claimResource type="register" instance="%instance%" registerField="SSEN" value="1"></claimResource>
					<claimResource type="register" instance="%instance%" registerField="MSTEN" value="0"></claimResource>
					<claimResource type="register" instance="%instance%" registerField="FRMEN" value="0"></claimResource>
					<claimResource type="register" instance="%instance%" registerField="FRMSYNC" value="1"></claimResource>
					<claimResource type="pin" pin="SCK%instance%" polarity="Inp"></claimResource>
					<claimResource type="pin" pin="SS%instance%" polarity="Inp"></claimResource>
				</userAction>
				
				<userAction name="SlaveFrmSyncDis">
					<claimResource type="register" instance="%instance%" registerField="SSEN" value="0"></claimResource>
					<claimResource type="register" instance="%instance%" registerField="MSTEN" value="0"></claimResource>
					<claimResource type="register" instance="%instance%" registerField="FRMEN" value="0"></claimResource>
					<claimResource type="register" instance="%instance%" registerField="FRMSYNC" value="1"></claimResource>
					<claimResource type="pin" pin="SCK%instance%" polarity="Inp"></claimResource>
				</userAction>
				
				<userAction name="MasterFrmSyncDis">
					<claimResource type="register" instance="%instance%" registerField="SSEN" value="0"></claimResource>
					<claimResource type="register" instance="%instance%" registerField="MSTEN" value="1"></claimResource>
					<claimResource type="register" instance="%instance%" registerField="FRMEN" value="0"></claimResource>
					<claimResource type="register" instance="%instance%" registerField="FRMSYNC" value="0"></claimResource>
					<claimResource type="pin" pin="SCK%instance%" polarity="Out"></claimResource>
				</userAction>
			</userControl>
			
			<userControl name="operateDuringIdle">
				<dialogConfig type="CB" caption="CPU Idle Operation">
					<selection name="continueOnIdle" value="Continue"></selection>
					<selection name="stopOnIdle" value="Stop"></selection>
				</dialogConfig>
				<userAction name="stopOnIdle">
					<claimResource type="register" instance="%instance%" registerField="SIDL" value="1"></claimResource>
				</userAction>
				<userAction name="continueOnIdle">
					<claimResource type="register" instance="%instance%" registerField="SIDL" value="0"></claimResource>
				</userAction>
			</userControl>
			
			<userControl name="dataFormat">
				<dialogConfig type="CB" caption="Data Format">
					<selection name="byteWide" value="Data is byte wide (8bit)"></selection>
					<selection name="wordWide" value="Data is word wide (16bit)"></selection>
					<selection name="longWide" value="Data is Long wide (32bit)"></selection>
				</dialogConfig>

				<userAction name="longWide">
					<claimResource type="register" instance="%instance%" registerField="MODE" value="10"></claimResource>
				</userAction>

				<userAction name="wordWide">
					<claimResource type="register" instance="%instance%" registerField="MODE" value="01"></claimResource>
				</userAction>
				
				<userAction name="byteWide">
					<claimResource type="register" instance="%instance%" registerField="MODE" value="00"></claimResource>
				</userAction>
			</userControl>
			
			<userControl name="FrameSyncPulsePolarity">
				<dialogConfig type="CB" caption="Frame Sync Pulse Polarity">
					<selection name="activeHigh" value="Active High"></selection>
					<selection name="activeLow" value="Active Low"></selection>
				</dialogConfig>
				<userAction name="activeLow">
					<claimResource type="register" instance="%instance%" registerField="FRMPOL" value="0"></claimResource>
				</userAction>
				<userAction name="activeHigh">
					<claimResource type="register" instance="%instance%" registerField="FRMPOL" value="1"></claimResource>
				</userAction>
			</userControl>
			
			<userControl name="FrameSyncPulseEdge">
				<dialogConfig type="CB" caption="Frame Sync Pulse Edge Select">
					<selection name="Sel1" value="Pulse Coincides first bit Clk"></selection>
					<selection name="Sel2" value="Pulse Precedes first bit Clk"></selection>
				</dialogConfig>
				<userAction name="Sel2">
					<claimResource type="register" instance="%instance%" registerField="FRMDEL" value="0"></claimResource>
				</userAction>
				
				<userAction name="Sel1">
					<claimResource type="register" instance="%instance%" registerField="FRMDEL" value="1"></claimResource>
				</userAction>
			</userControl>
			
		</userControlSubGroup>
		
		<userControlSubGroup name="masterSettings" caption="Master Settings">
			
			<userControl name="dataInputPhase">
				<dialogConfig type="CB" caption="Data Input Sample Instant">
					<selection name="middle" value="Middle of data output time"></selection>
					<selection name="end" value="End of data output time"></selection>
				</dialogConfig>
				<userAction name="end">
					<claimResource type="register" instance="%instance%" registerField="SMP" value="1"></claimResource>
				</userAction>
				<userAction name="middle">
					<claimResource type="register" instance="%instance%" registerField="SMP" value="0"></claimResource>
				</userAction>
			</userControl>
			
			<userControl name="SPIbaudRate">
				<dialogConfig type="TB" caption="Baud Rate"></dialogConfig>
				<userAction></userAction>
			</userControl>
			<userControl type="readOnly" name="baudRate">
				<dialogConfig type="general" caption="Baud Rate"></dialogConfig>
				<userAction></userAction>
			</userControl>
			
		</userControlSubGroup>
	</userControlGroup>
</featureDefinitions>
