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

<featureDefinitions name="Oscillator" iconName="oscillator" 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="OSC1" polarity="Inp"></claimResource>
        </userAction>
      </userControl>
    </userControlSubGroup>
  </userControlGroup>

  <userControlGroup name="primaryOscSettings" caption="Primary Oscillator Settings">
    <userControlSubGroup name="none" caption="none">
      <userControl name="clockFreq">
        <dialogConfig type="TB" caption="System Clock Frequency"></dialogConfig>
        <userAction>
          <!-- this is needed for baud calc and should just be stored -->
        </userAction>
      </userControl>

      <userControl type="readOnly" name="fcy">
        <dialogConfig type="general" caption="fcy"></dialogConfig>
        <userAction>
        </userAction>
      </userControl>

      <userControl name="showAdvanced">
        <dialogConfig type="CK" caption="View Advanced Oscillator Settings"></dialogConfig>
        <userAction name="enable">
          <!-- what to do here????? -->
        </userAction>
        <userAction name="disable">
        </userAction>
      </userControl>
    </userControlSubGroup>
  </userControlGroup>

  <userControlGroup name="advancedOscSettings" caption="Advanced Oscillator Settings">
    <userControlSubGroup name="none" caption="none">
      <userControl name="clockSource">
        <dialogConfig type="CB" caption="Clock Source">
          <selection name="primOsc" value="Primary Oscillator"></selection> 
          <selection name="internalFRC" value="Internal FRC (8MHz)"></selection> 
          <selection name="internalLPRC" value="Internal LPRC (512kHz)"></selection> 
          <selection name="secOsc" value="Secondary Oscillator (32kHz)"></selection> 
        </dialogConfig>
        <userAction name="secOsc">
          <claimResource type="register" registerField="NOSC" value="00"></claimResource>
          <claimResource type="register" registerField="FOS" value="00"></claimResource>
        </userAction>
        <userAction name="internalFRC">
          <claimResource type="register" registerField="NOSC" value="10"></claimResource>
          <claimResource type="register" registerField="FOS" value="01"></claimResource>
        </userAction>
        <userAction name="internalLPRC">
          <claimResource type="register" registerField="NOSC" value="01"></claimResource>
          <claimResource type="register" registerField="FOS" value="10"></claimResource>
        </userAction>
        <userAction name="primOsc">
          <claimResource type="register" registerField="NOSC" value="11"></claimResource>
          <claimResource type="register" registerField="FOS" value="11"></claimResource>
        </userAction>
      </userControl>

      <userControl name="primaryMode">
        <dialogConfig type="CB" caption="Primary Mode Select (OSC2 Pin)">
          <selection name="setToEC" value="Clock x1 (CLKO)"></selection>
          <selection name="setToECIO" value="Clock x1 (I/O)"></selection>
          <selection name="setToECPLL4" value="Clock x4 (I/O)"></selection>
          <selection name="setToECPLL8" value="Clock x8 (I/O)"></selection>
          <selection name="setToECPLL16" value="Clock x16 (I/O)"></selection>
          <selection name="setToERC" value="RC (CLKO)"></selection>
          <selection name="setToERCIO" value="RC (I/O)"></selection>
          <selection name="setToXT" value="XTAL x1 (OSC2)"></selection>
          <selection name="setToXTPLL4" value="XTAL x4 (OSC2)"></selection>
          <selection name="setToXTPLL8" value="XTAL x8 (OSC2)"></selection>
          <selection name="setToXTPLL16" value="XTAL x16 (OSC2)"></selection>
          <selection name="setToXTL" value="XTAL L (OSC2)"></selection>
          <selection name="setToHS" value="XTAL HS (OSC2)"></selection>
        </dialogConfig>
        <userAction name="setToHSC">
          <claimResource type="register" registerField="FPR" value="0010"></claimResource>
          <claimResource type="pin" pin="OSC2" polarity="Inp"></claimResource>
        </userAction>

        <userAction name="setToXTL">
          <claimResource type="register" registerField="FPR" value="0000"></claimResource>
          <claimResource type="pin" pin="OSC2" polarity="Inp"></claimResource>
        </userAction>

        <userAction name="setToXTPLL16">
          <claimResource type="register" registerField="FPR" value="0111"></claimResource>
          <claimResource type="pin" pin="OSC2" polarity="Inp"></claimResource>
        </userAction>

        <userAction name="setToXTPLL8">
          <claimResource type="register" registerField="FPR" value="0110"></claimResource>
          <claimResource type="pin" pin="OSC2" polarity="Inp"></claimResource>
        </userAction>

        <userAction name="setToXTPLL4">
          <claimResource type="register" registerField="FPR" value="0101"></claimResource>
          <claimResource type="pin" pin="OSC2" polarity="Inp"></claimResource>
        </userAction>

        <userAction name="setToXT">
          <claimResource type="register" registerField="FPR" value="0100"></claimResource>
          <claimResource type="pin" pin="OSC2" polarity="Inp"></claimResource>
        </userAction>

        <userAction name="setToERCIO">
          <claimResource type="register" registerField="FPR" value="1000"></claimResource>
        </userAction>

        <userAction name="setToERC">
          <claimResource type="register" registerField="FPR" value="1001"></claimResource>
          <claimResource type="pin" pin="CLKO" polarity="Out"></claimResource>
        </userAction>

        <userAction name="setToECPLL16">
          <claimResource type="register" registerField="FPR" value="1111"></claimResource>
        </userAction>

        <userAction name="setToECPLL8">
          <claimResource type="register" registerField="FPR" value="1110"></claimResource>
        </userAction>

        <userAction name="setToECPLL4">
          <claimResource type="register" registerField="FPR" value="1101"></claimResource>
        </userAction>

        <userAction name="setToECIO">
          <claimResource type="register" registerField="FPR" value="1100"></claimResource>
        </userAction>

        <userAction name="setToEC">
          <claimResource type="register" registerField="FPR" value="1011"></claimResource>
          <claimResource type="pin" pin="CLKO" polarity="Out"></claimResource>
        </userAction>
      </userControl>

      <userControl name="useClockDivider">
        <dialogConfig type="CB" caption="Clock Divide:">
          <selection name="setToDiv1" value="divide by 1"></selection>
          <selection name="setToDiv4" value="divide by 4"></selection>
          <selection name="setToDiv16" value="divide by 16"></selection>
          <selection name="setToDiv64" value="divide by 64"></selection>
        </dialogConfig>
        <userAction name="setToDiv64">
          <claimResource type="register" registerField="POST" value="11"></claimResource>
        </userAction>
        <userAction name="setToDiv16">
          <claimResource type="register" registerField="POST" value="10"></claimResource>
        </userAction>
        <userAction name="setToDiv4">
          <claimResource type="register" registerField="POST" value="01"></claimResource>
        </userAction>
        <userAction name="setToDiv1">
          <claimResource type="register" registerField="POST" value="00"></claimResource>
        </userAction>
      </userControl>

      <userControl name="aux32Khz">
        <dialogConfig type="CK" caption="Aux. 32KHz Oscillator enabled"></dialogConfig>
        <userAction name="enable">
          <claimResource type="register" registerField="LPOSCEN" value="1"></claimResource>
          <claimResource type="pin" pin="SOSCO" polarity="Out"></claimResource>
          <claimResource type="pin" pin="SOSCI" polarity="Out"></claimResource>
        </userAction>
        <userAction name="disable">
          <claimResource type="register" registerField="LPOSCEN" value="0"></claimResource>
        </userAction>
      </userControl>

      <userControl name="clockSwitching">
        <dialogConfig type="CK" caption="Clock Switching"></dialogConfig>
        <userAction name="enable">
          <claimResource type="register" registerField="FCKSMEN15" value="0"></claimResource>
        </userAction>
        <userAction name="disable">
          <claimResource type="register" registerField="FCKSMEN15" value="1"></claimResource>
        </userAction>
      </userControl>

      <userControl name="enableFailsafe">
        <dialogConfig type="CK" caption="Enable Fail Safe Clock Monitor"></dialogConfig>
        <userAction name="enable">
          <claimResource type="register" registerField="FCKSMEN14" value="0"></claimResource>
        </userAction>
        <userAction name="disable">
          <claimResource type="register" registerField="FCKSMEN14" value="1"></claimResource>
        </userAction>
      </userControl>
    </userControlSubGroup>
  </userControlGroup>

</featureDefinitions>
