#include "types.h"
+/** Tamaño del frame */
+extern byte netdev_len;
+
/** Inicializa dispositivo de red
* @return true si se inicializó correctamente, false si no
*/
bool netdev_init();
-/** Comienza el envío de un nuevo frame
- * @param len Tamaño del frame a enviar
- */
+/** Comienza el envío de un nuevo frame */
void netdev_send_start();
-/** Escribe un byte al buffer de la placa de red para ser enviado
+/** Finaliza el envío del frame
* @precond netdev_send_start() debe haber sido ejecutada
+ * @precond se copiaron datos al dispositivo para enviar
+ * @param len Cantidad de bytes a transmitir
+ */
+void netdev_send_end(byte len);
+
+/** Comienza una escritura a los buffers del dispositivo de red
+ * @param len Cantidad de bytes a escribir
+ */
+void netdev_write_start(byte len);
+
+/** Comienza una escritura a los buffers del dispositivo de red a partir de un
+ * offset dado.
+ * @param offset Offset en donde comenzar a escribir
+ * @param len Cantidad de bytes a escribir
+ */
+void netdev_write_start_at(byte offset, byte len);
+
+/** Escribe un byte al buffer de la placa de red para ser enviado
+ * @precond netdev_write_start() debe haber sido ejecutada
* @param b Byte a enviar
*/
-void netdev_send_byte(byte b);
+void netdev_write_byte(byte b);
/** Escribe un word al buffer de la placa de red para ser enviado
- * @precond netdev_send_start() debe haber sido ejecutada
+ * @precond netdev_write_start() debe haber sido ejecutada
* @param w Word a enviar
*/
-void netdev_send_word(uint16 w);
+void netdev_write_word(uint16 w);
-/** Finaliza el envío del frame
- * @precond netdev_send_start() debe haber sido ejecutada
+/** Finaliza una transferencia al dispositivo de red
+ * @precond netdev_write_start() fue llamada y se ecribió la cantidad de bytes
+ * en ella especificada
*/
-void netdev_send_end();
+void netdev_write_end();
-/** Comienza la lectura de un nuevo frame
- * @return Cantidad de bytes del frame leído
+/** Comienza la recepción de un nuevo frame
+ * @return Cantidad de bytes a recibir
*/
byte netdev_recv_start();
+/** Finaliza la lectura del frame
+ * @precond netdev_recv_start() debe haber sido ejecutada
+ */
+void netdev_recv_end();
+
+/** Comienza a leer bytes del dispositivo de red
+ * @param len Cantidad de bytes a leer
+ */
+void netdev_read_start(byte len);
+
/** Lee un byte del buffer de la placa de red
* @precond netdev_recv_start() debe haber sido ejecutada
*/
-byte netdev_recv_byte();
+byte netdev_read_byte();
/** Lee un word del buffer de la placa de red
* @precond netdev_recv_start() debe haber sido ejecutada
*/
-uint16 netdev_recv_word();
+uint16 netdev_read_word();
/** Finaliza la lectura del frame
* @precond netdev_recv_start() debe haber sido ejecutada
*/
-void netdev_recv_end();
+void netdev_read_end();
#endif // _NETDEV_H_