<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE featureDefinitions SYSTEM "../featureDefinitions.dtd" >
<featureDefinitions name="I2C" iconName="I2C" 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="SCL%instance%" polarity="BiDi"></claimResource>
					<claimResource type="pin" pin="SDA%instance%" polarity="BiDi"></claimResource>					
				</userAction>
			</userControl>
		</userControlSubGroup>
	</userControlGroup>
	<userControlGroup name="operationalSettings" caption="Operational 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="I2CEN" value="1"></claimResource>
					<claimResource type="register" instance="%instance%" registerField="RCEN" value="1"></claimResource>
				</userAction>
				<userAction name="disable">
					<claimResource type="register" instance="%instance%" registerField="I2CEN" value="0"></claimResource>
					<claimResource type="register" instance="%instance%" registerField="RCEN" 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="I2CSIDL" value="1"></claimResource>
				</userAction>
				<userAction name="continueOnIdle">
					<claimResource type="register" instance="%instance%" registerField="I2CSIDL" value="0"></claimResource>
				</userAction>
			</userControl>			
			<userControl name="enableSlew">
				<dialogConfig type="CK" caption="Enable Slew Rate Control"></dialogConfig>
				<userAction name="enable">	
					<claimResource type="register" instance="%instance%" registerField="DISSLW" value="0"></claimResource>
				</userAction>
				<userAction name="disable">
					<claimResource type="register" instance="%instance%" registerField="DISSLW" value="1"></claimResource>
				</userAction>
			</userControl>
			<userControl name="enableSMBus">
				<dialogConfig type="CK" caption="Enable SMBus Thresolds"></dialogConfig>
				<userAction name="disable">
					<claimResource type="register" instance="%instance%" registerField="SMEN" value="0"></claimResource>
				</userAction>
				<userAction name="enable">
					<claimResource type="register" instance="%instance%" registerField="SMEN" value="1"></claimResource>
				</userAction>
			</userControl>						
		</userControlSubGroup>
	</userControlGroup>
	<userControlGroup name="slaveSettings" caption="none">
		<userControlSubGroup name="slaveSettings" caption="Slave Settings">
			<userControl name="addrLen">
				<dialogConfig type="CB" caption="Address Length (bits)">
					<selection name="addrLen7" value="7"></selection>
					<selection name="addrLen10" value="10"></selection>
				</dialogConfig>
				<userAction name="addrLen10">
					<claimResource type="register" instance="%instance%" registerField="A10M" value="1"></claimResource>
				</userAction>
				<userAction name="addrLen7">
					<claimResource type="register" instance="%instance%" registerField="A10M" value="0"></claimResource>
				</userAction>
			</userControl>	
			
			<userControl name="nodeAddr">
				<dialogConfig type="TB" caption="Node Address"></dialogConfig>
				<userAction>
					<claimResource type="register" instance="%instance%" registerField="I2CADD" value="0" variable="1"></claimResource>
				</userAction>
			</userControl>


			<userControl name="addrMask">
				<dialogConfig type="TB" caption="Address Mask"></dialogConfig>
				<userAction>
					<claimResource type="register" instance="%instance%" registerField="I2CMSK" value="0" variable="1"></claimResource>
				</userAction>
			</userControl>
			
			<!-- use parameter to pass constants information 
			      The parameter type controls need to be hidden 
			      by code
			      
			      Mostly used for validating the data & calculations
			
			
			<userControl type="readOnly" name="maxaddrLen10">
				<dialogConfig type="parameter" caption="127"></dialogConfig>
				<userAction>		     
				</userAction>
			  </userControl>

			<userControl type="readOnly" name="maxaddrLen7">
				<dialogConfig type="parameter" caption="1023"></dialogConfig>
				<userAction>		     
				</userAction>
			  </userControl>

			<userControl type="readOnly" name="maxaddrmask">
				<dialogConfig type="parameter" caption="1023"></dialogConfig>
				<userAction>		     
				</userAction>
			  </userControl>
			
			-->

			<userControl name="enableSWStretch">
				<dialogConfig type="CK" caption="Enable Sw-controlled clock stretching during reception"></dialogConfig>
				<userAction name="enable">
					<claimResource type="register" instance="%instance%" registerField="STREN" value="1"></claimResource>
				</userAction>
				<userAction name="disable">
					<claimResource type="register" instance="%instance%" registerField="STREN" value="0"></claimResource>
				</userAction>
			</userControl>
			
			<userControl name="enableGCADetect">
				<dialogConfig type="CK" caption="Enable General Call Address Detect"></dialogConfig>
				<userAction name="enable">
					<claimResource type="register" instance="%instance%" registerField="GCEN" value="1"></claimResource>
				</userAction>
				<userAction name="disable">
					<claimResource type="register" instance="%instance%" registerField="GCEN" value="0"></claimResource>
				</userAction>
			</userControl>
			
			<userControl name="enableIPMI">
				<dialogConfig type="CK" caption="Enable Intelligent Peripheral Management Interface (IPMI)"></dialogConfig>
				<userAction name="enable">
					<claimResource type="register" instance="%instance%" registerField="IPMIEN" value="1"></claimResource>
				</userAction>
				<userAction name="disable">
					<claimResource type="register" instance="%instance%" registerField="IPMIEN" value="0"></claimResource>
				</userAction>
			</userControl>

			<userControl name="slaveInterruptEnable" enableForInt="SI2C%instance%">
				<dialogConfig type="CK" caption="Enable Slave Event Interrupt on Startup"></dialogConfig>
				<userAction name="enable">					
					<claimResource type="register" registerField="SI2C%instance%IE" value="1"></claimResource>
				</userAction>
				<userAction name="disable">					
					<claimResource type="register" registerField="SI2C%instance%IE" value="0"></claimResource>
				</userAction>
			</userControl>
			<userControl name="slaveInterruptPriority" priorityForInt="SI2C%instance%">
				<dialogConfig type="CB" range="7" caption="Interrupt Priority">
					<selection name="PriorityLevelTo%index%" value="%index%"></selection>
				</dialogConfig>
				<userAction>					
					<claimResource type="register" registerField="SI2C%instance%IP" method="PriorityLevel3Bit"></claimResource>
				</userAction>
			</userControl>			
		</userControlSubGroup>
	</userControlGroup>
	


	<userControlGroup name="masterSettings" caption="none">
		<userControlSubGroup name="masterSettings" caption="Master Settings">
			<userControl name="baudRate">
				<dialogConfig type="TB" caption="Baud Rate"></dialogConfig>
				<userAction>				
				</userAction>
			</userControl>
			<userControl type="readOnly" name="I2CBRGValue">
				<dialogConfig type="TB" caption="I2CBRG Value"></dialogConfig>
				<userAction>
				<claimResource type="register" instance="%instance%" registerField="I2CBRG" value="2" variable="1"></claimResource>
				</userAction>
			  </userControl>			
			
			<userControl type="readOnly" name="baudRateError">
				<dialogConfig type="general" caption="Baud Rate Error (%)"></dialogConfig>
				<userAction></userAction>
			</userControl>
			
			<!-- use parameter to pass constants information 
			      The parameter type controls need to be hidden 
			      by code
			      
			      Mostly used for validating the data & calculations
			-->
			
			<userControl type="readOnly" name="defaultBaudRate">
				<dialogConfig type="parameter" caption="100"></dialogConfig>
				<userAction>		     
				</userAction>
			  </userControl>
			 
			<userControl type="readOnly" name="validMinBRG">
				<dialogConfig type="parameter" caption="2"></dialogConfig>
				<userAction>		     
				</userAction>
			  </userControl>	 

			<userControl type="readOnly" name="validMaxBaudRate">
				<dialogConfig type="parameter" caption="1000000"></dialogConfig>
				<userAction>		     
				</userAction>
			  </userControl>	 
			  <!-- 511 = 0x1FF-->
			  <userControl type="readOnly" name="validMaxBRGValue">
				<dialogConfig type="parameter" caption="511"></dialogConfig>
				<userAction>		     
				</userAction>
			  </userControl>	 
	  
			<userControl name="masterInterruptEnable" enableForInt="MI2C%instance%">
				<dialogConfig type="CK" caption="Enable Master Event Interrupt on Startup"></dialogConfig>
				<userAction name="enable">
					<claimResource type="register" registerField="MI2C%instance%IE" value="1"></claimResource>					
				</userAction>
				<userAction name="disable">
					<claimResource type="register" registerField="MI2C%instance%IE" value="0"></claimResource>					
				</userAction>
			</userControl>
			<userControl name="masterInterruptPriority" priorityForInt="MI2C%instance%">
				<dialogConfig type="CB" range="7" caption="Interrupt Priority">
					<selection name="PriorityLevelTo%index%" value="%index%"></selection>
				</dialogConfig>
				<userAction>
					<claimResource type="register" registerField="MI2C%instance%IP" method="PriorityLevel3Bit"></claimResource>					
				</userAction>
			</userControl>
	  
		</userControlSubGroup>
	</userControlGroup>
</featureDefinitions>
