FITkit
Fakulta informačních technologií

Dokumentace souboru enc28j60_spi_tx.c

#include "enc28j60_spi_tx.h"
#include "enc28j60_spi.h"
#include "fspi.h"

Zobrazit zdrojový text tohoto souboru.

Definice maker

#define LOCKED   1
#define UNLOCKED   0

Funkce

char tx_protocol (unsigned char protocol)
char tx_init (unsigned char protocol)
 Inicializace bufferu pro odesílání paketu.
void tx_rewind ()
 Funkce vrátí ukazatel pro zápis v odesílacím bufferu na začátek (jako po inicializaci). Data se zachovají. Je tak možné provést dodatečné změny v paketu před odesláním.
void tx_seek (unsigned char header)
 Funkce slouží pro posunutí v bufferu na pozici pro zápis hlaviček protokolů - interní funkce.
void tx_close ()
 Uloží pozici konce paketu a tím ho připraví na odeslání. Volání této funkce je důležité, označí totiž konec paketu. Všechna data až po takto označený konec se odešlou, data zapsaná do bufferu za něj se ignorují.
void tx_save (unsigned char buffer)
 Uloží aktuální stav bufferu - interní funkce.
void tx_load (unsigned char buffer)
 Načte nastavení a přepne zápis na buffer z parametru - interní funkce.
unsigned char tx_act ()
 Vrátí konstantu reprezentující právě používaný buffer - interní funkce.
unsigned char tx_putc (char c)
 Zapíše znak do bufferu.
unsigned int tx_write (void *ptr, unsigned int length)
 Zapíše blok dat velikosti length z adresy odkazované ukazatelem ptr do bufferu pro odeslání.
unsigned int tx_fill (unsigned char value, unsigned int length)
 Vyplní v odesílacím bufferu length bajtů hodnotou value.
unsigned int tx_skip (unsigned int length)
 Přeskočí místo v odesílacím bufferu. Vhodné zejména v kombinaci s funkcí tx_rewind(), kdy chceme dodatečně přepsat některé části datagramu.
char tx_send ()
 Zprostředkuje odeslání dat z odesílacího bufferu v ENC28J60 do sítě - interní funkce.
unsigned int tx_left ()
 Vrátí údaj o volném místu v bufferu.
unsigned int tx_data_len ()
 Vrátí údaj o velikosti zapsaných dat - interní funkce, údaj je platný až po uzavření bufferu funkcí tx_close().
unsigned int tx_checksum ()
 Vypočítá checksum od aktuální pozice až do konce dat v odesílacím bufferu - interní funkce.
void tx_unlock (unsigned char buffer)
 Odemkne odesílací buffer, ten se pak může opětovně použít pro odeslání dat - interní funkce.

Proměnné

unsigned int tx_ptr
unsigned int tx_end_ptr
unsigned int TXST
unsigned int TXND
unsigned char act_tx
char tx1_lock = UNLOCKED
char tx2_lock = UNLOCKED
char tx3_lock = UNLOCKED
char tx1_protocol
char tx2_protocol
char tx3_protocol
unsigned int tx1_ptr
unsigned int tx2_ptr
unsigned int tx3_ptr
unsigned int tx1_end_ptr
unsigned int tx2_end_ptr
unsigned int tx3_end_ptr


Dokumentace k definicím maker

#define LOCKED   1

Definice je uvedena na řádku 59 v souboru enc28j60_spi_tx.c.

Používá se v tx_init().

#define UNLOCKED   0

Definice je uvedena na řádku 60 v souboru enc28j60_spi_tx.c.

Používá se v tx_unlock().


Dokumentace funkcí

unsigned char tx_act (  ) 

Vrátí konstantu reprezentující právě používaný buffer - interní funkce.

Definice je uvedena na řádku 356 v souboru enc28j60_spi_tx.c.

Odkazuje se na act_tx.

Používá se v ip_send().

unsigned int tx_checksum (  ) 

Vypočítá checksum od aktuální pozice až do konce dat v odesílacím bufferu - interní funkce.

Definice je uvedena na řádku 498 v souboru enc28j60_spi_tx.c.

Odkazuje se na bf_clear(), bf_set(), read_reg16(), read_reg8(), select_bank(), tx_end_ptr, tx_ptr a write_reg16().

Používá se v icmp_send(), tcp_checksum() a udp_checksum().

void tx_close (  )  [inline]

Uloží pozici konce paketu a tím ho připraví na odeslání. Volání této funkce je důležité, označí totiž konec paketu. Všechna data až po takto označený konec se odešlou, data zapsaná do bufferu za něj se ignorují.

Definice je uvedena na řádku 281 v souboru enc28j60_spi_tx.c.

Odkazuje se na select_bank(), tx_end_ptr, tx_ptr a write_reg16().

Používá se v arp_recv(), arp_send(), dhcp_send_discover(), dhcp_send_request(), icmp_recv() a tcp_send_header().

unsigned int tx_data_len (  )  [inline]

Vrátí údaj o velikosti zapsaných dat - interní funkce, údaj je platný až po uzavření bufferu funkcí tx_close().

Definice je uvedena na řádku 490 v souboru enc28j60_spi_tx.c.

Odkazuje se na tx_end_ptr a tx_ptr.

Používá se v ip_send(), tcp_out(), tcp_send() a udp_send().

unsigned int tx_fill ( unsigned char  value,
unsigned int  length 
)

Vyplní v odesílacím bufferu length bajtů hodnotou value.

Parametry:
value - hodnota, kterou se bude vyplňovat buffer
length - délka vyplnění
Návratová hodnota:
počet zapsaných bajtů

Definice je uvedena na řádku 400 v souboru enc28j60_spi_tx.c.

Odkazuje se na spi_fill(), tx_left(), tx_ptr a TXND.

Používá se v dhcp_send_discover() a dhcp_send_request().

char tx_init ( unsigned char  transport_protocol  ) 

Inicializace bufferu pro odesílání paketu.

Parametry:
transport_protocol - jedna z konstant TCP_PROTO, UDP_PROTO a ICMP_PROTO
podle protokolu, kterým se data budou odesílat
Vracené hodnoty:
0 - inicializace proběhla úspěšně
-1 - chyba při inicializaci - UDP a ICMP - reinicializace bufferu, TCP - nepotvrzení posledně odeslaného paketu
ve všech případech může nastat chyba příčinou nedoodesílání dříve odesílaného paketu - buffer se do úplného odeslání nesmí měnit

Definice je uvedena na řádku 90 v souboru enc28j60_spi_tx.c.

Odkazuje se na act_tx, ARP_PROTO, ICMP_PROTO, LOCKED, read_reg8(), select_bank(), TCP_PROTO, tx1_end_ptr, tx1_lock, tx1_protocol, tx1_ptr, tx2_end_ptr, tx2_lock, tx2_protocol, tx2_ptr, tx3_end_ptr, tx3_lock, tx3_protocol, tx3_ptr, tx_protocol(), tx_ptr, tx_save(), TXND, TXST, UDP_PROTO a write_reg16().

Používá se v arp_recv(), arp_send(), dhcp_send_discover(), dhcp_send_request(), icmp_recv() a tcp_send_header().

unsigned int tx_left (  )  [inline]

Vrátí údaj o volném místu v bufferu.

Návratová hodnota:
počet volných bajtů

Definice je uvedena na řádku 482 v souboru enc28j60_spi_tx.c.

Odkazuje se na tx_ptr a TXND.

Používá se v tx_fill(), tx_skip() a tx_write().

void tx_load ( unsigned char  buffer  ) 

Načte nastavení a přepne zápis na buffer z parametru - interní funkce.

Definice je uvedena na řádku 317 v souboru enc28j60_spi_tx.c.

Odkazuje se na act_tx, tx1_end_ptr, tx1_ptr, tx2_end_ptr, tx2_ptr, tx3_end_ptr, tx3_ptr, tx_end_ptr, tx_ptr, TXND, TXST a write_reg16().

Používá se v ip_send() a tcp_fsm().

char tx_protocol ( unsigned char  protocol  ) 

Definice je uvedena na řádku 203 v souboru enc28j60_spi_tx.c.

Odkazuje se na ARP_PROTO, ICMP_PROTO, select_bank(), TCP_HEADER_LEN, TCP_PROTO, tx_ptr, TXST, UDP_HEADER_LEN, UDP_PROTO a write_reg16().

Používá se v tx_init() a tx_rewind().

unsigned char tx_putc ( char  c  ) 

Zapíše znak do bufferu.

Parametry:
c znak, který chceme zapsat
Vracené hodnoty:
0 - znak nezapsán - buffer plný
1 - znak úspěšně zapsán
Viz také:
tx_write()

tx_write_str()

Definice je uvedena na řádku 364 v souboru enc28j60_spi_tx.c.

Odkazuje se na spi_putc(), tx_ptr a TXND.

Používá se v dhcp_send_discover(), dhcp_send_request() a eth_send().

void tx_rewind (  ) 

Funkce vrátí ukazatel pro zápis v odesílacím bufferu na začátek (jako po inicializaci). Data se zachovají. Je tak možné provést dodatečné změny v paketu před odesláním.

Viz také:
tx_skip()

Definice je uvedena na řádku 233 v souboru enc28j60_spi_tx.c.

Odkazuje se na act_tx, tx1_protocol, tx2_protocol, tx3_protocol a tx_protocol().

void tx_save ( unsigned char  buffer  ) 

Uloží aktuální stav bufferu - interní funkce.

Definice je uvedena na řádku 291 v souboru enc28j60_spi_tx.c.

Odkazuje se na tx1_end_ptr, tx1_ptr, tx2_end_ptr, tx2_ptr, tx3_end_ptr, tx3_ptr, tx_end_ptr a tx_ptr.

Používá se v ip_send(), tcp_send() a tx_init().

void tx_seek ( unsigned char  header  ) 

Funkce slouží pro posunutí v bufferu na pozici pro zápis hlaviček protokolů - interní funkce.

Definice je uvedena na řádku 253 v souboru enc28j60_spi_tx.c.

Odkazuje se na select_bank(), tx_ptr, TXST a write_reg16().

Používá se v eth_send(), icmp_send(), ip_send(), tcp_out(), tcp_send() a udp_send().

char tx_send (  ) 

Zprostředkuje odeslání dat z odesílacího bufferu v ENC28J60 do sítě - interní funkce.

Definice je uvedena na řádku 445 v souboru enc28j60_spi_tx.c.

Odkazuje se na act_tx, bf_set(), read_reg8(), select_bank(), tx_unlock() a write_reg8().

Používá se v eth_send().

unsigned int tx_skip ( unsigned int  length  ) 

Přeskočí místo v odesílacím bufferu. Vhodné zejména v kombinaci s funkcí tx_rewind(), kdy chceme dodatečně přepsat některé části datagramu.

Parametry:
length - délka skoku v bajtech.
Návratová hodnota:
počet přeskočených bajtů

Definice je uvedena na řádku 423 v souboru enc28j60_spi_tx.c.

Odkazuje se na tx_left(), tx_ptr, TXND a write_reg16().

void tx_unlock ( unsigned char  buffer  )  [inline]

Odemkne odesílací buffer, ten se pak může opětovně použít pro odeslání dat - interní funkce.

Definice je uvedena na řádku 518 v souboru enc28j60_spi_tx.c.

Odkazuje se na tx1_lock, tx2_lock, tx3_lock a UNLOCKED.

Používá se v ip_send(), tcp_fsm(), tcp_fsm_reset() a tx_send().

unsigned int tx_write ( void *  ptr,
unsigned int  length 
)

Zapíše blok dat velikosti length z adresy odkazované ukazatelem ptr do bufferu pro odeslání.

Parametry:
ptr - ukazatel na data
length - délka dat v bajtech
Návratová hodnota:
počet zapsaných bajtů
Viz také:
tx_putc()

tx_write_str()

Definice je uvedena na řádku 378 v souboru enc28j60_spi_tx.c.

Odkazuje se na spi_write(), tx_left(), tx_ptr a TXND.

Používá se v arp_recv(), arp_send(), dhcp_send_discover(), dhcp_send_request(), eth_send(), icmp_recv(), icmp_send(), ip_send(), tcp_out() a udp_send().


Dokumentace proměnných

unsigned char act_tx

Definice je uvedena na řádku 56 v souboru enc28j60_spi_tx.c.

Používá se v tx_act(), tx_init(), tx_load(), tx_rewind() a tx_send().

unsigned int tx1_end_ptr

Definice je uvedena na řádku 75 v souboru enc28j60_spi_tx.c.

Používá se v tx_init(), tx_load() a tx_save().

char tx1_lock = UNLOCKED

Definice je uvedena na řádku 61 v souboru enc28j60_spi_tx.c.

Používá se v tx_init() a tx_unlock().

Definice je uvedena na řádku 66 v souboru enc28j60_spi_tx.c.

Používá se v tx_init() a tx_rewind().

unsigned int tx1_ptr

Definice je uvedena na řádku 71 v souboru enc28j60_spi_tx.c.

Používá se v tx_init(), tx_load() a tx_save().

unsigned int tx2_end_ptr

Definice je uvedena na řádku 76 v souboru enc28j60_spi_tx.c.

Používá se v tx_init(), tx_load() a tx_save().

char tx2_lock = UNLOCKED

Definice je uvedena na řádku 62 v souboru enc28j60_spi_tx.c.

Používá se v tx_init() a tx_unlock().

Definice je uvedena na řádku 67 v souboru enc28j60_spi_tx.c.

Používá se v tx_init() a tx_rewind().

unsigned int tx2_ptr

Definice je uvedena na řádku 72 v souboru enc28j60_spi_tx.c.

Používá se v tx_init(), tx_load() a tx_save().

unsigned int tx3_end_ptr

Definice je uvedena na řádku 77 v souboru enc28j60_spi_tx.c.

Používá se v tx_init(), tx_load() a tx_save().

char tx3_lock = UNLOCKED

Definice je uvedena na řádku 63 v souboru enc28j60_spi_tx.c.

Používá se v tx_init() a tx_unlock().

Definice je uvedena na řádku 68 v souboru enc28j60_spi_tx.c.

Používá se v tx_init() a tx_rewind().

unsigned int tx3_ptr

Definice je uvedena na řádku 73 v souboru enc28j60_spi_tx.c.

Používá se v tx_init(), tx_load() a tx_save().

unsigned int tx_end_ptr

Definice je uvedena na řádku 51 v souboru enc28j60_spi_tx.c.

Používá se v tx_checksum(), tx_close(), tx_data_len(), tx_load() a tx_save().

unsigned int tx_ptr

unsigned int TXND

Definice je uvedena na řádku 53 v souboru enc28j60_spi_tx.c.

Používá se v tx_fill(), tx_init(), tx_left(), tx_load(), tx_putc(), tx_skip() a tx_write().

unsigned int TXST

Definice je uvedena na řádku 52 v souboru enc28j60_spi_tx.c.

Používá se v tx_init(), tx_load(), tx_protocol() a tx_seek().