]> git.llucax.com Git - z.facultad/75.74/practicos.git/blobdiff - practicas/pipi/src/dev.h
Se refactoriza y simplifica la capa física. Se deja sólo el dispositivo de red
[z.facultad/75.74/practicos.git] / practicas / pipi / src / dev.h
index d0acea653a6a170a099084c740669ea7880c3821..f8bd771719dbfeb16aac3e8f0abac0ef01b60551 100644 (file)
@@ -1,32 +1,37 @@
 #ifndef _DEV_H_
 #define _DEV_H_
 
 #ifndef _DEV_H_
 #define _DEV_H_
 
-#include "frame.h"
-#include "media.h"
 #include <stdexcept>
 
 #include <stdexcept>
 
+#define DEV_DEFAULT_KEY 0x1abcdef1
+
 /// Dispositivo de red (capa de enlace)
 struct Dev
 {
 
 /// Dispositivo de red (capa de enlace)
 struct Dev
 {
 
+    /// Tipo de la mac
+    typedef long mac_type;
+
     /// Dirección MAC
     /// 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
 
     /// 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
 
     /// 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
 
     /// 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:
 
     // Nada de andar copiando placas...
     private: