<?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_MSSP%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" registerField="SSPEN" value="1"></claimResource>
        </userAction>
        <userAction name="disable">
          <claimResource type="register" registerField="SSPEN" value="0"></claimResource>
        </userAction>
      </userControl>

      <userControl name="enableSDOx">
        <dialogConfig type="CK" caption="Enable Data Out on SDO pin"></dialogConfig>
        <userAction name="disable">
        </userAction>
        <userAction name="enable">
          <claimResource type="pin" pin="SDO%instance%" polarity="Out"></claimResource>
        </userAction>
      </userControl>

      <userControl name="interruptEnable" enableForInt="SSP">
        <dialogConfig type="CK" caption="Enable Interrupt on Startup"/>
        <userAction name="enable">
          <claimResource type="register" registerField="SSPIE" value="1"/>
        </userAction>
        <userAction name="disable">
          <claimResource type="register" registerField="SSPIE" value="0"/>
        </userAction>
      </userControl>

      <userControl name="interruptPriority" priorityForInt="SSP">
        <dialogConfig type="CB" caption="Interrupt Priority">
          <selection name="priorityLevelToHigh" value="High"/>
          <selection name="priorityLevelToLow" value="Low"/>
        </dialogConfig>
        <userAction name="priorityLevelToLow">
          <claimResource type="register" registerField="SSPIP" value="0"/>
        </userAction>
        <userAction name="priorityLevelToHigh">
          <claimResource type="register" registerField="SSPIP" value="1"/>
        </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"></selection> 
          <selection name="Slave" value="Slave, slave select disabled"></selection> 
          <selection name="SlaveSlaveSel" value="Slave, slave select enabled"></selection> 
        </dialogConfig>
        <userAction name="SlaveSlaveSel">
          <claimResource type="register" registerField="SSPM3" value="0"></claimResource>
          <claimResource type="register" registerField="SSPM2" value="1"></claimResource>
          <claimResource type="register" registerField="SSPM1" value="0"></claimResource>
          <claimResource type="register" registerField="SSPM0" value="0"></claimResource>
          <claimResource type="pin" pin="SCK%instance%" polarity="Inp"></claimResource>
        </userAction>
        <userAction name="Slave">
          <claimResource type="register" registerField="SSPM3" value="0"></claimResource>
          <claimResource type="register" registerField="SSPM2" value="1"></claimResource>
          <claimResource type="register" registerField="SSPM1" value="0"></claimResource>
          <claimResource type="register" registerField="SSPM0" value="1"></claimResource>
          <claimResource type="pin" pin="SCK%instance%" polarity="Inp"></claimResource>
          <claimResource type="pin" pin="SS%instance%-L" polarity="Inp"></claimResource>
        </userAction>
        <userAction name="Master">
          <claimResource type="register" registerField="SSPM3" value="0"></claimResource>
          <claimResource type="register" registerField="SSPM2" 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>
          <selection name="SlaveMode" value="None"></selection>
        </dialogConfig>
        <userAction name="SlaveMode"></userAction>
        <userAction name="setTo1">
          <claimResource type="register" registerField="SSPM1" value="1"></claimResource>
          <claimResource type="register" registerField="SSPM0" value="1"></claimResource>
        </userAction>
        <userAction name="setTo4">
          <claimResource type="register" registerField="SSPM1" value="0"></claimResource>
          <claimResource type="register" registerField="SSPM0" value="0"></claimResource>
        </userAction>
        <userAction name="setTo16">
          <claimResource type="register" registerField="SSPM1" value="0"></claimResource>
          <claimResource type="register" registerField="SSPM0" value="1"></claimResource>
        </userAction>
        <userAction name="setTo64">
          <claimResource type="register" registerField="SSPM1" value="1"></claimResource>
          <claimResource type="register" registerField="SSPM0" value="0"></claimResource>
        </userAction>
      </userControl>

      <userControl name="prescaleB">
        <dialogConfig type="CB" caption="Secondary Prescaler">
          <selection name="setTo1" value="1:1"></selection>
        </dialogConfig>
        <userAction name="setTo1"></userAction>
      </userControl>

    </userControlSubGroup>
  </userControlGroup>

</featureDefinitions>
