<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE XMLDOCINFO SYSTEM "..\..\ConfigurableLibrary.dtd" >
<XMLDOCINFO version="1.0">
	<LibraryModule name="CANIntc" GUID="D2E22412-09A1-4942-93E4-1842F5D84E46" type="CAN" rev="1.0" language="C" description="CAN Interrupt-driven">
		<DeviceFamilies>
			<DeviceFamily name="PIC18">
				<Device>PIC18c658</Device>
				<Device>PIC18c858</Device>
				<Device>PIC18f248</Device>
				<Device>PIC18f2480</Device>
				<Device>PIC18f258</Device>
				<Device>PIC18f2580</Device>
				<Device>PIC18f2585</Device>
				<Device>PIC18f2680</Device>
				<Device>PIC18f2682</Device>
				<Device>PIC18f2685</Device>
				<Device>PIC18f448</Device>
				<Device>PIC18f4480</Device>
				<Device>PIC18f458</Device>
				<Device>PIC18f4580</Device>
				<Device>PIC18f4585</Device>
				<Device>PIC18f4680</Device>
				<Device>PIC18f4682</Device>
				<Device>PIC18f4685</Device>
				<Device>PIC18f6585</Device>
				<Device>PIC18f6680</Device>
				<Device>PIC18f8585</Device>
				<Device>PIC18f8680</Device>
			</DeviceFamily>
		</DeviceFamilies>
		<ModuleParameters>
			<ParameterGroup name="operationalSettings" displayName="Operational Settings">
				<ParameterSubgroup name="OperationalSettings" displayName="Operational Settings">
					<Parameter name="FunctionalMode" type="macro" default="NormalMode" displayName="Functional Mode">
						<selections>
							<selection name="LoopbackMode" displayName="Loopback mode" value="LPBACK"></selection>
							<selection name="NormalMode" displayName="Normal mode" value=""></selection>							
						</selections>	
						<OnlineHelps>
							<Help>Sets the firmware normal mode.</Help>
						</OnlineHelps>			
					</Parameter>
					<Parameter name="InterruptPriority" type="macro" default="LowPriority" displayName="Interrupt priority">
						<selections>
							<selection name="LowPriority" displayName="Low Priority" value="CAN_INT_LOW"></selection>
							<selection name="HighPriority" displayName="High Priority" value=""></selection>							
						</selections>	
						<OnlineHelps>
							<Help> CAN Interrupt priority.</Help>
						</OnlineHelps>			
					</Parameter>	
					<Parameter name="EnableCANErrorHandler" type="macro" default="No" displayName="Enable CAN error handler">
						<selections>
							<selection name="Yes" displayName="Yes" value="CAN_ERROR_HANDLER_ENABLE"></selection>
							<selection name="No" displayName="No" value="" ></selection>							
						</selections>	
						<OnlineHelps>
							<Help> CAN Interrupt priority.</Help>
						</OnlineHelps>			
					</Parameter>
					<Parameter name="SAMPLES" type="int" default="OnceAtSP" displayName="Number of samples">
						<selections>
							<selection name="OnceAtSP" displayName="Once at the sample point" value="1"></selection>
							<selection name="ThreeAtSP" displayName="Three times prior to the sample point" value="2"></selection>							
						</selections>	
						<OnlineHelps>
							<Help>Sample of the CAN bus Line bit.</Help>
						</OnlineHelps>			
					</Parameter>			
				</ParameterSubgroup> 
				<ParameterSubgroup name="Identifier" displayName="Identifier(Address)">
					<Parameter name="IdentifierType" type="macro" default="StandardID" displayName="Identifier type (std/ext)">
						<selections>
							<selection name="StandardID" displayName="Standard identifier" value="STD_IDENT"></selection>
							<selection name="ExtendedID" displayName="Extended identifier" value=""></selection>							
						</selections>	
						<OnlineHelps>
							<Help>Standard or extended identifier.</Help>
						</OnlineHelps>			
					</Parameter>
					<Parameter name="MY_IDENT" type="int" default="0" displayName="My Identifier">
						<Validation>
							<Range min="0" max="536870911"></Range>
						</Validation>
						<OnlineHelps>
							<Help>My normal identifier.</Help>
						</OnlineHelps>			
					</Parameter>	
				</ParameterSubgroup>		
				<ParameterSubgroup name="BaudSetting" displayName="Baud Rate Setting">
					<Parameter name="BAUD_RATE_PRESC" type="int" default="4" displayName="Baud Rate Prescaler value">
						<Validation>
							<Range min="1" max="64"></Range>
						</Validation>
						<OnlineHelps>
							<Help>The prescaler is set by Tq = (2x'prescaler value')/Fosc.</Help>
						</OnlineHelps>			
					</Parameter>
					<Parameter name="SJW_TIME" type="int" default="1xTq" displayName="Synchronized Jump Width">
						<selections>
							<selection name="1xTq" displayName="1 x Tq" value="1"></selection>
							<selection name="2xTq" displayName="2 x Tq" value="2"></selection>
							<selection name="3xTq" displayName="3 x Tq" value="3"></selection>
							<selection name="4xTq" displayName="4 x Tq" value="4"></selection>
						</selections>	
						<OnlineHelps>
							<Help>Sample of the CAN bus Line bit.</Help>
						</OnlineHelps>			
					</Parameter>				
					<Parameter name="PROP_TIME" type="int" default="1xTq" displayName="Propagation Time">
						<selections>
							<selection name="1xTq" displayName="1 x Tq" value="1"></selection>
							<selection name="2xTq" displayName="2 x Tq" value="2"></selection>
							<selection name="3xTq" displayName="3 x Tq" value="3"></selection>
							<selection name="4xTq" displayName="4 x Tq" value="4"></selection>
							<selection name="5xTq" displayName="5 x Tq" value="5"></selection>
							<selection name="6xTq" displayName="6 x Tq" value="6"></selection>
							<selection name="7xTq" displayName="7 x Tq" value="7"></selection>
							<selection name="8xTq" displayName="8 x Tq" value="8"></selection>
						</selections>	
						<OnlineHelps>
							<Help>Sets the propagation time partition.</Help>
						</OnlineHelps>						
					</Parameter>	
					<Parameter name="PH_SEG_1" type="int" default="1xTq" displayName="Phase segment 1">
						<selections>
							<selection name="1xTq" displayName="1 x Tq" value="1"></selection>
							<selection name="2xTq" displayName="2 x Tq" value="2"></selection>
							<selection name="3xTq" displayName="3 x Tq" value="3"></selection>
							<selection name="4xTq" displayName="4 x Tq" value="4"></selection>
							<selection name="5xTq" displayName="5 x Tq" value="5"></selection>
							<selection name="6xTq" displayName="6 x Tq" value="6"></selection>
							<selection name="7xTq" displayName="7 x Tq" value="7"></selection>
							<selection name="8xTq" displayName="8 x Tq" value="8"></selection>
						</selections>	
						<OnlineHelps>
							<Help>Sets the Phase Segment 1 partition.</Help>
						</OnlineHelps>														
					</Parameter>						
					<Parameter name="PH_SEG_2" type="int" default="1xTq" displayName="Phase segment 2">
						<selections>
							<selection name="1xTq" displayName="1 x Tq" value="1"></selection>
							<selection name="2xTq" displayName="2 x Tq" value="2"></selection>
							<selection name="3xTq" displayName="3 x Tq" value="3"></selection>
							<selection name="41xTq" displayName="4 x Tq" value="4"></selection>
							<selection name="5xTq" displayName="5 x Tq" value="5"></selection>
							<selection name="6xTq" displayName="6 x Tq" value="6"></selection>
							<selection name="7xTq" displayName="7 x Tq" value="7"></selection>
							<selection name="8xTq" displayName="8 x Tq" value="8"></selection>
						</selections>	
						<OnlineHelps>
							<Help>Sets the Phase Segment 2 partition.</Help>
						</OnlineHelps>			
					</Parameter>
					<Parameter name="CAN_CONFIG_1" type="statement" default="#define CAN_CONFIG_1 BAUD_RATE_PRESC-1|(SJW_TIME-1 &lt;&lt; 6)" displayName="__HIDEDEN__"></Parameter>
					<Parameter name="CONDIION_1_SAMPLES" type="statement" default="#if SAMPLES == 1" displayName="__HIDEDEN__"></Parameter>	
					<Parameter name="CAN_CONFIG_2A" type="statement" default="#define CAN_CONFIG_2 0x80|(PH_SEG_1-1 &lt;&lt; 3)|(PROP_TIME-1)" displayName="__HIDEDEN__"></Parameter>
					<Parameter name="CONDIION_3_SAMPLES" type="statement" default="#elif SAMPLES == 3" displayName="__HIDEDEN__"></Parameter>
					<Parameter name="CAN_CONFIG_2B" type="statement" default="#define CAN_CONFIG_2 0xC0|(PH_SEG_1-1 &lt;&lt; 3)|(PROP_TIME-1)" displayName="__HIDEDEN__"></Parameter>
					<Parameter name="ELSE_1" type="statement" default="#else" displayName="__HIDEDEN__"></Parameter>
					<Parameter name="ERROR_1" type="statement" default="#error &quot;Number of samples is out of range&quot;" displayName="__HIDEDEN__"></Parameter>
					<Parameter name="ENDIF_1" type="statement" default="#endif" displayName="__HIDEDEN__"></Parameter>	
					<Parameter name="CAN_CONFIG_3 " type="statement" default="#define CAN_CONFIG_3 PH_SEG_2-1" displayName="__HIDEDEN__"></Parameter>														
			
				</ParameterSubgroup>
				<ParameterSubgroup name="BufferSize" displayName="Buffer Size">
					<Parameter name="RX_BUFFER" type="int" default="4" displayName="RX buffer">
						<Validation>
							<Range min="2" max="20"></Range>
						</Validation>
						<OnlineHelps>
							<Help>Software receive buffer (each buffer occupies 14 bytes of volatile memory).</Help>
						</OnlineHelps>			
					</Parameter>
					<Parameter name="TX_BUFFER" type="int" default="4" displayName="TX buffer">
						<Validation>
							<Range min="2" max="20"></Range>
						</Validation>
						<OnlineHelps>
							<Help>Software transmit buffer (each buffer occupies 14 bytes of volatile memory).</Help>
						</OnlineHelps>			
					</Parameter>
				</ParameterSubgroup>
	
			</ParameterGroup>
			<ParameterGroup name="ReceiveBuffers" displayName="Receive Buffers">
				<ParameterSubgroup name="Buffer%Index%" displayName="Buffer%Index%" beginningIndex="0" theEndIndex="5">
						<Parameter name="RXMASK%Index%" type="int" default="0" displayName="RXM">
							<Validation>
								<Range min="0" max="536870911"></Range>
							</Validation>
							<OnlineHelps>
								<Help>The mask for receive buffer.</Help>
							</OnlineHelps>
							<CodeComments>
								<Comment>The mask for receive buffer %Index%.</Comment>							
							</CodeComments>
						</Parameter>
						<Parameter name="RXFILT%Index%" type="int" default="0" displayName="RXF">
							<Validation>
								<Range min="0" max="536870911"></Range>
							</Validation>
							<OnlineHelps>
								<Help>The mask for receive buffer.</Help>
							</OnlineHelps>
							<CodeComments>
								<Comment>The first filter for receive buffer %Index%.</Comment>							
							</CodeComments>
						</Parameter>
						<Parameter name="RXF_ES%Index%" type="macro" default="StandardID" displayName="RXF extended/standard">
							<selections>
								<selection name="StandardID" displayName="Standard identifiers only" value="ST_FILTER_%Index%"></selection>
								<selection name="ExtendedID" displayName="Extended identifiers only" value=""></selection>
							</selections>
							<OnlineHelps>
								<Help>The filter can only accept either standard or extended identifiers.</Help>
							</OnlineHelps>							
						</Parameter>
				</ParameterSubgroup>
			</ParameterGroup>
		</ModuleParameters>
		<ClaimedPeripherals>
			<Peripheral name="ECAN">				
				<ClaimedResources>
					<Pins></Pins>
					<Interrupts></Interrupts>
					<Registers></Registers>
				</ClaimedResources>
			</Peripheral>
		</ClaimedPeripherals>
		<PublicMethods>
			<!--  TODO  -->			
		</PublicMethods>
		<LibraryFiles>
			<DefinitionFile>CANDef.h</DefinitionFile>
			<HeaderFiles>
				<File>can.h</File>
			</HeaderFiles>
			<SourceFiles>
				<File>can.c</File>
			</SourceFiles>
			<HelpFiles>
				<File>CANInt.C18.ex.txt</File>
				<File>CANInt.PICC18.ex.txt</File>
				<File>CANIntC.ReadMe.pdf</File>
			</HelpFiles>
		</LibraryFiles>		
	</LibraryModule>
	
</XMLDOCINFO>
