bakalarska_praca/kniznica/komunikacia.h

144 lines
5.2 KiB
C
Raw Permalink Normal View History

2020-03-11 21:01:54 +00:00
//////////////////////////////////////////////////
// Bakalarska praca //
// Meno studenta: Tomas Lukac //
// Veduci BP: prof. Ing. Milos Drutarovsky CSc. //
// Skola: KEMT FEI TUKE //
2020-05-06 10:53:08 +00:00
// Datum poslednej upravy: 6.5.2020 //
2020-03-11 21:01:54 +00:00
//////////////////////////////////////////////////
#ifndef __KOMUNIKACIA_H__
#define __KOMUNIKACIA_H__
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <wolfssl/ssl.h>
2020-03-19 12:55:34 +00:00
#include "kryptografia.h"
#include "../externe_kniznice/teuniz_rs232/rs232.h"
2020-03-30 01:32:44 +00:00
2020-05-17 13:12:06 +00:00
//velkost buffrov ktore ukladaju doplnujuce data pri komunikacii
//napr. velkost suboru, cestu ku suboru a ine
#define SPRAVA_VELKOST_BUFFERA 64
2020-03-12 16:22:08 +00:00
2020-03-11 21:01:54 +00:00
#if defined(_WIN32)
//makro ktore urcuje win distribuciu ak nieje detekovana
#ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x0600
#endif
#include <winsock.h>
#include <windows.h>
#include <ws2tcpip.h>
#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 <sys/types.h>
#include <sys/socket.h>
2020-03-30 01:32:44 +00:00
#include <sys/ioctl.h>
#include <sys/stat.h>
#include <sys/file.h>
2020-03-11 21:01:54 +00:00
#include <netinet/in.h>
#include <arpa/inet.h>
#include <netdb.h>
#include <unistd.h>
#include <errno.h>
2020-03-30 01:32:44 +00:00
#include <termios.h>
#include <fcntl.h>
#include <limits.h>
2020-03-11 21:01:54 +00:00
#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 //
/////////////////////////////
2020-05-17 13:12:06 +00:00
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);
2020-03-11 21:01:54 +00:00
//////////////////////
// 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
2020-04-16 09:25:05 +00:00
* @parameter nastavenia_aplikacie* nastavenia: reprezentuje nastavenia aplikacie: server alebo klient
2020-05-17 13:12:06 +00:00
* @parameter int velkost_bloku_dat: velkost dat po ktorych sa budu data posielat
2020-03-11 21:01:54 +00:00
* @vrati int : operacia bola uspesna(0), neuspesna(-1)
*/
2020-05-17 13:12:06 +00:00
int poslat_subor(WOLFSSL* ssl, WOLFSSL_CTX* ctx, const char* cesta, nastavenia_aplikacie* nastavenia, int velkost_bloku_dat);
2020-03-11 21:01:54 +00:00
/**
* prijat_subor: realizuje prijem suboru
* @parameter WOLFSSL* ssl : ukazuje na aktualnu relaciu
* @parameter WOLFSSL_CTX* ctx : ukazuje na WOLFSSL_CTX strukturu
2020-04-16 09:25:05 +00:00
* @parameter nastavenia_aplikacie* nastavenia: reprezentuje nastavenia aplikacie: server alebo klient
2020-05-17 13:12:06 +00:00
* @parameter int velkost_bloku_dat: velkost dat po ktorych sa budu data prijimat
2020-03-11 21:01:54 +00:00
* @vrati int : operacia bola uspesna(0), neuspesna(-1)
*/
2020-05-17 13:12:06 +00:00
int prijat_subor(WOLFSSL* ssl, WOLFSSL_CTX* ctx, nastavenia_aplikacie* nastavenia, int velkost_bloku_dat);
2020-03-19 12:55:34 +00:00
2020-03-11 21:01:54 +00:00
#endif