<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!DOCTYPE featureDefinitions SYSTEM "../featureDefinitions.dtd">
<featureDefinitions name="16bitTimer" iconName="16bitTimer" helpIndex="">

  <userControlGroup name="none" caption="none">
    <userControlSubGroup name="none" caption="none">

      <userControl name="applyButton">
        <dialogConfig type="applyButton" caption="none"/>
        <userAction name="apply">
          <!-- Why must we claim this fake register? -->
          <claimResource type="register" registerField="OWN_TMR" value="0100"/>

          <!-- Why don't we want RD16 mode? -->
          <claimResource type="register" registerField="RD16" value="0"/>

          <!-- Clock from external source. -->
          <claimResource type="register" registerField="TMR1CS" value="1"/>

          <!-- Don't synchronize external clock input. -->
          <claimResource type="register" registerField="T1SYNC-L" value="1"/>

          <!-- Enable Timer1 oscillator. -->
          <claimResource type="register" registerField="T1OSCEN" value="1"/>

          <!-- Turn Timer1 on. -->
          <claimResource type="register" registerField="TMR1ON" value="1"/>

          <claimResource type="pin" pin="T1OSO" polarity="Shared"/>
          <claimResource type="pin" pin="T1OSI" polarity="Shared"/>

          <!-- Why do we need to claim this register?  Is this merely a formality? -->
          <claimResource type="register" registerField="TMR1L" value="0"/>
        </userAction>
      </userControl>

    </userControlSubGroup>
  </userControlGroup>

  <userControlGroup name="none" caption="none">
    <userControlSubGroup name="none" caption="none">

      <userControl name="prescale">
        <dialogConfig type="CB" caption="Time Clock Prescale">
          <selection name="setTo0" value="1:1"/>
          <selection name="setTo1" value="1:2"/>
          <selection name="setTo2" value="1:4"/>
          <selection name="setTo3" value="1:8"/>
        </dialogConfig>
        <userAction name="setTo3">
          <claimResource type="register" registerField="T1CKPS" value="11"/>
        </userAction>
        <userAction name="setTo2">
          <claimResource type="register" registerField="T1CKPS" value="10"/>
        </userAction>
        <userAction name="setTo1">
          <claimResource type="register" registerField="T1CKPS" value="01"/>
        </userAction>
        <userAction name="setTo0">
          <claimResource type="register" registerField="T1CKPS" value="00"/>
        </userAction>
      </userControl>

<!-- timerPeriod is currently hardcoded and should not be present -->

      <userControl type="readOnly" name="timerFrequency">
        <dialogConfig type="general" caption="Baud Rate Error (%)"/>
        <userAction>
        </userAction>
      </userControl>

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

      <userControl name="interruptPriority" priorityForInt="T1">
        <dialogConfig type="CB" caption="Interrupt Priority">
          <selection name="priorityLevelToHigh" value="High"/>
          <selection name="priorityLevelToLow" value="Low"/>
        </dialogConfig>
        <userAction>
          <claimResource type="register" registerField="T1IP" value="0"/>
        </userAction>
        <userAction>
          <claimResource type="register" registerField="T1IP" value="1"/>
        </userAction>
      </userControl>

    </userControlSubGroup>
  </userControlGroup>
</featureDefinitions>
