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

<featureDefinitions name="Interrupts30" iconName="interrupts-30" helpIndex="">

  <userControlGroup name="none" caption="none">
    <userControlSubGroup name="none" caption="none">
      <userControl name="applyButton">
        <dialogConfig type="applyButton" caption="none"/>
        <userAction name="apply"/>
      </userControl>
    </userControlSubGroup>
  </userControlGroup>

  <userControlGroup name="General" caption="General Interrupt Properties">
    <userControlSubGroup name="none" caption="none">

      <userControl name="VectorTable">
        <dialogConfig type="CB" caption="Select initial interrupt vector table">
          <selection name="UseMainIVT" value="Main"/>
          <selection name="UseAlternateIVT" value="Alternate"/>
        </dialogConfig>
        <userAction name="UseAlternateIVT">
          <claimResource type="register" registerField="ALTIVT" value="1"/>
        </userAction>
        <userAction name="UseMainIVT">
          <claimResource type="register" registerField="ALTIVT" value="0"/>
        </userAction>
      </userControl>

      <userControl name="CPUPriority">
        <dialogConfig type="CB" range="7" caption="Inital CPU priority">
          <selection name="CPUPriority%index%" value="%index%"/>
        </dialogConfig>
        <userAction>
          <claimResource type="register" registerField="IPL210" value="%index%"/>
        </userAction>
      </userControl>

      <userControl name="DisableInterruptNesting">
        <dialogConfig type="CK" caption="Disable interrupt nesting"/>
        <userAction name="enable">
          <claimResource type="register" registerField="NSTDIS" value="1"/>
        </userAction>
        <userAction name="disable">
          <claimResource type="register" registerField="NSTDIS" value="0"/>
        </userAction>
      </userControl>

    </userControlSubGroup>
  </userControlGroup>

  <userControlGroup name="Garbage" caption="This doesn't belong here!">
    <userControlSubGroup name="none" caption="none">

      <userControl name="MCLREnable">
        <dialogConfig type="CK" caption="Enable MCLR pin"/>
        <userAction name="enable">
          <claimResource type="register" registerField="MCLREN" value="1"/>
        </userAction>
        <userAction name="disable">
          <claimResource type="register" registerField="MCLREN" value="0"/>
        </userAction>
      </userControl>

    </userControlSubGroup>
  </userControlGroup>

  <userControlGroup name="ExternalInterrupts" caption="External Interrupts">
    <userControlSubGroup name="none" caption="none">

      <userControl name="ExtIntEnable%indexControl%" enableForInt="INT%indexControl%" range="4">
        <dialogConfig type="CK" caption="Enable external interrupt %indexControl%"/>
        <userAction name="enable">
          <claimResource type="pin" pin="INT%indexControl%" polarity="Inp"/>
          <claimResource type="register" registerField="INT%indexControl%IE" value="1"/>
        </userAction>
        <userAction name="disable">
          <claimResource type="register" registerField="INT%indexControl%IE" value="0"/>
        </userAction>
      </userControl>

      <userControl name="ExtIntEdge%indexControl%" edgeForInt="INT%indexControl%" range="4">
        <dialogConfig type="CB" caption="Select triggering edge for external interrupt %indexControl%">
          <selection name="TriggerOnRisingEdge" value="Rising"/>
          <selection name="TriggerOnFallingEdge" value="Falling"/>
        </dialogConfig>
        <userAction>
          <claimResource type="register" registerField="INT%indexControl%EP" value="1"/>
        </userAction>
        <userAction>
          <claimResource type="register" registerField="INT%indexControl%EP" value="0"/>
        </userAction>
      </userControl>

      <userControl name="ExtIntPriority%indexControl%" priorityForInt="INT%indexControl%" range="4">
        <dialogConfig type="CB" range="7" caption="Select priority for external interrupt %indexControl%">
          <selection name="SetExtInt%indexControl%ToPriority%index%" value="%index%"/>
        </dialogConfig>
        <userAction>
          <claimResource type="register" registerField="INT%indexControl%IP" value="%index%"/>
        </userAction>
      </userControl>

    </userControlSubGroup>
  </userControlGroup>

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

      <userControl name="EnableAccAOverflowTrap">
        <dialogConfig type="CK" caption="Enable accumulator A overflow trap"/>
        <userAction name="enable">
          <claimResource type="register" registerField="OVATE" value="1"/>
        </userAction>
        <userAction name="disable">
          <claimResource type="register" registerField="OVATE" value="0"/>
        </userAction>
      </userControl>

      <userControl name="EnableAccBOverflowTrap">
        <dialogConfig type="CK" caption="Enable accumulator B overflow trap"/>
        <userAction name="enable">
          <claimResource type="register" registerField="OVBTE" value="1"/>
        </userAction>
        <userAction name="disable">
          <claimResource type="register" registerField="OVBTE" value="0"/>
        </userAction>
      </userControl>

      <userControl name="EnableCatastrophicOverflowTrap">
        <dialogConfig type="CK" caption="Enable catastrophic overflow trap"/>
        <userAction name="enable">
          <claimResource type="register" registerField="COVTE" value="1"/>
        </userAction>
        <userAction name="disable">
          <claimResource type="register" registerField="COVTE" value="0"/>
        </userAction>
      </userControl>

    </userControlSubGroup>
  </userControlGroup>

</featureDefinitions>
