72 #define SLIP_ESC_END 0xDC 73 #define SLIP_ESC_ESC 0xDD 77 #define SLIP_MAX_SIZE 1500 84 #ifndef SLIP_SIO_SPEED 85 #define SLIP_SIO_SPEED(sio_fd) 0 88 enum slipif_recv_state {
100 struct pbuf *rxpackets;
117 struct slipif_priv *priv;
135 for (q = p; q !=
NULL; q = q->
next) {
136 for (i = 0; i < q->
len; i++) {
170 slipif_rxbyte(
struct netif *netif,
u8_t c)
172 struct slipif_priv *priv;
180 switch (priv->state) {
181 case SLIP_RECV_NORMAL:
184 if (priv->recved > 0) {
192 priv->p = priv->q =
NULL;
193 priv->i = priv->recved = 0;
198 priv->state = SLIP_RECV_ESCAPE;
202 case SLIP_RECV_ESCAPE:
213 priv->state = SLIP_RECV_NORMAL;
218 if (priv->p ==
NULL) {
224 if (priv->p ==
NULL) {
231 if (priv->q !=
NULL) {
241 if ((priv->p !=
NULL) && (priv->recved <= SLIP_MAX_SIZE)) {
242 ((
u8_t *)priv->p->payload)[priv->i] = c;
245 if (priv->i >= priv->p->len) {
248 if (priv->p->next !=
NULL && priv->p->next->len > 0) {
250 priv->p = priv->p->next;
267 slipif_rxbyte_input(
struct netif *netif,
u8_t c)
270 p = slipif_rxbyte(netif, c);
278 #if SLIP_USE_RX_THREAD 287 slipif_loop_thread(
void *nf)
290 struct netif *netif = (
struct netif *)nf;
291 struct slipif_priv *priv = (
struct slipif_priv *)netif->
state;
294 if (
sio_read(priv->sd, &c, 1) > 0) {
295 slipif_rxbyte_input(netif, c);
320 struct slipif_priv *priv;
326 priv = (
struct slipif_priv *)
mem_malloc(
sizeof(
struct slipif_priv));
331 netif->
name[0] =
's';
332 netif->
name[1] =
'l';
333 netif->
output = slipif_output;
334 netif->
mtu = SLIP_MAX_SIZE;
341 sio_num = netif->
num;
354 priv->state = SLIP_RECV_NORMAL;
358 priv->rxpackets =
NULL;
366 #if SLIP_USE_RX_THREAD 383 struct slipif_priv *priv;
388 priv = (
struct slipif_priv *)netif->
state;
391 slipif_rxbyte_input(netif, c);
404 struct slipif_priv *priv;
410 priv = (
struct slipif_priv *)netif->
state;
413 while (priv->rxpackets !=
NULL) {
414 struct pbuf *p = priv->rxpackets;
421 priv->rxpackets = q->
next;
424 priv->rxpackets =
NULL;
440 slipif_rxbyte_enqueue(
struct netif *netif,
u8_t data)
443 struct slipif_priv *priv = (
struct slipif_priv *)netif->
state;
446 p = slipif_rxbyte(netif, data);
449 if (priv->rxpackets !=
NULL) {
483 slipif_rxbyte_enqueue(netif, data);
504 for (i = 0; i <
len; i++, rxdata++) {
505 slipif_rxbyte_enqueue(netif, *rxdata);
#define SLIPIF_THREAD_STACKSIZE
sys_thread_t sys_thread_new(const char *name, lwip_thread_fn thread, void *arg, int stacksize, int prio)
err_t slipif_init(struct netif *netif)
u32_t sio_read(sio_fd_t fd, u8_t *data, u32_t len) ICACHE_FLASH_ATTR
void slipif_received_byte(struct netif *netif, u8_t data)
void slipif_received_bytes(struct netif *netif, u8_t *data, u8_t len)
void slipif_process_rxqueue(struct netif *netif)
void * mem_malloc(mem_size_t size) ICACHE_FLASH_ATTR
void sio_send(u8_t c, sio_fd_t fd) ICACHE_FLASH_ATTR
#define SYS_ARCH_DECL_PROTECT(x)
void pbuf_cat(struct pbuf *head, struct pbuf *tail) ICACHE_FLASH_ATTR
#define LWIP_DEBUGF(debug, message)
typedefPACK_STRUCT_END struct ip_addr ip_addr_t
#define LINK_STATS_INC(x)
#define NETIF_FLAG_POINTTOPOINT
#define SLIPIF_THREAD_PRIO
void slipif_poll(struct netif *netif)
#define NETIF_INIT_SNMP(netif, type, speed)
u8_t pbuf_free(struct pbuf *p) ICACHE_FLASH_ATTR
#define SYS_ARCH_PROTECT(x)
sio_fd_t sio_open(u8_t devnum) ICACHE_FLASH_ATTR
u32_t sio_tryread(sio_fd_t fd, u8_t *data, u32_t len) ICACHE_FLASH_ATTR
#define LWIP_ASSERT(message, assertion)
#define SLIPIF_THREAD_NAME
void pbuf_realloc(struct pbuf *p, u16_t size) ICACHE_FLASH_ATTR
#define SYS_ARCH_UNPROTECT(x)
#define LWIP_UNUSED_ARG(x)
struct pbuf * pbuf_alloc(pbuf_layer l, u16_t length, pbuf_type type) ICACHE_FLASH_ATTR
void mem_free(void *mem) ICACHE_FLASH_ATTR