<root>
<document scada='0' projtype='1' schema='103' license='1,82702381,95CJQR' title='NEC IR TX/RX' description='' fcversion='720898' target='PIC.16F.16F18877' >
	<config data='!0,3f8c!10,37fd!20,3f92!30,1fff!40,3fff%0,4%4,0%8,1%b,1%d,1%10,1%11,0%15,1%16,3%19,1%1a,1%1b,0%1c,1%1d,1%20,12%25,0%28,7%2b,7%30,3%3c,1%3d,0%40,1%41,1' clkspd='32000000' simspd='0' usewdt='0' constif='0' Use3V3='0' />
	<plugins >
		<dll_models enabled='1' />
	</plugins>
	<supplement use='0' head='' body='' />
	<debug />
	<traces />
	<ghost >
		<FK2 >
			<data name='FK2D0' port='4294967295' pin='4294967295' />
			<data name='FK2D1' port='4294967295' pin='4294967295' />
			<data name='FK2D2' port='4294967295' pin='4294967295' />
			<data name='FK2D3' port='4294967295' pin='4294967295' />
			<data name='FK2D4' port='4294967295' pin='4294967295' />
			<data name='FK2D5' port='4294967295' pin='4294967295' />
			<data name='FK2D6' port='4294967295' pin='4294967295' />
			<data name='FK2D7' port='4294967295' pin='4294967295' />
			<data name='FK2D8' port='4294967295' pin='4294967295' />
			<data name='FK2D9' port='4294967295' pin='4294967295' />
			<data name='FK2D10' port='4294967295' pin='4294967295' />
			<data name='FK2D11' port='4294967295' pin='4294967295' />
			<data name='FK2D12' port='4294967295' pin='4294967295' />
			<data name='FK2D13' port='4294967295' pin='4294967295' />
			<data name='FK2D14' port='4294967295' pin='4294967295' />
			<data name='FK2D15' port='4294967295' pin='4294967295' />
			<data name='FK2A0' port='4294967295' pin='4294967295' />
			<data name='FK2A1' port='4294967295' pin='4294967295' />
			<data name='FK2A2' port='4294967295' pin='4294967295' />
			<data name='FK2A3' port='4294967295' pin='4294967295' />
			<data name='FK2A4' port='4294967295' pin='4294967295' />
			<data name='FK2A5' port='4294967295' pin='4294967295' />
		</FK2>
		<ICD >
			<data name='AnalogPrescaleValue' value='19' />
			<data name='DigitalSampleRate' value='100000' />
			<data name='BreakpointCount' value='8' />
			<data name='CallStackDepthCount' value='8' />
			<data name='ClockPort' value='1' />
			<data name='ClockPin' value='6' />
			<data name='DataPort' value='1' />
			<data name='DataPin' value='7' />
			<data name='UseDefaultPins' value='1' />
			<data name='WrapEnabled' value='1' />
			<data name='CommsDelayOverridden' value='0' />
			<data name='CommsDelay' value='6' />
			<data name='CalculatedCommsDelay' value='6' />
			<data name='AnalogEB2PrescaleValue' value='2' />
			<data name='DigitalEB2SampleRate' value='100000' />
		</ICD>
		<pins >
			<digital A='0' B='0' C='0' D='0' E='0' F='0' G='0' H='0' I='0' J='0' K='0' L='0' M='0' N='0' O='0' P='0' Q='0' R='0' S='0' T='0' U='0' V='0' W='0' X='0' Y='0' Z='0' />
			<analog A='0' B='0' C='0' D='0' E='0' F='0' G='0' H='0' I='0' J='0' K='0' L='0' M='0' N='0' O='0' P='0' Q='0' R='0' S='0' T='0' U='0' V='0' W='0' X='0' Y='0' Z='0' />
		</pins>
	</ghost>
	<components >
		<settings autoimg='0' center='1' unitscale='0' fixedscale='0' fixedx='25' fixedy='25' fixedz='25' headcode='0' />
		<definition guid='c3d4e5f6-b1b2-41c2-91d2-456070809010' vstate='40' vmin='1' vmaj='1' srcleaf='NEC_IR_13.fcfx' visiblename='NEC IR TX/RX 38KHz' description='Sends and receives standard 8-bit-address NEC infrared remote control frames (38kHz carrier). 
RX is IOC interrupt-driven the project must configure its own both edge interrupt on RxPin calling ProcessEdge().' category='Wireless' category2='' category3='' bIs2dOnly='1' bIs3dOnly='0' bIsWysiwyg='0' catenable='1' author='Martin Whitlock' manuname='' manucode='' sysinfo='1053451' keywords='' dynamic='1' scadaCompatible='0' embeddedCompatible='1' showmacros='1' iconpath='..\Icons\Components\RC5.png' />
		<component class_type='root' codename='NEC_IR' panelId='-1' x='0' y='0' z='0' xsz='1' ysz='1' zsz='1' xang='0' yang='0' zang='0' xquat='0' yquat='0' zquat='0' wquat='1' visible='1' scadavisible='1' interactive='1' solid='1' layer='0' poslock='0' ancTop='0' ancBottom='0' ancLeft='0' ancRight='0' ancMinX='0' ancMinY='0' comp2dType='0' macronames='$(type)_$(module)__$(macro)' >
			<resources />
			<properties >
				<property name='PWM Connections' folder='PWM1::#00002767' hidden='0' >
					<property name='Channel' target='PWM1::channel' typeid='16' hidden='0' locked='0' info='Selects which PWM channel the component is connected to.' filter='001Channel 1
002Channel 2
003Channel 3
004Channel 4
005Channel 5
006Channel 6
007Channel 7
' />
					<property name='Alternative pin' target='PWM1::altpin' typeid='7' hidden='0' locked='1' info='Allows an alternate pin to be used if available. Note that on some devices you will also have to change this setting in the device configuration.' />
					<property name='PWM Pin' target='PWM1::pwm_pin' typeid='5' hidden='0' locked='1' info='Specifies the pin assigned to the PWM channel selected' />
					<property name='Remap Pin' target='PWM1::RemapPin' typeid='16' hidden='0' locked='0' info='Allows the PWM hardware pin to be reassigned to another pin' filter='000$PORTB.0
001$PORTB.1
002$PORTB.2
003$PORTB.3
004$PORTB.4
005$PORTB.5
006$PORTB.6
007$PORTB.7
008$PORTC.0
009$PORTC.1
010$PORTC.2
011$PORTC.3
012$PORTC.4
013$PORTC.5
014$PORTC.6
015$PORTC.7' />
				</property>
				<property name='PWM Frequency' folder='PWM1::#0000276C' hidden='0' >
					<property name='PWM Timer' target='PWM1::timer' typeid='16' hidden='0' locked='0' info='Timer associated with PWM to drive the output. Warning - All PWM channels linked to the same timer will share the same period and prescaler settings. Do not select Timer 4 - it is used internally by this component for held-button/repeat detection and picking it here will cause a compile error.' filter='002Timer2
004Timer4
006Timer6
' />
					<property name='Period Overflow' target='PWM1::period' typeid='21' hidden='0' locked='0' info='Allows the user to change the number of counts for the whole PWM period. Note that all PWM channels based on the same timer will share the same period overflow. PIC/AVR Range: 0 - 255 16-bit PIC Range: 0 - 65535' />
					<property name='Prescaler' target='PWM1::prescale' typeid='16' hidden='0' locked='0' info='Allows the user to change the number of program cycles per PWM cycle count. Note that all PWM channels based on the same timer will share the same prescaler.' filter='0001
0024
00416
00664
' />
					<property name='Period (us)' target='PWM1::period_calc' typeid='15' hidden='0' locked='1' info='Displays the length of time to complete one PWM cycle.' />
					<property name='Frequency (Hz)' target='PWM1::frequency_calc2' typeid='15' hidden='0' locked='1' info='' />
					<property name='Frequency (KHz)' target='PWM1::frequency_calc' typeid='15' hidden='0' locked='1' info='Displays the frequency of PWM cycles per second.' />
					<property name='PWM Prescale' target='PWM1::pwm_prescale' typeid='21' hidden='1' locked='0' info='' />
					<property name='Transmit Options' folder='TxOptions' hidden='0' >
						<property name='Invert Output (PNP driver)' target='InvertOutput' typeid='7' hidden='0' locked='0' info='Enable if the IR LED is driven through an inverting stage (e.g. a PNP transistor).' />
					</property>
				</property>
				<property name='Calculations' folder='PWM1::property_2' hidden='0' >
					<property name='Required Frequency (Hz)' target='PWM1::ReqFreq' typeid='15' hidden='0' locked='0' info='Type in your required frequency in Hz and the component will automatically calculate the best prescaler and period to acheive the frequency with the maximum possible resolution.' />
					<property name='Old Required Frequency' target='PWM1::OldReqFreq' typeid='15' hidden='1' locked='0' info='Type in your required frequency and the component will automatically calculate the best prescaler and period to acheive the frequency with the maximum possible resolution.' />
					<property name='Calculated Frequency (Hz)' target='PWM1::CalcFreq' typeid='15' hidden='0' locked='1' info='The frequency we have ended up acheiving using the calculated period and prescaler' />
					<property name='Calculated Period' target='PWM1::CalcPeriod' typeid='21' hidden='0' locked='1' info='The suggested period setting to use to acheive the calculated frequency.' />
					<property name='Calculated Prescaler' target='PWM1::CalcScaler' typeid='21' hidden='0' locked='1' info='The suggested prescaler setting to use to acheive the calculated frequency.' />
					<property name='Apply To Defaults' target='PWM1::Apply' typeid='7' hidden='0' locked='0' info='Applies the calculated period and prescaler settings to the PWM component default settings.' />
					<property name='ClockSpeed' target='PWM1::ClockSpeed' typeid='21' hidden='1' locked='0' info='' />
				</property>
				<property name='RX Timer' folder='TimedInterval1::property_2' hidden='0' >
					<property name='Timer' target='TimedInterval1::Timer' typeid='16' hidden='0' locked='0' info='Timer Peripheral to use to monitor the passage of time.' filter='000Timer 0
001Timer 1
002Timer 2
003Timer 3
004Timer 4
005Timer 5
006Timer 6' />
					<property name='Bit Depth' target='TimedInterval1::BitDepth' typeid='21' hidden='0' locked='1' info='Number of bits in the timer peripheral. 8-bit timers can count from 0-255 before overflowing. 16-bit timers can count from 0 to 65535 before overflowing.' />
					<property name='Prescaler' target='TimedInterval1::PrescalerFilter' typeid='16' hidden='0' locked='0' info='Scaler applied to the timer, Small scalers allow for finer resolution but will limit the max time and also put more load on the microcontroller. Recommended to use as large a setting as possible which still provides enough accuracy.' filter='0001:1
0011:2
0021:4
0031:8
0041:16
0051:32
0061:64
0071:128
' />
					<property name='Prescaler' target='TimedInterval1::Prescaler' typeid='21' hidden='1' locked='0' info='' />
					<property name='PostScaler' target='TimedInterval1::PostscalerFilter' typeid='16' hidden='1' locked='0' info='Scaler applied to the timer, Small scalers allow for finer resolution but will limit the max time and also put more load on the microcontroller. Recommended to use as large a setting as possible which still provides enough accuracy.' filter='0001:1
0011:2
0021:3
0031:4
0041:5
0051:6
0061:7
0071:8
0081:9
0091:10
0101:11
0111:12
0121:13
0131:14
0141:15
0151:16
' />
					<property name='PostScaler' target='TimedInterval1::PostScaler' typeid='21' hidden='1' locked='0' info='' />
					<property name='RX Pin' target='RxPin' typeid='5' hidden='0' locked='0' info='Digital input pin connected to the IR receiver module output (active-low: idle=1, mark=0). The embedding project must configure its own both-edge IOC interrupt on this pin calling ProcessEdge().' />
					<property name='Held Threshold (ms)' target='HeldThresholdMs' typeid='14' hidden='0' locked='0' info='How long with no repeat before IsHeld() reports released.' />
					<property name='Estimated Best Period (us)' target='TimedInterval1::EstBestPeriod' typeid='15' hidden='0' locked='1' info='Read-only: the real tick period these Timer/Prescaler/Bit Depth settings achieve. Copy this (rounded) into Tick Period (us).' />
					<property name='Tick Period (us)' target='EstBestPeriod' typeid='14' hidden='0' locked='1' info='Read-only: auto-set from Estimated Best Period whenever RX Timer settings change.' />
					<property name='Diagnostics Enabled' target='DiagnosticsEnabled' typeid='7' hidden='0' locked='0' info='Flags LastRxState/Working* as diagnostic values to read (e.g. over UART) when debugging.' />
				</property>
			</properties>
			<values >
				<value target='PWM1::channel' data='001' />
				<value target='PWM1::altpin' data='0' />
				<value target='PWM1::pwm_pin' data='$PORTB.0' />
				<value target='PWM1::RemapPin' data='000' />
				<value target='PWM1::timer' data='006' />
				<value target='PWM1::period' data='209' />
				<value target='PWM1::prescale' data='0' />
				<value target='PWM1::period_calc' data='26.249998' />
				<value target='PWM1::frequency_calc2' data='38095.238281' />
				<value target='PWM1::frequency_calc' data='38.095238' />
				<value target='PWM1::pwm_prescale' data='1' />
				<value target='InvertOutput' data='0' />
				<value target='PWM1::ReqFreq' data='38000.0' />
				<value target='PWM1::OldReqFreq' data='38000.000000' />
				<value target='PWM1::CalcFreq' data='38095.238281' />
				<value target='PWM1::CalcPeriod' data='209' />
				<value target='PWM1::CalcScaler' data='1' />
				<value target='PWM1::Apply' data='1' />
				<value target='PWM1::ClockSpeed' data='32000000' />
				<value target='TimedInterval1::Timer' data='004' />
				<value target='TimedInterval1::BitDepth' data='8' />
				<value target='TimedInterval1::PrescalerFilter' data='001' />
				<value target='TimedInterval1::Prescaler' data='2' />
				<value target='TimedInterval1::PostscalerFilter' data='0' />
				<value target='TimedInterval1::PostScaler' data='1' />
				<value target='RxPin' data='$PORTA.0' />
				<value target='HeldThresholdMs' data='150' />
				<value target='TimedInterval1::EstBestPeriod' data='' />
				<value target='EstBestPeriod' data='99.750000' />
				<value target='DiagnosticsEnabled' data='0' />
			</values>
			<events >
				<event class='Components' event='Property' target='Ev_Properties' />
			</events>
			<apis >
				<api name='TransmitNEC' alt='TransmitNEC' type='1' proto='1' />
				<api name='IsHeld' alt='IsHeld' type='1' proto='1' />
				<api name='IsDataDetected' alt='IsDataDetected' type='1' proto='1' />
				<api name='ProcessEdge' alt='ProcessEdge' type='1' proto='1' />
				<api name='ClearDataDetected' alt='ClearDataDetected' type='1' proto='1' />
				<api name='IsRepeat' alt='IsRepeat' type='1' proto='1' />
				<api name='Initialise' alt='Initialise' type='1' proto='1' />
			</apis>
			<variables >
				<variable public='0' >
					<def class_type='variable' name='HeldCheckCounter' type='u16' description='Counts periodic callback calls (~106us each) up to roughly 50ms, then runs the held/repeat ageing logic and resets.' isconst='0' isHidden='0' isinit='1' usrinit='0' setinit='0' />
				</variable>
				<variable public='1' >
					<def class_type='variable' name='HeldThresholdMs' type='s16' description='How long with no repeat before IsHeld() reports released.' isconst='0' isHidden='0' isinit='1' usrinit='1' setinit='150' />
				</variable>
				<variable public='1' >
					<def class_type='variable' name='EstBestPeriod' type='s16' description='Microseconds per tick, auto-synced from TimedInterval1 EstBestPeriod on any property change.' isconst='0' isHidden='0' isinit='1' usrinit='1' setinit='100' />
				</variable>
				<variable public='1' >
					<def class_type='variable' name='WorkingInvAddress' type='u8' description='Diagnostic: last raw decoded byte, even if checksum failed.' isconst='0' isHidden='0' isinit='1' usrinit='0' setinit='0' />
				</variable>
				<variable public='0' >
					<def class_type='variable' name='IdleDuty' type='u8' description='Duty cycle value meaning &quot;carrier off / idle&quot;, computed once in Initialise from InvertOutput: 0 normally, 255 when inverted.' isconst='0' isHidden='0' isinit='1' usrinit='0' setinit='0' />
				</variable>
				<variable public='1' >
					<def class_type='variable' name='LastElapsedUs' type='u32' description='The most recently measured time, in microseconds, between edges on RxPin.' isconst='0' isHidden='0' isinit='1' usrinit='0' setinit='0' />
				</variable>
				<variable public='1' >
					<def class_type='variable' name='WorkingCommand' type='u8' description='Diagnostic: last raw decoded byte, even if checksum failed.' isconst='0' isHidden='0' isinit='1' usrinit='0' setinit='0' />
				</variable>
				<variable public='1' >
					<def class_type='variable' name='WorkingInvCommand' type='u8' description='Diagnostic: last raw decoded byte, even if checksum failed.' isconst='0' isHidden='0' isinit='1' usrinit='0' setinit='0' />
				</variable>
				<variable public='1' >
					<def class_type='variable' name='DiagnosticsEnabled' type='b1' description='Marks LastRxState/Working* as diagnostic values; they are always kept up to date.' isconst='0' isHidden='0' isinit='1' usrinit='1' setinit='0' />
				</variable>
				<variable public='0' >
					<def class_type='variable' name='MarkDuty' type='u8' description='Duty cycle value meaning &quot;carrier on / mark&quot;, computed once in Initialise from InvertOutput: 128 normally, 127 when inverted (complemented, so the 38kHz toggle is preserved).' isconst='0' isHidden='0' isinit='1' usrinit='0' setinit='0' />
				</variable>
				<variable public='0' >
					<def class_type='variable' name='RepeatFlag' type='b1' description='True if the last ProcessEdge() result was a repeat code, not a fresh frame. Use IsRepeat() to read it.' isconst='0' isHidden='0' isinit='1' usrinit='0' setinit='0' />
				</variable>
				<variable public='0' >
					<def class_type='variable' name='Mask' type='u8' description='' isconst='0' isHidden='0' isinit='1' usrinit='0' setinit='0' />
				</variable>
				<variable public='1' >
					<def class_type='variable' name='LastRxState' type='u8' description='RxState at the start of the last ProcessEdge call: 0=idle, 1-2=header, 3-4=data bits, 5=checksum, 6=repeat.' isconst='0' isHidden='0' isinit='1' usrinit='0' setinit='0' />
				</variable>
				<variable public='1' >
					<def class_type='variable' name='InvertOutput' type='b1' description='True when PWM output is inverted for a PNP driver stage.' isconst='0' isHidden='0' isinit='1' usrinit='1' setinit='0' />
				</variable>
				<variable public='0' >
					<def class_type='variable' name='BitIndex' type='u8' description='' isconst='0' isHidden='0' isinit='1' usrinit='0' setinit='0' />
				</variable>
				<variable public='1' >
					<def class_type='variable' name='TickCount' type='u16' description='Tick counter used by DelayUs/ProcessEdge for timing; incremented by the periodic callback.' isconst='0' isHidden='0' isinit='1' usrinit='0' setinit='0' />
				</variable>
				<variable public='0' >
					<def class_type='variable' name='LastReceived' type='u32' description='Cached ProcessEdge() return value. Unchanged until a new valid frame/repeat arrives. Starts at 4294967295.' isconst='0' isHidden='0' isinit='1' usrinit='1' setinit='4294967295' />
				</variable>
				<variable public='0' >
					<def class_type='variable' name='RxState' type='u8' description='' isconst='0' isHidden='0' isinit='1' usrinit='0' setinit='0' />
				</variable>
				<variable public='0' >
					<def class_type='variable' name='EdgeTimeoutTicks' type='u8' description='' isconst='0' isHidden='0' isinit='1' usrinit='0' setinit='0' />
				</variable>
				<variable public='0' >
					<def class_type='variable' name='DataDetected' type='b1' description='True once a new frame or repeat has been decoded; stays true until ClearDataDetected() is called.' isconst='0' isHidden='0' isinit='1' usrinit='1' setinit='0' />
				</variable>
				<variable public='1' >
					<def class_type='variable' name='WorkingAddress' type='u8' description='Diagnostic: last raw decoded byte, even if checksum failed.' isconst='0' isHidden='0' isinit='1' usrinit='0' setinit='0' />
				</variable>
			</variables>
			<macros >
				<macro >
					<flowline name='DelayUs' description='Internal: busy-wait for the given number of microseconds using TickCount (no Timer1 involved).' statediag='0' >
						<return name='Return' type='v0' description='' isconst='0' isHidden='0' isinit='0' usrinit='' setinit='' />
						<param name='TargetUs' type='u32' description='' isconst='0' isHidden='0' isinit='1' usrinit='0' setinit='0' />
						<local name='ElapsedUs' type='u32' description='' isconst='0' isHidden='0' isinit='1' usrinit='0' setinit='0' />
						<command class_type='calculation' title='Calculation' >
							<exp exp='TickCount = 0' />
						</command>
						<command class_type='calculation' title='Calculation' >
							<exp exp='.ElapsedUs = 0' />
						</command>
						<command class_type='loop' title='Loop' type='0' exp='.ElapsedUs &lt; .TargetUs' for1='' for3='' >
							<flowline >
								<command class_type='calculation' title='Calculation' >
									<exp exp='.ElapsedUs = TickCount * EstBestPeriod' />
								</command>
							</flowline>
						</command>
					</flowline>
				</macro>
				<macro >
					<flowline name='TransmitNEC' description='Sends one standard NEC frame: 8-bit address, 8-bit inverted address, 8-bit command, 8-bit inverted command.' statediag='0' >
						<return name='Return' type='v0' description='' isconst='0' isHidden='0' isinit='0' usrinit='' setinit='' />
						<param name='TxAddress' type='u8' description='' isconst='0' isHidden='0' isinit='1' usrinit='0' setinit='0' />
						<param name='TxCommand' type='u8' description='' isconst='0' isHidden='0' isinit='1' usrinit='0' setinit='0' />
						<local name='InvAddress' type='u8' description='' isconst='0' isHidden='0' isinit='1' usrinit='0' setinit='0' />
						<local name='InvCommand' type='u8' description='' isconst='0' isHidden='0' isinit='1' usrinit='0' setinit='0' />
						<command class_type='calculation' title='Calculation' >
							<exp exp='.InvAddress = 255 - .TxAddress' />
						</command>
						<command class_type='calculation' title='Calculation' >
							<exp exp='.InvCommand = 255 - .TxCommand' />
						</command>
						<command class_type='call' title='Call Macro' macro='SendMark' >
							<argument exp='9000' />
						</command>
						<command class_type='call' title='Call Macro' macro='SendSpace' >
							<argument exp='4500' />
						</command>
						<command class_type='call' title='Call Macro' macro='SendByte' >
							<argument exp='.TxAddress' />
						</command>
						<command class_type='call' title='Call Macro' macro='SendByte' >
							<argument exp='.InvAddress' />
						</command>
						<command class_type='call' title='Call Macro' macro='SendByte' >
							<argument exp='.TxCommand' />
						</command>
						<command class_type='call' title='Call Macro' macro='SendByte' >
							<argument exp='.InvCommand' />
						</command>
						<command class_type='call' title='Call Macro' macro='SendMark' >
							<argument exp='562' />
						</command>
						<command class_type='call' title='Component Macro' component='PWM1' macro='SetDutyCycle' >
							<argument exp='IdleDuty' />
						</command>
					</flowline>
				</macro>
				<macro >
					<flowline name='SendMark' description='Internal: carrier ON (IR LED burst at 38kHz) for the given duration.' statediag='0' >
						<return name='Return' type='v0' description='' isconst='0' isHidden='0' isinit='0' usrinit='' setinit='' />
						<param name='DurationUs' type='u32' description='' isconst='0' isHidden='0' isinit='1' usrinit='0' setinit='0' />
						<command class_type='call' title='Component Macro' component='PWM1' macro='SetDutyCycle' >
							<argument exp='MarkDuty' />
						</command>
						<command class_type='call' title='Call Macro' macro='DelayUs' >
							<argument exp='.DurationUs' />
						</command>
					</flowline>
				</macro>
				<macro >
					<flowline name='SendByte' description='Internal: sends one byte, LSB first, as NEC-encoded mark/space pairs.' statediag='0' >
						<return name='Return' type='v0' description='' isconst='0' isHidden='0' isinit='0' usrinit='' setinit='' />
						<param name='Value' type='u8' description='' isconst='0' isHidden='0' isinit='1' usrinit='0' setinit='0' />
						<local name='Mask' type='u8' description='' isconst='0' isHidden='0' isinit='1' usrinit='0' setinit='0' />
						<local name='BitIdx' type='u8' description='' isconst='0' isHidden='0' isinit='1' usrinit='0' setinit='0' />
						<command class_type='calculation' title='Calculation' >
							<exp exp='.Mask = 1' />
						</command>
						<command class_type='loop' title='Loop' type='2' forvar='.BitIdx' exp='8' for1='' for3='' >
							<flowline >
								<command class_type='call' title='Call Macro' macro='SendMark' >
									<argument exp='562' />
								</command>
								<command class_type='decision' title='Decision' exp='(.Value AND .Mask) != 0' swap='0' >
									<flowline >
										<command class_type='call' title='Call Macro' macro='SendSpace' >
											<argument exp='1687' />
										</command>
									</flowline>
									<flowline >
										<command class_type='call' title='Call Macro' macro='SendSpace' >
											<argument exp='562' />
										</command>
									</flowline>
								</command>
								<command class_type='calculation' title='Calculation' >
									<exp exp='.Mask = .Mask * 2' />
								</command>
							</flowline>
						</command>
						<command class_type='sim' title='Component Macro' component='LibraryComponent1' macro='FlashTx' />
					</flowline>
				</macro>
				<macro >
					<flowline name='IsHeld' description='On-demand: is the last decoded button still considered held?' statediag='0' >
						<return name='Return' type='b1' description='' isconst='0' isHidden='0' isinit='0' usrinit='0' setinit='' />
						<command class_type='calculation' title='Calculation' >
							<exp exp='.Return = RepeatFlag' />
						</command>
					</flowline>
				</macro>
				<macro >
					<flowline name='IsDataDetected' description='On-demand: has a new frame or repeat been decoded since the last ClearDataDetected() call?' statediag='0' >
						<return name='Return' type='b1' description='' isconst='0' isHidden='0' isinit='0' usrinit='0' setinit='' />
						<command class_type='calculation' title='Calculation' >
							<exp exp='.Return = DataDetected' />
						</command>
					</flowline>
				</macro>
				<macro >
					<flowline name='Ev_Properties' description='Auto-syncs Tick Period (us) to match RX Timer settings whenever a property changes.' statediag='0' >
						<return name='Return' type='u32' description='' isconst='0' isHidden='0' isinit='0' usrinit='0' setinit='' />
						<command class_type='sim' title='Built-in Function' macro='Component.Property.CopyValue' >
							<argument exp='TimedInterval1' />
							<argument exp='This' />
							<argument exp='&quot;EstBestPeriod&quot;' />
						</command>
					</flowline>
				</macro>
				<macro >
					<flowline name='PeriodicHeldCheck' description='Timer callback: increments TickCount and ages out held/repeat state.' statediag='0' >
						<return name='Return' type='v0' description='' isconst='0' isHidden='0' isinit='0' usrinit='' setinit='' />
						<command class_type='calculation' title='Calculation' >
							<exp exp='TickCount = TickCount + 1' />
						</command>
						<command class_type='calculation' title='Calculation' >
							<exp exp='HeldCheckCounter = HeldCheckCounter + 1' />
						</command>
						<command class_type='decision' title='Decision' exp='HeldCheckCounter &gt;= 471' swap='0' >
							<flowline >
								<command class_type='calculation' title='Calculation' >
									<exp exp='HeldCheckCounter = 0' />
								</command>
								<command class_type='calculation' title='Calculation' >
									<exp exp='EdgeTimeoutTicks = EdgeTimeoutTicks + 1' />
								</command>
							</flowline>
							<flowline />
						</command>
						<command class_type='decision' title='Decision' exp='(RxState == 0) &amp;&amp; (RepeatFlag == 1) &amp;&amp; ((SIGNED EdgeTimeoutTicks * 50) &gt; HeldThresholdMs)' swap='0' >
							<flowline >
								<command class_type='calculation' title='Calculation' >
									<exp exp='RepeatFlag = 0' />
								</command>
							</flowline>
							<flowline />
						</command>
					</flowline>
				</macro>
				<macro >
					<flowline name='ProcessEdge' description='Call on every RxPin edge (both edges). Returns the last decoded value per Mode: 1=Address, 2=Command, 3=both.' statediag='0' >
						<return name='Return' type='u32' description='The most recently decoded value(s) selected by Mode. 4294967295 only before any frame has ever been received.' isconst='0' isHidden='0' isinit='0' usrinit='0' setinit='' />
						<param name='Mode' type='u8' description='Which decoded value(s) to return: 1=Address only, 2=Command only, 3=both packed as (Address*256)+Command.' isconst='0' isHidden='0' isinit='1' usrinit='0' setinit='0' />
						<local name='Elapsed' type='u32' description='' isconst='0' isHidden='0' isinit='1' usrinit='0' setinit='0' />
						<local name='ByteIndex' type='u8' description='' isconst='0' isHidden='0' isinit='1' usrinit='0' setinit='0' />
						<local name='Bit' type='u8' description='' isconst='0' isHidden='0' isinit='1' usrinit='0' setinit='0' />
						<local name='NewData' type='b1' description='Set true only when this edge completed a validated full frame or repeat code.' isconst='0' isHidden='0' isinit='1' usrinit='0' setinit='0' />
						<local name='Address' type='u8' description='Scratch: validated address for this call only, immediately folded into LastReceived - never needs to survive to a later call, so this is local, not a component variable.' isconst='0' isHidden='0' isinit='1' usrinit='0' setinit='0' />
						<local name='Command' type='u8' description='Scratch: validated command for this call only, immediately folded into LastReceived - never needs to survive to a later call, so this is local, not a component variable.' isconst='0' isHidden='0' isinit='1' usrinit='0' setinit='0' />
						<command class_type='calculation' title='Calculation' >
							<exp exp='.NewData = 0' />
						</command>
						<command class_type='calculation' title='Calculation' >
							<exp exp='LastRxState = RxState' />
						</command>
						<command class_type='calculation' title='Calculation' >
							<exp exp='.Elapsed = TickCount * EstBestPeriod' />
						</command>
						<command class_type='calculation' title='Calculation' >
							<exp exp='LastElapsedUs = .Elapsed' />
						</command>
						<command class_type='calculation' title='Calculation' >
							<exp exp='TickCount = 0' />
						</command>
						<command class_type='calculation' title='Calculation' >
							<exp exp='EdgeTimeoutTicks = 0' />
						</command>
						<command class_type='switch' title='Switch' exp='RxState' >
							<case >
								<flowline />
							</case>
							<case exp='0' >
								<flowline >
									<command class_type='decision' title='Decision' exp='RxPin == 0' swap='0' >
										<flowline >
											<command class_type='calculation' title='Calculation' >
												<exp exp='RxState = 1' />
											</command>
										</flowline>
										<flowline />
									</command>
								</flowline>
							</case>
							<case exp='1' >
								<flowline >
									<command class_type='decision' title='Decision' exp='(.Elapsed &gt;= 8000) &amp;&amp; (.Elapsed &lt;= 10000)' swap='0' >
										<flowline >
											<command class_type='calculation' title='Calculation' >
												<exp exp='RxState = 2' />
											</command>
										</flowline>
										<flowline >
											<command class_type='calculation' title='Calculation' >
												<exp exp='RxState = 0' />
											</command>
										</flowline>
									</command>
								</flowline>
							</case>
							<case exp='2' >
								<flowline >
									<command class_type='decision' title='Decision' exp='(.Elapsed &gt;= 4000) &amp;&amp; (.Elapsed &lt;= 5000)' swap='0' >
										<flowline >
											<command class_type='calculation' title='Calculation' >
												<exp exp='BitIndex = 0' />
											</command>
											<command class_type='calculation' title='Calculation' >
												<exp exp='Mask = 1' />
											</command>
											<command class_type='calculation' title='Calculation' >
												<exp exp='WorkingAddress = 0' />
											</command>
											<command class_type='calculation' title='Calculation' >
												<exp exp='WorkingInvAddress = 0' />
											</command>
											<command class_type='calculation' title='Calculation' >
												<exp exp='WorkingCommand = 0' />
											</command>
											<command class_type='calculation' title='Calculation' >
												<exp exp='WorkingInvCommand = 0' />
											</command>
											<command class_type='calculation' title='Calculation' >
												<exp exp='RxState = 3' />
											</command>
										</flowline>
										<flowline >
											<command class_type='decision' title='Decision' exp='(.Elapsed &gt;= 2000) &amp;&amp; (.Elapsed &lt;= 2500)' swap='0' >
												<flowline >
													<command class_type='calculation' title='Calculation' >
														<exp exp='RxState = 6' />
													</command>
												</flowline>
												<flowline >
													<command class_type='calculation' title='Calculation' >
														<exp exp='RxState = 0' />
													</command>
												</flowline>
											</command>
										</flowline>
									</command>
								</flowline>
							</case>
							<case exp='3' >
								<flowline >
									<command class_type='calculation' title='Calculation' >
										<exp exp='RxState = 4' />
									</command>
								</flowline>
							</case>
							<case exp='4' >
								<flowline >
									<command class_type='decision' title='Decision' exp='.Elapsed &gt; 2000' swap='0' >
										<flowline >
											<command class_type='calculation' title='Calculation' >
												<exp exp='RxState = 0' />
											</command>
										</flowline>
										<flowline >
											<command class_type='calculation' title='Calculation' >
												<exp exp='.Bit = 0' />
											</command>
											<command class_type='decision' title='Decision' exp='.Elapsed &gt; 1125' swap='0' >
												<flowline >
													<command class_type='calculation' title='Calculation' >
														<exp exp='.Bit = 1' />
													</command>
												</flowline>
												<flowline />
											</command>
											<command class_type='calculation' title='Calculation' >
												<exp exp='.ByteIndex = BitIndex / 8' />
											</command>
											<command class_type='decision' title='Decision' exp='.Bit == 1' swap='0' >
												<flowline >
													<command class_type='decision' title='Decision' exp='.ByteIndex == 0' swap='0' >
														<flowline >
															<command class_type='calculation' title='Calculation' >
																<exp exp='WorkingAddress = WorkingAddress + Mask' />
															</command>
														</flowline>
														<flowline />
													</command>
													<command class_type='decision' title='Decision' exp='.ByteIndex == 1' swap='0' >
														<flowline >
															<command class_type='calculation' title='Calculation' >
																<exp exp='WorkingInvAddress = WorkingInvAddress + Mask' />
															</command>
														</flowline>
														<flowline />
													</command>
													<command class_type='decision' title='Decision' exp='.ByteIndex == 2' swap='0' >
														<flowline >
															<command class_type='calculation' title='Calculation' >
																<exp exp='WorkingCommand = WorkingCommand + Mask' />
															</command>
														</flowline>
														<flowline />
													</command>
													<command class_type='decision' title='Decision' exp='.ByteIndex == 3' swap='0' >
														<flowline >
															<command class_type='calculation' title='Calculation' >
																<exp exp='WorkingInvCommand = WorkingInvCommand + Mask' />
															</command>
														</flowline>
														<flowline />
													</command>
												</flowline>
												<flowline />
											</command>
											<command class_type='calculation' title='Calculation' >
												<exp exp='Mask = Mask * 2' />
											</command>
											<command class_type='decision' title='Decision' exp='Mask == 0' swap='0' >
												<flowline >
													<command class_type='calculation' title='Calculation' >
														<exp exp='Mask = 1' />
													</command>
												</flowline>
												<flowline />
											</command>
											<command class_type='calculation' title='Calculation' >
												<exp exp='BitIndex = BitIndex + 1' />
											</command>
											<command class_type='decision' title='Decision' exp='BitIndex == 32' swap='0' >
												<flowline >
													<command class_type='calculation' title='Calculation' >
														<exp exp='RxState = 5' />
													</command>
												</flowline>
												<flowline >
													<command class_type='calculation' title='Calculation' >
														<exp exp='RxState = 3' />
													</command>
												</flowline>
											</command>
										</flowline>
									</command>
								</flowline>
							</case>
							<case exp='5' >
								<flowline >
									<command class_type='decision' title='Decision' exp='(WorkingAddress == 255 - WorkingInvAddress) &amp;&amp; (WorkingCommand == 255 - WorkingInvCommand)' swap='0' >
										<flowline >
											<command class_type='calculation' title='Calculation' >
												<exp exp='.Address = WorkingAddress' />
											</command>
											<command class_type='calculation' title='Calculation' >
												<exp exp='.Command = WorkingCommand' />
											</command>
											<command class_type='calculation' title='Calculation' >
												<exp exp='.NewData = 1' />
											</command>
											<command class_type='calculation' title='Calculation' >
												<exp exp='RepeatFlag = 0' />
											</command>
										</flowline>
										<flowline />
									</command>
									<command class_type='calculation' title='Calculation' >
										<exp exp='RxState = 0' />
									</command>
								</flowline>
							</case>
							<case exp='6' >
								<flowline >
									<command class_type='calculation' title='Calculation' >
										<exp exp='.NewData = 1' />
									</command>
									<command class_type='calculation' title='Calculation' >
										<exp exp='RepeatFlag = 1' />
									</command>
									<command class_type='calculation' title='Calculation' >
										<exp exp='RxState = 0' />
									</command>
								</flowline>
							</case>
						</command>
						<command class_type='decision' title='Decision' exp='.NewData == 1' swap='0' >
							<flowline >
								<command class_type='calculation' title='Calculation' >
									<exp exp='DataDetected = 1' />
								</command>
							</flowline>
							<flowline />
						</command>
						<command class_type='decision' title='Decision' exp='(.NewData == 1) &amp;&amp; (RepeatFlag == 0)' swap='0' >
							<flowline >
								<command class_type='decision' title='Decision' exp='.Mode == 1' swap='0' >
									<flowline >
										<command class_type='calculation' title='Calculation' >
											<exp exp='LastReceived = .Address' />
										</command>
									</flowline>
									<flowline >
										<command class_type='decision' title='Decision' exp='.Mode == 2' swap='0' >
											<flowline >
												<command class_type='calculation' title='Calculation' >
													<exp exp='LastReceived = .Command' />
												</command>
											</flowline>
											<flowline >
												<command class_type='calculation' title='Calculation' >
													<exp exp='LastReceived = (.Address * 256) + .Command' />
												</command>
											</flowline>
										</command>
									</flowline>
								</command>
							</flowline>
							<flowline />
						</command>
						<command class_type='calculation' title='Calculation' >
							<exp exp='.Return = LastReceived' />
						</command>
						<command class_type='sim' title='Component Macro' component='LibraryComponent1' macro='FlashRx' />
					</flowline>
				</macro>
				<macro >
					<flowline name='SendSpace' description='Internal: carrier OFF for the given duration.' statediag='0' >
						<return name='Return' type='v0' description='' isconst='0' isHidden='0' isinit='0' usrinit='' setinit='' />
						<param name='DurationUs' type='u32' description='' isconst='0' isHidden='0' isinit='1' usrinit='0' setinit='0' />
						<command class_type='call' title='Component Macro' component='PWM1' macro='SetDutyCycle' >
							<argument exp='IdleDuty' />
						</command>
						<command class_type='call' title='Call Macro' macro='DelayUs' >
							<argument exp='.DurationUs' />
						</command>
					</flowline>
				</macro>
				<macro >
					<flowline name='ClearDataDetected' description='Resets DataDetected to false so the next new frame or repeat can be detected again.' statediag='0' >
						<return name='Return' type='v0' description='' isconst='0' isHidden='0' isinit='0' usrinit='' setinit='' />
						<command class_type='calculation' title='Calculation' >
							<exp exp='DataDetected = 0' />
						</command>
					</flowline>
				</macro>
				<macro >
					<flowline name='IsRepeat' description='On-demand: was the last decoded frame a repeat code rather than a fresh frame?' statediag='0' >
						<return name='Return' type='b1' description='' isconst='0' isHidden='0' isinit='0' usrinit='0' setinit='' />
						<command class_type='calculation' title='Calculation' >
							<exp exp='.Return = RepeatFlag' />
						</command>
					</flowline>
				</macro>
				<macro >
					<flowline name='Main' description='' statediag='0' >
						<return name='Return' type='v0' description='' isconst='0' isHidden='0' isinit='0' usrinit='' setinit='' />
					</flowline>
				</macro>
				<macro >
					<flowline name='Initialise' description='Sets up PWM, RX pin and held-detection timer. Call once at startup.' statediag='0' >
						<return name='Return' type='v0' description='' isconst='0' isHidden='0' isinit='0' usrinit='' setinit='' />
						<command class_type='call' title='Component Macro' component='PWM1' macro='Enable' />
						<command class_type='call' title='Component Macro' component='PWM1' macro='ChangePeriod' >
							<argument exp='209' />
							<argument exp='1' />
						</command>
						<command class_type='decision' title='Decision' exp='InvertOutput == 1' swap='0' >
							<flowline >
								<command class_type='calculation' title='Calculation' >
									<exp exp='IdleDuty = 255' />
								</command>
								<command class_type='calculation' title='Calculation' >
									<exp exp='MarkDuty = 127' />
								</command>
							</flowline>
							<flowline >
								<command class_type='calculation' title='Calculation' >
									<exp exp='IdleDuty = 0' />
								</command>
								<command class_type='calculation' title='Calculation' >
									<exp exp='MarkDuty = 128' />
								</command>
							</flowline>
						</command>
						<command class_type='call' title='Component Macro' component='PWM1' macro='SetDutyCycle' >
							<argument exp='IdleDuty' />
						</command>
						<command class_type='calculation' title='Calculation' >
							<exp exp='RepeatFlag = 0' />
						</command>
						<command class_type='calculation' title='Calculation' >
							<exp exp='RxState = 0' />
						</command>
						<command class_type='calculation' title='Calculation' >
							<exp exp='EdgeTimeoutTicks = 0' />
						</command>
						<command class_type='calculation' title='Calculation' >
							<exp exp='TickCount = 0' />
						</command>
						<command class_type='calculation' title='Calculation' >
							<exp exp='HeldCheckCounter = 0' />
						</command>
						<command class_type='call' title='Component Macro' component='TimedInterval1' macro='StartTimerInterval' />
					</flowline>
				</macro>
			</macros>
			<component class_type='ref' guid='444fb704-814c-4707-a15c-759ba088505c' vmin='0' vmaj='12' codename='PWM1' panelId='0' x='235.435' y='-134.27' z='0' xsz='4.28446' ysz='4.28446' zsz='25' xang='0' yang='0' zang='0' xquat='0' yquat='0' zquat='0' wquat='1' visible='0' scadavisible='1' interactive='0' solid='1' layer='2' poslock='1' ancTop='0' ancBottom='0' ancLeft='0' ancRight='0' ancMinX='0' ancMinY='0' comp2dType='0' >
				<resources />
				<properties />
				<values >
					<value target='channel' data='001' />
					<value target='altpin' data='0' />
					<value target='pwm_pin' data='$PORTB.0' />
					<value target='RemapPin' data='000' />
					<value target='timer' data='006' />
					<value target='period' data='209' />
					<value target='prescale' data='0' />
					<value target='period_calc' data='26.249998' />
					<value target='frequency_calc2' data='38095.238281' />
					<value target='frequency_calc' data='38.095238' />
					<value target='pwm_prescale' data='1' />
					<value target='ReqFreq' data='38000.0' />
					<value target='OldReqFreq' data='38000.000000' />
					<value target='CalcFreq' data='38095.238281' />
					<value target='CalcPeriod' data='209' />
					<value target='CalcScaler' data='1' />
					<value target='Apply' data='1' />
					<value target='ClockSpeed' data='32000000' />
					<value target='SimRep' data='001' />
					<value target='Family' data='PIC' />
					<value target='ModifiedConnection' data='B.0' />
					<value target='IsESP' data='0' />
				</values>
				<events />
				<apis />
				<variables />
				<macros />
			</component>
			<component class_type='ref' guid='d7633558-54a4-47ff-8c00-95170632c57e' vmin='2' vmaj='1' codename='TimedInterval1' panelId='0' x='233.031' y='-124.666' z='1' xsz='9.40174' ysz='8.25893' zsz='25' xang='0' yang='0' zang='0' xquat='0' yquat='0' zquat='0' wquat='1' visible='0' scadavisible='1' interactive='0' solid='1' layer='2' poslock='0' ancTop='0' ancBottom='0' ancLeft='0' ancRight='0' ancMinX='0' ancMinY='0' comp2dType='0' >
				<resources />
				<properties />
				<values >
					<value target='TimeUnit' data='005' />
					<value target='TimePeriod' data='100' />
					<value target='EstBestPeriod' data='99.750000' />
					<value target='MaxTimeMeasurement' data='274877906944.000000' />
					<value target='CallbackMacro' data='PeriodicHeldCheck' />
					<value target='Timer' data='004' />
					<value target='BitDepth' data='8' />
					<value target='PrescalerFilter' data='001' />
					<value target='Prescaler' data='2' />
					<value target='PostscalerFilter' data='0' />
					<value target='PostScaler' data='1' />
					<value target='InstructionRate' data='4000000' />
					<value target='InstructionTime' data='0.000250' />
					<value target='RolloverFreq' data='15625.000000' />
					<value target='RolloverTime' data='0.000064' />
					<value target='RegHighUsed' data='0' />
					<value target='WholePeriods' data='1' />
					<value target='UseSubPeriod' data='1' />
					<value target='SubInstCount' data='143' />
					<value target='SubPeriodOverflow' data='113' />
					<value target='Instance' data='1' />
					<value target='DeviceBits' data='8' />
					<value target='CountRegLow' data='TMR4' />
					<value target='CountRegHigh' data='' />
					<value target='EnableCode' data='st_bit(INTCON,GIE); st_bit(PIE4, TMR4IE);  st_bit(INTCON,PEIE); T4CLKCON = 1; T4CONbits.T4CKPS=1; st_bit(T4CON,TMR4ON);  T4CONbits.T4OUTPS = 0; ' />
					<value target='DisableCode' data='cr_bit(PIE4, TMR4IE); ' />
					<value target='HandlerCodeStart' data='if (ts_bit(PIR4, TMR4IF) &amp;&amp; ts_bit(PIE4, TMR4IE)) {  ' />
					<value target='HandlerCodeEnd' data='  cr_bit(PIR4, TMR4IF); }' />
					<value target='Family' data='PIC' />
					<value target='TimerDelay' data='50' />
				</values>
				<events />
				<apis />
				<variables />
				<macros />
			</component>
			<component class_type='ref' guid='58be670e-18fb-477e-ab09-61fde14b23ec' vmin='0' vmaj='1' codename='LibraryComponent1' panelId='0' x='234.281' y='-123.567' z='2' xsz='103.714' ysz='103.714' zsz='100' xang='0' yang='0' zang='0' xquat='0' yquat='0' zquat='0' wquat='1' visible='1' scadavisible='1' interactive='1' solid='0' layer='2' poslock='1' ancTop='0' ancBottom='0' ancLeft='0' ancRight='0' ancMinX='0' ancMinY='0' comp2dType='0' >
				<resources />
				<properties />
				<values >
					<value target='Text::sText' data='NEC IR' />
					<value target='Name' data='' />
					<value target='Peripheral::sText' data='' />
					<value target='Text::nVerticalAlignment' data='002' />
					<value target='ShowComms' data='1' />
					<value target='InputIcon::CommsType' data='255' />
					<value target='InputIcon::LinkTo' data='0' />
					<value target='IconsOnRight' data='0' />
					<value target='OutputIcon::CommsType' data='255' />
					<value target='OutputIcon::LinkTo' data='0' />
					<value target='InputIcon1::CommsType' data='255' />
					<value target='ConsoleHandle' data='0' />
					<value target='Upgraded' data='0' />
				</values>
				<events />
				<apis />
				<variables />
				<macros />
			</component>
		</component>
	</components>
	<scadaresourcelookup />
	<keymap />
	<panel2d shadows='0' lighting='2' brightness='0' >
		<background rgb='7292207' img='' style='0' />
		<camera xe='0' ye='0' ze='1030.89' xt='0' yt='0' zt='0' xquat='0' yquat='0' zquat='0' wquat='1' />
		<viewport dx='586' dy='429' zoom='68.781' fix_topleft='0' />
		<page x='1000' y='1000' show='0' rgb='7360576' />
		<winpos ID='7005' RectRecentFloat='489,519,1083,979' RectRecentDocked='0,0,466,429' RecentFrameAlignment='16384' RecentRowIndex='0' IsFloating='0' MRUWidth='32767' PinState='0' IsMaximized='0' IsVisible='0' />
	</panel2d>
	<panel3d shadows='0' lighting='2' brightness='0' perspective='1' >
		<background rgb='8409120' img='' style='0' />
		<table rgb='7360576' img='' style='0' size='0' />
		<camera xe='0' ye='0' ze='781.66' xt='0' yt='0' zt='0' xquat='0' yquat='0' zquat='0' wquat='1' />
		<camerakey0 xe='0' ye='0' ze='300' xt='0' yt='0' zt='0' xquat='0' yquat='0' zquat='0' wquat='1' />
		<camerakey1 xe='-3.67394e-14' ye='0' ze='-300' xt='0' yt='0' zt='0' xquat='0' yquat='1' zquat='0' wquat='6.12323e-17' />
		<camerakey2 xe='0' ye='-300' ze='6.66134e-14' xt='0' yt='0' zt='0' xquat='-0.707107' yquat='0' zquat='0' wquat='0.707107' />
		<camerakey3 xe='-3.67394e-14' ye='300' ze='6.66134e-14' xt='0' yt='0' zt='0' xquat='-4.32978e-17' yquat='0.707107' zquat='0.707107' wquat='4.32978e-17' />
		<camerakey4 xe='-300' ye='-6.66134e-14' ze='6.66134e-14' xt='0' yt='0' zt='0' xquat='-0.5' yquat='0.5' zquat='0.5' wquat='0.5' />
		<camerakey5 xe='300' ye='-6.66134e-14' ze='6.66134e-14' xt='0' yt='0' zt='0' xquat='-0.5' yquat='-0.5' zquat='-0.5' wquat='0.5' />
		<camerakey6 xe='-173.205' ye='-173.205' ze='173.205' xt='0' yt='0' zt='0' xquat='-0.424708' yquat='0.17592' zquat='0.339851' wquat='0.820473' />
		<winpos ID='7004' RectRecentFloat='153,370,807,947' RectRecentDocked='0,0,462,872' RecentFrameAlignment='16384' RecentRowIndex='0' IsFloating='0' MRUWidth='32767' PinState='0' IsMaximized='0' IsVisible='0' />
	</panel3d>
	<panels2d count='1' >
		<panel2d_0 id='0' name='NewPanel' type='0' >
			<winpos ID='1171' RectRecentFloat='439,364,1089,814' RectRecentDocked='927,141,1393,1013' RecentFrameAlignment='16384' RecentRowIndex='0' IsFloating='1' MRUWidth='32767' PinState='0' IsMaximized='0' IsVisible='0' />
			<background fill='288230376151053813' showgrid='0' gridstyle='0' gridsize='10' gridbrush='71776119075691740' snaptogrid='1' fitcomp='0' disp_x='300' disp_y='400' scale='120' disp_col='16777215' />
		</panel2d_0>
	</panels2d>
	<layout >
		<view type='0' name='Main' mode='0' placement='LAAAAAAAAAABAAAA---------------------wUAAAAYAAAAnwMAAGMDAAA' zoom='100' scrollx='0' scrolly='0' flags='0' />
		<view type='0' name='Initialise' mode='0' placement='LAAAAAAAAAABAAAA---------------------wUAAAAYAAAAnwMAAGMDAAA' zoom='100' scrollx='0' scrolly='0' flags='0' />
		<view type='0' name='TransmitNEC' mode='0' placement='LAAAAAAAAAABAAAA---------------------wUAAAAYAAAAnwMAAGMDAAA' zoom='100' scrollx='0' scrolly='0' flags='0' />
		<view type='0' name='ProcessEdge' mode='0' placement='LAAAAAAAAAABAAAA---------------------wUAAAAYAAAAnwMAAGMDAAA' zoom='100' scrollx='0' scrolly='0' flags='0' />
		<view type='0' name='PeriodicHeldCheck' mode='0' placement='LAAAAAAAAAABAAAA---------------------wUAAAAYAAAAnwMAAGMDAAA' zoom='100' scrollx='0' scrolly='0' flags='0' />
		<view type='0' name='IsHeld' mode='0' placement='LAAAAAAAAAABAAAA---------------------wUAAAAYAAAAnwMAAGMDAAA' zoom='100' scrollx='0' scrolly='0' flags='0' />
		<view type='0' name='DelayUs' mode='0' placement='LAAAAAAAAAABAAAA---------------------wUAAAAYAAAAnwMAAGMDAAA' zoom='100' scrollx='0' scrolly='0' flags='0' />
		<view type='0' name='SendMark' mode='0' placement='LAAAAAAAAAABAAAA---------------------wUAAAAYAAAAnwMAAGMDAAA' zoom='100' scrollx='0' scrolly='0' flags='0' />
		<view type='0' name='SendSpace' mode='0' placement='LAAAAAAAAAABAAAA---------------------wUAAAAYAAAAnwMAAGMDAAA' zoom='100' scrollx='0' scrolly='0' flags='0' />
		<view type='0' name='SendByte' mode='0' placement='LAAAAAAAAAABAAAA---------------------wUAAAAYAAAAnwMAAGMDAAA' zoom='100' scrollx='0' scrolly='0' flags='0' />
	</layout>
</document>
</root>
