<?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">
					<claimResource type="register" instance="%instance%" registerField="PDSEL1" value="0"></claimResource>
					<claimResource type="register" instance="%instance%" registerField="PDSEL0" value="0"></claimResource>
				</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>
			<userControl name="highBaudEn">
				<dialogConfig type="CK" caption="Enable High Baud Rate"></dialogConfig>
				<userAction name="enable">
					<claimResource type="register" instance="%instance%" registerField="BRGH" value="1"></claimResource>
				</userAction>
				<userAction name="disable">
					<claimResource type="register" instance="%instance%" registerField="BRGH" value="0"></claimResource>
				</userAction>
			</userControl>
			<userControl name="BRGCount">
				<dialogConfig type="TB" caption="Baud Rate Generator Count"></dialogConfig>
				<userAction>
					<!-- The 'variable' attribute is added newly to accomodate the new requirement of variable value supplied by -->
					<!-- user in configuration dialog. Used as true/false(1/0) -->
					<claimResource type="register" registerField="U%instance%BRG" value="0" variable="1"></claimResource>
				</userAction>
			</userControl>
			<userControl name="RTSPinMode">
				<dialogConfig type="CB" caption="RTS PIN Mode Selecion">
					<selection name="SimplexMode" value="Simplex Mode"></selection>
					<selection name="FlowControlMode" value="Flow Control Mode"></selection>
				</dialogConfig>
				<userAction name="SimplexMode">
					<claimResource type="register" instance="%instance%" registerField="RTSMD" value="1"></claimResource>
				</userAction>
				<userAction name="FlowControlMode">
					<claimResource type="register" instance="%instance%" registerField="RTSMD" value="0"></claimResource>
				</userAction>
			</userControl>
			<userControl name="UARTPinEnableMode">
				<dialogConfig type="CB" caption="UART Pin Enable Mode Selection">
					<selection name="UARTPinEnableMode4" value="UxTX, UxRX and BCLKx enabled; UxCTS controlled by PORT latches"></selection>
					<selection name="UARTPinEnableMode3" value="UxTX, UxRX, UxCTS and UxRTS "></selection>
					<selection name="UARTPinEnableMode2" value="UxTX, UxRX and UxRTS enabled; UxCTS controlled by PORT latches"></selection>
					<selection name="UARTPinEnableMode1" value="UxTX and UxRX enabled; UxCTS and UxRTS/BCLKx controlled by PORT latches"></selection>
				</dialogConfig>
				<userAction name="UARTPinEnableMode4">
					<claimResource type="register" instance="%instance%" registerField="UEN" value="11"></claimResource>
				</userAction>
				<userAction name="UARTPinEnableMode3">
					<claimResource type="register" instance="%instance%" registerField="UEN" value="10"></claimResource>
				</userAction>
				<userAction name="UARTPinEnableMode2">
					<claimResource type="register" instance="%instance%" registerField="UEN" value="01"></claimResource>
				</userAction>
				<userAction name="UARTPinEnableMode1">
					<claimResource type="register" instance="%instance%" registerField="UEN" value="00"></claimResource>
				</userAction>
			</userControl>
			<userControl name="receivePolarityInversion">
				<dialogConfig type="CB" caption="Receive Polarity Inversion">
					<selection name="activeHigh" value="Active High"></selection>
					<selection name="activeLow" value="Active Low"></selection>
				</dialogConfig>
				<userAction name="activeHigh">
					<claimResource type="register" instance="%instance%" registerField="RXINV" value="1"></claimResource>
				</userAction>
				<userAction name="activeLow">
					<claimResource type="register" instance="%instance%" registerField="RXINV" value="0"></claimResource>
				</userAction>
			</userControl>
		</userControlSubGroup>
	</userControlGroup>
	<userControlGroup name="IrDASettings" caption="IrDA Settings">
		<userControlSubGroup name="none" caption="none">
			<userControl name="enableIrDA">
				<dialogConfig type="CK" caption="Enable IrDA Encoder and Decoder"></dialogConfig>
				<userAction name="enable">
					<claimResource type="register" instance="%instance%" registerField="IREN" value="1"></claimResource>
				</userAction>
				<userAction name="disable">
					<claimResource type="register" instance="%instance%" registerField="IREN" value="0"></claimResource>
				</userAction>
			</userControl>
			<userControl name="IrDAEncoderTransmitPolarityInversion">
				<dialogConfig type="CB" caption="IrDA Encoder Transmit Polarity Inversion">
					<selection name="activeHigh" value="Active High"></selection>
					<selection name="activeLow" value="Active Low"></selection>
				</dialogConfig>
				<userAction name="activeHigh">
					<claimResource type="register" instance="%instance%" registerField="UTXINV" value="1"></claimResource>
				</userAction>
				<userAction name="activeLow">
					<claimResource type="register" instance="%instance%" registerField="UTXINV" 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>
					<selection name="operationCompleted" value="Operation Completed"></selection>
				</dialogConfig>
				<userAction name="onAllEmptyRegister">
					<claimResource type="register" instance="%instance%" registerField="UTXISEL1" value="1"></claimResource>
					<claimResource type="register" instance="%instance%" registerField="UTXISEL0" value="0"></claimResource>
				</userAction>
				<userAction name="on1EmptyRegister">
					<claimResource type="register" instance="%instance%" registerField="UTXISEL1" value="0"></claimResource>
					<claimResource type="register" instance="%instance%" registerField="UTXISEL0" value="0"></claimResource>
				</userAction>
				<userAction name="operationCompleted">
					<claimResource type="register" instance="%instance%" registerField="UTXISEL1" value="0"></claimResource>
					<claimResource type="register" instance="%instance%" registerField="UTXISEL0" value="1"></claimResource>
				</userAction>
			</userControl>
		</userControlSubGroup>
	</userControlGroup>
</featureDefinitions>
