////////////////////////////////////////////////// // Bakalarska praca // // Meno studenta: Tomas Lukac // // Veduci BP: prof. Ing. Milos Drutarovsky CSc. // // Skola: KEMT FEI TUKE // // Datum poslednej upravy: 6.5.2020 // ////////////////////////////////////////////////// #ifndef __KOMUNIKACIA_H__ #define __KOMUNIKACIA_H__ #include #include #include #include #include "kryptografia.h" #include "../externe_kniznice/teuniz_rs232/rs232.h" //velkost buffrov ktore ukladaju doplnujuce data pri komunikacii //napr. velkost suboru, cestu ku suboru a ine #define SPRAVA_VELKOST_BUFFERA 64 #if defined(_WIN32) //makro ktore urcuje win distribuciu ak nieje detekovana #ifndef _WIN32_WINNT #define _WIN32_WINNT 0x0600 #endif #include #include #include #define ukoncit_soket closesocket #define socklen_t int //hovori visual c prekladacu aby nalinkoval ws2_32 kniznicu //ak pouzivame minqw pragma sa ignoruje a musime ju zadat pri kompilaci manualne : -lws2_32 #pragma comment(lib, "ws2_32.lib") #else #include #include #include #include #include #include #include #include #include #include #include #include #include #define ukoncit_soket close #endif ////////////////////////////// // TCP/IP KOMUNIKACNY KANAL // ////////////////////////////// /** * pripojit_na_server: realizuje pripojenie na server * @parameter char* ip_adresa : ip adresa servera, na ktory sa chce klient pripojit * @parameter int cislo_portu : cislo portu na ktorom server ocakava komunikaciu * @parameter int pocet_sekund : casovy interval * @vrati int : cislo soketu */ int pripojit_na_server(char *ip_adresa, int cislo_portu, int pocet_sekund); /** * cakat_na_komunikaciu : realizuje vytvorenie soketu a jeho priradenie ku portu, * na ktorom server ocakava komunikaciu * @parameter int cislo_portu: cislo portu na ktorom server bude ocakavat komunikaciu * @vrati int : cislo soketu */ int cakat_na_komunikaciu(int cislo_portu); ///////////////////////////// // RS232 KOMUNIKACNY KANAL // ///////////////////////////// typedef enum stav_nacitania { NEPREBIEHA_NACITANIE, PREBIEHA_NACITANIE_VELKOSTI_SPRAVY, PREBIEHA_NACITANIE_KONTROLNEHO_SUCTU, PREBIEHA_NACITANIE_DAT, NACITANIE_UKONCENE } stav_nacitania; /** * rs232_otvorit_rozhranie: realizuje otvorenie RS232 serioveho rozhrania * @parameter int cislo_rozhrania: cislo RS232 serioveho rozhrania * @parameter char* rezim: umoznuje nastavit rozhranie pri otvoreni * @parameter int kontrola_toku_dat: umoznuje vypnut(0)/zapnut(1) kontrolu dat pomocou RTS/CTS signalov * @vrati int : operacia bola uspesna(0), neuspesna(-1) */ int rs232_otvorit_rozhranie(int cislo_rozhrania, int rychlost, char* rezimu, int kontrola_toku_dat); /** * rs232_zatvorit_rozhranie: realizuje zatvorenie RS232 serioveho rozhrania * @parameter int cislo_rozhrania: cislo RS232 serioveho rozhrania * @vrati int : operacia bola uspesna(0), neuspesna(-1) */ int rs232_zatvorit_rozhranie(int cislo_rozhrania); /** * rs232_odoslat_spravu: realizuje poslanie spravy cez rs232 prenosovy kanal * @parameter int cislo_rozhrania: cislo RS232 serioveho rozhrania * @parameter char* sprava: ukazuje na buffer * @parameter int velkost_spravy: velkost spravy na odoslanie * @vrati int : pocet odoslanych bajtov */ int rs232_odoslat_spravu(int cislo_rozhrania, char* sprava, int velkost_spravy); /** * rs232_prijat_spravu: realizuje prijatie spravy na rs232 seriovom rozhrani * @parameter int cislo_rozhrania: cislo RS232 serioveho rozhrania * @parameter const char* komunikacny_subor: cesta ku suboru, do ktoreho sa zapisuje komunikacia * @vrati int : pocet prijatych bajtov */ int rs232_prijat_spravu(int cislo_rozhrania, const char* komunikacny_subor); ////////////////////// // PRACA SO SUBORMI // ////////////////////// /** * poslat_subor: realizuje odoslanie suboru * @parameter WOLFSSL* ssl : ukazuje na aktualnu relaciu * @parameter WOLFSSL_CTX* ctx : ukazuje na WOLFSSL_CTX strukturu * @parameter char* cesta: ukazuje na retazec, ktory reprezentuje cestu k suboru * @parameter nastavenia_aplikacie* nastavenia: reprezentuje nastavenia aplikacie: server alebo klient * @parameter int velkost_bloku_dat: velkost dat po ktorych sa budu data posielat * @vrati int : operacia bola uspesna(0), neuspesna(-1) */ int poslat_subor(WOLFSSL* ssl, WOLFSSL_CTX* ctx, const char* cesta, nastavenia_aplikacie* nastavenia, int velkost_bloku_dat); /** * prijat_subor: realizuje prijem suboru * @parameter WOLFSSL* ssl : ukazuje na aktualnu relaciu * @parameter WOLFSSL_CTX* ctx : ukazuje na WOLFSSL_CTX strukturu * @parameter nastavenia_aplikacie* nastavenia: reprezentuje nastavenia aplikacie: server alebo klient * @parameter int velkost_bloku_dat: velkost dat po ktorych sa budu data prijimat * @vrati int : operacia bola uspesna(0), neuspesna(-1) */ int prijat_subor(WOLFSSL* ssl, WOLFSSL_CTX* ctx, nastavenia_aplikacie* nastavenia, int velkost_bloku_dat); #endif