<?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="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" registerField="SPIEN" value="1"></claimResource>
</userAction>
<userAction name="disable">
	<claimResource type="register" registerField="SPIEN" 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" registerField="DISSDO" value="1"></claimResource>
</userAction>
<userAction name="enable">
	<claimResource type="register" registerField="DISSDO" value="0"></claimResource>
	<claimResource type="pin" pin="SDO%instance%" polarity="Out"></claimResource>
</userAction>
</userControl>

<userControl name="dataFormat">
<dialogConfig type="CB" caption="DataFormat">
	<selection name="byte" value="Data is byte wide (8bit)"></selection> 
	<selection name="word" value="Data is word wide (16bit)"></selection> 
</dialogConfig>
<userAction name="word">
	<claimResource type="register" registerField="MODE16" value="1"></claimResource>
</userAction>
<userAction name="byte">
	<claimResource type="register" registerField="MODE16" value="0"></claimResource>
</userAction>
</userControl>
 
<userControl name="interruptEnable" enableForInt="SPI%instance%">
<dialogConfig type="CK" caption="Enable Interrupt on Startup"></dialogConfig>
<userAction name="enable">
	<claimResource type="register" registerField="SPI%instance%IE" value="1"></claimResource>
</userAction>
<userAction name="disable">
	<claimResource type="register" registerField="SPI%instance%IE" value="0"></claimResource>
</userAction>
</userControl>

<userControl name="interruptPriority" priorityForInt="SPI%instance%">
<dialogConfig type="CB" range="7" caption="Interrupt Priority">
	<selection name="rxPriorityLevelTo%index%" value="%index%"></selection>
</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"></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" registerField="SPISIDL" value="1"></claimResource>
</userAction>
<userAction name="continueOnIdle">
	<claimResource type="register" registerField="SPISIDL" value="0"></claimResource>
</userAction>
</userControl>
 
<userControl name="idleClockState">
<dialogConfig type="CB" caption="Idle Clock State">
	<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" registerField="CKP" value="1"></claimResource>
</userAction>
<userAction name="low">
	<claimResource type="register" 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" registerField="CKE" value="1"></claimResource>
</userAction>
<userAction name="low">
	<claimResource type="register" registerField="CKE" value="0"></claimResource>
</userAction>
</userControl>
 
<userControl name="SPIMode">
<dialogConfig type="CB" caption="Mode">
	<selection name="Master" value="Master/FrameSyncDisabled"></selection> 
	<selection name="Slave" value="Slave/FrameSyncDisabled"></selection> 
	<selection name="SlaveSlaveSel" value="Slave/FrameSyncDisabled/SlaveSelectEnabled"></selection> 
	<selection name="MasterFrameMaster" value="Master/FrameSyncEnabled/FrameMasterMode"></selection> 
	<selection name="MasterFrameSlave" value="Master/FrameSyncEnabled/FrameSlaveMode"></selection> 
	<selection name="SlaveFrameMasterRx" value="Slave/FrameSyncEnabled/FrameMasterMode"></selection> 
	<selection name="SlaveFrameMasterTx" value="Slave/FrameSyncEnabled/FrameSlaveMode"></selection> 
</dialogConfig>
<userAction name="SlaveFrameMasterTx">
	<claimResource type="register" registerField="MSTEN" value="0"></claimResource>
	<claimResource type="register" registerField="FRMEN" value="1"></claimResource>
	<claimResource type="register" registerField="SPIFSD" value="0"></claimResource>
	<claimResource type="register" registerField="SSEN" value="0"></claimResource>
	<claimResource type="pin" pin="SCK%instance%" polarity="Inp"></claimResource>
	<claimResource type="pin" pin="SS%instance%" polarity="Inp"></claimResource>
</userAction>
<userAction name="SlaveFrameMasterRx">
	<claimResource type="register" registerField="MSTEN" value="0"></claimResource>
	<claimResource type="register" registerField="FRMEN" value="1"></claimResource>
	<claimResource type="register" registerField="SPIFSD" value="1"></claimResource>
	<claimResource type="register" registerField="SSEN" value="0"></claimResource>
	<claimResource type="pin" pin="SCK%instance%" polarity="Inp"></claimResource>
	<claimResource type="pin" pin="SS%instance%" polarity="Out"></claimResource>
</userAction>
<userAction name="MasterFrameSlave">
	<claimResource type="register" registerField="MSTEN" value="1"></claimResource>
	<claimResource type="register" registerField="FRMEN" value="1"></claimResource>
	<claimResource type="register" registerField="SPIFSD" value="0"></claimResource>
	<claimResource type="register" registerField="SSEN" value="0"></claimResource>
	<claimResource type="pin" pin="SCK%instance%" polarity="Out"></claimResource>
	<claimResource type="pin" pin="SS%instance%" polarity="Inp"></claimResource>
</userAction>
<userAction name="MasterFrameMaster">
	<claimResource type="register" registerField="MSTEN" value="1"></claimResource>
	<claimResource type="register" registerField="FRMEN" value="1"></claimResource>
	<claimResource type="register" registerField="SPIFSD" value="1"></claimResource>
	<claimResource type="register" registerField="SSEN" value="0"></claimResource>
	<claimResource type="pin" pin="SCK%instance%" polarity="Out"></claimResource>
	<claimResource type="pin" pin="SS%instance%" polarity="Out"></claimResource>
</userAction>
<userAction name="SlaveSlaveSel">
	<claimResource type="register" registerField="MSTEN" value="0"></claimResource>
	<claimResource type="register" registerField="FRMEN" value="0"></claimResource>
	<claimResource type="register" registerField="SPIFSD" value="0"></claimResource>
	<claimResource type="register" registerField="SSEN" value="1"></claimResource>
	<claimResource type="pin" pin="SCK%instance%" polarity="Inp"></claimResource>
	<claimResource type="pin" pin="SS%instance%" polarity="Inp"></claimResource>
</userAction>
<userAction name="Slave">
	<claimResource type="register" registerField="MSTEN" value="0"></claimResource>
	<claimResource type="register" registerField="FRMEN" value="0"></claimResource>
	<claimResource type="register" registerField="SPIFSD" value="0"></claimResource>
	<claimResource type="register" registerField="SSEN" value="0"></claimResource>
	<claimResource type="pin" pin="SCK%instance%" polarity="Inp"></claimResource>
</userAction>
<userAction name="Master">
	<claimResource type="register" registerField="MSTEN" value="1"></claimResource>
	<claimResource type="register" registerField="FRMEN" value="0"></claimResource>
	<claimResource type="register" registerField="SPIFSD" value="0"></claimResource>
	<claimResource type="register" registerField="SSEN" value="0"></claimResource>
	<claimResource type="pin" pin="SCK%instance%" polarity="Out"></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" registerField="SMP" value="1"></claimResource>
</userAction>
<userAction name="middle">
	<claimResource type="register" registerField="SMP" value="0"></claimResource>
</userAction>
</userControl>
 
<userControl type="readOnly" name="baudRate">
<dialogConfig type="general" caption="Baud Rate"></dialogConfig>
<userAction>
</userAction>
</userControl>

<userControl name="prescaleA">
<dialogConfig type="CB" caption="Primary Prescaler">
	<selection name="setTo64" value="1:64"></selection>
	<selection name="setTo16" value="1:16"></selection>
	<selection name="setTo4" value="1:4"></selection>
	<selection name="setTo1" value="1:1"></selection>
</dialogConfig>
<userAction name="setTo1">
	<claimResource type="register" registerField="PPRE" value="11"></claimResource>
</userAction>
<userAction name="setTo4">
	<claimResource type="register" registerField="PPRE" value="10"></claimResource>
</userAction>
<userAction name="setTo16">
	<claimResource type="register" registerField="PPRE" value="01"></claimResource>
</userAction>
<userAction name="setTo64">
	<claimResource type="register" registerField="PPRE" value="00"></claimResource>
</userAction>
</userControl>

<userControl name="prescaleB">
<dialogConfig type="CB" caption="Secondary Prescaler">
	<selection name="setTo8" value="1:8"></selection>
	<selection name="setTo7" value="1:7"></selection>
	<selection name="setTo6" value="1:6"></selection>
	<selection name="setTo5" value="1:5"></selection>
	<selection name="setTo4" value="1:4"></selection>
	<selection name="setTo3" value="1:3"></selection>
	<selection name="setTo2" value="1:2"></selection>
	<selection name="setTo1" value="1:1"></selection>
</dialogConfig>
<userAction name="setTo8">
	<claimResource type="register" registerField="SPRE" value="111"></claimResource>
</userAction>
<userAction name="setTo7">
	<claimResource type="register" registerField="SPRE" value="110"></claimResource>
</userAction>
<userAction name="setTo6">
	<claimResource type="register" registerField="SPRE" value="101"></claimResource>
</userAction>
<userAction name="setTo5">
	<claimResource type="register" registerField="SPRE" value="100"></claimResource>
</userAction>
<userAction name="setTo4">
	<claimResource type="register" registerField="SPRE" value="011"></claimResource>
</userAction>
<userAction name="setTo3">
	<claimResource type="register" registerField="SPRE" value="010"></claimResource>
</userAction>
<userAction name="setTo2">
	<claimResource type="register" registerField="SPRE" value="001"></claimResource>
</userAction>
<userAction name="setTo1">
	<claimResource type="register" registerField="SPRE" value="000"></claimResource>
</userAction>
</userControl>

</userControlSubGroup>
</userControlGroup>

</featureDefinitions>
