mirror of
https://github.com/cesanta/mongoose.git
synced 2026-10-25 12:04:47 +00:00
36 lines
729 B
C
36 lines
729 B
C
#include "rom_functions.h"
|
|
|
|
void SLIP_send(uint8_t *pkt, uint32_t size) {
|
|
send_packet(pkt, size);
|
|
}
|
|
|
|
uint32_t SLIP_recv(void *pkt, uint32_t max_len) {
|
|
uint8_t c;
|
|
uint32_t len = 0;
|
|
uint8_t *p = (uint8_t *) pkt;
|
|
do {
|
|
c = uart_rx_one_char_block();
|
|
} while (c != '\xc0');
|
|
while (len < max_len) {
|
|
c = uart_rx_one_char_block();
|
|
if (c == '\xc0') return len;
|
|
if (c == '\xdb') {
|
|
c = uart_rx_one_char_block();
|
|
if (c == '\xdc') {
|
|
c = '\xc0';
|
|
} else if (c == '\xdd') {
|
|
c = '\xdb';
|
|
} else {
|
|
len = 0;
|
|
break; /* Bad esc sequence. */
|
|
}
|
|
}
|
|
*p++ = c;
|
|
len++;
|
|
}
|
|
do {
|
|
c = uart_rx_one_char_block();
|
|
} while (c != '\xc0');
|
|
return len;
|
|
}
|