Definiciones | |
#define | ETH_TYPE_ARP_V 0x0806 |
#define | ETH_TYPE_ARP_H_V 0x08 |
#define | ETH_TYPE_ARP_L_V 0x06 |
#define | ETH_TYPE_IP_V 0x0800 |
#define | ETH_TYPE_IP_H_V 0x08 |
#define | ETH_TYPE_IP_L_V 0x00 |
#define | ETH_HEADER_LEN 14 |
#define | ETH_DST_MAC_P 0 |
#define | ETH_SRC_MAC_P 6 |
#define | ETH_TYPE_H_P 12 |
#define | ETH_TYPE_L_P 13 |
Funciones | |
WORD | software_checksum (BYTE *rxtx_buffer, WORD len, DWORD sum) |
Implementa el calculo de checksum En realidad no es estrictamente necesario que se encuentre aqui y no en un archivo auxiliar. | |
void | eth_generate_header (BYTE *rxtx_buffer, WORD_BYTES type, BYTE *dest_mac) |
Genera el encabezado ethernet Rellena MAC de destino y origen y campo Length/Type. |
No encapsula al ENC ya que para enviar/recibir cualquier paquete sobre ethernet, se tiene que hacer referencia directa a ENC28J60_send_packet
TODO: agregar funcion eth_send_packet
#define ETH_DST_MAC_P 0 |
#define ETH_HEADER_LEN 14 |
#define ETH_SRC_MAC_P 6 |
#define ETH_TYPE_ARP_H_V 0x08 |
#define ETH_TYPE_ARP_L_V 0x06 |
#define ETH_TYPE_ARP_V 0x0806 |
#define ETH_TYPE_H_P 12 |
#define ETH_TYPE_IP_H_V 0x08 |
#define ETH_TYPE_IP_L_V 0x00 |
#define ETH_TYPE_IP_V 0x0800 |
#define ETH_TYPE_L_P 13 |
void eth_generate_header | ( | BYTE * | rxtx_buffer, | |
WORD_BYTES | type, | |||
BYTE * | dest_mac | |||
) |
Genera el encabezado ethernet
Rellena MAC de destino y origen y campo Length/Type.
rxtx_buffer | el buffer donde esta el paquete al que se le colocara el header. | |
type | tipo de paquete Ethernet | |
dest_mac | MAC de destino |
Implementa el calculo de checksum
En realidad no es estrictamente necesario que se encuentre aqui y no en un archivo auxiliar.
Se calcula como el complemento a 1 de la suma de los complementos a 1 de todas las palabras de 16 bits de la cabecera.
rxtx_buffer | el buffer donde esta el paquete a realizar checksum. | |
len | largo de campos a tener en cuenta | |
sum | posicion donde comienzan datos a tener en cuenta |