]> git.llucax.com Git - z.facultad/66.09/etherled.git/blob - src/netdev.h
Nueva manejo de buffers, un poco más modular. El proyecto quedó como un echo
[z.facultad/66.09/etherled.git] / src / netdev.h
1 // vim: set et sw=4 sts=4 :     
2
3 #ifndef _NETDEV_H_
4 #define _NETDEV_H_
5
6 #include "types.h"
7
8 /** Tamaño del frame */
9 extern byte netdev_len;
10
11 /** Inicializa dispositivo de red
12  * @return true si se inicializó correctamente, false si no
13  */
14 bool netdev_init();
15
16 /** Comienza el envío de un nuevo frame */
17 void netdev_send_start();
18
19 /** Finaliza el envío del frame
20  * @precond netdev_send_start() debe haber sido ejecutada
21  * @precond se copiaron datos al dispositivo para enviar
22  * @param len Cantidad de bytes a transmitir
23  */
24 void netdev_send_end(byte len);
25
26 /** Comienza una transferencia al dispositivo de red
27  * @param len Cantidad de bytes a escribir
28  */
29 void netdev_write_start(byte len);
30
31 /** Escribe un byte al buffer de la placa de red para ser enviado
32  * @precond netdev_write_start() debe haber sido ejecutada
33  * @param b Byte a enviar
34  */
35 void netdev_write_byte(byte b);
36
37 /** Escribe un word al buffer de la placa de red para ser enviado
38  * @precond netdev_write_start() debe haber sido ejecutada
39  * @param w Word a enviar
40  */
41 void netdev_write_word(uint16 w);
42
43 /** Finaliza una transferencia al dispositivo de red
44  * @precond netdev_write_start() fue llamada y se ecribió la cantidad de bytes
45  *          en ella especificada
46  */
47 void netdev_write_end();
48
49 /** Comienza la recepción de un nuevo frame
50  * @return Cantidad de bytes a recibir
51  */
52 byte netdev_recv_start();
53
54 /** Finaliza la lectura del frame
55  * @precond netdev_recv_start() debe haber sido ejecutada
56  */
57 void netdev_recv_end();
58
59 /** Comienza a leer bytes del dispositivo de red
60  * @param len Cantidad de bytes a leer
61  */
62 void netdev_read_start(byte len);
63
64 /** Lee un byte del buffer de la placa de red
65  * @precond netdev_recv_start() debe haber sido ejecutada
66  */
67 byte netdev_read_byte();
68
69 /** Lee un word del buffer de la placa de red
70  * @precond netdev_recv_start() debe haber sido ejecutada
71  */
72 uint16 netdev_read_word();
73
74 /** Finaliza la lectura del frame
75  * @precond netdev_recv_start() debe haber sido ejecutada
76  */
77 void netdev_read_end();
78
79 #endif // _NETDEV_H_