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

<featureDefinitions name="UART" iconName="UART" helpIndex="">

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

<userControl name="applyButton">
<dialogConfig type="applyButton" caption="none"></dialogConfig>
<userAction name="apply">
</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" instance="%instance%" registerField="UARTEN" value="1"></claimResource>
</userAction>
<userAction name="disable">
	<claimResource type="register" instance="%instance%" registerField="UARTEN" value="0"></claimResource>
</userAction>
</userControl>

<userControl name="baudRate">
<dialogConfig type="TB" caption="Baud Rate"></dialogConfig>
<userAction>
</userAction>
</userControl>

<userControl name="baudRateUnits">
<dialogConfig type="CB" caption="none">
	<selection name="setToBps" value="bps"></selection>
	<selection name="setToKpbs" value="kbps"></selection>
</dialogConfig>
<userAction name="setToBps">
</userAction>
<userAction name="setToKbps">
</userAction>
</userControl>

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

<userControl name="dataBits">
<dialogConfig type="CB" caption="Data Bits">
	<selection name="dataBits8" value="8"></selection>
	<selection name="dataBits9" value="9"></selection>
</dialogConfig>
<userAction name="dataBits9">
	<claimResource type="register" instance="%instance%" registerField="PDSEL1" value="1"></claimResource>
	<claimResource type="register" instance="%instance%" registerField="PDSEL0" value="1"></claimResource>
</userAction>
<userAction name="dataBits8">
</userAction>
</userControl>

<userControl name="stopBits">
<dialogConfig type="CB" caption="Stop Bits">
	<selection name="stopBits1" value="1"></selection>
	<selection name="stopBits2" value="2"></selection>
</dialogConfig>
<userAction name="stopBits2">
	<claimResource type="register" instance="%instance%" registerField="STSEL" value="1"></claimResource>
</userAction>
<userAction name="stopBits1">
	<claimResource type="register" instance="%instance%" registerField="STSEL" value="0"></claimResource>
</userAction>
</userControl>

<userControl name="parity">
<dialogConfig type="CB" caption="Parity">
	<selection name="disable" value="No parity"></selection>
	<selection name="enableEven" value="Even Parity"></selection>
	<selection name="enableOdd" value="Odd Parity"></selection>
</dialogConfig>
<userAction name="enableOdd">
	<claimResource type="register" instance="%instance%" registerField="PDSEL1" value="1"></claimResource>
	<claimResource type="register" instance="%instance%" registerField="PDSEL0" value="0"></claimResource>
</userAction>
<userAction name="enableEven">
	<claimResource type="register" instance="%instance%" registerField="PDSEL1" value="0"></claimResource>
	<claimResource type="register" instance="%instance%" registerField="PDSEL0" value="1"></claimResource>
</userAction>
<userAction name="disable">
</userAction>
</userControl>

<userControl name="operateDuringSleep">
<dialogConfig type="CB" caption="CPU Sleep Operation">
	<selection name="noWakeOnSleep" value="No wake-up"></selection> 
	<selection name="wakeOnSleep" value="Wake-up on Start Bit"></selection> 
</dialogConfig>
<userAction name="wakeOnSleep">
	<claimResource type="register" instance="%instance%" registerField="WAKE" value="1"></claimResource>
</userAction>
<userAction name="noWakeOnSleep">
	<claimResource type="register" instance="%instance%" registerField="WAKE" value="0"></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" instance="%instance%" registerField="USIDL" value="1"></claimResource>
</userAction>
<userAction name="continueOnIdle">
	<claimResource type="register" instance="%instance%" registerField="USIDL" value="0"></claimResource>
</userAction>
</userControl>
 
<userControl name="loopback">
<dialogConfig type="CK" caption="Enable loopback between Tx and Rx"></dialogConfig>
<userAction name="enable">
	<claimResource type="register" instance="%instance%" registerField="LPBACK" value="1"></claimResource>
</userAction>
<userAction name="disable">
	<claimResource type="register" instance="%instance%" registerField="LPBACK" value="0"></claimResource>
	<claimResource type="pin" pin="U%instance%RX" polarity="Inp"></claimResource>
	<claimResource type="pin" pin="U%instance%TX" polarity="Out"></claimResource>
</userAction>
</userControl>

<userControl name="autoBaud">
<dialogConfig type="CK" caption="Enable Auto-baud Detection"></dialogConfig>
<userAction name="enable">
	<!-- using IC channel ??? for baud input and meas - configure IC how and show dependency -->
	<claimResource type="register" instance="%instance%" registerField="ABAUD" value="1"></claimResource>
</userAction>
<userAction name="disable">
	<claimResource type="register" instance="%instance%" registerField="ABAUD" value="0"></claimResource>
</userAction>
</userControl>

</userControlSubGroup>
</userControlGroup>

<userControlGroup name="operationalSettings" caption="Operational Settings">

<userControlSubGroup name="receiverSettings" caption="Receiver">

<userControl name="addressDetectMode">
<dialogConfig type="CK" caption="Enable Address Detect Mode"></dialogConfig>
<userAction name="enable">
	<claimResource type="register" instance="%instance%" registerField="ADDEN" value="1"></claimResource>
</userAction>
<userAction name="disable">
	<claimResource type="register" instance="%instance%" registerField="ADDEN" value="0"></claimResource>
</userAction>
</userControl>

<!-- Interrupt module should also use these interrupt constraint group (enable/priority) for setting UART interrupts -->
<userControl name="receiverInterruptEnable" enableForInt="U%instance%RX">
<dialogConfig type="CK" caption="Enable Interrupt on Startup"></dialogConfig>
<userAction name="enable">
	<claimResource type="register" registerField="U%instance%RXIE" value="1"></claimResource>
</userAction>
<userAction name="disable">
	<claimResource type="register" registerField="U%instance%RXIE" value="0"></claimResource>
	<claimResource type="register" instance="%instance%" registerField="URXISEL" value="0"></claimResource>
</userAction>
</userControl>

<userControl name="receiverInterruptPriority" priorityForInt="U%instance%RX">
<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="U%instance%RXIP" method="rxPriorityLevel3Bit"></claimResource>
</userAction>
</userControl>

<userControl name="receiverInterruptConfig">
<dialogConfig type="CB" caption="Generate In on buffersize">
	<selection name="onAnyCharInBuffer" value="At least 1 char"></selection> 
	<selection name="on3CharsInBuffer" value="3 chars"></selection> 
	<selection name="on4CharsInBuffer" value="4 chars"></selection> 
</dialogConfig>
<userAction name="on3CharsInBuffer">
	<claimResource type="register" instance="%instance%" registerField="URXISEL" value="01"></claimResource>
</userAction>
<userAction name="on4CharsInBuffer">
	<claimResource type="register" instance="%instance%" registerField="URXISEL" value="10"></claimResource>
</userAction>
<userAction name="onAnyCharInBuffer">
	<claimResource type="register" instance="%instance%" registerField="URXISEL" value="00"></claimResource>
</userAction>
</userControl>

</userControlSubGroup>

<userControlSubGroup name="transmitterSettings" caption="Transmitter">

<userControl name="transmitEnable" enableForInt="U%instance%TX">
<dialogConfig type="CK" caption="Enable Transmit"></dialogConfig>
<userAction name="enable">
	<claimResource type="register" instance="%instance%" registerField="UTXEN" value="1"></claimResource>
</userAction>
<userAction name="disable">
	<claimResource type="register" instance="%instance%" registerField="UTXEN" value="0"></claimResource>
</userAction>
</userControl>

<!-- Interrupt module should also use these interrupt constraint group (enable/priority) for setting UART interrupts -->
<userControl name="transmitInterruptEnable" priorityForInt="U%instance%TX">
<dialogConfig type="CK" caption="Enable Interrupt on Startup"></dialogConfig>
<userAction name="enable">
	<claimResource type="register" registerField="U%instance%TXIE" value="1"></claimResource>
</userAction>
<userAction name="disable">
	<claimResource type="register" registerField="U%instance%TXIE" value="0"></claimResource>
</userAction>
</userControl>

<userControl name="transmitInterruptPriority">
<dialogConfig type="CB" range="7" caption="Interrupt Priority">
	<selection name="txPriorityLevelTo%index%" value="%index%"></selection>
</dialogConfig>
<userAction>
	<claimResource type="register" registerField="U%instance%TXIP" method="txPriorityLevel3Bit"></claimResource>
</userAction>
</userControl>

<userControl name="transmitInterruptConfig">
<dialogConfig type="CB" caption="Generate Int on Register">
	<selection name="on1EmptyRegister" value="1 Empty"></selection> 
	<selection name="onAllEmptyRegisters" value="All Empty"></selection> 
</dialogConfig>
<userAction name="onAllEmptyRegister">
	<claimResource type="register" instance="%instance%" registerField="UTXISEL" value="1"></claimResource>
</userAction>
<userAction name="on1EmptyRegister">
	<claimResource type="register" instance="%instance%" registerField="UTXISEL" value="0"></claimResource>
</userAction>
</userControl>

</userControlSubGroup>

</userControlGroup>

</featureDefinitions>
