//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
#include "Unit2.h"
#include "Static.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "cspin"
#pragma resource "*.dfm"
// ------------------------------------------------------------------------------
// Proměnné pro jednotlivá nastavení programu - ukladaji se do souboru config.cfg
// ------------------------------------------------------------------------------

// NASTAVENI PRENOSU
bool SAVE_TRANSFER;          // Zabezpecený přenos
UnicodeString DEST_IP;		 // Cílová IP adresa
bool AUTO_IP;            	// Veřejná IP u fpga


// UDP PARAMETRY
int UDP_PORT;           	 // komunikační port
int UDP_SIZE;                // Maximalni velikost UDP paketu
int UDP_DLY;                 // Zpoždění mez pakety

// APP output
int OUTBUFFER_SIZE;
int OUTBLOCK_SIZE;
int TIMEOUT;					// Maximalni doba pro cekani na potvrzeni (potom se oznaci data jako ztracenaa a jsou odeslana znovu)
int KEEP_ALIVE_TIME;  			// Doba pro Keep-Alivee
bool KEEP_ALIVE;				// keep-alive?
bool DYNAMIC_WINDOW;			// dynamické okno

// FRONTA
int QUEUE_SIZE;   			// Velikost příjmací fronty
int CLOSE_TIME;   			// Doba pro uzavreni souboru
bool AUTO_SAVE;             // Automatické ukládání
bool CLOSE_FLAG;			// příznak pro automatické uzavření souboru pokud je fronta prázdná
bool IP_FLAG;        		// zahrne do souboru i zdrojovou IP adresu
bool TIME_FLAG;      		// zahrne do souboru i čas prijetí paketu
bool TEXT_FLAG;      		// Ulozit jako textovy soubor?

// TESTING
int PING_TIMEOUT;
int PING_DELAY;

// ----------------------------------------------------------------
// Globální fronty a proměnné pro komunikaci s vlákny a formuláři
// ----------------------------------------------------------------

// state of THREADS
bool saving_file;
bool sending_file;
bool listening_on;
UnicodeString SAVE_PATH;		// cesta a název souboru k odeslaní

list <paket> fronta;			// fronta pro ulozeni dat
list <send_packet> out_queue;	// fronta pro odeslani dat

unsigned short int GLOBAL_ID_TX;	// ID pro přenos
unsigned short int GLOBAL_ID_RX;	// ID pro přenos

unsigned int LAST_TIME_ACK; 		// Měření času posledního potvrzovacího paketu
unsigned int LAST_TIME;             // Měření času posledního potvrzovacího paketu

bool CONNECTED;                  // Priznak pripojeni

unsigned int PING_COUNT;

//-------------------------------------
TForm2 *Form2;
//---------------------------------------------------------------------------
__fastcall TForm2::TForm2(TComponent* Owner)
	: TForm(Owner)
{
}

void LoadWindow (void)
{
	Form2->RadioButton1->Checked = !SAVE_TRANSFER;
	Form2->RadioButton2->Checked = SAVE_TRANSFER;
	Form2->Edit1->Text = DEST_IP.t_str();


	Form2->ComboBox6->Text = UDP_PORT;
	Form2->ComboBox3->Text = UDP_DLY;
	Form2->ComboBox4->Text = UDP_SIZE;

	Form2->ComboBox2->Text = OUTBUFFER_SIZE;
	Form2->ComboBox8->Text = OUTBLOCK_SIZE;

	Form2->ComboBox7->Text = QUEUE_SIZE;

	Form2->CheckBox5->Checked = TEXT_FLAG;
}

void SaveWindow (void)
{
	SAVE_TRANSFER = Form2->RadioButton2->Checked;
	DEST_IP = Form2->Edit1->Text.t_str();

	UDP_PORT = StrToInt(Form2->ComboBox6->Text);
	UDP_DLY = StrToInt(Form2->ComboBox3->Text);
	UDP_SIZE = StrToInt(Form2->ComboBox4->Text);

	OUTBUFFER_SIZE = StrToInt(Form2->ComboBox2->Text);
	OUTBLOCK_SIZE = StrToInt(Form2->ComboBox8->Text);


	QUEUE_SIZE = StrToInt(Form2->ComboBox7->Text);

	TEXT_FLAG = Form2->CheckBox5->Checked;

}

//---------------------------------------------------------------------------
void __fastcall TForm2::FormCreate(TObject *Sender)
{
	TreeView1->FullExpand();
	LoadWindow();
}
//---------------------------------------------------------------------------
// Ovladani leveho menu - vyber karticek
void __fastcall TForm2::TreeView1Click(TObject *Sender)
{
	PageControl1->TabIndex = TreeView1->Selected->AbsoluteIndex;
}
//---------------------------------------------------------------------------
// OK
void __fastcall TForm2::Button1Click(TObject *Sender)
{
	Form1->CloseAll();
	SaveWindow();
	Form2->Visible = false;
	Form1->SetIpAdress();
	Form1->InitSocket();
}
//---------------------------------------------------------------------------
// Cancel
void __fastcall TForm2::Button2Click(TObject *Sender)
{
	LoadWindow();
	Form2->Visible = false;
}
//---------------------------------------------------------------------------
// Default
void __fastcall TForm2::Button3Click(TObject *Sender)
{
 	defvalue();
	LoadWindow();
}
//---------------------------------------------------------------------------





