<root>
<document scada='0' projtype='1' schema='103' license='1,79829088,Q2XNNM' title='New Embedded Project' description='New &lt;E-Blocks3 ESP32S3 Programmer&gt; Embedded Project' fcversion='720898' target='ESP.ESP32.ESP32-S3_WROOM' >
	<config data='' clkspd='240000000' simspd='0' usewdt='0' constif='0' commport='12' SSH_IP='DD6171BB7AD97877' SSH_User='DD6171BB7AD97877' SSH_Pass='DD6171BB7AD97877' Use3V3='0' />
	<plugins >
		<dll_models enabled='1' />
	</plugins>
	<supplement use='1' head='typedef struct {
    int start_row;
    int end_row;
    int32_t x_min;
    int32_t x_max;
    int32_t y_min;
    int32_t y_max;
} render_job_t;

QueueHandle_t job_queue;
SemaphoreHandle_t chunks_done_sem;' 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='1' />
			<data name='CalculatedCommsDelay' value='1' />
			<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='0a43595b-f02b-4adf-8614-819e2de2ce3c' vstate='40' vmin='0' vmaj='1' srcleaf='' visiblename='' description='' category='' category2='' category3='' bIs2dOnly='0' bIs3dOnly='0' bIsWysiwyg='0' catenable='1' author='' manuname='' manucode='' sysinfo='0' keywords='' dynamic='1' scadaCompatible='0' embeddedCompatible='1' showmacros='1' iconpath='' />
		<component class_type='root' codename='ComponentRoot' 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' >
			<resources />
			<properties >
				<property name='WritePin' target='writePin' typeid='5' hidden='0' locked='0' info='' />
			</properties>
			<values >
				<value target='writePin' data='$PORTA.18' />
			</values>
			<events />
			<apis />
			<variables >
				<variable public='0' >
					<def class_type='variable' name='SCREEN_HEIGHT' type='u32' description='' isconst='1' isHidden='0' isinit='1' usrinit='480' setinit='480' />
				</variable>
				<variable public='0' >
					<def class_type='variable' name='SCREEN_WIDTH' type='u32' description='' isconst='1' isHidden='0' isinit='1' usrinit='320' setinit='320' />
				</variable>
				<variable public='0' >
					<def class_type='variable' name='TOTAL_CHUNKS' type='u32' description='' isconst='1' isHidden='0' isinit='1' usrinit='30' setinit='30' />
				</variable>
				<variable public='0' >
					<def class_type='variable' name='false' type='b1' description='' isconst='1' isHidden='0' isinit='1' usrinit='0' setinit='0' />
				</variable>
				<variable public='0' >
					<def class_type='variable' name='FIXED_SCALE' type='u32' description='' isconst='1' isHidden='0' isinit='1' usrinit='16777216' setinit='0x1000000' />
				</variable>
				<variable public='0' >
					<def class_type='variable' name='FRAC_BITS' type='u32' description='' isconst='1' isHidden='0' isinit='1' usrinit='24' setinit='24' />
				</variable>
				<variable public='0' >
					<def class_type='variable' name='colours' type='u16' description='' isconst='0' isHidden='0' isinit='0' usrinit='0' setinit='' >
						<array size='64' />
					</def>
				</variable>
				<variable public='0' >
					<def class_type='variable' name='MAX_ITERATIONS' type='u32' description='' isconst='1' isHidden='0' isinit='1' usrinit='64' setinit='64' />
				</variable>
				<variable public='0' >
					<def class_type='variable' name='frame_buufer' type='u8' description='' isconst='0' isHidden='0' isinit='0' usrinit='&quot;&quot;' setinit='' >
						<array size='153600' />
					</def>
				</variable>
				<variable public='0' >
					<def class_type='variable' name='true' type='b1' description='' isconst='1' isHidden='0' isinit='1' usrinit='1' setinit='1' />
				</variable>
			</variables>
			<macros >
				<macro >
					<flowline name='CopyFrame' description='' statediag='0' >
						<return name='Return' type='v0' description='' isconst='0' isHidden='0' isinit='0' usrinit='' setinit='' />
						<local name='i' type='u32' description='' isconst='0' isHidden='0' isinit='1' usrinit='0' setinit='0' />
						<local name='dat' type='u16' description='' isconst='0' isHidden='0' isinit='0' usrinit='0' setinit='' />
						<command class_type='call' title='Component Macro' component='gLCD_ILI9488' macro='Window' >
							<argument exp='0' />
							<argument exp='0' />
							<argument exp='SCREEN_WIDTH' />
							<argument exp='SCREEN_HEIGHT' />
						</command>
						<command class_type='loop' title='Loop' type='2' forvar='.i' exp='SCREEN_HEIGHT * SCREEN_WIDTH' for1='' for3='' >
							<flowline >
								<command class_type='calculation' title='Calculation' >
									<exp exp='.dat = frame_buufer[.i]' />
									<exp exp='.dat = colours[.dat]' />
								</command>
								<command class_type='native' title='Code' ccode='GPIO.out_w1ts = FCL_DAT;    //Write all the 1&apos;s
FCL_DAT = ~FCL_DAT;
GPIO.out_w1tc = FCL_DAT;       //Write all the 0&apos;s' language='C' />
								<command class_type='calculation' title='Calculation' >
									<exp exp='writePin = 0' />
									<exp exp='writePin = 1' />
								</command>
							</flowline>
						</command>
					</flowline>
				</macro>
				<macro >
					<flowline name='WorkerTask' description='' statediag='0' >
						<return name='Return' type='v0' description='' isconst='0' isHidden='0' isinit='0' usrinit='' setinit='' />
						<command class_type='loop' title='Loop' type='3' exp='1' for1='' for3='' >
							<flowline >
								<command class_type='native' title='Receive a chunk to calculate - pass to calculator - signal done' ccode='render_job_t job;
xQueueReceive(job_queue, &amp;job, portMAX_DELAY);
FCM_CalculateMandelbrot(&amp;job);
xSemaphoreGive(chunks_done_sem);' language='C' />
							</flowline>
						</command>
					</flowline>
				</macro>
				<macro >
					<flowline name='ReadTouch' description='' statediag='0' >
						<return name='Return' type='b1' description='' isconst='0' isHidden='0' isinit='0' usrinit='0' setinit='' />
						<param name='x' type='u32*' description='' isconst='0' isHidden='0' isinit='0' usrinit='0' setinit='' />
						<param name='y' type='u32*' description='' isconst='0' isHidden='0' isinit='0' usrinit='0' setinit='' />
						<local name='touch' type='b1' description='' isconst='0' isHidden='0' isinit='0' usrinit='0' setinit='' />
						<command class_type='call' title='Component Macro' component='FT6X06' macro='SampleSensor' >
							<return exp='.touch' />
						</command>
						<command class_type='decision' title='Decision' exp='.touch' swap='0' >
							<flowline >
								<command class_type='call' title='Component Macro' component='FT6X06' macro='ReadCoord' >
									<return exp='.x' />
									<argument exp='0' />
									<argument exp='0' />
								</command>
								<command class_type='call' title='Component Macro' component='FT6X06' macro='ReadCoord' >
									<return exp='.y' />
									<argument exp='1' />
									<argument exp='0' />
								</command>
								<command class_type='call' title='Component Macro' component='UART1' macro='SendString' >
									<argument exp='&quot;Touch at (&quot;' />
								</command>
								<command class_type='call' title='Component Macro' component='UART1' macro='SendNumber' >
									<argument exp='.x' />
								</command>
								<command class_type='call' title='Component Macro' component='UART1' macro='SendString' >
									<argument exp='&quot;, &quot;' />
								</command>
								<command class_type='call' title='Component Macro' component='UART1' macro='SendNumber' >
									<argument exp='.y' />
								</command>
								<command class_type='call' title='Component Macro' component='UART1' macro='SendString' >
									<argument exp='&quot;)\r\n&quot;' />
								</command>
							</flowline>
							<flowline />
						</command>
						<command class_type='calculation' title='Calculation' >
							<exp exp='.Return = .touch' />
						</command>
					</flowline>
				</macro>
				<macro >
					<flowline name='CalculateMandelbrot' description='' statediag='0' >
						<return name='Return' type='v0' description='' isconst='0' isHidden='0' isinit='0' usrinit='' setinit='' />
						<param name='job' type='u32' description='A pointer to a job description struct (see supplementary code)' isconst='0' isHidden='0' isinit='0' usrinit='0' setinit='' />
						<local name='x_min' type='s32' description='' isconst='0' isHidden='0' isinit='0' usrinit='0' setinit='' />
						<local name='x_max' type='s32' description='' isconst='0' isHidden='0' isinit='0' usrinit='0' setinit='' />
						<local name='y_min' type='s32' description='' isconst='0' isHidden='0' isinit='0' usrinit='0' setinit='' />
						<local name='y_max' type='s32' description='' isconst='0' isHidden='0' isinit='0' usrinit='0' setinit='' />
						<local name='c_imag' type='s32' description='' isconst='0' isHidden='0' isinit='0' usrinit='0' setinit='' />
						<local name='dx' type='s32' description='' isconst='0' isHidden='0' isinit='0' usrinit='0' setinit='' />
						<local name='dy' type='s32' description='' isconst='0' isHidden='0' isinit='0' usrinit='0' setinit='' />
						<local name='x' type='u32' description='' isconst='0' isHidden='0' isinit='0' usrinit='0' setinit='' />
						<local name='y' type='u32' description='' isconst='0' isHidden='0' isinit='0' usrinit='0' setinit='' />
						<local name='z_real' type='s32' description='' isconst='0' isHidden='0' isinit='0' usrinit='0' setinit='' />
						<local name='z_imag' type='s32' description='' isconst='0' isHidden='0' isinit='0' usrinit='0' setinit='' />
						<local name='iter' type='u32' description='' isconst='0' isHidden='0' isinit='0' usrinit='0' setinit='' />
						<local name='start' type='u32' description='' isconst='0' isHidden='0' isinit='0' usrinit='0' setinit='' />
						<local name='end' type='u32' description='' isconst='0' isHidden='0' isinit='0' usrinit='0' setinit='' />
						<local name='c_real' type='s32' description='' isconst='0' isHidden='0' isinit='0' usrinit='0' setinit='' />
						<local name='z_real_sq' type='u32' description='' isconst='0' isHidden='0' isinit='0' usrinit='0' setinit='' />
						<local name='z_imag_sq' type='s32' description='' isconst='0' isHidden='0' isinit='0' usrinit='0' setinit='' />
						<local name='two_z_real_imag' type='s32' description='' isconst='0' isHidden='0' isinit='0' usrinit='0' setinit='' />
						<command class_type='native' title='Copy the region data from the queue' ccode='render_job_t *job = (render_job_t *)FCL_JOB;
FCL_X_MIN = job-&gt;x_min;
FCL_X_MAX = job-&gt;x_max;
FCL_Y_MIN = job-&gt;y_min;
FCL_Y_MAX = job-&gt;y_max;
FCL_START = job-&gt;start_row;
FCL_END = job-&gt;end_row;' language='C' />
						<command class_type='calculation' title='Get the delta values ' >
							<exp exp='.dx = (.x_max - .x_min) / SCREEN_WIDTH' />
							<exp exp='.dy = (.y_max - .y_min) / SCREEN_HEIGHT' />
							<exp exp='.y = .start' />
						</command>
						<command class_type='loop' title='Loop' type='0' exp='.y &lt; .end' for1='' for3='' >
							<flowline >
								<command class_type='calculation' title='Calculation' >
									<exp exp='.c_real = .y_min + (.y * .dy)' />
								</command>
								<command class_type='loop' title='Loop' type='2' forvar='.x' exp='SCREEN_WIDTH' for1='' for3='' >
									<flowline >
										<command class_type='calculation' title='Calculation' >
											<exp exp='.c_imag = .x_min + (.x * .dx)' />
											<exp exp='.z_real = 0' />
											<exp exp='.z_imag = 0' />
											<exp exp='.iter = 0' />
										</command>
										<command class_type='loop' title='Loop' type='0' exp='.iter &lt; MAX_ITERATIONS' for1='' for3='' >
											<flowline >
												<command class_type='native' title='Use 64 bit maths' ccode='FCL_Z_REAL_SQ = ((int64_t)FCL_Z_REAL * FCL_Z_REAL) &gt;&gt; FCV_FRAC_BITS;
FCL_Z_IMAG_SQ = ((int64_t)FCL_Z_IMAG * FCL_Z_IMAG) &gt;&gt; FCV_FRAC_BITS;' language='C' />
												<command class_type='decision' title='Escape if going to infinity' textarea='36,-7,36,-7' exp='(.z_real_sq + .z_imag_sq) &gt; (4 * FIXED_SCALE)' swap='0' >
													<flowline >
														<command class_type='goto' title='Break' labelid='0' labelname='' labeltype='1' />
													</flowline>
													<flowline />
												</command>
												<command class_type='native' title='64 bit maths' ccode='FCL_TWO_Z_REAL_IMAG = (((int64_t)FCL_Z_REAL * FCL_Z_IMAG) &gt;&gt; FCV_FRAC_BITS) * 2;
' language='C' />
												<command class_type='calculation' title='Calculation' >
													<exp exp='.z_real = .z_real_sq - .z_imag_sq + .c_real' />
													<exp exp='.z_imag = .two_z_real_imag + .c_imag' />
													<exp exp='.iter += 1' />
												</command>
											</flowline>
										</command>
										<command class_type='calculation' title='Write the number of iterations to the frame_buffer' >
											<exp exp='frame_buufer[(.y * SCREEN_WIDTH) + .x] = .iter' />
										</command>
									</flowline>
								</command>
								<command class_type='calculation' title='Calculation' >
									<exp exp='.y = .y + 1' />
								</command>
							</flowline>
						</command>
					</flowline>
				</macro>
				<macro >
					<flowline name='Main' description='' statediag='0' >
						<return name='Return' type='v0' description='' isconst='0' isHidden='0' isinit='0' usrinit='' setinit='' />
						<local name='centre_x' type='f32' description='' isconst='0' isHidden='0' isinit='1' usrinit='0.0' setinit='0.0' />
						<local name='centre_y' type='f32' description='' isconst='0' isHidden='0' isinit='1' usrinit='-0.75' setinit='-0.75' />
						<local name='view_width' type='f32' description='' isconst='0' isHidden='0' isinit='1' usrinit='2.400000095367431640625' setinit='2.4' />
						<local name='view_height' type='f32' description='' isconst='0' isHidden='0' isinit='1' usrinit='3.599999904632568359375' setinit='3.6' />
						<local name='zoom_factor' type='f32' description='' isconst='0' isHidden='0' isinit='1' usrinit='0.949999988079071044921875' setinit='0.95' />
						<local name='x_min_f' type='f32' description='' isconst='0' isHidden='0' isinit='0' usrinit='0.0' setinit='' />
						<local name='x_max_f' type='f32' description='' isconst='0' isHidden='0' isinit='0' usrinit='0.0' setinit='' />
						<local name='y_min_f' type='f32' description='' isconst='0' isHidden='0' isinit='0' usrinit='0.0' setinit='' />
						<local name='y_max_f' type='f32' description='' isconst='0' isHidden='0' isinit='0' usrinit='0.0' setinit='' />
						<local name='x_min' type='s32' description='' isconst='0' isHidden='0' isinit='0' usrinit='0' setinit='' />
						<local name='x_max' type='s32' description='' isconst='0' isHidden='0' isinit='0' usrinit='0' setinit='' />
						<local name='y_min' type='s32' description='' isconst='0' isHidden='0' isinit='0' usrinit='0' setinit='' />
						<local name='y_max' type='s32' description='' isconst='0' isHidden='0' isinit='0' usrinit='0' setinit='' />
						<local name='i' type='u32' description='' isconst='0' isHidden='0' isinit='1' usrinit='0' setinit='0' />
						<local name='x_touch' type='u32' description='' isconst='0' isHidden='0' isinit='0' usrinit='0' setinit='' />
						<local name='y_touch' type='u32' description='' isconst='0' isHidden='0' isinit='0' usrinit='0' setinit='' />
						<local name='touch' type='b1' description='' isconst='0' isHidden='0' isinit='0' usrinit='0' setinit='' />
						<local name='RATIO_Y' type='f32' description='' isconst='0' isHidden='0' isinit='1' usrinit='0.0' setinit='0' />
						<local name='ratio_x' type='f32' description='' isconst='0' isHidden='0' isinit='1' usrinit='0.0' setinit='0' />
						<local name='time' type='u32' description='' isconst='0' isHidden='0' isinit='0' usrinit='0' setinit='' />
						<command class_type='call' title='User Macro' macro='Initialise' />
						<command class_type='loop' title='Loop' type='3' exp='1' for1='' for3='' >
							<flowline >
								<command class_type='call' title='Component Macro' component='Timer1' macro='StartCounter' >
									<argument exp='true' />
								</command>
								<command class_type='calculation' title='Calculate area to work with and convert to fixed point' >
									<exp exp='.x_min_f = .centre_x - (.view_width / 2.0)' />
									<exp exp='.x_max_f = .centre_x + (.view_width / 2.0)' />
									<exp exp='.y_min_f = .centre_y - (.view_height / 2.0)' />
									<exp exp='.y_max_f = .centre_y + (.view_height / 2.0)' />
									<exp exp='' />
									<exp exp='// convert to fixed point' />
									<exp exp='' />
									<exp exp='.x_min = .x_min_f * FIXED_SCALE' />
									<exp exp='.x_max = .x_max_f * FIXED_SCALE' />
									<exp exp='.y_min = .y_min_f * FIXED_SCALE' />
									<exp exp='.y_max = .y_max_f * FIXED_SCALE' />
								</command>
								<command class_type='loop' title='Feed work segments into queue' type='2' forvar='.i' exp='TOTAL_CHUNKS' for1='' for3='' >
									<flowline >
										<command class_type='native' title='Copy the detail to the tasks' textarea='36,-5,36,-5' ccode='render_job_t job = {
   .start_row = FCL_I * FCV_SCREEN_HEIGHT / FCV_TOTAL_CHUNKS,
   .end_row = (FCL_I + 1) * FCV_SCREEN_HEIGHT / FCV_TOTAL_CHUNKS, 
   .x_min = FCL_X_MIN,
   .x_max = FCL_X_MAX,
   .y_min = FCL_Y_MIN,
   .y_max = FCL_Y_MAX
};
xQueueSend(job_queue, &amp;job, 0);' language='C' />
									</flowline>
								</command>
								<command class_type='loop' title='Wait on all the chunks being completed' type='2' forvar='.i' exp='TOTAL_CHUNKS' for1='' for3='' >
									<flowline >
										<command class_type='native' title='Code' ccode='xSemaphoreTake(chunks_done_sem, portMAX_DELAY);' language='C' />
									</flowline>
								</command>
								<command class_type='call' title='Component Macro' component='Timer1' macro='GetCountMilliseconds' >
									<return exp='.time' />
								</command>
								<command class_type='call' title='Component Macro' component='UART1' macro='SendString' >
									<argument exp='&quot;Completed in &quot;' />
								</command>
								<command class_type='call' title='Component Macro' component='UART1' macro='SendNumber' >
									<argument exp='.time' />
								</command>
								<command class_type='call' title='Component Macro' component='UART1' macro='SendString' >
									<argument exp='&quot;ms\r\n&quot;' />
								</command>
								<command class_type='call' title='Component Macro' component='Timer1' macro='StopCounter' />
								<command class_type='call' title='Draw mandelbrot to screen' macro='CopyFrame' />
								<command class_type='loop' title='Wait on a touch' type='1' exp='.touch' start='0' for1='' for3='' >
									<flowline >
										<command class_type='call' title='User Macro' macro='ReadTouch' >
											<return exp='.touch' />
											<argument exp='.x_touch' />
											<argument exp='.y_touch' />
										</command>
										<command class_type='delay' title='Delay' textarea='36,6,54,6' exp='10' type='1' />
									</flowline>
								</command>
								<command class_type='calculation' title='Calculate new centre etc for zoom' >
									<exp exp='.ratio_x = .x_touch / 320.0' />
									<exp exp='.ratio_y = .y_touch / 480.0' />
									<exp exp='.centre_x = .x_min_f + .ratio_x * .view_width' />
									<exp exp='.centre_y = .y_min_f + .RATIO_Y * .view_height' />
									<exp exp='.view_width = .view_width * .zoom_factor' />
									<exp exp='.view_height = .view_height * .zoom_factor' />
								</command>
							</flowline>
						</command>
					</flowline>
				</macro>
				<macro >
					<flowline name='Initialise' description='' statediag='0' >
						<return name='Return' type='v0' description='' isconst='0' isHidden='0' isinit='0' usrinit='' setinit='' />
						<local name='i' type='u16' description='' isconst='0' isHidden='0' isinit='0' usrinit='0' setinit='' />
						<local name='r' type='u16' description='' isconst='0' isHidden='0' isinit='0' usrinit='0' setinit='' />
						<local name='g' type='u16' description='' isconst='0' isHidden='0' isinit='0' usrinit='0' setinit='' />
						<local name='b' type='u16' description='' isconst='0' isHidden='0' isinit='0' usrinit='0' setinit='' />
						<local name='raw' type='u16' description='' isconst='0' isHidden='0' isinit='0' usrinit='0' setinit='' />
						<command class_type='call' title='Component Macro' component='gLCD_ILI9488' macro='Initialise' />
						<command class_type='call' title='Component Macro' component='FT6X06' macro='Initialise' />
						<command class_type='native' title='Code' ccode='// Create a queue large enough to hold all chunks for a single frame
job_queue = xQueueCreate(FCV_TOTAL_CHUNKS, sizeof(render_job_t));
    
// Create a counting semaphore with a max count equal to total chunks
chunks_done_sem = xSemaphoreCreateCounting(FCV_TOTAL_CHUNKS, 0);

// Spawn the Thread Pool
xTaskCreatePinnedToCore(FCM_WorkerTask, &quot;Worker_0&quot;, 4096, (void*)0, 5, NULL, 0);
xTaskCreatePinnedToCore(FCM_WorkerTask, &quot;Worker_1&quot;, 4096, (void*)1, 5, NULL, 1);' language='C' />
						<command class_type='call' title='Component Macro' component='UART1' macro='Initialise' />
						<command class_type='call' title='Component Macro' component='UART1' macro='SendString' >
							<argument exp='&quot;Fixed point Mandelbrot\r\n\n\n\n&quot;' />
						</command>
						<command class_type='loop' title='Loop' type='2' forvar='.i' exp='MAX_ITERATIONS' for1='' for3='' >
							<flowline >
								<command class_type='calculation' title='Calculation' >
									<exp exp='.r = (.i * 255) / MAX_ITERATIONS' />
									<exp exp='.g = (.i * 120) / MAX_ITERATIONS' />
									<exp exp='.b = (.i * 60) / MAX_ITERATIONS //' />
									<exp exp='.raw = (((.r &amp; 0xF8) &lt;&lt; 8) | ((.g &amp; 0xFC) &lt;&lt; 3) | (.b &gt;&gt; 3))' />
									<exp exp='colours[.i] = (.raw &gt;&gt; 8) | (.raw &lt;&lt; 8)' />
									<exp exp='' />
								</command>
							</flowline>
						</command>
					</flowline>
				</macro>
			</macros>
			<component class_type='ref' guid='c73616d1-7ad0-45d9-aada-69ccfa4c5efc' vmin='0' vmaj='3' codename='UART1' panelId='0' x='123' y='-124' z='0' xsz='25.1778' ysz='25.1392' zsz='25' xang='0' yang='0' zang='0' xquat='0' yquat='0' zquat='0' wquat='1' visible='1' scadavisible='1' interactive='1' 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='cal_uart::CHANNEL' data='1' />
					<value target='cal_uart::BAUD_LIST' data='009' />
					<value target='cal_uart::BAUD' data='115200' />
					<value target='cal_uart::DBITS' data='008' />
					<value target='cal_uart::RETURN' data='001' />
					<value target='cal_uart::ECHO' data='000' />
					<value target='cal_uart::UseTX' data='1' />
					<value target='cal_uart::TX' data='$PORTB.11' />
					<value target='cal_uart::OutputPins' data='000' />
					<value target='cal_uart::TXAlt' data='0' />
					<value target='cal_uart::UseRX' data='1' />
					<value target='cal_uart::RX' data='$PORTB.12' />
					<value target='cal_uart::InputPins' data='001' />
					<value target='cal_uart::RXAlt' data='0' />
					<value target='cal_uart::FLOWEN' data='000' />
					<value target='cal_uart::RTS' data='$PORTB.2' />
					<value target='cal_uart::CTS' data='$PORTB.1' />
					<value target='label' data='UART' />
					<value target='cal_uart::ScopeTraces' data='0' />
					<value target='cal_uart::ConsoleData' data='1' />
					<value target='cal_uart::ConsoleFormat' data='000' />
					<value target='cal_uart::ConsoleColumns' data='64' />
					<value target='cal_uart::DataSource' data='000' />
					<value target='cal_uart::com_port' data='000' />
					<value target='cal_uart::Injector' data='000' />
					<value target='cal_uart::APIUseDDR' data='' />
					<value target='cal_uart::APIDDRPin' data='' />
					<value target='cal_uart::APIDDRRXState' data='' />
					<value target='cal_uart::APIUseFC' data='' />
					<value target='cal_uart::APICTSPin' data='' />
					<value target='cal_uart::APIRTSPin' data='' />
				</values>
				<events />
				<apis />
				<variables />
				<macros />
			</component>
			<component class_type='ref' guid='cbfb3c21-f13d-488d-9b90-400c8d4fc605' vmin='0' vmaj='24' codename='DisplayManager1' panelId='0' x='123' y='-115.02' z='1' xsz='25.0001' ysz='25.1966' zsz='25' xang='0' yang='0' zang='0' xquat='0' yquat='0' zquat='0' wquat='1' visible='1' scadavisible='1' interactive='1' 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='GLCDComponent' data='7225' />
					<value target='LibraryComponent1::OutputIcon::LinkTo' data='1' />
					<value target='LibraryComponent1::InputIcon::LinkTo' data='000' />
					<value target='RamUsage' data='560' />
					<value target='TextAlignOffset' data='4' />
					<value target='BackgroundColour' data='8388626' />
					<value target='DisplayType' data='0' />
					<value target='LibraryType' data='0' />
					<value target='IsSim' data='0' />
					<value target='PostInit' data='1' />
					<value target='EB3_Display' data='' />
					<value target='EB3_WebMirror' data='' />
					<value target='MaxObjects' data='20' />
					<value target='ObjThemeCount' data='0' />
					<value target='Obj_Fg_0' data='0' />
					<value target='Obj_Bg_0' data='16777215' />
					<value target='Obj_Fg_1' data='16711680' />
					<value target='Obj_Bg_1' data='16776960' />
					<value target='Obj_Fg_2' data='65280' />
					<value target='Obj_Bg_2' data='0' />
					<value target='Obj_Fg_3' data='16711680' />
					<value target='Obj_Bg_3' data='65535' />
					<value target='Obj_Fg_4' data='16777215' />
					<value target='Obj_Bg_4' data='0' />
					<value target='Obj_Fg_5' data='' />
					<value target='Obj_Bg_5' data='' />
					<value target='Obj_Fg_6' data='' />
					<value target='Obj_Bg_6' data='' />
					<value target='Obj_Fg_7' data='' />
					<value target='Obj_Bg_7' data='' />
					<value target='MaxWidgets' data='20' />
					<value target='TouchRepeatRate' data='10' />
					<value target='WidgetThemeCount' data='0' />
					<value target='Btn_Fg_0' data='' />
					<value target='Btn_Bg_0' data='16777215' />
					<value target='Btn_Hl_0' data='5921370' />
					<value target='Btn_Ll_0' data='9868950' />
					<value target='Btn_Fg_1' data='16711680' />
					<value target='Btn_Bg_1' data='16776960' />
					<value target='Btn_Hl_1' data='16729600' />
					<value target='Btn_Ll_1' data='16744448' />
					<value target='Btn_Fg_2' data='16711680' />
					<value target='Btn_Bg_2' data='65535' />
					<value target='Btn_Hl_2' data='16711935' />
					<value target='Btn_Ll_2' data='65280' />
					<value target='Btn_Fg_3' data='255' />
					<value target='Btn_Bg_3' data='16776960' />
					<value target='Btn_Hl_3' data='65535' />
					<value target='Btn_Ll_3' data='16711680' />
					<value target='Btn_Fg_4' data='0' />
					<value target='Btn_Bg_4' data='16776960' />
					<value target='Btn_Hl_4' data='255' />
					<value target='Btn_Ll_4' data='49407' />
					<value target='Btn_Fg_5' data='' />
					<value target='Btn_Bg_5' data='' />
					<value target='Btn_Hl_5' data='' />
					<value target='Btn_Ll_5' data='' />
					<value target='Btn_Fg_6' data='' />
					<value target='Btn_Bg_6' data='' />
					<value target='Btn_Hl_6' data='' />
					<value target='Btn_Ll_6' data='' />
					<value target='Btn_Fg_7' data='' />
					<value target='Btn_Bg_7' data='' />
					<value target='Btn_Hl_7' data='' />
					<value target='Btn_Ll_7' data='' />
					<value target='DC_Enabled' data='1' />
					<value target='EnableCallbacks' data='1' />
					<value target='Orientation' data='000' />
					<value target='SceneCount' data='1' />
					<value target='Scene0' data='1' />
					<value target='Layout0' data='67,18,0,128,' />
					<value target='Count0' data='4' />
					<value target='Callback0' data='' />
					<value target='CBCount0' data='0' />
					<value target='Scene1' data='2' />
					<value target='Layout1' data='' />
					<value target='Count1' data='0' />
					<value target='Callback1' data='' />
					<value target='CBCount1' data='' />
					<value target='Scene2' data='3' />
					<value target='Layout2' data='' />
					<value target='Count2' data='' />
					<value target='Callback2' data='' />
					<value target='CBCount2' data='' />
					<value target='Scene3' data='4' />
					<value target='Layout3' data='' />
					<value target='Count3' data='' />
					<value target='Callback3' data='' />
					<value target='CBCount3' data='' />
					<value target='Scene4' data='5' />
					<value target='Layout4' data='' />
					<value target='Count4' data='' />
					<value target='Callback4' data='' />
					<value target='CBCount4' data='' />
					<value target='Scene5' data='6' />
					<value target='Layout5' data='' />
					<value target='Count5' data='' />
					<value target='Callback5' data='' />
					<value target='CBCount5' data='' />
					<value target='Scene6' data='7' />
					<value target='Layout6' data='' />
					<value target='Count6' data='' />
					<value target='Callback6' data='' />
					<value target='CBCount6' data='' />
					<value target='Scene7' data='8' />
					<value target='Layout7' data='' />
					<value target='Count7' data='' />
					<value target='Callback7' data='' />
					<value target='CBCount7' data='' />
					<value target='Scene8' data='9' />
					<value target='Layout8' data='' />
					<value target='Count8' data='' />
					<value target='Callback8' data='' />
					<value target='CBCount8' data='' />
					<value target='Scene9' data='10' />
					<value target='Layout9' data='' />
					<value target='Count9' data='' />
					<value target='Callback9' data='' />
					<value target='CBCount9' data='' />
					<value target='Scene10' data='11' />
					<value target='Layout10' data='' />
					<value target='Count10' data='' />
					<value target='Callback10' data='' />
					<value target='CBCount10' data='' />
					<value target='Scene11' data='12' />
					<value target='Layout11' data='' />
					<value target='Count11' data='' />
					<value target='Callback11' data='' />
					<value target='CBCount11' data='' />
					<value target='Scene12' data='13' />
					<value target='Layout12' data='' />
					<value target='Count12' data='' />
					<value target='Callback12' data='' />
					<value target='CBCount12' data='' />
					<value target='Scene13' data='14' />
					<value target='Layout13' data='' />
					<value target='Count13' data='' />
					<value target='Callback13' data='' />
					<value target='CBCount13' data='' />
					<value target='Scene14' data='15' />
					<value target='Layout14' data='' />
					<value target='Count14' data='' />
					<value target='Callback14' data='' />
					<value target='CBCount14' data='' />
					<value target='Scene15' data='16' />
					<value target='Layout15' data='' />
					<value target='Count15' data='' />
					<value target='Callback15' data='' />
					<value target='CBCount15' data='' />
					<value target='Scene16' data='17' />
					<value target='Layout16' data='' />
					<value target='Count16' data='' />
					<value target='Callback16' data='' />
					<value target='CBCount16' data='' />
					<value target='Scene17' data='18' />
					<value target='Layout17' data='' />
					<value target='Count17' data='' />
					<value target='Callback17' data='' />
					<value target='CBCount17' data='' />
					<value target='Scene18' data='19' />
					<value target='Layout18' data='' />
					<value target='Count18' data='' />
					<value target='Callback18' data='' />
					<value target='CBCount18' data='' />
					<value target='Scene19' data='20' />
					<value target='Layout19' data='' />
					<value target='Count19' data='' />
					<value target='Callback19' data='' />
					<value target='CBCount19' data='' />
					<value target='Scene20' data='21' />
					<value target='Layout20' data='' />
					<value target='Count20' data='' />
					<value target='Callback20' data='' />
					<value target='CBCount20' data='' />
					<value target='Scene21' data='22' />
					<value target='Layout21' data='' />
					<value target='Count21' data='' />
					<value target='Callback21' data='' />
					<value target='CBCount21' data='' />
					<value target='Scene22' data='23' />
					<value target='Layout22' data='' />
					<value target='Count22' data='' />
					<value target='Callback22' data='' />
					<value target='CBCount22' data='' />
					<value target='Scene23' data='24' />
					<value target='Layout23' data='' />
					<value target='Count23' data='' />
					<value target='Callback23' data='' />
					<value target='CBCount23' data='' />
					<value target='Scene24' data='25' />
					<value target='Layout24' data='' />
					<value target='Count24' data='' />
					<value target='Callback24' data='' />
					<value target='CBCount24' data='' />
					<value target='Scene25' data='26' />
					<value target='Layout25' data='' />
					<value target='Count25' data='' />
					<value target='Callback25' data='' />
					<value target='CBCount25' data='' />
					<value target='Scene26' data='' />
					<value target='Layout26' data='27' />
					<value target='Count26' data='' />
					<value target='Callback26' data='' />
					<value target='CBCount26' data='' />
					<value target='Scene27' data='28' />
					<value target='Layout27' data='' />
					<value target='Count27' data='' />
					<value target='Callback27' data='' />
					<value target='CBCount27' data='' />
					<value target='Scene28' data='29' />
					<value target='Layout28' data='' />
					<value target='Count28' data='' />
					<value target='Callback28' data='' />
					<value target='CBCount28' data='' />
					<value target='Scene29' data='30' />
					<value target='Layout29' data='' />
					<value target='Count29' data='' />
					<value target='Callback29' data='' />
					<value target='CBCount29' data='' />
					<value target='XPixels' data='320' />
					<value target='YPixels' data='480' />
				</values>
				<events />
				<apis />
				<variables />
				<macros />
			</component>
			<component class_type='ref' guid='b5148d9e-884c-488e-8536-741e7fc4306c' vmin='0' vmaj='23' codename='gLCD_ILI9488' panelId='0' x='119' y='-126' z='2' xsz='24.9663' ysz='24.9399' zsz='25' xang='0' yang='0' zang='0' xquat='0' yquat='0' zquat='0' wquat='1' visible='1' scadavisible='1' interactive='1' 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='pixel_width' data='320' />
					<value target='pixel_height' data='480' />
					<value target='FlipX' data='1' />
					<value target='FlipY' data='0' />
					<value target='monochrome' data='0' />
					<value target='foreground_colour' data='0' />
					<value target='background_colour' data='16734144' />
					<value target='BGCOL' data='49855' />
					<value target='FGCOL' data='0' />
					<value target='InvertColour' data='0' />
					<value target='colour_bit_depth' data='16' />
					<value target='red_bit_depth' data='5' />
					<value target='green_bit_depth' data='6' />
					<value target='blue_bit_depth' data='5' />
					<value target='ConnType' data='002' />
					<value target='dataout_pin' data='$PORTB.0' />
					<value target='clock_pin' data='$PORTB.1' />
					<value target='wr_pin' data='$PORTA.18' />
					<value target='rd_pin' data='$PORTA.17' />
					<value target='UseCS' data='0' />
					<value target='ToggleCS' data='0' />
					<value target='chip_sel_pin' data='$PORTC.3' />
					<value target='dc_pin' data='$PORTA.16' />
					<value target='UsePorts' data='1' />
					<value target='data0' data='$PORTA.0' />
					<value target='data1' data='$PORTA.1' />
					<value target='data2' data='$PORTA.2' />
					<value target='data3' data='$PORTA.3' />
					<value target='data4' data='$PORTA.4' />
					<value target='data5' data='$PORTA.5' />
					<value target='data6' data='$PORTA.6' />
					<value target='data7' data='$PORTA.7' />
					<value target='data8' data='$PORTA.8' />
					<value target='data9' data='$PORTA.9' />
					<value target='data10' data='$PORTA.10' />
					<value target='data11' data='$PORTA.11' />
					<value target='data12' data='$PORTA.12' />
					<value target='data13' data='$PORTA.13' />
					<value target='data14' data='$PORTA.14' />
					<value target='data15' data='$PORTA.15' />
					<value target='dataport_low' data='$PORTA0' />
					<value target='dataport_high' data='$PORTA1' />
					<value target='UseReset' data='1' />
					<value target='reset_pin' data='$PORTA.19' />
					<value target='UseBacklight' data='1' />
					<value target='led_pin' data='$PORTA.21' />
					<value target='ESP_OPT' data='1' />
					<value target='Base_GLCD::FontCount' data='001' />
					<value target='Base_GLCD::ExternalFonts' data='0' />
					<value target='Base_GLCD::commsicon2::LinkTo' data='0' />
					<value target='Base_GLCD::UseFileIndex' data='0' />
					<value target='Base_GLCD::FileIndex' data='0' />
					<value target='Base_GLCD::UseFilePath' data='0' />
					<value target='Base_GLCD::FontPath' data='Fonts\' />
					<value target='Base_GLCD::gLCD_Font1::Font' data='000' />
					<value target='Base_GLCD::gLCD_Font1::CustomFontFile' data='C:\Users\BenR\Desktop\customfont.h.c' />
					<value target='Base_GLCD::gLCD_Font1::BytesRequired' data='570' />
					<value target='Base_GLCD::gLCD_Font1::FontSpace' data='001' />
					<value target='Base_GLCD::gLCD_Font1::SpaceWidth' data='5' />
					<value target='Base_GLCD::gLCD_Font2::Font' data='019' />
					<value target='Base_GLCD::gLCD_Font2::CustomFontFile' data='C:\Users\BenR\Desktop\customfont.h.c' />
					<value target='Base_GLCD::gLCD_Font2::BytesRequired' data='0' />
					<value target='Base_GLCD::gLCD_Font2::FontSpace' data='001' />
					<value target='Base_GLCD::gLCD_Font2::SpaceWidth' data='004' />
					<value target='Base_GLCD::gLCD_Font3::Font' data='002' />
					<value target='Base_GLCD::gLCD_Font3::CustomFontFile' data='C:\Users\BenR\Desktop\customfont.h.c' />
					<value target='Base_GLCD::gLCD_Font3::BytesRequired' data='1317' />
					<value target='Base_GLCD::gLCD_Font3::FontSpace' data='001' />
					<value target='Base_GLCD::gLCD_Font3::SpaceWidth' data='004' />
					<value target='Base_GLCD::gLCD_Font4::Font' data='015' />
					<value target='Base_GLCD::gLCD_Font4::CustomFontFile' data='C:\Users\BenR\Desktop\customfont.h.c' />
					<value target='Base_GLCD::gLCD_Font4::BytesRequired' data='1341' />
					<value target='Base_GLCD::gLCD_Font4::FontSpace' data='001' />
					<value target='Base_GLCD::gLCD_Font4::SpaceWidth' data='004' />
					<value target='Base_GLCD::gLCD_Font5::Font' data='008' />
					<value target='Base_GLCD::gLCD_Font5::CustomFontFile' data='' />
					<value target='Base_GLCD::gLCD_Font5::BytesRequired' data='1115' />
					<value target='Base_GLCD::gLCD_Font5::FontSpace' data='001' />
					<value target='Base_GLCD::gLCD_Font5::SpaceWidth' data='004' />
					<value target='Base_GLCD::gLCD_Font6::Font' data='010' />
					<value target='Base_GLCD::gLCD_Font6::CustomFontFile' data='' />
					<value target='Base_GLCD::gLCD_Font6::BytesRequired' data='1169' />
					<value target='Base_GLCD::gLCD_Font6::FontSpace' data='001' />
					<value target='Base_GLCD::gLCD_Font6::SpaceWidth' data='004' />
					<value target='Base_GLCD::gLCD_Font7::Font' data='021' />
					<value target='Base_GLCD::gLCD_Font7::CustomFontFile' data='' />
					<value target='Base_GLCD::gLCD_Font7::BytesRequired' data='8359' />
					<value target='Base_GLCD::gLCD_Font7::FontSpace' data='001' />
					<value target='Base_GLCD::gLCD_Font7::SpaceWidth' data='004' />
					<value target='Base_GLCD::gLCD_Font8::Font' data='003' />
					<value target='Base_GLCD::gLCD_Font8::CustomFontFile' data='' />
					<value target='Base_GLCD::gLCD_Font8::BytesRequired' data='1105' />
					<value target='Base_GLCD::gLCD_Font8::FontSpace' data='001' />
					<value target='Base_GLCD::gLCD_Font8::SpaceWidth' data='004' />
					<value target='Base_GLCD::ComponentLabel' data='000' />
					<value target='Base_GLCD::GdiText1::sText' data='gLCD_ILI9488' />
					<value target='Base_GLCD::GdiText1::dScale' data='1.000000' />
					<value target='DisplayMethod' data='000' />
					<value target='Base_GLCD::PhysicalOrientation' data='000' />
					<value target='Base_GLCD::ExportBinFonts' data='0' />
				</values>
				<events />
				<apis />
				<variables />
				<macros />
			</component>
			<component class_type='ref' guid='90c9f255-b526-4288-b0b6-26736e6db2e2' vmin='0' vmaj='2' codename='FT6X06' panelId='0' x='123' y='-116' z='3' xsz='25.1778' ysz='25' zsz='25' xang='0' yang='0' zang='0' xquat='0' yquat='0' zquat='0' wquat='1' visible='1' scadavisible='1' interactive='1' 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='Component' data='' />
					<value target='LibraryComponent1::InputIcon::LinkTo' data='0' />
					<value target='cal_i2c1::CHANNEL' data='001' />
					<value target='cal_i2c1::BAUD_LIST' data='002' />
					<value target='cal_i2c1::BAUD' data='400000' />
					<value target='cal_i2c1::StopDel' data='0' />
					<value target='cal_i2c1::SDA' data='$PORTB.16' />
					<value target='cal_i2c1::SDAPins' data='048' />
					<value target='cal_i2c1::SCL' data='$PORTB.15' />
					<value target='cal_i2c1::SCLPins' data='047' />
					<value target='ApplyScaling' data='0' />
					<value target='XResolution' data='320' />
					<value target='YResolution' data='480' />
					<value target='Xpix' data='320' />
					<value target='Ypix' data='480' />
					<value target='FlipX' data='0' />
					<value target='FlipY' data='0' />
					<value target='label' data='FT6X06' />
					<value target='EnableInterrupt' data='0' />
					<value target='InterruptMacro' data='' />
					<value target='SimComms' data='0' />
					<value target='cal_i2c1::ScopeTraces' data='0' />
					<value target='cal_i2c1::ConsoleData' data='0' />
					<value target='cal_i2c1::Injector' data='000' />
				</values>
				<events />
				<apis />
				<variables />
				<macros />
			</component>
			<component class_type='ref' guid='24ad2718-c70b-4088-aeda-3949dfdba740' vmin='0' vmaj='14' codename='Timer1' panelId='0' x='115.5' y='-116' z='5' xsz='25.18' ysz='25' zsz='25' xang='0' yang='0' zang='0' xquat='0' yquat='0' zquat='0' wquat='1' visible='1' scadavisible='1' interactive='1' 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='Timer' data='000' />
					<value target='Prescaler' data='000' />
					<value target='Postscaler' data='0' />
					<value target='Resolution' data='1000' />
					<value target='BitDepth' data='32' />
					<value target='InstructionRate' data='1000000' />
					<value target='InstructionTime' data='0.000001' />
					<value target='RolloverFreq' data='1.000000' />
					<value target='RolloverTime' data='0.000001' />
					<value target='RegHighUsed' data='0' />
					<value target='Instance' data='1' />
					<value target='DeviceBits' data='32' />
					<value target='CountRegLow' data='TMR0' />
					<value target='CountRegHigh' data='' />
					<value target='EnableCode' data='FC_CAL_Timer_Init(0, FC_CAL_Timer_Period * FC_CAL_Timer_Multiplier, FC_CAL_Timer_0_ISR); ' />
					<value target='DisableCode' data='FC_CAL_Timer_Deinit(0); ' />
					<value target='HandlerCode' data='void FC_CAL_Timer_0_ISR(void* p) {  TIM_0_INC  FC_CAL_Timer_Rearm(0); }' />
					<value target='MaxTimeMeasurement' data='4294.967285' />
					<value target='Family' data='ESP' />
					<value target='ESP32' data='1' />
					<value target='TimerDelay' data='50' />
					<value target='DecimalPoints' data='3' />
				</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='1098.27' xt='0' yt='0' zt='0' xquat='0' yquat='0' zquat='0' wquat='1' />
		<viewport dx='351' dy='1640' zoom='38.6707' fix_topleft='0' />
		<page x='1000' y='1000' show='0' rgb='7360576' />
		<winpos ID='7005' RectRecentFloat='1270,427,1920,877' RectRecentDocked='0,0,351,1690' 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='556,304,1206,754' RectRecentDocked='0,0,210,1690' RecentFrameAlignment='16384' RecentRowIndex='0' IsFloating='0' MRUWidth='32767' PinState='0' IsMaximized='0' IsVisible='0' />
	</panel3d>
	<panels2d count='2' >
		<panel2d_0 id='0' name='NewPanel' type='0' >
			<winpos ID='1171' RectRecentFloat='2221,585,2871,1035' RectRecentDocked='1272,328,1914,2012' RecentFrameAlignment='16384' RecentRowIndex='0' IsFloating='1' MRUWidth='32767' PinState='0' IsMaximized='0' IsVisible='1' />
			<background fill='288230376151053813' showgrid='1' gridstyle='1' gridsize='10' gridbrush='71776119075691740' snaptogrid='1' fitcomp='0' disp_x='300' disp_y='400' scale='100' disp_col='16777215' />
		</panel2d_0>
		<panel2d_1 id='1' name='Scene0' type='1' >
			<winpos ID='1172' RectRecentFloat='532,296,1182,746' RectRecentDocked='533,342,1175,739' RecentFrameAlignment='16384' RecentRowIndex='0' IsFloating='1' MRUWidth='32767' PinState='0' IsMaximized='0' IsVisible='0' />
			<background fill='288230376151053813' showgrid='1' gridstyle='1' gridsize='10' gridbrush='71776119075691740' snaptogrid='1' fitcomp='0' disp_x='480' disp_y='320' scale='100' disp_col='8388626' />
		</panel2d_1>
	</panels2d>
	<layout >
		<view type='0' name='WorkerTask' mode='0' placement='LAAAAAAAAAABAAAA---------------------wUAAAAzAAAADgYAAI8GAAA' zoom='240' scrollx='0' scrolly='0' flags='0' />
		<view type='0' name='Main' mode='0' placement='LAAAAAAAAAABAAAA---------------------wUAAAAzAAAADgYAAI8GAAA' zoom='180' scrollx='0' scrolly='0' flags='0' />
		<view type='0' name='CalculateMandelbrot' mode='0' placement='LAAAAAAAAAABAAAA---------------------wUAAAAzAAAADgYAAI8GAAA' zoom='160' scrollx='0' scrolly='613' flags='0' />
		<view type='0' name='CopyFrame' mode='0' placement='LAAAAAAAAAABAAAA---------------------wUAAAAzAAAADgYAAI8GAAA' zoom='150' scrollx='0' scrolly='0' flags='0' />
		<view type='0' name='ReadTouch' mode='0' placement='LAAAAAAAAAABAAAA---------------------wUAAAAzAAAADgYAAI8GAAA' zoom='160' scrollx='0' scrolly='0' flags='0' />
		<view type='0' name='Initialise' mode='0' placement='LAAAAAAAAAABAAAA---------------------wUAAAAzAAAADgYAAI8GAAA' zoom='170' scrollx='0' scrolly='0' flags='0' />
	</layout>
</document>
</root>
