<root>
<document scada='0' schema='103' license='1,79829088,14T0PE' title='' description='' fcversion='655617' target='ESP.ESP32.ESP32-S3_WROOM' >
	<config data='' clkspd='240000000' simspd='0' usewdt='0' constif='0' commport='7' Use3V3='0' />
	<plugins >
		<dll_models enabled='1' />
	</plugins>
	<supplement use='1' head='#include &lt;lvgl.h&gt;
#include &lt;src/misc/lv_fs.h&gt;
//#include &quot;D:/Projects/Flowcode/esp32_s3_ili9488/managed_components/joltwallet__littlefs/include/esp_littlefs.h&quot;

#include &lt;esp_littlefs.h&gt;
void disp_flush(lv_display_t * disp, const lv_area_t * area, lv_color_t * color_p);
void my_touchpad_read(lv_indev_t *indev_drv, lv_indev_data_t *data);
static void ta_event_cb(lv_event_t * e);

lv_line_t * minute_hand;
lv_obj_t * hour_hand;
lv_point_precise_t minute_hand_points[2];
int32_t hour;
int32_t minute;
lv_timer_t *timer;
#if LV_USE_FLOAT
    #define my_PRIprecise &quot;f&quot;
#else
    #define my_PRIprecise LV_PRId32
#endif

' body='void disp_flush(lv_display_t * disp, const lv_area_t * area, lv_color_t * color_p)
{
    FCM_Window(area-&gt;x1, area-&gt;y1, area-&gt;x2, area-&gt;y2);
    long unsigned int size = (area-&gt;x2 - area-&gt;x1 + 1) * (area-&gt;y2 - area-&gt;y1 + 1); 
    FCM_LCD_Write_Data16_Bus(color_p, size, size);   
    lv_display_flush_ready(disp);         
}

void my_touchpad_read(lv_indev_t * indev_drv, lv_indev_data_t * data)
{
    if(FCM_IsTouch()) {
      data-&gt;state = LV_INDEV_STATE_PRESSED;
      FCM_ReadTouchXY(&amp;data-&gt;point.x, &amp;data-&gt;point.y);
    } else {
      data-&gt;state = LV_INDEV_STATE_RELEASED;
    }
}


static void ta_event_cb(lv_event_t * e)
{
    lv_event_code_t code = lv_event_get_code(e);
    lv_obj_t * ta = lv_event_get_target(e);
    lv_obj_t * kb = lv_event_get_user_data(e);
    if(code == LV_EVENT_FOCUSED) {
        lv_keyboard_set_textarea(kb, ta);
        lv_obj_remove_flag(kb, LV_OBJ_FLAG_HIDDEN);
    }

    if(code == LV_EVENT_DEFOCUSED) {
        lv_keyboard_set_textarea(kb, NULL);
        lv_obj_add_flag(kb, LV_OBJ_FLAG_HIDDEN);
    }
}
' />
	<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='5804fb4e-79f1-44d5-9fe2-788c9ec2f68b' vstate='40' vmin='0' vmaj='1' srcleaf='' visiblename='' description='' category='' category2='' category3='' bIs2dOnly='0' bIs3dOnly='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' comp2dType='0' >
			<resources />
			<properties >
				<property name='D/C Pin' target='dcPin' typeid='5' hidden='0' locked='0' info='' />
				<property name='ResetPin' target='resetPin' typeid='5' hidden='0' locked='0' info='' />
				<property name='Backlight' target='backlightPin' typeid='5' hidden='0' locked='0' info='' />
				<property name='IO Port High' target='ioPortHigh' typeid='19' hidden='0' locked='0' info='' />
				<property name='IO Port Low' target='ioPortLow' typeid='19' hidden='0' locked='0' info='' />
				<property name='Write Pin' target='writePin' typeid='5' hidden='0' locked='0' info='' />
				<property name='Read Pin' target='readPin' typeid='5' hidden='0' locked='0' info='' />
				<property name='Touch interrupt pin' target='touchInterrupt' typeid='5' hidden='0' locked='0' info='' />
				<property name='Touch SCL Pin' target='touchSCL' typeid='5' hidden='0' locked='0' info='' />
				<property name='Touch SDA Pin' target='touchSDA' typeid='5' hidden='0' locked='0' info='' />
			</properties>
			<values >
				<value target='dcPin' data='$PORTA.16' />
				<value target='resetPin' data='$PORTA.19' />
				<value target='backlightPin' data='$PORTA.21' />
				<value target='ioPortHigh' data='$PORTA1' />
				<value target='ioPortLow' data='$PORTA0' />
				<value target='writePin' data='$PORTA.18' />
				<value target='readPin' data='$PORTA.17' />
				<value target='touchInterrupt' data='$PORTB.8' />
				<value target='touchSCL' data='$PORTB.15' />
				<value target='touchSDA' data='$PORTB.16' />
			</values>
			<events />
			<apis />
			<variables >
				<variable public='0' >
					<def class_type='variable' name='total' type='u32' description='' isconst='0' isHidden='0' isinit='0' usrinit='0' setinit='' />
				</variable>
				<variable public='0' >
					<def class_type='variable' name='ssid_set' type='b1' description='' isconst='0' isHidden='0' isinit='1' usrinit='0' setinit='false' />
				</variable>
				<variable public='0' >
					<def class_type='variable' name='hours' type='u32' description='' isconst='0' isHidden='0' isinit='1' usrinit='0' setinit='0' />
				</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='ssid' type='T8' description='' isconst='0' isHidden='0' isinit='1' usrinit='&quot;&quot;' setinit='&quot;&quot;' >
						<array size='32' />
					</def>
				</variable>
				<variable public='0' >
					<def class_type='variable' name='time_set' type='b1' description='' isconst='0' isHidden='0' isinit='1' usrinit='0' setinit='false' />
				</variable>
				<variable public='0' >
					<def class_type='variable' name='pswd_set' type='b1' description='' isconst='0' isHidden='0' isinit='1' usrinit='0' setinit='false' />
				</variable>
				<variable public='0' >
					<def class_type='variable' name='password' type='T8' description='' isconst='0' isHidden='0' isinit='1' usrinit='&quot;&quot;' setinit='&quot;&quot;' >
						<array size='32' />
					</def>
				</variable>
				<variable public='0' >
					<def class_type='variable' name='select' type='T8' description='' isconst='1' isHidden='0' isinit='1' usrinit='&quot;Select SSID&quot;' setinit='&quot;Select SSID&quot;' >
						<array size='20' />
					</def>
				</variable>
				<variable public='0' >
					<def class_type='variable' name='next' type='u32' description='' isconst='0' isHidden='0' isinit='0' usrinit='0' setinit='' />
				</variable>
				<variable public='0' >
					<def class_type='variable' name='used' type='u32' description='' isconst='0' isHidden='0' isinit='0' usrinit='0' setinit='' />
				</variable>
				<variable public='0' >
					<def class_type='variable' name='minutes' type='u32' description='' isconst='0' isHidden='0' isinit='1' usrinit='0' setinit='0' />
				</variable>
				<variable public='0' >
					<def class_type='variable' name='label' type='u32' description='' isconst='0' isHidden='0' isinit='0' usrinit='0' setinit='' />
				</variable>
				<variable public='0' >
					<def class_type='variable' name='roller' type='u32' description='' isconst='0' isHidden='0' isinit='1' usrinit='0' setinit='0' />
				</variable>
				<variable public='0' >
					<def class_type='variable' name='buf1' type='u8' description='' isconst='0' isHidden='0' isinit='0' usrinit='&quot;&quot;' setinit='' >
						<array size='30720' />
					</def>
				</variable>
				<variable public='0' >
					<def class_type='variable' name='touch' type='b1' description='' isconst='0' isHidden='0' isinit='1' usrinit='0' setinit='false' />
				</variable>
				<variable public='0' >
					<def class_type='variable' name='clock' type='u32' description='' isconst='0' isHidden='0' isinit='0' usrinit='0' setinit='' />
				</variable>
				<variable public='0' >
					<def class_type='variable' name='seconds' type='u32' description='' isconst='0' isHidden='0' isinit='1' usrinit='0' setinit='0' />
				</variable>
				<variable public='0' >
					<def class_type='variable' name='prev' type='u32' description='' isconst='0' isHidden='0' isinit='0' usrinit='0' setinit='' />
				</variable>
				<variable public='0' >
					<def class_type='variable' name='LFS' type='u32' description='' isconst='0' isHidden='0' isinit='0' usrinit='0' setinit='' />
				</variable>
				<variable public='0' >
					<def class_type='variable' name='lv_base_screen' type='u32' description='' isconst='0' isHidden='0' isinit='0' usrinit='0' setinit='' />
				</variable>
				<variable public='0' >
					<def class_type='variable' name='OK' type='b1' description='' isconst='0' isHidden='0' isinit='1' usrinit='0' setinit='false' />
				</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='ButtonAddEvent' description='' statediag='0' >
						<return name='Return' type='v0' description='' isconst='0' isHidden='0' isinit='0' usrinit='' setinit='' />
						<param name='btn' type='u32' description='' isconst='0' isHidden='0' isinit='0' usrinit='0' setinit='' />
						<param name='id' type='u32' description='' isconst='0' isHidden='0' isinit='0' usrinit='0' setinit='' />
						<command class_type='native' title='Code' ccode='lv_obj_add_event_cb((void *)FCL_BTN, FCM_Btnevent, LV_EVENT_CLICKED, FCL_ID);' cmdcolor='4206456' cmdcolor_sec='10785756' cmdcolor_txt='16777215' cmdgradient='4' cmdopacity='0.64' language='C' />
					</flowline>
				</macro>
				<macro >
					<flowline name='KeyboardEvent' description='' statediag='0' >
						<return name='Return' type='v0' description='' isconst='0' isHidden='0' isinit='0' usrinit='' setinit='' />
						<param name='e' type='u32' description='' isconst='0' isHidden='0' isinit='0' usrinit='0' setinit='' />
						<local name='code' type='u32' description='' isconst='0' isHidden='0' isinit='1' usrinit='0' setinit='0' />
						<command class_type='native' title='Code' ccode='    lv_event_t *e = (lv_event_t*)FCL_E;
    lv_event_code_t code = lv_event_get_code(e);
    lv_obj_t * ta = lv_event_get_target(e);
    lv_obj_t * kb = lv_event_get_user_data(e);
    if(code == LV_EVENT_FOCUSED) {
        lv_keyboard_set_textarea(kb, ta);
        lv_obj_remove_flag(kb, LV_OBJ_FLAG_HIDDEN);
    }

    if(code == LV_EVENT_DEFOCUSED) {
        lv_keyboard_set_textarea(kb, NULL);
        lv_obj_add_flag(kb, LV_OBJ_FLAG_HIDDEN);
    }' cmdcolor='4206456' cmdcolor_sec='10785756' cmdcolor_txt='16777215' cmdgradient='4' cmdopacity='0.64' language='C' />
					</flowline>
				</macro>
				<macro >
					<flowline name='Test' description='' statediag='0' >
						<return name='Return' type='v0' description='' isconst='0' isHidden='0' isinit='0' usrinit='' setinit='' />
						<local name='buf' type='u16' description='' isconst='0' isHidden='0' isinit='0' usrinit='0' setinit='' >
							<array size='100' />
						</local>
						<local name='i' type='u32' description='' isconst='0' isHidden='0' isinit='0' usrinit='0' setinit='' />
						<command class_type='call' title='User Macro' cmdcolor='4487093' cmdcolor_sec='11066367' cmdcolor_txt='16777215' cmdgradient='4' cmdopacity='0.64' macro='Window' >
							<argument exp='0' />
							<argument exp='0' />
							<argument exp='100' />
							<argument exp='100' />
						</command>
						<command class_type='loop' title='Loop' cmdcolor='4767473' cmdcolor_sec='11337727' cmdcolor_txt='16777215' cmdgradient='4' cmdopacity='0.64' type='2' forvar='.i' exp='100' >
							<flowline >
								<command class_type='calculation' title='Calculation' cmdcolor='4206456' cmdcolor_sec='10785756' cmdcolor_txt='16777215' cmdgradient='4' cmdopacity='0.64' >
									<exp exp='.buf[.i] = 0b1111100000000000' />
								</command>
							</flowline>
						</command>
						<command class_type='loop' title='Loop' cmdcolor='4767473' cmdcolor_sec='11337727' cmdcolor_txt='16777215' cmdgradient='4' cmdopacity='0.64' type='2' forvar='.i' exp='100' >
							<flowline >
								<command class_type='call' title='User Macro' cmdcolor='4487093' cmdcolor_sec='11066367' cmdcolor_txt='16777215' cmdgradient='4' cmdopacity='0.64' macro='LCD_Write_Data16_Bus' >
									<argument exp='.buf' />
									<argument exp='100' />
								</command>
							</flowline>
						</command>
					</flowline>
				</macro>
				<macro >
					<flowline name='KeyEvent' description='' statediag='0' >
						<return name='Return' type='v0' description='' isconst='0' isHidden='0' isinit='0' usrinit='' setinit='' />
						<param name='e' type='u32' description='' isconst='0' isHidden='0' isinit='0' usrinit='0' setinit='' />
						<local name='code' type='u32' description='' isconst='0' isHidden='0' isinit='0' usrinit='0' setinit='' />
						<command class_type='native' title='Code' ccode='    lv_event_t *e = (lv_event_t*)FCL_E;
    lv_event_code_t code = lv_event_get_code(e);
    lv_obj_t * ta = lv_event_get_target(e);
    lv_obj_t * kb = lv_event_get_user_data(e);
    if(code == LV_EVENT_FOCUSED) {
        lv_keyboard_set_textarea(kb, ta);
        lv_obj_remove_flag(kb, LV_OBJ_FLAG_HIDDEN);
    }

    if(code == LV_EVENT_DEFOCUSED) {
        lv_keyboard_set_textarea(kb, NULL);
        lv_obj_add_flag(kb, LV_OBJ_FLAG_HIDDEN);
    }
    FCL_CODE = lv_keyboard_get_selected_button(kb);

    ' cmdcolor='4206456' cmdcolor_sec='10785756' cmdcolor_txt='16777215' cmdgradient='4' cmdopacity='0.64' language='C' />
						<command class_type='decision' title='Decision' cmdcolor='4767473' cmdcolor_sec='11337727' cmdcolor_txt='16777215' cmdgradient='4' cmdopacity='0.64' exp='.code == 39' swap='0' >
							<flowline >
								<command class_type='calculation' title='Calculation' cmdcolor='4206456' cmdcolor_sec='10785756' cmdcolor_txt='16777215' cmdgradient='4' cmdopacity='0.64' >
									<exp exp='pswd_set = true' />
								</command>
							</flowline>
							<flowline />
						</command>
					</flowline>
				</macro>
				<macro >
					<flowline name='LCD_Write_Reg' description='' statediag='0' >
						<return name='Return' type='v0' description='' isconst='0' isHidden='0' isinit='0' usrinit='' setinit='' />
						<param name='data' type='u8' description='' isconst='0' isHidden='0' isinit='0' usrinit='0' setinit='' />
						<local name='buf' type='u8' description='' isconst='0' isHidden='0' isinit='0' usrinit='&quot;&quot;' setinit='' >
							<array size='1' />
						</local>
						<command class_type='calculation' title='Calculation' cmdcolor='4206456' cmdcolor_sec='10785756' cmdcolor_txt='16777215' cmdgradient='4' cmdopacity='0.64' >
							<exp exp='dcPin = 0' />
							<exp exp='.buf[0] = .data' />
							<exp exp='' />
						</command>
						<command class_type='call' title='User Macro' cmdcolor='4487093' cmdcolor_sec='11066367' cmdcolor_txt='16777215' cmdgradient='4' cmdopacity='0.64' macro='LCD_Write_Data8_Bus' >
							<argument exp='.buf' />
							<argument exp='1' />
						</command>
						<command class_type='calculation' title='Calculation' cmdcolor='4206456' cmdcolor_sec='10785756' cmdcolor_txt='16777215' cmdgradient='4' cmdopacity='0.64' >
							<exp exp='dcPin = 1' />
						</command>
					</flowline>
				</macro>
				<macro >
					<flowline name='Btnevent' description='' statediag='0' >
						<return name='Return' type='v0' description='' isconst='0' isHidden='0' isinit='0' usrinit='' setinit='' />
						<param name='e' type='u32' description='ptr to lv_event_t' isconst='0' isHidden='0' isinit='0' usrinit='0' setinit='' />
						<local name='event' type='u32' description='' isconst='0' isHidden='0' isinit='0' usrinit='0' setinit='' />
						<local name='id' type='u32' description='' isconst='0' isHidden='0' isinit='0' usrinit='0' setinit='' />
						<local name='btn' type='u32' description='' isconst='0' isHidden='0' isinit='0' usrinit='0' setinit='' />
						<command class_type='native' title='Code' ccode='    lv_event_t *e = (lv_event_t*)FCL_E;
    lv_event_code_t code = lv_event_get_code(e);
    FCL_EVENT = (MX_UINT32)code;
    lv_obj_t * btn = lv_event_get_target(e);
    FCL_BTN = (MX_UINT32)btn;
    FCL_ID = (MX_UINT32)lv_event_get_user_data(e);
  ' cmdcolor='4206456' cmdcolor_sec='10785756' cmdcolor_txt='16777215' cmdgradient='4' cmdopacity='0.64' language='C' />
						<command class_type='decision' title='Roller select' cmdcolor='4767473' cmdcolor_sec='11337727' cmdcolor_txt='16777215' cmdgradient='4' cmdopacity='0.64' exp='.id == 5' swap='0' >
							<flowline >
								<command class_type='calculation' title='Calculation' cmdcolor='4206456' cmdcolor_sec='10785756' cmdcolor_txt='16777215' cmdgradient='4' cmdopacity='0.64' >
									<exp exp='ssid_set = true' />
								</command>
							</flowline>
							<flowline />
						</command>
						<command class_type='decision' title='Roller select' cmdcolor='4767473' cmdcolor_sec='11337727' cmdcolor_txt='16777215' cmdgradient='4' cmdopacity='0.64' exp='.id == 6' swap='0' >
							<flowline >
								<command class_type='calculation' title='Calculation' cmdcolor='4206456' cmdcolor_sec='10785756' cmdcolor_txt='16777215' cmdgradient='4' cmdopacity='0.64' >
									<exp exp='OK = true' />
								</command>
							</flowline>
							<flowline />
						</command>
					</flowline>
				</macro>
				<macro >
					<flowline name='InitLittleFS' description='' statediag='0' >
						<return name='Return' type='v0' description='' isconst='0' isHidden='0' isinit='0' usrinit='' setinit='' />
						<local name='LFS' type='u32' description='' isconst='0' isHidden='0' isinit='0' usrinit='0' setinit='' />
						<command class_type='native' title='Code' ccode='    esp_vfs_littlefs_conf_t conf = {
      .base_path = &quot;/storage&quot;,
      .partition_label = &quot;storage&quot;,
      //.max_files = 5,
      .format_if_mount_failed = true,
      .grow_on_mount = true
    };
    FCV_LFS = esp_vfs_littlefs_register(&amp;conf);
    ' cmdcolor='4206456' cmdcolor_sec='10785756' cmdcolor_txt='16777215' cmdgradient='4' cmdopacity='0.64' language='C' />
						<command class_type='native' title='Code' ccode='    esp_err_t ret = esp_littlefs_info(conf.partition_label, &amp;FCV_TOTAL, &amp;FCV_USED);
    if (ret != ESP_OK) {
        esp_littlefs_format(conf.partition_label);
    }
    
' cmdcolor='4206456' cmdcolor_sec='10785756' cmdcolor_txt='16777215' cmdgradient='4' cmdopacity='0.64' language='C' />
					</flowline>
				</macro>
				<macro >
					<flowline name='ClockTimer' description='' statediag='0' >
						<return name='Return' type='v0' description='' isconst='0' isHidden='0' isinit='0' usrinit='' setinit='' />
						<command class_type='calculation' title='Calculation' cmdcolor='4206456' cmdcolor_sec='10785756' cmdcolor_txt='16777215' cmdgradient='4' cmdopacity='0.64' >
							<exp exp='seconds = seconds + 1' />
							<exp exp='minutes = minutes + (seconds / 60)' />
							<exp exp='seconds = seconds % 60' />
							<exp exp='hours = hours + (minutes / 60)' />
							<exp exp='minutes = minutes % 60' />
							<exp exp='hours = hours % 12' />
						</command>
						<command class_type='native' title='Code' ccode='
    /**
     * the scale will store the needle line points in the existing
     * point array if one was set with `lv_line_set_points_mutable`.
     * Otherwise, it will allocate the needle line points.
     */

    /* the scale will store the minute hand line points in `minute_hand_points` */
    lv_scale_set_line_needle_value((lv_scale_t*)FCV_CLOCK, minute_hand, 120, FCV_MINUTES);
    /* log the points that were stored in the array */


    /* the scale will allocate the hour hand line points */
    lv_scale_set_line_needle_value((lv_scale_t*)FCV_CLOCK, hour_hand, 80, FCV_HOURS * 5 + (FCV_MINUTES / 12));' cmdcolor='4206456' cmdcolor_sec='10785756' cmdcolor_txt='16777215' cmdgradient='4' cmdopacity='0.64' language='C' />
					</flowline>
				</macro>
				<macro >
					<flowline name='ReadTime' description='' statediag='0' >
						<return name='Return' type='v0' description='' isconst='0' isHidden='0' isinit='0' usrinit='' setinit='' />
						<local name='con' type='u8' description='' isconst='0' isHidden='0' isinit='0' usrinit='0' setinit='' />
						<command class_type='call' title='Component Macro' cmdcolor='4487093' cmdcolor_sec='11066367' cmdcolor_txt='16777215' cmdgradient='4' cmdopacity='0.64' component='RTC_ESP32_NTP1' macro='Initialise' />
						<command class_type='call' title='Component Macro' cmdcolor='4487093' cmdcolor_sec='11066367' cmdcolor_txt='16777215' cmdgradient='4' cmdopacity='0.64' component='WLAN_ESP32' macro='ConnectToSSID' >
							<return exp='.con' />
							<argument exp='ssid' />
							<argument exp='password' />
							<argument exp='60' />
						</command>
						<command class_type='decision' title='Decision' cmdcolor='4767473' cmdcolor_sec='11337727' cmdcolor_txt='16777215' cmdgradient='4' cmdopacity='0.64' exp='.con' swap='0' >
							<flowline >
								<command class_type='call' title='Component Macro' cmdcolor='4487093' cmdcolor_sec='11066367' cmdcolor_txt='16777215' cmdgradient='4' cmdopacity='0.64' component='RTC_ESP32_NTP1' macro='QueryTimeServer' >
									<return exp='.con' />
								</command>
								<command class_type='call' title='Component Macro' cmdcolor='4487093' cmdcolor_sec='11066367' cmdcolor_txt='16777215' cmdgradient='4' cmdopacity='0.64' component='RTC_ESP32_NTP1' macro='GetHours' >
									<return exp='hours' />
								</command>
								<command class_type='call' title='Component Macro' cmdcolor='4487093' cmdcolor_sec='11066367' cmdcolor_txt='16777215' cmdgradient='4' cmdopacity='0.64' component='RTC_ESP32_NTP1' macro='GetMins' >
									<return exp='minutes' />
								</command>
							</flowline>
							<flowline />
						</command>
					</flowline>
				</macro>
				<macro >
					<flowline name='CreateButton' description='' statediag='0' >
						<return name='Return' type='u32' description='' isconst='0' isHidden='0' isinit='0' usrinit='0' setinit='' />
						<param name='x' type='u16' description='' isconst='0' isHidden='0' isinit='0' usrinit='0' setinit='' />
						<param name='y' type='u16' description='' isconst='0' isHidden='0' isinit='0' usrinit='0' setinit='' />
						<param name='w' type='u16' description='' isconst='0' isHidden='0' isinit='0' usrinit='0' setinit='' />
						<param name='h' type='u16' description='' isconst='0' isHidden='0' isinit='0' usrinit='0' setinit='' />
						<param name='text' type='T8*' description='' isconst='0' isHidden='0' isinit='0' usrinit='&quot;&quot;' setinit='' >
							<array size='20' />
						</param>
						<command class_type='native' title='Code' ccode='    lv_obj_t * btn = lv_button_create(lv_screen_active());     /*Add a button the current screen*/
    lv_obj_set_pos(btn, FCL_X, FCL_Y);                            /*Set its position*/
    lv_obj_set_size(btn, FCL_W, FCL_H);                          /*Set its size*/
    //lv_obj_add_event_cb(btn, btn_event_cb, LV_EVENT_ALL, NULL);           /*Assign a callback to the button*/

    lv_obj_t * label = lv_label_create(btn);          /*Add a label to the button*/
    lv_label_set_text(label, FCL_TEXT);                     /*Set the labels text*/
    lv_obj_center(label);
    FCR_RETVAL = (MX_UINT32)btn;' cmdcolor='4206456' cmdcolor_sec='10785756' cmdcolor_txt='16777215' cmdgradient='4' cmdopacity='0.64' language='C' />
					</flowline>
				</macro>
				<macro >
					<flowline name='ReadTouchXY' description='' statediag='0' >
						<return name='Return' type='v0' description='' isconst='0' isHidden='0' isinit='0' usrinit='' setinit='' />
						<param name='x' type='s32*' description='' isconst='0' isHidden='0' isinit='0' usrinit='0' setinit='' />
						<param name='y' type='s32*' description='' isconst='0' isHidden='0' isinit='0' usrinit='0' setinit='' />
						<command class_type='call' title='Component Macro' cmdcolor='4487093' cmdcolor_sec='11066367' cmdcolor_txt='16777215' cmdgradient='4' cmdopacity='0.64' component='FT6X06' macro='ReadCoord' >
							<return exp='.x' />
							<argument exp='0' />
							<argument exp='0' />
						</command>
						<command class_type='call' title='Component Macro' cmdcolor='4487093' cmdcolor_sec='11066367' cmdcolor_txt='16777215' cmdgradient='4' cmdopacity='0.64' component='FT6X06' macro='ReadCoord' >
							<return exp='.y' />
							<argument exp='1' />
							<argument exp='0' />
						</command>
					</flowline>
				</macro>
				<macro >
					<flowline name='LCD_Write_Reg_Data' description='' statediag='0' >
						<return name='Return' type='v0' description='' isconst='0' isHidden='0' isinit='0' usrinit='' setinit='' />
						<param name='cmd' type='u32' description='' isconst='0' isHidden='0' isinit='0' usrinit='0' setinit='' />
						<param name='data' type='u8' description='' isconst='0' isHidden='0' isinit='0' usrinit='&quot;&quot;' setinit='' >
							<array size='20' />
						</param>
						<param name='len' type='u8' description='' isconst='0' isHidden='0' isinit='0' usrinit='0' setinit='' />
						<local name='buf' type='u8' description='' isconst='0' isHidden='0' isinit='0' usrinit='&quot;&quot;' setinit='' >
							<array size='1' />
						</local>
						<command class_type='calculation' title='Calculation' cmdcolor='4206456' cmdcolor_sec='10785756' cmdcolor_txt='16777215' cmdgradient='4' cmdopacity='0.64' >
							<exp exp='dcPin = 0' />
							<exp exp='' />
						</command>
						<command class_type='call' title='User Macro' cmdcolor='4487093' cmdcolor_sec='11066367' cmdcolor_txt='16777215' cmdgradient='4' cmdopacity='0.64' macro='LCD_Write_Reg' >
							<argument exp='.cmd' />
						</command>
						<command class_type='calculation' title='Calculation' cmdcolor='4206456' cmdcolor_sec='10785756' cmdcolor_txt='16777215' cmdgradient='4' cmdopacity='0.64' >
							<exp exp='dcPin = 1' />
						</command>
						<command class_type='call' title='User Macro' cmdcolor='4487093' cmdcolor_sec='11066367' cmdcolor_txt='16777215' cmdgradient='4' cmdopacity='0.64' macro='LCD_Write_Data8_Bus' >
							<argument exp='.data' />
							<argument exp='.len' />
						</command>
					</flowline>
				</macro>
				<macro >
					<flowline name='CreateKeyboard' description='Create a screen,  keyboard and two text areas -sets widgets to hold their pointers

Widgets 0 is the screen which can be loaded to bring up the keyboard.' statediag='0' >
						<return name='Return' type='v0' description='' isconst='0' isHidden='0' isinit='0' usrinit='' setinit='' />
						<param name='widgets' type='u32' description='Array to hold widgets created (3)' isconst='0' isHidden='0' isinit='0' usrinit='0' setinit='' >
							<array size='4' />
						</param>
						<command class_type='native' title='`' ccode='    lv_obj_t *scr = lv_obj_create(NULL);
    lv_label_t *label = lv_label_create(scr);
    lv_obj_align(label, LV_ALIGN_TOP_LEFT, 10, 10);
    lv_label_set_text(label, &quot;Set Password&quot;);
    
    lv_obj_t * kb = lv_keyboard_create(scr); //lv_screen_active());
    lv_obj_align(kb, LV_ALIGN_BOTTOM_LEFT, 10, -10);
    lv_obj_add_event_cb(kb, FCM_KeyEvent, LV_EVENT_CLICKED, kb);
    /*Create a text area. The keyboard will write here*/

    lv_obj_t * ta1;
    ta1 = lv_textarea_create(scr); //lv_screen_active());
    lv_obj_align(ta1, LV_ALIGN_TOP_LEFT, 10, 80);
    lv_obj_add_event_cb(ta1, FCM_KeyboardEvent, LV_EVENT_ALL, kb);
    lv_textarea_set_placeholder_text(ta1, &quot;Password&quot;);
    lv_textarea_set_password_mode(ta1, true);
    lv_textarea_set_one_line(ta1, true);
    lv_obj_set_size(ta1, 320, 80);

    
    FCL_WIDGETS[0] = (MX_UINT32)scr;
    FCL_WIDGETS[1] = (MX_UINT32)kb;
    FCL_WIDGETS[2] = (MX_UINT32)ta1;
    FCL_WIDGETS[3] = (MX_UINT32)label;
    
' cmdcolor='4206456' cmdcolor_sec='10785756' cmdcolor_txt='16777215' cmdgradient='4' cmdopacity='0.64' language='C' />
					</flowline>
				</macro>
				<macro >
					<flowline name='CreateRollerSSID' description='Create a list of avauilable networks and allow user to  choose' statediag='0' >
						<return name='Return' type='u32' description='' isconst='0' isHidden='0' isinit='0' usrinit='0' setinit='' />
						<local name='n' type='u8' description='' isconst='0' isHidden='0' isinit='0' usrinit='0' setinit='' />
						<local name='ssids' type='T8' description='' isconst='0' isHidden='0' isinit='1' usrinit='&quot;&quot;' setinit='&quot;&quot;' >
							<array size='256' />
						</local>
						<local name='i' type='u8' description='' isconst='0' isHidden='0' isinit='0' usrinit='0' setinit='' />
						<local name='temp' type='T8' description='' isconst='0' isHidden='0' isinit='0' usrinit='&quot;&quot;' setinit='' >
							<array size='32' />
						</local>
						<command class_type='call' title='Component Macro' cmdcolor='4487093' cmdcolor_sec='11066367' cmdcolor_txt='16777215' cmdgradient='4' cmdopacity='0.64' component='WLAN_ESP32' macro='ScanForSSID' >
							<return exp='.n' />
						</command>
						<command class_type='loop' title='Loop' cmdcolor='4767473' cmdcolor_sec='11337727' cmdcolor_txt='16777215' cmdgradient='4' cmdopacity='0.64' type='2' forvar='.i' exp='.n' >
							<flowline >
								<command class_type='call' title='Component Macro' cmdcolor='4487093' cmdcolor_sec='11066367' cmdcolor_txt='16777215' cmdgradient='4' cmdopacity='0.64' component='WLAN_ESP32' macro='ReadSSIDFromScan' >
									<return exp='.temp' />
									<argument exp='.i' />
								</command>
								<command class_type='calculation' title='Calculation' cmdcolor='4206456' cmdcolor_sec='10785756' cmdcolor_txt='16777215' cmdgradient='4' cmdopacity='0.64' >
									<exp exp='.ssids = .ssids + .temp' />
								</command>
								<command class_type='decision' title='Decision' cmdcolor='4767473' cmdcolor_sec='11337727' cmdcolor_txt='16777215' cmdgradient='4' cmdopacity='0.64' exp='.i &lt; (.n - 1)' swap='0' >
									<flowline >
										<command class_type='calculation' title='Calculation' cmdcolor='4206456' cmdcolor_sec='10785756' cmdcolor_txt='16777215' cmdgradient='4' cmdopacity='0.64' >
											<exp exp='.ssids = .ssids + &quot;\n&quot;' />
										</command>
									</flowline>
									<flowline />
								</command>
							</flowline>
						</command>
						<command class_type='native' title='Code' ccode='    const char txt[] = &quot;Select SSID&quot;;
    lv_obj_t *label = lv_label_create(lv_screen_active());
    lv_obj_align(label, LV_ALIGN_TOP_MID, 0, 40);
    lv_label_set_text(label, FCV_SELECT);
    
    lv_button_t *btn = lv_button_create(lv_screen_active());
//     lv_obj_set_pos(btn, 160, 300);                            /*Set its position*/
    lv_obj_set_size(btn, 100, 50); 
    lv_obj_align(btn, LV_ALIGN_BOTTOM_MID, 0, -40);  
    lv_obj_add_event_cb(btn, FCM_Btnevent, LV_EVENT_CLICKED, 6);

    lv_label_t * lbr = lv_label_create(btn);
    const char *ok = &quot;OK&quot;;
    lv_label_set_text(lbr, ok);
    lv_obj_center(lbr);

    static lv_style_t style_sel;
    lv_style_init(&amp;style_sel);
    lv_style_set_text_font(&amp;style_sel, &amp;lv_font_montserrat_22);
    lv_style_set_bg_color(&amp;style_sel, lv_color_hex3(0xf88));
    lv_style_set_border_width(&amp;style_sel, 2);
    lv_style_set_border_color(&amp;style_sel, lv_color_hex3(0xf00));

    lv_obj_t * roller;

    /*A roller on the left with left aligned text, and custom width*/
    roller = lv_roller_create(lv_screen_active());
    lv_roller_set_options(roller, FCL_SSIDS, LV_ROLLER_MODE_NORMAL);
    lv_roller_set_visible_row_count(roller, 4);
    lv_obj_set_width(roller, 320);
    lv_obj_add_style(roller, &amp;style_sel, LV_PART_ANY);
    lv_obj_set_style_text_align(roller, LV_TEXT_ALIGN_LEFT, 0);
    lv_obj_set_style_bg_color(roller, lv_color_hex3(0x0f0), 0);
    lv_obj_set_style_bg_grad_color(roller, lv_color_hex3(0xafa), 0);
    lv_obj_set_style_bg_grad_dir(roller, LV_GRAD_DIR_VER, 0);
    lv_obj_align(roller, LV_ALIGN_LEFT_MID, 10, 0);
    //lv_obj_add_event_cb(roller, FCM_RollerEvent, LV_EVENT_ALL, NULL);
    lv_roller_set_selected(roller, 1, LV_ANIM_OFF);
    return (MX_UINT32)roller;' cmdcolor='4206456' cmdcolor_sec='10785756' cmdcolor_txt='16777215' cmdgradient='4' cmdopacity='0.64' language='C' />
					</flowline>
				</macro>
				<macro >
					<flowline name='InitLVGL' description='' statediag='0' >
						<return name='Return' type='v0' description='' isconst='0' isHidden='0' isinit='0' usrinit='' setinit='' />
						<command class_type='native' title='Code' ccode='lv_init();
lv_display_t  *disp = lv_display_create(320, 480);
if(disp) {
   uint32_t buf_size = 30720;
   //lv_color_t *buf1 = (lv_color_t *)malloc(buf_size);   
   //lv_color_t *buf2 = (lv_color_t *)malloc(buf_size);
   
   lv_display_set_buffers(disp, FCV_BUF1, NULL, buf_size, LV_DISPLAY_RENDER_MODE_PARTIAL);
   lv_display_set_flush_cb(disp, disp_flush);
}
   ' cmdcolor='4206456' cmdcolor_sec='10785756' cmdcolor_txt='16777215' cmdgradient='4' cmdopacity='0.64' language='C' />
						<command class_type='native' title='Code' ccode='lv_indev_t * indev = lv_indev_create();           /*Create an input device*/
lv_indev_set_type(indev, LV_INDEV_TYPE_POINTER);  /*Touch pad is a pointer-like device*/
lv_indev_set_read_cb(indev, my_touchpad_read);    /*Set your driver function*/' cmdcolor='4206456' cmdcolor_sec='10785756' cmdcolor_txt='16777215' cmdgradient='4' cmdopacity='0.64' language='C' />
					</flowline>
				</macro>
				<macro >
					<flowline name='LCD_Write_Data8_Bus' description='' statediag='0' >
						<return name='Return' type='v0' description='' isconst='0' isHidden='0' isinit='0' usrinit='' setinit='' />
						<param name='data' type='u8' description='' isconst='0' isHidden='0' isinit='0' usrinit='&quot;&quot;' setinit='' >
							<array size='10' />
						</param>
						<param name='len' type='u16' description='' isconst='0' isHidden='0' isinit='0' usrinit='0' setinit='' />
						<local name='i' type='u16' description='' isconst='0' isHidden='0' isinit='0' usrinit='0' setinit='' />
						<local name='x' type='u8' description='' isconst='0' isHidden='0' isinit='0' usrinit='0' setinit='' />
						<command class_type='loop' title='Loop' cmdcolor='4767473' cmdcolor_sec='11337727' cmdcolor_txt='16777215' cmdgradient='4' cmdopacity='0.64' type='2' forvar='.i' exp='.len' >
							<flowline >
								<command class_type='calculation' title='Calculation' cmdcolor='4206456' cmdcolor_sec='10785756' cmdcolor_txt='16777215' cmdgradient='4' cmdopacity='0.64' >
									<exp exp='.x = .data[.i]' />
								</command>
								<command class_type='native' title='Code' ccode='GPIO.out_w1ts = FCL_X;    //Write all the 1&apos;s
FCL_X = ~FCL_X;
GPIO.out_w1tc = FCL_X;       //Write all the 0&apos;s' cmdcolor='4206456' cmdcolor_sec='10785756' cmdcolor_txt='16777215' cmdgradient='4' cmdopacity='0.64' language='C' />
								<command class_type='calculation' title='Toggle writePin to latach data' cmdcolor='4206456' cmdcolor_sec='10785756' cmdcolor_txt='16777215' cmdgradient='4' cmdopacity='0.64' >
									<exp exp='writePin = 0' />
									<exp exp='writePin = 1' />
								</command>
							</flowline>
						</command>
					</flowline>
				</macro>
				<macro >
					<flowline name='Window' description='' statediag='0' >
						<return name='Return' type='v0' description='' isconst='0' isHidden='0' isinit='0' usrinit='' setinit='' />
						<param name='X1' type='u16' description='' isconst='0' isHidden='0' isinit='0' usrinit='0' setinit='' />
						<param name='Y1' type='u16' description='' isconst='0' isHidden='0' isinit='0' usrinit='0' setinit='' />
						<param name='X2' type='u16' description='' isconst='0' isHidden='0' isinit='0' usrinit='0' setinit='' />
						<param name='Y2' type='u16' description='' isconst='0' isHidden='0' isinit='0' usrinit='0' setinit='' />
						<local name='temp' type='u16' description='' isconst='0' isHidden='0' isinit='0' usrinit='0' setinit='' />
						<local name='data' type='u8' description='' isconst='0' isHidden='0' isinit='0' usrinit='&quot;&quot;' setinit='' >
							<array size='11' />
						</local>
						<command class_type='comment' title='' comment='Set Column Address' textarea='12,0,12,0' cmdcolor='4206456' cmdcolor_sec='10785756' cmdcolor_txt='16777215' cmdgradient='4' cmdopacity='0.64' />
						<command class_type='calculation' title='Calculation' cmdcolor='4206456' cmdcolor_sec='10785756' cmdcolor_txt='16777215' cmdgradient='4' cmdopacity='0.64' >
							<exp exp='.data[0] = .X1 &gt;&gt; 8' />
							<exp exp='.data[1] = .X1' />
							<exp exp='.data[2] = .X2 &gt;&gt; 8' />
							<exp exp='.data[3] = .X2' />
							<exp exp='' />
						</command>
						<command class_type='call' title='User Macro' cmdcolor='4487093' cmdcolor_sec='11066367' cmdcolor_txt='16777215' cmdgradient='4' cmdopacity='0.64' macro='LCD_Write_Reg_Data' >
							<argument exp='0x2A' />
							<argument exp='.data' />
							<argument exp='4' />
						</command>
						<command class_type='comment' title='' comment='Set Row Address' textarea='46,0,46,0' cmdcolor='4206456' cmdcolor_sec='10785756' cmdcolor_txt='16777215' cmdgradient='4' cmdopacity='0.64' />
						<command class_type='calculation' title='Calculation' cmdcolor='4206456' cmdcolor_sec='10785756' cmdcolor_txt='16777215' cmdgradient='4' cmdopacity='0.64' >
							<exp exp='.data[0] = .Y1 &gt;&gt; 8' />
							<exp exp='.data[1] = .Y1' />
							<exp exp='.data[2] = .Y2 &gt;&gt; 8' />
							<exp exp='.data[3] = .Y2' />
							<exp exp='' />
						</command>
						<command class_type='call' title='User Macro' cmdcolor='4487093' cmdcolor_sec='11066367' cmdcolor_txt='16777215' cmdgradient='4' cmdopacity='0.64' macro='LCD_Write_Reg_Data' >
							<argument exp='0x2B' />
							<argument exp='.data' />
							<argument exp='4' />
						</command>
						<command class_type='comment' title='' comment='Prep for data' textarea='12,0,12,0' cmdcolor='4206456' cmdcolor_sec='10785756' cmdcolor_txt='16777215' cmdgradient='4' cmdopacity='0.64' />
						<command class_type='call' title='User Macro' cmdcolor='4487093' cmdcolor_sec='11066367' cmdcolor_txt='16777215' cmdgradient='4' cmdopacity='0.64' macro='LCD_Write_Reg' >
							<argument exp='0x2C' />
						</command>
					</flowline>
				</macro>
				<macro >
					<flowline name='slider_event_cb' description='' statediag='0' >
						<return name='Return' type='v0' description='' isconst='0' isHidden='0' isinit='0' usrinit='' setinit='' />
						<param name='event' type='u32' description='' isconst='0' isHidden='0' isinit='0' usrinit='0' setinit='' />
						<command class_type='native' title='Code' textarea='36,-30,36,-30' ccode='    lv_event_t *e = (lv_event_t *)FCL_EVENT;
    lv_obj_t *label = FCV_LABEL;
    lv_obj_t * slider = lv_event_get_target(e);
    

    /*Refresh the text*/
    lv_label_set_text_fmt(label, &quot;%&quot;LV_PRId32, lv_slider_get_value(slider));
    lv_obj_align_to(label, slider, LV_ALIGN_OUT_TOP_MID, 0, -15);    /*Align top of the slider*/' cmdcolor='4206456' cmdcolor_sec='10785756' cmdcolor_txt='16777215' cmdgradient='4' cmdopacity='0.64' language='C' />
					</flowline>
				</macro>
				<macro >
					<flowline name='InitialiseDisplay' description='The Init macro must be called once to initialise the Graphical LCD display before any other Graphical LCD component macros are called.' statediag='0' >
						<return name='Return' type='v0' description='' isconst='0' isHidden='0' isinit='0' usrinit='' setinit='' />
						<local name='dat' type='u8' description='' isconst='0' isHidden='0' isinit='0' usrinit='0' setinit='' />
						<local name='i' type='u8' description='' isconst='0' isHidden='0' isinit='1' usrinit='0' setinit='0' />
						<local name='pos' type='u8' description='' isconst='0' isHidden='0' isinit='1' usrinit='0' setinit='0' />
						<local name='cmds' type='u8' description='' isconst='0' isHidden='0' isinit='0' usrinit='0' setinit='' />
						<local name='buf' type='u8' description='' isconst='0' isHidden='0' isinit='0' usrinit='&quot;&quot;' setinit='' >
							<array size='15' />
						</local>
						<local name='j' type='u8' description='' isconst='0' isHidden='0' isinit='0' usrinit='0' setinit='' />
						<command class_type='loop' title='Set output pins direction' cmdcolor='4767473' cmdcolor_sec='11337727' cmdcolor_txt='16777215' cmdgradient='4' cmdopacity='0.64' type='2' forvar='.i' exp='16' >
							<flowline >
								<command class_type='native' title='Code' ccode='gpio_set_direction(FCL_I, GPIO_MODE_OUTPUT);' cmdcolor='4206456' cmdcolor_sec='10785756' cmdcolor_txt='16777215' cmdgradient='4' cmdopacity='0.64' language='C' />
							</flowline>
						</command>
						<command class_type='calculation' title='Calculation' cmdcolor='4206456' cmdcolor_sec='10785756' cmdcolor_txt='16777215' cmdgradient='4' cmdopacity='0.64' >
							<exp exp='resetPin = 1' />
							<exp exp='' />
						</command>
						<command class_type='delay' title='Delay' cmdcolor='4206456' cmdcolor_sec='10785756' cmdcolor_txt='16777215' cmdgradient='4' cmdopacity='0.64' exp='5' type='1' />
						<command class_type='calculation' title='Calculation' cmdcolor='4206456' cmdcolor_sec='10785756' cmdcolor_txt='16777215' cmdgradient='4' cmdopacity='0.64' >
							<exp exp='resetPin = 0' />
						</command>
						<command class_type='delay' title='Delay' cmdcolor='4206456' cmdcolor_sec='10785756' cmdcolor_txt='16777215' cmdgradient='4' cmdopacity='0.64' exp='5' type='1' />
						<command class_type='calculation' title='Calculation' cmdcolor='4206456' cmdcolor_sec='10785756' cmdcolor_txt='16777215' cmdgradient='4' cmdopacity='0.64' >
							<exp exp='dcPin = 0' />
							<exp exp='readPin = 1' />
							<exp exp='writePin = 1' />
							<exp exp='resetPin = 1' />
						</command>
						<command class_type='delay' title='Delay' cmdcolor='4206456' cmdcolor_sec='10785756' cmdcolor_txt='16777215' cmdgradient='4' cmdopacity='0.64' exp='5' type='1' />
						<command class_type='comment' title='' comment='Next we write to the display registers to setup the device ready for use' textarea='12,0,12,0' cmdcolor='4206456' cmdcolor_sec='10785756' cmdcolor_txt='16777215' cmdgradient='4' cmdopacity='0.64' />
						<command class_type='calculation' title='Calculation' cmdcolor='4206456' cmdcolor_sec='10785756' cmdcolor_txt='16777215' cmdgradient='4' cmdopacity='0.64' >
							<exp exp='.cmds = lut1::GetInt(0)' />
						</command>
						<command class_type='loop' title='Loop' cmdcolor='4767473' cmdcolor_sec='11337727' cmdcolor_txt='16777215' cmdgradient='4' cmdopacity='0.64' type='0' exp='.cmds &gt; 0' >
							<flowline >
								<command class_type='calculation' title='Calculation' cmdcolor='4206456' cmdcolor_sec='10785756' cmdcolor_txt='16777215' cmdgradient='4' cmdopacity='0.64' >
									<exp exp='.pos = .pos + 1' />
									<exp exp='.cmds = .cmds - 1' />
									<exp exp='.i = lut1::GetInt(.pos)' />
									<exp exp='.pos = .pos + 1' />
									<exp exp='.dat = lut1::GetInt(.pos)' />
								</command>
								<command class_type='loop' title='Loop' cmdcolor='4767473' cmdcolor_sec='11337727' cmdcolor_txt='16777215' cmdgradient='4' cmdopacity='0.64' type='2' forvar='.j' exp='.i' >
									<flowline >
										<command class_type='calculation' title='Calculation' cmdcolor='4206456' cmdcolor_sec='10785756' cmdcolor_txt='16777215' cmdgradient='4' cmdopacity='0.64' >
											<exp exp='.pos = .pos + 1' />
											<exp exp='.buf[.j] = lut1::GetInt(.pos)' />
										</command>
									</flowline>
								</command>
								<command class_type='call' title='User Macro' cmdcolor='4487093' cmdcolor_sec='11066367' cmdcolor_txt='16777215' cmdgradient='4' cmdopacity='0.64' macro='LCD_Write_Reg_Data' >
									<argument exp='.dat' />
									<argument exp='.buf' />
									<argument exp='.i' />
								</command>
							</flowline>
						</command>
						<command class_type='delay' title='Delay' break='1' cmdcolor='4206456' cmdcolor_sec='10785756' cmdcolor_txt='16777215' cmdgradient='4' cmdopacity='0.64' exp='120' type='1' />
						<command class_type='call' title='Display On' cmdcolor='4487093' cmdcolor_sec='11066367' cmdcolor_txt='16777215' cmdgradient='4' cmdopacity='0.64' macro='LCD_Write_Reg' >
							<argument exp='0x29' />
						</command>
						<command class_type='delay' title='Delay' cmdcolor='4206456' cmdcolor_sec='10785756' cmdcolor_txt='16777215' cmdgradient='4' cmdopacity='0.64' exp='25' type='1' />
						<command class_type='calculation' title='Calculation' cmdcolor='4206456' cmdcolor_sec='10785756' cmdcolor_txt='16777215' cmdgradient='4' cmdopacity='0.64' >
							<exp exp='backlightPin = 1' />
						</command>
					</flowline>
				</macro>
				<macro >
					<flowline name='LCD_Write_Data16_Bus' description='' statediag='0' >
						<return name='Return' type='v0' description='' isconst='0' isHidden='0' isinit='0' usrinit='' setinit='' />
						<param name='data' type='u16' description='' isconst='0' isHidden='0' isinit='0' usrinit='0' setinit='' >
							<array size='10000' />
						</param>
						<param name='len' type='u16' description='' isconst='0' isHidden='0' isinit='0' usrinit='0' setinit='' />
						<local name='i' type='u16' description='' isconst='0' isHidden='0' isinit='0' usrinit='0' setinit='' />
						<local name='dat' type='u16' description='' isconst='0' isHidden='0' isinit='0' usrinit='0' setinit='' />
						<command class_type='loop' title='Loop' cmdcolor='4767473' cmdcolor_sec='11337727' cmdcolor_txt='16777215' cmdgradient='4' cmdopacity='0.64' type='2' forvar='.i' exp='.len' >
							<flowline >
								<command class_type='calculation' title='Calculation' cmdcolor='4206456' cmdcolor_sec='10785756' cmdcolor_txt='16777215' cmdgradient='4' cmdopacity='0.64' >
									<exp exp='.dat = .data[.i]' />
								</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' cmdcolor='4206456' cmdcolor_sec='10785756' cmdcolor_txt='16777215' cmdgradient='4' cmdopacity='0.64' language='C' />
								<command class_type='calculation' title='Calculation' cmdcolor='4206456' cmdcolor_sec='10785756' cmdcolor_txt='16777215' cmdgradient='4' cmdopacity='0.64' >
									<exp exp='writePin = 0' />
									<exp exp='writePin = 1' />
								</command>
							</flowline>
						</command>
					</flowline>
				</macro>
				<macro >
					<flowline name='AddLine' description='' statediag='0' >
						<return name='Return' type='v0' description='' isconst='0' isHidden='0' isinit='0' usrinit='' setinit='' />
						<command class_type='native' title='Code' ccode='    static lv_point_precise_t line_points[] = { {5, 5}, {70, 70}, {120, 10}, {180, 60}, {240, 10} };

    /*Create style*/
    static lv_style_t style_line;
    lv_style_init(&amp;style_line);
    lv_style_set_line_width(&amp;style_line, 8);
    lv_style_set_line_color(&amp;style_line, lv_palette_main(LV_PALETTE_BLUE));
    lv_style_set_line_rounded(&amp;style_line, true);

    /*Create a line and apply the new style*/
    lv_obj_t * line1;
    line1 = lv_line_create(lv_screen_active());
    lv_line_set_points(line1, line_points, 5);     /*Set the points*/
    lv_obj_add_style(line1, &amp;style_line, 0);
    lv_obj_center(line1);' cmdcolor='4206456' cmdcolor_sec='10785756' cmdcolor_txt='16777215' cmdgradient='4' cmdopacity='0.64' language='C' />
					</flowline>
				</macro>
				<macro >
					<flowline name='IsTouch' description='' statediag='0' >
						<return name='Return' type='b1' description='' isconst='0' isHidden='0' isinit='0' usrinit='0' setinit='' />
						<command class_type='call' title='Component Macro' cmdcolor='4487093' cmdcolor_sec='11066367' cmdcolor_txt='16777215' cmdgradient='4' cmdopacity='0.64' component='FT6X06' macro='SampleSensor' >
							<return exp='.Return' />
						</command>
					</flowline>
				</macro>
				<macro >
					<flowline name='CreateClock' description='' statediag='0' >
						<return name='Return' type='u32' description='' isconst='0' isHidden='0' isinit='0' usrinit='0' setinit='' />
						<command class_type='native' title='Code' ccode='    lv_scale_t *scale = lv_scale_create(lv_screen_active());

    lv_obj_set_size(scale, 300, 300);
    lv_scale_set_mode(scale, LV_SCALE_MODE_ROUND_INNER);
    lv_obj_set_style_bg_opa(scale, LV_OPA_20, 0);
    lv_obj_set_style_bg_color(scale, lv_color_black(), 0);
    lv_obj_set_style_radius(scale, LV_RADIUS_CIRCLE, 0);
    lv_obj_set_style_clip_corner(scale, true, 0);
    lv_obj_center(scale);

    lv_scale_set_label_show(scale, true);

    lv_scale_set_total_tick_count(scale, 61);
    lv_scale_set_major_tick_every(scale, 5);

    static const char * hour_ticks[] = {&quot;12&quot;, &quot;1&quot;, &quot;2&quot;, &quot;3&quot;, &quot;4&quot;, &quot;5&quot;, &quot;6&quot;, &quot;7&quot;, &quot;8&quot;, &quot;9&quot;, &quot;10&quot;, &quot;11&quot;, NULL};
    lv_scale_set_text_src(scale, hour_ticks);

    static lv_style_t indicator_style;
    lv_style_init(&amp;indicator_style);

    /* Label style properties */
    lv_style_set_text_font(&amp;indicator_style, LV_FONT_DEFAULT);
    lv_style_set_text_color(&amp;indicator_style, lv_palette_main(LV_PALETTE_RED));

    /* Major tick properties */
    lv_style_set_line_color(&amp;indicator_style, lv_palette_main(LV_PALETTE_RED));
    lv_style_set_length(&amp;indicator_style, 14); /* tick length */
    lv_style_set_line_width(&amp;indicator_style, 2); /* tick width */
    lv_obj_add_style(scale, &amp;indicator_style, LV_PART_INDICATOR);

    /* Minor tick properties */
    static lv_style_t minor_ticks_style;
    lv_style_init(&amp;minor_ticks_style);
    lv_style_set_line_color(&amp;minor_ticks_style, lv_palette_main(LV_PALETTE_BLUE));
    lv_style_set_length(&amp;minor_ticks_style, 10); /* tick length */
    lv_style_set_line_width(&amp;minor_ticks_style, 2); /* tick width */
    lv_obj_add_style(scale, &amp;minor_ticks_style, LV_PART_ITEMS);

    /* Main line properties */
    static lv_style_t main_line_style;
    lv_style_init(&amp;main_line_style);
    lv_style_set_arc_color(&amp;main_line_style, lv_color_black());
    lv_style_set_arc_width(&amp;main_line_style, 4);
    lv_obj_add_style(scale, &amp;main_line_style, LV_PART_MAIN);

    lv_scale_set_range(scale, 0, 60);

    lv_scale_set_angle_range(scale, 360);
    lv_scale_set_rotation(scale, 270);

    minute_hand = lv_line_create(scale);
    lv_line_set_points_mutable(minute_hand, minute_hand_points, 2);

    lv_obj_set_style_line_width(minute_hand, 5, 0);
    lv_obj_set_style_line_rounded(minute_hand, true, 0);
    lv_obj_set_style_line_color(minute_hand, lv_color_black(), 0);

    hour_hand = lv_line_create(scale);

    lv_obj_set_style_line_width(hour_hand, 10, 0);
    lv_obj_set_style_line_rounded(hour_hand, true, 0);
    lv_obj_set_style_line_color(hour_hand, lv_palette_main(LV_PALETTE_RED), 0);

    hour = 11;
    minute = 5;
    timer = lv_timer_create(FCM_ClockTimer, 100, NULL);
    lv_timer_ready(timer);
    
    lv_obj_set_pos(scale, 0, -40);
    FCV_CLOCK = (MX_UINT32)scale;
    FCR_RETVAL = (MX_UINT32) scale;' cmdcolor='4206456' cmdcolor_sec='10785756' cmdcolor_txt='16777215' cmdgradient='4' cmdopacity='0.64' language='C' />
					</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='tick' type='u32' description='' isconst='0' isHidden='0' isinit='1' usrinit='0' setinit='0' />
						<local name='label' type='u32' description='' isconst='0' isHidden='0' isinit='1' usrinit='0' setinit='0' />
						<local name='slider' type='u32' description='' isconst='0' isHidden='0' isinit='1' usrinit='0' setinit='0' />
						<local name='kb' type='u32' description='' isconst='0' isHidden='0' isinit='1' usrinit='0' setinit='{0,0,0,0}' >
							<array size='4' />
						</local>
						<local name='wifi' type='u32' description='' isconst='0' isHidden='0' isinit='0' usrinit='0' setinit='' />
						<local name='roller' type='u32' description='' isconst='0' isHidden='0' isinit='1' usrinit='0' setinit='0' />
						<local name='i' type='u32' description='' isconst='0' isHidden='0' isinit='0' usrinit='0' setinit='' />
						<local name='clkscr' type='u32' description='' isconst='0' isHidden='0' isinit='0' usrinit='0' setinit='' />
						<command class_type='call' title='User Macro' cmdcolor='4487093' cmdcolor_sec='11066367' cmdcolor_txt='16777215' cmdgradient='4' cmdopacity='0.64' macro='Initialise' />
						<command class_type='native' title='Get the current screen' ccode='FCV_LV_BASE_SCREEN = lv_screen_active();' cmdcolor='4206456' cmdcolor_sec='10785756' cmdcolor_txt='16777215' cmdgradient='4' cmdopacity='0.64' language='C' />
						<command class_type='call' title='List of SSIDs' cmdcolor='4487093' cmdcolor_sec='11066367' cmdcolor_txt='16777215' cmdgradient='4' cmdopacity='0.64' macro='CreateRollerSSID' >
							<return exp='.roller' />
						</command>
						<command class_type='call' title='Keyboard on its own screen' cmdcolor='4487093' cmdcolor_sec='11066367' cmdcolor_txt='16777215' cmdgradient='4' cmdopacity='0.64' macro='CreateKeyboard' >
							<argument exp='.kb' />
						</command>
						<command class_type='loop' title='Loop' cmdcolor='4767473' cmdcolor_sec='11337727' cmdcolor_txt='16777215' cmdgradient='4' cmdopacity='0.64' type='0' exp='1' >
							<flowline >
								<command class_type='calculation' title='Calculation' cmdcolor='4206456' cmdcolor_sec='10785756' cmdcolor_txt='16777215' cmdgradient='4' cmdopacity='0.64' >
									<exp exp='.tick = .tick + 1' />
								</command>
								<command class_type='decision' title='Decision' cmdcolor='4767473' cmdcolor_sec='11337727' cmdcolor_txt='16777215' cmdgradient='4' cmdopacity='0.64' exp='OK' swap='0' >
									<flowline >
										<command class_type='native' title='Code' ccode='lv_screen_load(FCL_KB[0]);' cmdcolor='4206456' cmdcolor_sec='10785756' cmdcolor_txt='16777215' cmdgradient='4' cmdopacity='0.64' language='C' />
										<command class_type='native' title='Code' ccode='lv_roller_get_selected_str(FCL_ROLLER, FCV_SSID, 32);' cmdcolor='4206456' cmdcolor_sec='10785756' cmdcolor_txt='16777215' cmdgradient='4' cmdopacity='0.64' language='C' />
										<command class_type='calculation' title='Calculation' cmdcolor='4206456' cmdcolor_sec='10785756' cmdcolor_txt='16777215' cmdgradient='4' cmdopacity='0.64' >
											<exp exp='OK = false' />
										</command>
									</flowline>
									<flowline />
								</command>
								<command class_type='decision' title='Decision' cmdcolor='4767473' cmdcolor_sec='11337727' cmdcolor_txt='16777215' cmdgradient='4' cmdopacity='0.64' exp='pswd_set' swap='0' >
									<flowline >
										<command class_type='native' title='Code' ccode='char *c = lv_textarea_get_text(FCL_KB[2]);
strcpy(FCV_PASSWORD, c);' cmdcolor='4206456' cmdcolor_sec='10785756' cmdcolor_txt='16777215' cmdgradient='4' cmdopacity='0.64' language='C' />
										<command class_type='calculation' title='Calculation' cmdcolor='4206456' cmdcolor_sec='10785756' cmdcolor_txt='16777215' cmdgradient='4' cmdopacity='0.64' >
											<exp exp='pswd_set = false' />
											<exp exp='password = &quot;temp1234&quot;' />
										</command>
										<command class_type='native' title='Tidy up' ccode='lv_obj_clean(FCV_LV_BASE_SCREEN);
lv_obj_t *scr = lv_screen_active();

 lv_screen_load(FCV_LV_BASE_SCREEN);
 lv_obj_delete(scr);' cmdcolor='4206456' cmdcolor_sec='10785756' cmdcolor_txt='16777215' cmdgradient='4' cmdopacity='0.64' language='C' />
										<command class_type='call' title='User Macro' disable='1' cmdcolor='4487093' cmdcolor_sec='11066367' cmdcolor_txt='16777215' cmdgradient='4' cmdopacity='0.64' macro='ReadTime' />
										<command class_type='call' title='User Macro' cmdcolor='4487093' cmdcolor_sec='11066367' cmdcolor_txt='16777215' cmdgradient='4' cmdopacity='0.64' macro='CreateClock' >
											<return exp='clock' />
										</command>
									</flowline>
									<flowline />
								</command>
								<command class_type='native' title='Code' ccode='lv_tick_inc(10);
lv_timer_handler();' cmdcolor='4206456' cmdcolor_sec='10785756' cmdcolor_txt='16777215' cmdgradient='4' cmdopacity='0.64' language='C' />
								<command class_type='delay' title='Delay' cmdcolor='4206456' cmdcolor_sec='10785756' cmdcolor_txt='16777215' cmdgradient='4' cmdopacity='0.64' exp='10' type='1' />
							</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='' />
						<command class_type='call' title='User Macro' cmdcolor='4487093' cmdcolor_sec='11066367' cmdcolor_txt='16777215' cmdgradient='4' cmdopacity='0.64' macro='InitLittleFS' />
						<command class_type='call' title='Component Macro' cmdcolor='4487093' cmdcolor_sec='11066367' cmdcolor_txt='16777215' cmdgradient='4' cmdopacity='0.64' component='FT6X06' macro='Initialise' />
						<command class_type='call' title='User Macro' cmdcolor='4487093' cmdcolor_sec='11066367' cmdcolor_txt='16777215' cmdgradient='4' cmdopacity='0.64' macro='InitialiseDisplay' />
						<command class_type='call' title='Component Macro' cmdcolor='4487093' cmdcolor_sec='11066367' cmdcolor_txt='16777215' cmdgradient='4' cmdopacity='0.64' component='WLAN_ESP32' macro='Initialise' />
						<command class_type='call' title='Component Macro' cmdcolor='4487093' cmdcolor_sec='11066367' cmdcolor_txt='16777215' cmdgradient='4' cmdopacity='0.64' component='WLAN_ESP32' macro='ConnectToSSID' >
							<argument exp='&quot;&quot;' />
							<argument exp='&quot;&quot;' />
							<argument exp='1' />
						</command>
						<command class_type='call' title='User Macro' cmdcolor='4487093' cmdcolor_sec='11066367' cmdcolor_txt='16777215' cmdgradient='4' cmdopacity='0.64' macro='InitLVGL' />
					</flowline>
				</macro>
			</macros>
			<component class_type='ref' guid='dfb4d07a-3d70-45d5-83ef-07e3c95d86ab' vmin='7' vmaj='1' codename='lut1' panelId='0' x='115.5' y='-119.5' z='0' xsz='25.18' ysz='25.1413' 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' comp2dType='0' >
				<resources />
				<properties />
				<values >
					<value target='Enabled' data='1' />
					<value target='StorageType' data='000' />
					<value target='Sign' data='000' />
					<value target='intfixed' data='0x0E,
0x0F, 0xE0, 0x00, 0x03, 0x09, 0x08, 0x16, 0x0A, 0x3F, 0x78, 0x4C, 0x09, 0x0A, 0x08, 0x16, 0x1A, 0x0F,
0x0F, 0xE1, 0x00, 0x16, 0x19, 0x03, 0x0F, 0x05, 0x32, 0x45, 0x46, 0x04, 0x0E, 0x0D, 0x35, 0x37, 0x0F, 
0x02, 0xC0, 0x17, 0x15,
0x01, 0xC1, 0x47,
0x03, 0xC5, 0x00, 0x12, 0x80,
0x01, 0x36, 0x48,
0x01, 0x3A, 0x55,
0x01, 0xB0, 0x00,
0x01, 0xB1, 0xA0, 
0x01, 0xB4, 0x02, 
0x03, 0xB6, 0x02, 0x02, 0x3B,
0x01, 0xE9, 0x00, 
0x04, 0xF7, 0xA9, 0x51, 0x2C, 0x82,
0x00, 0x11' />
					<value target='floatfixed' data='' />
					<value target='NumVals' data='78' />
					<value target='EmbedIntoC' data='1' />
				</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.048' y='-116' z='1' 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' comp2dType='0' >
				<resources />
				<properties />
				<values >
					<value target='Component' data='' />
					<value target='LibraryComponent1::InputIcon::LinkTo' data='000' />
					<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='1' />
					<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='f0f54e46-0848-4930-9bb6-eff9a34ed229' vmin='4' vmaj='2' codename='WLAN_ESP32' panelId='0' x='123' y='-124' z='2' 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' comp2dType='0' >
				<resources />
				<properties />
				<values >
					<value target='Verbose' data='0' />
					<value target='SSIDScanSize' data='8' />
					<value target='RemapIndex' data='22' />
					<value target='TCP_Base1::interface' data='7' />
					<value target='TCP_Base1::ConsoleData' data='1' />
				</values>
				<events />
				<apis />
				<variables />
				<macros />
			</component>
			<component class_type='ref' guid='920175dd-ace8-49e2-9208-ec548563c9c0' vmin='0' vmaj='1' codename='RTC_ESP32_NTP1' panelId='0' x='115.5' y='-116' z='3' 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' comp2dType='0' >
				<resources />
				<properties />
				<values >
					<value target='TimeServer' data='pool.ntp.org' />
					<value target='GMTOff' data='0' />
					<value target='NumRetries' data='10' />
					<value target='Sim' 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='1282.84' xt='0' yt='0' zt='0' xquat='0' yquat='0' zquat='0' wquat='1' />
		<viewport dx='327' dy='1207' zoom='30.8434' fix_topleft='0' />
		<page x='1000' y='1000' show='0' rgb='7360576' />
		<winpos ID='7005' RectRecentFloat='3190,1710,3840,2160' RectRecentDocked='0,0,327,1240' 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='3186,1583,3840,2160' RectRecentDocked='0,0,327,450' RecentFrameAlignment='16384' RecentRowIndex='0' IsFloating='0' MRUWidth='32767' PinState='0' IsMaximized='0' IsVisible='0' />
	</panel3d>
	<panels2d count='1' >
		<panel2d_0 id='0' name='2D Panel' >
			<winpos ID='1171' RectRecentFloat='606,534,1256,984' RectRecentDocked='2982,220,3398,1718' RecentFrameAlignment='16384' RecentRowIndex='0' IsFloating='0' MRUWidth='32767' PinState='0' IsMaximized='0' IsVisible='1' />
			<background fill='288230376151053813' showgrid='1' gridstyle='1' gridsize='10' gridbrush='71776119075691740' snaptogrid='1' />
		</panel2d_0>
	</panels2d>
	<layout >
		<view type='0' name='Main' mode='0' placement='LAAAAAAAAAABAAAA---------------------wUAAAAiAAAAmwkAANUFAAA' zoom='100' scrollx='0' scrolly='149' flags='0' />
		<view type='0' name='InitialiseDisplay' mode='0' placement='LAAAAAAAAAABAAAA---------------------wUAAAAiAAAAmwkAANUFAAA' zoom='100' scrollx='0' scrolly='0' flags='0' />
		<view type='0' name='LCD_Write_Data8_Bus' mode='0' placement='LAAAAAAAAAABAAAA---------------------wUAAAAiAAAAmwkAANUFAAA' zoom='100' scrollx='0' scrolly='0' flags='0' />
		<view type='0' name='LCD_Write_Data16_Bus' mode='0' placement='LAAAAAAAAAABAAAA---------------------wUAAAAiAAAAmwkAANUFAAA' zoom='100' scrollx='0' scrolly='0' flags='0' />
		<view type='0' name='LCD_Write_Reg' mode='0' placement='LAAAAAAAAAABAAAA---------------------wUAAAAiAAAAmwkAANUFAAA' zoom='100' scrollx='0' scrolly='0' flags='0' />
		<view type='0' name='LCD_Write_Reg_Data' mode='0' placement='LAAAAAAAAAABAAAA---------------------wUAAAAiAAAAmwkAANUFAAA' zoom='100' scrollx='0' scrolly='0' flags='0' />
		<view type='0' name='Window' mode='0' placement='LAAAAAAAAAABAAAA---------------------wUAAAAiAAAAmwkAANUFAAA' zoom='100' scrollx='0' scrolly='0' flags='0' />
		<view type='0' name='Test' mode='0' placement='LAAAAAAAAAABAAAA---------------------wUAAAAiAAAAmwkAANUFAAA' zoom='100' scrollx='0' scrolly='0' flags='0' />
		<view type='0' name='InitLVGL' mode='0' placement='LAAAAAAAAAABAAAA---------------------wUAAAAiAAAAmwkAANUFAAA' zoom='100' scrollx='0' scrolly='0' flags='0' />
		<view type='0' name='InitLittleFS' mode='0' placement='LAAAAAAAAAABAAAA---------------------wUAAAAiAAAAmwkAANUFAAA' zoom='100' scrollx='0' scrolly='0' flags='0' />
		<view type='0' name='ReadTouchXY' mode='0' placement='LAAAAAAAAAABAAAA---------------------wUAAAAiAAAAmwkAANUFAAA' zoom='100' scrollx='0' scrolly='0' flags='0' />
		<view type='0' name='IsTouch' mode='0' placement='LAAAAAAAAAABAAAA---------------------wUAAAAiAAAAmwkAANUFAAA' zoom='100' scrollx='0' scrolly='0' flags='0' />
		<view type='0' name='slider_event_cb' mode='0' placement='LAAAAAAAAAABAAAA---------------------wUAAAAiAAAAmwkAANUFAAA' zoom='100' scrollx='0' scrolly='0' flags='0' />
		<view type='0' name='CreateClock' mode='0' placement='LAAAAAAAAAABAAAA---------------------wUAAAAiAAAAmwkAANUFAAA' zoom='100' scrollx='0' scrolly='0' flags='0' />
		<view type='0' name='ClockTimer' mode='0' placement='LAAAAAAAAAABAAAA---------------------wUAAAAiAAAAmwkAANUFAAA' zoom='100' scrollx='0' scrolly='0' flags='0' />
		<view type='0' name='AddLine' mode='0' placement='LAAAAAAAAAABAAAA---------------------wUAAAAiAAAAmwkAANUFAAA' zoom='100' scrollx='0' scrolly='0' flags='0' />
		<view type='0' name='CreateButton' mode='0' placement='LAAAAAAAAAABAAAA---------------------wUAAAAiAAAAmwkAANUFAAA' zoom='100' scrollx='0' scrolly='0' flags='0' />
		<view type='0' name='ButtonAddEvent' mode='0' placement='LAAAAAAAAAABAAAA---------------------wUAAAAiAAAAmwkAANUFAAA' zoom='100' scrollx='0' scrolly='0' flags='0' />
		<view type='0' name='Btnevent' mode='0' placement='LAAAAAAAAAABAAAA---------------------wUAAAAiAAAAmwkAANUFAAA' zoom='100' scrollx='0' scrolly='0' flags='0' />
		<view type='0' name='CreateKeyboard' mode='0' placement='LAAAAAAAAAABAAAA---------------------wUAAAAiAAAAmwkAANUFAAA' zoom='100' scrollx='0' scrolly='0' flags='0' />
		<view type='0' name='CreateRollerSSID' mode='0' placement='LAAAAAAAAAABAAAA---------------------wUAAAAiAAAAmwkAANUFAAA' zoom='100' scrollx='0' scrolly='0' flags='0' />
		<view type='0' name='KeyboardEvent' mode='0' placement='LAAAAAAAAAABAAAA---------------------wUAAAAiAAAAmwkAANUFAAA' zoom='100' scrollx='0' scrolly='0' flags='0' />
		<view type='0' name='KeyEvent' mode='0' placement='LAAAAAAAAAABAAAA---------------------wUAAAAiAAAAmwkAANUFAAA' zoom='100' scrollx='0' scrolly='0' flags='0' />
		<view type='0' name='ReadTime' mode='0' placement='LAAAAAAAAAABAAAA---------------------wUAAAAiAAAAmwkAANUFAAA' zoom='100' scrollx='0' scrolly='0' flags='0' />
		<view type='0' name='Initialise' mode='0' placement='LAAAAAAAAAABAAAA---------------------wUAAAAiAAAAmwkAANUFAAA' zoom='100' scrollx='0' scrolly='0' flags='0' />
	</layout>
</document>
</root>
