using System;
using System.Threading;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            XBee_Library XBee = new XBee_Library();
            string nazevPortu = "COM1";
            //Info na zacatek programu OK
            Console.WriteLine("Aplikace prezentujici praci s knihovnou XBee_Library");
            Console.WriteLine("Pro dalsi krok stisknete klavesu ENTER" + Environment.NewLine + Environment.NewLine);

            //PC: Inicializace OK
            Console.WriteLine("Probiha inicializace.");
            Console.ReadLine();
            XBee.initialization();
            Console.WriteLine("OK");
            
            //PC: Otevreni serioveho portu PC OK
            Console.WriteLine("Probiha otevreni serioveho portu PC");
            Console.ReadLine();
            Console.WriteLine(XBee.openSerialPort(nazevPortu, 9600));
            
            //MIKROKONTROLER: Rozsviceni LED diod OK
            Console.WriteLine("Probiha rozsviceni LED diod");
            Console.ReadLine();
            Console.WriteLine(XBee.LEDDiodesControl("TurnOn"));

            //MIKROKONTROLER: Zhasnuti LED diod OK
            Console.WriteLine("Probiha zhasnuti LED diod");
            Console.ReadLine();
            Console.WriteLine(XBee.LEDDiodesControl("TurnOff"));
            
            //MIKROKONTROLER: Povoleni preposilani dat ze senzoru do PC OK
            Console.WriteLine("Prikaz povolujici preposilani dat ze senzoru do PC");
            Console.ReadLine();
            Console.WriteLine(XBee.SensorUSART_Data("Start"));
            
            //MIKROKONTROLER: Odeslani dat na vystup senzoru (USART) OK
            Console.WriteLine("Prikaz posilajici data na vstup senzoru");
            Console.ReadLine();
            Console.WriteLine(XBee.sendData("**"));
            
            //PC: Vypsani prijatych dat na obrazovku, predpoklada se propojeni TxD a RxD na senzoru OK
            Console.WriteLine("Prikaz vypisujici prijata data na obrazovku, predpoklada se propojeni TxD a RxD na USARTU pro senzor");
            Console.ReadLine();
            Console.WriteLine(XBee.recieveStoredData());

            //MIKROKONTROLER: Prenastaveni komunikacni rychlosti mikrokontroleru se senzorem po USART rozhrani OK
            Console.WriteLine("Prikaz menici komunikacni rychlost Senzoru s mikrokontrolerem po USART rohrani");
            Console.ReadLine();
            Console.WriteLine(XBee.SensorUSARTBaudrate(115200));
            
            //MIKROKONTROLER: Prenastaveni komunikacni rychlosti mikrokontroleru s modulem XBee
            Console.WriteLine("Prikaz menici komunikacni rychlost mikrokontroleru s modulem XBee");
            Console.ReadLine();
            Console.WriteLine(XBee.XBeeUSARTBaudrate(115200));
            
            //PC: Prenastaveni komunikacni rychlosti mezi PC a modulem XBee
            Console.WriteLine("Prikaz nastavujici komunikacni rychlost mezi XBee a PC");
            Console.ReadLine();
            Console.WriteLine(XBee.PC_XBeeSetUp(115200));

            //MIKROKONTROLER: Odeslani dat na vystup senzoru (USART) OK
            Console.WriteLine("Prikaz posilajici data na vstup senzoru");
            Console.ReadLine();
            Console.WriteLine(XBee.sendData("**"));

            Console.WriteLine("Zde se vypisi prijata data:");
            Console.ReadLine();
            Console.WriteLine(XBee.recieveStoredData());
            

            //Konec preposilani dat ze senzoru pres USART komunikacni jednotku
            Console.WriteLine("Prikaz ukoncujici preposilani dat ze senzoru do PC");
            Console.ReadLine();
            Console.WriteLine(XBee.SensorUSART_Data("Stop"));
            
            //Nastaveni SPI komunikacni jednotky - jeji nastaveni a povoleni preposilat data ze senzoru do PC:
            Console.WriteLine("Nastaveni komunikacni jednotky SPI");
            Console.ReadLine();
            Console.WriteLine(XBee.SPI_Data("Start"));
            Console.WriteLine(XBee.SPI_bitSequence("MSB"));
            Console.WriteLine(XBee.SPI_frequency("F0/4"));
            Console.WriteLine(XBee.SPI_dataAndClock("CPOL0", "CPHA0"));
            Console.WriteLine(XBee.loadSPISetupToMicrocontroler());

            //Odeslani dat na vystup senzoru (SPI)
            Console.WriteLine("Prikaz posilajici data na vstup senzoru");
            Console.ReadLine();
            Console.WriteLine(XBee.sendData("**"));

            //Vypsani prijatych dat na obrazovku, predpoklada se propojeni TxD a RxD na senzoru
            Console.WriteLine("Prikaz vypisujici prijata data na obrazovku, predpoklada se propojeni TxD a RxD na USARTU pro senzor");
            Console.ReadLine();
            Console.WriteLine(XBee.recieveStoredData());

            //Prikaz ukoncujici preposilani dat ze senzoru do PC z SPI komunikacni jednotky
            Console.WriteLine("Prikaz ukonceni preposilani dat ze senzoru do PC z SPI komunikacni jednotky");
            Console.ReadLine();
            Console.WriteLine(XBee.SPI_Data("Stop"));
            Console.WriteLine(XBee.loadSPISetupToMicrocontroler());

            //MIKROKONTROLER: Prenastaveni komunikacni rychlosti mikrokontroleru s modulem XBee
            Console.WriteLine("Prikaz menici komunikacni rychlost mikrokontroleru s modulem XBee");
            Console.ReadLine();
            Console.WriteLine(XBee.XBeeUSARTBaudrate(9600));

            //PC: Prenastaveni komunikacni rychlosti mezi PC a modulem XBee
            Console.WriteLine("Prikaz nastavujici komunikacni rychlost mezi XBee a PC");
            Console.ReadLine();
            Console.WriteLine(XBee.PC_XBeeSetUp(9600));

            //Ukonceni komunikace serioveho portu PC
            Console.WriteLine("Probiha ukonceni komunikace serioveho portu PC");
            Console.ReadLine();
            Console.WriteLine(XBee.closeSerialPort());

            Console.WriteLine("Konec prezentace funkci knihovny XBee. Dekuji za pozornost :)");
            Console.ReadLine();
            
        }
    }
}
