The SLIP protocol is a very simple way to transmit IP packets over a serial line.
It does not provide any framing or error control, and is therefore not very widely used today.
This SLIP implementation requires two functions for accessing the serial device: slipdev_char_poll() and slipdev_char_put(). These must be implemented specifically for the system on which the SLIP protocol is to be run.
#define SLIP_ESC_END 0334 |
#define SLIP_ESC_ESC 0335 |
uint8_t slipdev_char_poll |
( |
uint8_t * |
c | ) |
|
Poll the serial device for a character.
This function is used by the SLIP implementation to poll the serial device for a character. It must be implemented specifically for the system on which the SLIP implementation is to be run.
The function should return immediately regardless if a character is available or not. If a character is available it should be placed at the memory location pointed to by the pointer supplied by the argument c.
- Parameters
-
c | A pointer to a byte that is filled in by the function with the received character, if available. |
- Return values
-
0 | If no character is available. |
Non-zero | If a character is available. |
Referenced by slipdev_poll().
void slipdev_char_put |
( |
uint8_t |
c | ) |
|
Put a character on the serial device.
This function is used by the SLIP implementation to put a character on the serial device. It must be implemented specifically for the system on which the SLIP implementation is to be run.
- Parameters
-
c | The character to be put on the serial device. |
Referenced by slipdev_send().
void slipdev_init |
( |
void |
| ) |
|
Initialize the SLIP module.
This function does not initialize the underlying RS232 device, but only the SLIP part.
References lastc, and len.
uint16_t slipdev_poll |
( |
void |
| ) |
|
Poll the SLIP device for an available packet.
This function will poll the SLIP device to see if a packet is available. It uses a buffer in which all avaliable bytes from the RS232 interface are read into. When a full packet has been read into the buffer, the packet is copied into the uip_buf buffer and the length of the packet is returned.
- Returns
- The length of the packet placed in the uip_buf buffer, or zero if no packet is available.
References c, lastc, len, slip_buf, SLIP_END, SLIP_ESC, SLIP_ESC_END, SLIP_ESC_ESC, slipdev_char_poll(), tmplen, uip_buf, UIP_BUFSIZE, and UIP_LLH_LEN.
uint8_t slipdev_send |
( |
void |
| ) |
|
Send the packet in the uip_buf and uip_appdata buffers using the SLIP protocol.
The first 40 bytes of the packet (the IP and TCP headers) are read from the uip_buf buffer, and the following bytes (the application data) are read from the uip_appdata buffer.
- Returns
- This function will always return 0.
References c, i, ptr, SLIP_END, SLIP_ESC, SLIP_ESC_END, SLIP_ESC_ESC, slipdev_char_put(), uip_appdata, uip_buf, uip_len, UIP_LLH_LEN, and UIP_TCPIP_HLEN.