<?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"/>
				<userAction name="apply">
					<claimResource type="pin" pin="SDI%instance%" polarity="Inp"/>
				</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"/>
				<userAction name="enable">
					<claimResource type="register" instance="%instance%" registerField="SPIEN" value="1"/>
				</userAction>
				<userAction name="disable">
					<claimResource type="register" instance="%instance%" registerField="SPIEN" value="0"/>
				</userAction>
			</userControl>
			<userControl name="enableSDOx">
				<dialogConfig type="CK" caption="Enable Data Out on SDO pin"/>
				<userAction name="disable">
					<claimResource type="register" instance="%instance%" registerField="DISSDO" value="1"/>
				</userAction>
				<userAction name="enable">
					<claimResource type="register" instance="%instance%" registerField="DISSDO" value="0"/>
					<claimResource type="pin" pin="SDO%instance%" polarity="Out"/>
				</userAction>
			</userControl>
			<userControl name="dataFormat">
				<dialogConfig type="CB" caption="DataFormat">
					<selection name="byte" value="Data is byte wide (8bit)"/>
					<selection name="word" value="Data is word wide (16bit)"/>
				</dialogConfig>
				<userAction name="word">
					<claimResource type="register" instance="%instance%" registerField="MODE16" value="1"/>
				</userAction>
				<userAction name="byte">
					<claimResource type="register" instance="%instance%" registerField="MODE16" value="0"/>
				</userAction>
			</userControl>
			<userControl name="interruptEnable" enableForInt="SPI%instance%">
				<dialogConfig type="CK" caption="Enable Interrupt on Startup"/>
				<userAction name="enable">
					<claimResource type="register" registerField="SPI%instance%IE" value="1"/>
				</userAction>
				<userAction name="disable">
					<claimResource type="register" registerField="SPI%instance%IE" value="0"/>
				</userAction>
			</userControl>
			<userControl name="interruptPriority" priorityForInt="SPI%instance%">
				<dialogConfig type="CB" range="7" caption="Interrupt Priority">
					<selection name="rxPriorityLevelTo%index%" value="%index%"/>
				</dialogConfig>
				<userAction>
					<!-- 	method to compute txPriority in bit mode should reference -->
					<!-- 	register info table read from XML -->
					<claimResource type="register" registerField="SPI%instance%IP" method="rxPriorityLevel3Bit"/>
				</userAction>
			</userControl>
			<userControl name="operateDuringIdle">
				<dialogConfig type="CB" caption="CPU Idle Operation">
					<selection name="continueOnIdle" value="Continue"/>
					<selection name="stopOnIdle" value="Stop"/>
				</dialogConfig>
				<userAction name="stopOnIdle">
					<claimResource type="register" instance="%instance%" registerField="SPISIDL" value="1"/>
				</userAction>
				<userAction name="continueOnIdle">
					<claimResource type="register" instance="%instance%" registerField="SPISIDL" value="0"/>
				</userAction>
			</userControl>
			<userControl name="idleClockState">
				<dialogConfig type="CB" caption="Idle Clock State">
					<selection name="low" value="IDLE state is low"/>
					<selection name="high" value="IDLE state is high"/>
				</dialogConfig>
				<userAction name="high">
					<claimResource type="register" instance="%instance%" registerField="CKP" value="1"/>
				</userAction>
				<userAction name="low">
					<claimResource type="register" instance="%instance%" registerField="CKP" value="0"/>
				</userAction>
			</userControl>
			<userControl name="transmitClockEdge">
				<dialogConfig type="CB" caption="Transmit Clock Edge">
					<selection name="low" value="Idle clock to Active"/>
					<selection name="high" value="Active clock to Idle"/>
				</dialogConfig>
				<userAction name="high">
					<claimResource type="register" instance="%instance%" registerField="CKE" value="1"/>
				</userAction>
				<userAction name="low">
					<claimResource type="register" instance="%instance%" registerField="CKE" value="0"/>
				</userAction>
			</userControl>
			<userControl name="SPIMode">
				<dialogConfig type="CB" caption="Mode">
					<selection name="Master" value="Master/FrameSyncDisabled"/>
					<selection name="Slave" value="Slave/FrameSyncDisabled"/>
					<selection name="SlaveSlaveSel" value="Slave/FrameSyncDisabled/SlaveSelectEnabled"/>
					<selection name="MasterFrameMaster" value="Master/FrameSyncEnabled/FrameMasterMode"/>
					<selection name="MasterFrameSlave" value="Master/FrameSyncEnabled/FrameSlaveMode"/>
					<selection name="SlaveFrameMasterRx" value="Slave/FrameSyncEnabled/FrameMasterMode"/>
					<selection name="SlaveFrameMasterTx" value="Slave/FrameSyncEnabled/FrameSlaveMode"/>
				</dialogConfig>
				<userAction name="SlaveFrameMasterTx">
					<claimResource type="register" instance="%instance%" registerField="MSTEN" value="0"/>
					<claimResource type="register" instance="%instance%" registerField="FRMEN" value="1"/>
					<claimResource type="register" instance="%instance%" registerField="SPIFSD" value="1"/>
					<claimResource type="register" instance="%instance%" registerField="SSEN" value="0"/>
					<claimResource type="pin" pin="SCK%instance%" polarity="Inp"/>
					<claimResource type="pin" pin="SS%instance%" polarity="Inp"/>
				</userAction>
				<userAction name="SlaveFrameMasterRx">
					<claimResource type="register" instance="%instance%" registerField="MSTEN" value="0"/>
					<claimResource type="register" instance="%instance%" registerField="FRMEN" value="1"/>
					<claimResource type="register" instance="%instance%" registerField="SPIFSD" value="0"/>
					<claimResource type="register" instance="%instance%" registerField="SSEN" value="0"/>
					<claimResource type="pin" pin="SCK%instance%" polarity="Inp"/>
					<claimResource type="pin" pin="SS%instance%" polarity="Out"/>
				</userAction>
				<userAction name="MasterFrameSlave">
					<claimResource type="register" instance="%instance%" registerField="MSTEN" value="1"/>
					<claimResource type="register" instance="%instance%" registerField="FRMEN" value="1"/>
					<claimResource type="register" instance="%instance%" registerField="SPIFSD" value="1"/>
					<claimResource type="register" instance="%instance%" registerField="SSEN" value="0"/>
					<claimResource type="pin" pin="SCK%instance%" polarity="Out"/>
					<claimResource type="pin" pin="SS%instance%" polarity="Inp"/>
				</userAction>
				<userAction name="MasterFrameMaster">
					<claimResource type="register" instance="%instance%" registerField="MSTEN" value="1"/>
					<claimResource type="register" instance="%instance%" registerField="FRMEN" value="1"/>
					<claimResource type="register" instance="%instance%" registerField="SPIFSD" value="0"/>
					<claimResource type="register" instance="%instance%" registerField="SSEN" value="0"/>
					<claimResource type="pin" pin="SCK%instance%" polarity="Out"/>
					<claimResource type="pin" pin="SS%instance%" polarity="Out"/>
				</userAction>
				<userAction name="SlaveSlaveSel">
					<claimResource type="register" instance="%instance%" registerField="MSTEN" value="0"/>
					<claimResource type="register" instance="%instance%" registerField="FRMEN" value="0"/>
					<claimResource type="register" instance="%instance%" registerField="SPIFSD" value="0"/>
					<claimResource type="register" instance="%instance%" registerField="SSEN" value="1"/>
					<claimResource type="pin" pin="SCK%instance%" polarity="Inp"/>
					<claimResource type="pin" pin="SS%instance%" polarity="Inp"/>
				</userAction>
				<userAction name="Slave">
					<claimResource type="register" instance="%instance%" registerField="MSTEN" value="0"/>
					<claimResource type="register" instance="%instance%" registerField="FRMEN" value="0"/>
					<claimResource type="register" instance="%instance%" registerField="SPIFSD" value="0"/>
					<claimResource type="register" instance="%instance%" registerField="SSEN" value="0"/>
					<claimResource type="pin" pin="SCK%instance%" polarity="Inp"/>
				</userAction>
				<userAction name="Master">
					<claimResource type="register" instance="%instance%" registerField="MSTEN" value="1"/>
					<claimResource type="register" instance="%instance%" registerField="FRMEN" value="0"/>
					<claimResource type="register" instance="%instance%" registerField="SPIFSD" value="0"/>
					<claimResource type="register" instance="%instance%" registerField="SSEN" value="0"/>
					<claimResource type="pin" pin="SCK%instance%" polarity="Out"/>
				</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 name="end" value="End of data output time"/>
				</dialogConfig>
				<userAction name="end">
					<claimResource type="register" instance="%instance%" registerField="SMP" value="1"/>
				</userAction>
				<userAction name="middle">
					<claimResource type="register" instance="%instance%" registerField="SMP" value="0"/>
				</userAction>
			</userControl>
			<userControl type="readOnly" name="baudRate">
				<dialogConfig type="general" caption="Baud Rate"/>
				<userAction/>
			</userControl>
			<userControl name="prescaleA">
				<dialogConfig type="CB" caption="Primary Prescaler">
					<selection name="setTo64" value="1:64"/>
					<selection name="setTo16" value="1:16"/>
					<selection name="setTo4" value="1:4"/>
					<selection name="setTo1" value="1:1"/>
				</dialogConfig>
				<userAction name="setTo1">
					<claimResource type="register" instance="%instance%" registerField="PPRE" value="11"/>
				</userAction>
				<userAction name="setTo4">
					<claimResource type="register" instance="%instance%" registerField="PPRE" value="10"/>
				</userAction>
				<userAction name="setTo16">
					<claimResource type="register" instance="%instance%" registerField="PPRE" value="01"/>
				</userAction>
				<userAction name="setTo64">
					<claimResource type="register" instance="%instance%" registerField="PPRE" value="00"/>
				</userAction>
			</userControl>
			<userControl name="prescaleB">
				<dialogConfig type="CB" caption="Secondary Prescaler">
					<selection name="setTo8" value="1:8"/>
					<selection name="setTo7" value="1:7"/>
					<selection name="setTo6" value="1:6"/>
					<selection name="setTo5" value="1:5"/>
					<selection name="setTo4" value="1:4"/>
					<selection name="setTo3" value="1:3"/>
					<selection name="setTo2" value="1:2"/>
					<selection name="setTo1" value="1:1"/>
				</dialogConfig>
				<userAction name="setTo8">
					<claimResource type="register" instance="%instance%" registerField="SPRE" value="111"/>
				</userAction>
				<userAction name="setTo7">
					<claimResource type="register" instance="%instance%" registerField="SPRE" value="110"/>
				</userAction>
				<userAction name="setTo6">
					<claimResource type="register" instance="%instance%" registerField="SPRE" value="101"/>
				</userAction>
				<userAction name="setTo5">
					<claimResource type="register" instance="%instance%" registerField="SPRE" value="100"/>
				</userAction>
				<userAction name="setTo4">
					<claimResource type="register" instance="%instance%" registerField="SPRE" value="011"/>
				</userAction>
				<userAction name="setTo3">
					<claimResource type="register" instance="%instance%" registerField="SPRE" value="010"/>
				</userAction>
				<userAction name="setTo2">
					<claimResource type="register" instance="%instance%" registerField="SPRE" value="001"/>
				</userAction>
				<userAction name="setTo1">
					<claimResource type="register" instance="%instance%" registerField="SPRE" value="000"/>
				</userAction>
			</userControl>
		</userControlSubGroup>
	</userControlGroup>
</featureDefinitions>
