#ifndef _DEV_H_
#define _DEV_H_
-#include "frame.h"
-#include "media.h"
#include <stdexcept>
+#define DEV_DEFAULT_KEY 0x1abcdef1
+
/// 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 = 1500, key_t key = DEV_DEFAULT_KEY)
+ throw (std::runtime_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: