//************************************************************************************
//**  
//**  Source name:   \\NASHJJAKL\Jordy Kleian\Documenten\Flowcode Projects\Projecten\Aquarium Automatics\Firmware v1.0\Test\Test2.fcfx
//**  Title:         
//**  Description:   
//**  Device:        PIC.18F.18F6722
//**  
//**  Generated by:  Flowcode v6.0.0.57
//**  Date:          Saturday, August 17, 2013 22:55:41
//**  Users:         0
//**  
//**        ***UNREGISTERED***
//**  
//**  
//**     NOT FOR COMMERCIAL USE
//**  
//**  http://www.matrixmultimedia.com
//**  
//************************************************************************************


#define MX_PIC
#define MX_CAL_PIC
#define MX_CLK_SPEED 20000000


#ifdef _BOOSTC
#pragma DATA 0x300000, 0x3F
#endif
#ifdef HI_TECH_C
__CONFIG(0x3F);
#endif
#ifdef _BOOSTC
#pragma DATA 0x300001, 0x2
#endif
#ifdef HI_TECH_C
__CONFIG(0x2);
#endif
#ifdef _BOOSTC
#pragma DATA 0x300002, 0xFF
#endif
#ifdef HI_TECH_C
__CONFIG(0xFF);
#endif
#ifdef _BOOSTC
#pragma DATA 0x300003, 0x3E
#endif
#ifdef HI_TECH_C
__CONFIG(0x3E);
#endif
#ifdef _BOOSTC
#pragma DATA 0x300004, 0x3F
#endif
#ifdef HI_TECH_C
__CONFIG(0x3F);
#endif
#ifdef _BOOSTC
#pragma DATA 0x300005, 0x3B
#endif
#ifdef HI_TECH_C
__CONFIG(0x3B);
#endif
#ifdef _BOOSTC
#pragma DATA 0x300006, 0xAB
#endif
#ifdef HI_TECH_C
__CONFIG(0xAB);
#endif
#ifdef _BOOSTC
#pragma DATA 0x300007, 0x3F
#endif
#ifdef HI_TECH_C
__CONFIG(0x3F);
#endif
#ifdef _BOOSTC
#pragma DATA 0x300008, 0xFF
#endif
#ifdef HI_TECH_C
__CONFIG(0xFF);
#endif
#ifdef _BOOSTC
#pragma DATA 0x300009, 0xFF
#endif
#ifdef HI_TECH_C
__CONFIG(0xFF);
#endif
#ifdef _BOOSTC
#pragma DATA 0x30000a, 0xFF
#endif
#ifdef HI_TECH_C
__CONFIG(0xFF);
#endif
#ifdef _BOOSTC
#pragma DATA 0x30000b, 0xFF
#endif
#ifdef HI_TECH_C
__CONFIG(0xFF);
#endif
#ifdef _BOOSTC
#pragma DATA 0x30000c, 0xFF
#endif
#ifdef HI_TECH_C
__CONFIG(0xFF);
#endif
#ifdef _BOOSTC
#pragma DATA 0x30000d, 0xFF
#endif
#ifdef HI_TECH_C
__CONFIG(0xFF);
#endif

/*========================================================================*\
   Use :Include the type definitions
\*========================================================================*/
#include "C:\Program Files (x86)\Flowcode 6 Beta\CAL\internals.c"



/*========================================================================*\
   Use :panel
       :Variable declarations
       :Macro function declarations
\*========================================================================*/
#define FCV_FALSE (0)
#define FCV_TRUE (1)
MX_GLOBAL MX_UINT8 FCV_REQUEST;
MX_GLOBAL MX_UINT8 FCV_WIFI_INIT;


/*========================================================================*\
   Use :dash_IO_flasher1
       :Variable declarations
       :Macro function declarations
\*========================================================================*/

/*========================================================================*\
   Use :TCP_Base1
       :Variable declarations
       :Macro function declarations
\*========================================================================*/

/*========================================================================*\
   Use :fcdhelper
       :Variable declarations
       :Macro function declarations
\*========================================================================*/

/*========================================================================*\
   Use :cal_uart1
       :Variable declarations
       :Macro function declarations
\*========================================================================*/
#define MX_UART_TX_TRIS_1 trisc
#define MX_UART_REF1 
#define MX_UART_RTS_PIN_1 (4)
#define MX_UART_DBITS_1 (8)
#define MX_UART_RETURN_1 (0)
#define MX_UART_RX_PORT_1 portc
#define MX_UART_RTS_PORT_1 portb
#define MX_UART_ECHO_1 (0)
#define MX_UART_FLOWEN_1 (0)
#define MX_UART_CTS_PORT_1 portb
#define MX_UART_TX_PIN_1 (6)
#define MX_UART_RX_TRIS_1 trisc
#define MX_UART_RTS_TRIS_1 trisb
#define MX_UART_BAUD_1 (38400)
#define MX_UART_TX_PORT_1 portc
#define MX_UART_RX_PIN_1 (7)
#define MX_UART_CTS_TRIS_1 trisb
#define MX_UART_CHANNEL_1 (1)
#define MX_UART_CTS_PIN_1 (3)
#define MX_UART_INT_1 (1)

MX_GLOBAL MX_UINT32 FCV_051_cal_uart1__CONSOLE;

void FCD_051_cal_uart1__Prv_TextConsole(MX_CHAR* FCL_STR, MX_UINT16 FCLsz_STR);
void FC_CAL_UART_UpdateBaud_1(MX_UINT8 FCL_NEW_BAUD);
MX_SINT16 FC_CAL_UART_Receive_1(MX_UINT8 FCL_TIMEOUT);
void FC_CAL_UART_Send_1(MX_UINT16 FCL_CHAR);
void FC_CAL_UART_Init_1();
void FC_CAL_UART_Delay_1();
void FC_CAL_UART_Uninit_1();

/*========================================================================*\
   Use :WLAN1
       :Variable declarations
       :Macro function declarations
\*========================================================================*/
#define FCVsz_01_WLAN1__RXBUFFER 30
#define FCVsz_01_WLAN1__OUT4 20
#define FCVsz_01_WLAN1__OUT3 20
#define FCVsz_01_WLAN1__OUT2 20
#define FCVsz_01_WLAN1__OUT1 20
#define FCVsz_01_WLAN1__OUT0 20
#define FCVsz_01_WLAN1__IN2 20
#define FCVsz_01_WLAN1__IN1 20
#define FCVsz_01_WLAN1__IN0 20
#define FCV_01_WLAN1__MX_WLAN_CMD_STX_ERR (2)
#define FCV_01_WLAN1__MX_WLAN_CMD_FAIL_ERR (1)
#define FCV_01_WLAN1__MX_WLAN_CMD_OK (0)
#define FCV_01_WLAN1__MX_WLAN_CMD_TOUT (255)
#define FCV_01_WLAN1__MX_WLAN_CMD_ETX_ERR (5)
#define FCV_01_WLAN1__MX_WLAN_CMD_SERIAL (6)
#define FCV_01_WLAN1__MX_WLAN_CMD_CMD_ERR (3)
#define FCV_01_WLAN1__MAX_OUT_SUBS (5)
#define FCV_01_WLAN1__MX_WLAN_CMD_PARAM_ERR (4)
MX_GLOBAL MX_CHAR FCV_01_WLAN1__RXBUFFER[FCVsz_01_WLAN1__RXBUFFER];
MX_GLOBAL MX_UINT8 FCV_01_WLAN1__RXCOUNT = (0x0);
MX_GLOBAL MX_CHAR FCV_01_WLAN1__OUT4[FCVsz_01_WLAN1__OUT4];
MX_GLOBAL MX_CHAR FCV_01_WLAN1__OUT3[FCVsz_01_WLAN1__OUT3];
MX_GLOBAL MX_CHAR FCV_01_WLAN1__OUT2[FCVsz_01_WLAN1__OUT2];
MX_GLOBAL MX_CHAR FCV_01_WLAN1__OUT1[FCVsz_01_WLAN1__OUT1];
MX_GLOBAL MX_CHAR FCV_01_WLAN1__OUT0[FCVsz_01_WLAN1__OUT0];
MX_GLOBAL MX_UINT8 FCV_01_WLAN1__CMDSTATE = (0x0);
MX_GLOBAL MX_CHAR FCV_01_WLAN1__IN2[FCVsz_01_WLAN1__IN2];
MX_GLOBAL MX_CHAR FCV_01_WLAN1__IN1[FCVsz_01_WLAN1__IN1];
MX_GLOBAL MX_CHAR FCV_01_WLAN1__IN0[FCVsz_01_WLAN1__IN0];

void FCD_01_WLAN1__SendString(MX_CHAR* FCL_TEXT, MX_UINT16 FCLsz_TEXT, MX_UINT8 FCL_CRLF);
MX_UINT8 FCD_01_WLAN1__SendCommand(MX_CHAR* FCL_COMMAND, MX_UINT16 FCLsz_COMMAND);
MX_BOOL FCD_01_WLAN1__IsAlphaNumeric(MX_UINT8 FCL_C);
void FCD_01_WLAN1__EnableCommandMode();
void FCD_01_WLAN1__ReceiveIncoming(MX_CHAR* FCR_RETVAL, MX_UINT16 FCRsz_RETVAL);
MX_UINT8 FCD_01_WLAN1__CheckForPageRequests();
void FCD_01_WLAN1__SendEmbeddedPage(MX_UINT8 FCL_PAGEREF);
MX_UINT8 FCD_01_WLAN1__ReadConnectionStatus();
void FCD_01_WLAN1__SetOutValue(MX_UINT8 FCL_INDEX, MX_CHAR* FCL_VALUE, MX_UINT16 FCLsz_VALUE);
void FCD_01_WLAN1__DisableCommandMode();
MX_BOOL FCD_01_WLAN1__IsNumeric(MX_UINT8 FCL_C);
void FCD_01_WLAN1__GetInValue(MX_CHAR* FCR_RETVAL, MX_UINT16 FCRsz_RETVAL, MX_UINT8 FCL_INDEX);
MX_UINT8 FCD_01_WLAN1__ConnectToSSID(MX_CHAR* FCL_SSID, MX_UINT16 FCLsz_SSID, MX_CHAR* FCL_KEY, MX_UINT16 FCLsz_KEY);
void FCD_01_WLAN1__ParseParams(MX_CHAR* FCL_REQUEST, MX_UINT16 FCLsz_REQUEST);
void FCD_01_WLAN1__DoReset();
MX_UINT8 FCD_01_WLAN1__GetReply();
MX_BOOL FCD_01_WLAN1__IsTerminate(MX_UINT8 FCL_C);
void FCD_01_WLAN1__SendHTMLString(MX_CHAR* FCL_DATA, MX_UINT16 FCLsz_DATA, MX_UINT8 FCL_CRLF);
MX_UINT8 FCD_01_WLAN1__Initialise();

/*========================================================================*\
   Use :ASCII6
       :Variable declarations
       :Macro function declarations
\*========================================================================*/
#define FCVsz_039_ASCII6__FLOATFIXEDLIST 1
#define FCVsz_039_ASCII6__INTLIST 60
#define FCVsz_039_ASCII6__FLOATLIST 1
#define FCVsz_039_ASCII6__INTFIXEDLIST 1
#define FCD_039_ASCII6__INTLIST(ix) FCD_039_ASCII6__INTLIST_LUT[ix]
ROMARRAY_(MX_UINT8) FCD_039_ASCII6__INTLIST_LUT ROMARRAY_E =
{
// Property added elements
  127, 4, 4, 120, 0, 0, 0, 125, 0, 0, 64, 128, 132, 125, 0, 127, 16,
 40, 68, 0, 0, 0, 127, 64, 0, 124, 4, 24, 4, 120, 124, 4, 4,
 120, 0, 56, 68, 68, 68, 56, 252, 68, 68, 68, 56, 56, 68, 68, 68,
 252, 68, 120, 68, 4, 8, 8, 84, 84, 84, 32
// Dynamically added elements
 
};


/*========================================================================*\
   Use :ASCII7
       :Variable declarations
       :Macro function declarations
\*========================================================================*/
#define FCVsz_039_ASCII7__FLOATFIXEDLIST 1
#define FCVsz_039_ASCII7__INTLIST 55
#define FCVsz_039_ASCII7__FLOATLIST 1
#define FCVsz_039_ASCII7__INTFIXEDLIST 1
#define FCD_039_ASCII7__INTLIST(ix) FCD_039_ASCII7__INTLIST_LUT[ix]
ROMARRAY_(MX_UINT8) FCD_039_ASCII7__INTLIST_LUT ROMARRAY_E =
{
// Property added elements
  4, 62, 68, 36, 0, 60, 64, 32, 124, 0, 28, 32, 64, 32, 28, 60, 96,
 48, 96, 60, 108, 16, 16, 108, 0, 156, 160, 96, 60, 0, 100, 84, 84,
 76, 0, 8, 62, 65, 65, 0, 0, 0, 127, 0, 0, 0, 65, 65, 62,
 8, 2, 1, 2, 1, 0
// Dynamically added elements
 
};


/*========================================================================*\
   Use :ASCII5
       :Variable declarations
       :Macro function declarations
\*========================================================================*/
#define FCVsz_039_ASCII5__FLOATFIXEDLIST 1
#define FCVsz_039_ASCII5__INTLIST 60
#define FCVsz_039_ASCII5__FLOATLIST 1
#define FCVsz_039_ASCII5__INTFIXEDLIST 1
#define FCD_039_ASCII5__INTLIST(ix) FCD_039_ASCII5__INTLIST_LUT[ix]
ROMARRAY_(MX_UINT8) FCD_039_ASCII5__INTLIST_LUT ROMARRAY_E =
{
// Property added elements
  2, 4, 8, 16, 32, 0, 65, 65, 127, 0, 4, 2, 1, 2, 4, 128, 128,
 128, 128, 128, 0, 3, 7, 0, 0, 32, 84, 84, 84, 120, 127, 68, 68,
 68, 56, 56, 68, 68, 68, 40, 56, 68, 68, 68, 127, 56, 84, 84, 84,
 24, 8, 126, 9, 9, 0, 24, 164, 164, 164, 124
// Dynamically added elements
 
};


/*========================================================================*\
   Use :ASCII4
       :Variable declarations
       :Macro function declarations
\*========================================================================*/
#define FCVsz_039_ASCII4__FLOATFIXEDLIST 1
#define FCVsz_039_ASCII4__INTLIST 60
#define FCVsz_039_ASCII4__FLOATLIST 1
#define FCVsz_039_ASCII4__INTFIXEDLIST 1
#define FCD_039_ASCII4__INTLIST(ix) FCD_039_ASCII4__INTLIST_LUT[ix]
ROMARRAY_(MX_UINT8) FCD_039_ASCII4__INTLIST_LUT ROMARRAY_E =
{
// Property added elements
  127, 9, 9, 9, 6, 62, 65, 81, 33, 94, 127, 9, 9, 25, 102, 38, 73,
 73, 73, 50, 1, 1, 127, 1, 1, 63, 64, 64, 64, 63, 31, 32, 64,
 32, 31, 63, 64, 60, 64, 63, 99, 20, 8, 20, 99, 7, 8, 112, 8,
 7, 113, 73, 69, 67, 0, 0, 127, 65, 65, 0
// Dynamically added elements
 
};


/*========================================================================*\
   Use :ASCII3
       :Variable declarations
       :Macro function declarations
\*========================================================================*/
#define FCVsz_039_ASCII3__FLOATFIXEDLIST 1
#define FCVsz_039_ASCII3__INTLIST 60
#define FCVsz_039_ASCII3__FLOATLIST 1
#define FCVsz_039_ASCII3__INTFIXEDLIST 1
#define FCD_039_ASCII3__INTLIST(ix) FCD_039_ASCII3__INTLIST_LUT[ix]
ROMARRAY_(MX_UINT8) FCD_039_ASCII3__INTLIST_LUT ROMARRAY_E =
{
// Property added elements
  127, 65, 65, 65, 62, 127, 73, 73, 73, 65, 127, 9, 9, 9, 1, 62, 65,
 73, 73, 122, 127, 8, 8, 8, 127, 0, 65, 127, 65, 0, 48, 64, 64,
 64, 63, 127, 8, 20, 34, 65, 127, 64, 64, 64, 64, 127, 2, 4, 2,
 127, 127, 2, 4, 8, 127, 62, 65, 65, 65, 62
// Dynamically added elements
 
};


/*========================================================================*\
   Use :ASCII2
       :Variable declarations
       :Macro function declarations
\*========================================================================*/
#define FCVsz_039_ASCII2__FLOATFIXEDLIST 1
#define FCVsz_039_ASCII2__INTLIST 60
#define FCVsz_039_ASCII2__FLOATLIST 1
#define FCVsz_039_ASCII2__INTFIXEDLIST 1
#define FCD_039_ASCII2__INTLIST(ix) FCD_039_ASCII2__INTLIST_LUT[ix]
ROMARRAY_(MX_UINT8) FCD_039_ASCII2__INTLIST_LUT ROMARRAY_E =
{
// Property added elements
  54, 73, 73, 73, 54, 6, 73, 73, 41, 30, 0, 108, 108, 0, 0, 0, 236,
 108, 0, 0, 8, 20, 34, 65, 0, 36, 36, 36, 36, 36, 0, 65, 34,
 20, 8, 2, 1, 89, 9, 6, 62, 65, 93, 85, 30, 126, 9, 9, 9,
 126, 127, 73, 73, 73, 54, 62, 65, 65, 65, 34
// Dynamically added elements
 
};


/*========================================================================*\
   Use :ASCII1
       :Variable declarations
       :Macro function declarations
\*========================================================================*/
#define FCVsz_039_ASCII1__FLOATFIXEDLIST 1
#define FCVsz_039_ASCII1__INTLIST 60
#define FCVsz_039_ASCII1__FLOATLIST 1
#define FCVsz_039_ASCII1__INTFIXEDLIST 1
#define FCD_039_ASCII1__INTLIST(ix) FCD_039_ASCII1__INTLIST_LUT[ix]
ROMARRAY_(MX_UINT8) FCD_039_ASCII1__INTLIST_LUT ROMARRAY_E =
{
// Property added elements
  0, 224, 96, 0, 0, 8, 8, 8, 8, 8, 0, 96, 96, 0, 0, 32, 16,
 8, 4, 2, 62, 81, 73, 69, 62, 0, 66, 127, 64, 0, 98, 81, 73,
 73, 70, 34, 73, 73, 73, 54, 24, 20, 18, 127, 16, 47, 73, 73, 73,
 49, 60, 74, 73, 73, 48, 1, 113, 9, 5, 3
// Dynamically added elements
 
};


/*========================================================================*\
   Use :ASCII0
       :Variable declarations
       :Macro function declarations
\*========================================================================*/
#define FCVsz_039_ASCII0__FLOATFIXEDLIST 1
#define FCVsz_039_ASCII0__INTLIST 60
#define FCVsz_039_ASCII0__FLOATLIST 1
#define FCVsz_039_ASCII0__INTFIXEDLIST 1
#define FCD_039_ASCII0__INTLIST(ix) FCD_039_ASCII0__INTLIST_LUT[ix]
ROMARRAY_(MX_UINT8) FCD_039_ASCII0__INTLIST_LUT ROMARRAY_E =
{
// Property added elements
  0, 0, 0, 0, 0, 0, 6, 95, 6, 0, 7, 3, 0, 7, 3, 36, 126,
 36, 126, 36, 36, 43, 106, 18, 0, 99, 19, 8, 100, 99, 54, 73, 86,
 32, 80, 0, 7, 3, 0, 0, 0, 62, 65, 0, 0, 0, 65, 62, 0,
 0, 8, 62, 28, 62, 8, 8, 8, 62, 8, 8
// Dynamically added elements
 
};


/*========================================================================*\
   Use :Base_GLCD
       :Variable declarations
       :Macro function declarations
\*========================================================================*/
MX_GLOBAL MX_UINT32 FCV_07_Base_GLCD__BACKGROUND_COL_VAR;
MX_GLOBAL MX_UINT32 FCV_07_Base_GLCD__POINTCLOUDHANDLE = (0x0);
MX_GLOBAL MX_UINT32 FCV_07_Base_GLCD__FOREGROUND_COL_VAR;

void FCD_07_Base_GLCD__PrintNumber(MX_SINT16 FCL_NUMBER, MX_UINT16 FCL_X, MX_UINT16 FCL_Y, MX_UINT8 FCL_FONT, MX_UINT8 FCL_TRANSPARENT);
void FCD_07_Base_GLCD__DrawLine(MX_UINT16 FCL_X1, MX_UINT16 FCL_Y1, MX_UINT16 FCL_X2, MX_UINT16 FCL_Y2);
void FCD_07_Base_GLCD__Plot(MX_UINT16 FCL_X1, MX_UINT16 FCL_Y1);
void FCD_07_Base_GLCD__BPlot(MX_UINT16 FCL_X1, MX_UINT16 FCL_Y1);
void FCD_07_Base_GLCD__Print(MX_CHAR* FCL_STR, MX_UINT16 FCLsz_STR, MX_UINT16 FCL_X1, MX_UINT16 FCL_Y1, MX_UINT8 FCL_FONT, MX_UINT8 FCL_TRANSPARENT);
void FCD_07_Base_GLCD__ClearDisplay();
void FCD_07_Base_GLCD__SetBackgroundColour(MX_UINT8 FCL_RED, MX_UINT8 FCL_GREEN, MX_UINT8 FCL_BLUE);
MX_UINT8 FCD_07_Base_GLCD__ReadASCIILUT(MX_UINT8 FCL_POS_STR, MX_UINT8 FCL_COUNT);
void FCD_07_Base_GLCD__SetForegroundColour(MX_UINT8 FCL_RED, MX_UINT8 FCL_GREEN, MX_UINT8 FCL_BLUE);
void FCD_07_Base_GLCD__DrawRectangle(MX_UINT16 FCL_X1, MX_UINT16 FCL_Y1, MX_UINT16 FCL_X2, MX_UINT16 FCL_Y2, MX_UINT8 FCL_TRANSPARENT, MX_UINT8 FCL_SOLID);
void FCD_07_Base_GLCD__Initialise();

/*========================================================================*\
   Use :Include the chip adaption layer
\*========================================================================*/
#include "C:\Program Files (x86)\Flowcode 6 Beta\CAL\includes.c"


/*========================================================================*\
   Use :dash_IO_flasher1
       :Macro implementations
\*========================================================================*/

/*========================================================================*\
   Use :TCP_Base1
       :Macro implementations
\*========================================================================*/

/*========================================================================*\
   Use :fcdhelper
       :Macro implementations
\*========================================================================*/

/*========================================================================*\
   Use :cal_uart1
       :Macro implementations
\*========================================================================*/
/*=----------------------------------------------------------------------=*\
   Use :Parameters for macro Prv_TextConsole:
       :  Str[20] : MX_CHAR (by-ref)
\*=----------------------------------------------------------------------=*/
void FCD_051_cal_uart1__Prv_TextConsole(MX_CHAR* FCL_STR, MX_UINT16 FCLsz_STR)
{


}


/*========================================================================*\
   Use :WLAN1
       :Macro implementations
\*========================================================================*/
/*=----------------------------------------------------------------------=*\
   Use :Parameters for macro SendString:
       :  Text[20] : MX_CHAR (by-ref)
       :  CrLf : MX_UINT8
\*=----------------------------------------------------------------------=*/
void FCD_01_WLAN1__SendString(MX_CHAR* FCL_TEXT, MX_UINT16 FCLsz_TEXT, MX_UINT8 FCL_CRLF)
{
	//Local variable definitions
	MX_UINT8 FCL_IDX;


	FCL_IDX = 0;

	while (FCL_TEXT[FCL_IDX])
	{

		FC_CAL_UART_Send_1(FCL_TEXT[FCL_IDX]);

		FCL_IDX = FCL_IDX + 1;


	}

	if (FCL_CRLF)
	{

		FC_CAL_UART_Send_1(0x0d);

		FC_CAL_UART_Send_1(0x0a);

	// } else {

	}

}

/*=----------------------------------------------------------------------=*\
   Use :Parameters for macro SendCommand:
       :  Command[20] : MX_CHAR (by-ref)
       :
       :Returns : MX_UINT8
\*=----------------------------------------------------------------------=*/
MX_UINT8 FCD_01_WLAN1__SendCommand(MX_CHAR* FCL_COMMAND, MX_UINT16 FCLsz_COMMAND)
{
	//Local variable definitions
	MX_UINT16 FCL_ATTEMPTS = (0x0);
	MX_UINT8 FCL_WAITREPLY;
	MX_UINT16 FCL_TIMEOUT = (0x0);
	MX_UINT8 FCR_RETVAL;


	FCR_RETVAL = 255;

	FCD_01_WLAN1__EnableCommandMode();

	while ((FCR_RETVAL) & (FCL_ATTEMPTS < 30))
	{

		if (FCV_01_WLAN1__CMDSTATE == 0)
		{

		} else {

			FCI_DELAYBYTE_MS(1);

			FCV_01_WLAN1__CMDSTATE = 0;

		}

		FCV_01_WLAN1__CMDSTATE = 1;
		FCV_01_WLAN1__RXCOUNT = 0;

		FC_CAL_UART_Send_1('<');

		FCD_01_WLAN1__SendString(FCL_COMMAND, FCLsz_COMMAND, 0);

		FC_CAL_UART_Send_1('>');

		FCL_TIMEOUT = 0;

		while ((FCV_01_WLAN1__CMDSTATE == 1) & (FCL_TIMEOUT < 20000))
		{

			FCI_DELAYBYTE_US(40);

			FCL_TIMEOUT = FCL_TIMEOUT + 1;


		}

		if (FCL_TIMEOUT == 20000)
		{

			FCV_01_WLAN1__CMDSTATE = 0;

		// } else {

		}

		FCR_RETVAL = FCD_01_WLAN1__GetReply();

		FCL_ATTEMPTS = FCL_ATTEMPTS + 1;


	}

	return (FCR_RETVAL);

}

/*=----------------------------------------------------------------------=*\
   Use :Parameters for macro IsAlphaNumeric:
       :  c : MX_UINT8
       :
       :Returns : MX_BOOL
\*=----------------------------------------------------------------------=*/
MX_BOOL FCD_01_WLAN1__IsAlphaNumeric(MX_UINT8 FCL_C)
{
	//Local variable definitions
	MX_BOOL FCR_RETVAL;


	if ((FCL_C < 40) | (FCL_C == '=') | (FCL_C == '?') | (FCL_C == '&'))
	{

		FCR_RETVAL = 0;

	} else {

		FCR_RETVAL = 1;

	}

	return (FCR_RETVAL);

}

/*=----------------------------------------------------------------------=*\
   Use :
\*=----------------------------------------------------------------------=*/
void FCD_01_WLAN1__EnableCommandMode()
{

	FCP_SET(D, 0x80, 0x7, 0);

}

/*=----------------------------------------------------------------------=*\
   Use :Returns : MX_CHAR
\*=----------------------------------------------------------------------=*/
void FCD_01_WLAN1__ReceiveIncoming(MX_CHAR* FCR_RETVAL, MX_UINT16 FCRsz_RETVAL)
{
	//Local variable definitions


	//Comment:
	//TODO
	//check this return is non-binary text only
	//if not then we will need an API to read the RxCount

	FCV_01_WLAN1__RXBUFFER[FCV_01_WLAN1__RXCOUNT] = 0;
	FCI_SCOPY(FCV_01_WLAN1__RXBUFFER,FCVsz_01_WLAN1__RXBUFFER, FCR_RETVAL,FCRsz_RETVAL);

}

/*=----------------------------------------------------------------------=*\
   Use :Returns : MX_UINT8
\*=----------------------------------------------------------------------=*/
MX_UINT8 FCD_01_WLAN1__CheckForPageRequests()
{
	//Local variable definitions
	MX_UINT8 FCL_PAGE = (0x0);
	MX_UINT8 FCL_IDX = (0x1);
	MX_UINT8 FCL_LENGTH = (0x0);
	#define FCLsz_COUNT 4
	MX_CHAR FCL_COUNT[FCLsz_COUNT];
	#define FCLsz_NAME 20
	MX_CHAR FCL_NAME[FCLsz_NAME];
	MX_UINT8 FCR_RETVAL;


	FCL_PAGE = 0;
	FCL_IDX = 1;

	FCD_01_WLAN1__DisableCommandMode();

	if ((FCV_01_WLAN1__RXBUFFER[0] == '/') && (FCV_01_WLAN1__CMDSTATE == 0))
	{

		FCL_PAGE = 1;

		if ((FCV_01_WLAN1__RXBUFFER[1] == 0) | (FCV_01_WLAN1__RXBUFFER[1] == ' '))
		{

		} else {

			while ((FCV_01_WLAN1__RXBUFFER[FCL_IDX] != 0) && (FCV_01_WLAN1__RXBUFFER[FCL_IDX] != '?'))
			{

				FCL_NAME[FCL_IDX - 1] = FCV_01_WLAN1__RXBUFFER[FCL_IDX];
				FCL_IDX = FCL_IDX + 1;


			}

			FCL_NAME[FCL_IDX - 1] = 0;

			#if (1)

				if (FCI_COMPARE("index", 5, FCL_NAME, FCLsz_NAME, 1) == 0)
				{

					FCL_PAGE = 1;

				// } else {

				}

			// #else

			//Code has been optimised out by the pre-processor
			#endif

			#if (0)

			//Code has been optimised out by the pre-processor
			// #else

			#endif

			#if (0)

			//Code has been optimised out by the pre-processor
			// #else

			#endif

			#if (0)

			//Code has been optimised out by the pre-processor
			// #else

			#endif

		}

		FCI_SCOPY("",0, FCV_01_WLAN1__IN0,FCVsz_01_WLAN1__IN0);
		FCI_SCOPY("",0, FCV_01_WLAN1__IN1,FCVsz_01_WLAN1__IN1);
		FCI_SCOPY("",0, FCV_01_WLAN1__IN2,FCVsz_01_WLAN1__IN2);

		if (FCV_01_WLAN1__RXBUFFER[FCL_IDX] == '?')
		{

			FCD_01_WLAN1__ParseParams(FCV_01_WLAN1__RXBUFFER, FCVsz_01_WLAN1__RXBUFFER);

		// } else {

		}

		FCD_01_WLAN1__SendString("HTTP/1.0 200 OK", 15, 1);

		//Comment:
		//we could send the content type here, such as..
		//"Content-type: text/html"
		//but we would need to be more specific for other media types

		FCD_01_WLAN1__SendString("", 0, 1);

		//Comment:
		//we previously interted the doc type here, e.g...
		//"<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">"
		//could be replaced with simply...
		//"<!DOCTYPE HTML>"
		//but again that's not helpful if we are not sending html

		if (FCL_PAGE > 0)
		{

			FCD_01_WLAN1__SendEmbeddedPage(FCL_PAGE);

		} else {

			FCD_01_WLAN1__SendString("404 - Page Not Found.", 21, 1);

		}

		FCV_01_WLAN1__RXBUFFER[0] = 0;

	// } else {

	}

	FCR_RETVAL = FCL_PAGE;

	return (FCR_RETVAL);

	//Local variable definitions
	#undef FCLsz_COUNT
	#undef FCLsz_NAME
}

/*=----------------------------------------------------------------------=*\
   Use :Parameters for macro SendEmbeddedPage:
       :  PageRef : MX_UINT8
\*=----------------------------------------------------------------------=*/
void FCD_01_WLAN1__SendEmbeddedPage(MX_UINT8 FCL_PAGEREF)
{

	switch (FCL_PAGEREF)
	{
		case 2:
		{
			#if (0) // 1 > 1

			//Code has been optimised out by the pre-processor
			// #else

			#endif

			break;
		}
		case 3:
		{
			#if (0) // 1 > 2

			//Code has been optimised out by the pre-processor
			// #else

			#endif

			break;
		}
		case 4:
		{
			#if (0) // 1 > 3

			//Code has been optimised out by the pre-processor
			// #else

			#endif

			break;
		}
		default:
		{
			#if (1) // 1 > 0

				#if (1) // 1 > 0

					FCD_01_WLAN1__SendHTMLString("Hello World", 11, 0);

				// #else

				//Code has been optimised out by the pre-processor
				#endif

				#if (0) // 1 > 1

				//Code has been optimised out by the pre-processor
				// #else

				#endif

				#if (0) // 1 > 2

				//Code has been optimised out by the pre-processor
				// #else

				#endif

				#if (0) // 1 > 3

				//Code has been optimised out by the pre-processor
				// #else

				#endif

				#if (0) // 1 > 4

				//Code has been optimised out by the pre-processor
				// #else

				#endif

				#if (0) // 1 > 5

				//Code has been optimised out by the pre-processor
				// #else

				#endif

				#if (0) // 1 > 6

				//Code has been optimised out by the pre-processor
				// #else

				#endif

				#if (0) // 1 > 7

				//Code has been optimised out by the pre-processor
				// #else

				#endif

				#if (0) // 1 > 8

				//Code has been optimised out by the pre-processor
				// #else

				#endif

				#if (0) // 1 > 9

				//Code has been optimised out by the pre-processor
				// #else

				#endif

			// #else

			//Code has been optimised out by the pre-processor
			#endif

		}
	}

}

/*=----------------------------------------------------------------------=*\
   Use :Returns : MX_UINT8
\*=----------------------------------------------------------------------=*/
MX_UINT8 FCD_01_WLAN1__ReadConnectionStatus()
{
	//Local variable definitions
	MX_UINT8 FCR_RETVAL;


	FCD_01_WLAN1__SendCommand("RC", 2);

	//Comment:
	//wait reply ???????

	//Comment:
	////In buffer should be "<S0>" not connected or "<S1>" connected

	FCR_RETVAL = FCV_01_WLAN1__RXBUFFER[2] - '0';

	return (FCR_RETVAL);

}

/*=----------------------------------------------------------------------=*\
   Use :Set the value of an outbound substitution string
       :
       :Parameters for macro SetOutValue:
       :  index : MX_UINT8
       :  value[20] : MX_CHAR (by-ref)
\*=----------------------------------------------------------------------=*/
void FCD_01_WLAN1__SetOutValue(MX_UINT8 FCL_INDEX, MX_CHAR* FCL_VALUE, MX_UINT16 FCLsz_VALUE)
{

	switch (FCL_INDEX)
	{
		case 1:
		{
			FCI_SCOPY(FCL_VALUE,FCLsz_VALUE, FCV_01_WLAN1__OUT1,FCVsz_01_WLAN1__OUT1);

			break;
		}
		case 2:
		{
			FCI_SCOPY(FCL_VALUE,FCLsz_VALUE, FCV_01_WLAN1__OUT2,FCVsz_01_WLAN1__OUT2);

			break;
		}
		case 3:
		{
			FCI_SCOPY(FCL_VALUE,FCLsz_VALUE, FCV_01_WLAN1__OUT3,FCVsz_01_WLAN1__OUT3);

			break;
		}
		case 4:
		{
			FCI_SCOPY(FCL_VALUE,FCLsz_VALUE, FCV_01_WLAN1__OUT4,FCVsz_01_WLAN1__OUT4);

			break;
		}
		default:
		{
			FCI_SCOPY(FCL_VALUE,FCLsz_VALUE, FCV_01_WLAN1__OUT0,FCVsz_01_WLAN1__OUT0);

		}
	}

}

/*=----------------------------------------------------------------------=*\
   Use :
\*=----------------------------------------------------------------------=*/
void FCD_01_WLAN1__DisableCommandMode()
{

	FCP_SET(D, 0x80, 0x7, 1);

}

/*=----------------------------------------------------------------------=*\
   Use :Parameters for macro IsNumeric:
       :  c : MX_UINT8
       :
       :Returns : MX_BOOL
\*=----------------------------------------------------------------------=*/
MX_BOOL FCD_01_WLAN1__IsNumeric(MX_UINT8 FCL_C)
{
	//Local variable definitions
	MX_BOOL FCR_RETVAL;


	if ((FCL_C >= '0') & (FCL_C <= '9'))
	{

		FCR_RETVAL = 1;

	} else {

		FCR_RETVAL = 0;

	}

	return (FCR_RETVAL);

}

/*=----------------------------------------------------------------------=*\
   Use :Returns the string value of a Request parameter
       :
       :Parameters for macro GetInValue:
       :  index : MX_UINT8
       :
       :Returns : MX_CHAR
\*=----------------------------------------------------------------------=*/
void FCD_01_WLAN1__GetInValue(MX_CHAR* FCR_RETVAL, MX_UINT16 FCRsz_RETVAL, MX_UINT8 FCL_INDEX)
{
	//Local variable definitions


	switch (FCL_INDEX)
	{
		case 1:
		{
			FCI_SCOPY(FCV_01_WLAN1__IN1,FCVsz_01_WLAN1__IN1, FCR_RETVAL,FCRsz_RETVAL);

			break;
		}
		case 2:
		{
			FCI_SCOPY(FCV_01_WLAN1__IN2,FCVsz_01_WLAN1__IN2, FCR_RETVAL,FCRsz_RETVAL);

			break;
		}
		default:
		{
			FCI_SCOPY(FCV_01_WLAN1__IN0,FCVsz_01_WLAN1__IN0, FCR_RETVAL,FCRsz_RETVAL);

		}
	}

}

/*=----------------------------------------------------------------------=*\
   Use :Parameters for macro ConnectToSSID:
       :  SSID[20] : MX_CHAR (by-ref)
       :  Key[20] : MX_CHAR (by-ref)
       :
       :Returns : MX_UINT8
\*=----------------------------------------------------------------------=*/
MX_UINT8 FCD_01_WLAN1__ConnectToSSID(MX_CHAR* FCL_SSID, MX_UINT16 FCLsz_SSID, MX_CHAR* FCL_KEY, MX_UINT16 FCLsz_KEY)
{
	//Local variable definitions
	#define FCLsz_COMMAND 60
	MX_CHAR FCL_COMMAND[FCLsz_COMMAND];
	MX_UINT8 FCR_RETVAL;


	FCR_RETVAL = 255;

	#if (0) // 0 == 3

	//Code has been optimised out by the pre-processor
	// #else

	#endif

	return (FCR_RETVAL);

	//Local variable definitions
	#undef FCLsz_COMMAND
}

/*=----------------------------------------------------------------------=*\
   Use :evaluate the In request parameter values
       :
       :Parameters for macro ParseParams:
       :  request[20] : MX_CHAR (by-ref)
\*=----------------------------------------------------------------------=*/
void FCD_01_WLAN1__ParseParams(MX_CHAR* FCL_REQUEST, MX_UINT16 FCLsz_REQUEST)
{
	//Local variable definitions
	MX_UINT16 FCL_N = (0x0);
	MX_UINT8 FCL_PARAM;
	MX_UINT8 FCL_DONE;
	#define FCLsz_VALUE 20
	MX_CHAR FCL_VALUE[FCLsz_VALUE];
	MX_UINT8 FCL_LENGTH;


	FCL_DONE = 0;

	while (FCL_DONE == 0)
	{

		if (FCD_01_WLAN1__IsTerminate(FCL_REQUEST[FCL_N]))
		{

			FCL_DONE = 1;

		// } else {

		}

		if ((FCL_REQUEST[FCL_N] == '?') | (FCL_REQUEST[FCL_N] == '&'))
		{

			FCL_PARAM = 0;
			FCL_N = FCL_N + 1;

			while (FCD_01_WLAN1__IsAlphaNumeric(FCL_REQUEST[FCL_N]))
			{

				if (FCD_01_WLAN1__IsNumeric(FCL_REQUEST[FCL_N]))
				{

					FCL_PARAM = (FCL_PARAM * 10) + FCL_REQUEST[FCL_N] - '0';

				// } else {

				}

				FCL_N = FCL_N + 1;


			}

			if (FCL_REQUEST[FCL_N] == '=')
			{

				FCL_LENGTH = 0;
				FCI_SCOPY("",0, FCL_VALUE,FCLsz_VALUE);
				FCL_N = FCL_N + 1;

				while ((FCD_01_WLAN1__IsAlphaNumeric(FCL_REQUEST[FCL_N])) & (FCL_LENGTH < 18))
				{

					FCL_VALUE[FCL_LENGTH] = FCL_REQUEST[FCL_N];
					FCL_N = FCL_N + 1;
					FCL_LENGTH = FCL_LENGTH + 1;


				}

				FCL_VALUE[FCL_LENGTH] = 0;

				//Comment:
				//save the In value

				switch (FCL_PARAM)
				{
					case 1:
					{
						FCI_SCOPY(FCL_VALUE,FCLsz_VALUE, FCV_01_WLAN1__IN1,FCVsz_01_WLAN1__IN1);

						break;
					}
					case 2:
					{
						FCI_SCOPY(FCL_VALUE,FCLsz_VALUE, FCV_01_WLAN1__IN2,FCVsz_01_WLAN1__IN2);

						break;
					}
					default:
					{
						FCI_SCOPY(FCL_VALUE,FCLsz_VALUE, FCV_01_WLAN1__IN0,FCVsz_01_WLAN1__IN0);

					}
				}

			// } else {

			}

		} else {

			FCL_N = FCL_N + 1;

		}


	}

	//Local variable definitions
	#undef FCLsz_VALUE
}

/*=----------------------------------------------------------------------=*\
   Use :
\*=----------------------------------------------------------------------=*/
void FCD_01_WLAN1__DoReset()
{

	FCP_SET(D, 0x10, 0x4, 1);

	FCI_DELAYINT_MS(500);

	FCP_SET(D, 0x10, 0x4, 0);

	FCI_DELAYBYTE_MS(100);

}

/*=----------------------------------------------------------------------=*\
   Use :Returns : MX_UINT8
\*=----------------------------------------------------------------------=*/
MX_UINT8 FCD_01_WLAN1__GetReply()
{
	//Local variable definitions
	MX_UINT8 FCR_RETVAL;


	//Comment:
	//RxCount and RxBuffer are populated by the UART Interrupt

	FCR_RETVAL = FCV_01_WLAN1__MX_WLAN_CMD_TOUT;

	if (FCV_01_WLAN1__RXCOUNT > 1)
	{

		switch (FCV_01_WLAN1__RXBUFFER[1])
		{
			case 'S':
			{
				FCR_RETVAL = FCV_01_WLAN1__MX_WLAN_CMD_OK;

				break;
			}
			case 'F':
			{
				FCR_RETVAL = FCV_01_WLAN1__MX_WLAN_CMD_FAIL_ERR;

				break;
			}
			case '0':
			{
				FCR_RETVAL = FCV_01_WLAN1__MX_WLAN_CMD_STX_ERR;

				break;
			}
			case '1':
			{
				FCR_RETVAL = FCV_01_WLAN1__MX_WLAN_CMD_CMD_ERR;

				break;
			}
			case '2':
			{
				FCR_RETVAL = FCV_01_WLAN1__MX_WLAN_CMD_PARAM_ERR;

				break;
			}
			case '3':
			{
				FCR_RETVAL = FCV_01_WLAN1__MX_WLAN_CMD_ETX_ERR;

				break;
			}
			case 'E':
			{
				FCR_RETVAL = FCV_01_WLAN1__MX_WLAN_CMD_SERIAL;

				break;
			}
			default:
			{
			}
		}

	// } else {

	}

	return (FCR_RETVAL);

}

/*=----------------------------------------------------------------------=*\
   Use :Parameters for macro IsTerminate:
       :  c : MX_UINT8
       :
       :Returns : MX_BOOL
\*=----------------------------------------------------------------------=*/
MX_BOOL FCD_01_WLAN1__IsTerminate(MX_UINT8 FCL_C)
{
	//Local variable definitions
	MX_BOOL FCR_RETVAL;


	if ((FCL_C < ' '))
	{

		FCR_RETVAL = 1;

	} else {

		FCR_RETVAL = 0;

	}

	return (FCR_RETVAL);

}

/*=----------------------------------------------------------------------=*\
   Use :sends the Text string to the WLAN UART, but also substitutes %x for Outx values
       :
       :Parameters for macro SendHTMLString:
       :  Data[20] : MX_CHAR (by-ref)
       :  CrLf : MX_UINT8
\*=----------------------------------------------------------------------=*/
void FCD_01_WLAN1__SendHTMLString(MX_CHAR* FCL_DATA, MX_UINT16 FCLsz_DATA, MX_UINT8 FCL_CRLF)
{
	//Local variable definitions
	MX_UINT8 FCL_IDX = (0x0);
	#define FCLsz_NUM_STR 20
	MX_CHAR FCL_NUM_STR[FCLsz_NUM_STR];
	MX_UINT8 FCL_SUBIDX;
	MX_UINT8 FCL_LEN;


	while (FCL_DATA[FCL_IDX] != 0)
	{

		if (FCL_DATA[FCL_IDX] == '%')
		{

			if (FCL_DATA[FCL_IDX + 1] == '%')
			{

				FC_CAL_UART_Send_1('%');

			} else {

				if ((FCL_DATA[FCL_IDX + 1] >= '0') && (FCL_DATA[FCL_IDX + 1] < ('0' + FCV_01_WLAN1__MAX_OUT_SUBS)))
				{

					FCL_SUBIDX = FCL_DATA[FCL_IDX + 1] - '0';

					switch (FCL_DATA[FCL_IDX + 1] - '0')
					{
						case 1:
						{
							FCI_SCOPY(FCV_01_WLAN1__OUT1,FCVsz_01_WLAN1__OUT1, FCL_NUM_STR,FCLsz_NUM_STR);

							break;
						}
						case 2:
						{
							FCI_SCOPY(FCV_01_WLAN1__OUT2,FCVsz_01_WLAN1__OUT2, FCL_NUM_STR,FCLsz_NUM_STR);

							break;
						}
						case 3:
						{
							FCI_SCOPY(FCV_01_WLAN1__OUT3,FCVsz_01_WLAN1__OUT3, FCL_NUM_STR,FCLsz_NUM_STR);

							break;
						}
						case 4:
						{
							FCI_SCOPY(FCV_01_WLAN1__OUT4,FCVsz_01_WLAN1__OUT4, FCL_NUM_STR,FCLsz_NUM_STR);

							break;
						}
						default:
						{
							FCI_SCOPY(FCV_01_WLAN1__OUT0,FCVsz_01_WLAN1__OUT0, FCL_NUM_STR,FCLsz_NUM_STR);

						}
					}

					FCL_LEN = FCI_GETLENGTH(FCL_NUM_STR, FCLsz_NUM_STR);
					FCL_SUBIDX = 0;

					while (FCL_SUBIDX < FCL_LEN)
					{

						FC_CAL_UART_Send_1(FCL_NUM_STR[FCL_SUBIDX]);

						FCL_SUBIDX = FCL_SUBIDX + 1;


					}

				} else {

					//Comment:
					//Illegal substitution - just ignore

					FC_CAL_UART_Send_1('%');

					FC_CAL_UART_Send_1(FCL_DATA[FCL_IDX + 1]);

				}

			}

			FCL_IDX = FCL_IDX + 2;

		} else {

			FC_CAL_UART_Send_1(FCL_DATA[FCL_IDX]);

			FCL_IDX = FCL_IDX + 1;

		}


	}

	if (FCL_CRLF)
	{

		FC_CAL_UART_Send_1(0x0d);

		FC_CAL_UART_Send_1(0x0a);

	// } else {

	}

	//Local variable definitions
	#undef FCLsz_NUM_STR
}

/*=----------------------------------------------------------------------=*\
   Use :Returns : MX_UINT8
\*=----------------------------------------------------------------------=*/
MX_UINT8 FCD_01_WLAN1__Initialise()
{
	//Local variable definitions
	MX_UINT8 FCR_RETVAL;


	FCV_01_WLAN1__OUT0[0] = 0;
	FCV_01_WLAN1__OUT1[0] = 0;
	FCV_01_WLAN1__OUT2[0] = 0;
	FCV_01_WLAN1__OUT3[0] = 0;
	FCV_01_WLAN1__OUT4[0] = 0;
	FCV_01_WLAN1__IN0[0] = 0;
	FCV_01_WLAN1__IN1[0] = 0;
	FCV_01_WLAN1__IN2[0] = 0;

	FCR_RETVAL = 255;

	FC_CAL_UART_Init_1();

	FCI_DELAYBYTE_MS(1);

	FCD_01_WLAN1__EnableCommandMode();

	FCP_SET(D, 0x10, 0x4, 0);

	FCI_DELAYBYTE_US(10);

	FCD_01_WLAN1__DoReset();

	FCR_RETVAL = FCD_01_WLAN1__SendCommand("OI5", 3);

	if (FCR_RETVAL)
	{

		FCR_RETVAL = FCD_01_WLAN1__SendCommand("OI5", 3);

	// } else {

	}

	if (FCR_RETVAL)
	{

	} else {

		FCD_01_WLAN1__SendCommand("GO0", 3);

		FCD_01_WLAN1__SendCommand("WM2", 3);

		#if (1) // (0 == 0) | (1 == 0)

			#if (0) // 0 == 3

			//Code has been optimised out by the pre-processor
			#else

				FCD_01_WLAN1__SendCommand("WI192.168.1.115", 15);

				FCD_01_WLAN1__SendCommand("WS255.255.255.0", 15);

				FCD_01_WLAN1__SendCommand("WG192.168.1.1", 13);

			#endif

		// #else

		//Code has been optimised out by the pre-processor
		#endif

		#if (1) // 0 == 0

			#if (1) // 1 == 1

				FCD_01_WLAN1__SendCommand("WH192.168.1.10_192.168.1.20", 27);

			// #else

			//Code has been optimised out by the pre-processor
			#endif

			FCD_01_WLAN1__SendCommand("GSAquaController", 16);

			FCD_01_WLAN1__SendCommand("GNAquaController", 16);

			FCD_01_WLAN1__SendCommand("GH0", 3);

			FCD_01_WLAN1__SendCommand("GC11", 4);

			FCD_01_WLAN1__SendCommand("WD1", 3);

		// #else

		//Code has been optimised out by the pre-processor
		#endif

		FCI_DELAYBYTE_MS(10);

		FCD_01_WLAN1__SendCommand("GP14", 4);

		FCD_01_WLAN1__SendCommand("GR48", 4);

		FCD_01_WLAN1__SendCommand("OI1", 3);

		FCD_01_WLAN1__SendCommand("WP5000", 6);

		#if (1) // 0 == 0

			FCD_01_WLAN1__SendCommand("GU1_0", 5);

		// #else

		//Code has been optimised out by the pre-processor
		#endif

		FCR_RETVAL = 0;

	}

	return (FCR_RETVAL);

}


/*========================================================================*\
   Use :ASCII6
       :Macro implementations
\*========================================================================*/

/*========================================================================*\
   Use :ASCII7
       :Macro implementations
\*========================================================================*/

/*========================================================================*\
   Use :ASCII5
       :Macro implementations
\*========================================================================*/

/*========================================================================*\
   Use :ASCII4
       :Macro implementations
\*========================================================================*/

/*========================================================================*\
   Use :ASCII3
       :Macro implementations
\*========================================================================*/

/*========================================================================*\
   Use :ASCII2
       :Macro implementations
\*========================================================================*/

/*========================================================================*\
   Use :ASCII1
       :Macro implementations
\*========================================================================*/

/*========================================================================*\
   Use :ASCII0
       :Macro implementations
\*========================================================================*/

/*========================================================================*\
   Use :Base_GLCD
       :Macro implementations
\*========================================================================*/
/*=----------------------------------------------------------------------=*\
   Use :This macro prints a decimal number to the Graphical LCD.
       :
       :Parameters for macro PrintNumber:
       :  Number : Byte or Integer number to send to the display.
       :  X : X pixel coordinate to set the output string position.
       :  Y : Y pixel coordinate to set the output string position.
       :  Font : Size of the font - 0 = Normal, 1 = Double Width, 2 = Double Width and Height, 3 = Double Height
       :  Transparent : Specifies if the background of the text is drawn - 0 = Background colour is drawn, 1 = Background colour not drawn.
\*=----------------------------------------------------------------------=*/
void FCD_07_Base_GLCD__PrintNumber(MX_SINT16 FCL_NUMBER, MX_UINT16 FCL_X, MX_UINT16 FCL_Y, MX_UINT8 FCL_FONT, MX_UINT8 FCL_TRANSPARENT)
{
	//Local variable definitions
	#define FCLsz_TEMP 6
	MX_CHAR FCL_TEMP[FCLsz_TEMP];


	FCI_TOSTRING(FCL_NUMBER, FCL_TEMP,FCLsz_TEMP);

	FCD_07_Base_GLCD__Print(FCL_TEMP, FCLsz_TEMP, FCL_X, FCL_Y, FCL_FONT, FCL_TRANSPARENT);

	//Local variable definitions
	#undef FCLsz_TEMP
}

/*=----------------------------------------------------------------------=*\
   Use :Draws a line with the current foreground colour from pixel location X1, Y1 to pixel location X2, Y2.
       :
       :Parameters for macro DrawLine:
       :  X1 : MX_UINT16
       :  Y1 : MX_UINT16
       :  X2 : MX_UINT16
       :  Y2 : MX_UINT16
\*=----------------------------------------------------------------------=*/
void FCD_07_Base_GLCD__DrawLine(MX_UINT16 FCL_X1, MX_UINT16 FCL_Y1, MX_UINT16 FCL_X2, MX_UINT16 FCL_Y2)
{
	//Local variable definitions
	MX_SINT16 FCL_C1;
	MX_SINT16 FCL_M1;
	MX_SINT16 FCL_D1 = (0);
	MX_SINT16 FCL_PIXELX;
	MX_SINT16 FCL_PIXELY;
	MX_SINT16 FCL_YINC = (1);
	MX_SINT16 FCL_XINC = (1);


	FCL_PIXELX = FCL_X2 - FCL_X1;
	FCL_PIXELY = FCL_Y2 - FCL_Y1;

	if (FCL_PIXELX < 0)
	{

		FCL_XINC = -1;
		FCL_PIXELX = FCL_PIXELX * -1;

	// } else {

	}

	if (FCL_PIXELY < 0)
	{

		FCL_YINC = -1;
		FCL_PIXELY = FCL_PIXELY * -1;

	// } else {

	}

	if (FCL_PIXELY <= FCL_PIXELX)
	{

		FCL_C1 = 2 * FCL_PIXELX;
		FCL_M1 = 2 * FCL_PIXELY;

		while (FCL_X1 != FCL_X2)
		{

			FCD_07_Base_GLCD__Plot(FCL_X1, FCL_Y1);

			FCL_X1 = FCL_X1 + FCL_XINC;

			FCL_D1 = FCL_D1 + FCL_M1;

			if (FCL_D1 > FCL_PIXELX)
			{

				FCL_Y1 = FCL_Y1 + FCL_YINC;

				FCL_D1 = FCL_D1 - FCL_C1;

			// } else {

			}


		}

	} else {

		FCL_C1 = 2 * FCL_PIXELY;
		FCL_M1 = 2 * FCL_PIXELX;

		while (FCL_Y1 != FCL_Y2)
		{

			FCD_07_Base_GLCD__Plot(FCL_X1, FCL_Y1);

			FCL_Y1 = FCL_Y1 + FCL_YINC;

			FCL_D1 = FCL_D1 + FCL_M1;

			if (FCL_D1 > FCL_PIXELY)
			{

				FCL_X1 = FCL_X1 + FCL_XINC;

				FCL_D1 = FCL_D1 - FCL_C1;

			// } else {

			}


		}

	}

	FCD_07_Base_GLCD__Plot(FCL_X1, FCL_Y1);

}

/*=----------------------------------------------------------------------=*\
   Use :Sets a pixel with the current foreground colour at pixel location X, Y.
       :
       :Parameters for macro Plot:
       :  X1 : MX_UINT16
       :  Y1 : MX_UINT16
\*=----------------------------------------------------------------------=*/
void FCD_07_Base_GLCD__Plot(MX_UINT16 FCL_X1, MX_UINT16 FCL_Y1)
{
	//Local variable definitions
	MX_UINT32 FCL_IDX;


	#if (0) // 0 == 1

	//Code has been optimised out by the pre-processor
	#else





	#endif

}

/*=----------------------------------------------------------------------=*\
   Use :Sets a pixel with the current background colour at pixel location X, Y.
       :
       :Parameters for macro BPlot:
       :  X1 : MX_UINT16
       :  Y1 : MX_UINT16
\*=----------------------------------------------------------------------=*/
void FCD_07_Base_GLCD__BPlot(MX_UINT16 FCL_X1, MX_UINT16 FCL_Y1)
{

	#if (0) // 0 == 1

	//Code has been optimised out by the pre-processor
	#else





	#endif

}

/*=----------------------------------------------------------------------=*\
   Use :This macro prints a string of characters to the Graphical LCD.
       :
       :Parameters for macro Print:
       :  Str[20] : String of characters to send to the display.
       :  X1 : X pixel coordinate to set the output string position.
       :  Y1 : Y pixel coordinate to set the output string position.
       :  Font : Size of the font - 0 = Normal, 1 = Double Width, 2 = Double Width and Height, 3 = Double Height
       :  Transparent : Specifies if the background of the text is drawn - 0 = Background colour is drawn, 1 = Background colour not drawn.
\*=----------------------------------------------------------------------=*/
void FCD_07_Base_GLCD__Print(MX_CHAR* FCL_STR, MX_UINT16 FCLsz_STR, MX_UINT16 FCL_X1, MX_UINT16 FCL_Y1, MX_UINT8 FCL_FONT, MX_UINT8 FCL_TRANSPARENT)
{
	//Local variable definitions
	MX_UINT8 FCL_XPIX;
	MX_UINT8 FCL_YPIX;
	MX_UINT8 FCL_POS_STR;
	MX_UINT8 FCL_LEN_STR;
	MX_UINT8 FCL_COUNT;
	MX_UINT8 FCL_XCOUNT;
	MX_UINT8 FCL_YCOUNT;
	MX_UINT8 FCL_HEIGHT;
	MX_UINT8 FCL_WIDTH;
	MX_UINT8 FCL_IDX;
	MX_UINT8 FCL_FONT_WIDTH = (0x1);
	MX_UINT8 FCL_FONT_HEIGHT = (0x1);
	#define FCLsz_TEMP 6
	MX_UINT8 FCL_TEMP[FCLsz_TEMP];


	switch (FCL_FONT)
	{
		case 1:
		{
			FCL_FONT_WIDTH = 2;

			break;
		}
		case 2:
		{
			FCL_FONT_WIDTH = 2;
			FCL_FONT_HEIGHT = 2;

			break;
		}
		case 3:
		{
			FCL_FONT_HEIGHT = 2;

			break;
		}
		default:
		{
		}
	}

	FCL_XCOUNT = 0;
	FCL_IDX = 0;

	FCL_LEN_STR = FCI_GETLENGTH(FCL_STR, FCLsz_STR);

	while (FCL_IDX < FCL_LEN_STR)
	{

		FCL_POS_STR = FCL_STR[FCL_IDX] - 32;

		FCL_COUNT = 0;

		while (FCL_COUNT < 5)
		{

			FCL_TEMP[FCL_COUNT] = FCD_07_Base_GLCD__ReadASCIILUT(FCL_POS_STR, FCL_COUNT);

			FCL_COUNT = FCL_COUNT + 1;


		}

		FCL_XPIX = 0;

		while (FCL_XPIX < 6)
		{

			FCL_WIDTH = 0;

			while (FCL_WIDTH < FCL_FONT_WIDTH)
			{

				FCL_YCOUNT = 0;

				FCL_YPIX = 0;

				while (FCL_YPIX < 8)
				{

					FCL_HEIGHT = 0;

					while (FCL_HEIGHT < FCL_FONT_HEIGHT)
					{

						if (FCL_TEMP[FCL_XPIX] & (0x01 << FCL_YPIX))
						{

							FCD_07_Base_GLCD__Plot(FCL_X1 + FCL_XCOUNT, FCL_Y1 + FCL_YCOUNT);

						} else {

							if (FCL_TRANSPARENT == 0)
							{

								FCD_07_Base_GLCD__BPlot(FCL_X1 + FCL_XCOUNT, FCL_Y1 + FCL_YCOUNT);

							// } else {

							}

						}

						FCL_HEIGHT = FCL_HEIGHT + 1;
						FCL_YCOUNT = FCL_YCOUNT + 1;


					}

					FCL_YPIX = FCL_YPIX + 1;


				}

				FCL_WIDTH = FCL_WIDTH + 1;
				FCL_XCOUNT = FCL_XCOUNT + 1;


			}

			FCL_XPIX = FCL_XPIX + 1;


		}

		FCL_IDX = FCL_IDX + 1;


	}

	//Local variable definitions
	#undef FCLsz_TEMP
}

/*=----------------------------------------------------------------------=*\
   Use :This macro clears the display of any previous output by overwriting the entire display with the background colour.
\*=----------------------------------------------------------------------=*/
void FCD_07_Base_GLCD__ClearDisplay()
{
	//Local variable definitions
	MX_UINT16 FCL_Y = (0x0);
	MX_UINT16 FCL_X = (0x0);


	while (FCL_Y < 64)
	{

		FCL_X = 0;

		while (FCL_X < 128)
		{

			FCD_07_Base_GLCD__BPlot(FCL_X, FCL_Y);

			FCL_X = FCL_X + 1;


		}

		FCL_Y = FCL_Y + 1;


	}

}

/*=----------------------------------------------------------------------=*\
   Use :Specifies the colour of the background by creating a mixture of red, green and blue.
       :
       :Parameters for macro SetBackgroundColour:
       :  Red : 0 - 255 where 0 = no red and 255 = maximum red
       :  Green : 0 - 255 where 0 = no green and 255 = maximum green
       :  Blue : 0 - 255 where 0 = no blue and 255 = maximum blue
\*=----------------------------------------------------------------------=*/
void FCD_07_Base_GLCD__SetBackgroundColour(MX_UINT8 FCL_RED, MX_UINT8 FCL_GREEN, MX_UINT8 FCL_BLUE)
{
	//Local variable definitions
	MX_UINT32 FCL_COLOUR;


	FCL_COLOUR = FCL_BLUE;
	FCL_COLOUR = FCL_COLOUR * 256;
	FCL_COLOUR = FCL_COLOUR | FCL_GREEN;
	FCL_COLOUR = FCL_COLOUR * 256;
	FCL_COLOUR = FCL_COLOUR | FCL_RED;
	FCV_07_Base_GLCD__BACKGROUND_COL_VAR = FCL_COLOUR;

}

/*=----------------------------------------------------------------------=*\
   Use :Parameters for macro ReadASCIILUT:
       :  pos_str : MX_UINT8
       :  count : MX_UINT8
       :
       :Returns : MX_UINT8
\*=----------------------------------------------------------------------=*/
MX_UINT8 FCD_07_Base_GLCD__ReadASCIILUT(MX_UINT8 FCL_POS_STR, MX_UINT8 FCL_COUNT)
{
	//Local variable definitions
	MX_UINT8 FCL_POSITION;
	MX_UINT8 FCR_RETVAL;


	#if (1) // 1 == 1

		FCL_POSITION = FCL_POS_STR / 12;

		switch (FCL_POSITION)
		{
			case 0:
			{
				FCL_POSITION = (FCL_POS_STR * 5) + FCL_COUNT;

				FCR_RETVAL = FCD_039_ASCII0__INTLIST(FCL_POSITION);

				break;
			}
			case 1:
			{
				FCL_POSITION = ((FCL_POS_STR - 12) * 5) + FCL_COUNT;

				FCR_RETVAL = FCD_039_ASCII1__INTLIST(FCL_POSITION);

				break;
			}
			case 2:
			{
				FCL_POSITION = ((FCL_POS_STR - 24) * 5) + FCL_COUNT;

				FCR_RETVAL = FCD_039_ASCII2__INTLIST(FCL_POSITION);

				break;
			}
			case 3:
			{
				FCL_POSITION = ((FCL_POS_STR - 36) * 5) + FCL_COUNT;

				FCR_RETVAL = FCD_039_ASCII3__INTLIST(FCL_POSITION);

				break;
			}
			case 4:
			{
				FCL_POSITION = ((FCL_POS_STR - 48) * 5) + FCL_COUNT;

				FCR_RETVAL = FCD_039_ASCII4__INTLIST(FCL_POSITION);

				break;
			}
			case 5:
			{
				FCL_POSITION = ((FCL_POS_STR - 60) * 5) + FCL_COUNT;

				FCR_RETVAL = FCD_039_ASCII5__INTLIST(FCL_POSITION);

				break;
			}
			case 6:
			{
				FCL_POSITION = ((FCL_POS_STR - 72) * 5) + FCL_COUNT;

				FCR_RETVAL = FCD_039_ASCII6__INTLIST(FCL_POSITION);

				break;
			}
			case 7:
			{
				FCL_POSITION = ((FCL_POS_STR - 84) * 5) + FCL_COUNT;

				FCR_RETVAL = FCD_039_ASCII7__INTLIST(FCL_POSITION);

				break;
			}
			default:
			{
				FCR_RETVAL = 0;

				FCR_RETVAL = 0xaa;

			}
		}

	// #else

	//Code has been optimised out by the pre-processor
	#endif

	return (FCR_RETVAL);

}

/*=----------------------------------------------------------------------=*\
   Use :Specifies the colour of the foreground by creating a mixture of red, green and blue.
       :
       :Parameters for macro SetForegroundColour:
       :  Red : 0 - 255 where 0 = no red and 255 = maximum red
       :  Green : 0 - 255 where 0 = no green and 255 = maximum green
       :  Blue : 0 - 255 where 0 = no blue and 255 = maximum blue
\*=----------------------------------------------------------------------=*/
void FCD_07_Base_GLCD__SetForegroundColour(MX_UINT8 FCL_RED, MX_UINT8 FCL_GREEN, MX_UINT8 FCL_BLUE)
{
	//Local variable definitions
	MX_UINT32 FCL_COLOUR;


	FCL_COLOUR = FCL_BLUE;
	FCL_COLOUR = FCL_COLOUR * 256;
	FCL_COLOUR = FCL_COLOUR | FCL_GREEN;
	FCL_COLOUR = FCL_COLOUR * 256;
	FCL_COLOUR = FCL_COLOUR | FCL_RED;
	FCV_07_Base_GLCD__FOREGROUND_COL_VAR = FCL_COLOUR;

}

/*=----------------------------------------------------------------------=*\
   Use :Draws a rectangle with the current foreground colour from pixel loaction X1, Y1 to pixel location X2, Y2.
       :
       :Parameters for macro DrawRectangle:
       :  X1 : MX_UINT16
       :  Y1 : MX_UINT16
       :  X2 : MX_UINT16
       :  Y2 : MX_UINT16
       :  Transparent : Chooses the transparency of the box - 0 = Box contains background colour, 1 = Box contains previous pixel data.
       :  Solid : Chooses to fill the box with colour - 0 = Box contains transparency data, 1 = Box contains foreground colour.
\*=----------------------------------------------------------------------=*/
void FCD_07_Base_GLCD__DrawRectangle(MX_UINT16 FCL_X1, MX_UINT16 FCL_Y1, MX_UINT16 FCL_X2, MX_UINT16 FCL_Y2, MX_UINT8 FCL_TRANSPARENT, MX_UINT8 FCL_SOLID)
{
	//Local variable definitions
	MX_UINT16 FCL_XMIN;
	MX_UINT16 FCL_XMAX;
	MX_UINT16 FCL_YMIN;
	MX_UINT16 FCL_YMAX;


	FCD_07_Base_GLCD__DrawLine(FCL_X1, FCL_Y1, FCL_X2, FCL_Y1);

	FCD_07_Base_GLCD__DrawLine(FCL_X2, FCL_Y1, FCL_X2, FCL_Y2);

	FCD_07_Base_GLCD__DrawLine(FCL_X1, FCL_Y2, FCL_X2, FCL_Y2);

	FCD_07_Base_GLCD__DrawLine(FCL_X1, FCL_Y1, FCL_X1, FCL_Y2);

	if (FCL_TRANSPARENT == 0)
	{

		if (FCL_X1 > FCL_X2)
		{

			FCL_XMAX = FCL_X1;
			FCL_XMIN = FCL_X2 + 1;

		} else {

			FCL_XMAX = FCL_X2;
			FCL_XMIN = FCL_X1 + 1;

		}

		if (FCL_Y1 > FCL_Y2)
		{

			FCL_YMAX = FCL_Y1;
			FCL_YMIN = FCL_Y2 + 1;

		} else {

			FCL_YMAX = FCL_Y2;
			FCL_YMIN = FCL_Y1 + 1;

		}

		FCL_Y1 = FCL_YMIN;

		while (FCL_Y1 < FCL_YMAX)
		{

			FCL_X1 = FCL_XMIN;

			while (FCL_X1 < FCL_XMAX)
			{

				if (FCL_SOLID)
				{

					FCD_07_Base_GLCD__Plot(FCL_X1, FCL_Y1);

				} else {

					FCD_07_Base_GLCD__BPlot(FCL_X1, FCL_Y1);

				}

				FCL_X1 = FCL_X1 + 1;


			}

			FCL_Y1 = FCL_Y1 + 1;


		}

	// } else {

	}

}

/*=----------------------------------------------------------------------=*\
   Use :The Init macro must be called once to initialise the Graphical LCD display before any other Graphical LCD component macros are called.
\*=----------------------------------------------------------------------=*/
void FCD_07_Base_GLCD__Initialise()
{

	FCV_07_Base_GLCD__FOREGROUND_COL_VAR = 0;
	FCV_07_Base_GLCD__BACKGROUND_COL_VAR = 16777215;

	FCD_07_Base_GLCD__ClearDisplay();

}


/*========================================================================*\
   Use :panel
       :Macro implementations
\*========================================================================*/


/*========================================================================*\
   Use :Main
\*========================================================================*/
void main()
{
adcon1 = 0x0F;




	// Calculation
	// Calculation:
	//  Wifi_Init = 1
	FCV_WIFI_INIT = 1;

	// Loop
	// Loop: While Wifi_Init = 1
	while (FCV_WIFI_INIT == 1)
	{

		// Call Component Macro
		// Call Component Macro: Wifi_Init=WLAN1::Initialise()
		FCV_WIFI_INIT = FCD_01_WLAN1__Initialise();

		// Decision
		// Decision: Wifi_Init = 0?
		if (FCV_WIFI_INIT == 0)
		{

			// Delay
			// Delay: 1 s
			FCI_DELAYBYTE_S(1);

		// } else {

		}


	}

	// Output
	// Output: 1 -> A5
	FCP_SET_BIT(A, 0x20, 0xDF, 0, (1));
	// Call Component Macro
	// Call Component Macro: WLAN1::EnableCommandMode()
	FCD_01_WLAN1__EnableCommandMode();

	mainendloop: goto mainendloop;
}



/*========================================================================*\
   Use :Interrupt
\*========================================================================*/
void MX_INTERRUPT_MACRO(void)
{

	

	MX_UART_INT_CH1_FUNC

	MX_UINT8 FCL_RX;

	if (MX_UART_INT_CH1_DET)
	{

	FCL_RX = FC_CAL_UART_Receive_1(0);

	switch (FCV_01_WLAN1__CMDSTATE)
	{
		case 1:
		{
			if (FCV_01_WLAN1__RXCOUNT < 30)
			{

				FCV_01_WLAN1__RXBUFFER[FCV_01_WLAN1__RXCOUNT] = FCL_RX;
				FCV_01_WLAN1__RXCOUNT = FCV_01_WLAN1__RXCOUNT + 1;

			// } else {

			}

			if (FCL_RX == '>')
			{

				FCV_01_WLAN1__CMDSTATE = 0;

			// } else {

			}

			break;
		}
		case 2:
		{
			if (FCL_RX == 'E')
			{

				FCV_01_WLAN1__CMDSTATE = 3;

			} else {

				FCV_01_WLAN1__CMDSTATE = 0;

			}

			break;
		}
		case 3:
		{
			if (FCL_RX == 'T')
			{

				FCV_01_WLAN1__CMDSTATE = 4;

			} else {

				FCV_01_WLAN1__CMDSTATE = 0;

			}

			break;
		}
		case 4:
		{
			if (FCL_RX == ' ')
			{

				FCV_01_WLAN1__CMDSTATE = 5;
				FCV_01_WLAN1__RXCOUNT = 0;

			} else {

				FCV_01_WLAN1__CMDSTATE = 0;

			}

			break;
		}
		case 5:
		{
			if (FCL_RX == ' ')
			{

				FCV_01_WLAN1__RXBUFFER[FCV_01_WLAN1__RXCOUNT] = 0;
				FCV_01_WLAN1__CMDSTATE = 0;

			} else {

				if (FCV_01_WLAN1__RXCOUNT < 30)
				{

					FCV_01_WLAN1__RXBUFFER[FCV_01_WLAN1__RXCOUNT] = FCL_RX;
					FCV_01_WLAN1__RXCOUNT = FCV_01_WLAN1__RXCOUNT + 1;

				// } else {

				}

			}

			break;
		}
		case 0:
		{
			if (FCL_RX == 'G')
			{

				FCV_01_WLAN1__CMDSTATE = 2;

			// } else {

			}

			break;
		}
		default:
		{
		}
	}

	MX_UART_INT_CH1_CLR;

	}

	MX_UART_INT_FUNC_END
}




