#include "enc28j60_spi.h"
#include "enc28j60_eth.h"
#include "enc28j60_ip.h"
#include "enc28j60_tcp.h"
Zobrazit zdrojový text tohoto souboru.
Funkce | |
void | tcp_recv (struct ip_h *ip_header) |
Funkce volaná funkcí ip_recv() po příchodu TCP datagramu. | |
char | tcp_send () |
Odešle TCP datagram s daty uloženými v tx bufferu - volána uživatelem. | |
char | tcp_out (unsigned long seq, unsigned long ack, unsigned char flags) |
Odešle TCP datagram - volána konečným automatem, interní funkce. | |
unsigned int | tcp_checksum (unsigned long dest_ip, unsigned int length) |
Vypočítá 16-bitový checksum z TCP datagramu - interní funkce. | |
char | tcp_send_header (unsigned char flags) |
Odešle prázdný TCP datagram,pouze hlavičku - volána konečným automatem, interní funkce. | |
void | tcp_fsm_reset () |
Reset konečného automatu. | |
unsigned char | create_tcp_socket (unsigned int src_port, void *handler) |
Vytvoří TCP socket, zaregistruje TCP handler k portu src_port. je možné vytvořit pouze jeden TCP socket. | |
char | delete_tcp_socket () |
Odstraní TCP socket. | |
void | change_tcp_handler (void *new_handler) |
Změní TCP handler v socketu. | |
char | tcp_connect (unsigned long ip, unsigned int port) |
Připojí se ke vzdálenému počítači. | |
char | tcp_bind () |
Naslouchání socketu na portu. | |
char | tcp_unbind () |
Zrušení naslouchání socketu na portu. | |
void | tcp_disconnect () |
Ukončí TCP spojení (ne zcela, pouze konečný automat přejde do stavu ukončení spojení). | |
char | tcp_connected () |
Vrací stav spojení. | |
char | tcp_is_idle () |
Vrací stav TCP socketu. | |
void | tcp_timer () |
TCP časovač, funkci je nutné volat v časových intervalech pro správnou funkci spojení (přeposílání datagramů apod.). Doba mezi voláními časovače by měla být nejméně 250ms a neměla přesáhnout 2 vteřiny. | |
Proměnné | |
unsigned long | dest_seq_num = 0 |
unsigned long | local_seq_num = 0 |
unsigned long | expected_ack_num = 0 |
ip_h * | ip_header_ptr |
unsigned long | local_ip |
unsigned int | tcp_fsm_timer |
tcp_socket | socket |
void change_tcp_handler | ( | void * | new_handler | ) |
Změní TCP handler v socketu.
new_handler | - Callback handler (TCP_APP_HANDLER()). |
Definice je uvedena na řádku 254 v souboru enc28j60_tcp.c.
Odkazuje se na socket.
unsigned char create_tcp_socket | ( | unsigned int | src_port, | |
void * | handler | |||
) |
Vytvoří TCP socket, zaregistruje TCP handler k portu src_port.
je možné vytvořit pouze jeden TCP socket.
src_port | - port socketu | |
handler | - Callback handler (TCP_APP_HANDLER()), funkce, která bude volána při příchodu TCP datagramu na port socketu. |
0 | - chyba, neplatné argumenty nebo není volný socket | |
jinak | - číslo registrovaného portu |
Definice je uvedena na řádku 221 v souboru enc28j60_tcp.c.
Odkazuje se na socket.
char delete_tcp_socket | ( | ) |
Odstraní TCP socket.
0 | - socket odstraněn | |
-1 | - chyba, socket je používán |
Definice je uvedena na řádku 238 v souboru enc28j60_tcp.c.
Odkazuje se na NULL, socket a tcp_is_idle().
char tcp_bind | ( | ) |
Naslouchání socketu na portu.
1 | - socket naslouchá na portu | |
0 | - chyba, socket je zaneprázdněn |
Definice je uvedena na řádku 280 v souboru enc28j60_tcp.c.
Odkazuje se na socket.
unsigned int tcp_checksum | ( | unsigned long | dest_ip, | |
unsigned int | length | |||
) |
Vypočítá 16-bitový checksum z TCP datagramu - interní funkce.
Definice je uvedena na řádku 166 v souboru enc28j60_tcp.c.
Odkazuje se na local_ip a tx_checksum().
Používá se v tcp_out().
char tcp_connect | ( | unsigned long | ip, | |
unsigned int | port | |||
) |
Připojí se ke vzdálenému počítači.
ip | - IP adresa cílového počítače | |
port | - cílový port |
0 | - připojení se navazuje | |
-1 | - chyba, socket je již připojen |
Definice je uvedena na řádku 264 v souboru enc28j60_tcp.c.
char tcp_connected | ( | ) |
Vrací stav spojení.
1 | - spojení navázáno, lze odesílat data | |
0 | - spojení nenavázáno nebo se navazuje |
Definice je uvedena na řádku 319 v souboru enc28j60_tcp.c.
Odkazuje se na socket.
Používá se v tcp_send().
void tcp_disconnect | ( | ) | [inline] |
Ukončí TCP spojení (ne zcela, pouze konečný automat přejde do stavu ukončení spojení).
Definice je uvedena na řádku 307 v souboru enc28j60_tcp.c.
Odkazuje se na expected_ack_num, NULL, socket, tcp_fsm() a tcp_fsm_timer.
void tcp_fsm_reset | ( | ) |
Reset konečného automatu.
Definice je uvedena na řádku 207 v souboru enc28j60_tcp.c.
Odkazuje se na socket a tx_unlock().
Používá se v tcp_fsm().
char tcp_is_idle | ( | ) |
Vrací stav TCP socketu.
1 | - TCP socket je nečinný | |
0 | - TCP socket je zaneprázdněn |
Definice je uvedena na řádku 330 v souboru enc28j60_tcp.c.
Odkazuje se na socket.
Používá se v delete_tcp_socket().
char tcp_out | ( | unsigned long | seq, | |
unsigned long | ack, | |||
unsigned char | flags | |||
) |
Odešle TCP datagram - volána konečným automatem, interní funkce.
Definice je uvedena na řádku 126 v souboru enc28j60_tcp.c.
Odkazuje se na tcp_h::ack_num, tcp_h::checksum, tcp_h::data_offset, tcp_h::dest_port, tcp_h::flags, HTONL, HTONS, ip_send(), tcp_h::reserved, tcp_h::seq_num, socket, tcp_h::src_port, tcp_checksum(), TCP_HEADER_LEN, tx_data_len(), tx_seek(), tx_write(), tcp_h::urgent_ptr a tcp_h::window_size.
Používá se v tcp_fsm() a tcp_send_header().
void tcp_recv | ( | struct ip_h * | ip_header | ) |
Funkce volaná funkcí ip_recv() po příchodu TCP datagramu.
Definice je uvedena na řádku 66 v souboru enc28j60_tcp.c.
Odkazuje se na tcp_h::data_offset, tcp_h::dest_port, HTONS, ip_header_ptr, NTOHL, NTOHS, rx_read(), rx_skip, socket, ip_h::src_ip, tcp_h::src_port, tcp_fsm() a TCP_HEADER_LEN.
Používá se v ip_recv().
char tcp_send | ( | ) |
Odešle TCP datagram s daty uloženými v tx bufferu - volána uživatelem.
0 | - datagram odeslán | |
-1 | - chyba při odesílání |
Definice je uvedena na řádku 105 v souboru enc28j60_tcp.c.
Odkazuje se na expected_ack_num, local_seq_num, NULL, tcp_connected(), tcp_fsm(), TCP_HEADER_LEN, tx_data_len(), tx_save() a tx_seek().
char tcp_send_header | ( | unsigned char | flags | ) |
Odešle prázdný TCP datagram,pouze hlavičku - volána konečným automatem, interní funkce.
Definice je uvedena na řádku 195 v souboru enc28j60_tcp.c.
Odkazuje se na dest_seq_num, local_seq_num, tcp_out(), tx_close() a tx_init().
Používá se v tcp_fsm().
void tcp_timer | ( | ) | [inline] |
TCP časovač, funkci je nutné volat v časových intervalech pro správnou funkci spojení (přeposílání datagramů apod.).
Doba mezi voláními časovače by měla být nejméně 250ms a neměla přesáhnout 2 vteřiny.
Definice je uvedena na řádku 343 v souboru enc28j60_tcp.c.
char tcp_unbind | ( | ) |
Zrušení naslouchání socketu na portu.
1 | - socket odpojen | |
0 | - chyba, socket je zaneprázdněn, pravděpodobně je někdo připojen |
Definice je uvedena na řádku 294 v souboru enc28j60_tcp.c.
Odkazuje se na socket.
unsigned long dest_seq_num = 0 |
Definice je uvedena na řádku 51 v souboru enc28j60_tcp.c.
Používá se v tcp_fsm() a tcp_send_header().
unsigned long expected_ack_num = 0 |
Definice je uvedena na řádku 53 v souboru enc28j60_tcp.c.
Používá se v tcp_disconnect(), tcp_fsm() a tcp_send().
struct ip_h* ip_header_ptr |
unsigned long local_ip |
Definice je uvedena na řádku 59 v souboru enc28j60_ip.c.
unsigned long local_seq_num = 0 |
Definice je uvedena na řádku 52 v souboru enc28j60_tcp.c.
Používá se v tcp_fsm(), tcp_send() a tcp_send_header().
struct tcp_socket socket |
Definice je uvedena na řádku 60 v souboru enc28j60_tcp.c.
Používá se v change_tcp_handler(), create_tcp_socket(), delete_tcp_socket(), tcp_bind(), tcp_connect(), tcp_connected(), tcp_disconnect(), tcp_fsm(), tcp_fsm_reset(), tcp_is_idle(), tcp_out(), tcp_recv() a tcp_unbind().
unsigned int tcp_fsm_timer |
Definice je uvedena na řádku 54 v souboru enc28j60_tcp_fsm.c.
Používá se v tcp_disconnect() a tcp_fsm().