X-Git-Url: https://git.llucax.com/z.facultad/75.74/practicos.git/blobdiff_plain/3de68addc94548e2191d83b7aa4ebec21957391e..659563a75d668130df84664e7e6b1220667cbc28:/practicas/pipi/src/dev.h diff --git a/practicas/pipi/src/dev.h b/practicas/pipi/src/dev.h index d0acea6..129f78f 100644 --- a/practicas/pipi/src/dev.h +++ b/practicas/pipi/src/dev.h @@ -1,32 +1,38 @@ #ifndef _DEV_H_ #define _DEV_H_ -#include "frame.h" -#include "media.h" #include +#define DEV_DEFAULT_KEY 0x1abcdef1 +#define DEV_MAX_MTU 1500 + /// Dispositivo de red (capa de enlace) struct Dev { + /// Tipo de la mac + typedef long mac_type; + /// Dirección MAC - Frame::mac_type mac; + mac_type mac; + + /// MTU + size_t mtu; - /// Medio físico - Media& media; + /// Identificador de la cola a usar + int que_id; /// Constructor - Dev(const Frame::mac_type& mac, Media& media): - mac(mac), media(media) - {} + Dev(mac_type mac, size_t mtu = DEV_MAX_MTU, key_t key = DEV_DEFAULT_KEY) + throw (std::runtime_error, std::logic_error); /// Envía un frame - void send(const Frame& frame) throw (std::runtime_error) - { media.transmit(frame); } + void transmit(const std::string& data, const mac_type& mac) + throw (std::runtime_error, std::logic_error); /// Recibe un frame - void recv(Frame& frame) throw (std::runtime_error) - { media.receive(frame); } + std::string receive() + throw (std::runtime_error); // Nada de andar copiando placas... private: